added more samples/tests and scripts
This commit is contained in:
@@ -0,0 +1,71 @@
|
||||
-- This script will play a camera animation chain from "cam0" -to "camN" named camera proxies in the scene
|
||||
-- To use this, first place four cameras into the scene and name them cam0, cam1, cam2 and cam3, then press F8 to start
|
||||
-- The animation will repeat infinitely, but it will cut from last to first proxy at the end
|
||||
|
||||
-- Get the main camera:
|
||||
local cam = GetCamera()
|
||||
|
||||
-- This will be the transform that we grab the camera by:
|
||||
local target = TransformComponent()
|
||||
|
||||
-- Get the main scene:
|
||||
local scene = GetScene()
|
||||
|
||||
-- Camera speed overridable from outer scope too:
|
||||
scriptableCameraSpeed = 0.4
|
||||
|
||||
-- Animation state:
|
||||
local tt = 0.0
|
||||
local play = false
|
||||
local rot = 0
|
||||
|
||||
-- Gather camera proxy entities in the scene from "cam0" to "cam1", "cam2", ... "camN":
|
||||
local proxies={}
|
||||
local it = 0
|
||||
while true do
|
||||
local entity = scene.Entity_FindByName("cam" .. it)
|
||||
if(entity == INVALID_ENTITY) then
|
||||
break
|
||||
end
|
||||
it = it + 1
|
||||
proxies[it] = entity
|
||||
end
|
||||
|
||||
runProcess(function()
|
||||
while true do
|
||||
|
||||
if(input.Press(VK_F8)) then
|
||||
-- Reset animation:
|
||||
tt = 0.0
|
||||
play = not play
|
||||
rot = 0
|
||||
end
|
||||
if(play) then
|
||||
-- Play animation:
|
||||
local count = len(proxies)
|
||||
|
||||
-- Place main camera on spline:
|
||||
local a = scene.Component_GetTransform(proxies[(rot - 1) % count + 1])
|
||||
local b = scene.Component_GetTransform(proxies[rot % count + 1])
|
||||
local c = scene.Component_GetTransform(proxies[(rot + 1) % count + 1])
|
||||
local d = scene.Component_GetTransform(proxies[(rot + 2) % count + 1])
|
||||
target.CatmullRom(a, b, c, d, tt)
|
||||
target.UpdateTransform()
|
||||
cam.UpdateCamera(target)
|
||||
|
||||
-- Advance animation state:
|
||||
tt = tt + scriptableCameraSpeed * getDeltaTime()
|
||||
if(tt >= 1.0) then
|
||||
tt = 0.0
|
||||
rot = rot + 1
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
-- Wait for render() tick from Engine
|
||||
-- We should wait for update() normally, but Editor tends to update the camera already from update()
|
||||
-- and it would overridethe scrips...
|
||||
render()
|
||||
|
||||
end
|
||||
end)
|
||||
Reference in New Issue
Block a user