Search Unity

MapMagic 2 - infinite procedural land generator

Discussion in 'Assets and Asset Store' started by Wright, Apr 24, 2020.

  1. shawnblais

    shawnblais

    Joined:
    Oct 11, 2012
    Posts:
    324
    On a more positive note, here are some screens built using your amazing tool!

    The terrain is placeholder, doesn't really match our style, but we're getting there!








     
    Last edited: Sep 28, 2020
  2. YolanOTHER

    YolanOTHER

    Joined:
    Oct 23, 2016
    Posts:
    47
    @Wright I thought I remembered a way you could regenerate a portion of a tile, but maybe I was thinking the whole tile. Let me take a step back an ask more about what I'd like to do. I essentially want to add a node where I can pass in a runtime painted height map offset and have it update in real time. I got something working more or less over the weekend but it is very slow and the whole terrain flashes off and back on between edits. I essentially find the generator at runtime and pass in a float[x,z] array off terrain height offsets based on where the user has painted. My first goal for this project is to allow the user to use terrain painting tools to create the basemap and have MM2 generate the textures and objects on it. Similar to how map imports work, but I'd like to do it in realtime at runtime. I know there was a specific block of code you had me comment out to fix the terrain flashing in MM1, I haven't dug that message up yet to try and fix it for MM2 yet.

    Also, I noticed that new node detection only seems to be working within the main matrix class within MM2. Is it only scanning the assembly that gets built with MM for generators?
     
  3. jimmygladfelter

    jimmygladfelter

    Joined:
    May 3, 2020
    Posts:
    83
    I'd like to share a new node I made for MapMagic 2, that allows you to know where your at in a generated world.

    upload_2020-9-28_22-3-16.png

    upload_2020-9-28_22-4-46.png

    You then setup a Zone Manager in your scene by adding the Zone Manager script to an empty game object:
    upload_2020-9-28_22-6-14.png

    Thats really, it your active zone (managed by the Zone Manager) will change when you reach that area in the world:
    upload_2020-9-28_22-21-57.png

    You could then maybe setup a script to know when the zone changes and then do some cool stuff:
    Code (CSharp):
    1. using UnityEngine;
    2. using UnityEngine.UI;
    3. using System.Collections;
    4.  
    5. public class MyZoneChangeScript : MonoBehaviour {
    6.  
    7.     void OnEnable () {
    8.         ZoneManager zoneManager = ZoneManager.GetInstance();
    9.         if ( zoneManager != null ) {
    10.             zoneManager.OnActiveZoneChangedDelegate += OnActiveZoneChanged;
    11.         }
    12.     }
    13.     void OnDisable () {
    14.         ZoneManager zoneManager = ZoneManager.GetInstance();
    15.         if ( zoneManager != null ) {
    16.             zoneManager.OnActiveZoneChangedDelegate -= OnActiveZoneChanged;
    17.         }
    18.     }
    19.  
    20.     public void OnActiveZoneChanged ( ZoneInfo zoneInfo ) {
    21.         // TODO: Do cool stuff:
    22.         // change footsteps
    23.         // change weather
    24.         //
    25.     }
    26. }
    Here's a video of it in action (take notice of the upper right corner label stating what zone Im in):


    Ive uploaded the files if anyone would like to use it or extend upon it below:
     

    Attached Files:

    Last edited: Sep 29, 2020
    Greviouss, Haxel0rd, NingWuZ and 17 others like this.
  4. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,278
    Looks impressive! Keep up the great job!

    Unfortunately I currently have no plans for adding full-scale support for graph changes during the playmode. You can change it on scene start, but in mid-game it will result in seams (if no terrain re-generate) or mentioned flashing terrain (if re-generate).

    Thanks for sharing your work! It's a really useful node when you are working with multiple biomes!
     
  5. Keldam_Entertainment

    Keldam_Entertainment

    Joined:
    May 4, 2015
    Posts:
    12
    Hi, I created a new graph, dragged it into my scene, and tried to pin some extra terrains but nothing happens. I can't get any extra terrains to be pinned, when I click on an empty tile area it just doesn't do anything. I'm not even seeing an outline of where the pinned terrain would go.( I was pretty sure that was supposed to be visible )

    I'm using the latest version of Map Magic 2 + All Plugins and Unity version 2020.1.5f1 and HDRP 8.2.
     
    Last edited: Sep 29, 2020
  6. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,278
    Keldam_Entertainment, Please check that you have the Gizmos toggle in Scene View window enabled. Tile and pin frames are gizmos, and like all the other gizmos they could be disabled to not interfere the scene view.
     
  7. Keldam_Entertainment

    Keldam_Entertainment

    Joined:
    May 4, 2015
    Posts:
    12
    Thank you that worked.
     
  8. Juneav

    Juneav

    Joined:
    Feb 18, 2017
    Posts:
    28
    Hey this is amazing!
    I was wondering about how to achieve the same, its just a great concidence that I am also using Enviro + LuxWater + MapMagic, the later im just learning how to use. Which video card are you using? Im on Radeon RX 580 and usually get around 120fps withouth the Ocean5x5 enabled, but it is reduced drastically to around 60fps when activated, out of curiosity, what is your water setup?
     
    jimmygladfelter likes this.
  9. shawnblais

    shawnblais

    Joined:
    Oct 11, 2012
    Posts:
    324
    @Wright Do you know how I can get rid of the blending here? I want the dirt walls to be pure dirt:
     
  10. dyvoid

    dyvoid

    Joined:
    Feb 19, 2019
    Posts:
    5
    Hi @Wright,
    Ever since using MapMagic 2 my scene file has become binary (even though force text is enabled). From what I gather, this is the result of using a RAW import map. Is that correct?
    This is creating a rather big problem for me with version control. I depend on the file to be text to be properly useable in GIT. I've had my scene corrupted as a result. Is there any way around this? I've tried using a texture instead of a RAW image, but the terrain it generates is not the same. Rather than a smooth terrain I get this terraced, almost Minecraft-like terrain.
    Also, once the scene file becomes binary, it will never return back to text, even if I delete the Import Map asset from my graph and project.
     
  11. jimmygladfelter

    jimmygladfelter

    Joined:
    May 3, 2020
    Posts:
    83
    Graphics Card: GeForce RTX 2070 Super with Max-Q

    The thing that bogs my experience down is Vegetation Studio Pro at times, but I probably just have to do some more configuration around that.

    My water setup is based off of the LUX infinite water demo (just changed some of the material properties of the water).
    Nothing super custom for water yet :)
     
    Juneav likes this.
  12. shawnblais

    shawnblais

    Joined:
    Oct 11, 2012
    Posts:
    324
    For some reason, my microsplat node is not looking like it does in the docs
     
  13. JohnnyFactor

    JohnnyFactor

    Joined:
    May 18, 2018
    Posts:
    343
    The terraced look is from not enough levels of brightness in the map, meaning it's being processed as 8-bit. I addressed this in post #179 but I'll re-post it here:

    "After extensive testing with a pure linear gradient, I can confirm that PNG is indeed 16 bit if the source is grayscale, imported as R16, and Red channel is chosen in the Imported Map inspector. It's identical to the 16 bit RAW, and both produce a smooth slope. An 8 bit PNG produces a stair-stepped slope, as expected."
     
  14. Juneav

    Juneav

    Joined:
    Feb 18, 2017
    Posts:
    28
    I see... I will play around a bit more with my water settings, I used the Ocean5x5 prefab and added planar reflections and underwater rendering, same as you, I had to tweak the water, (rendering queue and underwater fog color), also modified the main setup to use the enviro fog, had to ask Hendrik for help on fog rendering nicely on trees as Im not using VS Pro, just regular trees, but I think the planar reflections are the main reason why my performance drops, I'll definitely take a look onto that. Thank you very much and last but not least, your terrain looks awesome, hope to see more of it soon!
     
    jimmygladfelter likes this.
  15. jimmygladfelter

    jimmygladfelter

    Joined:
    May 3, 2020
    Posts:
    83
    Thanks! It has been quite a journey to get this far! I'm really new to all this, just started a few months ago.

    And yea, the planar reflections could be the issue for ya. I havent touched that yet but looks cool.

    I've been working on a ZoneChanged script editor that allows you to change footsteps and weather (Enviro) according to where you are in the map magic map. I'll post that if it helps when its a bit more ready.

    Here's a preview though:
    upload_2020-9-30_23-34-14.png

    So basically in this example, when the 'Zones' map magic node detects that I have reached 'Mild Wet Forest', it will notify the Zone Manager (and subsequently this ZoneChanged script that has a listener for when zone changes) and it will look for a custom zone config named the same as the zone it detected (In this case 'Mild Wet Forest'), and if it finds one, it will change the enviro weather zone and the audio for footsteps (for a FirstPersonController thus far) according to the config. The 'Default Zone' is used when it cannot find a config for the changed zone. It also is used if there is not a defined property for the active config but there is one for the 'Default Zone'....if that all makes sense :)

    So far its working well and is very efficient, I'll post it probably after I do some LUX integration as well to do things like change sounds when your near or in a LUX water volume. We'll see how well all that goes though :D.
     
    Last edited: Oct 1, 2020
  16. dyvoid

    dyvoid

    Joined:
    Feb 19, 2019
    Posts:
    5
    Thanks, setting the import to R16 indeed solves the problem of the terraced terrain. However, unfortunately it doesn't solve my larger problem: The scene file remains a binary. Upon further testing it looks like even adding an EMPTY MapMagic graph causes the scene file to instantly switch to binary!
     
  17. camta005

    camta005

    Joined:
    Dec 16, 2016
    Posts:
    320
    Daniel-Talis and jimmygladfelter like this.
  18. Juneav

    Juneav

    Joined:
    Feb 18, 2017
    Posts:
    28
    Awesome, I can see your path has been long even you only have a few months on this, same on me, had struck the wall many times. Your script looks very interesting, I can totally see a character traversing an infinite terrain with weather adapting to the current zone! I have a question though, if you happen to be at a mountain top on a clear sky zone, will you be able to see, lets say, a storm gathering miles away in a distant mountain? I think that would be a huge achievement although I can foresee the complications involved, just saying, but also there can be a number of approaches for this: havinf enviro working all the time above you, and using a custom system for the distance, like a particle system with clouds,fog, rain and so on, and once you get closer to that cluster then enviro detects the zone and applies the desired weather effect while deactivating the "fake" weather system, with a smooth transition or something. Anyway, I am going too far now, first things first! But that is something I would also like to work on in the future!

    Heres what I have so far!
    I will be using a third person character in my case, Im in love with Death Stranding so I want to see what can I do :)
     

    Attached Files:

    Wright and jimmygladfelter like this.
  19. Daniel-Talis

    Daniel-Talis

    Joined:
    Dec 10, 2011
    Posts:
    425
    Nice scene but I'm thinking you need to mask out the bushes in the water. :)
     
    Juneav likes this.
  20. jimmygladfelter

    jimmygladfelter

    Joined:
    May 3, 2020
    Posts:
    83
    Nice! I will be attempting to use third person eventually too. That weather in the distance idea would be pretty awesome. I think I heard someone else ask that in Enviro discord but the author said it wouldnt be an easy task for sure. Good luck!
     
    Juneav likes this.
  21. Juneav

    Juneav

    Joined:
    Feb 18, 2017
    Posts:
    28
    Thanks! I'll take a look at the distance weather! Good luck to you too!
     
  22. Juneav

    Juneav

    Joined:
    Feb 18, 2017
    Posts:
    28
    Yeah! I just used the tree mass placing function just to test the fog in the distance lol!
     
    Daniel-Talis likes this.
  23. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,278
    As far as I can say you've got not enough resolution. These green areas are the control map pixels.

    Force binary serialization is enabled only for the Imported Map asset. It should not affect the scene, and, actually, there is no way I can force the scene to be binary. It might be that Unity is switching the serialization mode if it get this asset used in scene. It's odd since the scene stores just the link to the asset, not the imported map itself. If so then it's definitely a Unity issue.

    EDIT: just unpin all the tiles. Otherwise the terrain is saved with the scene, and seems that Unity is forcing it to be binary. Alternatively you can save the tiles as assets with this script.

    Are you using the latest MM version? If so, could you please test it with the clear project, with only MM and MS installed?

    Just quoting it again to remind that there's an alternative to RAW images :)
     
  24. dyvoid

    dyvoid

    Joined:
    Feb 19, 2019
    Posts:
    5
    Thanks for your suggestions @Wright, but that would break my workflow too much. It would either cause problems with other assets I use (like Micro Splat and Vegetation Studio), or not allow me to tweak in realtime, which is the whole reason I'm using MapMagic. I understand this is not your fault, as indeed the Unity scene should simply reference the imported map asset. No idea what's going on there. Hope there's some way to fix it down the line! Thanks for your help!
     
  25. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,278
    dyvoid, try saving all of the pinned tiles terrain data. This will make Unity store reference instead of data itself, so the scene will be serialized in text. Use the script from the link to do it. You don't need to so it after any change - just after pinning the new tiles.
     
  26. camta005

    camta005

    Joined:
    Dec 16, 2016
    Posts:
    320
    Will you be adding the ability to save the terrain data as part of MM2?
     
  27. dyvoid

    dyvoid

    Joined:
    Feb 19, 2019
    Posts:
    5
    Ah, I had misunderstood what you were saying earlier: I thought saving would just make a snapshot, but I can confirm I can make terrain changes, while maintaining the scene file as text! That's great, this opens the door for me to add MapMagic into my workflow.
    You may want to incorporate this into MapMagic or documentation in some way, because scene files that mysteriously change into binaries is sure to cause issues for a lot more people using version control (including having their scene corrupted like I had).
    .
    Anyway, thanks again, and thanks for a great tool!
     
  28. jimmygladfelter

    jimmygladfelter

    Joined:
    May 3, 2020
    Posts:
    83
    For some reason, when I try to make a build, no map magic terrains ever get created. Am I missing something?

    upload_2020-10-3_23-35-21.png

    Ive tried toggling the scripting backend between both Mono and IL2CPP and no luck either
    upload_2020-10-3_23-38-43.png

    After I build I see some warnings but not sure they mean anything important:
    upload_2020-10-3_23-48-15.png

    I dont see any logs in the build output folder either.
    Any ideas?
     

    Attached Files:

    Last edited: Oct 4, 2020
  29. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,278
    Hmm, yes, that's a point. So yes, I'm adding it in my to-do list.

    There might be an error in build version. If you make a development build you can see it in the build console.
    In most cases this error might be related with the native code. Try disabling it in Window - MapMagic - Settings - uncheck C++ Native Code.
     
    camta005 likes this.
  30. jimmygladfelter

    jimmygladfelter

    Joined:
    May 3, 2020
    Posts:
    83
    I tried disabling native code and that didn't seem to help; however, I saw these exceptions:

    It seems that this happens over and over:
    Code (CSharp):
    1. WARNING: Shader Unsupported: 'Hidden/Nature/Terrain/Utilities' - All passes removed
    2. WARNING: Shader Did you use #pragma only_renderers and omit this platform?
    3. ERROR: Shader Hidden/Nature/Terrain/Utilities shader is not supported on this GPU (none of subshaders/fallbacks are suitable)
    4. UnloadTime: 1.190100 ms
    5. Exception: Routine error: System.NullReferenceException: Object reference not set to an instance of an object
    6.   at MicroSplatTerrain.Sync () [0x00085] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MicroSplat\Core\Scripts\MicroSplatTerrain.cs:152
    7.   at MapMagic.Nodes.MatrixGenerators.MicroSplatOutput200+ApplyData.Apply (UnityEngine.Terrain terrain) [0x00119] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Compatibility\Runtime\MicroSplatOutput.cs:112
    8.   at MapMagic.Terrains.TerrainTile.ApplyNow (MapMagic.Terrains.TerrainTile+DetailLevel det, MapMagic.Products.StopToken stop) [0x0003c] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:719
    9.   at MapMagic.Terrains.TerrainTile+<>c__DisplayClass41_0.<Generate>b__0 () [0x00000] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:698
    10.   at Den.Tools.Tasks.CoroutineManager.Update () [0x000f0] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:136
    11.   at Den.Tools.Tasks.CoroutineManager.Update () [0x00115] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:137
    12.   at MapMagic.Core.MapMagicObject.Update () [0x00021] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Core\MapMagicObject.cs:142
    13. (Filename: C:/Users/jimmy/Documents/unity/projects/Native SD 2/Assets/Imports/MapMagic/Tools/ThreadManager/CoroutineManager.cs Line: 137)
    14.  
    15. Exception: Routine error: System.NullReferenceException: Object reference not set to an instance of an object
    16.   at MicroSplatTerrain.Sync () [0x00085] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MicroSplat\Core\Scripts\MicroSplatTerrain.cs:152
    17.   at MapMagic.Nodes.MatrixGenerators.MicroSplatOutput200+ApplyData.Apply (UnityEngine.Terrain terrain) [0x00119] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Compatibility\Runtime\MicroSplatOutput.cs:112
    18.   at MapMagic.Terrains.TerrainTile.ApplyNow (MapMagic.Terrains.TerrainTile+DetailLevel det, MapMagic.Products.StopToken stop) [0x0003c] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:719
    19.   at MapMagic.Terrains.TerrainTile+<>c__DisplayClass41_0.<Generate>b__0 () [0x00000] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:698
    20.   at Den.Tools.Tasks.CoroutineManager.Update () [0x000f0] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:136
    21.   at Den.Tools.Tasks.CoroutineManager.Update () [0x00115] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:137
    22.   at MapMagic.Core.MapMagicObject.Update () [0x00021] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Core\MapMagicObject.cs:142
    23. (Filename: C:/Users/jimmy/Documents/unity/projects/Native SD 2/Assets/Imports/MapMagic/Tools/ThreadManager/CoroutineManager.cs Line: 137)
    24.  
    25. Exception: Routine error: System.NullReferenceException: Object reference not set to an instance of an object
    26.   at MicroSplatTerrain.Sync () [0x00085] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MicroSplat\Core\Scripts\MicroSplatTerrain.cs:152
    27.   at MapMagic.Nodes.MatrixGenerators.MicroSplatOutput200+ApplyData.Apply (UnityEngine.Terrain terrain) [0x00119] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Compatibility\Runtime\MicroSplatOutput.cs:112
    28.   at MapMagic.Terrains.TerrainTile.ApplyNow (MapMagic.Terrains.TerrainTile+DetailLevel det, MapMagic.Products.StopToken stop) [0x0003c] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:719
    29.   at MapMagic.Terrains.TerrainTile+<>c__DisplayClass41_0.<Generate>b__0 () [0x00000] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:698
    30.   at Den.Tools.Tasks.CoroutineManager.Update () [0x000f0] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:136
    31.   at Den.Tools.Tasks.CoroutineManager.Update () [0x00115] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:137
    32.   at MapMagic.Core.MapMagicObject.Update () [0x00021] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Core\MapMagicObject.cs:142
    33. (Filename: C:/Users/jimmy/Documents/unity/projects/Native SD 2/Assets/Imports/MapMagic/Tools/ThreadManager/CoroutineManager.cs Line: 137)
    34.  
    35. Exception: Routine error: System.NullReferenceException: Object reference not set to an instance of an object
    36.   at MicroSplatTerrain.Sync () [0x00085] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MicroSplat\Core\Scripts\MicroSplatTerrain.cs:152
    37.   at MapMagic.Nodes.MatrixGenerators.MicroSplatOutput200+ApplyData.Apply (UnityEngine.Terrain terrain) [0x00119] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Compatibility\Runtime\MicroSplatOutput.cs:112
    38.   at MapMagic.Terrains.TerrainTile.ApplyNow (MapMagic.Terrains.TerrainTile+DetailLevel det, MapMagic.Products.StopToken stop) [0x0003c] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:719
    39.   at MapMagic.Terrains.TerrainTile+<>c__DisplayClass41_0.<Generate>b__0 () [0x00000] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:698
    40.   at Den.Tools.Tasks.CoroutineManager.Update () [0x000f0] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:136
    41.   at Den.Tools.Tasks.CoroutineManager.Update () [0x00115] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:137
    42.   at MapMagic.Core.MapMagicObject.Update () [0x00021] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Core\MapMagicObject.cs:142
    43. (Filename: C:/Users/jimmy/Documents/unity/projects/Native SD 2/Assets/Imports/MapMagic/Tools/ThreadManager/CoroutineManager.cs Line: 137)
    44.  
    45. Exception: Routine error: System.NullReferenceException: Object reference not set to an instance of an object
    46.   at MicroSplatTerrain.Sync () [0x00085] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MicroSplat\Core\Scripts\MicroSplatTerrain.cs:152
    47.   at MapMagic.Nodes.MatrixGenerators.MicroSplatOutput200+ApplyData.Apply (UnityEngine.Terrain terrain) [0x00119] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Compatibility\Runtime\MicroSplatOutput.cs:112
    48.   at MapMagic.Terrains.TerrainTile.ApplyNow (MapMagic.Terrains.TerrainTile+DetailLevel det, MapMagic.Products.StopToken stop) [0x0003c] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:719
    49.   at MapMagic.Terrains.TerrainTile+<>c__DisplayClass41_0.<Generate>b__0 () [0x00000] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:698
    50.   at Den.Tools.Tasks.CoroutineManager.Update () [0x000f0] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:136
    51.   at Den.Tools.Tasks.CoroutineManager.Update () [0x00115] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:137
    52.   at MapMagic.Core.MapMagicObject.Update () [0x00021] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Core\MapMagicObject.cs:142
    53. (Filename: C:/Users/jimmy/Documents/unity/projects/Native SD 2/Assets/Imports/MapMagic/Tools/ThreadManager/CoroutineManager.cs Line: 137)
    54.  
    55. Exception: Routine error: System.NullReferenceException: Object reference not set to an instance of an object
    56.   at MicroSplatTerrain.Sync () [0x00085] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MicroSplat\Core\Scripts\MicroSplatTerrain.cs:152
    57.   at MapMagic.Nodes.MatrixGenerators.MicroSplatOutput200+ApplyData.Apply (UnityEngine.Terrain terrain) [0x00119] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Compatibility\Runtime\MicroSplatOutput.cs:112
    58.   at MapMagic.Terrains.TerrainTile.ApplyNow (MapMagic.Terrains.TerrainTile+DetailLevel det, MapMagic.Products.StopToken stop) [0x0003c] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:719
    59.   at MapMagic.Terrains.TerrainTile+<>c__DisplayClass41_0.<Generate>b__0 () [0x00000] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:698
    60.   at Den.Tools.Tasks.CoroutineManager.Update () [0x000f0] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:136
    61.   at Den.Tools.Tasks.CoroutineManager.Update () [0x00115] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:137
    62.   at MapMagic.Core.MapMagicObject.Update () [0x00021] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Core\MapMagicObject.cs:142
    63. (Filename: C:/Users/jimmy/Documents/unity/projects/Native SD 2/Assets/Imports/MapMagic/Tools/ThreadManager/CoroutineManager.cs Line: 137)
    64.  
    65. Exception: Routine error: System.NullReferenceException: Object reference not set to an instance of an object
    66.   at MicroSplatTerrain.Sync () [0x00085] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MicroSplat\Core\Scripts\MicroSplatTerrain.cs:152
    67.   at MapMagic.Nodes.MatrixGenerators.MicroSplatOutput200+ApplyData.Apply (UnityEngine.Terrain terrain) [0x00119] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Compatibility\Runtime\MicroSplatOutput.cs:112
    68.   at MapMagic.Terrains.TerrainTile.ApplyNow (MapMagic.Terrains.TerrainTile+DetailLevel det, MapMagic.Products.StopToken stop) [0x0003c] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:719
    69.   at MapMagic.Terrains.TerrainTile+<>c__DisplayClass41_0.<Generate>b__0 () [0x00000] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:698
    70.   at Den.Tools.Tasks.CoroutineManager.Update () [0x000f0] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:136
    71.   at Den.Tools.Tasks.CoroutineManager.Update () [0x00115] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:137
    72.   at MapMagic.Core.MapMagicObject.Update () [0x00021] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Core\MapMagicObject.cs:142
    73. (Filename: C:/Users/jimmy/Documents/unity/projects/Native SD 2/Assets/Imports/MapMagic/Tools/ThreadManager/CoroutineManager.cs Line: 137)
    74.  
    75. Exception: Routine error: System.NullReferenceException: Object reference not set to an instance of an object
    76.   at MicroSplatTerrain.Sync () [0x00085] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MicroSplat\Core\Scripts\MicroSplatTerrain.cs:152
    77.   at MapMagic.Nodes.MatrixGenerators.MicroSplatOutput200+ApplyData.Apply (UnityEngine.Terrain terrain) [0x00119] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Compatibility\Runtime\MicroSplatOutput.cs:112
    78.   at MapMagic.Terrains.TerrainTile.ApplyNow (MapMagic.Terrains.TerrainTile+DetailLevel det, MapMagic.Products.StopToken stop) [0x0003c] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:719
    79.   at MapMagic.Terrains.TerrainTile+<>c__DisplayClass41_0.<Generate>b__0 () [0x00000] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:698
    80.   at Den.Tools.Tasks.CoroutineManager.Update () [0x000f0] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:136
    81.   at Den.Tools.Tasks.CoroutineManager.Update () [0x00115] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:137
    82.   at MapMagic.Core.MapMagicObject.Update () [0x00021] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Core\MapMagicObject.cs:142
    83. (Filename: C:/Users/jimmy/Documents/unity/projects/Native SD 2/Assets/Imports/MapMagic/Tools/ThreadManager/CoroutineManager.cs Line: 137)
    84.  
    85. Exception: Routine error: System.NullReferenceException: Object reference not set to an instance of an object
    86.   at MicroSplatTerrain.Sync () [0x00085] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MicroSplat\Core\Scripts\MicroSplatTerrain.cs:152
    87.   at MapMagic.Nodes.MatrixGenerators.MicroSplatOutput200+ApplyData.Apply (UnityEngine.Terrain terrain) [0x00119] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Compatibility\Runtime\MicroSplatOutput.cs:112
    88.   at MapMagic.Terrains.TerrainTile.ApplyNow (MapMagic.Terrains.TerrainTile+DetailLevel det, MapMagic.Products.StopToken stop) [0x0003c] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:719
    89.   at MapMagic.Terrains.TerrainTile+<>c__DisplayClass41_0.<Generate>b__0 () [0x00000] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:698
    90.   at Den.Tools.Tasks.CoroutineManager.Update () [0x000f0] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:136
    91.   at Den.Tools.Tasks.CoroutineManager.Update () [0x00115] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:137
    92.   at MapMagic.Core.MapMagicObject.Update () [0x00021] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Core\MapMagicObject.cs:142
    93. (Filename: C:/Users/jimmy/Documents/unity/projects/Native SD 2/Assets/Imports/MapMagic/Tools/ThreadManager/CoroutineManager.cs Line: 137)
    94.  
    95. Exception: Routine error: System.NullReferenceException: Object reference not set to an instance of an object
    96.   at MicroSplatTerrain.Sync () [0x00085] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MicroSplat\Core\Scripts\MicroSplatTerrain.cs:152
    97.   at MapMagic.Nodes.MatrixGenerators.MicroSplatOutput200+ApplyData.Apply (UnityEngine.Terrain terrain) [0x00119] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Compatibility\Runtime\MicroSplatOutput.cs:112
    98.   at MapMagic.Terrains.TerrainTile.ApplyNow (MapMagic.Terrains.TerrainTile+DetailLevel det, MapMagic.Products.StopToken stop) [0x0003c] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:719
    99.   at MapMagic.Terrains.TerrainTile+<>c__DisplayClass41_0.<Generate>b__0 () [0x00000] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:698
    100.   at Den.Tools.Tasks.CoroutineManager.Update () [0x000f0] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:136
    101.   at Den.Tools.Tasks.CoroutineManager.Update () [0x00115] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:137
    102.   at MapMagic.Core.MapMagicObject.Update () [0x00021] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Core\MapMagicObject.cs:142
    103. (Filename: C:/Users/jimmy/Documents/unity/projects/Native SD 2/Assets/Imports/MapMagic/Tools/ThreadManager/CoroutineManager.cs Line: 137)
    104.  
    105. Exception: Routine error: System.NullReferenceException: Object reference not set to an instance of an object
    106.   at MicroSplatTerrain.Sync () [0x00085] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MicroSplat\Core\Scripts\MicroSplatTerrain.cs:152
    107.   at MapMagic.Nodes.MatrixGenerators.MicroSplatOutput200+ApplyData.Apply (UnityEngine.Terrain terrain) [0x00119] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Compatibility\Runtime\MicroSplatOutput.cs:112
    108.   at MapMagic.Terrains.TerrainTile.ApplyNow (MapMagic.Terrains.TerrainTile+DetailLevel det, MapMagic.Products.StopToken stop) [0x0003c] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:719
    109.   at MapMagic.Terrains.TerrainTile+<>c__DisplayClass41_0.<Generate>b__0 () [0x00000] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:698
    110.   at Den.Tools.Tasks.CoroutineManager.Update () [0x000f0] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:136
    111.   at Den.Tools.Tasks.CoroutineManager.Update () [0x00115] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:137
    112.   at MapMagic.Core.MapMagicObject.Update () [0x00021] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Core\MapMagicObject.cs:142
    113. (Filename: C:/Users/jimmy/Documents/unity/projects/Native SD 2/Assets/Imports/MapMagic/Tools/ThreadManager/CoroutineManager.cs Line: 137)
    114.  
    115. Exception: Routine error: System.NullReferenceException: Object reference not set to an instance of an object
    116.   at MicroSplatTerrain.Sync () [0x00085] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MicroSplat\Core\Scripts\MicroSplatTerrain.cs:152
    117.   at MapMagic.Nodes.MatrixGenerators.MicroSplatOutput200+ApplyData.Apply (UnityEngine.Terrain terrain) [0x00119] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Compatibility\Runtime\MicroSplatOutput.cs:112
    118.   at MapMagic.Terrains.TerrainTile.ApplyNow (MapMagic.Terrains.TerrainTile+DetailLevel det, MapMagic.Products.StopToken stop) [0x0003c] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:719
    119.   at MapMagic.Terrains.TerrainTile+<>c__DisplayClass41_0.<Generate>b__0 () [0x00000] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:698
    120.   at Den.Tools.Tasks.CoroutineManager.Update () [0x000f0] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:136
    121.   at Den.Tools.Tasks.CoroutineManager.Update () [0x00115] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:137
    122.   at MapMagic.Core.MapMagicObject.Update () [0x00021] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Core\MapMagicObject.cs:142
    123. (Filename: C:/Users/jimmy/Documents/unity/projects/Native SD 2/Assets/Imports/MapMagic/Tools/ThreadManager/CoroutineManager.cs Line: 137)
    124.  
    125. Exception: Routine error: System.NullReferenceException: Object reference not set to an instance of an object
    126.   at MicroSplatTerrain.Sync () [0x00085] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MicroSplat\Core\Scripts\MicroSplatTerrain.cs:152
    127.   at MapMagic.Nodes.MatrixGenerators.MicroSplatOutput200+ApplyData.Apply (UnityEngine.Terrain terrain) [0x00119] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Compatibility\Runtime\MicroSplatOutput.cs:112
    128.   at MapMagic.Terrains.TerrainTile.ApplyNow (MapMagic.Terrains.TerrainTile+DetailLevel det, MapMagic.Products.StopToken stop) [0x0003c] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:719
    129.   at MapMagic.Terrains.TerrainTile+<>c__DisplayClass41_0.<Generate>b__0 () [0x00000] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:698
    130.   at Den.Tools.Tasks.CoroutineManager.Update () [0x000f0] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:136
    131.   at Den.Tools.Tasks.CoroutineManager.Update () [0x00115] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:137
    132.   at MapMagic.Core.MapMagicObject.Update () [0x00021] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Core\MapMagicObject.cs:142
    133. (Filename: C:/Users/jimmy/Documents/unity/projects/Native SD 2/Assets/Imports/MapMagic/Tools/ThreadManager/CoroutineManager.cs Line: 137)
    134.  
    135. Exception: Routine error: System.NullReferenceException: Object reference not set to an instance of an object
    136.   at MicroSplatTerrain.Sync () [0x00085] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MicroSplat\Core\Scripts\MicroSplatTerrain.cs:152
    137.   at MapMagic.Nodes.MatrixGenerators.MicroSplatOutput200+ApplyData.Apply (UnityEngine.Terrain terrain) [0x00119] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Compatibility\Runtime\MicroSplatOutput.cs:112
    138.   at MapMagic.Terrains.TerrainTile.ApplyNow (MapMagic.Terrains.TerrainTile+DetailLevel det, MapMagic.Products.StopToken stop) [0x0003c] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:719
    139.   at MapMagic.Terrains.TerrainTile+<>c__DisplayClass41_0.<Generate>b__0 () [0x00000] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:698
    140.   at Den.Tools.Tasks.CoroutineManager.Update () [0x000f0] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:136
    141.   at Den.Tools.Tasks.CoroutineManager.Update () [0x00115] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:137
    142.   at MapMagic.Core.MapMagicObject.Update () [0x00021] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Core\MapMagicObject.cs:142
    143. (Filename: C:/Users/jimmy/Documents/unity/projects/Native SD 2/Assets/Imports/MapMagic/Tools/ThreadManager/CoroutineManager.cs Line: 137)
    144.  
    145. Exception: Routine error: System.NullReferenceException: Object reference not set to an instance of an object
    146.   at MicroSplatTerrain.Sync () [0x00085] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MicroSplat\Core\Scripts\MicroSplatTerrain.cs:152
    147.   at MapMagic.Nodes.MatrixGenerators.MicroSplatOutput200+ApplyData.Apply (UnityEngine.Terrain terrain) [0x00119] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Compatibility\Runtime\MicroSplatOutput.cs:112
    148.   at MapMagic.Terrains.TerrainTile.ApplyNow (MapMagic.Terrains.TerrainTile+DetailLevel det, MapMagic.Products.StopToken stop) [0x0003c] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:719
    149.   at MapMagic.Terrains.TerrainTile+<>c__DisplayClass41_0.<Generate>b__0 () [0x00000] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:698
    150.   at Den.Tools.Tasks.CoroutineManager.Update () [0x000f0] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:136
    151.   at Den.Tools.Tasks.CoroutineManager.Update () [0x00115] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:137
    152.   at MapMagic.Core.MapMagicObject.Update () [0x00021] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Core\MapMagicObject.cs:142
    153. (Filename: C:/Users/jimmy/Documents/unity/projects/Native SD 2/Assets/Imports/MapMagic/Tools/ThreadManager/CoroutineManager.cs Line: 137)
    154.  
    155. Exception: Routine error: System.NullReferenceException: Object reference not set to an instance of an object
    156.   at MicroSplatTerrain.Sync () [0x00085] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MicroSplat\Core\Scripts\MicroSplatTerrain.cs:152
    157.   at MapMagic.Nodes.MatrixGenerators.MicroSplatOutput200+ApplyData.Apply (UnityEngine.Terrain terrain) [0x00119] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Compatibility\Runtime\MicroSplatOutput.cs:112
    158.   at MapMagic.Terrains.TerrainTile.ApplyNow (MapMagic.Terrains.TerrainTile+DetailLevel det, MapMagic.Products.StopToken stop) [0x0003c] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:719
    159.   at MapMagic.Terrains.TerrainTile+<>c__DisplayClass41_0.<Generate>b__0 () [0x00000] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:698
    160.   at Den.Tools.Tasks.CoroutineManager.Update () [0x000f0] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:136
    161.   at Den.Tools.Tasks.CoroutineManager.Update () [0x00115] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:137
    162.   at MapMagic.Core.MapMagicObject.Update () [0x00021] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Core\MapMagicObject.cs:142
    163. (Filename: C:/Users/jimmy/Documents/unity/projects/Native SD 2/Assets/Imports/MapMagic/Tools/ThreadManager/CoroutineManager.cs Line: 137)
    164.  
    165. Exception: Routine error: System.NullReferenceException: Object reference not set to an instance of an object
    166.   at MicroSplatTerrain.Sync () [0x00085] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MicroSplat\Core\Scripts\MicroSplatTerrain.cs:152
    167.   at MapMagic.Nodes.MatrixGenerators.MicroSplatOutput200+ApplyData.Apply (UnityEngine.Terrain terrain) [0x00119] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Compatibility\Runtime\MicroSplatOutput.cs:112
    168.   at MapMagic.Terrains.TerrainTile.ApplyNow (MapMagic.Terrains.TerrainTile+DetailLevel det, MapMagic.Products.StopToken stop) [0x0003c] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:719
    169.   at MapMagic.Terrains.TerrainTile+<>c__DisplayClass41_0.<Generate>b__0 () [0x00000] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:698
    170.   at Den.Tools.Tasks.CoroutineManager.Update () [0x000f0] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:136
    171.   at Den.Tools.Tasks.CoroutineManager.Update () [0x00115] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:137
    172.   at MapMagic.Core.MapMagicObject.Update () [0x00021] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Core\MapMagicObject.cs:142
    173. (Filename: C:/Users/jimmy/Documents/unity/projects/Native SD 2/Assets/Imports/MapMagic/Tools/ThreadManager/CoroutineManager.cs Line: 137)
    174.  
    175. Exception: Routine error: System.NullReferenceException: Object reference not set to an instance of an object
    176.   at MicroSplatTerrain.Sync () [0x00085] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MicroSplat\Core\Scripts\MicroSplatTerrain.cs:152
    177.   at MapMagic.Nodes.MatrixGenerators.MicroSplatOutput200+ApplyData.Apply (UnityEngine.Terrain terrain) [0x00119] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Compatibility\Runtime\MicroSplatOutput.cs:112
    178.   at MapMagic.Terrains.TerrainTile.ApplyNow (MapMagic.Terrains.TerrainTile+DetailLevel det, MapMagic.Products.StopToken stop) [0x0003c] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:719
    179.   at MapMagic.Terrains.TerrainTile+<>c__DisplayClass41_0.<Generate>b__0 () [0x00000] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:698
    180.   at Den.Tools.Tasks.CoroutineManager.Update () [0x000f0] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:136
    181.   at Den.Tools.Tasks.CoroutineManager.Update () [0x00115] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:137
    182.   at MapMagic.Core.MapMagicObject.Update () [0x00021] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Core\MapMagicObject.cs:142
    183. (Filename: C:/Users/jimmy/Documents/unity/projects/Native SD 2/Assets/Imports/MapMagic/Tools/ThreadManager/CoroutineManager.cs Line: 137)
    184.  
    185. Exception: Routine error: System.NullReferenceException: Object reference not set to an instance of an object
    186.   at MicroSplatTerrain.Sync () [0x00085] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MicroSplat\Core\Scripts\MicroSplatTerrain.cs:152
    187.   at MapMagic.Nodes.MatrixGenerators.MicroSplatOutput200+ApplyData.Apply (UnityEngine.Terrain terrain) [0x00119] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Compatibility\Runtime\MicroSplatOutput.cs:112
    188.   at MapMagic.Terrains.TerrainTile.ApplyNow (MapMagic.Terrains.TerrainTile+DetailLevel det, MapMagic.Products.StopToken stop) [0x0003c] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:719
    189.   at MapMagic.Terrains.TerrainTile+<>c__DisplayClass41_0.<Generate>b__0 () [0x00000] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:698
    190.   at Den.Tools.Tasks.CoroutineManager.Update () [0x000f0] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:136
    191.   at Den.Tools.Tasks.CoroutineManager.Update () [0x00115] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:137
    192.   at MapMagic.Core.MapMagicObject.Update () [0x00021] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Core\MapMagicObject.cs:142
    193. (Filename: C:/Users/jimmy/Documents/unity/projects/Native SD 2/Assets/Imports/MapMagic/Tools/ThreadManager/CoroutineManager.cs Line: 137)
    194.  
    195. Exception: Routine error: System.NullReferenceException: Object reference not set to an instance of an object
    196.   at MicroSplatTerrain.Sync () [0x00085] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MicroSplat\Core\Scripts\MicroSplatTerrain.cs:152
    197.   at MapMagic.Nodes.MatrixGenerators.MicroSplatOutput200+ApplyData.Apply (UnityEngine.Terrain terrain) [0x00119] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Compatibility\Runtime\MicroSplatOutput.cs:112
    198.   at MapMagic.Terrains.TerrainTile.ApplyNow (MapMagic.Terrains.TerrainTile+DetailLevel det, MapMagic.Products.StopToken stop) [0x0003c] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:719
    199.   at MapMagic.Terrains.TerrainTile+<>c__DisplayClass41_0.<Generate>b__0 () [0x00000] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:698
    200.   at Den.Tools.Tasks.CoroutineManager.Update () [0x000f0] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:136
    201.   at Den.Tools.Tasks.CoroutineManager.Update () [0x00115] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:137
    202.   at MapMagic.Core.MapMagicObject.Update () [0x00021] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Core\MapMagicObject.cs:142
    203. (Filename: C:/Users/jimmy/Documents/unity/projects/Native SD 2/Assets/Imports/MapMagic/Tools/ThreadManager/CoroutineManager.cs Line: 137)
    204.  
    205. Exception: Routine error: System.NullReferenceException: Object reference not set to an instance of an object
    206.   at MicroSplatTerrain.Sync () [0x00085] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MicroSplat\Core\Scripts\MicroSplatTerrain.cs:152
    207.   at MapMagic.Nodes.MatrixGenerators.MicroSplatOutput200+ApplyData.Apply (UnityEngine.Terrain terrain) [0x00119] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Compatibility\Runtime\MicroSplatOutput.cs:112
    208.   at MapMagic.Terrains.TerrainTile.ApplyNow (MapMagic.Terrains.TerrainTile+DetailLevel det, MapMagic.Products.StopToken stop) [0x0003c] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:719
    209.   at MapMagic.Terrains.TerrainTile+<>c__DisplayClass41_0.<Generate>b__0 () [0x00000] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:698
    210.   at Den.Tools.Tasks.CoroutineManager.Update () [0x000f0] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:136
    211.   at Den.Tools.Tasks.CoroutineManager.Update () [0x00115] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:137
    212.   at MapMagic.Core.MapMagicObject.Update () [0x00021] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Core\MapMagicObject.cs:142
    213. (Filename: C:/Users/jimmy/Documents/unity/projects/Native SD 2/Assets/Imports/MapMagic/Tools/ThreadManager/CoroutineManager.cs Line: 137)
    214.  
    215. Exception: Routine error: System.NullReferenceException: Object reference not set to an instance of an object
    216.   at MicroSplatTerrain.Sync () [0x00085] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MicroSplat\Core\Scripts\MicroSplatTerrain.cs:152
    217.   at MapMagic.Nodes.MatrixGenerators.MicroSplatOutput200+ApplyData.Apply (UnityEngine.Terrain terrain) [0x00119] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Compatibility\Runtime\MicroSplatOutput.cs:112
    218.   at MapMagic.Terrains.TerrainTile.ApplyNow (MapMagic.Terrains.TerrainTile+DetailLevel det, MapMagic.Products.StopToken stop) [0x0003c] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:719
    219.   at MapMagic.Terrains.TerrainTile+<>c__DisplayClass41_0.<Generate>b__0 () [0x00000] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:698
    220.   at Den.Tools.Tasks.CoroutineManager.Update () [0x000f0] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:136
    221.   at Den.Tools.Tasks.CoroutineManager.Update () [0x00115] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:137
    222.   at MapMagic.Core.MapMagicObject.Update () [0x00021] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Core\MapMagicObject.cs:142
    223. (Filename: C:/Users/jimmy/Documents/unity/projects/Native SD 2/Assets/Imports/MapMagic/Tools/ThreadManager/CoroutineManager.cs Line: 137)
    224.  
    225. Exception: Routine error: System.NullReferenceException: Object reference not set to an instance of an object
    226.   at MicroSplatTerrain.Sync () [0x00085] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MicroSplat\Core\Scripts\MicroSplatTerrain.cs:152
    227.   at MapMagic.Nodes.MatrixGenerators.MicroSplatOutput200+ApplyData.Apply (UnityEngine.Terrain terrain) [0x00119] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Compatibility\Runtime\MicroSplatOutput.cs:112
    228.   at MapMagic.Terrains.TerrainTile.ApplyNow (MapMagic.Terrains.TerrainTile+DetailLevel det, MapMagic.Products.StopToken stop) [0x0003c] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:719
    229.   at MapMagic.Terrains.TerrainTile+<>c__DisplayClass41_0.<Generate>b__0 () [0x00000] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:698
    230.   at Den.Tools.Tasks.CoroutineManager.Update () [0x000f0] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:136
    231.   at Den.Tools.Tasks.CoroutineManager.Update () [0x00115] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:137
    232.   at MapMagic.Core.MapMagicObject.Update () [0x00021] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Core\MapMagicObject.cs:142
    233. (Filename: C:/Users/jimmy/Documents/unity/projects/Native SD 2/Assets/Imports/MapMagic/Tools/ThreadManager/CoroutineManager.cs Line: 137)
    234.  
    235. Exception: Routine error: System.NullReferenceException: Object reference not set to an instance of an object
    236.   at MicroSplatTerrain.Sync () [0x00085] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MicroSplat\Core\Scripts\MicroSplatTerrain.cs:152
    237.   at MapMagic.Nodes.MatrixGenerators.MicroSplatOutput200+ApplyData.Apply (UnityEngine.Terrain terrain) [0x00119] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Compatibility\Runtime\MicroSplatOutput.cs:112
    238.   at MapMagic.Terrains.TerrainTile.ApplyNow (MapMagic.Terrains.TerrainTile+DetailLevel det, MapMagic.Products.StopToken stop) [0x0003c] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:719
    239.   at MapMagic.Terrains.TerrainTile+<>c__DisplayClass41_0.<Generate>b__0 () [0x00000] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:698
    240.   at Den.Tools.Tasks.CoroutineManager.Update () [0x000f0] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:136
    241.   at Den.Tools.Tasks.CoroutineManager.Update () [0x00115] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:137
    242.   at MapMagic.Core.MapMagicObject.Update () [0x00021] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Core\MapMagicObject.cs:142
    243. (Filename: C:/Users/jimmy/Documents/unity/projects/Native SD 2/Assets/Imports/MapMagic/Tools/ThreadManager/CoroutineManager.cs Line: 137)
    244.  
    245. Exception: Routine error: System.NullReferenceException: Object reference not set to an instance of an object
    246.   at MicroSplatTerrain.Sync () [0x00085] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MicroSplat\Core\Scripts\MicroSplatTerrain.cs:152
    247.   at MapMagic.Nodes.MatrixGenerators.MicroSplatOutput200+ApplyData.Apply (UnityEngine.Terrain terrain) [0x00119] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Compatibility\Runtime\MicroSplatOutput.cs:112
    248.   at MapMagic.Terrains.TerrainTile.ApplyNow (MapMagic.Terrains.TerrainTile+DetailLevel det, MapMagic.Products.StopToken stop) [0x0003c] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:719
    249.   at MapMagic.Terrains.TerrainTile+<>c__DisplayClass41_0.<Generate>b__0 () [0x00000] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Terrains\TerrainTile.cs:698
    250.   at Den.Tools.Tasks.CoroutineManager.Update () [0x000f0] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:136
    251.   at Den.Tools.Tasks.CoroutineManager.Update () [0x00115] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Tools\ThreadManager\CoroutineManager.cs:137
    252.   at MapMagic.Core.MapMagicObject.Update () [0x00021] in C:\Users\jimmy\Documents\unity\projects\Native SD 2\Assets\Imports\MapMagic\Core\MapMagicObject.cs:142
    If I look at that line, it appears that keywordSo is null...
    It looks like the output generator for microsplat maybe needs the keywords object as well as the prop data to set on the MicroSplatTerrain...otherwise in a build it will cause exceptions. I'm going to try and implement that myself and Ill report what I find. I suspect that will fix the issue. It doesnt cause an issue within unity editor because it loads the keywords using asset data base call. However in a build, it wont hit that because its #UNITY EDITOR...so looks like it needs to be set by the output generator just like propdata.
     
    Last edited: Oct 6, 2020
  31. jimmygladfelter

    jimmygladfelter

    Joined:
    May 3, 2020
    Posts:
    83

    That was it. The MicroSplat node should be updated with the 'keywords' object as well. I made the change myself:

    In MapMagicObject, I added:
    Code (CSharp):
    1. public UnityEngine.Object microSplatKeywords;
    In MicroSplatEditor, I added:

    Code (CSharp):
    1. using ( Cell.LineStd )
    2.                             GraphWindow.current.mapMagic.globals.microSplatKeywords = GeneratorDraw.DrawGlobalVar<MicroSplatKeywords>(
    3.                                 GraphWindow.current.mapMagic.globals.microSplatKeywords == null ? null : (MicroSplatKeywords) GraphWindow.current.mapMagic.globals.microSplatKeywords,
    4.                                 "Keywords");
    In MicroSplatOutput, I added (keywords at the bottom):

    Code (CSharp):
    1.  
    2.             //var applyData = new ApplyData() { colors = colors };
    3.             var applyData = new ApplyData() {
    4.                 textureColors = colors,
    5.                 textureNames = new string[] { "_CustomControl0", "_CustomControl1", "_CustomControl2", "_CustomControl3", "_CustomControl4", "_CustomControl5", "_CustomControl6", "_CustomControl7" },
    6.                 textureFormat = TextureFormat.RGBA32,
    7.                 assignComponent = data.globals.assignComponent,
    8.                 propData = data.globals.microSplatPropData as MicroSplatPropData,
    9.                 keywords = data.globals.microSplatKeywords as MicroSplatKeywords,
    10.             };
    Also note I still have to keep adding those extra texture names otherwise the node does not work if you reference mre than 16 textures.

    In MicroSplatOutput:ApplyData, I added this property:

    Code (CSharp):
    1.  
    2.             public MicroSplatKeywords keywords;
    Finally, I set it right next to propdata:

    Code (CSharp):
    1.  
    2.                     mso.propData = propData;
    3.                     mso.keywordSO = keywords;
     
  32. jimmygladfelter

    jimmygladfelter

    Joined:
    May 3, 2020
    Posts:
    83
    After all of that, It finally generates terrain and vegetation (its not totally blank anymore); however, the terrain textures do not show up at all:
    upload_2020-10-5_21-32-49.png

    I tried making a build with an MicroSplat example and that rendered fine....so not sure whats going on here. I dont see any more exceptions logged. I dont even see a log generated anymore when making a build in dev. mode.
     
    Last edited: Oct 6, 2020
  33. jimmygladfelter

    jimmygladfelter

    Joined:
    May 3, 2020
    Posts:
    83
    I tried making a build with your MicroSplat demo scene and it works if the terrain is already pinned and visible..... but if I let MapMagic generate it, it does not...

    It seems that if I have a terrain already rendered in the scene, it works; however, if I make a build where mapmagic just generates it (no terrains visible on start), I get the above screenshot. Im wondering if a certain shader or shaders dont get added because its dynamically generated and doesnt see it when I make the build of the current scene? Im not sure how it knows what shaders to use when making a build....just a guess..
     
    Last edited: Oct 6, 2020
  34. DGordon

    DGordon

    Joined:
    Dec 8, 2013
    Posts:
    649
    Hello,

    1) What do you recommend using for pathfinding when generating at runtime? Currently I've been using the built in Unity Navmesh ... is there any way to make that work with this?

    2) how would I set what the seed is at runtime, so I can have a new game create a new map / load store the old seed?

    3) how can I hook into when the terrain has been completely finished? That way I can have a loading screen until then.

    4) Can I generate the terrain height / textures at edit time, but its objects at runtime? Then I could have different map types + bake their navmesh but still randomize their content.

    Thanks!

    PS: If you see a million edits, its because I was trying to use the infinite terrain stuff but decided it just wont work well for what I'm trying to do (rts style game).

    [Edit - So far I figured out how to generate a new map at runtime. Please please add this to the documentation ... and if theres there, make it much easier to find. I shouldn't have had to go searching through forums for this! With that said, I still need to figure out how to lock a noise to a specific seed even if the overall seed changes, since I want the objects to change but the base terrain to stay the same.

    If you currently don't allow this, please consider adding the ability to set a node's seed to NOT use the overall seed, meaning, it should never ever change. I want to be able to keep parts of this graph static even when the overall seed changes if I need to, unless you have a better way of doing this.]
     
    Last edited: Oct 7, 2020
  35. DGordon

    DGordon

    Joined:
    Dec 8, 2013
    Posts:
    649
    Holy moly, so I managed to figure out to use the exposed parameters to change only one seed for the object generation, and now the terrain stays the same.

    I dont know whether to say awesome job making this so far, or raise my fists in anger for not (a) documenting the runtime scripting aspect clearly [I've gone through the documentation and used find, but its always possible I missed something so make it clear please!] and (b) wrapping this up in a nice API so I dont have to use VS intellisense and find reference to help me figure out what on earth I should be doing ... and in the end, I still had to use reflection to set the exposed parameters (which is what you do in the editor code).

    Please, for the love of every game developer out there, just create a nice API where you wrap this so common runtime stuff doesnt need to have an entire day frittered away just trying to find the right way to do this.

    All the same, you DID give a way, so great job so far, heh. Now I just need to to know when the entire map is completely generated, so I can decide if I need a loading screen or not.

    [Edit -- just to sum up my feelings for anyone who hasn't purchased this ... its awesome. I own a bunch of other terrain stuff and very happy I bought this. Just trying to fit this into a specific game]
     
    Last edited: Oct 7, 2020
  36. Refeas

    Refeas

    Joined:
    Nov 8, 2016
    Posts:
    192
    Yeah, Unity strips the shader because you have no terrain in your scene. It does the same thing with the built in terrain shader. What you can do is to put the shader into "Always included shaders" list in the graphics settings.
     
    jimmygladfelter likes this.
  37. jimmygladfelter

    jimmygladfelter

    Joined:
    May 3, 2020
    Posts:
    83
    I just tried adding my two microsplat shaders to the 'always include' list under graphics settings; however, I still do not see any terrain textures. Im sure IM missing some other shader I just am not sure which one I guess. Is there like a base microsplat shader I need to also include? I added my MicroSplat & MicroSplat_Base shader (created from microsplat material).
     
  38. Refeas

    Refeas

    Joined:
    Nov 8, 2016
    Posts:
    192
    Can't say as I'm not using Microsplat yet. But Unity should show you which shaders are still missing in the log, then just add them the same way to the Always included shader list.
     
  39. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,278
    Looks like terrain shader is really missing in build. Theoretically you need to include only the MS shaders that you assign to MS material used, but try adding the standard shaders as well (Nature/Terrain/Standard).

    Got it, thanks for the feedback! Can't promise full API reference, but guess I'll start with scripting FAQ to outline the mostly used methods/fields.

    You can subscribe to static Action<TerrainTile, TileData, StopToken> TerrainTile.OnTileApplied to determine if some specific tile has been generated and applied, or to Action<MapMagicObject> TerrainTile.OnAllComplete that is called when all of the tiles are done.
     
    DGordon likes this.
  40. N1warhead

    N1warhead

    Joined:
    Mar 12, 2014
    Posts:
    3,884
    @Wright
    I've got holes in my terrains. Not sure what is causing this. See the blue squares? That's the water underneath my terrain.

    If I get Camera closer tiny chunks start disappearing in mass until I bring camera back out. So - I can't have a camera near terrain or it disappears.

    They aren't individual terrains, I've got 4 5K terrains. So not sure what these tiny square hole artifacts are exactly.
    MMIssue.gif

    EDIT: Also just noticed that trees, etc are under terrain.
    upload_2020-10-7_15-24-43.png

    EDIT 2 : it appears if I import a heightmap (png), and do any sort of height adjustment with levels, curve or Unity curve it causes issues.
     
    Last edited: Oct 7, 2020
  41. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,278
    N1warhead, It seems that your terrain exceeds maximum height. Could you please make sure that he summary value does not exceed 1? For example, if you have a noise with intensity 0.8, voronoi with intensity 0.5 and blend them with additive mode (like on screen) the maximum resulting value might be 1.3
     
  42. hedgefield

    hedgefield

    Joined:
    Jan 1, 2014
    Posts:
    39
    Hello, I've been really enjoying working with MapMagic 2. In a few minutes I had some pretty good terrain going, and I love that it's so easy to tweak. I have a question though:

    I have one central terrain tile, and around it are 8 additional tiles that I hand-painted big mountain ranges onto to prevent the player from falling off the map. I use Locks to keep the custom mountains intact across graph reloads. The Locks overlap to prevent any valleys from appearing inbetween the mountain ranges, and they are often larger than the terrain tile they are on. But when I move around the terrain, I often get the error ArgumentException: Trying to access out-of-bounds terrain height information, and a distant mountain will start to glitch out. And regardless, there are still strange bumps and deep seams where the mountains go from one tile to the next.



    This solution feels kinda hacky, I'd like to do all this inside the graph, but I don't know how to only generate mountains in specific places. Is there a better way?
     
  43. N1warhead

    N1warhead

    Joined:
    Mar 12, 2014
    Posts:
    3,884
    @Wright : that was it :)
    Strange though, never had that problem in MM1... Assuming you'll get to making it clamp to 1 in the future like MM1 does. Well I assume MM1 did it - never seen this issue lol.

    Great work on MM2 though :)
     
  44. DGordon

    DGordon

    Joined:
    Dec 8, 2013
    Posts:
    649
    Awesome, thanks! My only negative feedback so far is on having to hunt down how to do this, whereas probably 1 paragraph of text could have saved me a day of work.

    However ... awesome awesome product. Super happy with it! :D
     
  45. jimmygladfelter

    jimmygladfelter

    Joined:
    May 3, 2020
    Posts:
    83
    I tried setting the micro splat shaders as well as the normal terrain ones in the list below; however I still do not see any terrain textures when I make a build:
    upload_2020-10-7_20-9-40.png

    Any other ideas I could try?

    Im using standard pipeline and defered rendering.
     
  46. camta005

    camta005

    Joined:
    Dec 16, 2016
    Posts:
    320
    The issue is that if you have Draw Instanced checked in the MapMagic Terrain Properties the shader gets stripped if there are no pinned terrains in the scene. You don't need to include it in the Always Included Shaders section.

    So there are 3 options:

    - Pin at least 1 terrain (also works in a dummy scene)

    or

    - Uncheck Draw Instanced in MapMagic Terrain Properties

    or

    - In Project Settings > Graphics > Shader Stripping > Instancing Variants - select Keep All
     
    Last edited: Oct 8, 2020
    jimmygladfelter likes this.
  47. jimmygladfelter

    jimmygladfelter

    Joined:
    May 3, 2020
    Posts:
    83
    Thank you!
     
    camta005 likes this.
  48. DGordon

    DGordon

    Joined:
    Dec 8, 2013
    Posts:
    649
    Does anyone else experience that they have to delete an output node to get it to properly clear and then re-create the output node? I keep having objects dissappear as I'm changing the graph, and the only way I have found to solve it is to completely delete the entire node. I've also had a couple of cases where deleting the node didnt delete the objects and I had to create a new mapmagicobject. I think I also had this issue with grass.

    I would be fine with a "destroy entire terrain and rebuild from scratch" button, that way it ensures _all_ objects / whatever else gets nuked and recreated solely from the graph properly. If that's what generate is supposed to be doing, its definitely buggy.
     
    Last edited: Oct 8, 2020
  49. N1warhead

    N1warhead

    Joined:
    Mar 12, 2014
    Posts:
    3,884
    @Wright : Just out of curiosity.

    Since I'm doing Importing of a heightmap to get a base terrain setup.
    I'd like to do Generate Infinite Terrain (so chunks can disappear).

    How exactly is "Main Range" working, it's just set to "1". What does 1 mean?
    [also] is there a way to make it only generate a set amount of 'tiles', so it never makes more than needed outside of my heightmap.
     
    Last edited: Oct 8, 2020
  50. DGordon

    DGordon

    Joined:
    Dec 8, 2013
    Posts:
    649
    Another bug ... sometimes nodes feel like they arent doing anything or updating properly. This worked when I first tried yesterday, but notice the slide node is NOT really changing in this screenshot. No matter what I do, what numbers I plug in, what texture I pass in ... its not moving them around. I know what it SHOULD do, since it gave me nice clumps the other day.

    It's also throwing this error, which may or may not be related. I don't know if this

    Unity 2020.1.4f1

    mapmagic2.JPG
    mapmagic2_errorb.JPG

    Okay, confirmed that putting the same graph on a new mapmagicobject fixes the problem. Something went wrong on my old one ... no idea why or what that could be.
     
    Last edited: Oct 8, 2020