//public BaseGameEntity CurTarget = null; protected virtual void UpdateWithinRange() { PotentialTargets.Clear(); Owner.GetPosition(ref SelfPos); SearchBound.center = SelfPos; SpatialManager.Instance.QueryRange(ref SearchBound, PotentialTargets); for (int i = 0; i < PotentialTargets.Count; ++i) { T item = (T)PotentialTargets[i]; if (!System.Object.ReferenceEquals(item, null) && !System.Object.ReferenceEquals(item, Owner) && DefenceSystem.Instance.IsEnemyRace(Owner.RaceSignal, item.RaceSignal)) { //if (DefenceSystem.Instance.IsEnemyRace(Owner.RaceSignal, // item.RaceSignal)) //{ // CurTarget = item; //} MakeNewRecordIfNotPresent(item); MemoryRecord mr = Memories[item]; // 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)) { 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; } } } }
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; } }