// SCENE GUI: ----------------------------------------------------------------------------- private void OnSceneGUI() { Transform sight = PerceptronSight.GetEyes(this.perception); Handles.color = Color.white; Handles.DrawWireArc( sight.position, Vector3.up, perception.transform.forward, 360f, this.perception.visionDistance ); Handles.color = COLOR_SIGHT; Handles.DrawSolidArc( sight.position, Vector3.up, PerceptronBase.DirectionFromAngle(-this.perception.fieldOfView / 2.0f, this.perception.transform), this.perception.fieldOfView, this.perception.visionDistance ); if (!Application.isPlaying) { return; } PerceptronBase perceptronSight = this.perception.GetPerceptron(Perception.Type.Sight); foreach (KeyValuePair <int, Tracker> item in perceptronSight.trackers) { Handles.color = item.Value.GetState() ? COLOR_SIGHT_ON : COLOR_SIGHT_OFF; Handles.DrawLine( sight.position, Tracker.CalculatePosition(item.Value) ); } }
// EXECUTABLE: ---------------------------------------------------------------------------- public override bool Check(GameObject target) { GameObject goObserver = this.observer.GetGameObject(target); GameObject goTarget = this.target.GetGameObject(target); if (goObserver == null) { return(false); } if (goTarget == null) { return(false); } Perception senses = goObserver.GetComponentInChildren <Perception>(); if (senses == null) { return(false); } PerceptronSight sight = senses.GetPerceptron(Perception.Type.Sight) as PerceptronSight; if (sight == null) { return(false); } switch (this.condition) { case Condition.CanSee: return(sight.CanSee(goTarget)); case Condition.CanNotSee: return(!sight.CanSee(goTarget)); default: return(false); } }
// INITIALIZERS: -------------------------------------------------------------------------- public override void Awake(Perception perception) { base.Awake(perception); this.eyes = PerceptronSight.GetEyes(perception); }