65 lines
2.0 KiB
Lua
65 lines
2.0 KiB
Lua
function init(self)
|
|
-- Add initialization code here
|
|
-- Learn more: https://defold.com/manuals/script/
|
|
-- Remove this function if not needed
|
|
end
|
|
|
|
function final(self)
|
|
-- Add finalization code here
|
|
-- Learn more: https://defold.com/manuals/script/
|
|
-- Remove this function if not needed
|
|
end
|
|
|
|
function update(self, dt)
|
|
-- Add update code here
|
|
-- Learn more: https://defold.com/manuals/script/
|
|
-- Remove this function if not needed
|
|
end
|
|
|
|
function fixed_update(self, dt)
|
|
-- This function is called if 'Fixed Update Frequency' is enabled in the Engine section of game.project
|
|
-- Can be coupled with fixed updates of the physics simulation if 'Use Fixed Timestep' is enabled in
|
|
-- Physics section of game.project
|
|
-- Add update code here
|
|
-- Learn more: https://defold.com/manuals/script/
|
|
-- Remove this function if not needed
|
|
end
|
|
|
|
function on_message(self, message_id, message, sender)
|
|
-- Add message-handling code here
|
|
-- Learn more: https://defold.com/manuals/message-passing/
|
|
-- Remove this function if not needed
|
|
end
|
|
|
|
local function screen_to_world(x, y, z, camera_id)
|
|
local projection = camera.get_projection(camera_id)
|
|
local view = camera.get_view(camera_id)
|
|
local w, h = window.get_size()
|
|
|
|
-- https://defold.com/manuals/camera/#converting-mouse-to-world-coordinates
|
|
local inv = vmath.inv(projection * view)
|
|
x = (2 * x / w) - 1
|
|
y = (2 * y / h) - 1
|
|
z = (2 * z) - 1
|
|
local x1 = x * inv.m00 + y * inv.m01 + z * inv.m02 + inv.m03
|
|
local y1 = x * inv.m10 + y * inv.m11 + z * inv.m12 + inv.m13
|
|
local z1 = x * inv.m20 + y * inv.m21 + z * inv.m22 + inv.m23
|
|
return x1, y1, z1
|
|
end
|
|
|
|
function on_input(self, action_id, action)
|
|
if action_id == hash("left-click") and action.pressed then
|
|
self.next_state = "moving"
|
|
local tx, ty, _ = screen_to_world(action.screen_x, action.screen_y, 0, "/CameraParent#camera")
|
|
self.target_pos = vmath.vector3(tx, ty, 0)
|
|
elseif action_id == hash("right-click") then
|
|
|
|
end
|
|
end
|
|
|
|
function on_reload(self)
|
|
-- Add reload-handling code here
|
|
-- Learn more: https://defold.com/manuals/hot-reload/
|
|
-- Remove this function if not needed
|
|
end
|