bool PUGeometryRotatorTranslator::translateChildObject( PUScriptCompiler* compiler, PUAbstractNode *node ) { PUObjectAbstractNode* child = reinterpret_cast<PUObjectAbstractNode*>(node); PUAffector* af = static_cast<PUAffector*>(child->parent->context); PUGeometryRotator* affector = static_cast<PUGeometryRotator*>(af); PUDynamicAttributeTranslator dynamicAttributeTranslator; if (child->cls == token[TOKEN_ROTATION_SPEED]) { // Property: rotation_speed dynamicAttributeTranslator.translate(compiler, node); PUDynamicAttribute* dynamicAttribute = static_cast<PUDynamicAttribute*>(child->context); affector->setRotationSpeed(dynamicAttribute); return true; } else if (child->cls == token[TOKEN_GEOMROT_ROTATION_SPEED]) { // Property: geom_rot_rotation_speed (deprecated and replaced by 'rotation_speed') dynamicAttributeTranslator.translate(compiler, node); PUDynamicAttribute* dynamicAttribute = static_cast<PUDynamicAttribute*>(child->context); affector->setRotationSpeed(dynamicAttribute); return true; } return false; }
void PUGeometryRotator::copyAttributesTo( PUAffector* affector ) { PUAffector::copyAttributesTo(affector); PUGeometryRotator* geometryRotator = static_cast<PUGeometryRotator*>(affector); geometryRotator->setRotationSpeed(getRotationSpeed()->clone()); geometryRotator->_useOwnRotationSpeed = _useOwnRotationSpeed; geometryRotator->_rotationAxis = _rotationAxis; geometryRotator->_rotationAxisSet = _rotationAxisSet; }
//------------------------------------------------------------------------- bool PUGeometryRotatorTranslator::translateChildProperty( PUScriptCompiler* compiler, PUAbstractNode *node ) { PUPropertyAbstractNode* prop = reinterpret_cast<PUPropertyAbstractNode*>(node); PUAffector* af = static_cast<PUAffector*>(prop->parent->context); PUGeometryRotator* affector = static_cast<PUGeometryRotator*>(af); if (prop->name == token[TOKEN_USE_OWN_ROTATION]) { // Property: use_own_rotation if (passValidateProperty(compiler, prop, token[TOKEN_USE_OWN_ROTATION], VAL_BOOL)) { bool val; if(getBoolean(*prop->values.front(), &val)) { affector->setUseOwnRotationSpeed(val); return true; } } } else if (prop->name == token[TOKEN_GEOMROT_USE_OWN_ROTATION]) { // Property: geom_rot_use_own_rotation (deprecated and replaced by 'use_own_rotation') if (passValidateProperty(compiler, prop, token[TOKEN_GEOMROT_USE_OWN_ROTATION], VAL_BOOL)) { bool val; if(getBoolean(*prop->values.front(), &val)) { affector->setUseOwnRotationSpeed(val); return true; } } } else if (prop->name == token[TOKEN_ROTATION_SPEED]) { // Property: rotation_speed if (passValidateProperty(compiler, prop, token[TOKEN_ROTATION_SPEED], VAL_REAL)) { float val = 0.0f; if(getFloat(*prop->values.front(), &val)) { PUDynamicAttributeFixed* dynamicAttributeFixed = new (std::nothrow) PUDynamicAttributeFixed(); dynamicAttributeFixed->setValue(val); affector->setRotationSpeed(dynamicAttributeFixed); return true; } } } else if (prop->name == token[TOKEN_GEOMROT_ROTATION_SPEED]) { // Property: geom_rot_rotation_speed (deprecated and replaced by 'rotation_speed') if (passValidateProperty(compiler, prop, token[TOKEN_GEOMROT_ROTATION_SPEED], VAL_REAL)) { float val = 0.0f; if(getFloat(*prop->values.front(), &val)) { PUDynamicAttributeFixed* dynamicAttributeFixed = new (std::nothrow) PUDynamicAttributeFixed(); dynamicAttributeFixed->setValue(val); affector->setRotationSpeed(dynamicAttributeFixed); return true; } } } else if (prop->name == token[TOKEN_ROTATION_AXIS]) { // Property: rotation_axis if (passValidateProperty(compiler, prop, token[TOKEN_ROTATION_AXIS], VAL_VECTOR3)) { Vec3 val; if(getVector3(prop->values.begin(), prop->values.end(), &val)) { affector->setRotationAxis(val); return true; } } } else if (prop->name == token[TOKEN_GEOMROT_ROTATION_AXIS]) { // Property: geom_rot_axis (deprecated and replaced by 'rotation_axis') if (passValidateProperty(compiler, prop, token[TOKEN_GEOMROT_ROTATION_AXIS], VAL_VECTOR3)) { Vec3 val; if(getVector3(prop->values.begin(), prop->values.end(), &val)) { affector->setRotationAxis(val); return true; } } } return false; }