![]() |
TilePlus Version 5
Unity3D Tilemap Extension
|
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. More...


Public Member Functions | |||||||
| override bool | StartUp (Vector3Int position, ITilemap tilemap, GameObject go) | ||||||
| Tiles can be in three states: Asset, Clone, Locked. See the Programmer's Guide for more info. NOTE: if overriding this BE SURE to call this base method as the FIRST thing you do! Note the return value and return FALSE if this base method returns FALSE. | |||||||
| override void | GetTileData (Vector3Int position, ITilemap tilemap, ref TileData tileData) | ||||||
| Get data for this tile. Override of Tile. Note that Tilemap.RefreshTile calls this. | |||||||
| virtual void | CleanUp () | ||||||
| Implement to perform cleanup. RequiresCleanup | |||||||
| override string | ToString () | ||||||
| virtual void | ResetState (TileResetOperation op) | ||||||
| Used to reset state variables. May need overriding in subclasses. See programmer's guide for info on overriding this. | |||||||
| virtual bool | UpdateInstance (string[] value) | ||||||
| Default inplementation of UpdateInstance. | |||||||
| virtual void | ActivateAnimation (bool turnOn, int startingFrame=0, bool ignoreRewindingState=false) | ||||||
Turn animation on/off for tiles which support it.
| |||||||
| virtual void | PauseAnimation (bool pause) | ||||||
Pause a running animation.
| |||||||
| virtual void | LoopEndedCallback () | ||||||
| Loop-ended callback handler (originates from Tilemap component) | |||||||
| Public Member Functions inherited from TilePlus.ITilePlus | |||||||
| bool | ExecEventAction (UnityEngine.Object? obj) | ||||||
| Exec the event action, if any. | |||||||
Public Attributes | |
| int | count |
| Property to get a tuple of (count, array of individually-trimmed tags). not cached. | |
| ColliderMode | m_ColliderMode = ColliderMode.NoCollider |
| Used to set up the tile's collider. | |
| SpriteClearMode | m_TileSpriteClear = SpriteClearMode.Ignore |
| m_TileClear controls whether or not the tile's sprite is cleared or if the tile is deleted at runtime, or nothing. | |
| string | m_Tag = string.Empty |
| The tag for this tile. | |
| OversizeSpriteMode | m_OversizeSpriteMode = OversizeSpriteMode.Ignore |
| How to handle oversize sprite recognition. | |
| Vector2 | m_SpriteSize = Vector2.one |
| The true size of the tile sprite. See Oversize Sprite Mode. | |
| TpTileEventAction? | m_EventAction |
| TpTileEventAction project asset reference. May be null. | |
| TpTileZoneAction? | m_ZoneAction |
| TpTileZoneAction project asset reference. May be null. | |
| bool | m_ZoneIsInUse = false |
| Zone capabilities active. | |
| Public Attributes inherited from TilePlus.ITilePlus | |
| int | count |
| Property to get an array of individually-trimmed tags. | |
Protected Member Functions | |
| void | SetColliderType (ref TileData tileData) |
| Sets up colliders. | |
Protected Attributes | |
| Vector3Int | m_TileGridPosition = new(int.MinValue, int.MinValue, int.MinValue) |
| The tile grid position gets initialized in Startup. It's initialized with 'ImpossibleGridPosition'. | |
| Vector3Int | m_LastTileGridPosition = new(int.MinValue, int.MinValue, int.MinValue) |
| The previous tile grid position. | |
| Tilemap? | m_LastParentMap |
| The previous parent Tilemap. | |
| bool | m_TileGridPosHasChanged |
| True if the tile grid position has changed. | |
| bool | m_ParentTilemapHasChanged |
| Parent tilemap has changed if true. | |
| Tilemap? | m_ParentTilemap |
| Parent tile map is initialized in Startup. | |
| BoundsInt | m_ZoneBoundsInt = new(Vector3Int.zero,new Vector3Int(3,3,1)) |
| BoundsInt of trigger zone. Initialized to a 3x3 area centered at the Tile's location. | |
Properties | |
| bool | SpriteShouldBeCleared [get] |
| Returns true if tile sprite should be cleared based on setting of TileSpriteClear field, tile state, and whether in Play mode or not. | |
| byte?[] | TileGuidBytes [get, set] |
| The clone's GUID. Note that IDs are individual for each clone. This value can only be set once. Calling ResetState allows it to be changed until the next StartUp. If a new GUID isn't added before StartUp then that method will add it. For example: see TpLib.CopyAndPasteTile Note: generally speaking, don't reset the GUID. | |
| string | TileName [get] |
| TilePlusBase | ThisTileInstance [get] |
| Get the tile's instance thru this interface. | |
| int | Id [get] |
| Id of tile. Nominally GetInstanceId. Default returns 0. | |
| bool | GetTileDataHasRun [get] |
| TRUE if GetTileData has run. If this is false when TpLib.RegisterTilePlus is executed then TpLib checks to see if the tile's sprite needs to be affected. See that code for an explanation. | |
| static Vector3Int | ImpossibleGridPosition = new(int.MinValue, int.MinValue, int.MinValue) [get] |
| No tile will ever be here! | |
| Vector3Int | TileGridPosition [get] |
| This is the tile grid position as set from StartUp. Intentionally non-virtual. Does not need (and should not have) serialized backing field. Note that backing field is initialized to "Impossible Grid Position". | |
| Vector3 | TileWorldPosition [get] |
| Handy property to get the world position from the TileGridPosition property. returns Vector3.negativeInfinity for error SO CHECK FOR THAT! note: returns cell center as world position. | |
| Vector3Int | LastTileGridPosition [get] |
| Get the last tile grid position Note that backing field is initialized to "Impossible Grid Position". | |
| Tilemap? | LastParentTilemap [get] |
| Get the last parent Tilemap. Note that backing firld is initialized to NULL. | |
| bool | TileGridPosHasChanged [get] |
| Has the tile position changed since the last StartUp? | |
| bool | ParentTilemapHasChanged [get] |
| Has the tile's parent tilemap changed since the last StartUp? | |
| Tilemap? | ParentTilemap [get] |
| Parent tilemap for this tile (set in clone). Intentionally non-virtual. Does not need (and should not have) serialized backing field. | |
| int | ParentTilemapInstanceId [get] |
| The instance ID of the parent tilemap. | |
| bool | AnimationIsPaused [get] |
| Property to determine if animation is PAUSED. | |
| virtual bool | IsOneShotWaitingToRewind [get] |
| Override in any animated tiles. | |
| bool | TileAnimationActive [get] |
| Property to determine if animation is running in the tile. Note: running=true and paused=true is fine. | |
| bool | AnimationIsRunning [get] |
| Property to determine if Tile animation is ACTIVE and not paused: IE actual animation is running. | |
| bool | IsClone [get] |
| Is this a clone? Read-only. | |
| bool | IsAsset [get] |
| Is this an asset? Read-only. | |
| bool | IsLocked [get] |
| Is this a locked tile? Read-only. | |
| bool | IsPaletteTile [get, set] |
| Valid only in-editor, is this tile from the Palette? | |
| string | TileStateString [get] |
| String version of TileState. | |
| Guid | TileGuid [get] |
| Get the tile's GUID as a GUID struct. | |
| string | TileGuidString [get] |
| The clone's GUID as a string. | |
| int string[] tags | TrimmedTags [get] |
| virtual bool | RequiresCleanup [get] |
| If a particular tile requires special cleanup prior to deletion, EXPLICITLY implement this method and return TRUE. TpZoneAnimator | |
| bool | SanityCheck [get] |
| If handling an animation callback, this is useful to ensure that the TPT tile instance is actually still attached to a Tilemap and not just transiently sitting in memory (ie deleted but not yet purged from a List or HashSet somewhere. | |
| static TpTweener | TweenerService [get] |
| GET a reference to the tweener service. It's only used by TilePlus tiles. | |
| virtual ColliderMode | TileColliderMode [get, set] |
| Used to set up the tile's collider. | |
| SpriteClearMode | TileSpriteClear [get, set] |
| Get the the tile sprite clear mode. | |
| string | Tag [get, set] |
| Property to get the optional tag. | |
| OversizeSpriteMode | OversizeSpriteMode [get] |
| This is used by the PositionDb to calculate the actual size of a sprite when determining if a position is occupied. | |
| Vector2 | SpriteSize [get] |
| What is the size of the sprite? Override when implementing OversizeSpriteMode. | |
| TpTileEventAction? | EventAction [get] |
| A TpTileEventAction. | |
| virtual ? object | EventActionObject [get, set] |
| TpTileZoneAction? | ZoneAction [get] |
| A TpTileZoneAction. | |
| BoundsInt | ZoneBoundsInt [get, set] |
| The BoundsInt for the zone. | |
| Bounds | ZoneBounds [get] |
| A bounds based on the ZoneBoundsInt. | |
| Properties inherited from TilePlus.ITilePlus | |
| Scene | ParentScene [get] |
| Return the scene that the Tile is in. Only works on a placed tile; on a non-cloned tile it should return default Note: check the return value for Scene.IsValid. | |
| bool | IsComputeOnly [get] |
| Indicate that this tile is 'compute only'. | |
| GameObject? | InstantiatedGameObject [get] |
| Get the GameObject of the tile. Convenience, saves casting in editors. | |
| bool | AnimationSupported [get] |
| This tile supports animation if true. | |
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.
|
virtual |
Turn animation on/off for tiles which support it.
| turnOn | true/false = on/off |
| startingFrame | sets the current frame to 0 (for either operation). Use -1 to inhibit. |
| ignoreRewindingState | if false(default) then this method does not execute when waiting for a rewind - only when one-shot is used w/rewindAfterOneShot set true |
Implements TilePlus.ITilePlus.
Reimplemented in TilePlus.TpAnimatedTile, and TilePlus.TpFlexAnimatedTile.
|
virtual |
Implement to perform cleanup. RequiresCleanup
Implements TilePlus.ITilePlus.
Reimplemented in TilePlus.TpZoneAnimator.
| override void TilePlus.TilePlusBase.GetTileData | ( | Vector3Int | position, |
| ITilemap | tilemap, | ||
| ref TileData | tileData ) |
Get data for this tile. Override of Tile. Note that Tilemap.RefreshTile calls this.
| position | The position. |
| tilemap | The tilemap. |
| tileData | The tile data. |
See subclasses for how to override. Note that the order of execution for GetTileData is BEFORE StartUp
|
virtual |
Loop-ended callback handler (originates from Tilemap component)
Implements TilePlus.ITilePlus.
Reimplemented in TilePlus.TpAnimatedTile, and TilePlus.TpFlexAnimatedTile.
|
virtual |
Pause a running animation.
| pause |
Implements TilePlus.ITilePlus.
Reimplemented in TilePlus.TpAnimatedTile, and TilePlus.TpFlexAnimatedTile.
|
virtual |
Used to reset state variables. May need overriding in subclasses. See programmer's guide for info on overriding this.
| op | The type of reset operation |
op=Restore is used only in editor mode, when picked tiles are painted. As the picked tiles are moved around the map, their Startup is called many times by Editor code, placing incorrect grid position and possible incorrect map refs in m_TileGridPosition and m_ParentTilemap.
Implements TilePlus.ITilePlus.
Reimplemented in TilePlus.TpAnimatedSpawner, TilePlus.TpAnimZoneLoader, TilePlus.TpAnimZoneSpawner, TilePlus.TpFlexAnimatedTile, TilePlus.TpTweenerFlexTile, TilePlus.TpTweenSpecSequenceTile, and TilePlus.TpTweenSpecTile.
|
protected |
Sets up colliders.
| tileData | ref to the tileData |
| override bool TilePlus.TilePlusBase.StartUp | ( | Vector3Int | position, |
| ITilemap | tilemap, | ||
| GameObject | go ) |
Tiles can be in three states: Asset, Clone, Locked. See the Programmer's Guide for more info. NOTE: if overriding this BE SURE to call this base method as the FIRST thing you do! Note the return value and return FALSE if this base method returns FALSE.
| position | Position of the Tile on the Tilemap. |
| tilemap | The Tilemap the tile is present on. |
| go | The GameObject instantiated for the Tile. |
Note that the order of execution for StartUp is AFTER GetTileData. Note that the gameObject passed-in to StartUp is in the Scene. Explanation: In GetTileData, the gameObject to instantiate is being provided to the TileMap. Here, that instantiated GO is being passed in to this method. so the go referred to here is the actual GameObject in the scene and not the asset.
| override string TilePlus.TilePlusBase.ToString | ( | ) |
|
virtual |
Default inplementation of UpdateInstance.
an array of field names that have been changed in the Editor via the ImGuiTileEditor module
when this is called as base, be sure to OR with the returned value if your override wants to return false.
when TRUE is returned any clients of the OnTpLibChanged event need to handle all the appropriate cases. See TilePlusViewer for an example.
NOTE: changes to Tags are handled in TpLib.
Reimplemented in TilePlus.TpFlexAnimatedTile, and TilePlus.TpSlideShow.
| int TilePlus.TilePlusBase.count |
Property to get a tuple of (count, array of individually-trimmed tags). not cached.
returns null if there are no tags, or an empty list if all trimmed tags eval to empty>
| ColliderMode TilePlus.TilePlusBase.m_ColliderMode = ColliderMode.NoCollider |
Used to set up the tile's collider.
| TpTileEventAction? TilePlus.TilePlusBase.m_EventAction |
TpTileEventAction project asset reference. May be null.
|
protected |
The previous parent Tilemap.
|
protected |
The previous tile grid position.
| OversizeSpriteMode TilePlus.TilePlusBase.m_OversizeSpriteMode = OversizeSpriteMode.Ignore |
How to handle oversize sprite recognition.
|
protected |
Parent tile map is initialized in Startup.
|
protected |
Parent tilemap has changed if true.
| Vector2 TilePlus.TilePlusBase.m_SpriteSize = Vector2.one |
The true size of the tile sprite. See Oversize Sprite Mode.
| string TilePlus.TilePlusBase.m_Tag = string.Empty |
The tag for this tile.
|
protected |
True if the tile grid position has changed.
|
protected |
The tile grid position gets initialized in Startup. It's initialized with 'ImpossibleGridPosition'.
| SpriteClearMode TilePlus.TilePlusBase.m_TileSpriteClear = SpriteClearMode.Ignore |
m_TileClear controls whether or not the tile's sprite is cleared or if the tile is deleted at runtime, or nothing.
| TpTileZoneAction? TilePlus.TilePlusBase.m_ZoneAction |
TpTileZoneAction project asset reference. May be null.
inheritdoc />
|
protected |
BoundsInt of trigger zone. Initialized to a 3x3 area centered at the Tile's location.
| bool TilePlus.TilePlusBase.m_ZoneIsInUse = false |
Zone capabilities active.
|
get |
Property to determine if animation is PAUSED.
true if animation is paused
Checking the tile's PAUSE flag
Implements TilePlus.ITilePlus.
|
get |
Property to determine if Tile animation is ACTIVE and not paused: IE actual animation is running.
Implements TilePlus.ITilePlus.
|
get |
Implements TilePlus.ITilePlus.
|
getset |
If a tile is using TpEvents to pass events to a EventAction and said tile wants to include an arbitrary data object, make it available through this property. It will be passed to the event action in the 'obj' input parameter. TpUiButtonEventAction.Exec
The default value if not overridden or overwritten is string.empty, m_ZoneBoundsInt, this (i.e., this tile).
Implements TilePlus.ITilePlus.
|
get |
TRUE if GetTileData has run. If this is false when TpLib.RegisterTilePlus is executed then TpLib checks to see if the tile's sprite needs to be affected. See that code for an explanation.
|
get |
Id of tile. Nominally GetInstanceId. Default returns 0.
Implements TilePlus.ITilePlus.
|
staticget |
No tile will ever be here!
An impossible grid position.
This is essentially a constant
|
get |
Is this an asset? Read-only.
true if this instance is asset; otherwise, false.
Implements TilePlus.ITilePlus.
|
get |
Is this a clone? Read-only.
true if this instance is clone; otherwise, false.
Implements TilePlus.ITilePlus.
|
get |
Is this a locked tile? Read-only.
true if this instance is locked; otherwise, false.
Locked means that the tile is no longer a scene object, it's from an asset file.
Implements TilePlus.ITilePlus.
|
get |
Override in any animated tiles.
Implements TilePlus.ITilePlus.
|
getset |
Valid only in-editor, is this tile from the Palette?
|
get |
Get the last parent Tilemap. Note that backing firld is initialized to NULL.
Implements TilePlus.ITilePlus.
|
get |
Get the last tile grid position Note that backing field is initialized to "Impossible Grid Position".
The last tile grid position.
Implements TilePlus.ITilePlus.
|
get |
This is used by the PositionDb to calculate the actual size of a sprite when determining if a position is occupied.
Implements TilePlus.ITilePlus.
|
get |
Parent tilemap for this tile (set in clone). Intentionally non-virtual. Does not need (and should not have) serialized backing field.
The parent tilemap.
Implements TilePlus.ITilePlus.
|
get |
Has the tile's parent tilemap changed since the last StartUp?
true if the tile's parent tilemap has changed; otherwise, false.
Implements TilePlus.ITilePlus.
|
get |
The instance ID of the parent tilemap.
Implements TilePlus.ITilePlus.
|
get |
If a particular tile requires special cleanup prior to deletion, EXPLICITLY implement this method and return TRUE. TpZoneAnimator
Implements TilePlus.ITilePlus.
|
get |
If handling an animation callback, this is useful to ensure that the TPT tile instance is actually still attached to a Tilemap and not just transiently sitting in memory (ie deleted but not yet purged from a List or HashSet somewhere.
|
getprotected |
Returns true if tile sprite should be cleared based on setting of TileSpriteClear field, tile state, and whether in Play mode or not.
true if the sprite should be cleared.
|
get |
What is the size of the sprite? Override when implementing OversizeSpriteMode.
Implements TilePlus.ITilePlus.
|
getset |
|
get |
|
get |
Property to determine if animation is running in the tile. Note: running=true and paused=true is fine.
Implements TilePlus.ITilePlus.
|
getset |
|
get |
Has the tile position changed since the last StartUp?
true if the tile's grid position has changed; otherwise, false.
Implements TilePlus.ITilePlus.
|
get |
This is the tile grid position as set from StartUp. Intentionally non-virtual. Does not need (and should not have) serialized backing field. Note that backing field is initialized to "Impossible Grid Position".
The tile grid position.
Implements TilePlus.ITilePlus.
|
get |
|
getset |
The clone's GUID. Note that IDs are individual for each clone. This value can only be set once. Calling ResetState allows it to be changed until the next StartUp. If a new GUID isn't added before StartUp then that method will add it. For example: see TpLib.CopyAndPasteTile Note: generally speaking, don't reset the GUID.
The tile unique identifier bytes.
Guid isn't serializable but byte[] is.
Implements TilePlus.ITilePlus.
|
get |
|
get |
|
getset |
Get the the tile sprite clear mode.
The SpriteClearMode value.
default implementation in interface returns SpriteClearMode.Ignore
Implements TilePlus.ITilePlus.
|
get |
|
get |
Handy property to get the world position from the TileGridPosition property. returns Vector3.negativeInfinity for error SO CHECK FOR THAT! note: returns cell center as world position.
The tile world position.
Implements TilePlus.ITilePlus.
|
get |
Implements TilePlus.ITilePlus.
|
staticgetprotected |
GET a reference to the tweener service. It's only used by TilePlus tiles.
Tweener requires no special init.
|
get |
Implements TilePlus.ITilePlus.
|
get |
|
getset |