--[[
	The CameraController runs the core render loop for the client's camera. It is a persistent object, that listens
	to ClientStateUpdate, changing target CFrame as and when needed. It also applies effects upon the camera, as dictated
	by the current camera state
]]

local ReplicatedStorage = game:GetService("ReplicatedStorage")
local Players = game:GetService("Players")

local LocalPlayer = Players.LocalPlayer

local CameraController = {}

local camera = workspace.CurrentCamera

local CameraStates = {
	MENU = require(ReplicatedStorage.Source.CameraStates.CameraStateMenu),
	SPECTATING = require(ReplicatedStorage.Source.CameraStates.CameraStateSpectating)
}

local currentState = {}
