/// <summary> /// Perform sense link tasks /// </summary> private void DoSenseLinkWork() { if (blackboard.Get <bool>(Constants.InPursuit)) { NotifyLinksWithinRange(); } else { if (blackboard.Get <bool>(Constants.CheckSenseLinks)) { blackboard.Set(Constants.CheckSenseLinks, false); var comrade = blackboard.Get <HostileBehavior>(Constants.LastComradeLinkWrite); lock (senseLinks) { SenseLink link = blackboard.Get <SenseLink>(Constants.SenseLink); blackboard.Set(Constants.LastKnownPosition, link.LastKnownTargetPosition); blackboard.Set(Constants.CheckPosition, true); } } } }
/// <summary> /// Instantiate links between all enemy game objects /// </summary> void Start() { enemyDictionary = new Dictionary <HashSet <string>, SenseLink>(HashSet <string> .CreateSetComparer()); var enemies = GetComponentsInChildren <HostileBehavior>(); foreach (var enemy in enemies) { foreach (var e in enemies) { if (enemy != e) { var set = new HashSet <string>(new[] { e.name, enemy.name }); var link = new SenseLink(); if (!enemyDictionary.ContainsKey(set)) { enemyDictionary.Add(set, link); e.senseLinks.Add(enemy, link); enemy.senseLinks.Add(e, link); } } } } }