diff options
author | MirceaKitsune <sonichedgehog_hyperblast00@yahoo.com> | 2012-10-26 11:46:46 +0300 |
---|---|---|
committer | Perttu Ahola <celeron55@gmail.com> | 2012-11-25 18:14:15 +0200 |
commit | ba4d93027f7b1590f303eff2138cae413faf5c34 (patch) | |
tree | 131a875a718d15c50d5d052540f7c433bd2bdb1f /src/scriptapi.cpp | |
parent | fb0c43186422ad985e70f73bc70eeb07cc194909 (diff) | |
download | minetest-ba4d93027f7b1590f303eff2138cae413faf5c34.tar.gz minetest-ba4d93027f7b1590f303eff2138cae413faf5c34.tar.bz2 minetest-ba4d93027f7b1590f303eff2138cae413faf5c34.zip |
Joint positioning and rotation code, and fix a problem related to their lua API
Attempt to move the animation system to a more correct implementation, rather than using object properties. Incomplete and breaks functionality
Diffstat (limited to 'src/scriptapi.cpp')
-rw-r--r-- | src/scriptapi.cpp | 40 |
1 files changed, 25 insertions, 15 deletions
diff --git a/src/scriptapi.cpp b/src/scriptapi.cpp index 74de50ef8..32fb6e9bd 100644 --- a/src/scriptapi.cpp +++ b/src/scriptapi.cpp @@ -944,21 +944,6 @@ static void read_object_properties(lua_State *L, int index, prop->visual_size = read_v2f(L, -1); lua_pop(L, 1); - lua_getfield(L, -1, "animation_frames"); - if(lua_istable(L, -1)) - { - lua_rawgeti (L, -1, 1); - lua_rawgeti (L, -2, 2); - prop->animation_frames.X = lua_tonumber(L, -2); - prop->animation_frames.Y = lua_tonumber(L, -1); - lua_pop(L, 2); - } - lua_pop(L, 1); - - getfloatfield(L, -1, "animation_speed", prop->animation_speed); - - getfloatfield(L, -1, "animation_blend", prop->animation_blend); - lua_getfield(L, -1, "animation_bone_position"); if(lua_istable(L, -1)) { @@ -2863,6 +2848,30 @@ private: return 0; } + // setanimations(self, mod) + static int l_setanimations(lua_State *L) + { + ObjectRef *ref = checkobject(L, 1); + LuaEntitySAO *co = getluaobject(ref); + if(co == NULL) return 0; + // Do it + v2s16 p(0,0); + int frame_start = 0; + if(!lua_isnil(L, 2)) + frame_start = lua_tonumber(L, 2); + int frame_end = 0; + if(!lua_isnil(L, 3)) + frame_end = lua_tonumber(L, 3); + float frame_speed = 15; + if(!lua_isnil(L, 4)) + frame_speed = lua_tonumber(L, 4); + float frame_blend = 0; + if(!lua_isnil(L, 5)) + frame_blend = lua_tonumber(L, 5); + co->setAnimations(frame_start, frame_end, frame_speed, frame_blend); + return 0; + } + // DEPRECATED // get_entity_name(self) static int l_get_entity_name(lua_State *L) @@ -3062,6 +3071,7 @@ const luaL_reg ObjectRef::methods[] = { method(ObjectRef, getyaw), method(ObjectRef, settexturemod), method(ObjectRef, setsprite), + method(ObjectRef, setanimations), method(ObjectRef, get_entity_name), method(ObjectRef, get_luaentity), // Player-only |