function ParticleController.SetupParticlesPlayer(x)local t=x.Character or x.CharacterAdded:wait()local Z=upgradeParticle:Clone()local o=upgradeCheckpoint:Clone()Z.Parent=t:WaitForChild(particleHolderName)o.Parent=t:WaitForChild(particleHolderName)end function ParticleController.EmitCheckpointParticle(x)local t=x.Character local Z=t:WaitForChild(particleHolderName)local o=Z:WaitForChild("\080\097\114\116\105\099\108\101\067\104\101\099\107\112\111\105\110\116")o:Emit(particleEmitRate)end function ParticleController.CreateUpgradeParticle(t,x)local Z=x.Character or x.CharacterAdded:wait()local o=upgradeCheckpoint:Clone()o.Parent=Z:WaitForChild(particleHolderName)o:Emit(particleEmitRate)end return ParticleController
-- Public Functions
function ParticleController.SetupParticlesPlayer(player)
	local character = player.Character or player.CharacterAdded:wait()

	-- Create all relevant particles TODO: Use a for loop for this instead?
	local _upgradeParticle = upgradeParticle:Clone()
	local _upgradeCheckpoint = upgradeCheckpoint:Clone()

	_upgradeParticle.Parent = character:WaitForChild(particleHolderName)
	_upgradeCheckpoint.Parent = character:WaitForChild(particleHolderName)
end

function ParticleController.EmitCheckpointParticle(player)
	-- Get the particle on the player and make it emit
	local character = player.Character
	local particleHolder = character:WaitForChild(particleHolderName)
	local particleEffect = particleHolder:WaitForChild("ParticleCheckpoint")
	particleEffect:Emit(particleEmitRate)
end

function ParticleController:CreateUpgradeParticle(player)
	local character = player.Character or player.CharacterAdded:wait()
	local particleEffect = upgradeCheckpoint:Clone()
	particleEffect.Parent = character:WaitForChild(particleHolderName)
	particleEffect:Emit(particleEmitRate)
end

return ParticleController
