TopDown Engine v4.5
Loading...
Searching...
No Matches
MoreMountains.TopDownEngine.Loot Class Reference

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...

Inheritance diagram for MoreMountains.TopDownEngine.Loot:
MoreMountains.TopDownEngine.TopDownMonoBehaviour MoreMountains.Tools.MMMonoBehaviour

Public Types

enum  LootModes { Unique , LootTable , LootTableScriptableObject }
 the possible modes by which loot can be defined More...
enum  DimensionModes { TwoD , ThreeD }
 the possible modes collision detection can operate on More...

Public Member Functions

virtual void ResetRemainingQuantity ()
 Resets the remaining quantity to the maximum quantity.
virtual void InitializeLootTable ()
 Computes the associated loot table's weights.
virtual void SpawnLoot ()
 This method spawns the specified loot after applying a delay (if there's one)
virtual void SpawnOneLoot ()
 Spawns a single loot object, without delay, and regardless of the defined quantities.

Public Attributes

LootModes LootMode = LootModes.Unique
GameObject GameObjectToLoot
 the object to loot, when in LootMode
MMLootTableGameObject LootTable
 a loot table defining what objects to spawn
MMLootTableGameObjectSO LootTableSO
 a loot table scriptable object defining what objects to spawn
bool SpawnLootOnDeath = true
 if this is true, loot will happen when this object dies
bool SpawnLootOnDamage = false
 if this is true, loot will happen when this object takes damage
bool PoolLoot = false
 if this is true, lootables will be pooled
int PoolSize = 20
 determines the size of the pool for each object in the loot table
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
bool CanSpawn = true
 if this is false, spawn won't happen
float Delay = 0f
 a delay (in seconds) to wait for before spawning loot
Vector2 Quantity = Vector2.one
 the minimum and maximum quantity of objects to spawn
MMSpawnAroundProperties SpawnProperties
 the position, rotation and scale objects should spawn at
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.
int MaximumQuantity = 100
 The maximum quantity of objects that can be looted from this Loot object.
int RemainingQuantity = 100
 The remaining quantity of objects that can be looted from this Loot object, displayed for debug purposes.
bool AvoidObstacles = false
 Whether or not spawned objects should try and avoid obstacles.
DimensionModes DimensionMode = DimensionModes.TwoD
 whether collision detection should happen in 2D or 3D
LayerMask AvoidObstaclesLayerMask = LayerManager.ObstaclesLayerMask
 the layer mask containing layers the spawned objects shouldn't collide with
float AvoidRadius = 0.25f
 the radius around the object within which no obstacle should be found
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
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.
bool DrawGizmos = false
 if this is true, gizmos will be drawn to show the shape within which loot will spawn
int GizmosQuantity = 1000
 the amount of gizmos to draw
Color GizmosColor = MMColors.LightGray
 the color the gizmos should be drawn with
float GimosSize = 1f
 the size at which to draw the gizmos
bool SpawnLootButton
 a debug button used to trigger a loot

Static Public Attributes

static List< MMSimpleObjectPoolerSimplePoolers = new List<MMSimpleObjectPooler>()
static List< MMMultipleObjectPoolerMultiplePoolers = 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.
virtual void InitializePools ()
virtual MMSimpleObjectPooler FindSimplePooler ()
virtual MMMultipleObjectPooler FindMultiplePooler ()
virtual void SpawnLootDebug ()
 A debug method called by the inspector button.
virtual IEnumerator SpawnLootCo ()
 A coroutine used to spawn loot after a delay.
virtual void Spawn (GameObject gameObjectToSpawn)
virtual GameObject GetObject ()
 Gets the object that should be spawned.
virtual void OnHit ()
 On hit, we spawn loot if needed.
virtual void OnDeath ()
 On death, we spawn loot if needed.
virtual void OnEnable ()
 OnEnable we start listening for death and hit if needed.
virtual void OnDisable ()
 OnDisable we stop listening for death and hit if needed.
virtual void OnDrawGizmos ()
 OnDrawGizmos, we display the shape at which objects will spawn when looted.

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

Detailed Description

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.

Member Enumeration Documentation

◆ DimensionModes

the possible modes collision detection can operate on

Enumerator
TwoD 
ThreeD 

◆ LootModes

the possible modes by which loot can be defined

Enumerator
Unique 
LootTable 
LootTableScriptableObject 

Member Function Documentation

◆ Awake()

virtual void MoreMountains.TopDownEngine.Loot.Awake ( )
protectedvirtual

On Awake we grab the health component if there's one, and initialize our loot table.

◆ FindMultiplePooler()

virtual MMMultipleObjectPooler MoreMountains.TopDownEngine.Loot.FindMultiplePooler ( )
protectedvirtual

◆ FindSimplePooler()

virtual MMSimpleObjectPooler MoreMountains.TopDownEngine.Loot.FindSimplePooler ( )
protectedvirtual

◆ GetObject()

virtual GameObject MoreMountains.TopDownEngine.Loot.GetObject ( )
protectedvirtual

Gets the object that should be spawned.

Returns

◆ InitializeLootTable()

virtual void MoreMountains.TopDownEngine.Loot.InitializeLootTable ( )
virtual

Computes the associated loot table's weights.

◆ InitializePools()

virtual void MoreMountains.TopDownEngine.Loot.InitializePools ( )
protectedvirtual

◆ InitializeStatics()

void MoreMountains.TopDownEngine.Loot.InitializeStatics ( )
staticprotected

◆ OnDeath()

virtual void MoreMountains.TopDownEngine.Loot.OnDeath ( )
protectedvirtual

On death, we spawn loot if needed.

◆ OnDisable()

virtual void MoreMountains.TopDownEngine.Loot.OnDisable ( )
protectedvirtual

OnDisable we stop listening for death and hit if needed.

◆ OnDrawGizmos()

virtual void MoreMountains.TopDownEngine.Loot.OnDrawGizmos ( )
protectedvirtual

OnDrawGizmos, we display the shape at which objects will spawn when looted.

◆ OnEnable()

virtual void MoreMountains.TopDownEngine.Loot.OnEnable ( )
protectedvirtual

OnEnable we start listening for death and hit if needed.

◆ OnHit()

virtual void MoreMountains.TopDownEngine.Loot.OnHit ( )
protectedvirtual

On hit, we spawn loot if needed.

◆ ResetRemainingQuantity()

virtual void MoreMountains.TopDownEngine.Loot.ResetRemainingQuantity ( )
virtual

Resets the remaining quantity to the maximum quantity.

◆ Spawn()

virtual void MoreMountains.TopDownEngine.Loot.Spawn ( GameObject gameObjectToSpawn)
protectedvirtual

◆ SpawnLoot()

virtual void MoreMountains.TopDownEngine.Loot.SpawnLoot ( )
virtual

This method spawns the specified loot after applying a delay (if there's one)

◆ SpawnLootCo()

virtual IEnumerator MoreMountains.TopDownEngine.Loot.SpawnLootCo ( )
protectedvirtual

A coroutine used to spawn loot after a delay.

Returns

◆ SpawnLootDebug()

virtual void MoreMountains.TopDownEngine.Loot.SpawnLootDebug ( )
protectedvirtual

A debug method called by the inspector button.

◆ SpawnOneLoot()

virtual void MoreMountains.TopDownEngine.Loot.SpawnOneLoot ( )
virtual

Spawns a single loot object, without delay, and regardless of the defined quantities.

Member Data Documentation

◆ _health

Health MoreMountains.TopDownEngine.Loot._health
protected

◆ _multipleObjectPooler

MMMultipleObjectPooler MoreMountains.TopDownEngine.Loot._multipleObjectPooler
protected

◆ _objectToSpawn

GameObject MoreMountains.TopDownEngine.Loot._objectToSpawn
protected

◆ _overlapBox

Collider [] MoreMountains.TopDownEngine.Loot._overlapBox
protected

◆ _raycastHit2D

RaycastHit2D MoreMountains.TopDownEngine.Loot._raycastHit2D
protected

◆ _raycastOrigin

Vector3 MoreMountains.TopDownEngine.Loot._raycastOrigin
protected

◆ _simplePooler

MMSimpleObjectPooler MoreMountains.TopDownEngine.Loot._simplePooler
protected

◆ _spawnedObject

GameObject MoreMountains.TopDownEngine.Loot._spawnedObject
protected

◆ AvoidObstacles

bool MoreMountains.TopDownEngine.Loot.AvoidObstacles = false

Whether or not spawned objects should try and avoid obstacles.

◆ AvoidObstaclesLayerMask

LayerMask MoreMountains.TopDownEngine.Loot.AvoidObstaclesLayerMask = LayerManager.ObstaclesLayerMask

the layer mask containing layers the spawned objects shouldn't collide with

◆ AvoidRadius

float MoreMountains.TopDownEngine.Loot.AvoidRadius = 0.25f

the radius around the object within which no obstacle should be found

◆ CanSpawn

bool MoreMountains.TopDownEngine.Loot.CanSpawn = true

if this is false, spawn won't happen

◆ Delay

float MoreMountains.TopDownEngine.Loot.Delay = 0f

a delay (in seconds) to wait for before spawning loot

◆ DimensionMode

DimensionModes MoreMountains.TopDownEngine.Loot.DimensionMode = DimensionModes.TwoD

whether collision detection should happen in 2D or 3D

◆ DrawGizmos

bool MoreMountains.TopDownEngine.Loot.DrawGizmos = false

if this is true, gizmos will be drawn to show the shape within which loot will spawn

◆ GameObjectToLoot

GameObject MoreMountains.TopDownEngine.Loot.GameObjectToLoot

the object to loot, when in LootMode

◆ GimosSize

float MoreMountains.TopDownEngine.Loot.GimosSize = 1f

the size at which to draw the gizmos

◆ GizmosColor

Color MoreMountains.TopDownEngine.Loot.GizmosColor = MMColors.LightGray

the color the gizmos should be drawn with

◆ GizmosQuantity

int MoreMountains.TopDownEngine.Loot.GizmosQuantity = 1000

the amount of gizmos to draw

◆ LimitedLootQuantity

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.

◆ LootFeedback

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.

◆ LootMode

LootModes MoreMountains.TopDownEngine.Loot.LootMode = LootModes.Unique

the selected loot mode :

  • unique : a simple object
  • loot table : a LootTable specific to this Loot object
  • loot definition : a LootTable scriptable object (created by right click > Create > MoreMountains > TopDown Engine > Loot Definition This loot definition can then be reused in other Loot objects.

◆ LootTable

MMLootTableGameObject MoreMountains.TopDownEngine.Loot.LootTable

a loot table defining what objects to spawn

◆ LootTableSO

MMLootTableGameObjectSO MoreMountains.TopDownEngine.Loot.LootTableSO

a loot table scriptable object defining what objects to spawn

◆ MaxAvoidAttempts

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

◆ MaximumQuantity

int MoreMountains.TopDownEngine.Loot.MaximumQuantity = 100

The maximum quantity of objects that can be looted from this Loot object.

◆ MultiplePoolers

List<MMMultipleObjectPooler> MoreMountains.TopDownEngine.Loot.MultiplePoolers = new List<MMMultipleObjectPooler>()
static

◆ MutualizedPoolName

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

◆ PoolLoot

bool MoreMountains.TopDownEngine.Loot.PoolLoot = false

if this is true, lootables will be pooled

◆ PoolSize

int MoreMountains.TopDownEngine.Loot.PoolSize = 20

determines the size of the pool for each object in the loot table

◆ Quantity

Vector2 MoreMountains.TopDownEngine.Loot.Quantity = Vector2.one

the minimum and maximum quantity of objects to spawn

◆ RemainingQuantity

int MoreMountains.TopDownEngine.Loot.RemainingQuantity = 100

The remaining quantity of objects that can be looted from this Loot object, displayed for debug purposes.

◆ SimplePoolers

List<MMSimpleObjectPooler> MoreMountains.TopDownEngine.Loot.SimplePoolers = new List<MMSimpleObjectPooler>()
static

◆ SpawnLootButton

bool MoreMountains.TopDownEngine.Loot.SpawnLootButton

a debug button used to trigger a loot

◆ SpawnLootOnDamage

bool MoreMountains.TopDownEngine.Loot.SpawnLootOnDamage = false

if this is true, loot will happen when this object takes damage

◆ SpawnLootOnDeath

bool MoreMountains.TopDownEngine.Loot.SpawnLootOnDeath = true

if this is true, loot will happen when this object dies

◆ SpawnProperties

MMSpawnAroundProperties MoreMountains.TopDownEngine.Loot.SpawnProperties

the position, rotation and scale objects should spawn at


The documentation for this class was generated from the following file:
  • H:/Code/MoreMountains/topdownengine/Assets/TopDownEngine/Common/Scripts/Items/Loot.cs