void GenerateArgumentPermutations(StateData stateData, NativeList <ActionKey> argumentPermutations) { AgentObjectIndices.Clear(); stateData.GetTraitBasedObjectIndices(AgentObjectIndices, AgentFilter); var AgentComparer = new global::AI.Tactics.PlayOrderComparer() { StateData = stateData }; AgentObjectIndices.Sort(AgentComparer); var AgentBuffer = stateData.AgentBuffer; var validAgentCount = 0; for (int i0 = 0; i0 < AgentObjectIndices.Length; i0++) { var AgentIndex = AgentObjectIndices[i0]; var AgentObject = stateData.TraitBasedObjects[AgentIndex]; if (!(AgentBuffer[AgentObject.AgentIndex].Safe == false)) { continue; } if (!(AgentBuffer[AgentObject.AgentIndex].Timeline < 1)) { continue; } var actionKey = new ActionKey(k_MaxArguments) { ActionGuid = ActionGuid, [k_AgentIndex] = AgentIndex, }; argumentPermutations.Add(actionKey); validAgentCount++; if (validAgentCount >= 1) { break; } } }
void GenerateArgumentPermutations(StateData stateData, NativeList <ActionKey> argumentPermutations) { AgentObjectIndices.Clear(); stateData.GetTraitBasedObjectIndices(AgentObjectIndices, AgentFilter); var AgentComparer = new global::AI.Tactics.PlayOrderComparer() { StateData = stateData }; AgentObjectIndices.Sort(AgentComparer); CoverObjectIndices.Clear(); stateData.GetTraitBasedObjectIndices(CoverObjectIndices, CoverFilter); var CoverBuffer = stateData.CoverBuffer; var LocationBuffer = stateData.LocationBuffer; var AgentBuffer = stateData.AgentBuffer; var validAgentCount = 0; for (int i0 = 0; i0 < AgentObjectIndices.Length; i0++) { var AgentIndex = AgentObjectIndices[i0]; var AgentObject = stateData.TraitBasedObjects[AgentIndex]; if (!(AgentBuffer[AgentObject.AgentIndex].Safe == false)) { continue; } for (int i1 = 0; i1 < CoverObjectIndices.Length; i1++) { var CoverIndex = CoverObjectIndices[i1]; var CoverObject = stateData.TraitBasedObjects[CoverIndex]; if (!(CoverBuffer[CoverObject.CoverIndex].SpotTaken == false)) { continue; } if (!(LocationBuffer[AgentObject.LocationIndex].Position != LocationBuffer[CoverObject.LocationIndex].Position)) { continue; } var actionKey = new ActionKey(k_MaxArguments) { ActionGuid = ActionGuid, [k_AgentIndex] = AgentIndex, [k_CoverIndex] = CoverIndex, }; argumentPermutations.Add(actionKey); } validAgentCount++; if (validAgentCount >= 1) { break; } } }
void GenerateArgumentPermutations(StateData stateData, NativeList <ActionKey> argumentPermutations) { AgentObjectIndices.Clear(); stateData.GetTraitBasedObjectIndices(AgentObjectIndices, AgentFilter); var AgentComparer = new global::AI.Tactics.PlayOrderComparer() { StateData = stateData }; AgentObjectIndices.Sort(AgentComparer); ItemObjectIndices.Clear(); stateData.GetTraitBasedObjectIndices(ItemObjectIndices, ItemFilter); var AgentBuffer = stateData.AgentBuffer; var ItemBuffer = stateData.ItemBuffer; var validAgentCount = 0; for (int i0 = 0; i0 < AgentObjectIndices.Length; i0++) { var AgentIndex = AgentObjectIndices[i0]; var AgentObject = stateData.TraitBasedObjects[AgentIndex]; if (!(AgentBuffer[AgentObject.AgentIndex].HasWeapon == false)) { continue; } for (int i1 = 0; i1 < ItemObjectIndices.Length; i1++) { var ItemIndex = ItemObjectIndices[i1]; var ItemObject = stateData.TraitBasedObjects[ItemIndex]; if (!(ItemBuffer[ItemObject.ItemIndex].CarriedBy == TraitBasedObjectId.None)) { continue; } var actionKey = new ActionKey(k_MaxArguments) { ActionGuid = ActionGuid, [k_AgentIndex] = AgentIndex, [k_ItemIndex] = ItemIndex, }; argumentPermutations.Add(actionKey); } validAgentCount++; if (validAgentCount >= 1) { break; } } }