17 #ifndef _HMATERIALLIBRARY_H
18 #define _HMATERIALLIBRARY_H
50 bool RegisterMaterials (
const char *directory);
54 bool RegisterMaterials (
const wchar_t *directory);
63 const char *GetContainerSegment ()
const;
76 const char *GetMaterialList(
char *buffer = 0,
int buffer_length = -1);
80 bool IsValidMaterial (
const char *name)
const;
85 bool ApplyMaterial (
const char *name);
92 bool ReloadMaterial (
const char *name);
102 bool CloneMaterial (
const char *old_material_name,
char *new_material_name);
107 bool RenameMaterial (
const char *old_material_name,
const char *new_material_name);
112 bool GetTweakablesCount (
const char *material_name,
int *count);
119 bool GetTweakableByIndex (
const char *material_name,
int index,
char *tweakable_name,
char *type);
126 bool GetTweakableByName (
const char *material_name,
char const *tweakable_name,
int *index,
char *type);
130 int CountFromType (
const char *type);
136 bool GetTweakableDefaults (
const char *material_name,
int index,
float *vals);
142 bool Tweak (
const char *material_name,
int index,
const float *vals);
151 bool Tweak (
const char *material_name,
int index,
float val0,
float val1=0,
float val2=0,
float val3=0 );
157 const char *GetEnvironmentList(
char *buffer = 0,
int buffer_length = -1);
161 bool IsValidEnvironment (
const char *name)
const;
166 bool SetEnvironment (
const char *name);
172 bool EnsureMaterialInitialized (
const char *name);
177 bool EnsureEnvironmentInitialized (
const char *name);
179 bool FindReferencedMaterials (
HC_KEY segment_tree,
char *list,
int list_size);
180 bool InitWrite (
const char *list,
int *size);
181 bool InitRead (
int version);
182 TK_Status ParseBuffer (
char const *buffer,
int size);
183 const char *GetCurrentEnvironment(
char *buffer = 0,
int buffer_length = -1);
189 bool Compile (
const char *name);
194 Read_Flags_Default = 0x0000,
195 Prefer_Embedded = 0x0001,
196 Prefer_Highest_Resolution = 0x0002,
198 void SetReadFlags (Read_Flags flags) { m_ReadFlags = flags; };
204 Write_Flags_Default = 0x0000,
209 void SetWriteFlags (Write_Flags flags) { m_WriteFlags = flags; };
213 const wchar_t *m_MaterialDirectory;
230 bool Initialize (
const char *name,
bool environment =
false);
236 virtual void Error (
const char *message,
int severity = 1);
242 bool GetTweakablesString (
const char *material_name,
char *
string);
250 bool GetShaderSource (
const char *material_name,
char *shader_source,
char *options = 0);
256 const char *FindValidMaterial (
const char *name)
const;
261 bool Compile (
const char *name,
void alter *bufferlist);
264 struct vlist_s *m_SerializationBufferList;
265 BStreamFileToolkit *m_tk;
274 void RecordHSFMaterial (
const wchar_t *path,
const wchar_t *filename);
275 void FindHSFMaterials (
const wchar_t *path);
276 bool HasIndexFile (
const wchar_t *path,
const wchar_t *subpath,
const wchar_t *subdir,
const wchar_t *index_file);
277 void FindSubdirectories (
const wchar_t *path,
const wchar_t *subpath);
278 bool GenerateSerializationBufferList (
const char *materials);
279 const char *HashToString (
struct vhash_s *hash,
char *buffer = 0,
int buffer_size = -1)
const;
280 ErrorCode slurp_dat_file(
281 const wchar_t *index_file,
282 const wchar_t *subdir,
296 H_ASSERT (hmat != NULL);
297 H_ASSERT (key != -1);
303 H_ASSERT (hmat != NULL);
308 TK_Status Interpret(BStreamFileToolkit &tk, ID_Key key,
int variant);
309 TK_Status Execute(BStreamFileToolkit & tk);
324 TK_Status Interpret(BStreamFileToolkit &tk,
HMaterialLibrary *hmat,
const char *name);
325 TK_Status Execute(BStreamFileToolkit & tk);
326 TK_Status Read (BStreamFileToolkit & tk) alter;
327 TK_Status Write (BStreamFileToolkit & tk) alter;
333 OMF_Environment = 0x0001,
334 OMF_Instancee = 0x0002,
336 OMF_Embedded = 0x0008,
337 OMF_Height_Field= 0x0010,
350 void *m_MaterialDescriptor;
354 int m_InstanceeLength;
356 int *m_TweakNameLengths;
360 float m_HeightFieldScale;
361 unsigned int m_subop;
366 #define ONEMATBUFSIZE 512
369 int m_EmbeddedLength;
370 unsigned char m_EmbeddingBuffer[ONEMATBUFSIZE];
371 int m_EmbeddingBufferUsed;
HC_KEY m_CurrentEnvironmentKey
the currently active environment
Definition: HMaterialLibrary.h:220
Definition: HMaterialLibrary.h:34
const char * m_EnvironmentList
the environment list
Definition: HMaterialLibrary.h:217
Read_Flags
see documentation on HMaterialLibrary::Read_Flags
Definition: HMaterialLibrary.h:193
const char * m_MaterialList
the material list
Definition: HMaterialLibrary.h:216
Write_Flags m_WriteFlags
see documentation on HMaterialLibrary::Write_Flags
Definition: HMaterialLibrary.h:222
Tweak_Type
Definition: HMaterialLibrary.h:341
struct vhash_s * m_MaterialHash
maps material names to the compiled material hsf file from which it came
Definition: HMaterialLibrary.h:214
struct vhash_s * m_EnvironmentHash
maps environment names to the compiled material hsf file from which it came
Definition: HMaterialLibrary.h:215
Read_Flags GetReadFlags()
see documentation on HMaterialLibrary::Read_Flags
Definition: HMaterialLibrary.h:199
HC_KEY m_MaterialSegmentKey
the segment containing the materials and environments
Definition: HMaterialLibrary.h:219
Definition: HMaterialLibrary.h:317
const char * m_CurrentEnvironment
the name of the environment most recently set with SetEnvironment
Definition: HMaterialLibrary.h:218
Write_Flags
Definition: HMaterialLibrary.h:203
Subop_Flags
Definition: HMaterialLibrary.h:332
Read_Flags m_ReadFlags
see documentation on HMaterialLibrary::Read_Flags
Definition: HMaterialLibrary.h:221
Definition: HMaterialLibrary.h:292