/// <summary> /// Launched when a ray stops hitting the object. /// </summary> /// <param name="ray"></param> public virtual void HitExit(Ray ray) { foreach (var emittedRay in EmittedRays) { if (emittedRay.Parent != null && emittedRay.Parent.Id == ray.Id) { Ray.Delete(emittedRay); } } EmittedRays.RemoveAll(r => r.Parent != null && r.Parent.Id == ray.Id); for (int i = 0; i < ReceveidRays.Count; i++) { if (ReceveidRays[i].Id == ray.Id) { ReceveidRays.RemoveAt(i); Debug.LogWarning(string.Format("{0} {1} stopped hitting {2} {3} with color {4} and direction {5}", ray.RayEmitter.transform.gameObject, ray.RayEmitter.transform.gameObject.GetInstanceID(), transform.gameObject, transform.gameObject.GetInstanceID(), ray.Color, ray.Direction )); break; } } if (EmittedRays.Count == 0) { StopReboundFeedback(); } }
public void DestroyEmittedRays() { foreach (var emittedRay in EmittedRays) { Ray.Delete(emittedRay); } EmittedRays.Clear(); }
public Ray EmitNewRay(Direction direction, RayColor rayColor, Ray parent) { Debug.LogWarning(string.Format("Emitting new ray from {0} with color {1} and direction {2}", transform.gameObject, rayColor, direction )); Ray ray = new Ray(this, rayColor, direction, parent); EmittedRays.Add(ray); StartReboundFeedback(); return(ray); }
/// <summary> /// Launched when a ray hits the object /// </summary> /// <param name="ray"></param> public virtual void HitEnter(Ray ray) { for (int i = 0; i < ReceveidRays.Count; i++) { if (ReceveidRays[i].Id == ray.Id) { return; } } this.ReceveidRays.Add(ray); // Log a new Hit evenement Debug.LogWarning(string.Format("{0} {1} hit {2} {3} with color {4} and direction {5}", ray.RayEmitter.transform.gameObject, ray.RayEmitter.transform.gameObject.GetInstanceID(), transform.gameObject, transform.gameObject.GetInstanceID(), ray.Color, ray.Direction )); }
public virtual void HandleReceivedRay(Ray ray) { }