Ejemplo n.º 1
0
/**	@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;
}
Ejemplo n.º 2
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;
}
Ejemplo n.º 3
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 );

	USAttrGetter getter;
	self->ApplyAttrOp ( attrID, getter );
	
	if ( getter.IsValid ()) {
		lua_pushnumber ( state, getter.Get < float >());
		return 1;
	}
	
	MOAILog ( L, MOAILogMessages::MOAINode_AttributeNotFound );
	return 0;
}
Ejemplo n.º 4
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;
}
Ejemplo n.º 5
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;
}
Ejemplo n.º 6
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;
}
Ejemplo n.º 7
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 );
}
Ejemplo n.º 8
0
//----------------------------------------------------------------//
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;
}
Ejemplo n.º 9
0
//----------------------------------------------------------------//
void MOAILuaState::ReportBadCast ( int idx, cc8* typeName ) {
	MOAILog ( *this, MOAILogMessages::MOAI_BadCast_DS, this->AbsIndex ( idx ), typeName );
}