示例#1
0
        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;
                }
            }
        }
示例#2
0
        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;
                }
            }
        }
示例#3
0
        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;
                }
            }
        }