local s=(require(((game:GetService("\082\101\112\108\105\099\097\116\101\100\083\116\111\114\097\103\101")):WaitForChild("\083\099\114\105\112\116\115")):WaitForChild("\067\111\110\115\111\108\101"))).sourced("\080\108\097\121\101\114 \077\111\100\117\108\101")s.log("\076\111\097\100\105\110\103 \100\101\112\101\110\100\101\110\099\105\101\115\046\046\046")local U=require(script:WaitForChild("\067\097\109\101\114\097\077\111\100\117\108\101"))local g=require(script:WaitForChild("\067\111\110\116\114\111\108\077\111\100\117\108\101"))s.log("\073\110\105\116\105\097\108\105\122\105\110\103 \118\097\114\105\097\098\108\101\115\046\046\046")local L={}local P s.log("\067\111\110\115\116\114\117\099\116\105\110\103 \111\098\106\101\099\116\115\046\046\046")L.__index=L function L.new()if P==nil then local s=setmetatable({},L)s.Cameras=U s.Controls=g P=s end return P end s.log("\068\111\110\101\046")return L.new()
--- The main player module.
-- A singleton object responsible for initializing and providing access to
-- other client singletons, namely the ControlModule and CameraModule.
--
-- @author LastTalon
-- @version 0.1.0, 2020-04-28
-- @since 0.1
--
-- @module ControlModule
-- @field Cameras the CameraModule singleton
-- @field Controls the ControlModule singleton

local Console = require(game:GetService("ReplicatedStorage"):WaitForChild("Scripts"):WaitForChild("Console")).sourced("Player Module")

-- Dependencies --
Console.log("Loading dependencies...")

local Cameras = require(script:WaitForChild("CameraModule"))
local Controls = require(script:WaitForChild("ControlModule"))

-- Variables --
Console.log("Initializing variables...")

local PlayerModule = {}
local instance

-- Local Objects --
Console.log("Constructing objects...")

PlayerModule.__index = PlayerModule

--- The contructor for the singleton.
-- Creates a new singleton if none exists. Always returns the same object
-- initially created.
--
-- @return the singleton
function PlayerModule.new()
	if instance == nil then
		local self = setmetatable({}, PlayerModule)
		self.Cameras = Cameras
		self.Controls = Controls
		instance = self
	end
	return instance
end

-- End --
Console.log("Done.")

return PlayerModule.new()
