/** @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->AttrExists ( attrID )) { USAttrGetter getter; self->ApplyAttrOp ( attrID, getter ); 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, USInterpolate::kSmooth ); action->SetLink ( 0, self, attrID, value - getter.Get < float >(), mode ); action->SetLength ( delay ); action->Start (); action->PushLuaUserdata ( state ); return 1; } MOAILog ( L, MOAILogMessages::MOAINode_AttributeNotFound ); return 0; }
//----------------------------------------------------------------// u32 MOAIGfxDevice::LogErrors () { u32 count = 0; if ( this->mHasContext ) { for ( int error = glGetError (); error != GL_NO_ERROR; error = glGetError (), ++count ) { MOAILog ( 0, MOAILogMessages::MOAIGfxDevice_OpenGLError_S, this->GetErrorString ( error )); } } return count; }
/** @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 ); USAttrGetter getter; self->ApplyAttrOp ( attrID, getter ); if ( getter.IsValid ()) { lua_pushnumber ( state, getter.Get < float >()); return 1; } MOAILog ( L, MOAILogMessages::MOAINode_AttributeNotFound ); return 0; }
/** @name setAttrLink @text Sets a *pull* attribute connecting an attribute in the node to an attribute in a foreign node. @in MOAINode self @in number attrID ID of attribute to become dependent of foreign node. @in MOAINode sourceNode Foreign node. @opt number sourceAttrID Attribute in foreign node to control value of attribue. Default value is attrID. @out nil */ int MOAINode::_setAttrLink ( lua_State* L ) { MOAI_LUA_SETUP ( MOAINode, "UNU" ); u32 attrID = state.GetValue < u32 >( 2, 0 ); MOAINode* srcNode = state.GetLuaObject < MOAINode >( 3, true ); if ( !srcNode ) return 0; u32 srcAttrID = state.GetValue < u32 >( 4, attrID ); if ( srcNode->CheckAttrExists ( srcAttrID )) { self->SetAttrLink ( attrID, srcNode, srcAttrID ); self->ScheduleUpdate (); return 0; } MOAILog ( L, MOAILogMessages::MOAINode_AttributeNotFound ); return 0; }
/** @name setAttr @text Sets the value of an attribute. @in MOAINode self @in number attrID @in number value @out nil */ int MOAINode::_setAttr ( lua_State* L ) { MOAI_LUA_SETUP ( MOAINode, "UNN" ); u32 attrID = state.GetValue < u32 >( 2, 0 ); float value = state.GetValue < float >( 3, 0.0f ); if ( self->AttrExists ( attrID )) { USAttrSetter setter; setter.Set ( value ); self->ClearAttrLink ( attrID ); self->ApplyAttrOp ( attrID, setter ); self->ScheduleUpdate (); } else { MOAILog ( L, MOAILogMessages::MOAINode_AttributeNotFound ); } return 0; }
/** @name moveAttr @text Animate the attribute by applying a delta. Creates and returns a MOAIEaseDriver initialized to apply the delta. @in MOAINode self @in number attrID ID of the attribute to animate. @in number delta Total change to be added to 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::_moveAttr ( lua_State* L ) { MOAI_LUA_SETUP ( MOAINode, "UNNN" ) MOAIEaseDriver* action = new MOAIEaseDriver (); action->ReserveLinks ( 1 ); u32 attrID = state.GetValue < u32 >( 2, 0 ); float value = state.GetValue < float >( 3, 0.0f ); float length = state.GetValue < float >( 4, 0.0f ); u32 mode = state.GetValue < u32 >( 5, USInterpolate::kSmooth ); if ( self->AttrExists ( attrID )) { action->SetLink ( 0, self, attrID, value, mode ); action->SetLength ( length ); action->Start (); action->PushLuaUserdata ( state ); return 1; } MOAILog ( L, MOAILogMessages::MOAINode_AttributeNotFound ); return 0; }
//----------------------------------------------------------------// void MOAIGfxDevice::ReportTextureFree ( cc8* name, size_t size ) { this->mTextureMemoryUsage -= size; float mb = ( float )this->mTextureMemoryUsage / 1024.0f / 1024.0f; MOAILog ( 0, MOAILogMessages::MOAITexture_MemoryUse_SDFS, "-", size, mb, name ); }
//----------------------------------------------------------------// bool MOAILuaState::CheckParams ( int idx, cc8* format, bool verbose ) { idx = this->AbsIndex ( idx ); for ( int i = 0; format [ i ]; ++i ) { int pos = idx + i ; int type = LUA_TNIL; int expected = LUA_TNONE; if ( pos <= this->GetTop ()) { type = lua_type ( this->mState, pos ); } switch ( format [ i ]) { // boolean case 'B': if ( type != LUA_TBOOLEAN ) expected = LUA_TBOOLEAN; break; // coroutine case 'C': if ( type != LUA_TTHREAD ) expected = LUA_TTHREAD; break; // function case 'F': if ( type != LUA_TFUNCTION ) expected = LUA_TFUNCTION; break; // light userdata case 'L': if ( type != LUA_TLIGHTUSERDATA ) expected = LUA_TLIGHTUSERDATA; break; // number case 'N': if ( type != LUA_TNUMBER ) expected = LUA_TNUMBER; break; // string case 'S': if ( type != LUA_TSTRING ) expected = LUA_TSTRING; break; // table case 'T': if ( type != LUA_TTABLE ) expected = LUA_TTABLE; break; // userdata case 'U': if ( type != LUA_TUSERDATA ) expected = LUA_TUSERDATA; break; // any type case '*': case '.': break; } if ( expected != LUA_TNONE ) { if ( verbose ) { cc8* expectedName = MOAILuaState::GetLuaTypeName ( expected ); cc8* gotName = MOAILuaState::GetLuaTypeName ( type ); MOAILog ( *this, MOAILogMessages::MOAI_ParamTypeMismatch_DSS, pos, expectedName, gotName ); } return false; } } return true; }
//----------------------------------------------------------------// void MOAILuaState::ReportBadCast ( int idx, cc8* typeName ) { MOAILog ( *this, MOAILogMessages::MOAI_BadCast_DS, this->AbsIndex ( idx ), typeName ); }