Example #1
0
        /// <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();
            }
        }
Example #2
0
        public void DestroyEmittedRays()
        {
            foreach (var emittedRay in EmittedRays)
            {
                Ray.Delete(emittedRay);
            }

            EmittedRays.Clear();
        }
Example #3
0
        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);
        }
Example #4
0
        /// <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
                                           ));
        }
Example #5
0
 public virtual void HandleReceivedRay(Ray ray)
 {
 }