public override void ComposeSensorTargetSet(GameActor gameActor, Reflex reflex) { List <Filter> filters = reflex.Filters; // add normal sightSet of items to the targetset // senseSetIter.Reset(); while (senseSetIter.MoveNext()) { SensorTarget target = (SensorTarget)senseSetIter.Current; bool match = true; bool cursorFilterPresent = false; for (int indexFilter = 0; indexFilter < filters.Count; indexFilter++) { Filter filter = filters[indexFilter] as Filter; ClassificationFilter cursorFilter = filter as ClassificationFilter; if (cursorFilter != null && cursorFilter.classification.IsCursor) { cursorFilterPresent = true; } if (!filter.MatchTarget(reflex, target)) { match = false; break; } } if (match) { if (!target.Classification.IsCursor || cursorFilterPresent) { reflex.targetSet.Add(target); } } } if (ListeningForMusic(filters)) { if (HearMusic(filters)) { SensorTarget sensorTarget = SensorTargetSpares.Alloc(); sensorTarget.Init(gameActor, Vector3.UnitZ, 0.0f); reflex.targetSet.AddOrFree(sensorTarget); } } reflex.targetSet.Action = TestObjectSet(reflex); if (reflex.targetSet.Action) { foreach (SensorTarget targ in reflex.targetSet) { gameActor.AddSoundLine(targ.GameThing); } } }