core: Add dir_to_yaw and yaw_to_dir helpers
authorAuke Kok <sofar@foo-projects.org>
Thu, 12 Jan 2017 19:56:41 +0000 (11:56 -0800)
committerparamat <mat.gregory@virginmedia.com>
Mon, 23 Jan 2017 07:38:39 +0000 (07:38 +0000)
These are needed to go from things like entity yaw to a vector
and vice versa.

builtin/game/item.lua
doc/lua_api.txt

index bf456a4e07bfe28988618656b32d6f8fb4fa243a..e51da6d6b2a1849fff8f806a71da04f32107bff0 100644 (file)
@@ -147,6 +147,14 @@ function core.wallmounted_to_dir(wallmounted)
        return wallmounted_to_dir[wallmounted]
 end
 
+function core.dir_to_yaw(dir)
+       return -math.atan2(dir.x, dir.z)
+end
+
+function core.yaw_to_dir(yaw)
+       return {x = -math.sin(yaw), y = 0, z = math.cos(yaw)}
+end
+
 function core.get_node_drops(nodename, toolname)
        local drop = ItemStack({name=nodename}):get_definition().drop
        if drop == nil then
index 31a1daefbdecf7b9c08091a3d51e825c81f67b7c..62a7b81f7d08b78b0ccd6be3b6f3d84803031bad 100644 (file)
@@ -2403,6 +2403,10 @@ and `minetest.auth_reload` call the authetification handler.
     * Convert a vector to a wallmounted value, used for `paramtype2="wallmounted"`
 * `minetest.wallmounted_to_dir(wallmounted)`
     * Convert a wallmounted value back into a vector aimed directly out the "back" of a node
+* `minetest.dir_to_yaw(dir)`
+    * Convert a vector into a yaw (angle)
+* `minetest.yaw_to_dir(yaw)`
+    * Convert yaw (angle) to a vector
 * `minetest.get_node_drops(nodename, toolname)`
     * Returns list of item names.
     * **Note**: This will be removed or modified in a future version.