void PUDoPlacementParticleEventHandler::copyAttributesTo( PUEventHandler* eventHandler )
{
    PUEventHandler::copyAttributesTo(eventHandler);
    PUDoPlacementParticleEventHandler* doPlacementParticleEventHandler = static_cast<PUDoPlacementParticleEventHandler*>(eventHandler);
    doPlacementParticleEventHandler->setForceEmitterName(_forceEmitterName);
    doPlacementParticleEventHandler->setNumberOfParticles(_numberOfParticles);
    doPlacementParticleEventHandler->_alwaysUsePosition = _alwaysUsePosition;
    doPlacementParticleEventHandler->_inheritPosition = _inheritPosition;
    doPlacementParticleEventHandler->_inheritDirection = _inheritDirection;
    doPlacementParticleEventHandler->_inheritOrientation = _inheritOrientation;
    doPlacementParticleEventHandler->_inheritTimeToLive = _inheritTimeToLive;
    doPlacementParticleEventHandler->_inheritMass = _inheritMass;
    doPlacementParticleEventHandler->_inheritTextureCoordinate = _inheritTextureCoordinate;
    doPlacementParticleEventHandler->_inheritColour = _inheritColour;
    doPlacementParticleEventHandler->_inheritParticleWidth = _inheritParticleWidth;
    doPlacementParticleEventHandler->_inheritParticleHeight = _inheritParticleHeight;
    doPlacementParticleEventHandler->_inheritParticleDepth = _inheritParticleDepth;
}
//-------------------------------------------------------------------------
bool PUDoPlacementParticleEventHandlerTranslator::translateChildProperty( PUScriptCompiler* compiler, PUAbstractNode *node )
{
    PUPropertyAbstractNode* prop = reinterpret_cast<PUPropertyAbstractNode*>(node);
    PUEventHandler* evt = static_cast<PUEventHandler *>(prop->parent->context);
    PUDoPlacementParticleEventHandler* handler = static_cast<PUDoPlacementParticleEventHandler*>(evt);

    if (prop->name == token[TOKEN_DOPLACE_FORCE_EMITTER])
    {
        // Property: force_emitter
        if (passValidateProperty(compiler, prop, token[TOKEN_DOPLACE_FORCE_EMITTER], VAL_STRING))
        {
            std::string val;
            if(getString(*prop->values.front(), &val))
            {
                handler->setForceEmitterName(val);
                return true;
            }
        }
    }
    else if (prop->name == token[TOKEN_DOPLACE_NUMBER_OF_PARTICLES])
    {
        // Property: number_of_particles
        if (passValidateProperty(compiler, prop, token[TOKEN_DOPLACE_NUMBER_OF_PARTICLES], VAL_UINT))
        {
            unsigned int val = 0;
            if(getUInt(*prop->values.front(), &val))
            {
                handler->setNumberOfParticles(val);
                return true;
            }
        }
    }
    else if (prop->name == token[TOKEN_INHERIT_POSITION])
    {
        // Property: inherit_position
        if (passValidateProperty(compiler, prop, token[TOKEN_INHERIT_POSITION], VAL_BOOL))
        {
            bool val;
            if(getBoolean(*prop->values.front(), &val))
            {
                handler->setInheritPosition(val);
                return true;
            }
        }
    }
    else if (prop->name == token[TOKEN_INHERIT_DIRECTION])
    {
        // Property: inherit_direction
        if (passValidateProperty(compiler, prop, token[TOKEN_INHERIT_DIRECTION], VAL_BOOL))
        {
            bool val;
            if(getBoolean(*prop->values.front(), &val))
            {
                handler->setInheritDirection(val);
                return true;
            }
        }
    }
    else if (prop->name == token[TOKEN_INHERIT_ORIENTATION])
    {
        // Property: inherit_orientation
        if (passValidateProperty(compiler, prop, token[TOKEN_INHERIT_ORIENTATION], VAL_BOOL))
        {
            bool val;
            if(getBoolean(*prop->values.front(), &val))
            {
                handler->setInheritOrientation(val);
                return true;
            }
        }
    }
    else if (prop->name == token[TOKEN_INHERIT_TIME_TO_LIVE])
    {
        // Property: inherit_time_to_live
        if (passValidateProperty(compiler, prop, token[TOKEN_INHERIT_TIME_TO_LIVE], VAL_BOOL))
        {
            bool val;
            if(getBoolean(*prop->values.front(), &val))
            {
                handler->setInheritTimeToLive(val);
                return true;
            }
        }
    }
    else if (prop->name == token[TOKEN_INHERIT_MASS])
    {
        // Property: inherit_mass
        if (passValidateProperty(compiler, prop, token[TOKEN_INHERIT_MASS], VAL_BOOL))
        {
            bool val;
            if(getBoolean(*prop->values.front(), &val))
            {
                handler->setInheritMass(val);
                return true;
            }
        }
    }
    else if (prop->name == token[TOKEN_INHERIT_TEXTURE_COORDINATE])
    {
        // Property: inherit_texture_coord
        if (passValidateProperty(compiler, prop, token[TOKEN_INHERIT_TEXTURE_COORDINATE], VAL_BOOL))
        {
            bool val;
            if(getBoolean(*prop->values.front(), &val))
            {
                handler->setInheritTextureCoordinate(val);
                return true;
            }
        }
    }
    else if (prop->name == token[TOKEN_INHERIT_COLOUR])
    {
        // Property: inherit_colour
        if (passValidateProperty(compiler, prop, token[TOKEN_INHERIT_COLOUR], VAL_BOOL))
        {
            bool val;
            if(getBoolean(*prop->values.front(), &val))
            {
                handler->setInheritColour(val);
                return true;
            }
        }
    }
    else if (prop->name == token[TOKEN_INHERIT_WIDTH])
    {
        // Property: inherit_width
        if (passValidateProperty(compiler, prop, token[TOKEN_INHERIT_WIDTH], VAL_BOOL))
        {
            bool val;
            if(getBoolean(*prop->values.front(), &val))
            {
                handler->setInheritParticleWidth(val);
                return true;
            }
        }
    }
    else if (prop->name == token[TOKEN_INHERIT_HEIGHT])
    {
        // Property: inherit_height
        if (passValidateProperty(compiler, prop, token[TOKEN_INHERIT_HEIGHT], VAL_BOOL))
        {
            bool val;
            if(getBoolean(*prop->values.front(), &val))
            {
                handler->setInheritParticleHeight(val);
                return true;
            }
        }
    }
    else if (prop->name == token[TOKEN_INHERIT_DEPTH])
    {
        // Property: inherit_depth
        if (passValidateProperty(compiler, prop, token[TOKEN_INHERIT_DEPTH], VAL_BOOL))
        {
            bool val;
            if(getBoolean(*prop->values.front(), &val))
            {
                handler->setInheritParticleDepth(val);
                return true;
            }
        }
    }

    return false;
}