TopDown Engine
v4.1
|
A class meant to spawn objects (usually item pickers, but not necessarily) The spawn can be triggered by any script, at any time, and comes with automatic hooks to trigger loot on damage or death More...
Public Types | |
enum | LootModes { LootModes.Unique, LootModes.LootTable, LootModes.LootTableScriptableObject } |
the possible modes by which loot can be defined More... | |
enum | DimensionModes { DimensionModes.TwoD, DimensionModes.ThreeD } |
the possible modes collision detection can operate on More... | |
Public Member Functions | |
virtual void | ResetRemainingQuantity () |
Resets the remaining quantity to the maximum quantity More... | |
virtual void | InitializeLootTable () |
Computes the associated loot table's weights More... | |
virtual void | SpawnLoot () |
This method spawns the specified loot after applying a delay (if there's one) More... | |
virtual void | SpawnOneLoot () |
Spawns a single loot object, without delay, and regardless of the defined quantities More... | |
Public Attributes | |
LootModes | LootMode = LootModes.Unique |
GameObject | GameObjectToLoot |
the object to loot, when in LootMode More... | |
MMLootTableGameObject | LootTable |
a loot table defining what objects to spawn More... | |
MMLootTableGameObjectSO | LootTableSO |
a loot table scriptable object defining what objects to spawn More... | |
bool | SpawnLootOnDeath = true |
if this is true, loot will happen when this object dies More... | |
bool | SpawnLootOnDamage = false |
if this is true, loot will happen when this object takes damage More... | |
bool | PoolLoot = false |
if this is true, lootables will be pooled More... | |
int | PoolSize = 20 |
determines the size of the pool for each object in the loot table More... | |
string | MutualizedPoolName = "" |
a unique name for this pool, has to be common between all Loot objects sharing the same loot table if you want to mutualize their pools More... | |
bool | CanSpawn = true |
if this is false, spawn won't happen More... | |
float | Delay = 0f |
a delay (in seconds) to wait for before spawning loot More... | |
Vector2 | Quantity = Vector2.one |
the minimum and maximum quantity of objects to spawn More... | |
MMSpawnAroundProperties | SpawnProperties |
the position, rotation and scale objects should spawn at More... | |
bool | LimitedLootQuantity = true |
if this is true, loot will be limited to MaximumQuantity, any new loot attempt beyond that will have no outcome. If this is false, loot is unlimited and can happen forever. More... | |
int | MaximumQuantity = 100 |
The maximum quantity of objects that can be looted from this Loot object. More... | |
int | RemainingQuantity = 100 |
The remaining quantity of objects that can be looted from this Loot object, displayed for debug purposes. More... | |
bool | AvoidObstacles = false |
Whether or not spawned objects should try and avoid obstacles. More... | |
DimensionModes | DimensionMode = DimensionModes.TwoD |
whether collision detection should happen in 2D or 3D More... | |
LayerMask | AvoidObstaclesLayerMask = LayerManager.ObstaclesLayerMask |
the layer mask containing layers the spawned objects shouldn't collide with More... | |
float | AvoidRadius = 0.25f |
the radius around the object within which no obstacle should be found More... | |
int | MaxAvoidAttempts = 5 |
the amount of times the script should try finding another position for the loot if the last one was within an obstacle. More attempts : better results, higher cost More... | |
MMFeedbacks | LootFeedback |
A MMFeedbacks to play when spawning loot. Only one feedback will play. If you want one per item, it's best to place it on the item itself, and have it play when the object gets instantiated. More... | |
bool | DrawGizmos = false |
if this is true, gizmos will be drawn to show the shape within which loot will spawn More... | |
int | GizmosQuantity = 1000 |
the amount of gizmos to draw More... | |
Color | GizmosColor = MMColors.LightGray |
the color the gizmos should be drawn with More... | |
float | GimosSize = 1f |
the size at which to draw the gizmos More... | |
bool | SpawnLootButton |
a debug button used to trigger a loot More... | |
Static Public Attributes | |
static List< MMSimpleObjectPooler > | SimplePoolers = new List<MMSimpleObjectPooler>() |
static List< MMMultipleObjectPooler > | MultiplePoolers = new List<MMMultipleObjectPooler>() |
Protected Member Functions | |
virtual void | Awake () |
On Awake we grab the health component if there's one, and initialize our loot table More... | |
virtual void | InitializePools () |
virtual MMSimpleObjectPooler | FindSimplePooler () |
virtual MMMultipleObjectPooler | FindMultiplePooler () |
virtual void | SpawnLootDebug () |
A debug method called by the inspector button More... | |
virtual IEnumerator | SpawnLootCo () |
A coroutine used to spawn loot after a delay More... | |
virtual void | Spawn (GameObject gameObjectToSpawn) |
virtual GameObject | GetObject () |
Gets the object that should be spawned More... | |
virtual void | OnHit () |
On hit, we spawn loot if needed More... | |
virtual void | OnDeath () |
On death, we spawn loot if needed More... | |
virtual void | OnEnable () |
OnEnable we start listening for death and hit if needed More... | |
virtual void | OnDisable () |
OnDisable we stop listening for death and hit if needed More... | |
virtual void | OnDrawGizmos () |
OnDrawGizmos, we display the shape at which objects will spawn when looted More... | |
Static Protected Member Functions | |
static void | InitializeStatics () |
Protected Attributes | |
Health | _health |
GameObject | _objectToSpawn |
GameObject | _spawnedObject |
Vector3 | _raycastOrigin |
RaycastHit2D | _raycastHit2D |
Collider[] | _overlapBox |
MMSimpleObjectPooler | _simplePooler |
MMMultipleObjectPooler | _multipleObjectPooler |
A class meant to spawn objects (usually item pickers, but not necessarily) The spawn can be triggered by any script, at any time, and comes with automatic hooks to trigger loot on damage or death
|
strong |
|
strong |
|
protectedvirtual |
On Awake we grab the health component if there's one, and initialize our loot table
|
protectedvirtual |
|
protectedvirtual |
|
protectedvirtual |
Gets the object that should be spawned
|
virtual |
Computes the associated loot table's weights
|
protectedvirtual |
|
staticprotected |
|
protectedvirtual |
On death, we spawn loot if needed
|
protectedvirtual |
OnDisable we stop listening for death and hit if needed
|
protectedvirtual |
OnDrawGizmos, we display the shape at which objects will spawn when looted
|
protectedvirtual |
OnEnable we start listening for death and hit if needed
|
protectedvirtual |
On hit, we spawn loot if needed
|
virtual |
Resets the remaining quantity to the maximum quantity
|
protectedvirtual |
|
virtual |
This method spawns the specified loot after applying a delay (if there's one)
|
protectedvirtual |
A coroutine used to spawn loot after a delay
|
protectedvirtual |
A debug method called by the inspector button
|
virtual |
Spawns a single loot object, without delay, and regardless of the defined quantities
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
bool MoreMountains.TopDownEngine.Loot.AvoidObstacles = false |
Whether or not spawned objects should try and avoid obstacles.
LayerMask MoreMountains.TopDownEngine.Loot.AvoidObstaclesLayerMask = LayerManager.ObstaclesLayerMask |
the layer mask containing layers the spawned objects shouldn't collide with
float MoreMountains.TopDownEngine.Loot.AvoidRadius = 0.25f |
the radius around the object within which no obstacle should be found
bool MoreMountains.TopDownEngine.Loot.CanSpawn = true |
if this is false, spawn won't happen
float MoreMountains.TopDownEngine.Loot.Delay = 0f |
a delay (in seconds) to wait for before spawning loot
DimensionModes MoreMountains.TopDownEngine.Loot.DimensionMode = DimensionModes.TwoD |
whether collision detection should happen in 2D or 3D
bool MoreMountains.TopDownEngine.Loot.DrawGizmos = false |
if this is true, gizmos will be drawn to show the shape within which loot will spawn
GameObject MoreMountains.TopDownEngine.Loot.GameObjectToLoot |
the object to loot, when in LootMode
float MoreMountains.TopDownEngine.Loot.GimosSize = 1f |
the size at which to draw the gizmos
Color MoreMountains.TopDownEngine.Loot.GizmosColor = MMColors.LightGray |
the color the gizmos should be drawn with
int MoreMountains.TopDownEngine.Loot.GizmosQuantity = 1000 |
the amount of gizmos to draw
bool MoreMountains.TopDownEngine.Loot.LimitedLootQuantity = true |
if this is true, loot will be limited to MaximumQuantity, any new loot attempt beyond that will have no outcome. If this is false, loot is unlimited and can happen forever.
MMFeedbacks MoreMountains.TopDownEngine.Loot.LootFeedback |
A MMFeedbacks to play when spawning loot. Only one feedback will play. If you want one per item, it's best to place it on the item itself, and have it play when the object gets instantiated.
LootModes MoreMountains.TopDownEngine.Loot.LootMode = LootModes.Unique |
the selected loot mode :
MMLootTableGameObject MoreMountains.TopDownEngine.Loot.LootTable |
a loot table defining what objects to spawn
MMLootTableGameObjectSO MoreMountains.TopDownEngine.Loot.LootTableSO |
a loot table scriptable object defining what objects to spawn
int MoreMountains.TopDownEngine.Loot.MaxAvoidAttempts = 5 |
the amount of times the script should try finding another position for the loot if the last one was within an obstacle. More attempts : better results, higher cost
int MoreMountains.TopDownEngine.Loot.MaximumQuantity = 100 |
The maximum quantity of objects that can be looted from this Loot object.
|
static |
string MoreMountains.TopDownEngine.Loot.MutualizedPoolName = "" |
a unique name for this pool, has to be common between all Loot objects sharing the same loot table if you want to mutualize their pools
bool MoreMountains.TopDownEngine.Loot.PoolLoot = false |
if this is true, lootables will be pooled
int MoreMountains.TopDownEngine.Loot.PoolSize = 20 |
determines the size of the pool for each object in the loot table
Vector2 MoreMountains.TopDownEngine.Loot.Quantity = Vector2.one |
the minimum and maximum quantity of objects to spawn
int MoreMountains.TopDownEngine.Loot.RemainingQuantity = 100 |
The remaining quantity of objects that can be looted from this Loot object, displayed for debug purposes.
|
static |
bool MoreMountains.TopDownEngine.Loot.SpawnLootButton |
a debug button used to trigger a loot
bool MoreMountains.TopDownEngine.Loot.SpawnLootOnDamage = false |
if this is true, loot will happen when this object takes damage
bool MoreMountains.TopDownEngine.Loot.SpawnLootOnDeath = true |
if this is true, loot will happen when this object dies
MMSpawnAroundProperties MoreMountains.TopDownEngine.Loot.SpawnProperties |
the position, rotation and scale objects should spawn at