/// <summary> /// Tries to acquire and draw a debug shape for better feedback and visualization. /// </summary> /// <param name="debugDrawShape">The type of the debug shape (sphere, cone, etc.)</param> /// <param name="translation">The shape's translation</param> /// <param name="rotation">The shape's rotation</param> /// <param name="scale">The shape's non-uniform scaling</param> /// <returns><c>true</c> if debug shape can be displayed</returns> public bool TryGetDebugDrawShape(ref DebugDrawShape debugDrawShape, ref Vector3 translation, ref Quaternion rotation, ref Vector3 scale) { foreach (var particleEmitter in Emitters) { if (!particleEmitter.Enabled) { continue; } foreach (var initializer in particleEmitter.Initializers) { if (!initializer.Enabled) { continue; } if (initializer.TryGetDebugDrawShape(out debugDrawShape, out translation, out rotation, out scale)) { // Convert to world space if local if (particleEmitter.SimulationSpace == EmitterSimulationSpace.Local) { return(ToWorldSpace(ref translation, ref rotation, ref scale)); } return(true); } } foreach (var updater in particleEmitter.Updaters) { if (!updater.Enabled) { continue; } if (updater.TryGetDebugDrawShape(out debugDrawShape, out translation, out rotation, out scale)) { // Convert to world space if local if (particleEmitter.SimulationSpace == EmitterSimulationSpace.Local) { return(ToWorldSpace(ref translation, ref rotation, ref scale)); } return(true); } } } if (BoundingShape == null) { return(false); } if (BoundingShape.TryGetDebugDrawShape(out debugDrawShape, out translation, out rotation, out scale)) { return(ToWorldSpace(ref translation, ref rotation, ref scale)); } return(false); }