Search Unity

Particle Playground

Discussion in 'Assets and Asset Store' started by save, Dec 4, 2013.

  1. RecursiveRuby

    RecursiveRuby

    Joined:
    Jun 5, 2013
    Posts:
    163
    I've fixed the problem by changing some things around so the prefab is completely changed unfortunately. I pretty much started over it worked and I overwrite it. From what I gathered it was something being triggered when looping was turned off. I am using a pooling system to spawn everything in and it disables the prefab upon instantiating when initially created for the pool. When called from the pool it will activate the game object and stepping through the code I noticed the error was coming from when OnEnabled() was called and the nuff reference was associated with the last particle position whatever the variable was called I forget. I'm sorry I can't give you more I've tried recreating it to no success which is a good and bad thing really =/ if I encounter it again I'll let you know and be sure to keep record of any logs or prefabs.
     
  2. HanzaRu

    HanzaRu

    Joined:
    Aug 10, 2012
    Posts:
    11
    @save I saw your edit on review - Awesome performance improvements, Well done! i would like to battle test it anytime and give my feedback.

    Cheers,
    John
     
  3. manutoo

    manutoo

    Joined:
    Jul 13, 2010
    Posts:
    524
    @save,
    for SkinnedMesh, you advice :
    Actually, in most cases, there's no need to disable the game object optimization. You just need to bake the mesh once on start, and then the result will be good enough, at least for characters, and everything that doesn't need top notch accuracy.

    So the GC issue is fixed by adding 2 brackets like this, in BoneUpdate() :
    Code (CSharp):
    1.                     if (bakedMesh==null)
    2.                     {
    3.                         bakedMesh = new Mesh();
    4.                         renderer.BakeMesh(bakedMesh);
    5.                         localVertices = bakedMesh.vertices;
    6.                     }
     
  4. andrin2020

    andrin2020

    Joined:
    Mar 9, 2014
    Posts:
    29
    Is there a way to make a Manipulator of type Repellent be unidirectional? For example like a fan blowing things in only one direction (+x) but not in the other (-x).
     
  5. save

    save

    Joined:
    Nov 21, 2008
    Posts:
    744
    Ok thanks, sounds good! Bittersweet solutions. :)

    It was a relief to see a self-managed thread pool solved a lot instead of going with .NET's pool (still in as an option tho). You're welcome to join in on the beta, I'll send some info soon!

    Thanks for the feedback! I'll have a peek into it to correct.

    The closest thing would be the Velocity or Additive Velocity property which also can take the transform direction into account. You could also try with a box shape with offset from the transform origin using the Repellent, but it depends on what type of result you're looking for. For a natural result you could try a Combined Manipulator using Additive Velocity + Turbulence. Would that work? Otherwise feel free to shoot ideas my way to see if it could be implemented!
     
  6. hoesterey

    hoesterey

    Joined:
    Mar 19, 2010
    Posts:
    659
    Heya,
    Quick question to see if I'm approaching something correctly. I have an effect (clouds cascading off the bow of an airship) where I need the particles to simulate in Global space but a constant force in local space relative to rotation of the emitters transform. (direction the airship is facing)

    I wrote a "LocalForce" script and though it works the performance is much much worse then if I use manipulators (though I can't get the effect I want without 3 manipulators with different strengths on X, Y, Z, its still actually still cheaper to have 3 then to run the script below, at least on the main thread.)

    Here is the code, am I approaching the problem wrong? Should I just be spinning up a thread to do the below or am I missing something in the package?

    Code (CSharp):
    1. using UnityEngine;
    2. using System.Collections;
    3. using ParticlePlayground;
    4.  
    5. public class pPlaygroundLocalForce : MonoBehaviour {
    6.  
    7.     public Vector3 Velocity;
    8.     PlaygroundParticlesC particles;
    9.  
    10.     void OnEnable () {
    11.         myTransform = transform;
    12.         if (particles==null)
    13.             particles = GetComponent<PlaygroundParticlesC>();
    14.     }
    15.  
    16.     void OnDisable () {
    17.     }
    18.  
    19.     void Update () {
    20.         float t = particles.localDeltaTime;
    21.         for (int p = 0; p < particles.particleCount; p++)
    22.         {
    23.             particles.playgroundCache.velocity[p] -= myTransform.rotation*Velocity*t;
    24.         }
    25.     }
    26.     Transform myTransform;
    27. }
    28.  
     
  7. hoesterey

    hoesterey

    Joined:
    Mar 19, 2010
    Posts:
    659
    Also a little gift to the community, I crated a little Object toggle window. (play button for PP) Works on objects or the parent ( so you don't have to scroll to the top to disable and then re-enable a particle system)

    Code (CSharp):
    1. using UnityEngine;
    2. using System.Collections;
    3. using UnityEditor;
    4.  
    5. public class ObjectActiveToggle : EditorWindow
    6. {
    7.  
    8.     [MenuItem("Window/TribetoyTools/ActiveToggle")]
    9.     public static void ShowWindow()
    10.     {
    11.         ObjectActiveToggle window = (ObjectActiveToggle)EditorWindow.GetWindow<ObjectActiveToggle>();
    12.         window.title = "Object Toggle";
    13.         window.minSize = new Vector2(20, 20);
    14.     }
    15.  
    16.     void OnGUI()
    17.     {
    18.         EditorGUILayout.BeginHorizontal();
    19.         if (GUILayout.Button("Toggle"))
    20.         {
    21.             if (Selection.activeGameObject != null  && Selection.activeGameObject.gameObject != null)
    22.             {
    23.                 Selection.activeGameObject.gameObject.SetActive(false);
    24.                 Selection.activeGameObject.gameObject.SetActive(true);
    25.             }
    26.         }
    27.         if (GUILayout.Button("Toggle Parent"))
    28.         {
    29.             if (Selection.activeGameObject != null && Selection.activeGameObject.gameObject != null)
    30.             {
    31.                 if (Selection.activeGameObject.transform.parent != null)
    32.                 {
    33.                     Selection.activeGameObject.transform.parent.gameObject.SetActive(false);
    34.                     Selection.activeGameObject.transform.parent.gameObject.SetActive(true);
    35.                 }
    36.                 else
    37.                 {
    38.                     Selection.activeGameObject.gameObject.SetActive(false);
    39.                     Selection.activeGameObject.gameObject.SetActive(true);
    40.                 }
    41.             }
    42.         }
    43.     }
    44. }
     
  8. manutoo

    manutoo

    Joined:
    Jul 13, 2010
    Posts:
    524
    @save,
    Code (CSharp):
    1.         #if UNITY_EDITOR
    2.         void RefreshHieararchy () {
    3.             UnityEditor.EditorApplication.RepaintHierarchyWindow();
    4.         }
    5.         #endif
    = 43ms in my game every couple of seconds
    = Bad idea..! ;)

    Why would you do that..?
    (I commented it out)
     
  9. manutoo

    manutoo

    Joined:
    Jul 13, 2010
    Posts:
    524
    @save,
    it seems not possible to change the start color over time, is it correct ?
    Unlike with Shuriken where I can set a Gradient for the Start Color ; in PP, it seems it's even not possible to set 1 start color at all..?! (ie: in Shuriken, Color = StartColor * LifeTimeColor * MaterialColor)

    EDIT:
    it seems that LocalSpace doesn't work with SkinnedMesh . I get all the particles far from my model and it seems it's even not with the correct orientation (ie: my SkinnedMesh is down and the particles draws a standing shape). Removing my earlier fix doesn't change that behaviour.
    Any easy fix for that..?
     
    Last edited: Sep 20, 2015
  10. andrin2020

    andrin2020

    Joined:
    Mar 9, 2014
    Posts:
    29
    Thank you. Using the additive velocity is getting me close to what I was after.
     
  11. zhuchun

    zhuchun

    Joined:
    Aug 11, 2012
    Posts:
    433
    Hi, what's PlaygroundC.RefreshHierarchy? This call use 13ms per second in Profiler, how to optimize? Thanks
     
  12. Constantinos

    Constantinos

    Joined:
    Dec 11, 2012
    Posts:
    7
    Hey dude, that looks awesome..
    That would b a great addition indeed!
     
  13. DMeville

    DMeville

    Joined:
    May 5, 2013
    Posts:
    418
    Hi @save

    I'm looking for a way to burst some particles. I have it all set up how I want the particles to work visually in the editor, but I need to set them to burst through code, and I don't want to burst the entire pool at once, just a portion of it (so that the previous particles can still linger around) Right now I'm setting GetComponent<PlaygroundParticlesC>().Emit(true) and then on the next frame setting it back to false. This works but seems like a hacky way to do it. Is there a better option?

    If I remember right, last time I used the Emit(quantity) overload it was somewhat limiting in it didn't use all the settings set in the inspector. Testing it currently changing the source to script I cant even see any particles being emitted..

    Is this achievable?
    Thanks!
     
  14. Jotunn

    Jotunn

    Joined:
    Jan 10, 2014
    Posts:
    22
    Yes, "PlaygroundC.RefreshHierarchy" worries me too.
    It cause spike in profiler every 55-60 frame.
    I can't remember when it began to cause spike, but maybe Unity5.1.3 and 5.2.0 + Particle Playground 2.26 cause spike.
    I want to know how to optimize it too.
    Thanks!
     
  15. Taurris

    Taurris

    Joined:
    Aug 13, 2012
    Posts:
    14
    Hi Save,
    I was thinking if it would be possible to add option for using simple catmul rom splines instead of bezier ones ? For situations where bezier handles are more of a nuisance. Such as using the spline as a waypoint system, for example.
     
  16. Malveka

    Malveka

    Joined:
    Nov 6, 2009
    Posts:
    191
    I've recently started using Particle Playground. It's fantastic package! Thank you for creating it.

    Is it possible to set the Lifetime Sorting property at runtime (Scrambled, Linear, Nearest Neighbor, etc)? It seems it is being set in an editor script to one of a set of preset animation curves. Is there a method to get at these preset animation curves at runtime? I would like to be able to cycle through a subset of the preset lifetime sorting options while my effect is running.

    Thanks!
    James
     
  17. OneThree

    OneThree

    Joined:
    Oct 28, 2011
    Posts:
    181
    Hi, I have a question about the particle mask and performance.

    In our game, we have snow that can range from very light to extremely heavy (i.e. a blizzard). The player can move indoors and out seamlessly, so we use particle collision with our buildings. The collision cost is pretty high CPU-wise, but that's to be expected (and Particle Playground performs better than when we were using Shuriken for the same setup).

    However, I did notice something I wanted to ask about: is there any way to disable collision on masked particles? Since you're supposed to use the particle mask system instead of changing the number of particles at runtime, it seems like we basically need to have our particle count set at our highest number of particles and then reduce the particles with a particle mask. So, if our max number of particles is 8,000, but we only want 1,000 in the scene, we would mask out 7,000 particles.

    The thing I'm seeing is that the performance does not get any better when masking particles. If I have a particle system that just has 1,000 particles, it performs significantly better than one with 8,000 particles that has 7,000 particles masked. So I'm guessing that masked particles are still doing collision checks.

    Is there any way to disable collision on masked particles? Since they're invisible, they don't need to collide with anything, and it would really help our performance if we were able to use the masking system without the performance overhead of invisible particles.
     
  18. mattbadley

    mattbadley

    Joined:
    Oct 10, 2013
    Posts:
    10
    Hi,

    I'm looking into Particle Playground and the feasibility of drawing splines at runtime. It looks like particle playground can easily handle creating particle effects along a spline, but what about if the spline was changing at runtime?

    The spline would be drawn in the game view and would essentially be created using mouse coordinates (like a painting game).

    Is there a spline class that comes with particle playground that allows creation of splines at runtime, along with adding/removing nodes on the fly?

    Does anyone have any ideas on how they would approach this? My plan would be to use mouse coordinates to create a spline, adding nodes every fixed amount of time and possibly removing 'old' nodes at the beginning of the spline. I would lock down the z axis so only a 2D style spline can be drawn.

    Thanks!
     
  19. OneThree

    OneThree

    Joined:
    Oct 28, 2011
    Posts:
    181
    Is this asset still supported? There hasn't been a dev reply here in weeks, and my emails to support have gone unanswered as well.
     
    Garrettec and ZJP like this.
  20. gonzorob

    gonzorob

    Joined:
    Dec 1, 2011
    Posts:
    96
    Hello,

    I've discovered a 6 frame delay between emit being enabled and a burst particle being displayed. Are there any recommendations to getting burst particles to emit on the first frame?

    Many thanks
     
  21. OneThree

    OneThree

    Joined:
    Oct 28, 2011
    Posts:
    181
    Does anyone know how to take a particle that is isNonBirthed == true and force it to be birthed?
     
  22. Garrettec

    Garrettec

    Joined:
    Nov 26, 2012
    Posts:
    98
    Hello,

    After adding Particle Playground to the project and moving it to "3rd Party" subfolder - we discovered huge(15-20 seconds) spike in the end of script recompilation process and terrible freeze before starting any scene, even empty. I start searching and find out that there are ~2-3 Gigabytes of assets in the memory, when even !empty! scene finally started. Moved Particle Playground back to the root folder and this glitch disappeared.

    I tried this for 3 or 4 times, so there couldn't be mistake that PP is responsible for this behaviour.
    And yes, I changed path in Window -> Particle Playground -> Settings -> Path to new one.
    One more detail - our project have a lot of scripts, assets and 3rd party assets, that is why problem became explicit. In small projects difference harder to notice.
     
  23. ZJP

    ZJP

    Joined:
    Jan 22, 2010
    Posts:
    2,649
    :eek:
     
    Garrettec likes this.
  24. OneThree

    OneThree

    Joined:
    Oct 28, 2011
    Posts:
    181
    I should update that: I got a reply to my two emails about two weeks after I sent them, but I sent a response to one of them and haven't heard back.

    So it seems it is still an active plugin, but support is quite slow.
     
  25. Recon03

    Recon03

    Joined:
    Aug 5, 2013
    Posts:
    845
    I notice we have not had an update since April, and support is super slow... So is the dev still working on this or has he moved on like some of the others seem to???
     
  26. JakeTBear

    JakeTBear

    Joined:
    Feb 15, 2014
    Posts:
    123
    I really hope so, this asset is great and I have used it extensively to learn a lot of things I didnt know about particles systems in Unity, Save was very eager to give support, he is probably just busy with life as it happens, at least thats my wishful thinking.
     
    ZJP likes this.
  27. ChristianGOrellana

    ChristianGOrellana

    Joined:
    May 7, 2014
    Posts:
    3
    Hello, new to these forums. I ran into an issue here while using the Particle Playground paint option and my scene view went green. I restarted Unity and still green, everything. I'm not 100% familiar with Unity so i am at a loss. Any help please?
     

    Attached Files:

  28. ChristianGOrellana

    ChristianGOrellana

    Joined:
    May 7, 2014
    Posts:
    3
    -- Also here is the Error i get.
     

    Attached Files:

  29. JakeTBear

    JakeTBear

    Joined:
    Feb 15, 2014
    Posts:
    123
    You might want to close unity, go to your project folder, extract the ParticlePlayground folder and open unity again.

    Thats one weird thing happening to you.

    Hope it helps.
     
  30. OneThree

    OneThree

    Joined:
    Oct 28, 2011
    Posts:
    181
    I wouldn't count on support. It's been slow/nonexistent for months, as you've seen. There's not much to indicate the dev is paying attention to it anymore.
     
  31. cygnusprojects

    cygnusprojects

    Joined:
    Mar 13, 2011
    Posts:
    767
    According to the blog on the website it seems @save decided to pursue other (more interesting) opportunities. I wish him good luck with those and hope once settled we hear him here soon.
     
  32. castor76

    castor76

    Joined:
    Dec 5, 2011
    Posts:
    2,517
    Ok, I have problem with "RefreshHieararchy" being called every sec in unity editor.

    Problem is that it takes about 52ms per refresh call, and if I make my time scale to be faster, the unity editor almost hangs..

    is it really necessary? or can you fix it so that it doesn't take so long?

    :(
     
  33. ZJP

    ZJP

    Joined:
    Jan 22, 2010
    Posts:
    2,649
    From the Asset Store..

    Reply from publisher
    9 hours ago


    Hi Kent,

    I can assure you the project isn't abandoned, there is a massive update in the making but this needs to be synced with the Unity 5.3 release and the Shuriken update.
    Due to personal reasons and another project I haven't been able to give the level of hands-on support as before, if you haven't been answered yet you will soon.
     
    hopeful likes this.
  34. hoesterey

    hoesterey

    Joined:
    Mar 19, 2010
    Posts:
    659
  35. save

    save

    Joined:
    Nov 21, 2008
    Posts:
    744
    Hey guys, I want to start with an apology for not being accessible the last couple of months over the forums and delayed support errands. Finding time has been a big issue due to another project and for personal reasons, but it's looking better.

    I want to stress for anyone in doubt that Playground is still an active project, there's still a big update in the making which currently is in an alpha state. The code is being revised to match the Unity 5.3 release and the long awaited Shuriken update. Next version is quite exciting but has had a lot of cumbersome tasks and a higher technical threshold to reach the goal I'm striving for. I'll make sure to keep you updated soon on what's to come!
     
    Taurris, hopeful and Garrettec like this.
  36. save

    save

    Joined:
    Nov 21, 2008
    Posts:
    744
    Hey @hoesterey! I'm not sure if this is still an issue but you should get a lot of better performance by lifting out myTransform.rotation*Velocity*t outside of the for loop and store it into a variable.
     
  37. save

    save

    Joined:
    Nov 21, 2008
    Posts:
    744
    Hey @manutoo, @zhuchun and @Jotunn!
    Yes this was a terrible idea from the beginning. Why it does this is to update the Playground icons in Hierarchy to refresh to their correct ones, however this was unfortunately never tested in a heavy scene with loads of GameObjects. This will be fixed in the next update, but to mend it right now is to comment the InvokeRepeating call in PlaygroundC.cs OnEnable function:

    Code (CSharp):
    1. // Initialize
    2. StartCoroutine(InitializePlayground());
    3. #if UNITY_EDITOR
    4. // InvokeRepeating("RefreshHieararchy", 1f, 1f);
    5. #endif
     
    zhuchun and hopeful like this.
  38. save

    save

    Joined:
    Nov 21, 2008
    Posts:
    744
    Hey! Playground uses gradients to color the particles, a single color method is yet to be implemented. To change start color you could either use a simple script to affect the gradient:

    Code (CSharp):
    1. using UnityEngine;
    2. using System.Collections;
    3. using ParticlePlayground;
    4. public class ChangeLifetimeGradient : MonoBehaviour {
    5.     public PlaygroundParticlesC particles;
    6.     public Color newStartColor;
    7.     void Start () {
    8.         // Get the color- and alpha keys of the current lifetime gradient
    9.         GradientColorKey[] newLifetimeColorKeys = (GradientColorKey[])particles.lifetimeColor.colorKeys.Clone();
    10.         GradientAlphaKey[] newLifetimeAlphaKeys = (GradientAlphaKey[])particles.lifetimeColor.alphaKeys.Clone();
    11.         // Apply the new start color
    12.         newLifetimeColorKeys[0].color = newStartColor;
    13.         // Set the color- and alpha keys back into the lifetime gradient
    14.         particles.lifetimeColor.SetKeys(newLifetimeColorKeys, newLifetimeAlphaKeys);
    15.     }
    16. }
    or a Manipulator (next version will have Manipulators without distance checks, so you can do things like this much more efficiently on an overall particle system level), possibly combined with a Lifetime Filter or Particle Filter if needed. A Color Property Manipulator uses a Color32 to pass in a new color to the particles, where they still will be affected by Lifetime Alpha from the Lifetime Color in Rendering.

    To make skinned meshes work with Local Space simulation you need to keep the particle system at zero world space, then if you experience one frame update behind the source you will need to enable Source > (Skinned World Object) > Force Update On Main-Thread. This will make the skinned mesh vertices to extract on the same rendered frame as the particle update, this particular operation may have a performance hit as it won't run asynchronously on another frame.
     
  39. save

    save

    Joined:
    Nov 21, 2008
    Posts:
    744
    Hey @DMeville! The Emit (quantity) overload will require that a scriptedEmissionPosition is set (which will happen during any of the Emit () overloads using Source: Script), so it cannot be combined with the other Source types.
    This has been requested a lot in different forms and I'm looking into implementing a scripted Source emission, where you can decide from which birth points on the source you want to emit, linearly from - to or by passing in an int[]. That way it will be able to intuitively use any Source and still go through scripted emission, hopefully already available in the next version. Till then I'd say keep current approach (what works) and I'll make sure to do a script example once available.
     
    DMeville likes this.
  40. save

    save

    Joined:
    Nov 21, 2008
    Posts:
    744
    Hey @Taurris! It sure would be and it's a good idea. I'll look into that after the upcoming release to see how we could make the splines more versatile.
     
    Taurris and hopeful like this.
  41. save

    save

    Joined:
    Nov 21, 2008
    Posts:
    744
    Hey @Malveka, glad you enjoy it! To switch Lifetime Sorting anytime you go through PlaygroundParticlesC.sorting, for example like this:

    Code (CSharp):
    1. using UnityEngine;
    2. using System.Collections;
    3. using ParticlePlayground;
    4.  
    5. public class SetLifetimeSorting : MonoBehaviour {
    6.  
    7.     public SORTINGC[] lifetimeSortings = new SORTINGC[]{SORTINGC.Linear, SORTINGC.Scrambled, SORTINGC.Burst, SORTINGC.NearestNeighbor};
    8.  
    9.     private PlaygroundParticlesC _particles;
    10.     private int _currentSorting = -1;
    11.  
    12.     void Start ()
    13.     {
    14.         _particles = GetComponent<PlaygroundParticlesC>();
    15.         SetNewLifetimeSorting(GetNextLifetimeSorting ());
    16.     }
    17.    
    18.     void Update ()
    19.     {
    20.         if (Input.GetKeyDown (KeyCode.Space))
    21.             SetNewLifetimeSorting(GetNextLifetimeSorting ());
    22.     }
    23.  
    24.     public void SetNewLifetimeSorting (SORTINGC sorting)
    25.     {
    26.         _particles.sorting = sorting;
    27.     }
    28.  
    29.     public SORTINGC GetNextLifetimeSorting ()
    30.     {
    31.         _currentSorting = (_currentSorting+1) % lifetimeSortings.Length;
    32.         SORTINGC nextSorting = lifetimeSortings[_currentSorting];
    33.         return nextSorting;
    34.     }
    35. }
    36.  
    However this will always make the particle system restart to ensure correct birth & death values for all particles (as their lifetime values is connected to many of their behaviors). What you possibly could do is clone your current particle system into another, using the Snapshot functionality as a workaround. Here's an example:

    Code (CSharp):
    1. using UnityEngine;
    2. using System.Collections;
    3. using ParticlePlayground;
    4.  
    5. public class CloneParticleSystem : MonoBehaviour {
    6.  
    7.     public PlaygroundParticlesC particleSystemSource;
    8.     public PlaygroundParticlesC particleSystemTarget;
    9.  
    10.     void Start ()
    11.     {
    12.         particleSystemTarget.loadTransition = false;
    13.     }
    14.  
    15.     void Update () {
    16.         if (Input.GetKeyDown(KeyCode.Space))
    17.         {
    18.             StartCoroutine (CloneSourceToTarget ());
    19.         }
    20.     }
    21.  
    22.     IEnumerator CloneSourceToTarget ()
    23.     {
    24.         if (particleSystemSource.IsSaving() || particleSystemTarget.IsLoading())
    25.             yield break;
    26.  
    27.         particleSystemSource.Save();
    28.  
    29.         while (particleSystemSource.IsSaving())
    30.             yield return null;
    31.  
    32.         particleSystemTarget.snapshots.Clear();
    33.         particleSystemTarget.snapshots.Add (particleSystemSource.snapshots[0]);
    34.         particleSystemSource.snapshots.Clear();
    35.  
    36.         particleSystemTarget.Load(0);
    37.     }
    38. }
    39.  
     
  42. save

    save

    Joined:
    Nov 21, 2008
    Posts:
    744
    Hey! I recall this from our previous support errand, just letting you know that an option of bypassing collision for masked particles will be available in the upcoming version.
     
  43. save

    save

    Joined:
    Nov 21, 2008
    Posts:
    744
    Hey @mattbadley! The package comes with a component called Playground Spline, which can be used with any type of other component. The splines are live in the scene at runtime where you can add/remove/reposition nodes at any point and still have particles birthing upon the spline. They can also use Transforms instead of Vector3 nodes if needed.
    Playground also comes with Paint as Source, to paint on any 2D or 3D collider in the scene. Although good to be aware about is that the particle count of a Playground system is not changeable without rebuilding the cache forcing the particle system to reboot. What's available to solve that currently is a particle mask, where you can change the visible particle count over time. This is a part which hopefully soon will improve.
     
  44. save

    save

    Joined:
    Nov 21, 2008
    Posts:
    744
    Hi @Garrettec! This is a known issue which will be mended in the upcoming version. What triggers it is that it can't find the Playground Settings.asset file and starts to search for it. What you can do to solve it currently is editing the settingsPath in PlaygroundSettingsC.cs to your accurate path:

    Code (CSharp):
    1. public static string settingsPath = "Your 3rd-party folder/Particle Playground/Playground Assets/Settings/Playground Settings.asset";
     
    Garrettec likes this.
  45. save

    save

    Joined:
    Nov 21, 2008
    Posts:
    744
    Hi @ChristianGOrellana! Sorry about that, this somewhat rare issue is fixed in the upcoming version. If you encounter this issue again try re-assigning the brush texture, either through the Scene View, Inspector or by script:

    Code (CSharp):
    1. using UnityEngine;
    2. using System.Collections;
    3. using ParticlePlayground;
    4.  
    5. [ExecuteInEditMode()]
    6. public class ResetBrush : MonoBehaviour {
    7.  
    8.     public PlaygroundParticlesC particles;
    9.     public Texture2D brush;
    10.  
    11.     void OnEnable () {
    12.         if (particles != null && particles.paint != null && particles.paint.brush != null && brush != null)
    13.             particles.paint.brush.SetTexture(brush);
    14.     }
    15. }
    16.  
     
  46. save

    save

    Joined:
    Nov 21, 2008
    Posts:
    744
    Hi @castor76! Sorry about that, please see this post for the reason & fix: http://forum.unity3d.com/threads/particle-playground.215154/page-23#post-2363086 Next version will not have this issue.
     
  47. ZJP

    ZJP

    Joined:
    Jan 22, 2010
    Posts:
    2,649
    A simple 'Hi' because you monopolize the comments. :p:D
     
  48. save

    save

    Joined:
    Nov 21, 2008
    Posts:
    744
    Hello! :)
     
  49. sgtkoolaid

    sgtkoolaid

    Joined:
    May 11, 2010
    Posts:
    899
    When I use a mesh, for example say a Blood cell to go through a vessel, how can I make the blood cell rotate around on its 3 axis randomly? Currently seems I can only do it on one axis using initial rotation and rotation, but it only does on one axis the rotation toward direction doesn't do anything. Anyway to show me how to do this or a script that can be applied to it? With that said, great plug in.
     
  50. sgtkoolaid

    sgtkoolaid

    Joined:
    May 11, 2010
    Posts:
    899
    Also How do I control the life time of the blood cell to render from one end of the spline path to the other? I am very new to this plug in, but I think got most of the effects/controls enabled on it. thank you.