Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 24 additions & 2 deletions dynacam.lua
Original file line number Diff line number Diff line change
Expand Up @@ -310,7 +310,16 @@ local function enterFrame(event) -- Do not refactor! performance is better
focusRotationY = mathCos(radAngle) * values.currentY
rotationY = mathSin(radAngle) * values.currentX
finalY = (-rotationY - focusRotationY) * values.zoom


-- Shake Camera
if camera.values.shakeFrames > 0 then
if camera.values.shakeFrames % 2 == 1 then
finalX = finalX + (math.random(camera.values.shakeIntensity) - (camera.values.shakeIntensity/2))*(camera.values.shakeFrames/100)
finalY = finalY + (math.random(camera.values.shakeIntensity) - (camera.values.shakeIntensity/2))*(camera.values.shakeFrames/100)
end
camera.values.shakeFrames = camera.values.shakeFrames - 1
end

-- Apply x and y
camera.diffuseView.x = finalX
camera.diffuseView.y = finalY
Expand Down Expand Up @@ -503,6 +512,13 @@ local function cameraSetFocus(self, object, options)
self.values.trackRotation = trackRotation
end

local function cameraShake(self, frames, intensity)
if intensity > 1 then
self.values.shakeFrames = frames or 0
self.values.shakeIntensity = intensity or 16
end
end

local function finalizeCamera(event)
local camera = event.target

Expand Down Expand Up @@ -816,7 +832,11 @@ function dynacam.newCamera(options)
debug = false,

-- Buffer scaling
lightBufferScale = options.lightBufferScale or 1
lightBufferScale = options.lightBufferScale or 1,

-- Shake
shakeFrames = 0,
shakeIntensity = 16
}

setDimensions(camera, options)
Expand Down Expand Up @@ -857,6 +877,8 @@ function dynacam.newCamera(options)
camera.setFocus = cameraSetFocus
camera.removeFocus = cameraRemoveFocus
camera.toPoint = cameraToPoint

camera.shake = cameraShake

camera.addListenerObject = cameraAddListenerObject

Expand Down