mirror of
				https://github.com/luanti-org/luanti.git
				synced 2025-11-04 09:15:29 +01:00 
			
		
		
		
	Add ObjectRef:getvelocity(), ObjectRef:setyaw() and ObjectRef:getyaw()
This commit is contained in:
		@@ -200,8 +200,11 @@
 | 
			
		||||
-- - set_hp(hp): set number of hitpoints (2 * number of hearts)
 | 
			
		||||
-- LuaEntitySAO-only: (no-op for other objects)
 | 
			
		||||
-- - setvelocity({x=num, y=num, z=num})
 | 
			
		||||
-- - getvelocity() -> {x=num, y=num, z=num}
 | 
			
		||||
-- - setacceleration({x=num, y=num, z=num})
 | 
			
		||||
-- - getacceleration() -> {x=num, y=num, z=num}
 | 
			
		||||
-- - setyaw(radians)
 | 
			
		||||
-- - getyaw() -> radians
 | 
			
		||||
-- - settexturemod(mod)
 | 
			
		||||
-- - setsprite(p={x=0,y=0}, num_frames=1, framelength=0.2,
 | 
			
		||||
-- -           select_horiz_by_yawpitch=false)
 | 
			
		||||
 
 | 
			
		||||
@@ -1698,6 +1698,11 @@ void LuaEntitySAO::setVelocity(v3f velocity)
 | 
			
		||||
	m_velocity = velocity;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
v3f LuaEntitySAO::getVelocity()
 | 
			
		||||
{
 | 
			
		||||
	return m_velocity;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void LuaEntitySAO::setAcceleration(v3f acceleration)
 | 
			
		||||
{
 | 
			
		||||
	m_acceleration = acceleration;
 | 
			
		||||
@@ -1708,6 +1713,16 @@ v3f LuaEntitySAO::getAcceleration()
 | 
			
		||||
	return m_acceleration;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void LuaEntitySAO::setYaw(float yaw)
 | 
			
		||||
{
 | 
			
		||||
	m_yaw = yaw;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
float LuaEntitySAO::getYaw()
 | 
			
		||||
{
 | 
			
		||||
	return m_yaw;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void LuaEntitySAO::setTextureMod(const std::string &mod)
 | 
			
		||||
{
 | 
			
		||||
	std::ostringstream os(std::ios::binary);
 | 
			
		||||
 
 | 
			
		||||
@@ -213,8 +213,11 @@ public:
 | 
			
		||||
	float getMinimumSavedMovement();
 | 
			
		||||
	/* LuaEntitySAO-specific */
 | 
			
		||||
	void setVelocity(v3f velocity);
 | 
			
		||||
	v3f getVelocity();
 | 
			
		||||
	void setAcceleration(v3f acceleration);
 | 
			
		||||
	v3f getAcceleration();
 | 
			
		||||
	void setYaw(float yaw);
 | 
			
		||||
	float getYaw();
 | 
			
		||||
	void setTextureMod(const std::string &mod);
 | 
			
		||||
	void setSprite(v2s16 p, int num_frames, float framelength,
 | 
			
		||||
			bool select_horiz_by_yawpitch);
 | 
			
		||||
 
 | 
			
		||||
@@ -1928,6 +1928,18 @@ private:
 | 
			
		||||
		return 0;
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	// getvelocity(self)
 | 
			
		||||
	static int l_getvelocity(lua_State *L)
 | 
			
		||||
	{
 | 
			
		||||
		ObjectRef *ref = checkobject(L, 1);
 | 
			
		||||
		LuaEntitySAO *co = getluaobject(ref);
 | 
			
		||||
		if(co == NULL) return 0;
 | 
			
		||||
		// Do it
 | 
			
		||||
		v3f v = co->getVelocity();
 | 
			
		||||
		pushFloatPos(L, v);
 | 
			
		||||
		return 1;
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	// setacceleration(self, {x=num, y=num, z=num})
 | 
			
		||||
	static int l_setacceleration(lua_State *L)
 | 
			
		||||
	{
 | 
			
		||||
@@ -1953,6 +1965,31 @@ private:
 | 
			
		||||
		return 1;
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	// setyaw(self, radians)
 | 
			
		||||
	static int l_setyaw(lua_State *L)
 | 
			
		||||
	{
 | 
			
		||||
		ObjectRef *ref = checkobject(L, 1);
 | 
			
		||||
		LuaEntitySAO *co = getluaobject(ref);
 | 
			
		||||
		if(co == NULL) return 0;
 | 
			
		||||
		// pos
 | 
			
		||||
		float yaw = luaL_checknumber(L, 2) * core::RADTODEG;
 | 
			
		||||
		// Do it
 | 
			
		||||
		co->setYaw(yaw);
 | 
			
		||||
		return 0;
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	// getyaw(self)
 | 
			
		||||
	static int l_getyaw(lua_State *L)
 | 
			
		||||
	{
 | 
			
		||||
		ObjectRef *ref = checkobject(L, 1);
 | 
			
		||||
		LuaEntitySAO *co = getluaobject(ref);
 | 
			
		||||
		if(co == NULL) return 0;
 | 
			
		||||
		// Do it
 | 
			
		||||
		float yaw = co->getYaw() * core::DEGTORAD;
 | 
			
		||||
		lua_pushnumber(L, yaw);
 | 
			
		||||
		return 1;
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	// settexturemod(self, mod)
 | 
			
		||||
	static int l_settexturemod(lua_State *L)
 | 
			
		||||
	{
 | 
			
		||||
@@ -2209,8 +2246,11 @@ const luaL_reg ObjectRef::methods[] = {
 | 
			
		||||
	method(ObjectRef, get_hp),
 | 
			
		||||
	// LuaEntitySAO-only
 | 
			
		||||
	method(ObjectRef, setvelocity),
 | 
			
		||||
	method(ObjectRef, getvelocity),
 | 
			
		||||
	method(ObjectRef, setacceleration),
 | 
			
		||||
	method(ObjectRef, getacceleration),
 | 
			
		||||
	method(ObjectRef, setyaw),
 | 
			
		||||
	method(ObjectRef, getyaw),
 | 
			
		||||
	method(ObjectRef, settexturemod),
 | 
			
		||||
	method(ObjectRef, setsprite),
 | 
			
		||||
	method(ObjectRef, get_entity_name),
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user