Search Unity

  1. Are you interested in providing feedback directly to Unity teams? Sign up to become a member of Unity Pulse, our new product feedback and research community.
    Dismiss Notice

[RELEASED] RayFire for Unity. Runtime demolition and fragmentation plugin.

Discussion in 'Assets and Asset Store' started by Mir-vadim, May 8, 2019.

  1. dgoyette

    dgoyette

    Joined:
    Jul 1, 2016
    Posts:
    3,787
    Thanks. That's such a great feature. Much better than what I was recommending. I'll start using that.
     
  2. IrishDev

    IrishDev

    Joined:
    Jul 18, 2012
    Posts:
    50
    Does RayFire work with the Ultimate Character Controller asset from Opsive?
    If so what issues where encountered?
    Thanks!
     
  3. Mir-vadim

    Mir-vadim

    Joined:
    Apr 18, 2017
    Posts:
    225
    Hi, sorry, but it wasn't tested with Ultimate Character Controller asset, at least by me. I will try to get this asset and test it
     
    IrishDev likes this.
  4. dgoyette

    dgoyette

    Joined:
    Jul 1, 2016
    Posts:
    3,787
    A couple of minor UI requests, if you are able:

    I know that I can use Presets for Unity components to initialize a newly added component to some specific defaults. However, I wonder if certain Rayfire defaults could possibly be based on a User Preferences setting. The only that always gets me is Mapping Scale on Rayfire Shatter:

    upload_2020-10-9_11-1-41.png

    I almost always want this to be 0.01, but the default is 0.1 on all new components. It would be nice if that value was based on some global preference I could set, rather than being hard-coded to having a default value of .1.


    The other minor thing is that when I use "Export Last Fragments", to save a mesh, it always starts off at the "/Assets" directory in the project. Since I typically store my fragment files in the same places, it would be nice if this dialog could remember the last directory so I don't have to go hunting for the directory every time I save it.
     
  5. Mir-vadim

    Mir-vadim

    Joined:
    Apr 18, 2017
    Posts:
    225
    Hi, save mesh asset path and reuse it later is a good idea, will add this in the next build.

    As for default Mapping Scale value, I think it will be easier for you to edit the default value instead of me overloading UI with new functionality.
    You can edit it in RFSurface.cs file in Assets\RayFire\Scripts\Classes\Shatter at line 35.
    Set
    mappingScale = 0.1f;
    to
    mappingScale = 0.01f;
     
  6. dgoyette

    dgoyette

    Joined:
    Jul 1, 2016
    Posts:
    3,787
    That's fine, but the downside is having to make that change any time I update Rayfire. But I can just use presets instead.
     
  7. Mir-vadim

    Mir-vadim

    Joined:
    Apr 18, 2017
    Posts:
    225
    Maybe later I will add some place to store all such properties, but for now it will not be reasonable to create it only for few Shatter properties.
     
  8. dgoyette

    dgoyette

    Joined:
    Jul 1, 2016
    Posts:
    3,787
    That's fine. Just so you know, in the future, it's pretty easy to add a Preferences or Project Settings window for your asset, to save user settings. It's a simple way to allow users to choose default values and things like that. I was surprised Rayfire didn't have a Preferences or Project Settings screen, given how complex Rayfire seems to be.

    upload_2020-10-9_21-30-6.png

    Anyway, thanks again.
     
  9. Mir-vadim

    Mir-vadim

    Joined:
    Apr 18, 2017
    Posts:
    225
    Thanks for the advice, somehow I missed this.
     
  10. Pixel2015

    Pixel2015

    Joined:
    Mar 10, 2016
    Posts:
    35
    Hi, when I have a prefragmented rigid with Mesh Root object type and set it to Inactive it still pushes the fragments among themselves after initialization viz picture. Is this some kind of precision problem with the mesh colliders? What I would need is for them to be asleep before I activate them is there an option to combine sleeping as well as inactive fragments?

     
  11. Pixel2015

    Pixel2015

    Joined:
    Mar 10, 2016
    Posts:
    35
    Ok I updated to the latest 1.23 version as I previously missed I am not on the latest version. And it seems to be working and there is no longer this initial state problem with inactive activaction.

    However now I get a lot of errors on runtime even though I don't see any problem with the simulation itself.

     
  12. Mir-vadim

    Mir-vadim

    Joined:
    Apr 18, 2017
    Posts:
    225
    Hi, can you check these fragments (Statue_sh_47 and 48) meshes? How many vertices do they have? Also try to delete all convex collider components if they have them.

    Don't know why but for some reason Unity can' create convex hulls for them. Which Unity build do you use?
     
  13. dgoyette

    dgoyette

    Joined:
    Jul 1, 2016
    Posts:
    3,787
    Hi there. Just reporting a minor issue that I thought you should be aware of. It's pretty easy to avoid, but maybe it's something Rayfire could warn you about.

    The issue is: If a mesh has inner faces, it seems to cause really weird shattering.

    Here's an example of a shape I made in ProBuilder:

    upload_2020-10-17_15-38-34.png

    It's basically a square donut. But, as you can see here, I left an inner face behind that selected face:

    upload_2020-10-17_15-39-18.png

    If you try to shatter the original, you get a weird result where some of the outer surfaces are shown, but no inner surfaces are shown:

    upload_2020-10-17_15-40-15.png

    Remove that one inner face that doesn't really belong there, and now the shattering works fine:

    upload_2020-10-17_15-40-54.png

    There's no warning about the inner face, just the weird result. Maybe Rayfire could warn if the mesh contains inner faces?

    Anyway, like I said, this isn't really a big deal, as I've come to recognize the behavior, and I know to go fix the original mesh. But I can imagine this confusing others.
     
  14. Mir-vadim

    Mir-vadim

    Joined:
    Apr 18, 2017
    Posts:
    225
    Hi, you are right, the problem in this inner face. After we convert this mesh into our mesh class we prepare it for fragmentation by welding all vertices because Unity mesh has every triangle separated. After this, ideally, we need to get one continuous surface without open edges. If there will be an open edge it will mean that mesh has no closed volume and if such mesh will be fragmented then there is a high chance to get fragments with wrong topology, open edges, and inner faces. So for now if the mesh has open volume we just cut its surface.

    In your first example with the inner face when our algorithm tries to weld vertices because of this inner face it can't weld all vertices right and get one surface without open edges. So, yeah, we need to improve it and make it recognize such inner faces and remove them from the final mesh. But the problem is that we have to do this before we welded vertices and before that, all we have is just a lot of separate triangles, we don't have any volume yet to understand that some face is inner and should not be part of the final mesh, also some parts of mesh may have a texture with alpha Chanel and inner face is visible and should stay. Also, in your example, your mesh is pretty simple and it is fairly easy to understand that this inner face probably not needed. But in more complicated meshes with thousands of triangles and all kinds of possible issues like open volume, double faces, overlapped faces, this task becomes almost impossible to solve.

    We are still improving our fixing algorithm, but even now all these additional checks make it too slow for runtime demolitions, this is why there are two modes: Runtime and Editor. Runtime mode skips all checks and fixes and assumes that you use proper mesh which has no issues. If the mesh has issues it won't fragment it so you will not get wrong fragments in runtime.

    Anyway, thanks for the report, we will think about this issue when we will get back to improving fixing algorithm next time.
     
    dgoyette likes this.
  15. look001

    look001

    Joined:
    Mar 23, 2017
    Posts:
    73
    Hi Mir-Vadim,
    this asset is pretty cool. Is it possible to build the connected Cluster at runtime, even though it might take a while to compute?
     
  16. Mir-vadim

    Mir-vadim

    Joined:
    Apr 18, 2017
    Posts:
    225
    Hi, yeah, you can create them in runtime, but the most time-consuming process is establishing neighbor connections and there are two ways to do this. First is By Mesh, it uses topology and may take a second or two, but very accurate and should be used in Editor. The second one is By Bounding Box, it is very fast but not accurate, this one can be used in runtime.
     
  17. julianr

    julianr

    Joined:
    Jun 5, 2014
    Posts:
    1,180
    industrial-combined.jpg Hi! What is the performance like on multiple buildings combined into one mesh using this asset to destroy them in a specific area and also all of the buildings? see image.
     
  18. Mir-vadim

    Mir-vadim

    Joined:
    Apr 18, 2017
    Posts:
    225
    To demolish complex structures you need to prefragment them, and if you want to demolish some structure at a specific point you need to use Connectivity component which will track all connections between fragments, so if demolish the bottom of the structure then the top part will crumble as well. And for such structures, it is better to keep every building's fragments in separated gameobject root.
    And not sure if this is the advice you need, but you can turn on Dynamic batching to reduce the amount of batches.
     
    Fibonaccov likes this.
  19. knas01

    knas01

    Joined:
    Feb 24, 2018
    Posts:
    175
    Hi, I'm curious about the physics in this asset. I guess they use Unitys built in? I'm looking for a system that can place all the pieces created at the exact same position, down to the smallest decimal, every time, as long as the destruction is the same. Not even the smallest deviation to position, rotation or scale etc.
    So how does physics work with this?
    Cheers.
     
  20. Mir-vadim

    Mir-vadim

    Joined:
    Apr 18, 2017
    Posts:
    225
    Hi, I guess you want to get deterministic simulation, sorry, but RayFire can't provide such because it uses built in Unity Physic engine. IT can provide the same destruction every time, there is seed property for such cases. But simulation will be different every time.
     
  21. knas01

    knas01

    Joined:
    Feb 24, 2018
    Posts:
    175
  22. tcz8

    tcz8

    Joined:
    Aug 20, 2015
    Posts:
    457
    Hello, sorry this is a long post, got a few things to discuss.

    First, I need a way to destroy/slice only a piece of an object at a time. I would like to be able to specify a coordinate (from a collision or raycast) to the api and have it break off a single chunk without processing the fracture on the entire object which should allow great performance. This would open MANY possibilities making rayfire much more useful than it already is.

    Here is the syntax I had in mind (both would return an array of the broken pieces ordered by distance to pos):
    ShatterAtPosition(Vector3 position, Vector3 velocity, Vector3 angularVelocity, float impactSize);
    ShatterAtPosition(Vector3 position, Vector3 velocity, Vector3 angularVelocity, int numPiecesToBreakNearPos);

    Not sure if angular velocity is required. Ideally it would be generated internally using the velocity and position relative to the center of the generated chunk's mesh bounds.

    I imagine it would utilize the settings of the Rayfire component on the object to define the shape and behavior of the broken pieces. Although predefined shapes could also work.

    You would also need to break off any piece that gets completely separated from the larger parts of the mesh to prevent floating pieces but that is not required in all cases ie.: Imagine a tall wooden fence (which is basically a large board) set to shatter vertically (like planks), it will never have floating parts.

    This Christmas all I'm asking from Santa is to motivate you into making this happen :D I really REALLY wish you would consider it, even if you have to make it a plugin and charge for it, i will be happy to pay and help debug it.

    2 more questions:
    -Have you considered making a DOTS version? (that would be insane, have you seen the performance!!! Mind blowing)
    -Also, I was wondering if it was possible to have rayfire attach a custom script to all the debris it generates. I've been looking at the doc but I'm not sure how to get a hold of each broken pieces.

    Thank you, RayFire is awesome!
     
    Last edited: Nov 21, 2020
    Gabriel_SG and atomicjoe like this.
  23. atomicjoe

    atomicjoe

    Joined:
    Apr 10, 2013
    Posts:
    1,221
    I'm interested in this as well.
     
    tcz8 likes this.
  24. daniel5johansson

    daniel5johansson

    Joined:
    Jun 21, 2018
    Posts:
    4
    Hi @Mir-vadim,

    I'm having problems with Rayfire Shatter Clusters. They seem to create intersecting pieces.

    I created a wall that can be destroyed slowly, using Voronoi to create a Mesh Root with 1000 Inactive pieces. Pieces are then activated by a gun.

    If I create a regular voronoi shatter with 1000 pieces, and manually activate a piece in the middle of the wall. I get a crack across the wall. This looks nice.

    But if I instead create 200 clusters from the 1000 pieces and activate a single piece, the whole wall cracks. It looks as though pieces are intersecting and Unity Physics pushes them apart.

    Is there any way to avoid this?

    1000 pieces upload_2020-11-23_2-49-4.png ///// 200 clusters upload_2020-11-23_2-50-7.png
     
  25. Gabriel_SG

    Gabriel_SG

    Joined:
    Apr 7, 2017
    Posts:
    204
    Might need to fix your website.

    upload_2020-11-23_16-54-9.png
     
    Last edited: Nov 23, 2020
  26. Gabriel_SG

    Gabriel_SG

    Joined:
    Apr 7, 2017
    Posts:
    204
    +1 for that feature. Also +1 for DOTS request... and +1 for attaching script to debris.
     
  27. homemacai

    homemacai

    Joined:
    Jul 22, 2020
    Posts:
    36
    Have you guys found a solution for Kinematik simulation type objects always being demolished?
     
  28. brinca

    brinca

    Joined:
    Mar 29, 2015
    Posts:
    29
    I'm having the following issue in Linux builds (built with Unity 2020.13, using the Mono backend on Windows 10):
    There are other errors after this, such as:
    ...but these could be related to the missing Rayfire.DotNet namespace errors that precede it.

    Note that I'm not even using RayFire yet, it's just sitting in the project in the (pristine) installation directory.
    I will start using it soon though, but we need Linux support.

    I see that there were similar problems with the iOS and Mac versions, which seem to have been resolved, so can you help with the Linux version as well?
     
    Last edited: Nov 26, 2020
  29. Mir-vadim

    Mir-vadim

    Joined:
    Apr 18, 2017
    Posts:
    225
    Hi, I am very sorry for the delay but for some reason, I didn't get notification emails about new posts in this thread. We didn't add yet runtime fragmentation support for Linux, for one year after release no one asked for it, you are the first one. Can't promise we will add it anytime soon because there are a list of other features a lot of other users waiting for but we will try to work on this. Errors you get is because I didn't yet exclude yet Linux in these script file directives and as you see for one and a half year you are the first one who reports me about this.
    I will fix this in the next release and will send you fixed scripts on next few days. Please, contact me in Discord if you can.
     
  30. Mir-vadim

    Mir-vadim

    Joined:
    Apr 18, 2017
    Posts:
    225
    Hi, site fixed, I migrated to another web hosting plan and support failed to do this right at the first attempt.
     
  31. Mir-vadim

    Mir-vadim

    Joined:
    Apr 18, 2017
    Posts:
    225
    Hi, I am very sorry for the delay but for some reason, I didn't get notification emails about new posts in this thread. Please contact me in Discord if you can next time in case notification won't work again.
    Unfortunately, there is no support for simulating clustered fragments, this feature is mostly for environment modeling for now or if you want to explode something at one moment and do not care much about correct simulation. I have some thoughts about how to make these clusters simulatable like adding Box colliders in a way so they will not overlap with each other or create children with convex collider with mesh of every fragments not clustered together, but this one will force you to have collider meshes stored in a separate asset. Anyway, I didn't make much of RnD yet, will consider this for one of the next releases.
     
  32. Mir-vadim

    Mir-vadim

    Joined:
    Apr 18, 2017
    Posts:
    225
    Hi, already wrote this to other users but will repeat it again, I am very sorry for the delay but for some reason, I didn't get notification emails about new posts in this thread. Please contact me in Discord if you can next time in case notification won't work again.

    About your idea, if I understood you correctly, I am using voronoi diagram for fragmentation and at it's core it needs point cloud with approximate fragments center, so every point in the cloud will generate fragment, then problem is that I can't just create one fragment and the rest of mesh without this fragment without creating all these fragments (except the one which I need to cut off from whole mesh) and then combining them back to one mesh + remove all inner triangles between them.
    There is Runtime caching feature which allows now to generate only specified fragments so it will be possible to generate by few fragments every frame and then demolish object only when all fragments will be generated, you can'T specify these fragments by their position tho unless you use Custom fragmentation type in Shatter which allows you to generate your own point cloud.
    Also, there is a clustering feature in Shatter which allows to combine a group of fragments into one mesh and remove all shared triangles between them.
    So, basically, all these elements which you described already there, they just work on their own and not as one feature as you need. I can't promise that I will work anytime soon on what you described because it will need a lot of core code to be edited and we already have a list of other features other users waiting for like optimized Skinned mesh slicing, but I will add this in ToDO list and will try to get back to this idea later.

    I thought about DOTS and of course, I will get to it later, right now I work on a new component for massive simulations because the current Rigid component workflow is good for a low amount of simulated objects which are going to be demolished or part of Connectivity cluster. But for massive simulations it is not optimized well, new component should be optimized for massive simulations and I guess this is where DOTS should be implemented later after I will finish it with basic Physics support.

    As for attaching scripts to Debris, there is no such support, for now, didn't consider this before, but I will try to think up something, maybe the ability to define reference with this script so it will be instantiated with debris. Can you describe what exactly you need this for and how you are going to use it, This may help.

    Thanks.
     
    Last edited: Nov 30, 2020
    atomicjoe likes this.
  33. Mir-vadim

    Mir-vadim

    Joined:
    Apr 18, 2017
    Posts:
    225
    Hi, can you describe your problem in detail? How exactly it gets demolished and why it shouldn't?
     
  34. Mir-vadim

    Mir-vadim

    Joined:
    Apr 18, 2017
    Posts:
    225
    Hi, so, I can't send you fixed files because they have other changes which won't work without other files.
    For now, you can open these two files:

    Assets\RayFire\Scripts\Classes\Rigid\RFDemolitionMesh.cs
    Assets\RayFire\Scripts\Classes\Shatter\RFFragment.cs

    and replace the line at the top

    Code (CSharp):
    1. #if (UNITY_EDITOR || UNITY_STANDALONE || UNITY_IOS || UNITY_ANDROID)
    with this one

    Code (CSharp):
    1. #if (UNITY_EDITOR_WIN || UNITY_EDITOR_OSX || UNITY_STANDALONE_OSX || UNITY_STANDALONE_WIN || UNITY_IOS || UNITY_ANDROID)
    Let me know if you will have any problems still.
     
  35. tcz8

    tcz8

    Joined:
    Aug 20, 2015
    Posts:
    457
    Noted, if I need an urgent reply I will do that.

    That will bring interesting possibilities :)

    I need to interact with the debris. I have a mono behavior which I want to add to each piece to make them usable. A callback (ie.: OnFracture) feeding us an array of all the broken pieces would allow us to iterate over them and do whatever we want, including adding scripts without relying on you for added functionality.

    That gives me an idea regarding breaking a single chunk, I would be happy with a method that took a mesh + position + rotation and used that info to intersect the mesh to produce a debris and subtract it from the original object. Or maybe something more universal like adding methods for each boolean operations. Combined with a series of strategically placed callbacks we could do a lot with these although I'm pretty sure there would be used cases only for union



    Thanks for your time.

    EDIT: After further thoughts, I think there would only be use cases to cut or add a chunk so 2 methods would be all that is needed.
     
    Last edited: Nov 30, 2020
  36. Mir-vadim

    Mir-vadim

    Joined:
    Apr 18, 2017
    Posts:
    225
    Hi, you can access debris using Demolition or Activation event system. Subscribe to it to get a notification when some object will be demolished/activated, it returns Rigid component, then you can access to all debris components it has using rigid.debrisList and then get particle system it creates using rigid.debrisList.pSystem

    As for Boolean operations, we have them in 3ds Max plugin, using built in ProBoolean system and it is not the time for them to be used in realtime, maybe very low poly meshes will be ok, but mid and hi poly meshes definitely will take too much time for runtime usage. But I am waiting. :)
     
  37. tcz8

    tcz8

    Joined:
    Aug 20, 2015
    Posts:
    457
    OK :(

    Maybe I can get similar results using a pre-fractured prefab. Is it possible at runtime to disconnect single chunk in a prefractured/cached (not sure of the terminology here) prefab without having it all fall appart?
     
  38. RicardCG

    RicardCG

    Joined:
    Dec 12, 2017
    Posts:
    6
    Greetings, @Mir-vadim!

    I recently purchased your plugin and it works extremely well! However I have noticed something of a bug. When I use shatter to break down an object I've noticed that I can't get the inner material assigned to the interior faces. It just copies the exterior material on to the second MAT ID instead.

    InnerMaterialBug_01.PNG
    InnerMaterialBug_02.PNG

    I'm currently using Unity 2020.1.8f1 with URP 8.2. Is this a bug your aware of? Is there something I missing with regards to the setup of a shatter component?
     
  39. Emphy

    Emphy

    Joined:
    Feb 7, 2014
    Posts:
    31
    @Mir-vadim

    First off, awesome tool. It is 'expensive' but I've been eyeballing this ever since I was younger and dabbled with 3DSMAX. So yeah, grabbed it on sale and it's still awesome.

    I have a simple question, or so I think? Is it possible to use the blade component on meshes with connected clusters? It doesn't seem to do anything if I test it out. Works fine on a regular mesh. I suppose that's because of the check whether the 'cut' mesh has a RayFire Rigid component? Is this something intentionally, or maybe even impossible?

    Also, will you add Asperity to Unity? It looks cool :D

    BTW, the user above posted a thing with the inner/outer material; I see the inner material when I fragment it myself in the editor but when using a Rigid with 'use Shatter' and demolish it in Play Mode, it doesn't show.

    Regards,
    Emphy
     
    Last edited: Dec 3, 2020
  40. Mir-vadim

    Mir-vadim

    Joined:
    Apr 18, 2017
    Posts:
    225
    Hi, yeah, it probably expensive but I participate in Sales so everyone can get it with a good discount.
    The Blade could be used with Connected Clusters but for now only if you define this cluster as a target in Blade properties and then use Slice button or Method. It doesn't slice meshes but only separate cluster to two clusters. Later I will add support for actual slicing cluster by moving Blade through it.

    Asperity, maybe I will move it later, but for now it is too heavy even for Max, millions of triangles, I guess could be too much poly for a game.

    You should define material in Rigid component, not in shatter. Shatter is used only as source of fragmentation type and it's properties, so wi on't need to duplicate these propertiesin Rigid.
     
  41. Mir-vadim

    Mir-vadim

    Joined:
    Apr 18, 2017
    Posts:
    225
    Hi, yeah, seems like a bug that occurs when both Inner and Outer materials defined. With only inner material it works ok.
    Thanks for the report, will fix this in the next build if you don't need this fix urgetnly.
     
    RicardCG and TextusGames like this.
  42. Mir-vadim

    Mir-vadim

    Joined:
    Apr 18, 2017
    Posts:
    225
    Not sure if I understood you correctly but you can use Connected cluster which allows you to detach its fragments and keep the rest fragments as one object.
     
  43. Emphy

    Emphy

    Joined:
    Feb 7, 2014
    Posts:
    31
    Just wondering about the RayfireGun script: I get what it is doing but would there be an easier implementation possible? It's not the biggest problem to copy / adapt the script to a custom weapon but still, it does a lot of manual checks on fragmens and clusters etc.

    My understanding now is that we can call RayfireRigid.ApplyDamage() and depending on the Damage parameter on the Rigid, if the damage limit is reached, the whole mesh is demolished. Could something like ApplyDamage also take into account automatically whether there are connected nodes and nearby clusters so that we can have partially collapsing meshes if you shoot out a certain part of the mesh? Then my weapon script would only have to call a function and it can either be a bullet with a small radius or a big gun that takes out a chunk of the mesh. The same kind of applies to the RayfireBomb, would there be an option of an easier implementation like ApplyExplosion on the RayfireRigidbody?

    BTW: I don't think the asset is all that expensive based on the work that goes into it and your support :)
     
  44. NickNack84

    NickNack84

    Joined:
    Dec 5, 2013
    Posts:
    5
    Hi, as requested I'm writing regarding the crash of Unity. It happens in the test scene "7 shatter types Tets" every time. If you click on Fragment, Unity closes instantly. But, this only happens on my older iMac at home. (Maybe 10 years old) In the office, it works with a new iMac. - And of course it would be nice if the UI of the components would be cleaner. You often have to search for a parameter for several minutes. Furthermore it's not clear whether a parameter is doing something or not, because there are different modes but all parameters are still visible.
    Nevertheless, good job! This asset is really a brilliant piece of software!
     
    Last edited: Dec 4, 2020
  45. christougher

    christougher

    Joined:
    Mar 6, 2015
    Posts:
    544
    Hi, I was wondering, how performant is this for mobile at runtime? Thx!
     
    Treecrotch likes this.
  46. Mir-vadim

    Mir-vadim

    Joined:
    Apr 18, 2017
    Posts:
    225
    Hi, thanks, we didn't test plugin with so old iMacs, I guess we have to find one now. As for Tetrahedron fragmentation, at first, I didn't want to add it as a possible fragmentation type because it is too advanced for Game engine, creates meshes with a lot of triangles, and performs a lot of calculations. I think I will need to remove it for several builds until it won't be tested good enough since it crashes.

    UI improvement is another thing I want to do soon, for now, all UI elements are just public variables and classes, there are some Editor UI elements at the top, like buttons which I had to add because there was not another way to add them, but yes, I agree, after all new features I added for last year UI start looks messy and I need to do something.

    Also, you say that there are some properties which you don't need to use because you use some other feature, well, the thing is that this UI which you think is not used still could be used. Like when you demolish cluster you still see mesh demolition properties, this is because after cluster was demolished to single fragments there is a way to demolish these fragments in runtime as well and they will inherit Mesh demolition properties from the original demolished cluster, so you still need to have mesh demolition properties in UI. And in one of the next builds I want to add runtime clustering feature so after mesh demolition all fragments will be clustered accordingly to Cluster demolition properties. So, as you can see even after reworking UI I still will have to show more properties than you expect only because you may just don't know yet that they can be used as well.

    Anyway, thanks for the report.
     
    Last edited: Dec 5, 2020
  47. Mir-vadim

    Mir-vadim

    Joined:
    Apr 18, 2017
    Posts:
    225
    Hi, I only tested it as is, only pure plugin without the rest of the game, so performance was good for me. Other users who already using it inside their games also say that performance is good. Also, there are several demolition types with the different performance so you can pick the one which works best for you.
    And if you still thinking about getting it or not, I can send you full package to try it first.
     
  48. Mir-vadim

    Mir-vadim

    Joined:
    Apr 18, 2017
    Posts:
    225
    Hi, ApplyDamage already should work with clusters, this is why it has point and radius as input variables, but it works only to applied cluster and won't affect other clusters nearby.

    As for ApplyExplosion, this is a good idea, added to TODO list.
     
  49. christougher

    christougher

    Joined:
    Mar 6, 2015
    Posts:
    544
    Thanks for your offer! Too late though, picked it up on sale. I'll have to find out for myself. :)
     
  50. Mir-vadim

    Mir-vadim

    Joined:
    Apr 18, 2017
    Posts:
    225
    Forgot to ask, which Mac OS installed on this old Mac?
     
unityunity