13 #ifndef _HMATERIALLIBRARY_H
14 #define _HMATERIALLIBRARY_H
46 bool RegisterMaterials (
const char *directory);
50 bool RegisterMaterials (
const wchar_t *directory);
61 const char *GetContainerSegment ()
const;
74 const char *GetMaterialList(
char *buffer = 0,
int buffer_length = -1);
78 bool IsValidMaterial (
const char *name)
const;
83 bool ApplyMaterial (
const char *name);
90 bool ReloadMaterial (
const char *name);
100 bool CloneMaterial (
const char *old_material_name,
char *new_material_name);
105 bool RenameMaterial (
const char *old_material_name,
const char *new_material_name);
110 bool GetTweakablesCount (
const char *material_name,
int *count);
117 bool GetTweakableByIndex (
const char *material_name,
int index,
char *tweakable_name,
char *type);
124 bool GetTweakableByName (
const char *material_name,
char const *tweakable_name,
int *index,
char *type);
128 int CountFromType (
const char *type);
134 bool GetTweakableDefaults (
const char *material_name,
int index,
float *vals);
140 bool Tweak (
const char *material_name,
int index,
const float *vals);
149 bool Tweak (
const char *material_name,
int index,
float val0,
float val1=0,
float val2=0,
float val3=0 );
155 const char *GetEnvironmentList(
char *buffer = 0,
int buffer_length = -1);
159 bool IsValidEnvironment (
const char *name)
const;
164 bool SetEnvironment (
const char *name);
170 bool EnsureMaterialInitialized (
const char *name);
175 bool EnsureEnvironmentInitialized (
const char *name);
177 bool FindReferencedMaterials (HC_KEY segment_tree,
char *list,
int list_size);
178 bool InitWrite (
const char *list,
int *size);
179 bool InitRead (
int version);
180 TK_Status ParseBuffer (
char const *buffer,
int size);
181 const char *GetCurrentEnvironment(
char *buffer = 0,
int buffer_length = -1);
187 bool Compile (
const char *name);
192 Read_Flags_Default = 0x0000,
193 Prefer_Embedded = 0x0001,
194 Prefer_Highest_Resolution = 0x0002,
196 void SetReadFlags (Read_Flags flags) { m_ReadFlags = flags; };
202 Write_Flags_Default = 0x0000,
207 void SetWriteFlags (Write_Flags flags) { m_WriteFlags = flags; };
211 const wchar_t *m_MaterialDirectory;
229 bool Initialize (
const char *name,
bool environment =
false);
235 virtual void Error (
const char *message,
int severity = 1);
241 bool GetTweakablesString (
const char *material_name,
char *
string);
249 bool GetShaderSource (
const char *material_name,
char *shader_source,
char *options = 0);
255 const char *FindValidMaterial (
const char *name)
const;
260 bool Compile (
const char *name,
void *bufferlist);
263 struct vlist_s *m_SerializationBufferList;
264 BStreamFileToolkit *m_tk;
273 void RecordHSFMaterial (
const wchar_t *path,
const wchar_t *filename);
274 void FindHSFMaterials (
const wchar_t *path);
275 bool HasIndexFile (
const wchar_t *path,
const wchar_t *subpath,
const wchar_t *subdir,
const wchar_t *index_file);
276 void FindSubdirectories (
const wchar_t *path,
const wchar_t *subpath);
277 bool GenerateSerializationBufferList (
const char *materials);
278 const char *HashToString (
struct vhash_s *hash,
char *buffer = 0,
int buffer_size = -1)
const;
279 ErrorCode slurp_dat_file(
280 const wchar_t *index_file,
281 const wchar_t *subdir,
295 H_ASSERT (hmat != NULL);
296 H_ASSERT (key != -1);
302 H_ASSERT (hmat != NULL);
307 TK_Status Interpret(BStreamFileToolkit &tk, ID_Key key,
int variant);
308 TK_Status Execute(BStreamFileToolkit & tk);
323 TK_Status Interpret(BStreamFileToolkit &tk,
HMaterialLibrary *hmat,
const char *name);
324 TK_Status Execute(BStreamFileToolkit & tk);
325 TK_Status Read (BStreamFileToolkit & tk);
326 TK_Status Write (BStreamFileToolkit & tk);
332 OMF_Environment = 0x0001,
333 OMF_Instancee = 0x0002,
335 OMF_Embedded = 0x0008,
336 OMF_Height_Field= 0x0010,
349 void *m_MaterialDescriptor;
353 int m_InstanceeLength;
355 int *m_TweakNameLengths;
359 float m_HeightFieldScale;
360 unsigned int m_subop;
365 #define ONEMATBUFSIZE 512
368 int m_EmbeddedLength;
369 unsigned char m_EmbeddingBuffer[ONEMATBUFSIZE];
370 int m_EmbeddingBufferUsed;
HC_KEY m_CurrentEnvironmentKey
the currently active environment
Definition: HMaterialLibrary.h:218
Definition: HMaterialLibrary.h:30
const char * m_EnvironmentList
the environment list
Definition: HMaterialLibrary.h:215
Read_Flags
see documentation on HMaterialLibrary::Read_Flags
Definition: HMaterialLibrary.h:191
const char * m_MaterialList
the material list
Definition: HMaterialLibrary.h:214
Write_Flags m_WriteFlags
see documentation on HMaterialLibrary::Write_Flags
Definition: HMaterialLibrary.h:220
bool IsValid() const
Definition: HMaterialLibrary.h:52
Tweak_Type
Definition: HMaterialLibrary.h:340
bool m_Valid
self-explanatory
Definition: HMaterialLibrary.h:221
struct vhash_s * m_MaterialHash
maps material names to the compiled material hsf file from which it came
Definition: HMaterialLibrary.h:212
struct vhash_s * m_EnvironmentHash
maps environment names to the compiled material hsf file from which it came
Definition: HMaterialLibrary.h:213
Read_Flags GetReadFlags()
see documentation on HMaterialLibrary::Read_Flags
Definition: HMaterialLibrary.h:197
HC_KEY m_MaterialSegmentKey
the segment containing the materials and environments
Definition: HMaterialLibrary.h:217
Definition: HMaterialLibrary.h:316
const char * m_CurrentEnvironment
the name of the environment most recently set with SetEnvironment
Definition: HMaterialLibrary.h:216
Write_Flags
Definition: HMaterialLibrary.h:201
Subop_Flags
Definition: HMaterialLibrary.h:331
Read_Flags m_ReadFlags
see documentation on HMaterialLibrary::Read_Flags
Definition: HMaterialLibrary.h:219
Definition: HMaterialLibrary.h:291