-------------------------------------------------------------------------
| 5214 | } |
| 5215 | //------------------------------------------------------------------------- |
| 5216 | ScriptTranslator *BuiltinScriptTranslatorManager::getTranslator(const AbstractNodePtr &node) |
| 5217 | { |
| 5218 | ScriptTranslator *translator = 0; |
| 5219 | |
| 5220 | if(node->type == ANT_OBJECT) |
| 5221 | { |
| 5222 | ObjectAbstractNode *obj = static_cast<ObjectAbstractNode*>(node.get()); |
| 5223 | ObjectAbstractNode *parent = obj->parent ? static_cast<ObjectAbstractNode*>(obj->parent) : 0; |
| 5224 | if(obj->id == ID_MATERIAL) |
| 5225 | translator = &mMaterialTranslator; |
| 5226 | else if(obj->id == ID_TECHNIQUE && parent && parent->id == ID_MATERIAL) |
| 5227 | translator = &mTechniqueTranslator; |
| 5228 | else if(obj->id == ID_PASS && parent && parent->id == ID_TECHNIQUE) |
| 5229 | translator = &mPassTranslator; |
| 5230 | else if(obj->id == ID_TEXTURE_UNIT && parent && parent->id == ID_PASS) |
| 5231 | translator = &mTextureUnitTranslator; |
| 5232 | else if(obj->id == ID_TEXTURE_SOURCE && parent && parent->id == ID_TEXTURE_UNIT) |
| 5233 | translator = &mTextureSourceTranslator; |
| 5234 | else if(obj->id == ID_FRAGMENT_PROGRAM || |
| 5235 | obj->id == ID_VERTEX_PROGRAM || |
| 5236 | obj->id == ID_GEOMETRY_PROGRAM || |
| 5237 | obj->id == ID_TESSELLATION_HULL_PROGRAM || |
| 5238 | obj->id == ID_TESSELLATION_DOMAIN_PROGRAM || |
| 5239 | obj->id == ID_COMPUTE_PROGRAM || |
| 5240 | obj->id == ID_MESH_PROGRAM || |
| 5241 | obj->id == ID_TASK_PROGRAM) |
| 5242 | translator = &mGpuProgramTranslator; |
| 5243 | else if(obj->id == ID_SHARED_PARAMS) |
| 5244 | translator = &mSharedParamsTranslator; |
| 5245 | else if(obj->id == ID_PARTICLE_SYSTEM) |
| 5246 | translator = &mParticleSystemTranslator; |
| 5247 | else if(obj->id == ID_EMITTER) |
| 5248 | translator = &mParticleEmitterTranslator; |
| 5249 | else if(obj->id == ID_AFFECTOR) |
| 5250 | translator = &mParticleAffectorTranslator; |
| 5251 | else if(obj->id == ID_COMPOSITOR) |
| 5252 | translator = &mCompositorTranslator; |
| 5253 | else if(obj->id == ID_TECHNIQUE && parent && parent->id == ID_COMPOSITOR) |
| 5254 | translator = &mCompositionTechniqueTranslator; |
| 5255 | else if((obj->id == ID_TARGET || obj->id == ID_TARGET_OUTPUT) && parent && parent->id == ID_TECHNIQUE) |
| 5256 | translator = &mCompositionTargetPassTranslator; |
| 5257 | else if(obj->id == ID_PASS && parent && (parent->id == ID_TARGET || parent->id == ID_TARGET_OUTPUT)) |
| 5258 | translator = &mCompositionPassTranslator; |
| 5259 | else if(obj->id == ID_SAMPLER) |
| 5260 | translator = &mSamplerTranslator; |
| 5261 | } |
| 5262 | |
| 5263 | return translator; |
| 5264 | } |
| 5265 | } |