21 #ifndef CAELUM__CAELUM_SCRIPT_TRANSLATOR_H 22 #define CAELUM__CAELUM_SCRIPT_TRANSLATOR_H 24 #if CAELUM_SCRIPT_SUPPORT 27 #include "OgreScriptTranslator.h" 28 #include "TypeDescriptor.h" 48 class CAELUM_EXPORT PropScriptResource:
public Ogre::Resource {
50 virtual void loadImpl () { }
51 virtual void unloadImpl () { }
52 virtual size_t calculateSize ()
const {
return 0; }
56 Ogre::ResourceManager* creator,
const Ogre::String& name, Ogre::ResourceHandle handle,
57 const Ogre::String& group,
bool isManual, Ogre::ManualResourceLoader* loader);
58 ~PropScriptResource();
63 class CAELUM_EXPORT PropScriptResourceManager:
public Ogre::ResourceManager
66 PropScriptResourceManager();
68 virtual PropScriptResource* createImpl(
69 const String& name, Ogre::ResourceHandle handle,
const String& group,
70 bool isManual, Ogre::ManualResourceLoader* loader,
const Ogre::NameValuePairList* createParams);
88 class CAELUM_EXPORT TypeDescriptorScriptTranslator:
public Ogre::ScriptTranslator
94 static bool getPropValueOrAddError (Ogre::ScriptCompiler* compiler, Ogre::PropertyAbstractNode* prop,
int& value);
95 static bool getPropValueOrAddError (Ogre::ScriptCompiler* compiler, Ogre::PropertyAbstractNode* prop,
float& value);
96 static bool getPropValueOrAddError (Ogre::ScriptCompiler* compiler, Ogre::PropertyAbstractNode* prop,
double& value);
97 static bool getPropValueOrAddError (Ogre::ScriptCompiler* compiler, Ogre::PropertyAbstractNode* prop,
bool& value);
98 static bool getPropValueOrAddError (Ogre::ScriptCompiler* compiler, Ogre::PropertyAbstractNode* prop, Ogre::Degree& value);
99 static bool getPropValueOrAddError (Ogre::ScriptCompiler* compiler, Ogre::PropertyAbstractNode* prop, Ogre::ColourValue& value);
100 static bool getPropValueOrAddError (Ogre::ScriptCompiler* compiler, Ogre::PropertyAbstractNode* prop, Ogre::String& value);
101 static bool getPropValueOrAddError (Ogre::ScriptCompiler* compiler, Ogre::PropertyAbstractNode* prop, Ogre::Vector3& value);
102 static bool getPropValueOrAddError (Ogre::ScriptCompiler* compiler, Ogre::PropertyAbstractNode* prop, Ogre::Vector2& value);
106 static void translateProperty (
107 Ogre::ScriptCompiler* compiler,
108 Ogre::PropertyAbstractNode* prop,
110 const TypeDescriptor* typeDescriptor);
113 explicit TypeDescriptorScriptTranslator (TypeDescriptor* type = 0);
115 virtual void translate (Ogre::ScriptCompiler* compiler,
const Ogre::AbstractNodePtr& node);
117 inline const TypeDescriptor* getTypeDescriptor ()
const {
return mTypeDescriptor; }
118 inline TypeDescriptor* getTypeDescriptor () {
return mTypeDescriptor; }
121 TypeDescriptor* mTypeDescriptor;
126 struct CAELUM_EXPORT CaelumSystemScriptTranslator:
public Ogre::ScriptTranslator
129 CaelumSystemScriptTranslator();
131 virtual void translate (Ogre::ScriptCompiler* compiler,
const Ogre::AbstractNodePtr& node);
133 void setTranslationTarget (CaelumSystem* target,
const Ogre::String& name);
134 void clearTranslationTarget ();
136 inline bool hasTranslationTarget ()
const {
return mTranslationTarget != 0; }
137 inline bool foundTranslationTarget ()
const {
return mTranslationTargetFound; }
138 inline CaelumSystem* getTranslationTarget ()
const {
return mTranslationTarget; }
139 inline const Ogre::String& getTranslationTargetName ()
const {
return mTranslationTargetName; }
141 inline void setResourceManager (PropScriptResourceManager* value) { mResourceManager = value; }
142 inline PropScriptResourceManager* getResourceManager ()
const {
return mResourceManager; }
145 PropScriptResourceManager* mResourceManager;
146 CaelumSystem* mTranslationTarget;
147 Ogre::String mTranslationTargetName;
148 bool mTranslationTargetFound;
155 inline const TypeDescriptor* getTypeDescriptor ()
const {
return mTypeDescriptor; }
156 inline void setTypeDescriptor (
const TypeDescriptor* value) { mTypeDescriptor = value; }
159 const TypeDescriptor* mTypeDescriptor;
172 struct CAELUM_EXPORT CloudSystemScriptTranslator:
public Ogre::ScriptTranslator
175 virtual void translate (Ogre::ScriptCompiler* compiler,
const Ogre::AbstractNodePtr& node);
181 class CAELUM_EXPORT CaelumScriptTranslatorManager:
public Ogre::ScriptTranslatorManager
184 explicit CaelumScriptTranslatorManager (CaelumDefaultTypeDescriptorData* typeData);
186 virtual size_t getNumTranslators ()
const;
189 virtual Ogre::ScriptTranslator* getTranslator (
const Ogre::AbstractNodePtr& node);
191 void _setPropScriptResourceManager (PropScriptResourceManager* mgr);
193 inline CaelumSystemScriptTranslator* getCaelumSystemTranslator () {
return &mCaelumSystemTranslator; }
196 CaelumSystemScriptTranslator mCaelumSystemTranslator;
197 CloudSystemScriptTranslator mCloudSystemTranslator;
198 TypeDescriptorScriptTranslator mFlatCloudLayerTranslator;
199 TypeDescriptorScriptTranslator mSunTranslator;
200 TypeDescriptorScriptTranslator mMoonTranslator;
201 TypeDescriptorScriptTranslator mPointStarfieldTranslator;
202 TypeDescriptorScriptTranslator mGroundFogTranslator;
203 TypeDescriptorScriptTranslator mDepthComposerTranslator;
204 TypeDescriptorScriptTranslator mPrecipitationTranslator;
205 TypeDescriptorScriptTranslator mSkyDomeTranslator;
209 typedef std::map<Ogre::String, Ogre::ScriptTranslator*> ScriptTranslatorMap;
210 ScriptTranslatorMap mTranslatorMap;
214 #endif // CAELUM_SCRIPT_SUPPORT 216 #endif // CAELUM__CAELUM_SCRIPT_TRANSLATOR_H