add hud.default_hand_controller
This commit is contained in:
parent
b615dcc57d
commit
3c2061f788
@ -22,6 +22,39 @@ local function configure_SSAO()
|
|||||||
-- for test purposes
|
-- for test purposes
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local function update_hand()
|
||||||
|
local skeleton = gfx.skeletons
|
||||||
|
local pid = hud.get_player()
|
||||||
|
local invid, slot = player.get_inventory(pid)
|
||||||
|
local itemid = inventory.get(invid, slot)
|
||||||
|
|
||||||
|
local cam = cameras.get("core:first-person")
|
||||||
|
local bone = skeleton.index("hand", "item")
|
||||||
|
|
||||||
|
local offset = vec3.mul(vec3.sub(cam:get_pos(), {player.get_pos(pid)}), -1)
|
||||||
|
|
||||||
|
local rotation = cam:get_rot()
|
||||||
|
|
||||||
|
local angle = player.get_rot(pid) - 90
|
||||||
|
local cos = math.cos(angle / (180 / math.pi))
|
||||||
|
local sin = math.sin(angle / (180 / math.pi))
|
||||||
|
|
||||||
|
local newX = offset[1] * cos - offset[3] * sin
|
||||||
|
local newZ = offset[1] * sin + offset[3] * cos
|
||||||
|
|
||||||
|
offset[1] = newX
|
||||||
|
offset[3] = newZ
|
||||||
|
|
||||||
|
local mat = mat4.translate(mat4.idt(), {0.06, 0.035, -0.1})
|
||||||
|
mat4.scale(mat, {0.1, 0.1, 0.1}, mat)
|
||||||
|
mat4.mul(rotation, mat, mat)
|
||||||
|
mat4.rotate(mat, {0, 1, 0}, -90, mat)
|
||||||
|
mat4.translate(mat, offset, mat)
|
||||||
|
|
||||||
|
skeleton.set_matrix("hand", bone, mat)
|
||||||
|
skeleton.set_model("hand", bone, item.model_name(itemid))
|
||||||
|
end
|
||||||
|
|
||||||
function on_hud_open()
|
function on_hud_open()
|
||||||
input.add_callback("player.pick", function ()
|
input.add_callback("player.pick", function ()
|
||||||
if hud.is_paused() or hud.is_inventory_open() then
|
if hud.is_paused() or hud.is_inventory_open() then
|
||||||
@ -81,39 +114,8 @@ function on_hud_open()
|
|||||||
end)
|
end)
|
||||||
|
|
||||||
configure_SSAO()
|
configure_SSAO()
|
||||||
end
|
|
||||||
|
|
||||||
local function update_hand()
|
hud.default_hand_controller = update_hand
|
||||||
local skeleton = gfx.skeletons
|
|
||||||
local pid = hud.get_player()
|
|
||||||
local invid, slot = player.get_inventory(pid)
|
|
||||||
local itemid = inventory.get(invid, slot)
|
|
||||||
|
|
||||||
local cam = cameras.get("core:first-person")
|
|
||||||
local bone = skeleton.index("hand", "item")
|
|
||||||
|
|
||||||
local offset = vec3.mul(vec3.sub(cam:get_pos(), {player.get_pos(pid)}), -1)
|
|
||||||
|
|
||||||
local rotation = cam:get_rot()
|
|
||||||
|
|
||||||
local angle = player.get_rot(pid) - 90
|
|
||||||
local cos = math.cos(angle / (180 / math.pi))
|
|
||||||
local sin = math.sin(angle / (180 / math.pi))
|
|
||||||
|
|
||||||
local newX = offset[1] * cos - offset[3] * sin
|
|
||||||
local newZ = offset[1] * sin + offset[3] * cos
|
|
||||||
|
|
||||||
offset[1] = newX
|
|
||||||
offset[3] = newZ
|
|
||||||
|
|
||||||
local mat = mat4.translate(mat4.idt(), {0.06, 0.035, -0.1})
|
|
||||||
mat4.scale(mat, {0.1, 0.1, 0.1}, mat)
|
|
||||||
mat4.mul(rotation, mat, mat)
|
|
||||||
mat4.rotate(mat, {0, 1, 0}, -90, mat)
|
|
||||||
mat4.translate(mat, offset, mat)
|
|
||||||
|
|
||||||
skeleton.set_matrix("hand", bone, mat)
|
|
||||||
skeleton.set_model("hand", bone, item.model_name(itemid))
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function on_hud_render()
|
function on_hud_render()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user