-
Notifications
You must be signed in to change notification settings - Fork 1
/
MovableAI_Handler_onRotateObject.lua
39 lines (31 loc) · 1.89 KB
/
MovableAI_Handler_onRotateObject.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
--------------------------------------------------------------------------------
-- Handler.......... : onRotateObject
-- Author........... : Wade Tracy
-- Description...... : Code for rotating the object around the Y axis.
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
function MovableAI.onRotateObject ( nPointX, nPointY, nDeltaX, nDeltaY,
nRayPntX, nRayPntY, nRayPntZ, nRayDirX, nRayDirY, nRayDirZ )
--------------------------------------------------------------------------------
local hUser = application.getCurrentUser ( )
-- get the selector and its position
local hSelector = hud.getComponent ( hUser, "hud.Selector" )
local cX, cY = hud.getComponentPosition ( hSelector )
-- Convert the cursor position to HUD coords.
nPointX, nPointY = this.convertHudCoords ( nPointX, nPointY )
-- Calculate the x and y distances from the center of the selector to the current
-- mouse cursor position - use this to calculate the angle of rotation.
local nOpposite = nPointY - cY
local nAdjacent = nPointX - cX
local nRotation = math.atan ( nOpposite / nAdjacent )
-- Tangent has a problem determining a proper angle. atan will always return angles on the
-- right of the y axis - check if x is negative and and 180.
if(nAdjacent < 0) then
nRotation = nRotation + 180
end
-- Rotate the selected object and the selector - seems the HUD rotations are reversed.
object.rotateTo ( this.hObject ( ), 0, nRotation, 0, object.kGlobalSpace, 1 )
hud.setComponentRotation ( hSelector, -nRotation )
--------------------------------------------------------------------------------
end
--------------------------------------------------------------------------------