28#ifndef __MaterialSerializer_H__
29#define __MaterialSerializer_H__
255 const unsigned short level = 4,
const bool useMainBuffer =
true);
257 const unsigned short level = 4,
const bool useMainBuffer =
true);
259 const unsigned short level = 4,
const bool useMainBuffer =
true);
264 bool isFloat,
bool isDouble,
size_t physicalIndex,
size_t physicalSize,
356 const String& materialName =
"");
389 for (
unsigned short i = 0;
i < level; ++
i)
399 for (
unsigned short i = 0;
i < level; ++
i)
410 for (
unsigned short i = 0;
i < level; ++
i)
420 buffer += (
" " + val);
425 if (val.find_first_of(
" \t") != String::npos)
426 return (
"\"" + val +
"\"");
435 for (
unsigned short i = 0;
i < level; ++
i)
Superclass for all objects that wish to use custom memory allocators when their new / delete operator...
Class representing colour.
Structure recording the use of an automatic parameter.
Collects together the program parameters used for a GpuProgram.
Class that allows listening in on the various stages of material serialization process.
virtual void materialEventRaised(MaterialSerializer *ser, SerializeEvent event, bool &skip, const Material *mat)
Called when material section event raised.
void gpuProgramRefEventRaised(MaterialSerializer *ser, SerializeEvent event, bool &skip, const String &attrib, const GpuProgramPtr &program, const GpuProgramParametersSharedPtr ¶ms, GpuProgramParameters *defaultParams)
Called when GPU program reference section event raised.
virtual void passEventRaised(MaterialSerializer *ser, SerializeEvent event, bool &skip, const Pass *pass)
Called when pass section event raised.
virtual void textureUnitStateEventRaised(MaterialSerializer *ser, SerializeEvent event, bool &skip, const TextureUnitState *textureUnit)
Called when texture unit state section event raised.
virtual void techniqueEventRaised(MaterialSerializer *ser, SerializeEvent event, bool &skip, const Technique *tech)
Called when technique section event raised.
Class for serializing Materials to / from a .material script.
ListenerList::iterator ListenerListIterator
void writeScrollEffect(const TextureUnitState::TextureEffect &effect, const TextureUnitState *pTex)
void writeShadowCasterVertexProgramRef(const Pass *pPass)
ListenerList::const_iterator ListenerListConstIterator
void parseScript(DataStreamPtr &stream, const String &groupName)
Parses a Material script file passed as a stream.
void removeListener(Listener *listener)
Remove a listener from this Serializer.
map< String, ATTRIBUTE_PARSER >::type AttribParserList
Keyword-mapped attribute parsers.
void writeSceneBlendFactor(const SceneBlendFactor sbf_src, const SceneBlendFactor sbf_dest)
void writeLayerBlendSource(const LayerBlendSource lbs)
const String & getQueuedAsString() const
Returns a string representing the parsed material(s)
MaterialSerializer()
default constructor
void fireMaterialEvent(SerializeEvent event, bool &skip, const Material *mat)
Internal methods that invokes registered listeners callback.
void writeEnvironmentMapEffect(const TextureUnitState::TextureEffect &effect, const TextureUnitState *pTex)
void fireTechniqueEvent(SerializeEvent event, bool &skip, const Technique *tech)
Internal methods that invokes registered listeners callback.
void writeSceneBlendFactor(const SceneBlendFactor c_src, const SceneBlendFactor c_dest, const SceneBlendFactor a_src, const SceneBlendFactor a_dest)
vector< Listener * >::type ListenerList
Listeners list of this Serializer.
void writeShadowCasterFragmentProgramRef(const Pass *pPass)
void writeVertexProgramRef(const Pass *pPass)
void writeGpuPrograms(void)
String convertFiltering(FilterOptions fo)
void finishProgramDefinition(void)
Internal method for saving a program definition which has been built up.
void writePass(const Pass *pPass)
void writeTextureUnit(const TextureUnitState *pTex)
void writeAttribute(unsigned short level, const String &att, const bool useMainBuffer=true)
void writeNamedGpuProgramParameters(const GpuProgramParametersSharedPtr ¶ms, GpuProgramParameters *defaultParams, const unsigned short level=4, const bool useMainBuffer=true)
void writeTechnique(const Technique *pTech)
void writeColourValue(const ColourValue &colour, bool writeAlpha=false)
AttribParserList mMaterialAttribParsers
Parsers for the material section of a script.
bool invokeParser(String &line, AttribParserList &parsers)
internal method for finding & invoking an attribute parser.
void writeRotationEffect(const TextureUnitState::TextureEffect &effect, const TextureUnitState *pTex)
AttribParserList mPassAttribParsers
Parsers for the pass section of a script.
AttribParserList mProgramDefaultParamAttribParsers
Parsers for the program definition section of a script.
void queueForExport(const MaterialPtr &pMat, bool clearQueued=false, bool exportDefaults=false, const String &materialName="")
Queue an in-memory Material to the internal buffer for export.
AttribParserList mProgramAttribParsers
Parsers for the program definition section of a script.
void writeLayerBlendOperationEx(const LayerBlendOperationEx op)
multimap< TextureUnitState::TextureEffectType, TextureUnitState::TextureEffect >::type EffectMap
AttribParserList mRootAttribParsers
Parsers for the root of the material script.
set< String >::type GpuProgramDefinitionContainer
AttribParserList mTextureUnitAttribParsers
Parsers for the texture unit section of a script.
void beginSection(unsigned short level, const bool useMainBuffer=true)
void exportMaterial(const MaterialPtr &pMat, const String &filename, bool exportDefaults=false, const bool includeProgDef=false, const String &programFilename="", const String &materialName="")
Exports a single in-memory Material to the named material script file.
void writeGpuProgramRef(const String &attrib, const GpuProgramPtr &program, const GpuProgramParametersSharedPtr ¶ms)
void firePassEvent(SerializeEvent event, bool &skip, const Pass *pass)
Internal methods that invokes registered listeners callback.
GpuProgramDefinitionContainer::iterator GpuProgramDefIterator
void writeMaterial(const MaterialPtr &pMat, const String &materialName="")
String quoteWord(const String &val)
AttribParserList mTechniqueAttribParsers
Parsers for the technique section of a script.
void exportQueued(const String &filename, const bool includeProgDef=false, const String &programFilename="")
Exports queued material(s) to a named material script file.
void writeShadowReceiverVertexProgramRef(const Pass *pPass)
void fireGpuProgramRefEvent(SerializeEvent event, bool &skip, const String &attrib, const GpuProgramPtr &program, const GpuProgramParametersSharedPtr ¶ms, GpuProgramParameters *defaultParams)
Internal methods that invokes registered listeners callback.
void writeFragmentProgramRef(const Pass *pPass)
void writeComment(unsigned short level, const String &comment, const bool useMainBuffer=true)
void writeTransformEffect(const TextureUnitState::TextureEffect &effect, const TextureUnitState *pTex)
void writeCompareFunction(const CompareFunction cf)
void clearQueue()
Clears the internal buffer.
MaterialScriptContext mScriptContext
void fireTextureUnitStateEvent(SerializeEvent event, bool &skip, const TextureUnitState *textureUnit)
Internal methods that invokes registered listeners callback.
AttribParserList mProgramRefAttribParsers
Parsers for the program reference section of a script.
void writeGPUProgramParameters(const GpuProgramParametersSharedPtr ¶ms, GpuProgramParameters *defaultParams, const unsigned short level=4, const bool useMainBuffer=true)
void writeValue(const String &val, const bool useMainBuffer=true)
virtual ~MaterialSerializer()
default destructor
void writeSceneBlendFactor(const SceneBlendFactor sbf)
void addListener(Listener *listener)
Register a listener to this Serializer.
void endSection(unsigned short level, const bool useMainBuffer=true)
bool parseScriptLine(String &line)
internal method for parsing a material
void writeLowLevelGpuProgramParameters(const GpuProgramParametersSharedPtr ¶ms, GpuProgramParameters *defaultParams, const unsigned short level=4, const bool useMainBuffer=true)
void writeGpuProgramParameter(const String &commandName, const String &identifier, const GpuProgramParameters::AutoConstantEntry *autoEntry, const GpuProgramParameters::AutoConstantEntry *defaultAutoEntry, bool isFloat, bool isDouble, size_t physicalIndex, size_t physicalSize, const GpuProgramParametersSharedPtr ¶ms, GpuProgramParameters *defaultParams, const unsigned short level, const bool useMainBuffer)
GpuProgramDefinitionContainer mGpuProgramDefinitionContainer
void writeShadowReceiverFragmentProgramRef(const Pass *pPass)
Class encapsulates rendering properties of an object.
Class defining a single pass of a Technique (of a Material), i.e.
Reference-counted shared pointer, used for objects where implicit destruction is required.
Class representing an approach to rendering this particular Material.
Class representing the state of a single texture unit during a Pass of a Technique,...
CompareFunction
Comparison functions used for the depth/stencil buffer operations and others.
FilterOptions
Filtering options for textures / mipmaps.
bool(* ATTRIBUTE_PARSER)(String ¶ms, MaterialScriptContext &context)
Function def for material attribute parser; return value determines if the next line should be {.
LayerBlendOperationEx
Expert list of valid texture blending operations, for use with TextureUnitState::setColourOperationEx...
SceneBlendFactor
Blending factors for manually blending objects with the scene.
MaterialScriptSection
Enum to identify material sections.
LayerBlendSource
List of valid sources of values for blending operations used in TextureUnitState::setColourOperation ...
GpuProgramType
Enumerates the types of programs which can run on the GPU.
Struct for holding the script context while parsing.
int techLev
This is used while defining a program.
bool isFragmentProgramShadowReceiver
When referencing, are we in context of shadow caster.
MaterialScriptProgramDefinition * programDef
AliasTextureNamePairList textureAliases
bool isFragmentProgramShadowCaster
When referencing, are we in context of shadow caster.
GpuProgramParametersSharedPtr programParams
When referencing, are we in context of shadow caster.
ushort numAnimationParametrics
size_t lineNo
Error reporting state.
StringVector defaultParamLines
MaterialScriptSection section
TextureUnitState * textureUnit
bool isVertexProgramShadowReceiver
When referencing, are we in context of shadow caster.
bool isVertexProgramShadowCaster
Used when referencing a program, not when defining it.
Struct for holding a program definition which is in progress.
bool usesVertexTextureFetch
bool supportsMorphAnimation
vector< std::pair< String, String > >::type customParameters
ushort supportsPoseAnimation
bool supportsSkeletalAnimation
Internal structure defining a texture effect.
std::map< K, V, P, A > type
std::multimap< K, V, P, A > type