//private Int32 _observedCreaturesCount = 0;

        /* public List<UInt32> ObservedCreatures
         * {
         *   get
         *   {
         *       return this._observedCreatures;
         *   }
         * }*/

        // PROBLEM: make it so the update DOESN'T occur if a remove is followed by an add in the same tick.
        public void ObservedCreaturesAdd(Creature critter)
        {
            // don't add self to list.
            if (!critter.Equals(this._owner))
            {
                if (critter.Team == _owner.Team)
                {
                    _observedFriends.Add(critter);
                }
                else
                {
                    _observedEnemies.Add(critter);
                    _owner.Team.ObservedEnemyAdd(critter);
                }
            }
        }
        //private Int32 _observedCreaturesCount = 0;

        /* public List<UInt32> ObservedCreatures
         {
             get
             {
                 return this._observedCreatures;
             }
         }*/

        // PROBLEM: make it so the update DOESN'T occur if a remove is followed by an add in the same tick.
        public void ObservedCreaturesAdd(Creature critter)
        {
            // don't add self to list.
            if (!critter.Equals(this._owner))
            {
                if (critter.Team == _owner.Team)
                {
                    _observedFriends.Add(critter);
                }
                else
                {
                    _observedEnemies.Add(critter);
                    _owner.Team.ObservedEnemyAdd(critter);
                }
            }
        }