Skip to content

Commit f26962c

Browse files
committed
Fixed up contributed 3D physics examples in Lua
1 parent 5346627 commit f26962c

File tree

7 files changed

+67
-93
lines changed

7 files changed

+67
-93
lines changed
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
<?xml version="1.0" ?>
22
<PolycodeProject defaultWidth="640" defaultHeight="480" antiAliasingLevel="0" entryPoint="Scripts/Main.lua" textureFiltering="linear" vSync="false" anisotropyLevel="0" frameRate="60">
33
<backgroundColor red="0.25" green="0.25" blue="0.25" />
4-
<packedItems>
4+
<polyarray:packedItems>
55
<item type="folder" path="Resources" />
66
<item type="folder" path="Scripts" />
7-
</packedItems>
7+
</polyarray:packedItems>
88
</PolycodeProject>

Examples/Lua/3D_Physics/3DPhysics_Basic/Scripts/Main.lua

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,4 @@ for i = 1, 100 do
1414
end
1515

1616
scene:getDefaultCamera():setPosition(7, 7, 7)
17-
scene:getDefaultCamera():lookAt(Vector3(0, 0, 0), Vector3(1, 1, 1))
17+
scene:getDefaultCamera():lookAt(Vector3(0, 0, 0), Vector3(0, 1, 0))

Examples/Lua/3D_Physics/3DPhysics_Character/Scripts/Main.lua

Lines changed: 22 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -45,41 +45,31 @@ hud:addChild(onGroundLabel)
4545

4646

4747
scene:getDefaultCamera():setPosition(7, 7, 7)
48-
scene:getDefaultCamera():lookAt(Vector3(0, 0, 0), Vector3(1, 1, 1))
49-
50-
function handleKeyEvent(t, e)
51-
if not e:getDispatcher() == CoreServices.getInstance():getCore():getInput() then return end
52-
53-
local inputEvent = safe_cast(e, InputEvent)
54-
55-
local eventKeyCode = e:getEventCode()
56-
if eventKeyCode == InputEvent.EVENT_KEYDOWN then
57-
local keyCode = inputEvent:keyCode()
58-
59-
if keyCode == KEY_r then
60-
playerController:warpCharacter(Vector3(2, 1, 2))
61-
elseif keyCode == KEY_UP then
62-
walkSpeed = 0.05
63-
elseif keyCode == KEY_DOWN then
64-
walkSpeed = -0.05
65-
elseif keyCode == KEY_LEFT then
66-
rotateSpeed = 3
67-
elseif keyCode == KEY_RIGHT then
68-
rotateSpeed = -3
69-
elseif keyCode == KEY_SPACE then
70-
playerController:jump()
71-
end
72-
elseif eventKeyCode == InputEvent.EVENT_KEYUP then
73-
if inputEvent.key == KEY_DOWN then
74-
walkSpeed = 0
75-
elseif inputEvent.key == KEY_RIGHT then
76-
rotateSpeed = 0
77-
end
48+
scene:getDefaultCamera():lookAt(Vector3(0, 0, 0), Vector3(0, 1, 0))
49+
50+
function onKeyDown(keyCode)
51+
if keyCode == KEY_r then
52+
playerController:warpCharacter(Vector3(2, 1, 2))
53+
elseif keyCode == KEY_UP then
54+
walkSpeed = 0.05
55+
elseif keyCode == KEY_DOWN then
56+
walkSpeed = -0.05
57+
elseif keyCode == KEY_LEFT then
58+
rotateSpeed = 3
59+
elseif keyCode == KEY_RIGHT then
60+
rotateSpeed = -3
61+
elseif keyCode == KEY_SPACE then
62+
playerController:jump()
7863
end
7964
end
8065

81-
CoreServices.getInstance():getCore():getInput():addEventListener(nil, handleKeyEvent, InputEvent.EVENT_KEYDOWN)
82-
CoreServices.getInstance():getCore():getInput():addEventListener(nil, handleKeyEvent, InputEvent.EVENT_KEYUP)
66+
function onKeyUp(keyCode)
67+
if keyCode == KEY_DOWN or keyCode == KEY_UP then
68+
walkSpeed = 0
69+
elseif keyCode == KEY_RIGHT or keyCode == KEY_LEFT then
70+
rotateSpeed = 0
71+
end
72+
end
8373

8474
function Update(elapsed)
8575
playerDirection = playerDirection + rotateSpeed * elapsed

Examples/Lua/3D_Physics/3DPhysics_CollisionOnly/Scripts/Main.lua

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ scene:addCollisionChild(bigBox, CollisionEntity.SHAPE_BOX)
1717

1818

1919
scene:getDefaultCamera():setPosition(7, 7, 7)
20-
scene:getDefaultCamera():lookAt(Vector3(0, 0, 0), Vector3(1, 1, 1))
20+
scene:getDefaultCamera():lookAt(Vector3(0, 0, 0), Vector3(0, 1, 0))
2121

2222
local swingValue = 0
2323

@@ -26,7 +26,7 @@ function Update(elapsed)
2626
box:setPosition(math.sin(swingValue) * 5, 1, 0)
2727

2828
if scene:testCollision(box, bigBox).collided then
29-
bigBox:setColor(1, 1, 0, 0)
29+
bigBox:setColor(1, 1, 0, 0.5)
3030
else
3131
bigBox:setColor(0, 1, 1, 0.5)
3232
end

Examples/Lua/3D_Physics/3DPhysics_Contacts/Scripts/Main.lua

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,13 @@ for i = 1, 100 do
1616
end
1717

1818
scene:getDefaultCamera():setPosition(7, 7, 7)
19-
scene:getDefaultCamera():lookAt(Vector3(0, 0, 0), Vector3(1, 1, 1))
19+
scene:getDefaultCamera():lookAt(Vector3(0, 0, 0), Vector3(0, 1, 0))
2020

2121
collisionSound = Sound("Resources/hit.wav")
2222

2323
function onCollisionEvent(t, event)
24-
if not event:getDispatcher() == scene then return end
25-
26-
if safe_cast(event, PhysicsSceneEvent).physEvent.appliedImpulse > 2 then
24+
local physEvent = safe_cast(event, PhysicsSceneEvent)
25+
if physEvent.appliedImpulse > 2 then
2726
collisionSound:Play()
2827
end
2928
end

Examples/Lua/3D_Physics/3DPhysics_RayTest/Scripts/Main.lua

Lines changed: 11 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -28,26 +28,20 @@ scene:addCollisionChild(cylinder, CollisionEntity.SHAPE_CYLINDER)
2828

2929

3030
scene:getDefaultCamera():setPosition(7, 7, 7)
31-
scene:getDefaultCamera():lookAt(Vector3(0, 0, 0), Vector3(1, 1, 1))
31+
scene:getDefaultCamera():lookAt(Vector3(0, 0, 0), Vector3(0, 1, 0))
3232

3333
local lastEntity = nil
34-
function mouseDownEvent(t, e)
35-
if not e:getDispatcher() == CoreServices.getInstance():getCore():getInput() then return end
3634

37-
local inputEvent = safe_cast(e, InputEvent)
35+
function onMouseDown(button, x, y)
36+
local ray = scene:projectRayFromCameraAndViewportCoordinate(scene:getActiveCamera(), Vector2(x,y))
37+
local res = scene:getFirstEntityInRay(ray.origin, Vector3(ray.direction.x * 100, ray.direction.y * 100, ray.direction.z * 100))
3838

39-
if e:getEventCode() == InputEvent.EVENT_MOUSEDOWN then
40-
local ray = scene:projectRayFromCameraAndViewportCoordinate(scene:getActiveCamera(), inputEvent.mousePosition)
41-
local res = scene:getFirstEntityInRay(ray.origin, Vector3(ray.direction.x * 100, ray.direction.y * 100, ray.direction.z * 100))
42-
43-
if lastEntity then
44-
lastEntity:setColor(1, 1, 1, 1)
45-
end
39+
if lastEntity then
40+
lastEntity:setColor(1, 1, 1, 1)
41+
end
4642

47-
if res.entity then
48-
res.entity:setColor(1, 0, 0, 1)
49-
lastEntity = res.entity
43+
if res.entity then
44+
res.entity:setColor(1, 0, 0, 1)
45+
lastEntity = res.entity
5046
end
51-
end
52-
end
53-
CoreServices.getInstance():getCore():getInput():addEventListener(nil, mouseDownEvent, InputEvent.EVENT_MOUSEDOWN)
47+
end

Examples/Lua/3D_Physics/3DPhysics_Vehicle/Scripts/Main.lua

Lines changed: 26 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,14 @@ scene:addPhysicsChild(ground, 0, 0)
77
-- Some obstacles
88
local box = ScenePrimitive(ScenePrimitive.TYPE_BOX, 4,4,6)
99
box:setPitch(25)
10-
box:setPosition(7, -15, 0)
10+
box:setPosition(7, -1, 0)
1111
box:setColor(0.5, 0.5, 1,1)
1212
box:loadTexture("Resources/green_texture.png")
1313
scene:addPhysicsChild(box, 0, 0)
1414

1515
box = ScenePrimitive(ScenePrimitive.TYPE_BOX, 4, 4, 6)
1616
box:setPitch(25)
17-
box:setPosition(-7,-15, 0)
17+
box:setPosition(-7, -1, 0)
1818
box:setColor(0.5,0.5,1,1)
1919
box:loadTexture("Resources/green_texture.png")
2020
scene:addPhysicsChild(box, 0, 0)
@@ -77,42 +77,33 @@ scene:addCollisionChild(testBox, 0)
7777

7878

7979
scene:getDefaultCamera():setPosition(16, 16, 16)
80-
scene:getDefaultCamera():lookAt(Vector3(0, 0, 0), Vector3(1, 1, 1))
80+
scene:getDefaultCamera():lookAt(Vector3(0, 0, 0), Vector3(0, 1, 0))
81+
82+
function onKeyDown(keyCode)
83+
if keyCode == KEY_r then
84+
vehicleController:warpVehicle(Vector3(6,1,5))
85+
elseif keyCode == KEY_UP then
86+
engineForce = -15
87+
elseif keyCode == KEY_DOWN then
88+
engineForce = 15
89+
elseif keyCode == KEY_LEFT then
90+
steeringValue = 0.5
91+
elseif keyCode == KEY_RIGHT then
92+
steeringValue = -0.5
93+
elseif keyCode == KEY_SPACE then
94+
breaking = true
95+
end
96+
end
8197

82-
local function handleKeyEvent(t, e)
83-
if not e:getDispatcher() == CoreServices.getInstance():getCore():getInput() then return end
84-
85-
local inputEvent = safe_cast(e, InputEvent)
86-
87-
local eventKeyCode = e:getEventCode()
88-
if eventKeyCode == InputEvent.EVENT_KEYDOWN then
89-
local keyCode = inputEvent:keyCode()
90-
91-
if keyCode == KEY_r then
92-
vehicleController:warpVehicle(Vector3(6,1,5))
93-
elseif keyCode == KEY_UP then
94-
engineForce = -15
95-
elseif keyCode == KEY_DOWN then
96-
engineForce = 15
97-
elseif keyCode == KEY_LEFT then
98-
steeringValue = 0.5
99-
elseif keyCode == KEY_RIGHT then
100-
steeringValue = -0.5
101-
elseif keyCode == KEY_SPACE then
102-
breaking = true
103-
end
104-
elseif eventKeyCode == InputEvent.EVENT_KEYUP then
105-
if inputEvent.key == KEY_DOWN then
106-
engineForce = 0
107-
elseif inputEvent.key == KEY_RIGHT then
108-
steeringValue = 0
109-
elseif inputEvent.key == KEY_SPACE then
110-
breaking = false
111-
end
98+
function onKeyUp(keyCode)
99+
if keyCode == KEY_DOWN or keyCode == KEY_UP then
100+
engineForce = 0
101+
elseif keyCode == KEY_RIGHT or keyCode == KEY_LEFT then
102+
steeringValue = 0
103+
elseif keyCode == KEY_SPACE then
104+
breaking = false
112105
end
113106
end
114-
CoreServices.getInstance():getCore():getInput():addEventListener(nil, handleKeyEvent, InputEvent.EVENT_KEYDOWN)
115-
CoreServices.getInstance():getCore():getInput():addEventListener(nil, handleKeyEvent, InputEvent.EVENT_KEYUP)
116107

117108
function Update(elapsed)
118109

0 commit comments

Comments
 (0)