コード例 #1
0
        // EXECUTABLE: ----------------------------------------------------------------------------

        public override bool InstantExecute(GameObject target, IAction[] actions, int index)
        {
            GameObject goObserver = this.observer.GetGameObject(target);
            GameObject goTarget   = this.target.GetGameObject(target);

            if (goObserver == null)
            {
                return(false);
            }
            if (goTarget == null)
            {
                return(false);
            }

            Perception perception = goObserver.GetComponentInChildren <Perception>();

            if (perception == null)
            {
                return(false);
            }

            switch (this.operation)
            {
            case Operation.StartTracking:
                perception.StartListenPerceptron(Perception.Type.Sight, goTarget, null);
                break;

            case Operation.StopTracking:
                perception.StopListenPerceptron(Perception.Type.Sight, goTarget, null);
                break;
            }

            return(true);
        }
コード例 #2
0
        // INITIALIZERS: --------------------------------------------------------------------------

        private void OnEnable()
        {
            this.perception = (Perception)this.target;

            this.spFieldOfView    = serializedObject.FindProperty("fieldOfView");
            this.spVisionDistance = serializedObject.FindProperty("visionDistance");
            this.spSightLayerMask = serializedObject.FindProperty("sightLayerMask");

            this.sectionSight = new Section("Sight", null, this.Repaint);
        }
コード例 #3
0
        private void OnDestroy()
        {
            GameObject goObserver = this.observer.GetGameObject(gameObject);
            GameObject goTarget   = this.target.GetGameObject(gameObject);

            if (goObserver != null && goTarget != null)
            {
                Perception sensesObserver = goObserver.GetComponent <Perception>();
                if (sensesObserver == null)
                {
                    return;
                }

                sensesObserver.StopListenPerceptron(Perception.Type.Sight, goTarget, this.Callback);
            }
        }
コード例 #4
0
        // HELPER METHODS: ------------------------------------------------------------------------

        public static Transform GetEyes(Perception perception)
        {
            Transform         sight             = perception.transform;
            CharacterAnimator characterAnimator = perception.GetComponent <CharacterAnimator>();

            if (characterAnimator != null && characterAnimator.animator != null)
            {
                Transform head = characterAnimator.animator.GetBoneTransform(HumanBodyBones.Head);
                if (head != null)
                {
                    sight = head;
                }
            }

            return(sight);
        }
コード例 #5
0
        private void Start()
        {
            this.cacheObserver = this.observer.GetComponent <Perception>(gameObject);
            this.cacheList     = this.listVariables.GetListVariables(gameObject);

            if (this.cacheList == null || this.cacheObserver == null)
            {
                return;
            }
            VariablesManager.events.StartListenListAdd(this.OnListCallback, this.cacheList.gameObject);
            VariablesManager.events.StartListenListRmv(this.OnListCallback, this.cacheList.gameObject);
            VariablesManager.events.StartListenListChg(this.OnListCallback, this.cacheList.gameObject);

            for (int i = 0; i < this.cacheList.variables.Count; ++i)
            {
                GameObject value = this.cacheList.variables[i].Get <GameObject>();
                this.OnListCallback(i, null, value);
            }
        }
コード例 #6
0
        // 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);
            }
        }
コード例 #7
0
 public virtual void Awake(Perception perception)
 {
     this.perception = perception;
 }
コード例 #8
0
        // INITIALIZERS: --------------------------------------------------------------------------

        public override void Awake(Perception perception)
        {
            base.Awake(perception);
            this.eyes = PerceptronSight.GetEyes(perception);
        }