/** @name seekAttr @text Animate the attribute by applying a delta. Delta is computed given a target value. Creates and returns a MOAIEaseDriver initialized to apply the delta. @in MOAINode self @in number attrID ID of the attribute to animate. @in number goal Desired resulting value for attribute. @in number length Length of animation in seconds. @opt number mode The ease mode. One of MOAIEaseType.EASE_IN, MOAIEaseType.EASE_OUT, MOAIEaseType.FLAT MOAIEaseType.LINEAR, MOAIEaseType.SMOOTH, MOAIEaseType.SOFT_EASE_IN, MOAIEaseType.SOFT_EASE_OUT, MOAIEaseType.SOFT_SMOOTH. Defaults to MOAIEaseType.SMOOTH. @out MOAIEaseDriver easeDriver */ int MOAINode::_seekAttr ( lua_State* L ) { MOAI_LUA_SETUP ( MOAINode, "UNNN" ) MOAIEaseDriver* action = new MOAIEaseDriver (); action->ReserveLinks ( 1 ); u32 attrID = state.GetValue < u32 >( 2, 0 ); if ( self->CheckAttrExists ( attrID )) { MOAIAttrOp getter; self->ApplyAttrOp ( attrID, getter, MOAIAttrOp::GET ); if ( !getter.IsValid ()) return 0; float value = state.GetValue < float >( 3, 0.0f ); float delay = state.GetValue < float >( 4, 0.0f ); u32 mode = state.GetValue < u32 >( 5, ZLInterpolate::kSmooth ); action->SetLink ( 0, self, attrID, value - getter.GetValue ( 0.0f ), mode ); action->SetSpan ( delay ); action->Start (); action->PushLuaUserdata ( state ); return 1; } MOAILog ( L, MOAILogMessages::MOAINode_AttributeNotFound ); return 0; }
/** @name getAttr @text Returns the value of the attribute if it exists or nil if it doesn't. @in MOAINode self @in number attrID @out number value */ int MOAINode::_getAttr ( lua_State* L ) { MOAI_LUA_SETUP ( MOAINode, "UN" ); u32 attrID = state.GetValue < u32 >( 2, 0 ); MOAIAttrOp getter; self->ApplyAttrOp ( attrID, getter, MOAIAttrOp::GET ); if ( getter.IsValid ()) { lua_pushnumber ( state, getter.GetValue ( 0.0f )); return 1; } MOAILog ( L, MOAILogMessages::MOAINode_AttributeNotFound ); return 0; }