| CTilePlus.AssetGuidPositionHash | Used for quick HashSet lookups to see if an asset has already been loaded using a particular offset |
| CTilePlus.TpTileFab.AssetSpec | Class used to describe a single tile archive and where it should be loaded |
| CAttribute | |
| CTilePlus.TptAttributeBaseAttribute | This is the base class for all Tpt attributes except ShowAsLabelBrushInspector |
| CTilePlus.TptShowAsLabelSelectionInspectorAttribute | This attribute can be used in Tile classes to affect what is displayed in the Tile++Brush selection inspector. For a field or property, the value returned is displayed with ToString, so whatever you tag with this must have a ToString() method. This isn't an issue for most types of fields or properties that you might use, but keep it in mind. Sometimes you can create a property just to show it as a label, based on other values in your Tile class |
| CTilePlus.TptShowCustomGUIAttribute | This attribute is used to provide customGUI for a tile class. note that the method needs to be: [TptShowCustomGUI] public CustomGuiReturn BaseGui(GUISkin skin, Vector2 buttonSize, bool inPrefab) The return value should be an instance of CustomGuiReturn. See TilePlusBase, TpFlexAnimatedTile, etc for an example. NOTE access has to be public or protected |
| CTilePlus.TptShowEnumAttribute | This attribute can be used in Tile classes to affect what is displayed in the Tile++Brush selection inspector. This is used to show Enums in a pop-up |
| CTilePlus.TptShowFieldAttribute | This attribute can be used in Tile classes to affect what is displayed in the Tile++Brush selection inspector |
| CTilePlus.TptShowMethodAsButtonAttribute | This attribute is used to display an invoke button for a method. Note that if the access type for the method isn't public or protected then it'll be ignored |
| CTilePlus.TptShowObjectFieldAttribute | This attribute can be used in Tile classes show an object field |
| CTilePlus.TptNoteAttribute | Add a note to a field or method. Choice of embedding a string or using a property to provide the string. Always displayed as a 'helpbox' above the field or method button |
| CTilePlus.TptShowAsLabelBrushInspectorAttribute | This attribute can be used in Tile classes to affect what is displayed in the Tile+Brush Brush inspector (ie in the palette). For a field or property, the value returned is displayed with ToString, so whatever you tag with this must have a ToString() method. This isn't an issue for most types of fields or properties that you might use, but keep it in mind. Sometimes you can create a property just to show it as a label, based on other values in your Tile class |
| CTilePlus.BezierCurve | Create a Bezier curve with up to 16 points |
| CTilePlus.BundleGuidMap | Stores the positions and TPT tile GUIDs for a Bundle |
| CTilePlus.CustomGuiReturn | Used to provide the return value from methods tagged with TptShowCustomGUI |
| CTilePlus.TpGoTweenSpec.GoTween | Individual tween spec |
| CTilePlus.IActionPlugin | Used with ZoneActions and EventActions to provide a way to have a second asset (typ, a Scriptable Obj but can be any UnityEngine.Object) be inspectable thru the IMGUI tile editor (selection inspector). Note that the asset ought to be a PROJECT asset and NOT a SCENE object, although this is not enforced or checked |
| CTilePlus.TpTileEventAction | -—BASE CLASS ONLY-— Assets of this type are added as refs to TPT tiles. Takes an action when a TileEvent is evaluated by a controlling program. Such a program can, when handling events, see if there's a ref to one in a tile and execute its code. Moves code from center to edges |
| CTilePlus.TpUiButtonEventAction | Simple Event Action for use with UiButtonTile and UiAnimButtonTile |
| CTilePlus.TpTileZoneAction | Assets of this type are added as refs to TilePlus tiles |
| CTilePlus.TpZoneActionRadio | Customized Zone Action to implement Radio Buttons |
| CTilePlus.IChunkSelector | Interface IChunkSelector |
| CTilePlus.TpChunkSelectorBase | Not for use, just a concrete base class |
| CTilePlus.TpChunkZoneSelector | A specialized ChunkSelector that uses the Chunkified data in Bundles to fill in empty areas in the ZoneLayout |
| CTilePlus.TpSingleFabChunkSelector | Base-class for Chunk Selectors as used by TpZoneLayout. This just returns the same TileFab each time |
| CTilePlus.IScriptableService | This interface lets TpLib's update pump (TpLibTasks) know what to update (not all SRS' need it) and if the SRS is ready to update (may not need it). Default is no updating and an empty Update method. It's also used to indicate if messages can be sent to the Service as well as what types of messages as well as indicating if this service should persist thru scene changes |
| CTilePlus.ScriptableRuntimeService< T > | Simple and simplistic base class for Runtime Services. "Scriptable Runtime Service" or SRS |
| CTilePlus.TpMessaging | Library of tile messaging methods. Note that it's a Service |
| CTilePlus.TpSpawner | Pooled spawner for TilePlus system |
| CTilePlus.TpTilePositionDb | A Scriptable Runtime Service implementing a mini-database of occupied positions on Tilemaps |
| CTilePlus.TpTweener | Tweener/Sequencer Scriptable Runtime Service (SRS) |
| CTilePlus.TpTilePositionDb | A Scriptable Runtime Service implementing a mini-database of occupied positions on Tilemaps |
| CTilePlus.TpTweener | Tweener/Sequencer Scriptable Runtime Service (SRS) |
| CTilePlus.ITilePlus | All tiles that want to use the special features of TilePlus Toolkit like the Tile+Brush and Tile+Painter need to implement this interface. NOTE: ensure that the methods and properties that are in the UNITY_EDITOR section below are placed in similarly-demarked regions in your code. Also be sure to provide backing fields for properties (if appropriate) to ensure serialization |
| CTilePlus.TilePlusBase | This is a base class for any TilePlus Tile. It implements all of the interfaces required by ITilePlus, with many virtual methods so you can override to add functionality as desired. It's inadvisable to change anything in this file |
| CTilePlus.TpAnimatedTile | Simple version of an animated tile that works with TilePlus |
| CTilePlus.TpFlexAnimatedTile | FlexAnimated Tiles are animated tiles using animation clips from an asset. Several animation sequences can be set up and selected at runtime. Animation can be started and stopped at runtime |
| CTilePlus.TpAnimZoneLoader | Zone-based tileset loader class |
| CTilePlus.TpAnimZoneSpawner | Animated zone spawner/painter tile class |
| CTilePlus.TpAnimatedSpawner | (New in Version 3.1) Base class for a simple Animated spawner Note that the position of the prefab is dictated by the position and positionIsRelative fields of the items in the prefab list. As written, spawned GOs are parented to the same tilemap as the Tile |
| CTilePlus.TpTweenSpecSequenceTile | This tweener tile plays a sequence using a TweenSpec asset for all the tweens. Here, the entirety of the list of tweens in the asset is used. However, note that in CreateSequenceFromSpec its possible to provide a list of indices into that asset's list of tweens so that you can customize the way this works in a subclass if you like |
| CTilePlus.TpTweenSpecTile | This Tweener tile uses a TweenSpec asset. What is that? It's just a list of params for setting up tweens. Since most of the time one uses the same tweens over and over this approach is much more useful than specifying the tween in the tile asset itself as is done in TpTweenerFlexTile |
| CTilePlus.TpTweenerFlexTile | The most flexible Tweener tile: set up the effect right in the TilePlus Selection inspector. It's handy to have so that you can play with all the settings easily. However, the Tweener tiles that use an asset are much more useful. See: TpTweenSpecTile - See also
- TpTweenSpecSequenceTile
Note that there are no messaging interfaces specified for this tile but ofc you can subclass it and add what you need or you can call PlayTween directly from code |
| CTilePlus.UiAnimButtonTile | Implements a button with hover. Can be a toggle or momentary. REQUIRES a clipset with THREE animations whose names match those provided in this instance. Note that the inactive animation can be just one tile if that works for you. If the tile's sprite or default sprite are not the same as the single sprite that may or may not be what you want. Once animation begins it's not possible to return to the default sprite, so the "Inactive" animation is used |
| CTilePlus.TpImmortalizer | TpImmortalizer tiles may be painted into a Zone (ie a square area of a particular size eg 8x8, 16x16 etc) to mark that Zone as Immortal when used with the Layout system. Note that this tile is a convenience, but the implementation is part of your app, see the ChunkingDemo for an example. |
| CTilePlus.TpSlideShow | Show a sprite at a time. Not animation |
| CTilePlus.UiAsciiCharTile | Tile that shows ASCII characters (i=32 and up) |
| CTilePlus.UiButtonTile | Implements a UI momentary button. Unlike UiToggleButtonTile, all that happens here is a color change. Simpler to understand |
| CTilePlus.UiRadioButtonTile | Subclass of SlideShow to create a radio button |
| CTilePlus.UiToggleButtonTile | Customized slide show tile implementing a Toggle or Momentary button. UNLIKE UiButtonTile, the alternate state is a different SlideShow image. In ButtonTile the Color is changed |
| CTilePlus.TpZoneAnimator | This tile spawns one or more prefabs and can control animation |
| CTilePlus.UiAsciiStringTile | This tile is only a zone. Arrange a seres of UiAsciiCharTiles in a rectangular array (1 col and N rows, or 1 row and N columns or N columns and M rows) and add a UiAsciiStringTile. Using the AsciiStringTile's Zone controls, draw a zone around the array of AsciiCharTiles. This is easy to do using Painter or Tile+Brush. – Now the AsciiStringTile is a controller for all of the AsciiChar tiles. At runtime, write strings to the AsciiStringTile and it'll treat the AsciiCharTiles as a group and place the string characters in the proper locations, with simple left, center, or right justification. o - ONLY left-to-right is supported. o - DOES NOT support editing. 0 - DOES NOT support sparse arrays of AsciiCharTiles: the entire zone must be filled with tiles. If not, you're adding spaces. The array of tiles can be a horizontal row, a vertical column, or a box. This tile assumes that the ASCII char tiles are on the same tilemap. If not, see UpdateTiles() |
| CTilePlus.UiHoverZone | A hoverable but not clickable zone |
| CTilePlus.TpAnimatedTile | Simple version of an animated tile that works with TilePlus |
| CTilePlus.TpFlexAnimatedTile | FlexAnimated Tiles are animated tiles using animation clips from an asset. Several animation sequences can be set up and selected at runtime. Animation can be started and stopped at runtime |
| CTilePlus.TpSlideShow | Show a sprite at a time. Not animation |
| CTilePlus.UiAsciiCharTile | Tile that shows ASCII characters (i=32 and up) |
| CTilePlus.ITpMessaging< in T > | Interface for using TpLib SendMessage methods |
| CTilePlus.IHoverableControl | This marks a tile as accepting BoolPackets for New Input System hover events. When used for zones, the packet value is true when a zone is entered or false when the zone is exited |
| CTilePlus.UiHoverZone | A hoverable but not clickable zone |
| CTilePlus.IZoneActionTarget | Apply this interface to a tile if it should respond to a ZoneAction as a target. Note that this inteface inherits from a particular ITpMessaging interface |
| CTilePlus.TpFlexAnimatedTile | FlexAnimated Tiles are animated tiles using animation clips from an asset. Several animation sequences can be set up and selected at runtime. Animation can be started and stopped at runtime |
| CTilePlus.TpSlideShow | Show a sprite at a time. Not animation |
| CTilePlus.TpAnimZoneLoader | Zone-based tileset loader class |
| CTilePlus.TpAnimZoneLoader | Zone-based tileset loader class |
| CTilePlus.TpAnimZoneSpawner | Animated zone spawner/painter tile class |
| CTilePlus.TpAnimatedSpawner | (New in Version 3.1) Base class for a simple Animated spawner Note that the position of the prefab is dictated by the position and positionIsRelative fields of the items in the prefab list. As written, spawned GOs are parented to the same tilemap as the Tile |
| CTilePlus.TpAnimatedTile | Simple version of an animated tile that works with TilePlus |
| CTilePlus.TpFlexAnimatedTile | FlexAnimated Tiles are animated tiles using animation clips from an asset. Several animation sequences can be set up and selected at runtime. Animation can be started and stopped at runtime |
| CTilePlus.TpSlideShow | Show a sprite at a time. Not animation |
| CTilePlus.TpSlideShow | Show a sprite at a time. Not animation |
| CTilePlus.TpZoneAnimator | This tile spawns one or more prefabs and can control animation |
| CTilePlus.TpZoneAnimator | This tile spawns one or more prefabs and can control animation |
| CTilePlus.UiAnimButtonTile | Implements a button with hover. Can be a toggle or momentary. REQUIRES a clipset with THREE animations whose names match those provided in this instance. Note that the inactive animation can be just one tile if that works for you. If the tile's sprite or default sprite are not the same as the single sprite that may or may not be what you want. Once animation begins it's not possible to return to the default sprite, so the "Inactive" animation is used |
| CTilePlus.UiButtonTile | Implements a UI momentary button. Unlike UiToggleButtonTile, all that happens here is a color change. Simpler to understand |
| CTilePlus.UiRadioButtonTile | Subclass of SlideShow to create a radio button |
| CTilePlus.UiToggleButtonTile | Customized slide show tile implementing a Toggle or Momentary button. UNLIKE UiButtonTile, the alternate state is a different SlideShow image. In ButtonTile the Color is changed |
| CTilePlus.ITpPersistenceBase | This is used to detect tiles that want to use this persistence scheme. It allows looking for tiles that implement this base interface without having to specify the in and out types |
| CTilePlus.ITpPersistence< out TR, in T > | Interface for built-in data save/restore scheme |
| CTilePlus.TpSlideShow | Show a sprite at a time. Not animation |
| CTilePlus.ITpSpawnUtilClient | Contract for tiles that spawn prefabs or paint tiles and want to use methods in TpSpawner |
| CTilePlus.TpAnimZoneSpawner | Animated zone spawner/painter tile class |
| CTilePlus.TpAnimatedSpawner | (New in Version 3.1) Base class for a simple Animated spawner Note that the position of the prefab is dictated by the position and positionIsRelative fields of the items in the prefab list. As written, spawned GOs are parented to the same tilemap as the Tile |
| CTilePlus.ITpUiControl | Interface to Tiles set up as UiControls |
| CTilePlus.UiAnimButtonTile | Implements a button with hover. Can be a toggle or momentary. REQUIRES a clipset with THREE animations whose names match those provided in this instance. Note that the inactive animation can be just one tile if that works for you. If the tile's sprite or default sprite are not the same as the single sprite that may or may not be what you want. Once animation begins it's not possible to return to the default sprite, so the "Inactive" animation is used |
| CTilePlus.UiAsciiCharTile | Tile that shows ASCII characters (i=32 and up) |
| CTilePlus.UiAsciiStringTile | This tile is only a zone. Arrange a seres of UiAsciiCharTiles in a rectangular array (1 col and N rows, or 1 row and N columns or N columns and M rows) and add a UiAsciiStringTile. Using the AsciiStringTile's Zone controls, draw a zone around the array of AsciiCharTiles. This is easy to do using Painter or Tile+Brush. – Now the AsciiStringTile is a controller for all of the AsciiChar tiles. At runtime, write strings to the AsciiStringTile and it'll treat the AsciiCharTiles as a group and place the string characters in the proper locations, with simple left, center, or right justification. o - ONLY left-to-right is supported. o - DOES NOT support editing. 0 - DOES NOT support sparse arrays of AsciiCharTiles: the entire zone must be filled with tiles. If not, you're adding spaces. The array of tiles can be a horizontal row, a vertical column, or a box. This tile assumes that the ASCII char tiles are on the same tilemap. If not, see UpdateTiles() |
| CTilePlus.UiButtonTile | Implements a UI momentary button. Unlike UiToggleButtonTile, all that happens here is a color change. Simpler to understand |
| CTilePlus.UiRadioButtonTile | Subclass of SlideShow to create a radio button |
| CTilePlus.UiToggleButtonTile | Customized slide show tile implementing a Toggle or Momentary button. UNLIKE UiButtonTile, the alternate state is a different SlideShow image. In ButtonTile the Color is changed |
| CTilePlus.ITSceneInitializer | Interface to use for TSceneInitilizers |
| CTilePlus.TSceneInitializer | -—BASE CLASS-— |
| CTilePlus.UiAsciiStringTile.JustifiedString | A justifiable string |
| CTilePlus.LoadWrapper | A wrapper for AssetRegistration saves |
| CTilePlus.MessagePacket< T > | Abstract base class for message packets |
| CTilePlus.ActionToTilePacket | A packet used to tell a tile that a user has clicked on it. See TpInputActionToTile component and TpActionToTile S.O. classes |
| CTilePlus.AnimatorControlPacket | A message packet with an info for an animator |
| CTilePlus.BoolPacket | Simple packet with just a boolean value |
| CTilePlus.EmptyPacket | Empty class to use when a placeholder is needed |
| CTilePlus.ObjectPacket | This is a 'union' of the most likely Types of objects one might like to send. For the UnityObject and object values the type is is available. The optional info string can be used to provide context (ie target switching actions based on what the string is), debug info, or left empty |
| CTilePlus.PositionPacket | Common message packet for a Vector3Int position to a tile |
| CTilePlus.PositionZmPacket | PositionPacket with Zone Manager reference |
| CTilePlus.SaveDataWrapper | A simple wrapper class for saving data |
| CTilePlus.SlideShowSaveData | Data object for slideshow tile |
| CTilePlus.StringPacket | Common message packet for a string sent to a tile. E.G., a JSON string for the tile to expand and use to restore data. Note that there's a pool for these in TpMessaging |
| CTilePlus.WantsEarlyUpdate | If a tile implements this then it will get Early Updates. See TpLibTasks |
| CTilePlus.MessagingContext | Used by the TpMessaging Service in its context stack. Pooled |
| CMonoBehaviour | |
| CTilePlus.SetDontDestroy | Simple component to set HideFlags to HideFlags.DontSave |
| CTilePlus.TilemapParallax | Simple Tilemap Parallax |
| CTilePlus.TpBundleLoader | A component that can be added to a Tilemap's GameObject that loads a tilemap archive Bundle |
| CTilePlus.TpChunkedSceneManager | A Scene Manager component for Tilemaps when used with the templating system (TileFabLib/TpZoneManager/TpZoneLayout) |
| CTilePlus.TpFabLoader | A component that can be added to a GRID's GameObject for loading an entire TileFab. Note that the names or tags of the Tilemaps need to match the names or tags embedded in the TileFab or this will not work |
| CTilePlus.TpGoTween | Simple tweener to attach to a GameObject Other examples in demo folder |
| CTilePlus.TpGoTweenSequence | Create and play a sequence |
| CTilePlus.TpGuidToAction | Send an ActionToTile message to a tile with a specfic GUID |
| CTilePlus.TpNote | A way to add a note to a stack of components Can also be used to add tags to game objects |
| CTilePlus.TpPrefabMarker | Marks this Prefab as created by the TilePlus Prefab Bundler. Loads tilefabs when a prefab is dragged-in or viewed in a Stage (in-editor), or when instantiated at runtime. Should be placed on the Tilemaps' parent Grid's GameObject |
| CTilePlus.TpSpawnLink | Simple class that exists to provide context for a spawned prefab. Includes init after spawn, despawning, optional auto-destroy feature, etc., and an optional Note/Tag field |
| CTilePlus.TpZoneLayout | This is a simple chunking system based on TileFabs |
| CTilePlus.TpTileList.PaintingSpec | An individual tile painting specification |
| CTilePlus.PerkinsStringUtils | String utilities |
| CTilePlus.TpTileBundle.PrefabItem | Prefab info for use when loading tilesets |
| CScriptableObject | |
| CTilePlus.ScriptableRuntimeService< T > | Simple and simplistic base class for Runtime Services. "Scriptable Runtime Service" or SRS |
| CTilePlus.TSceneInitializer | -—BASE CLASS-— |
| CTilePlus.TSceneList | A Set of TScenes for the templating system (TileFabLib/TpZoneManager/TpZoneLayout) |
| CTilePlus.TpAnimatorAction | -—BASE CLASS-— This is used by TpZoneAnimator to provide customization |
| CTilePlus.TpChunkSelectorBase | Not for use, just a concrete base class |
| CTilePlus.TpGoTweenSpec | Tween specs list for GameObject tweens |
| CTilePlus.TpLibInit | TpLib runtime init. Asset must be in a Resources/Tp folder WARNING: if more than one of these exists in Resources then the first one found is used!! |
| CTilePlus.TpPrefabList | Asset with prefabs to spawn |
| CTilePlus.TpSlideShowSpriteSet | An asset with a set of slide show clips |
| CTilePlus.TpSpriteAnimationClipSet | An asset with sprites to animate |
| CTilePlus.TpTileBundle | An asset used to bundle-up tiles for later re-creation. Since Transforms, Colors, and Flags values are often the same, those are indexed to save space. Note this is a partial class |
| CTilePlus.TpTileEventAction | -—BASE CLASS ONLY-— Assets of this type are added as refs to TPT tiles. Takes an action when a TileEvent is evaluated by a controlling program. Such a program can, when handling events, see if there's a ref to one in a tile and execute its code. Moves code from center to edges |
| CTilePlus.TpTileFab | Class used when bundling tilemaps/grids |
| CTilePlus.TpTileList | A list of tilespawneritems |
| CTilePlus.TpTileZoneAction | Assets of this type are added as refs to TilePlus tiles |
| CTilePlus.TpTweenSpec | Tween specs list for Tpt tiles |
| CTilePlus.TpTweenerSubObject | This is a sub-object to be added to Event and/or Zone actions. This can be used as a base class. The implementation here plays a sequence |
| CTilePlus.TpZoneManager | TpZoneManager is used to manage square areas of tilemaps called Zones |
| CTilePlus.StandardEventData | Used for EventAction data. TilePlusBase.EventActionObject |
| CStateMachineBehaviour | |
| CTilePlus.AnimStateTilePingerBase | Use as a state machine behaviour to notify a TPT tile, e.g. a TpZoneAnimator. TpZoneAnimator pokes its instance ID into the animator as a parameter (called 'id'). Other uses of this class require a similar setup |
| CTilePlus.TemplateSelectorQueryResults< T > | Used for return values for TpChunkTemplateSelector.GetTilePlusTilesOfType |
| CTile | |
| CTilePlus.TilePlusBase | This is a base class for any TilePlus Tile. It implements all of the interfaces required by ITilePlus, with many virtual methods so you can override to add functionality as desired. It's inadvisable to change anything in this file |
| CTilePlus.TpBundleTile | A proxy for a TpTileBundle. Overwrites itself with the Bundle when painted |
| CTilePlus.TileFabLib | Utilities for Tilefab loading |
| CTilePlus.TileFabLoadParams | Parameter list items for using LoadTileFabs(List<TileFabLoadParams> loadParams, ref List<TilefabLoadResults> loadResultsList) INTENTIONALLY not serializable since contents are not completely serializable |
| CTilePlus.TilefabLoadResults | Results from using LoadImportedTilefab |
| CTilePlus.TpTileBundle.TilePlusItem | Specification for one TilePlus tile |
| CTilePlus.TilePlusPrefabSpawnerItem | Specification for spawning a prefab |
| CTilePlus.TpTileBundle.TilePosition | What's at one particular position |
| CTilePlus.TpTileBundle.TilesetItem | Class with info about tiles. IEnumerable of instances of this is returned from Tileset method |
| CTilePlus.TpAniClip | Specification for a single animation clip |
| CTilePlus.TpEasingFunction | |
| CTilePlus.TpEvents | Events library for TilePlus tiles |
| CTilePlus.TpLib | This static class maintains edit-time and run-time dictionaries which track TilePlusBase items on a per-tilemap basis. In-Editor, heirarchy and tilemap changes are tracked and dictionaries are updated as necessary |
| CTilePlus.TpLibMemAlloc | This class is used when reallocating data structure sizes in TpLib. See TpLib.Resize |
| CTilePlus.TpServiceManager | Manages Runtime Scriptable Services. Registration, queries, diagnostics |
| CTilePlus.TpSlidesClip | Specification for a slideshow |
| CTilePlus.TpTileUtils | Some static utility methods for tile math |
| CTilePlus.TpTween | Data structure for a tween |
| CTilePlus.TpTweenSequence | Describes a sequence for use with TpTweener |
| CTilePlus.TpZoneManagerLib | Utility methods for working with the Zone Manager |
| CTilePlus.TSceneList.TScene | A TScene definition. This describes the relationshop between a ChunkTemplateSelector and the TpZoneLayout it should use. Note that the field m_LayoutSpec if injected at runtime since it's a scene object |
| CTilePlus.TSceneList.TSceneSpec | The control info for a scene's layout for ONE selector and grid |
| CTilePlus.TpTweenSpec.Tween | Individual tween spec |
| CTilePlus.TpTileBundle.UnityTileItem | Specification for one Unity tile |
| CTilePlus.ZoneReg | Specification for individual items in the "breadcrumbs" list. Info in here is used for TileFab loading/persistence and for Chunking. There is one of these for each TileFab loaded. The names may seem odd but they're short in order to keep the file size shorter |