public void AddNewResource(T target) { if (!System.Object.ReferenceEquals(target, null) && !System.Object.ReferenceEquals(target, Owner)) { MakeNewRecordIfNotPresent(target); MemoryRecord mr = Memories[target]; // if target is attackable. if (CombatHolder.Instance.IsLOSOkay(target.Position, Owner.Position)) { mr.Attackable = true; mr.LastSensedPosition = target.Position; } else { mr.Attackable = false; } mr.TimeLastSensed = TimeWrapper.Instance.realtimeSinceStartup; } }
//public BaseGameEntity CurTarget = null; protected virtual void UpdateWithinRange() { //Debug.Log("$$$$$$ sensor UpdateWithinRange"); PotentialTargets.Clear(); //Owner.GetPosition(ref SelfPos); SelfPos = Owner.transform.position; SearchBound.center = SelfPos; SpatialManager.Instance.QueryRange(ref SearchBound, PotentialTargets); for (int i = 0; i < PotentialTargets.Count; ++i) { bool result = PotentialTargets[i] is T; if (result) { T item = (T)PotentialTargets[i]; bool isNull = System.Object.ReferenceEquals(item, null); bool isSame = System.Object.ReferenceEquals(item, Owner); if (!System.Object.ReferenceEquals(item, null) && !System.Object.ReferenceEquals(item, Owner) && item.IsAlive && CombatHolder.Instance.IsEnemy(item.GangID, Owner.GangID) ) { //if (DefenceSystem.Instance.IsEnemyRace(Owner.RaceSignal, // item.RaceSignal)) //{ // CurTarget = item; //} MakeNewRecordIfNotPresent(item); Debug.Log("$$$$$$ sensor UpdateWithinRange got record"); MemoryRecord mr = Memories[item]; mr.Attackable = true; // out method. if (CombatHolder.Instance.IsLOSOkay(item.Position, Owner.Position)) { mr.Attackable = true; //if (CombatHolder.Instance.IsSecondInFOVOfFirst( // Owner.Position, Owner.Facing, // item.Position, Owner.FOV)) if (true) { mr.TimeLastSensed = TimeWrapper.Instance.realtimeSinceStartup; mr.LastSensedPosition = item.Position; mr.TimeLastVisible = TimeWrapper.Instance.realtimeSinceStartup; if (!mr.WithinFOV) { mr.WithinFOV = true; mr.TimeBecameVisible = mr.TimeLastSensed; } } else { mr.WithinFOV = false; } } else { mr.Attackable = false; mr.WithinFOV = false; } } } } }