--- Initializes the `const` table with the `const.` prefix. --- --- This code is executed only on the first load of the script. It sets up the `const` table --- with a metatable that tracks reads and writes to the constants, and ensures that constants --- are not read before they are defined. --- --- @function SetupVarTable --- @param const table The `const` table to initialize. --- @param prefix string The prefix to use for the `const` table. if FirstLoad then SetupVarTable(const, "const.") end ----- track const use before definition --[[ const_read = {} AllowConstRead = true function OnMsg.ReloadLua() AllowConstRead = false end if FirstLoad then local function get_caller_info() local info = debug.getinfo(3, "Sl") if info.short_src == "CommonLua/Core/ConstDef.lua" then -- DefineConst function info = debug.getinfo(4, "Sl") end return string.format("%s(%d)", info.short_src or "???", info.currentline or 0) end local function const_eq(c1, c2) if type(c2) ~= "table" then return c1 == c2 end local s1, s2 = pstr("", 1024), pstr("", 1024) s1:appendv(c1) s2:appendv(c2) return s1 == s2 or s1 == "nil" and s2 == "{}" end local org_const = const local engine_const = { SlabSizeX = true, SlabSizeY = true, SlabSizeZ = true } const = setmetatable({}, { __index = function (_, key) const_read[key] = get_caller_info() if not AllowConstRead and not engine_const[key] then print("Const read before consts are ready", const_read[key]) end return org_const[key] end, __newindex = function (_, key, value) if const_read[key] then local info = get_caller_info() if const_read[key] == info then -- print("Read-write of const", key, info) const_read[key] = nil -- remove the read, this was a read-write (default value) elseif not const_eq(org_const[key], value) then print("const", key, "last used at", const_read[key], "changed at", info) end end org_const[key] = value end }) end --]] --- The default fallback size for various UI elements. const.FallbackSize = 64 --- Checks if the application is running in command-line mode. -- If the application is running in command-line mode, this function will return and skip the rest of the code. -- @return true if the application is running in command-line mode, false otherwise. if Platform.cmdline then return end --- Defines a set of common scale factors used throughout the codebase. -- The scale factors are defined as follows: -- - `m`: Meters, the base unit of length. -- - `cm`: Centimeters, 1/100th of a meter. -- - `voxelSizeX`: The size of a voxel in the X dimension. -- - `deg`: Degrees, a unit of angle measurement. -- - `sec`: Seconds, a unit of time measurement. -- - `%`: Percentage, a unit of relative measurement. -- - `‰`: Per mille, a unit of relative measurement. const.Scale = {m=guim, cm=guic, voxelSizeX=const.SlabSizeX, deg=60, sec=1000, ["%"]=1, ["‰"]=1} --- The maximum index value for game objects in a collection. -- This constant represents the maximum index value that can be used to reference a game object in a collection. -- It is defined as 0x0fff, which is a hexadecimal value of 4095 in decimal. -- This limit is likely in place to ensure efficient indexing and storage of game objects in collections. const.GameObjectMaxCollectionIndex = 0x0fff --- The maximum radius for game objects in the game world. -- This constant represents the maximum radius that a game object can have in the game world. -- It is defined as 60 meters, which is a common unit of measurement used in the game. -- This limit is likely in place to ensure efficient collision detection and other game mechanics that rely on the size of game objects. const.GameObjectMaxRadius = 60 * guim --- The default mouse cursor image to use. -- This constant specifies the file path to the default mouse cursor image that should be used in the application. -- The cursor image is located at "CommonAssets/UI/cursor.tga". const.DefaultMouseCursor = "CommonAssets/UI/cursor.tga" --- Defines a set of common RGB color constants used throughout the codebase. -- @field red The color red, represented as an RGB value of (255, 0, 0). -- @field green The color green, represented as an RGB value of (0, 255, 0). -- @field blue The color blue, represented as an RGB value of (0, 0, 255). -- @field black The color black, represented as an RGB value of (0, 0, 0). -- @field white The color white, represented as an RGB value of (255, 255, 255). -- @field yellow The color yellow, represented as an RGB value of (255, 255, 0). -- @field purple The color purple, represented as an RGB value of (128, 0, 128). -- @field magenta The color magenta, represented as an RGB value of (255, 0, 255). -- @field orange The color orange, represented as an RGB value of (255, 165, 0). -- @field cyan The color cyan, represented as an RGB value of (0, 255, 255). red = RGB(255, 0, 0) green = RGB(0, 255, 0) blue = RGB(0, 0, 255) black = RGB(0, 0, 0) white = RGB(255, 255, 255) yellow = RGB(255, 255, 0) purple = RGB(128, 0, 128) magenta = RGB(255, 0, 255) orange = RGB(255, 165, 0) cyan = RGB(0, 255, 255) --- Defines a table of colors to be used for hyperlinks. -- This table is currently empty, but can be used to store color values for hyperlinks throughout the codebase. const.HyperlinkColors = {} --- Defines a table of predefined scene actors. -- This table is currently empty, but can be used to store references to predefined scene actors that can be used throughout the codebase. const.PredefinedSceneActors = {} --- The default sharpness value used for the camera editor. -- This constant specifies the default sharpness value that should be used for the camera editor feature. -- The sharpness value affects the visual clarity and focus of the camera view in the editor. -- This default value of 10 can be overridden by the user or other parts of the codebase as needed. const.CameraEditorDefaultSharpness = 10 --- The duration in milliseconds for interface animations. -- This constant specifies the default duration in milliseconds for interface animations throughout the application. -- This value can be used to ensure consistent animation timing across different UI elements and interactions. const.InterfaceAnimDuration = 100 -- cutscene light model overrides --- The near Z-plane value used for cutscene cameras. -- This constant specifies the near Z-plane value that should be used for cutscene cameras in the application. -- The near Z-plane value determines the minimum distance from the camera that objects will be rendered. -- Setting this value to 20 ensures that objects close to the camera are properly rendered during cutscenes. const.CutsceneNearZ = 20 -- Camera Shake System --- Defines constants related to camera shake behavior in the application. -- -- @field CameraClipExtendRadius The radius around the camera that should be used to extend the camera clip plane when the camera is shaking. -- @field CameraShakeFOV The field of view angle (in degrees) that should be used for the camera when it is shaking. -- @field ShakeRadiusInSight The maximum distance from the camera shake origin that the camera will shake if the origin is visible (in front of the camera). -- @field ShakeRadiusOutOfSight The maximum distance from the camera shake origin that the camera will shake if the origin is not visible (behind the camera). -- @field MaxShakeOffset The maximum offset (in units) that the camera can be shaken. -- @field MaxShakeRoll The maximum roll (in degrees) that the camera can be shaken. -- @field MaxShakeDuration The maximum duration (in milliseconds) of the camera shake effect at maximum power. -- @field MinShakeDuration The minimum duration (in milliseconds) of the camera shake effect at minimum power. -- @field ShakeTick The frequency (in milliseconds) at which the camera shake waves are updated. -- @field MaxShakePower The maximum power of the camera shake effect. const.CameraClipExtendRadius = 20 * guic const.CameraShakeFOV = 120 * 60 const.ShakeRadiusInSight = 30 * guim -- the max dist the camera would shake if the shake origin is visible(in front of camera) const.ShakeRadiusOutOfSight = 10 * guim -- the max dist the camera would shake if the shake origin is not visible(behind the camera) const.MaxShakeOffset = 3 * guic -- the shake offset at max power const.MaxShakeRoll = 15 -- the shake roll at max power const.MaxShakeDuration = 700 -- the duration of the shake effect at max power const.MinShakeDuration = 300 -- the duration of the shake effect at min power const.ShakeTick = 25 -- the frequency of the shake waves, in ms const.MaxShakePower = 1000 --- The radius (in meters) around particle handles that should be toggled when the particle handles are toggled on or off. -- This constant is used to determine the area of effect for the particle handle toggle functionality. const.ParticleHandlesToggleRadius = 10 const.ParticleHandlesToggleRadius = 10 -- in meters --- The distance (in meters) from the near plane that the animation moments tool object should be positioned. -- This constant is used to ensure that the animation moments tool object is positioned at the appropriate distance from the camera's near plane, providing a clear view of the object during animation editing. const.AnimMomentsToolObjDistToNearPlane = 8 const.AnimMomentsToolObjDistToNearPlane = 8 -- in meters --- The default time factor used for time-based calculations and animations throughout the application. -- This constant specifies the default time factor, which is used to scale the passage of time for various time-based operations. A value of 1000 means that 1 second of real-time corresponds to 1000 milliseconds of game time. -- -- @field DefaultTimeFactor The default time factor value. -- --- The minimum allowed time factor value. -- This constant specifies the minimum value that the time factor can be set to. This helps prevent the game from running too slowly or becoming unresponsive. -- -- @field MinTimeFactor The minimum allowed time factor value. -- --- The maximum allowed time factor value. -- This constant specifies the maximum value that the time factor can be set to. This helps prevent the game from running too quickly and becoming uncontrollable. -- -- @field MaxTimeFactor The maximum allowed time factor value. -- --- The maximum "sane" time factor value. -- This constant specifies the maximum time factor value that is considered "sane" or reasonable for normal gameplay. Values higher than this may cause issues or unintended behavior. -- -- @field MaxSaneTimeFactor The maximum "sane" time factor value. const.DefaultTimeFactor = 1000 const.MinTimeFactor = 10 const.MaxTimeFactor = 1000000 const.MaxSaneTimeFactor = 100000 -- in ms * 0.001 --- The time interval (in seconds) at which the camera controller state is updated. -- This constant specifies the frequency at which the camera controller state is updated, which affects the responsiveness and smoothness of camera movements. -- --- Determines whether the mouse can be used to rotate the camera. -- If this constant is set to `true`, the mouse can be used to rotate the camera. If set to `false`, the mouse cannot be used to rotate the camera. const.CameraControllerStateUpdateTime = "0.5" const.mouse_rotates_camera = false --- A table of vendor IDs for common hardware vendors. -- This table maps vendor names to their corresponding vendor IDs, which can be used to identify the hardware vendor of a device. -- -- @field Intel The vendor ID for Intel hardware. -- @field AMD The vendor ID for AMD hardware. -- @field NVidia The vendor ID for NVidia hardware. const.VendorIds = {Intel=8086, AMD=1002, NVidia=4318} --- The maximum possible value for a Z coordinate. -- This constant represents the maximum possible value for a Z coordinate, which is the largest signed 32-bit integer value (2^31 - 1). It is typically used as a sentinel value to indicate an invalid or unset Z coordinate. const.InvalidZ = 2147483647 --- A table of common color constants used throughout the application. -- These constants define a set of commonly used colors, represented as RGB values, that can be used to consistently style and theme various UI elements and graphics. -- -- @field clrBlack The color black, represented as RGB(0, 0, 0). -- @field clrWhite The color white, represented as RGB(255, 255, 255). -- @field clrRed The color red, represented as RGB(255, 0, 0). -- @field clrGreen The color green, represented as RGB(0, 255, 0). -- @field clrCyan The color cyan, represented as RGB(0, 255, 255). -- @field clrBlue The color blue, represented as RGB(0, 0, 255). -- @field clrPaleBlue A pale blue color, represented as RGB(127, 159, 255). -- @field clrPink A pink color, represented as RGB(255, 127, 127). -- @field clrYellow The color yellow, represented as RGB(255, 255, 0). -- @field clrPaleYellow A pale yellow color, represented as RGB(255, 255, 127). -- @field clrGray A gray color, represented as RGB(190, 190, 190). -- @field clrStoneGray A stone gray color, represented as RGB(191, 191, 207). -- @field clrSilverGray A silver gray color, represented as RGB(192, 192, 192). -- @field clrDarkGray A dark gray color, represented as RGB(169, 169, 169). -- @field clrNoModifier A color used for no modifier, represented as RGB(100, 100, 100). -- @field clrOrange The color orange, represented as RGB(255, 165, 0). -- @field clrMagenta The color magenta, represented as RGB(255, 0, 255). const.clrBlack = RGB(0, 0, 0) const.clrWhite = RGB(255, 255, 255) const.clrRed = RGB(255, 0, 0) const.clrGreen = RGB(0, 255, 0) const.clrCyan = RGB(0, 255, 255) const.clrBlue = RGB(0, 0, 255) const.clrPaleBlue = RGB(127, 159, 255) const.clrPink = RGB(255, 127, 127) const.clrYellow = RGB(255, 255, 0) const.clrPaleYellow = RGB(255, 255, 127) const.clrGray = RGB(190, 190, 190) const.clrStoneGray = RGB(191, 191, 207) const.clrSilverGray = RGB(192, 192, 192) const.clrDarkGray = RGB(169, 169, 169) const.clrNoModifier = RGB(100, 100, 100) const.clrOrange = RGB(255, 165, 0) const.clrMagenta = RGB(255, 0, 255) --- The time in milliseconds that a rollover UI element should be displayed. -- @field RolloverTime The time in milliseconds that a rollover UI element should be displayed. -- @field RolloverDestroyTime The time in milliseconds after which the rollover UI element should be destroyed. const.RolloverTime = 150 const.RolloverDestroyTime = const.RolloverTime --- The distance at which a rollover UI element should be refreshed. -- @field RolloverRefreshDistance The distance at which a rollover UI element should be refreshed. const.RolloverRefreshDistance = 75 const.RolloverWidth = 300 const.alignLeft = 1 const.alignRight = 2 const.alignTop = 3 const.alignBottom = 4 -- terrain type/biome brush --- The vertical texture z-axis threshold value. -- This value is used to determine the visibility of textures on vertical surfaces. -- @field VerticalTextureZThreshold The vertical texture z-axis threshold value. const.VerticalTextureZThreshold = "0.7" const.BiomeSlopeAngleThreshold = 5 * 60 --- The interval in milliseconds for keyboard auto-repeat. const.KbdAutoRepeatInterval = 400 const.RepeatButtonStart = 300 const.RepeatButtonInterval = 250 --Generic unit states; these represent logical behaviour states, and are only loosely connected to the animation states --- Generic unit states. These represent logical behaviour states, and are only loosely connected to the animation states. -- @field gsIdle The idle state. -- @field gsWalk The walking state. -- @field gsRun The running state. -- @field gsAttack The attacking state. -- @field gsDeflect The deflecting state. -- @field gsDeflectIdle The deflecting idle state. -- @field gsDie The dying state. -- Currently applied only for heroes. const.gsIdle = 1 const.gsWalk = 2 const.gsRun = 3 const.gsAttack = 4 const.gsDeflect = 5 const.gsDeflectIdle = 6 const.gsDie = 7 -- Console history max size --- The maximum size of the console history. -- This constant determines the maximum number of entries that can be stored in the console history. const.nConsoleHistoryMaxSize = 20 --- The maximum number of destlocks around a target object. -- This constant defines the maximum number of destlocks (destination locks) that can be placed around a target object. const.MaxDestsAroundObject = 16 const.MaxDestsAroundObject = 16 -- the maximum destlocks around target object --- The distance at which tracks should start fading out. -- @field TracksFadeOutDist The distance at which tracks should start fading out. const.TracksFadeOutDist = 3 * guim -- Obstacle collision surface hit type --- Obstacle collision surface hit types. -- @field surfNoCollision No collision surface. -- @field surfImpassableVolume Impassable volume surface. -- @field surfImpassableTerrain Impassable terrain surface. -- @field surfWalkableSurface Walkable surface. -- @field surfPassableTerrain Passable terrain surface. const.surfNoCollision = 0 const.surfImpassableVolume = 1 const.surfImpassableTerrain = 2 const.surfWalkableSurface = 3 const.surfPassableTerrain = 4 --- The maximum radius for walkable areas. -- This constant defines the maximum radius for walkable areas in the game world. const.WalkableMaxRadius = 30 * guim --- The default delay between sequences. -- This constant defines the default delay in seconds between sequences when playing animations. const.SequenceDefaultLoopDelay = 1573 --- A table that maps color constants to their string representations. -- This table provides a mapping between the color constants defined in the `const` table and their corresponding string names. -- The keys in this table are the color constants, and the values are the string names for those colors. -- This table is primarily used for displaying color information in the game's user interface or other textual representations. const.CustomGameColors = {[const.clrBlack]="black", [const.clrWhite]="white", [const.clrRed]="red", [const.clrCyan]="cyan", [const.clrGreen]="green", [const.clrBlue]="blue", [const.clrPaleBlue]="pale blue", [const.clrPink]="pink", [const.clrYellow]="yellow", [const.clrOrange]="orange", [const.clrPaleYellow]="pale yellow", [const.clrStoneGray]="stone gray"} --- A table that defines a list of color constants. -- This table contains a list of color constants that are commonly used in the game or application. -- The keys in this table are the color constants, and the values are the string names for those colors. -- This table is primarily used for displaying color information in the game's user interface or other textual representations. const.ColorList = {const.clrGreen, const.clrBlue, const.clrRed, const.clrWhite, const.clrCyan, const.clrYellow, const.clrPink, const.clrOrange, const.clrPaleBlue, const.clrPaleYellow, const.clrStoneGray, const.clrBlack} if Platform.editor then const.ebtNull = 20 const.ErodeIterations = 3 const.ErodeAmount = 50 const.ErodePersist = 5 const.ErodeThreshold = 50 const.ErodeCoefDiag = 500 const.ErodeCoefRect = 1000 -- move gizmo constants const.RenderGizmoScreenDist = "20.0" -- use predefined metrics as if the gizmo is that many units from the camera const.AxisCylinderRadius = "0.10" const.AxisCylinderHeight = "4.0" const.AxisCylinderSlices = 10 const.AxisConusRadius = "0.45" const.AxisConusHeight = "1.0" const.AxisConusSlices = 10 const.PlaneLineRadius = "0.05" const.PlaneLineHeight = "2.5" const.PlaneLineSlices = 10 const.XAxisColor = RGB(192, 0, 0) const.YAxisColor = RGB(0, 192, 0) const.ZAxisColor = RGB(0, 0, 192) const.XAxisColorSelected = RGB(255, 255, 0) const.YAxisColorSelected = RGB(255, 255, 0) const.ZAxisColorSelected = RGB(255, 255, 0) const.PlaneColor = RGBA(255, 255, 0, 200) -- scale gizmo constants const.MaxSingleScale = "3.0" -- what is the max scale for a single operation const.PyramidSize = "1.5" const.PyramidSideRadius = "0.10" const.PyramidSideSlices = 10 const.PyramidColor = RGB(0, 192, 192) const.SelectedSideColor = RGBA(255, 255, 0, 200) -- rotate gizmo constants const.MapDirections = 8 const.AxisRadius = "0.05" const.AxisLength = "1.5" const.AxisSlices = 5 const.TorusRadius1 = "2.30" const.TorusRadius2 = "0.15" const.TorusRings = 15 const.TorusSlices = 10 const.TangentRadius = "0.1" const.TangentLength = "2.5" const.TangentSlices = 5 const.TangentColor = RGB(255, 0, 255) const.TangentConusHeight = "0.50" const.TangentConusRadius = "0.30" const.BigTorusColor = RGB(0, 192, 192) const.BigTorusColorSelected = RGB(255, 255, 0) const.SphereColor = RGBA(128, 128, 128, 100) const.SphereRings = 15 const.SphereSlices = 15 const.BigTorusRadius = "3.5" const.BigTorusRadius2 = "0.15" const.BigTorusRings = 15 const.BigTorusSlices = 10 -- snapping parameters const.SnapRadius = 20 -- in meters const.SnapBoxSize = "0.1" const.SnapDistXYTolerance = 10 const.SnapDistZTolerance = 2 const.SnapScaleTolerance = 200 const.SnapAngleTolerance = 720 -- let dDistXY, dDistZ, dAngle, dScale and dAxisAngle are the differences between params for two snap spots and -- differences above the specified tollerances ignores matching of the two snap spots -- let dNorm = SnapDistXYCoef + SnapDistZCoef + SnapAngleCoef + SnapScaleCoef -- fitness function for the two spots is -- (dDist * SnapDistCoef + dAngle * SnapAngleCoef + dScale * SnapScaleCoef) / dNorm -- The snap spots with smallest fitness function are taken as matching snap spots const.SnapDistXYCoef = 1 const.SnapDistZCoef = 3 const.SnapAngleCoef = 3 const.SnapScaleCoef = 2 const.SnapDrawWarningFitnessTreshold = 4000 -- warning which only draws line segment between the closest snap spots const.MinBrushDensity = 30 const.MaxBrushDensity = 97 end -- Camera obstruct view params --- Defines constants related to obstructing the camera view. --- --- @field ObstructOpacity number The transparency of objects that obstruct the view. --- @field ObstructOpacityFadeOutTime number The time in milliseconds to blend to transparent mode for objects obstructing the view. --- @field ObstructOpacityFadeInTime number The time in milliseconds to blend to normal mode for objects obstructing the view. --- @field ObstructViewRefreshTime number The time in milliseconds for refreshing the obstructing objects. --- @field ObstructOpacityRefreshTime number The time in milliseconds for refreshing the translucency of the fading objects. --- @field ObstructViewMaxObjectSize number The maximum size of objects that can obstruct the view. const.ObstructOpacity = 0 -- transparency of objects that obstruct the view const.ObstructOpacityFadeOutTime = 300 -- time to blend to transparent mode for objects obstructing the view const.ObstructOpacityFadeInTime = 300 -- time to blend to normal mode for objects obstructing the view const.ObstructViewRefreshTime = 50 -- time for refreshing the obstructing objects const.ObstructOpacityRefreshTime = 20 -- time for refreshing the translucency of the fading objects const.ObstructViewMaxObjectSize = 9000 -- enum distance -- easing types --- Returns a combo table with the default value and text, followed by all the easing names. --- --- @param def_value boolean The default value for the combo. --- @param def_text string The default text for the combo. --- @return table The combo table with the default value and text, followed by all the easing names. function GetEasingCombo(def_value, def_text) def_value = def_value or false def_text = def_text or "" local combo = {{value=def_value, text=def_text}} for i, name in ipairs(GetEasingNames()) do combo[#combo + 1] = {value=i - 1, text=name} end return combo end -- the string values below are used in C, the reference below prevent the values to be constantly created and then garbage collected --- A table of string references used throughout the codebase. --- --- This table contains references to various strings used in the interpolation, collections, luaLib, luaQuery, and luaXInput systems. --- --- @field type string A reference to the "type" string. --- @field easing string A reference to the "easing" string. --- @field flags string A reference to the "flags" string. --- @field start string A reference to the "start" string. --- @field duration string A reference to the "duration" string. --- @field originalRect string A reference to the "originalRect" string. --- @field targetRect string A reference to the "targetRect" string. --- @field startValue string A reference to the "startValue" string. --- @field endValue string A reference to the "endValue" string. --- @field center string A reference to the "center" string. --- @field startAngle string A reference to the "startAngle" string. --- @field endAngle string A reference to the "endAngle" string. --- @field child string A reference to the "child" string. --- @field sub string A reference to the "sub" string. --- @field n string A reference to the "n" string. --- @field hex string A reference to the "hex" string. --- @field rand string A reference to the "rand" string. --- @field detached string A reference to the "detached" string. --- @field map string A reference to the "map" string. --- @field attached string A reference to the "attached" string. --- @field object_circles string A reference to the "object_circles" string. --- @field CObject string A reference to the "CObject" string. --- @field collected string A reference to the "collected" string. --- @field collection string A reference to the "collection" string. --- @field shuffle string A reference to the "shuffle" string. --- @field DPadLeft string A reference to the "DPadLeft" string. --- @field DPadRight string A reference to the "DPadRight" string. --- @field DPadUp string A reference to the "DPadUp" string. --- @field DPadDown string A reference to the "DPadDown" string. --- @field ButtonA string A reference to the "ButtonA" string. --- @field ButtonB string A reference to the "ButtonB" string. --- @field ButtonX string A reference to the "ButtonX" string. --- @field ButtonY string A reference to the "ButtonY" string. --- @field LeftThumbClick string A reference to the "LeftThumbClick" string. --- @field RightThumbClick string A reference to the "RightThumbClick" string. --- @field Start string A reference to the "Start" string. --- @field Back string A reference to the "Back" string. --- @field LeftShoulder string A reference to the "LeftShoulder" string. --- @field RightShoulder string A reference to the "RightShoulder" string. --- @field LeftTrigger string A reference to the "LeftTrigger" string. --- @field RightTrigger string A reference to the "RightTrigger" string. --- @field LeftThumb string A reference to the "LeftThumb" string. --- @field RightThumb string A reference to the "RightThumb" string. --- @field TouchPadClick string A reference to the "TouchPadClick" string. const.__string_reference = { -- Interpolation "type", "easing", "flags", "start", "duration", "originalRect", "targetRect", "startValue", "endValue", "center", "startAngle", "endAngle", -- Collections "child", "sub", -- luaLib "n", -- luaQuery "hex", "rand", "detached", "map", "attached", "object_circles", "CObject", "collected", "collection", "shuffle", -- luaXInput "DPadLeft", "DPadRight", "DPadUp", "DPadDown", "ButtonA", "ButtonB", "ButtonX", "ButtonY", "LeftThumbClick", "RightThumbClick", "Start", "Back", "LeftShoulder", "RightShoulder", "LeftTrigger", "RightTrigger", "LeftThumb", "RightThumb", "TouchPadClick"} --- @class const --- @field VoiceChatForcedSampleRate integer The forced sample rate for voice chat audio. --- @field VoiceChatSoundType string The sound type for voice chat audio. --- @field VoiceChatMaxSilence integer The maximum allowed silence duration for voice chat audio. --- @field VoiceChatFadeTime integer The fade time for voice chat audio. const.VoiceChatForcedSampleRate = 11025 const.VoiceChatSoundType = "VoiceChat" const.VoiceChatMaxSilence = 10000 const.VoiceChatFadeTime = 300 -------- UI Scale constants --- @field MinUserUIScale integer The minimum allowed user UI scale. --- @field MaxUserUIScaleLowRes integer The maximum allowed user UI scale for low resolution displays. --- @field MaxUserUIScaleHighRes integer The maximum allowed user UI scale for high resolution displays. --- @field ControllerUIScale integer The additional scale applied when using a gamepad or controller. const.MinUserUIScale = 65 const.MaxUserUIScaleLowRes = 110 const.MaxUserUIScaleHighRes = 135 const.ControllerUIScale = const.ControllerUIScale or 111 -- additional scale applied when using gamepad/controller -------- Display Area Margin constants --- @field MinDisplayAreaMargin integer The minimum allowed display area margin. --- @field MaxDisplayAreaMargin integer The maximum allowed display area margin. const.MinDisplayAreaMargin = 0 const.MaxDisplayAreaMargin = 10 --- @field UIScaleDAMDependant boolean --- Indicates whether the UI scale is dependent on the display area margin. const.UIScaleDAMDependant = false --[[ -- The following code measures the resolving of constants between two sequential calls to dump_const_use(). -- Sample use - CreateGameTimeThread(function () dump_const_use() Sleep(10000) dump_const_use() end) local org_const = const const = {} const_access_count = 0 const_access = {} setmetatable(const, { __index = function (t, k) const_access_count = const_access_count + 1 const_access[k] = (const_access[k] or 0) + 1 return org_const[k] end, __newindex = function (t, k, v) org_const[k] = v end, }) function dump_const_use() print("") print("total const access count " .. const_access_count) local t = {} for k,v in pairs(const_access) do table.insert(t, {key = k, value = v}) end table.sort(t, function (a, b) return a.value > b.value end) for i = 1, #t do print(t[i].key .. " " .. t[i].value) end const_access = {} const_access_count = 0 end --]] -- Destroyable --- @class const --- Defines various constants used throughout the codebase. --- The volume of a small entity, calculated as the cube of the game unit measurement `guim`. const.EntityVolumeSmall = guim * guim * guim const.EntityVolumeMedium = 3 * const.EntityVolumeSmall -- Wind --- The maximum strength of the wind in the game world. const.WindMaxStrength = 4096 const.WindMarkerMaxRange = 50 * guim const.WindMarkerAttenuationRange = 80 * guim const.StrongWindThreshold = 100 -- percent of max wind --- Defines a set of combo items for wind modifier masks. --- --- The `WindModifierMaskComboItems` table contains a list of combo items that can be used to select a wind modifier mask. Each combo item has a `text` field that represents the display text for the item, and a `value` field that represents the corresponding numeric value for the mask. --- --- The first item in the table represents "None", with a value of 0, indicating that no wind modifier mask is applied. --- The second item in the table represents "All", with a value of -1, indicating that all wind modifier masks are applied. --- --- This table is likely used in a user interface or configuration setting to allow the player to select the desired wind modifier mask. const.WindModifierMaskComboItems = {{text="None", value=0}, {text="All", value=-1}} -- Water --- The minimum offset in the Z-axis for water effects. const.FXWaterMinOffsetZ = -guim / 10 const.FXWaterMaxOffsetZ = guim / 10 const.FXDecalMinOffsetZ = -guim / 10 const.FXDecalMaxOffsetZ = guim / 10 const.FXShallowWaterOffsetZ = 0 --------------------------------------------------------------------------------------------------------------------