mirror of
https://github.com/unixtensor/Roblox-Elevator-Game.git
synced 2025-12-14 14:51:55 +00:00
rename everything to .luau extension
This commit is contained in:
102
src/shared/Client/Camera.luau
Normal file
102
src/shared/Client/Camera.luau
Normal file
@@ -0,0 +1,102 @@
|
||||
--!optimize 2
|
||||
--!native
|
||||
--!strict
|
||||
|
||||
local Camera = {}
|
||||
Camera.__index = Camera
|
||||
|
||||
Camera.FOV = {
|
||||
Default = 70,
|
||||
Zoomed = 30,
|
||||
}
|
||||
Camera.FOV.Speed = {
|
||||
In = 0.3,
|
||||
Out = 0.4
|
||||
}
|
||||
Camera.VignetteEnabled = true
|
||||
Camera.CrosshairEffect = true
|
||||
Camera.EffectsEase = Enum.EasingStyle.Quad
|
||||
|
||||
local Storage = game:GetService("ReplicatedStorage")
|
||||
|
||||
local Tween = require(Storage:WaitForChild("Tween"))
|
||||
|
||||
local ZoomTween = Tween.constructor()
|
||||
local VignetteTween = Tween.constructor()
|
||||
|
||||
function Camera.constructor(CurrentCamera: Camera, Player: Player)
|
||||
return setmetatable({
|
||||
Camera = CurrentCamera,
|
||||
Player = Player,
|
||||
}, Camera)
|
||||
end
|
||||
|
||||
function Camera:FirstPerson()
|
||||
self.Player.CameraMode = Enum.CameraMode.LockFirstPerson
|
||||
end
|
||||
|
||||
function Camera:ThirdPerson()
|
||||
self.Player.CameraMode = Enum.CameraMode.Classic
|
||||
end
|
||||
|
||||
--damn...
|
||||
type Vignette = any
|
||||
type Crosshair = any
|
||||
|
||||
function Camera:ZoomIn(Vignette: Vignette?, Crosshair: Crosshair?)
|
||||
ZoomTween:Start(self.Camera, {
|
||||
FieldOfView = Camera.FOV.Zoomed
|
||||
}, TweenInfo.new(Camera.FOV.Speed.In, Camera.EffectsEase))
|
||||
|
||||
if Camera.VignetteEnabled then
|
||||
if Vignette then
|
||||
Vignette.Screen.Enabled = true
|
||||
|
||||
VignetteTween:Start(Vignette.Icon, {
|
||||
ImageTransparency = 0
|
||||
}, TweenInfo.new(Camera.FOV.Speed.In, Camera.EffectsEase))
|
||||
else
|
||||
warn("Camera: no Vignette object was provided for the camera", debug.traceback())
|
||||
end
|
||||
end
|
||||
|
||||
if Camera.CrosshairEffect then
|
||||
if Crosshair then
|
||||
VignetteTween:Start(Crosshair.Icon, {
|
||||
ImageTransparency = .9
|
||||
}, TweenInfo.new(Camera.FOV.Speed.In, Camera.EffectsEase))
|
||||
else
|
||||
warn("Camera: no Crosshair object was provided for the camera", debug.traceback())
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function Camera:ZoomOut(Vignette: Vignette?, Crosshair: Crosshair?)
|
||||
ZoomTween:Start(self.Camera, {
|
||||
FieldOfView = Camera.FOV.Default
|
||||
}, TweenInfo.new(Camera.FOV.Speed.Out, Camera.EffectsEase))
|
||||
|
||||
if Camera.VignetteEnabled then
|
||||
if Vignette then
|
||||
Vignette.Screen.Enabled = true
|
||||
|
||||
VignetteTween:Start(Vignette.Icon, {
|
||||
ImageTransparency = 1
|
||||
}, TweenInfo.new(Camera.FOV.Speed.Out, Camera.EffectsEase))
|
||||
else
|
||||
warn("Camera: no Vignette object was provided for the camera", debug.traceback())
|
||||
end
|
||||
end
|
||||
|
||||
if Camera.CrosshairEffect then
|
||||
if Crosshair then
|
||||
VignetteTween:Start(Crosshair.Icon, {
|
||||
ImageTransparency = 0
|
||||
}, TweenInfo.new(Camera.FOV.Speed.In, Camera.EffectsEase))
|
||||
else
|
||||
warn("Camera: no Crosshair object was provided for the camera", debug.traceback())
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return Camera
|
||||
Reference in New Issue
Block a user