Search Unity

[Released] Ultimate Spawner 2.0 - Spawning Made Easy

Discussion in 'Assets and Asset Store' started by scottyboy805, Nov 26, 2019.

  1. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,193
    Ultimate Spawner 2.3.0 has been submitted to the asset store. Thjis version includes minor bug fixes relating to the SpawnNavMesh component.
     
    dsilverthorn likes this.
  2. nooxouille

    nooxouille

    Joined:
    Aug 29, 2018
    Posts:
    24
    Hi there !

    I'd like to pause a wave with a wave event from a graph, start another one (a single boss wave) and once the boss wave is over, unpause the "main" wave. But the EndWave, RestartWave, NextWave and PreviousWave are empty. What is the logic to setup to make them work properly without breaking anything ?

    Also, how do references tags/names work ? I haven't been able to make them work, despite many tests :'(

    [EDIT] I am losing my mind on this one : I just want to spawn a boss from another graph, every 2 loop on my main graph, till inifinity.
     
    Last edited: Apr 22, 2021
  3. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,193
    Hi,
    I assume you are talking about the WaveEventNode in this case? If so, it actually works the opposite way to what you think, if I have understood correctly. The wave event node is intended to trigger an event in code when it is reached in the wave graph. The 'OnWaveCustomEvent' event of the running WaveSpawnController will be invoked and the string you enter in the wave editor will be passed. It is intended to allow you to trigger arbitrary code at different points in the wave graph execution. That might explain why you are having such as bad time with it.

    It sounds like you should be using the WaveConditionNode along with parameters to change the flow of execution from a script. It woks a little bit like the Animator component but here is what you can do:

    1. In your wave graph, find the 'Parameters' node that all graphs should have.
    2. Click the 'AddParameter' button and choose a suitable parameter type. it sounds like a 'bool 'parameter may be suitable in this case.
    3. Give the parameter a meaningful name like 'TriggerBoss'.
    4. Add a WaveConditionNode into your graph at a suitable location. If you are using a loop node to run the wave spawning forever, then attaching the condition node to the output of the loop node may be ok.
    5. Change the 'Condition' drop down value of your condition node to the suitable parameter type, 'Bool Parameter', in this case.
    6. A new field named 'Parameter Name' will now appear where you can enter the name of the parameter. Enter 'TriggerBoss' or whatever you named your parameter in this field, being careful with case sensitivity and spelling.
    7. The graph is now setup and you are able to change the flow control via script by modifying that property. You can do this with the following code to set and unset the bool value:
    Code (CSharp):
    1. // Enable the parameter
    2. waveSpawnController.Parameters.SetBool("TriggerBoss", true);
    3.  
    4. // Disable the parameter
    5. waveSpawnController.Parameters.SetBool("TriggerBoss", false);
    There is no way to interup an already executing node at the moment so this will wait until the condition node is hit again before changing the flow of execution.

    The tag system simply allows you to specify a spawner/item name, tag or id, and the spawn controller will attempt to find and use the matching spawner/item if it is found.

    I hope this helps you. Let me know if there is anything else.
     
  4. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,193
    Ultimate Spawner 2.3.1 has been submitted to the asset store for review. This version includes:
    • Fixed a bug in the DespawnOnTrigger component where the layer check was incorrect.
    • Fixed a bug in the DespawnOnCollision component where the layer check was incorrect.
    • Setting a tag group in any spawner or despawner to an empty array will now ignore tag checks. Previously an item needed to be 'Untagged' in this scenario to meet the spawn/despawn condition.
     
  5. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,193
    Ultimate Spawner 2.3.2 has been submitted to the asset store for review. This version includes a new despawner 'Despawn On Viewport Exit'. You can use this new feature to despawn an item automatically once it is out of view of the camera.
     
    digiross likes this.
  6. SOSolacex

    SOSolacex

    Joined:
    Jan 10, 2018
    Posts:
    121
    Hey, I was curious..
    How well does this perform on an open world with terrain streaming?
    I had a different asset like this that gave me errors because terrain beneath it would disappear due to the streaming and it wouldn't disable correctly depending on distance thus the performance didn't do all to well either.

    How's the performance when spread all around an open world?
     
  7. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,193
    Hi,
    Thanks for the interest in our asset.

    We have not tested the asset in very large worlds, so cannot say for sure how it would cope. We have done stress tests with many hundreads of spawners though and did not notice any measurable performance decreases.

    US2.0 does not rely on terrain or anything like that, so there would be no issue there. I assume that other assets are using the terrain for random item placement? US2.0 does not do this, so may not be suited to your project. Instead you will need to place spawn locations either through the editor or via code to select where an item will spawn. The asset is not best suited for random world generation, but rather for fixed maps where you can place enemy, player, prop, pickup spawn locations etc with spawning/despawning rules.

    I hope that helps you. Let me know if you have any more questions.
     
  8. OscarLeif

    OscarLeif

    Joined:
    Jul 17, 2016
    Posts:
    69
    I think I found a little issue.
    If I change a value from "SpawnMask" from a SpawnerGroup Component Unity is not marking the scene or Game object as Dirty, I was making change to my levels and I found that it never makes the Unity editor save the scene.
     
  9. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,193
    Hi,
    Thanks for reporting this issue. We were able to reproduce the probem and it will be fixed in the next update. In the meantime, you can just toggle another property of the spawner as a workaround which will mark the component as dirty so that Unity will save changes.
     
  10. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,193
    Ultimate Spawner 2.3.3 has been submitted to the asset store. This version includes:
    • Fixed a bug in the spawn mask inspector where changing the mask value would not be saved unless other changes were made to the same object.
    • Updated minimum supported Unity version to 2019.1
     
  11. SOSolacex

    SOSolacex

    Joined:
    Jan 10, 2018
    Posts:
    121
    Hi, I've recently purchased this asset to give it a try, but I get errors upon importing.
    How can I get rid of these?
     

    Attached Files:

  12. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,193
    Hi,
    Thanks for purchasing our asset.

    From the errors, it looks like it could be a simple naming conflict issue. Do you have another script in your project named 'Spawner' inside the global namespace? If so, you will need to either remove, rename, or add a namespace to that script to prevent errors. That should solve the problem for you.

    Let me know if you are still having issue or if there is anything else.
     
  13. SOSolacex

    SOSolacex

    Joined:
    Jan 10, 2018
    Posts:
    121
    Hey, I currently have 3 small spawning zones that should spawn a few things here and there, however it's hogging a lot of performance.

    In the profiler, the infiniteSpawnController.ItemSpawnRoutine() can sometimes shoot up to 65ms even.

    What would be the best way to tackle this issue?
     
  14. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,193
    Hi,
    Sorry to hear that you are having this problem. 65ms is indeed a very large amount of time to be consumed.
    Are you able to deep profile the code and use the hierarchy view to find the method that is taking up all the time? I can provide instructions to do that if needed.
    The item spawn routine cannot take up that amount of time on its own, because it yields every frame. I suspect that an item is trying to be spawned onto a NavMesh or similar, and it is taking a long time to find an available location that is not obstructed by colliders. Could that be possible? The deep profile results should show the cause of the problem anyway. I can look into it further at that point.
     
  15. giraffe1

    giraffe1

    Joined:
    Nov 1, 2014
    Posts:
    302
    Is there a method to attach additional info to the spawners? I need to link multiple patrol paths information so I can assign patrol points to the ai that spawn from the spawner.
     
  16. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,193
    Hi,
    We don't have anything like that at the moment for custom information. What you describe is actually quite similar to how despawners work. You can add despawner components to a spawner and all spawned items inherit this despawn component when they are spawned. I guess we could possibly add a similar system for user types too. I would just say add a custom component to the spawner containing this information, but there is no easy way for a spawned item to get a reference to its spawner at the moment.
     
    giraffe1 likes this.
  17. OscarLeif

    OscarLeif

    Joined:
    Jul 17, 2016
    Posts:
    69
    Hello I was checking Spawn System and I'm maybe wrong but I think there's not a "Spawn Selection Mode" that spawn in every child of the Spawn Group, when On Trigger is called.

    I mean I want to spawn in every child when on Enter Trigger is called. Does this already exist ?

    This should be called on Trigger Spawn Controller, I'm using 2D mode.

    Oh right I think I found another issue.
    In the Spawn Area in 2d Mode
    the
    Code (CSharp):
    1. collidersInsideArea = Physics2D.OverlapBoxNonAlloc(transform.position, size / 2, transform.rotation.z, sharedCollider2DBuffer, collisionLayer);
    The Size is ok ? (Size / 2)
     
    Last edited: Oct 3, 2021
  18. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,193
    Hi,
    There is no spawn mode to trigger all spawners at once at the moment. That will be simple to add though so I will make sure it is included in the next update.

    I will look into the possible size issue. If the method works like the 3D equivalent, then the size is correct, but that might not be the case so I will check it to make sure. Thanks for reporting it.

    Let me know if there is anything else.
     
  19. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,193
    Ultimate Spawner 2.3.4 has been released on the asset store. This version includes:
    • Added new spawn selection mode to group spawners 'All'. Use this option to trigger all available child spawners to spawn a new item from a single request.
    • Fixed a bug in the SpawnArea component where the size used by physics checks while in 2D mode would be incorrect, causing unexpected behaviour.
     
  20. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,193
    Ultimate Spawner Waves Add-On 2.1.1 has been released on the asset store. This version includes some minor bug fixes:
    • Fixed a bug where spawn frequency multiplier would not be taken into account when advancing a wave over time.
    • Fixed a bug where spawn randomness multiplier would not be taken into account when advancing a wave over time.
    • Update to 2019.1.0 as minimum supported version.
     
  21. Bitmore

    Bitmore

    Joined:
    Mar 4, 2016
    Posts:
    16
    In the Infinite Spawn Controller, set 'Stop After Spawnable Count' to 16 and Max Spawn Count to 6, using a custom pooling system, UltimateSpawning.UltimateSpawnerDestroy(spawnableInstance) to hook the pooling system to pool the objects instead of destroying them, the Spawn Controller won't continue to spawn new spawnable items.
    I see that the SpawnController.spawnedItems only remove item when the item was destroyed.
    What's the proper way to use a custom pooling system? Do I have to reduce the spawned item count manually?
     
  22. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,193
    Hi, If you are implementing a custom pooling solution then you will likely want to inform the spawning system when an item has been destroyed, since it won't be auto detected when the object 'OnDestroy' event runs. It is simple to do by calling the static 'SpawnableItems.InformSpawnableDestroyed' method and passing the transform of the item that will be despawned. That will inform all running spawners that the item is no longer alive and they can update their logic accordingly based on the parameters you setup. I believe that should fix your issue.
    I hope that helps. I will add a bit more info in the user guide about this as it looks like it is missing. Let me know if you are still having issues.
     
  23. wood333

    wood333

    Joined:
    May 9, 2015
    Posts:
    851
    Would it be possible to purchase an earlier version of US that would work in Unity 2018-4-36? Would that be US 2-3-2? I think I am locked into 2018 due to lots of assets in my project.

    I am not a programmer, and my use of US would probably be modest, sticking with the basics.
     
  24. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,193
    Hi, Ultimate Spawner was originally created for Unity 2017.1 and nothing has really changed to stop it from working. We only updated to a minimum of 2019.1 because it will soon be a requirement by the asset store if we continue to publish updates. It seems Unity are pushing users to user more newer versions of Unity but I full understand that some projects cannot and should not be updated every other week.
    So to answer your question: The latest version of Ultimate Spawner should work just fine in your project. You will just need to create a blank project using 2019.1 or newer so that you can download the asset and then I would recommend exporting the root 'UltimateSpawner' folder as a .unitypackage into your main project. I believe everything should then work as expected and I will be happy to help you out if there are any issues.
     
    wood333 likes this.
  25. wood333

    wood333

    Joined:
    May 9, 2015
    Posts:
    851
    FYI So I downloaded 2019-1 and attempted the purchase. Unity 2019 refused the purchase unless I downloaded the HUB, registered and logged in. I don't need that, so I fired up 2018. The asset store already had US in my cart and I completed the purchase in 2018. 2018 also permitted the download and import into an existing test project that contained, ironically, Crux (which throws errors in 2018). :D All is good. I should be able to import US into my working 2018 project now, after a break. Looking forward to spawning and de-spawning.
     
  26. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,193
    Hey, Glad to hear that it all worked smoothly. I am surprised to hear that you could download in 2018 as I thought there was a hard limit based on the minimum supported version of the asset, but I guess not. It all worked out though which is the main thing.
    Let me know if there is anything else.
     
    wood333 likes this.
  27. wood333

    wood333

    Joined:
    May 9, 2015
    Posts:
    851
    I just purchased Waves, and in the process I discovered Ultimate Pooling. I understand that Waves integrates with Ultimate Spawner. Does Ultimate Pooling integrate with Ultimate Spawner?
     
  28. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,193
    Hi, There is no built in integration with Ultimate Pooling but it can be added with not too much effort, but the same can also be said for any pooling solution. You would just need to follow the pooling section in the user guide to take over control of the spawning and despawning calls. Let me know if you have any more questions.
     
  29. wood333

    wood333

    Joined:
    May 9, 2015
    Posts:
    851
    I don't believe I imported the new complete correct version, because of the way I imported in 2018. I went back to 2019, downloaded the Unity HUB, installed it, could not import the new version of US, moved the existing package to a safe storage folder, closed and reopened unity 2019 using the hub, and then, I could download the latest version of Ultimate Spawner, whereupon I copied the package to the desktop. My plan is to remove US from my 2018 project, then reimport by dropping in the package I downloaded via 2019 and the HUB.

    I think your initial impulse was best. I always needed to get the package via 2019. I finally broke down, downloaded Unity HUB, and got the latest. Whew!
     
    Last edited: Jan 27, 2022
  30. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,193
    Sounds like some strange issues going on there. I do think using 2019 to download gives you the best chance for everything to work properly and glad to hear you were able to get it working in the end. I know its a pain having to go though a different Unity project just to install an asset but I think it is the only way to make it work if we cannot support older Unity versions in the package manager directly. It is a shame because we would still like to support older versions and projects properly but it seems Unity keep pushing forward for new versions like there is no tomorrow.
     
    wood333 likes this.
  31. wood333

    wood333

    Joined:
    May 9, 2015
    Posts:
    851
    Seems I was always getting the correct package. The issue is when I use gameobject - ultimate spawner- spawnpoint, I don't get your spawnpoint, I get a spawnpoint from a different developer asset in my project. I didn't know that was possible.

    Nor is your spawnpoint component offered with Add Component, (only despawners), when I try to attach it to an empty GO. What I can do is find the Ultimate Spawner spawnpoint script in your scripts folder and drag it out and on top of an empty GO to create the spawnpoint.
     
    Last edited: Jan 27, 2022
  32. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,193
    That is strange indeed. I guess you have another script with an identical name in your project and the compiler is choosing that type instead? I don't think that should be possible either unless the other script is in the global namespace. I don't think there is anything we can do in that case because the compiler will always favor types in the global namespace.
     
  33. wood333

    wood333

    Joined:
    May 9, 2015
    Posts:
    851
    I looked at the other spawnpoint script, and (using my novice programming skills), I put the script in the nullsave.TOCK namespace, where I think it belongs. This works. I can access the Ultimate Spawner "spawnpoint "from the gameobject menu and get yours. Now, I think I understand what you intended. The Spawners come as premade game objects set up with the appropriate spawner components. However, despawners are available via the Components menu, and are added to existing game objects as components. While painful, going through this exercise has taught me a few things about Ultimate Spawner and programming C# in Unity. :)
     
    dsilverthorn likes this.
  34. wood333

    wood333

    Joined:
    May 9, 2015
    Posts:
    851
    I am spawning, but something unexpected happens. I Have a cow prefab set up with Emerald Ai. It has a few emerald scripts, an animator, box collider, audio source, nav mesh agent and LOD group. When it spawns via an US spawnpoint, it suddenly has 3 audio sources? The prefab only has one. If I add the prefab to the scene by hand, it only has one audio source. Any ideas?
     
    dsilverthorn likes this.
  35. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,193
    Glad to hear you got it working in the end. Yes you are correct that spawners are setup as game objects because they might use colliders or other components in some cases so it makes sense to have everything you need when the spawner is created.

    I am not sure what could be happening there. Ultimate Spawner does not do anything related to audio sources or adding anything other than spawn components. I do vaguely remember a user who I think had a similar problem with emerald AI and our asset. I am not 100% sure what happened in the end but I think there was some sort of conflict between Ultimate Spawner and Emerald AI events. Ie. Ultimate Spawner was calling an 'OnSpawned' method when creating an item and I think emerald AI was picking up on it and running some of its own setup code (maybe multiple times). I can't really remember the details too much but I just thought it might be worth checking that. I don't have a license for Emerald AI I am afraid so I don't think I can be too much help unless it does indeed turn out to be an Ultimate Spawner issue.
     
  36. wood333

    wood333

    Joined:
    May 9, 2015
    Posts:
    851
    Thank you for the prompt responses. I have a feature request. I am spawning NPCs that are animals or human. I have successfully used despawn on event to despawn them OnDeath(), but they disappear before the death animation completes. I could make good use of a despawn on event component with an adjustable time delay before the despawn.
     
  37. wood333

    wood333

    Joined:
    May 9, 2015
    Posts:
    851
    Here's my work around for the feature request. I manually place a despawn on time component on my NPC but disable the despawn component. In my NPC's OnDeath() event I enable the despawner which is set for 10 seconds. I kill the NPC, the despawner is enabled, NPC makes death cry and completely plays its death animation within the 10 second despawn time, then despawns. I fit it all in within the 10 second countdown. ;)
     
  38. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,193
    Thanks for the suggestion. I don't think that should be too difficult to implement so I will see if it can be added in the next update.
     
    wood333 likes this.
  39. OddKidToons

    OddKidToons

    Joined:
    Aug 29, 2019
    Posts:
    21
    Ultimate Spawner 2.0 and EMERALD AI

    I am having a problem with my Emerald AI spawning without its events set.


    I am using Ultimate Spawner and Emerald AI to spawn Waves in my Survivor Engine Scene.
    The problem is when I save a prefab to be spawned, it spawns with its Emerald AI events missing.
    Everything else spawns fine. But the DoDamage and TakeDamage events are set to null.

    How can I fix this from happening?
     
  40. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,193
    Hi,
    I am not sure what the problem could be but Ultimate Spawner 2.0 will not modify your prefabs at all in any way and will simply call 'Instantiate' once it has worked out where the position the spawned item. Are those events part of an Emerald Ai script, or are they events that you have created? If it is the former, then It sounds like it could possibly be an Emerald AI issue and maybe Emerald AI items are expected to be spawned in a particular way? I am not sure though as I don't really have any experience with Emerald AI. Perhaps it might be worth contacting the developers of Emerald AI also to see if they have any ideas as to what the problem could be. If the problem continues then let me know and I can try to help as best I can, but like I say, Ultimate Spawner 2.0 does not modify a single element of your spawned items so I don't see how it could be causing this issue.
     
  41. OddKidToons

    OddKidToons

    Joined:
    Aug 29, 2019
    Posts:
    21

    Thank you for the quick response.

    I was able to solve this. The events were reset because they were linked to the the scene's game objects. So when I made a prefab, the prefab did not save the links to the game objects.

    Solved this buy creating a script that is saved in the prefab forcing it to look for these game objects and add them back to the events script.

    Spawning a simple AI, no problem, but the events for damage received and given to the Player need to be scripted and attached to the NPC for those to work.
     
  42. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,193
    Hi again,
    Glad to hear that you were able to solve the problem.
    Let me know if there is anything else.
     
  43. sichimi1021

    sichimi1021

    Joined:
    Jan 31, 2021
    Posts:
    6
    hi,
    Basically, the WaveSpawnController and SpawnArea are working fine.
    The problem occurs when the player dies and the same scene is reloaded and reset.
    All objects will spawn from the same position.
    Is there a solution to this problem?
     
  44. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,193
    Hi,
    I am not sure what could cause that but I can look into it. Do you mean that all items spawn at the exact same location they spawned initially, or that they all spawn sharing a spawn location (Overlapping)?
     
  45. sichimi1021

    sichimi1021

    Joined:
    Jan 31, 2021
    Posts:
    6
    10 Cubes are spawned every second in the SpawnArea.
    All Cubes are spawned at random coordinates.

    When the scene is reloaded.
    For example, if the first Cube is spawned at coordinates (10,0,10)
    1 second later, the second Cube will spawn at coordinate (10,0,10).
    In the same way, all 10 Cubes will spawn at the coordinate (10,0,10).

    All items spawn in the exact same location where they first spawned
     
  46. OscarLeif

    OscarLeif

    Joined:
    Jul 17, 2016
    Posts:
    69
    I was working on with this asset and I think it should have support for assembly files.
    While I know we can make it by ourselves. Editor scripts and runtime files should be ready to compile.
     
    scottyboy805 likes this.
  47. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,193
    Hi, Thanks for the feedback. Yes you are quite right that assembly definitions should be used. The asset was originally created before assembly definitions were available and was not updated to use them yet. I will see if they can be added to the next update though as they have some nice benefits.
    Let me know if there is anything else.
     
  48. OscarLeif

    OscarLeif

    Joined:
    Jul 17, 2016
    Posts:
    69
    Well some scripts are in wrong place.
    I mean Editor Script Files should go in editor folder.
    actually there's only need "Editor" Folder and "Runtime" folder like most of Unity Package files.
     
  49. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,193
    Ultimate Spawner 2.3.5 and Ultimate Spawner Waves Add-On 2.1.2 have been released on the asset store. These versions include the following changes and bug fixes:

    US 2.0
    • Add support for masking all spawnable items at once via a spawn mask.
    • Add extra metadata for spawnable item entries.
    • Update core api in support for waves add-on updates.
    • Drop support for legacy unity versions.
    • Minor bug fixes.

    US 2.0 Waves Add-On
    • Add support for multiple spawnable item references per wave node.
    • Allow multiple spawnable item reference nodes to be connected to a wave node.
    • Wave controller will now evaluate the spawnable item reference input per item spawned to allow multiple different items to be spawned with an item reference condition.
    • Drop support for legacy unity versions.
    • Minor bug fixes.
     
  50. scottyboy805

    scottyboy805

    Joined:
    Apr 10, 2013
    Posts:
    1,193
    Ultimate Spawner 2.3.6 and Ultimate Spawner Waves Add-On 2.1.3 have been released on the asset store. These versions include the folloiwing changes and bug fixes:

    US 2.0
    • Update core asset in support of add-ons.
    • Minor bug fixes.
    US 2.0 Waves Add-On
    • Fix an issue where connected sub nodes would not be evaluated in some cases.
    • Fix an issue where connected sub nodes would not show up in the wave controlller debugger in some cases.
    • Fix an issue where the wave spawning graph could finish while one or more sub waves are still spawning causing 'OnEnd' event to be triggered incorrectly.
    • Add 'Spawn Delay' value to sub-wave nodes to specify a time delay before the node begins to run.
    • Add 'Spawn Count Delay' value to sub-wave nodes to specify a minimum required of items that should be spawned by the connected master node before the sub node begins to run.
    • Minor bug fixes.