//----------------------------------------------------------------------- bool JetAffectorTranslator::translateChildObject(ScriptCompiler* compiler, const AbstractNodePtr &node) { ObjectAbstractNode* child = reinterpret_cast<ObjectAbstractNode*>(node.get()); ParticleAffector* af = any_cast<ParticleAffector*>(child->parent->context); JetAffector* affector = static_cast<JetAffector*>(af); DynamicAttributeTranslator dynamicAttributeTranslator; if (child->cls == token[TOKEN_ACCELERATION]) { // Property: acceleration dynamicAttributeTranslator.translate(compiler, node); DynamicAttribute* dynamicAttribute = any_cast<DynamicAttribute*>(child->context); affector->setDynAcceleration(dynamicAttribute); return true; } else if (child->cls == token[TOKEN_JET_ACCELERATION]) { // Property: jet_aff_accel (deprecated and replaced by 'acceleration') dynamicAttributeTranslator.translate(compiler, node); DynamicAttribute* dynamicAttribute = any_cast<DynamicAttribute*>(child->context); affector->setDynAcceleration(dynamicAttribute); return true; } return false; }
//----------------------------------------------------------------------- void JetAffector::copyAttributesTo (ParticleAffector* affector) { ParticleAffector::copyAttributesTo(affector); JetAffector* jetAffector = static_cast<JetAffector*>(affector); jetAffector->setDynAcceleration(mDynamicAttributeFactory.cloneDynamicAttribute(getDynAcceleration())); }
//----------------------------------------------------------------------- bool JetAffectorTranslator::translateChildProperty(ScriptCompiler* compiler, const AbstractNodePtr &node) { PropertyAbstractNode* prop = reinterpret_cast<PropertyAbstractNode*>(node.get()); ParticleAffector* af = any_cast<ParticleAffector*>(prop->parent->context); JetAffector* affector = static_cast<JetAffector*>(af); if (prop->name == token[TOKEN_ACCELERATION]) { // Property: acceleration if (passValidateProperty(compiler, prop, token[TOKEN_ACCELERATION], VAL_REAL)) { Real val = 0.0f; if(getReal(prop->values.front(), &val)) { DynamicAttributeFixed* dynamicAttributeFixed = PU_NEW_T(DynamicAttributeFixed, MEMCATEGORY_SCENE_OBJECTS)(); dynamicAttributeFixed->setValue(val); affector->setDynAcceleration(dynamicAttributeFixed); return true; } } } else if (prop->name == token[TOKEN_JET_ACCELERATION]) { // Property: jet_aff_accel (deprecated and replaced by 'acceleration') if (passValidateProperty(compiler, prop, token[TOKEN_JET_ACCELERATION], VAL_REAL)) { Real val = 0.0f; if(getReal(prop->values.front(), &val)) { DynamicAttributeFixed* dynamicAttributeFixed = PU_NEW_T(DynamicAttributeFixed, MEMCATEGORY_SCENE_OBJECTS)(); dynamicAttributeFixed->setValue(val); affector->setDynAcceleration(dynamicAttributeFixed); return true; } } } return false; }