1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
/**
* @file llmaterialtable.h
* @brief Table of material information for the viewer UI
*
* Copyright (c) 2001-$CurrentYear$, Linden Research, Inc.
* $License$
*/
#ifndef LL_LLMATERIALTABLE_H
#define LL_LLMATERIALTABLE_H
#include "lluuid.h"
#include "linked_lists.h"
#include "llstring.h"
const U32 LLMATERIAL_INFO_NAME_LENGTH = 256;
class LLMaterialInfo
{
public:
U8 mMCode;
char mName[LLMATERIAL_INFO_NAME_LENGTH]; /* Flawfinder: ignore */
LLUUID mDefaultTextureID;
LLUUID mShatterSoundID;
F32 mDensity; // kg/m^3
F32 mFriction;
F32 mRestitution;
// damage and energy constants
F32 mHPModifier; // modifier on mass based HP total
F32 mDamageModifier; // modifier on KE based damage
F32 mEPModifier; // modifier on mass based EP total
LLMaterialInfo(U8 mcode, char* name, const LLUUID &uuid)
{
init(mcode,name,uuid);
};
void init(U8 mcode, char* name, const LLUUID &uuid)
{
mName[0] = 0;
mDensity = 1000.f; // default to 1000.0 (water)
mHPModifier = 1.f;
mDamageModifier = 1.f;
mEPModifier = 1.f;
mMCode = mcode;
if (name)
{
LLString::copy(mName,name,LLMATERIAL_INFO_NAME_LENGTH);
}
mDefaultTextureID = uuid;
};
~LLMaterialInfo()
{
};
};
class LLMaterialTable
{
public:
LLLinkedList<LLMaterialInfo> mMaterialInfoList;
LLUUID *mCollisionSoundMatrix;
LLUUID *mSlidingSoundMatrix;
LLUUID *mRollingSoundMatrix;
static const F32 DEFAULT_FRICTION;
static const F32 DEFAULT_RESTITUTION;
public:
LLMaterialTable();
LLMaterialTable(U8); // cheat with an overloaded constructor to build our basic table
~LLMaterialTable();
void initBasicTable();
BOOL add(U8 mcode, char* name, const LLUUID &uuid);
BOOL addCollisionSound(U8 mcode, U8 mcode2, const LLUUID &uuid);
BOOL addSlidingSound(U8 mcode, U8 mcode2, const LLUUID &uuid);
BOOL addRollingSound(U8 mcode, U8 mcode2, const LLUUID &uuid);
BOOL addShatterSound(U8 mcode, const LLUUID &uuid);
BOOL addDensity(U8 mcode, const F32 &density);
BOOL addFriction(U8 mcode, const F32 &friction);
BOOL addRestitution(U8 mcode, const F32 &restitution);
BOOL addDamageAndEnergy(U8 mcode, const F32 &hp_mod, const F32 &damage_mod, const F32 &ep_mod);
LLUUID getDefaultTextureID(char* name); // LLUUID::null if not found
LLUUID getDefaultTextureID(U8 mcode); // LLUUID::null if not found
U8 getMCode(const char* name); // 0 if not found
char* getName(U8 mcode);
F32 getDensity(U8 mcode); // kg/m^3, 0 if not found
F32 getFriction(U8 mcode); // havok values
F32 getRestitution(U8 mcode); // havok values
F32 getHPMod(U8 mcode);
F32 getDamageMod(U8 mcode);
F32 getEPMod(U8 mcode);
LLUUID getCollisionSoundUUID(U8 mcode, U8 mcode2);
LLUUID getSlidingSoundUUID(U8 mcode, U8 mcode2);
LLUUID getRollingSoundUUID(U8 mcode, U8 mcode2);
LLUUID getShatterSoundUUID(U8 mcode); // LLUUID::null if not found
LLUUID getGroundCollisionSoundUUID(U8 mcode);
LLUUID getGroundSlidingSoundUUID(U8 mcode);
LLUUID getGroundRollingSoundUUID(U8 mcode);
LLUUID getCollisionParticleUUID(U8 mcode, U8 mcode2);
LLUUID getGroundCollisionParticleUUID(U8 mcode);
static LLMaterialTable basic;
};
#endif
|