124 lines
		
	
	
		
			No EOL
		
	
	
		
			3 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			124 lines
		
	
	
		
			No EOL
		
	
	
		
			3 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
| -- #region Sub Classes
 | |
| ---@class EchoEffect
 | |
| ---@field Duration integer
 | |
| ---@field Rolloff float
 | |
| ---@field Delay integer
 | |
| EchoEffect = {}
 | |
| EchoEffect.__index = EchoEffect
 | |
| 
 | |
| ---@param duration integer
 | |
| ---@param rolloff number
 | |
| ---@param delay integer
 | |
| ---@return EchoEffect
 | |
| function EchoEffect.new(duration, rolloff, delay)
 | |
|   local self = setmetatable({}, EchoEffect)
 | |
|   self.Duration = duration or 100
 | |
|   self.Rolloff = rolloff or 0.3
 | |
|   self.Delay = delay or 250
 | |
|   return self
 | |
| end
 | |
| -- #endregion
 | |
| 
 | |
| -- #region SelfState
 | |
| ---@class SelfState
 | |
| ---@field Position TSVectorStruc
 | |
| ---@field Rotation number
 | |
| ---@field VoiceRange number
 | |
| ---@field IsAlive boolean
 | |
| ---@field Echo EchoEffect
 | |
| SelfState = {}
 | |
| SelfState.__index = SelfState
 | |
| 
 | |
| function SelfState.new(positiion, rotation, voiceRange, isAlive, echo)
 | |
|   if not echo then echo = false end
 | |
|   local self = setmetatable({}, SelfState)
 | |
|   self.Position = positiion
 | |
|   self.Rotation = rotation
 | |
|   self.VoiceRange = voiceRange
 | |
|   self.IsAlive = isAlive
 | |
| 
 | |
|   if echo then
 | |
|     self.Echo = EchoEffect.new()
 | |
|   end
 | |
| 
 | |
|   return self
 | |
| end
 | |
| -- #endregion
 | |
| 
 | |
| -- #region Sub Classes
 | |
| ---@class MuffleEffect
 | |
| ---@field Intensity integer
 | |
| MuffleEffect = {}
 | |
| MuffleEffect.__index = MuffleEffect
 | |
| 
 | |
| ---@param intensity integer
 | |
| ---@return MuffleEffect
 | |
| function MuffleEffect.new(intensity)
 | |
|   local self = setmetatable({}, MuffleEffect)
 | |
|   self.Intensity = intensity
 | |
|   return self
 | |
| end
 | |
| -- #endregion
 | |
| 
 | |
| -- #region PlayerState
 | |
| ---@class PlayerState
 | |
| ---@field Name string
 | |
| ---@field Position TSVectorStruc
 | |
| ---@field VoiceRange number
 | |
| ---@field IsAlive boolean
 | |
| ---@field VolumeOverride number?
 | |
| ---@field DistanceCulled boolean
 | |
| ---@field Muffle MuffleEffect
 | |
| PlayerState = {}
 | |
| PlayerState.__index = PlayerState
 | |
| 
 | |
| ---@param name string
 | |
| ---@param position vector3
 | |
| ---@param voiceRange number
 | |
| ---@param isAlive boolean
 | |
| ---@param volumeOverride number
 | |
| ---@param distanceCulled boolean
 | |
| ---@param muffleIntensity integer?
 | |
| ---@return PlayerState
 | |
| function PlayerState.new(name, position, voiceRange, isAlive, distanceCulled, muffleIntensity, volumeOverride)
 | |
|   local self = setmetatable({}, PlayerState)
 | |
|   self.Name = name;
 | |
|   self.Position = position
 | |
|   self.VoiceRange = voiceRange or nil;
 | |
|   self.IsAlive = isAlive or nil;
 | |
|   self.DistanceCulled = distanceCulled or false;
 | |
| 
 | |
|   if volumeOverride then
 | |
|     if volumeOverride > 1.6 then
 | |
|       self.VolumeOverride = 1.6
 | |
|     elseif volumeOverride < 0.0 then
 | |
|       self.VolumeOverride = 0.0
 | |
|     else
 | |
|       self.VolumeOverride = volumeOverride
 | |
|     end
 | |
|   end
 | |
| 
 | |
|   if muffleIntensity then
 | |
|     self.Muffle = MuffleEffect.new(muffleIntensity)
 | |
|   end
 | |
|   return self
 | |
| end
 | |
| -- #endregion
 | |
| 
 | |
| -- #region BulkUpdate
 | |
| ---@class BulkUpdate
 | |
| ---@field PlayerStates PlayerState[]
 | |
| ---@field SelfState SelfState
 | |
| BulkUpdate = {}
 | |
| BulkUpdate.__index = BulkUpdate
 | |
| 
 | |
| ---@param playerStates PlayerState[]
 | |
| ---@param selfState SelfState
 | |
| ---@return BulkUpdate
 | |
| function BulkUpdate.new(playerStates, selfState)
 | |
|   local self = setmetatable({}, BulkUpdate)
 | |
|   self.PlayerStates = playerStates
 | |
|   self.SelfState = selfState
 | |
|   return self
 | |
| end
 | |
| -- #endregion | 
