Files
Roblox-Elevator-Game/src/client/Player/Character/Camera/init.lua

64 lines
2.0 KiB
Lua

--!optimize 2
--!native
--!strict
local Bobbing = require(script:WaitForChild("Bobbing"))
type FakeCamera = BasePart
type CurrentCamera = Camera
type HumanoidRootPart = BasePart
type Module = any
type ClassConstructor = typeof(setmetatable({} :: Constructor_Return_Props, {} :: Impl_Constructor))
type Impl_Constructor = {
__index: Impl_Constructor,
constructor: Constructor_Fun,
--Class functions
EnableBobbing: (self: ClassConstructor) -> (),
DisableBobbing: (self: ClassConstructor) -> ()
}
type Constructor_Fun = (CurrentCamera: CurrentCamera, HumanoidRootPart: HumanoidRootPart, Humanoid: Humanoid) -> ClassConstructor
type Constructor_Return_Props = {
CameraFPS: boolean,
CurrentCamera: CurrentCamera,
HumanoidRootPart: HumanoidRootPart,
BobbingCamera: Bobbing.BobbingConstructor
}
local Camera = {} :: Impl_Constructor
Camera.__index = Camera
local RS = game:GetService("RunService")
function Camera.constructor(CurrentCamera: CurrentCamera, HumanoidRootPart: HumanoidRootPart, Humanoid: Humanoid)
local self = {}
self.CameraFPS = false
self.CurrentCamera = CurrentCamera
self.HumanoidRootPart = HumanoidRootPart
self.BobbingCamera = Bobbing.constructor(HumanoidRootPart, CurrentCamera, Humanoid)
return setmetatable(self, Camera)
end
function Camera:EnableBobbing()
if not self.CameraFPS then
RS:BindToRenderStep("CameraAnimations", Enum.RenderPriority.Camera.Value+1, function(dt)
self.BobbingCamera:Frame(dt)
end)
self.CameraFPS = true
else
print("Character Camera: Cannot call EnableBobbing while its active", debug.traceback())
end
end
function Camera:DisableBobbing()
if self.CameraFPS then
RS:UnbindFromRenderStep("CameraAnimations")
self.CameraFPS = false
else
print("Character Camera: DisableBobbing was called before EnableBobbing", debug.traceback())
end
self.CurrentCamera.CFrame *= CFrame.Angles(0,0,0)
end
return Camera