forked from Mirrorlandia_minetest/minetest
Add offset to automatic_face_movement_dir
This commit is contained in:
parent
681e136d5f
commit
4feea0ac68
@ -1888,7 +1888,8 @@ Object Properties
|
|||||||
makes_footstep_sound = false,
|
makes_footstep_sound = false,
|
||||||
automatic_rotate = false,
|
automatic_rotate = false,
|
||||||
stepheight = 0,
|
stepheight = 0,
|
||||||
automatic_face_movement_dir = false,
|
automatic_face_movement_dir = 0.0,
|
||||||
|
^ automatically set yaw to movement direction; offset in degrees; false to disable
|
||||||
}
|
}
|
||||||
|
|
||||||
Entity definition (register_entity)
|
Entity definition (register_entity)
|
||||||
|
@ -98,7 +98,8 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
drowning, leveled and liquid_range added to ContentFeatures
|
drowning, leveled and liquid_range added to ContentFeatures
|
||||||
stepheight and collideWithObjects added to object properties
|
stepheight and collideWithObjects added to object properties
|
||||||
version, heat and humidity transfer in MapBock
|
version, heat and humidity transfer in MapBock
|
||||||
added new property to entities automatic_face_movement_dir
|
automatic_face_movement_dir and automatic_face_movement_dir_offset
|
||||||
|
added to object properties
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define LATEST_PROTOCOL_VERSION 21
|
#define LATEST_PROTOCOL_VERSION 21
|
||||||
|
@ -1211,8 +1211,9 @@ public:
|
|||||||
updateNodePos();
|
updateNodePos();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (getParent() == NULL && m_prop.automatic_face_movement_dir){
|
if (getParent() == NULL && m_prop.automatic_face_movement_dir &&
|
||||||
m_yaw = atan2(m_velocity.Z,m_velocity.X) * 180 / M_PI;
|
(fabs(m_velocity.Z) > 0.001 || fabs(m_velocity.X) > 0.001)){
|
||||||
|
m_yaw = atan2(m_velocity.Z,m_velocity.X) * 180 / M_PI + m_prop.automatic_face_movement_dir_offset;
|
||||||
updateNodePos();
|
updateNodePos();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -527,8 +527,9 @@ void LuaEntitySAO::step(float dtime, bool send_recommended)
|
|||||||
m_velocity += dtime * m_acceleration;
|
m_velocity += dtime * m_acceleration;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(m_prop.automatic_face_movement_dir){
|
if((m_prop.automatic_face_movement_dir) &&
|
||||||
m_yaw = atan2(m_velocity.Z,m_velocity.X) * 180 / M_PI;
|
(fabs(m_velocity.Z) > 0.001 || fabs(m_velocity.X) > 0.001)){
|
||||||
|
m_yaw = atan2(m_velocity.Z,m_velocity.X) * 180 / M_PI + m_prop.automatic_face_movement_dir_offset;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -41,7 +41,8 @@ ObjectProperties::ObjectProperties():
|
|||||||
makes_footstep_sound(false),
|
makes_footstep_sound(false),
|
||||||
automatic_rotate(0),
|
automatic_rotate(0),
|
||||||
stepheight(0),
|
stepheight(0),
|
||||||
automatic_face_movement_dir(false)
|
automatic_face_movement_dir(false),
|
||||||
|
automatic_face_movement_dir_offset(0.0)
|
||||||
{
|
{
|
||||||
textures.push_back("unknown_object.png");
|
textures.push_back("unknown_object.png");
|
||||||
colors.push_back(video::SColor(255,255,255,255));
|
colors.push_back(video::SColor(255,255,255,255));
|
||||||
@ -104,6 +105,7 @@ void ObjectProperties::serialize(std::ostream &os) const
|
|||||||
writeU8(os, collideWithObjects);
|
writeU8(os, collideWithObjects);
|
||||||
writeF1000(os,stepheight);
|
writeF1000(os,stepheight);
|
||||||
writeU8(os, automatic_face_movement_dir);
|
writeU8(os, automatic_face_movement_dir);
|
||||||
|
writeF1000(os, automatic_face_movement_dir_offset);
|
||||||
// Add stuff only at the bottom.
|
// Add stuff only at the bottom.
|
||||||
// Never remove anything, because we don't want new versions of this
|
// Never remove anything, because we don't want new versions of this
|
||||||
}
|
}
|
||||||
@ -139,6 +141,7 @@ void ObjectProperties::deSerialize(std::istream &is)
|
|||||||
collideWithObjects = readU8(is);
|
collideWithObjects = readU8(is);
|
||||||
stepheight = readF1000(is);
|
stepheight = readF1000(is);
|
||||||
automatic_face_movement_dir = readU8(is);
|
automatic_face_movement_dir = readU8(is);
|
||||||
|
automatic_face_movement_dir_offset = readF1000(is);
|
||||||
}catch(SerializationError &e){}
|
}catch(SerializationError &e){}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -46,6 +46,7 @@ struct ObjectProperties
|
|||||||
float automatic_rotate;
|
float automatic_rotate;
|
||||||
f32 stepheight;
|
f32 stepheight;
|
||||||
bool automatic_face_movement_dir;
|
bool automatic_face_movement_dir;
|
||||||
|
f32 automatic_face_movement_dir_offset;
|
||||||
|
|
||||||
|
|
||||||
ObjectProperties();
|
ObjectProperties();
|
||||||
|
@ -191,7 +191,15 @@ void read_object_properties(lua_State *L, int index,
|
|||||||
getfloatfield(L, -1, "automatic_rotate", prop->automatic_rotate);
|
getfloatfield(L, -1, "automatic_rotate", prop->automatic_rotate);
|
||||||
getfloatfield(L, -1, "stepheight", prop->stepheight);
|
getfloatfield(L, -1, "stepheight", prop->stepheight);
|
||||||
prop->stepheight*=BS;
|
prop->stepheight*=BS;
|
||||||
getboolfield(L, -1, "automatic_face_movement_dir", prop->automatic_face_movement_dir);
|
lua_getfield(L, -1, "automatic_face_movement_dir");
|
||||||
|
if (lua_isnumber(L, -1)) {
|
||||||
|
prop->automatic_face_movement_dir = true;
|
||||||
|
prop->automatic_face_movement_dir_offset = luaL_checknumber(L, -1);
|
||||||
|
} else if (lua_isboolean(L, -1)) {
|
||||||
|
prop->automatic_face_movement_dir = lua_toboolean(L, -1);
|
||||||
|
prop->automatic_face_movement_dir_offset = 0.0;
|
||||||
|
}
|
||||||
|
lua_pop(L, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
|
Loading…
Reference in New Issue
Block a user