---@meta ---@diagnostic disable: lowercase-global --[[ csp.lua ]] --[[ csp.lua ]] ---@class ac.HashSpaceItem local HashSpaceItem = class('HashSpaceItem') ---Returns ID associated with an item. ---@return integer function HashSpaceItem:id() end ---Moves an item to a position. ---@param pos vec3 function HashSpaceItem:update(pos) end ---Removes item from its space. function HashSpaceItem:dispose() end ---Simple structure meant to speed up collision detection by arranging items in a grid using hashmap. Cells are arranged horizontally. ---@param cellSize number @Should be about twice as large as your largest entity. ---@return ac.HashSpace function ac.HashSpace(cellSize) end ---Simple structure meant to speed up collision detection by arranging items in a grid using hashmap. Cells are arranged horizontally. ---@class ac.HashSpace local _ac_HashSpace = nil ---Iterates items around given position. ---@generic T ---@param pos vec3 ---@param callback fun(id: integer, callbackData: T) ---@param callbackData T? function _ac_HashSpace:iterate(pos, callback, callbackData) end ---Checks if there are any items around given position. ---@param pos vec3 ---@return boolean function _ac_HashSpace:anyAround(pos) end ---Count amount of items around given position. ---@param pos vec3 ---@return integer function _ac_HashSpace:count(pos) end ---Returns raw pointers for given position for manual iteration. Be careful! ---@param pos vec3 ---@return any, any function _ac_HashSpace:rawPointers(pos) end ---Adds a new dynamic item to the grid. Each item gets a new ID. ---@return ac.HashSpaceItem function _ac_HashSpace:add() end ---Adds a fixed item to the grid, with predetermined ID. Avoid mixing dynamic and fixed items in the same grid. ---@param id integer ---@param pos vec3 function _ac_HashSpace:addFixed(id, pos) end --[[ lib_numlut.lua ]] ---Meant to quickly interpolate between tables of values, some of them could be colors set in HSV. Example: ---``` ---local lut = ac.Lut([[ --- -100 | 0.00, 350, 0.37, 1.00, 3.00, 1.00, 1.00, 3.60,500.00, 0.04 --- -90 | 1.00, 10, 0.37, 1.00, 3.00, 1.00, 1.00, 3.60,500.00, 0.04 --- -20 | 1.00, 10, 0.37, 1.00, 3.00, 1.00, 1.00, 3.60,500.00, 0.04 ---]], { 2 }) ---assert(lut:calculate(-95)[1] == 0.5) ---``` ---@class ac.Lut ---@explicit-contructor ac.Lut local _ac_Lut = nil ---Interpolate for a given input, return a newly created table. Note: consider using `:calculateTo()` instead to avoid re-creating tables, it would work much more efficiently. ---@param input number ---@return number[] function _ac_Lut:calculate(input) end ---Interpolate for a given input, write result to a given table. ---@param output number[] ---@param input number ---@return number[] @Same table as was provided in arguments. function _ac_Lut:calculateTo(output, input) end --[[ lib_numlut_jit.lua ]] ---Meant to quickly interpolate between tables of values, some of them could be colors set in HSV. Example: ---``` ---local lutJit = ac.LutJit:new{ data = { --- { input = -100, output = { 0.00, 350, 0.37, 1.00, 3.00, 1.00, 1.00, 3.60,500.00, 0.04 } }, --- { input = -90, output = { 1.00, 10, 0.37, 1.00, 3.00, 1.00, 1.00, 3.60,500.00, 0.04 } }, --- { input = -20, output = { 1.00, 10, 0.37, 1.00, 3.00, 1.00, 1.00, 3.60,500.00, 0.04 } }, --- }, hsvRows = { 2 }} ---assert(lutJit:calculate(-95)[1] == 1) ---``` ---Obsolete. Use `ac.Lut` instead, with faster C++ implementation. ---@class ac.LutJit ---@deprecated ac.LutJit = {} ---Creates new ac.LuaJit instance. Deprecated, use `ac.Lut` instead. ---@deprecated ---@param data any ---@param hsvRows integer[] @ 1-based indices of columns (not rows) storing HSV values in them. ---@return table function ac.LutJit:new(o, data, hsvRows) end ---Computes a new value. Deprecated, use `ac.Lut` instead. ---@deprecated ---@param input number ---@return number[] function ac.LutJit:calculate(input) end ---Computes a new value to a preexisting HSV value. Deprecated, use `ac.Lut` instead. ---@deprecated ---@param output number[] ---@param input number ---@return number[] @Same table as was provided in arguments. function ac.LutJit:calculateTo(output, input) end ---Loads a ZIP file from a given URL, unpacks first KN5 from it to a cache folder and returns ---its filename through a callback. If file is already in cache storage, doesn’t do anything and ---simply returns filename to it. After callback is called, that filename could be used to load ---KN5 in the scene. --- ---If there is a VAO patch in a ZIP file, it will be extracted next to KN5. --- ---Note: only valid KN5 files and VAO patches are supported. Heavy caching is applied: if model was ---downloaded once, it would not be re-downloaded (unlike with remote textures where proper HTTP caching ---rules apply). If model was not accessed for a couple of weeks, it’ll be removed. --- ---If you need to download several entities and do something afterwards, it might help to use some ---promise Lua library. --- ---Use `web.loadRemoteAssets()` instead. ---@deprecated ---@param source string|{url: string, headers: table} @URL to download, or, since 0.2.10, a table. ---@param callback fun(err: string, filename: string) function web.loadRemoteModel(source, callback) end ---Loads a ZIP file from a given URL, unpacks first KsAnim from it to a cache folder and returns ---its filename through a callback. If file is already in cache storage, doesn’t do anything and ---simply returns filename to it. After callback is called, that filename could be used to animate ---objects in the scene. If animation was not accessed for a couple of weeks, it’ll be removed. --- ---If you need to download several entities and do something afterwards, it might help to use some ---promise Lua library. --- ---Use `web.loadRemoteAssets()` instead. ---@deprecated ---@param source string|{url: string, headers: table} @URL to download, or, since 0.2.10, a table. ---@param callback fun(err: string, filename: string) function web.loadRemoteAnimation(source, callback) end ---Loads a ZIP file from a given URL, unpacks assets from it to a cache folder and returns ---path to the folder in a callback. If files are already in cache storage, doesn’t do anything and ---simply returns the path. After callback is called, you can use path to the folder to get full paths to those assets. ---If assets are not accessed for a couple of weeks, they’ll be removed. --- ---Since 0.2.10, scripts with I/O access are allowed to extract all types of files using this function. ---@param source string|{url: string, headers: table, crucial: string?} @URL to download, or, since 0.2.10, a table. Field `crucial` acts similar to `crucial` of `io.extractFromZipAsync()`. ---@param callback fun(err: string, folder: string) function web.loadRemoteAssets(source, callback) end ---Resolve hostname, return IPv4 via a callback. ---@param url string ---@param callback fun(err: string?, response: string?)? function web.resolveDNS(url, callback) end ---@param key string ---@return string function web.encryptKey(key) end --[[ csp.lua ]] ---GIF player can be used to display animated GIFs. Also supports regular and animated WEBP images. --- ---Also, it can be used to efficiently draw (or pass to a shader) any arbitrary data (GIF decoding happens on CPU, and for it, there is all this ---logic to efficiently push data from CPU to GPU — so why not let Lua, if needed, to instead push arbitrary data). For it, instead of a URL or ---a filename, pass a table to the constructor with `width` and `height`. This would create an empty image. Call `:push(data)`, and it’ll copy ---passed data (could be a string, or, for example, a struct) to GPU. Add a field `decompress` set to `true`, and it’ll run `ac.decompress()` on ---that data first. Since CSP 0.3.0-preview466, you can also add a `format` field to specify a custom format (before that, it was always RGBA8888). ---Possible use cases: ---- A fast way to draw pixels directly (use `ac.StructItem.build()` to build a structure holding pixel data, update values and push them to the player); ---- An efficient way to pass a lot of data to a shader (these textures can be bound to shaders and accessed as textures, but they don’t have to store actual images); ---- The simplest “video” streaming solution (if target resolution is small, an API endpoint can serve basic compressed binary data, and clients can ---repeatedly acquire it and push it here). ---@param source string|{width: number, height: number, decompress: boolean?, format: render.TextureFormat?} @URL, filename or binary data. ---@param simTime boolean? @Pass `true` to use simulation time (pause GIF when AC is paused), or `false` to use UI time. By default, `true` for car and track scripts. ---@return ui.GIFPlayer function ui.GIFPlayer(source, simTime) end ---GIF player can be used to display animated GIFs. Also supports regular and animated WEBP images. --- ---Also, it can be used to efficiently draw (or pass to a shader) any arbitrary data (GIF decoding happens on CPU, and for it, there is all this ---logic to efficiently push data from CPU to GPU — so why not let Lua, if needed, to instead push arbitrary data). For it, instead of a URL or ---a filename, pass a table to the constructor with `width` and `height`. This would create an empty image. Call `:push(data)`, and it’ll copy ---passed data (could be a string, or, for example, a struct) to GPU. Add a field `decompress` set to `true`, and it’ll run `ac.decompress()` on ---that data first. Since CSP 0.3.0-preview466, you can also add a `format` field to specify a custom format (before that, it was always RGBA8888). ---Possible use cases: ---- A fast way to draw pixels directly (use `ac.StructItem.build()` to build a structure holding pixel data, update values and push them to the player); ---- An efficient way to pass a lot of data to a shader (these textures can be bound to shaders and accessed as textures, but they don’t have to store actual images); ---- The simplest “video” streaming solution (if target resolution is small, an API endpoint can serve basic compressed binary data, and clients can ---repeatedly acquire it and push it here). ---@class ui.GIFPlayer ---@field keepRunning boolean @By default GIFs stop playing if they are not actively used in rendering. If you need them to keep running in background, set this property to `true`. local _ui_GIFPlayer = nil ---Get GIF resolution. If GIF is not yet loaded, returns zeroes. ---@return vec2 @Width and height in pixels. function _ui_GIFPlayer:resolution() end ---Push new bitmap data to a live-updating image. Doesn’t do anything if data is wrong size, or if player is not created for this mode. ---@param data binary ---@return boolean @Returns `false` if data doesn’t fit. function _ui_GIFPlayer:push(data) end ---Rewinds GIF back to beginning. --- ---Note: since 0.3.0.144, GIF players using the same source share their internal state, decoder and textures to save on RAM and ---CPU usage. Using this method on a shared player (if it’s played a bit) will disconnect the player and make it its own thing. ---@return ui.GIFPlayer @Returns itself for chaining several methods together. function _ui_GIFPlayer:rewind() end ---Pauses playback. Added in 0.3.0.144. ---@return ui.GIFPlayer @Returns itself for chaining several methods together. function _ui_GIFPlayer:pause() end ---Resumes playback. Added in 0.3.0.144. ---@return ui.GIFPlayer @Returns itself for chaining several methods together. function _ui_GIFPlayer:resume() end ---Checks if GIF is loaded and ready to be drawn. ---@return boolean function _ui_GIFPlayer:ready() end ---Links playback rate to simulation speed: pauses when game or replay are paused, slows down with replay slow motion, ---speeds up with replay fast forwarding. ---@param value boolean? @Set to `true` to link playback rate. ---@return ui.GIFPlayer @Returns itself for chaining several methods together. function _ui_GIFPlayer:linkToSimulationSpeed(value) end ---Returns `false` if GIF decoding has failed. ---@return boolean function _ui_GIFPlayer:valid() end --[[ lib_ui_shared.lua ]] ---@param handle integer @Shared texture handle. Can be either a `D3D11_RESOURCE_MISC_SHARED` handle or a handle from `:sharedHandle()` of an extra canvas. ---@param ntMode nil|integer|boolean? @Set to `true` if the handle is NT handle. Alternatively, set to an integer with source process ID. Default value: `false`. Note: for NT handles it’s better to use the named textures and pass it as a string instead (with the overload). ---@return ui.SharedTexture ---@overload fun(name: string) @Overload using name of a shared NT texture, works a lot better. function ui.SharedTexture(handle, ntMode) end ---A wrapper for accessing textures shared by other Lua scripts or even by other applications. For the latter, textures need to have `D3D11_RESOURCE_MISC_SHARED` flag and be on the same GPU. ---@class ui.SharedTexture local _ui_SharedTexture = nil ---Dispose texture and release its view. Call this method if remote texture is being destroyed. function _ui_SharedTexture:dispose() end ---Sets texture name for debugging. Textures with set name appear in Lua Debug App, allowing to monitor their state. ---@param name string? @Name to display texture as. If set to `nil` or `false`, name will be reset and texture will be hidden. ---@return self @Returns itself for chaining several methods together. function _ui_SharedTexture:setName(name) end ---Get texture handle used for creating a texture. If texture has failed to load, returns 0. If texture is loaded by name and loaded properly, returns 1. ---@return integer function _ui_SharedTexture:handle() end ---Get texture resolution. If texture has failed to load, returns zeroes. ---@return vec2 @Width and height in pixels. function _ui_SharedTexture:resolution() end ---Returns `false` if access to a shared texture has failed. ---@return boolean function _ui_SharedTexture:valid() end ---@alias ac.DebugCollectMode ---| `ac.DebugCollectMode.Average` @Value: 0. ---| `ac.DebugCollectMode.Minimum` @Value: 1. ---| `ac.DebugCollectMode.Maximum` @Value: 2. ac.DebugCollectMode = { Average = 0, ---@type ac.DebugCollectMode #Value: 0. Minimum = 1, ---@type ac.DebugCollectMode #Value: 1. Maximum = 2, ---@type ac.DebugCollectMode #Value: 2. } ---@alias ac.INIFormat ---| `ac.INIFormat.Default` @AC format: no quotes, “[” in value begins a new section, etc. ---| `ac.INIFormat.DefaultAcd` @AC format, but also with support for reading files from `data.acd` (makes difference only for `ac.INIConfig.load()`). ---| `ac.INIFormat.Extended` @Quotes are allowed, comma-separated value turns into multiple values (for vectors and lists), repeated keys replace previous values. ---| `ac.INIFormat.ExtendedIncludes` @Same as CSP, but also with support for INIpp expressions and includes. ac.INIFormat = { Default = 0, ---@type ac.INIFormat #AC format: no quotes, “[” in value begins a new section, etc. DefaultAcd = 1, ---@type ac.INIFormat #AC format, but also with support for reading files from `data.acd` (makes difference only for `ac.INIConfig.load()`). Extended = 10, ---@type ac.INIFormat #Quotes are allowed, comma-separated value turns into multiple values (for vectors and lists), repeated keys replace previous values. ExtendedIncludes = 11, ---@type ac.INIFormat #Same as CSP, but also with support for INIpp expressions and includes. } ---@alias ac.LightType ---| `ac.LightType.Regular` @Value: 1. ---| `ac.LightType.Line` @Value: 2. ac.LightType = { Regular = 1, ---@type ac.LightType #Value: 1. Line = 2, ---@type ac.LightType #Value: 2. } ---@alias ac.IncludeType ---| `ac.IncludeType.None` @Value: 0. ---| `ac.IncludeType.Car` @Value: 1. ---| `ac.IncludeType.Track` @Value: 2. ac.IncludeType = { None = 0, ---@type ac.IncludeType #Value: 0. Car = 1, ---@type ac.IncludeType #Value: 1. Track = 2, ---@type ac.IncludeType #Value: 2. } ---@alias ac.FogAlgorithm ---| `ac.FogAlgorithm.Original` @Value: 0. ---| `ac.FogAlgorithm.New` @Value: 1. ac.FogAlgorithm = { Original = 0, ---@type ac.FogAlgorithm #Value: 0. New = 1, ---@type ac.FogAlgorithm #Value: 1. } ---@alias ac.SurfaceType ---| `ac.SurfaceType.Grass` @Value: 0. ---| `ac.SurfaceType.Dirt` @Value: 1. ---| `ac.SurfaceType.Snow` @-Could also be ice. ---| `ac.SurfaceType.Default` @Value: 255. ac.SurfaceType = { Grass = 0, ---@type ac.SurfaceType #Value: 0. Dirt = 1, ---@type ac.SurfaceType #Value: 1. Snow = 2, ---@type ac.SurfaceType #-Could also be ice. Default = 255, ---@type ac.SurfaceType #Value: 255. } ---@alias ac.SurfaceExtendedType ---| `ac.SurfaceExtendedType.Base` @Value: 0. ---| `ac.SurfaceExtendedType.ExtraTurf` @Value: 1. ---| `ac.SurfaceExtendedType.Grass` @Value: 2. ---| `ac.SurfaceExtendedType.Gravel` @Value: 3. ---| `ac.SurfaceExtendedType.Kerb` @Value: 4. ---| `ac.SurfaceExtendedType.Old` @Value: 5. ---| `ac.SurfaceExtendedType.Sand` @Value: 6. ---| `ac.SurfaceExtendedType.Ice` @Value: 7. ---| `ac.SurfaceExtendedType.Snow` @Value: 8. ---| `ac.SurfaceExtendedType.Wall` @Value: 9. ac.SurfaceExtendedType = { Base = 0, ---@type ac.SurfaceExtendedType #Value: 0. ExtraTurf = 1, ---@type ac.SurfaceExtendedType #Value: 1. Grass = 2, ---@type ac.SurfaceExtendedType #Value: 2. Gravel = 3, ---@type ac.SurfaceExtendedType #Value: 3. Kerb = 4, ---@type ac.SurfaceExtendedType #Value: 4. Old = 5, ---@type ac.SurfaceExtendedType #Value: 5. Sand = 6, ---@type ac.SurfaceExtendedType #Value: 6. Ice = 7, ---@type ac.SurfaceExtendedType #Value: 7. Snow = 8, ---@type ac.SurfaceExtendedType #Value: 8. Wall = 9, ---@type ac.SurfaceExtendedType #Value: 9. } ---@alias ac.ShadowsState ---| `ac.ShadowsState.Off` @Value: 0. ---| `ac.ShadowsState.On` @Value: 1. ---| `ac.ShadowsState.EverythingShadowed` @Value: 2. ac.ShadowsState = { Off = 0, ---@type ac.ShadowsState #Value: 0. On = 1, ---@type ac.ShadowsState #Value: 1. EverythingShadowed = 2, ---@type ac.ShadowsState #Value: 2. } ---@alias ac.TextureState ---| `ac.TextureState.Empty` @Value: 0. ---| `ac.TextureState.Loading` @Value: 1. ---| `ac.TextureState.Failed` @Value: 2. ---| `ac.TextureState.Ready` @Value: 3. ac.TextureState = { Empty = 0, ---@type ac.TextureState #Value: 0. Loading = 1, ---@type ac.TextureState #Value: 1. Failed = 2, ---@type ac.TextureState #Value: 2. Ready = 3, ---@type ac.TextureState #Value: 3. } ---@alias ac.CameraMode ---| `ac.CameraMode.Cockpit` @First person view. ---| `ac.CameraMode.Car` @F6 camera. ---| `ac.CameraMode.Drivable` @Chase/bonnet/bumper/dash cameras. ---| `ac.CameraMode.Track` @Replay camera. ---| `ac.CameraMode.Helicopter` @Moving replay camera. ---| `ac.CameraMode.OnBoardFree` @F5 camera. ---| `ac.CameraMode.Free` @F7 camera. ---| `ac.CameraMode.Deprecated` @Value: 7. ---| `ac.CameraMode.ImageGeneratorCamera` @Value: 8. ---| `ac.CameraMode.Start` @Starting camera. ac.CameraMode = { Cockpit = 0, ---@type ac.CameraMode #First person view. Car = 1, ---@type ac.CameraMode #F6 camera. Drivable = 2, ---@type ac.CameraMode #Chase/bonnet/bumper/dash cameras. Track = 3, ---@type ac.CameraMode #Replay camera. Helicopter = 4, ---@type ac.CameraMode #Moving replay camera. OnBoardFree = 5, ---@type ac.CameraMode #F5 camera. Free = 6, ---@type ac.CameraMode #F7 camera. Deprecated = 7, ---@type ac.CameraMode #Value: 7. ImageGeneratorCamera = 8, ---@type ac.CameraMode #Value: 8. Start = 9, ---@type ac.CameraMode #Starting camera. } ---@alias ac.DrivableCamera ---| `ac.DrivableCamera.Chase` @Value: 0. ---| `ac.DrivableCamera.Chase2` @Value: 1. ---| `ac.DrivableCamera.Bonnet` @Value: 2. ---| `ac.DrivableCamera.Bumper` @Value: 3. ---| `ac.DrivableCamera.Dash` @Value: 4. ac.DrivableCamera = { Chase = 0, ---@type ac.DrivableCamera #Value: 0. Chase2 = 1, ---@type ac.DrivableCamera #Value: 1. Bonnet = 2, ---@type ac.DrivableCamera #Value: 2. Bumper = 3, ---@type ac.DrivableCamera #Value: 3. Dash = 4, ---@type ac.DrivableCamera #Value: 4. } ---Wheel index (from 0 to 3) or a special value for wheel mask. ---@alias ac.Wheel ---| `ac.Wheel.FrontLeft` @Value: 0. ---| `ac.Wheel.FrontRight` @Value: 1. ---| `ac.Wheel.RearLeft` @Value: 2. ---| `ac.Wheel.RearRight` @Value: 3. ---| `ac.Wheel.Front` @Value: 12. ---| `ac.Wheel.Rear` @Value: 48. ---| `ac.Wheel.Left` @Value: 20. ---| `ac.Wheel.Right` @Value: 40. ---| `ac.Wheel.All` @Value: 60. ac.Wheel = { FrontLeft = 0, ---@type ac.Wheel #Value: 0. FrontRight = 1, ---@type ac.Wheel #Value: 1. RearLeft = 2, ---@type ac.Wheel #Value: 2. RearRight = 3, ---@type ac.Wheel #Value: 3. Front = 12, ---@type ac.Wheel #Value: 12. Rear = 48, ---@type ac.Wheel #Value: 48. Left = 20, ---@type ac.Wheel #Value: 20. Right = 40, ---@type ac.Wheel #Value: 40. All = 60, ---@type ac.Wheel #Value: 60. } ---@alias ac.MirrorPieceRole ---| `ac.MirrorPieceRole.None` @Value: 0. ---| `ac.MirrorPieceRole.Top` @Value: 1. ---| `ac.MirrorPieceRole.Left` @Value: 2. ---| `ac.MirrorPieceRole.Right` @Value: 4. ac.MirrorPieceRole = { None = 0, ---@type ac.MirrorPieceRole #Value: 0. Top = 1, ---@type ac.MirrorPieceRole #Value: 1. Left = 2, ---@type ac.MirrorPieceRole #Value: 2. Right = 4, ---@type ac.MirrorPieceRole #Value: 4. } ---@alias ac.MirrorPieceFlip ---| `ac.MirrorPieceFlip.None` @Value: 0. ---| `ac.MirrorPieceFlip.Horizontal` @Value: 1. ---| `ac.MirrorPieceFlip.Vertical` @Value: 2. ---| `ac.MirrorPieceFlip.Both` @Value: 3. ac.MirrorPieceFlip = { None = 0, ---@type ac.MirrorPieceFlip #Value: 0. Horizontal = 1, ---@type ac.MirrorPieceFlip #Value: 1. Vertical = 2, ---@type ac.MirrorPieceFlip #Value: 2. Both = 3, ---@type ac.MirrorPieceFlip #Value: 3. } ---@alias ac.MirrorMonitorType ---| `ac.MirrorMonitorType.TN` @Oldschool displays with a lot of color distortion. ---| `ac.MirrorMonitorType.VA` @Medium tier, less color distortion. ---| `ac.MirrorMonitorType.IPS` @Almost no color distortion. ac.MirrorMonitorType = { TN = 0, ---@type ac.MirrorMonitorType #Oldschool displays with a lot of color distortion. VA = 2, ---@type ac.MirrorMonitorType #Medium tier, less color distortion. IPS = 1, ---@type ac.MirrorMonitorType #Almost no color distortion. } ---@alias ac.WeatherType ---| `ac.WeatherType.LightThunderstorm` @Value: 0. ---| `ac.WeatherType.Thunderstorm` @Value: 1. ---| `ac.WeatherType.HeavyThunderstorm` @Value: 2. ---| `ac.WeatherType.LightDrizzle` @Value: 3. ---| `ac.WeatherType.Drizzle` @Value: 4. ---| `ac.WeatherType.HeavyDrizzle` @Value: 5. ---| `ac.WeatherType.LightRain` @Value: 6. ---| `ac.WeatherType.Rain` @Value: 7. ---| `ac.WeatherType.HeavyRain` @Value: 8. ---| `ac.WeatherType.LightSnow` @Value: 9. ---| `ac.WeatherType.Snow` @Value: 10. ---| `ac.WeatherType.HeavySnow` @Value: 11. ---| `ac.WeatherType.LightSleet` @Value: 12. ---| `ac.WeatherType.Sleet` @Value: 13. ---| `ac.WeatherType.HeavySleet` @Value: 14. ---| `ac.WeatherType.Clear` @Value: 15. ---| `ac.WeatherType.FewClouds` @Value: 16. ---| `ac.WeatherType.ScatteredClouds` @Value: 17. ---| `ac.WeatherType.BrokenClouds` @Value: 18. ---| `ac.WeatherType.OvercastClouds` @Value: 19. ---| `ac.WeatherType.Fog` @Value: 20. ---| `ac.WeatherType.Mist` @Value: 21. ---| `ac.WeatherType.Smoke` @Value: 22. ---| `ac.WeatherType.Haze` @Value: 23. ---| `ac.WeatherType.Sand` @Value: 24. ---| `ac.WeatherType.Dust` @Value: 25. ---| `ac.WeatherType.Squalls` @Value: 26. ---| `ac.WeatherType.Tornado` @Value: 27. ---| `ac.WeatherType.Hurricane` @Value: 28. ---| `ac.WeatherType.Cold` @Value: 29. ---| `ac.WeatherType.Hot` @Value: 30. ---| `ac.WeatherType.Windy` @Value: 31. ---| `ac.WeatherType.Hail` @Value: 32. ac.WeatherType = { LightThunderstorm = 0, ---@type ac.WeatherType #Value: 0. Thunderstorm = 1, ---@type ac.WeatherType #Value: 1. HeavyThunderstorm = 2, ---@type ac.WeatherType #Value: 2. LightDrizzle = 3, ---@type ac.WeatherType #Value: 3. Drizzle = 4, ---@type ac.WeatherType #Value: 4. HeavyDrizzle = 5, ---@type ac.WeatherType #Value: 5. LightRain = 6, ---@type ac.WeatherType #Value: 6. Rain = 7, ---@type ac.WeatherType #Value: 7. HeavyRain = 8, ---@type ac.WeatherType #Value: 8. LightSnow = 9, ---@type ac.WeatherType #Value: 9. Snow = 10, ---@type ac.WeatherType #Value: 10. HeavySnow = 11, ---@type ac.WeatherType #Value: 11. LightSleet = 12, ---@type ac.WeatherType #Value: 12. Sleet = 13, ---@type ac.WeatherType #Value: 13. HeavySleet = 14, ---@type ac.WeatherType #Value: 14. Clear = 15, ---@type ac.WeatherType #Value: 15. FewClouds = 16, ---@type ac.WeatherType #Value: 16. ScatteredClouds = 17, ---@type ac.WeatherType #Value: 17. BrokenClouds = 18, ---@type ac.WeatherType #Value: 18. OvercastClouds = 19, ---@type ac.WeatherType #Value: 19. Fog = 20, ---@type ac.WeatherType #Value: 20. Mist = 21, ---@type ac.WeatherType #Value: 21. Smoke = 22, ---@type ac.WeatherType #Value: 22. Haze = 23, ---@type ac.WeatherType #Value: 23. Sand = 24, ---@type ac.WeatherType #Value: 24. Dust = 25, ---@type ac.WeatherType #Value: 25. Squalls = 26, ---@type ac.WeatherType #Value: 26. Tornado = 27, ---@type ac.WeatherType #Value: 27. Hurricane = 28, ---@type ac.WeatherType #Value: 28. Cold = 29, ---@type ac.WeatherType #Value: 29. Hot = 30, ---@type ac.WeatherType #Value: 30. Windy = 31, ---@type ac.WeatherType #Value: 31. Hail = 32, ---@type ac.WeatherType #Value: 32. } ---@alias ac.TonemapFunction ---| `ac.TonemapFunction.Linear` @Simple linear mapping. ---| `ac.TonemapFunction.LinearClamped` @Linear mapping (LDR clamp). ---| `ac.TonemapFunction.Sensitometric` @Simple simulation of response of film, CCD, etc., recommended. ---| `ac.TonemapFunction.Reinhard` @Reinhard. ---| `ac.TonemapFunction.ReinhardLum` @Saturation retention type Reinhard tone map function. ---| `ac.TonemapFunction.Log` @Tone map function for the logarithmic space. ---| `ac.TonemapFunction.LogLum` @Saturation retention type logarithmic space tone map function. ---| `ac.TonemapFunction.ACES` @ACES. ---| `ac.TonemapFunction.Uchimura` @GT-like by Uchimura. ---| `ac.TonemapFunction.RomBinDaHouse` @Tonemapping by RomBinDaHouse. ---| `ac.TonemapFunction.Lottes` @Tonemapping by Lottes. ---| `ac.TonemapFunction.Uncharted` @Tonemapping used in Uncharted. ---| `ac.TonemapFunction.Unreal` @Tonemapping commonly used in UE. ---| `ac.TonemapFunction.Filmic` @Filmic tonemapping. ---| `ac.TonemapFunction.ReinhardWp` @White-preserving Reinhard. ---| `ac.TonemapFunction.Juicy` @Experimental, better preserving saturation. ---| `ac.TonemapFunction.AgX` @Might be the best one, based on https://iolite-engine.com/blog_posts/minimal_agx_implementation. ac.TonemapFunction = { Linear = 0, ---@type ac.TonemapFunction #Simple linear mapping. LinearClamped = 1, ---@type ac.TonemapFunction #Linear mapping (LDR clamp). Sensitometric = 2, ---@type ac.TonemapFunction #Simple simulation of response of film, CCD, etc., recommended. Reinhard = 3, ---@type ac.TonemapFunction #Reinhard. ReinhardLum = 4, ---@type ac.TonemapFunction #Saturation retention type Reinhard tone map function. Log = 5, ---@type ac.TonemapFunction #Tone map function for the logarithmic space. LogLum = 6, ---@type ac.TonemapFunction #Saturation retention type logarithmic space tone map function. ACES = 7, ---@type ac.TonemapFunction #ACES. Uchimura = 8, ---@type ac.TonemapFunction #GT-like by Uchimura. RomBinDaHouse = 9, ---@type ac.TonemapFunction #Tonemapping by RomBinDaHouse. Lottes = 10, ---@type ac.TonemapFunction #Tonemapping by Lottes. Uncharted = 11, ---@type ac.TonemapFunction #Tonemapping used in Uncharted. Unreal = 12, ---@type ac.TonemapFunction #Tonemapping commonly used in UE. Filmic = 13, ---@type ac.TonemapFunction #Filmic tonemapping. ReinhardWp = 14, ---@type ac.TonemapFunction #White-preserving Reinhard. Juicy = 15, ---@type ac.TonemapFunction #Experimental, better preserving saturation. AgX = 16, ---@type ac.TonemapFunction #Might be the best one, based on https://iolite-engine.com/blog_posts/minimal_agx_implementation. } ---@alias ac.FolderID ---| `ac.FolderID.AppData` @…/AppData. ---| `ac.FolderID.Documents` @…/Documents. ---| `ac.FolderID.Root` @…/SteamApps/common/assettocorsa. ---| `ac.FolderID.Cfg` @…/Documents/Assetto Corsa/cfg. ---| `ac.FolderID.Logs` @…/Documents/Assetto Corsa/logs. ---| `ac.FolderID.Screenshots` @…/Documents/Assetto Corsa/screens. ---| `ac.FolderID.Replays` @…/Documents/Assetto Corsa/replay. ---| `ac.FolderID.ReplaysTemp` @…/Documents/Assetto Corsa/replay/temp. ---| `ac.FolderID.UserSetups` @…/Documents/Assetto Corsa/setups. ---| `ac.FolderID.PPFilters` @…/SteamApps/common/assettocorsa/system/cfg/ppfilters. ---| `ac.FolderID.ContentCars` @…/SteamApps/common/assettocorsa/content/cars. ---| `ac.FolderID.ContentDrivers` @…/SteamApps/common/assettocorsa/content/drivers. ---| `ac.FolderID.ContentTracks` @…/SteamApps/common/assettocorsa/content/tracks. ---| `ac.FolderID.ExtRoot` @…/SteamApps/common/assettocorsa/extension. ---| `ac.FolderID.ExtCfgSys` @…/SteamApps/common/assettocorsa/extension/config. ---| `ac.FolderID.ExtCfgUser` @…/Documents/Assetto Corsa/cfg/extension. ---| `ac.FolderID.ExtTextures` @…/SteamApps/common/assettocorsa/extension/textures. ---| `ac.FolderID.ACApps` @…/SteamApps/common/assettocorsa/apps. ---| `ac.FolderID.ACAppsLua` @…/SteamApps/common/assettocorsa/apps/lua. ---| `ac.FolderID.ACAppsPython` @…/SteamApps/common/assettocorsa/apps/python. ---| `ac.FolderID.ExtCfgState` @…/Documents/Assetto Corsa/cfg/extension/state (changing configs there does not trigger any live reloads). ---| `ac.FolderID.ContentFonts` @…/SteamApps/common/assettocorsa/content/fonts. ---| `ac.FolderID.RaceResults` @…/Documents/Assetto Corsa/out. ---| `ac.FolderID.AppDataLocal` @…/AppData/Local. ---| `ac.FolderID.ExtFonts` @…/SteamApps/common/assettocorsa/extension/fonts. ---| `ac.FolderID.ACDocuments` @…/Documents/Assetto Corsa. ---| `ac.FolderID.ExtLua` @…/SteamApps/common/assettocorsa/extension/lua. ---| `ac.FolderID.ExtCache` @…/SteamApps/common/assettocorsa/cache. ---| `ac.FolderID.AppDataTemp` @…/AppData/Local/Temp. ---| `ac.FolderID.ExtInternal` @…/SteamApps/common/assettocorsa/extension/internal. ---| `ac.FolderID.ScriptOrigin` @Main script directory. ---| `ac.FolderID.ScriptConfig` @…/Documents/Assetto Corsa/cfg/extension/state/lua//