StateTransitionInfoPair <StateEntityKey, ActionKey, StateTransitionInfo> ApplyEffects(ActionKey action, StateEntityKey originalStateEntityKey) { var originalState = m_StateDataContext.GetStateData(originalStateEntityKey); var originalStateObjectBuffer = originalState.TraitBasedObjects; var originalGameObject = originalStateObjectBuffer[action[k_GameIndex]]; var newState = m_StateDataContext.CopyStateData(originalState); var newGameBuffer = newState.GameBuffer; { var @Game = newGameBuffer[originalGameObject.GameIndex]; @Game.@MoveCount += 1; newGameBuffer[originalGameObject.GameIndex] = @Game; } { new CustomSwapEffect().ApplyCustomActionEffectsToState(originalState, action, newState); } var reward = Reward(originalState, action, newState); var StateTransitionInfo = new StateTransitionInfo { Probability = 1f, TransitionUtilityValue = reward }; var resultingStateKey = m_StateDataContext.GetStateDataKey(newState); return(new StateTransitionInfoPair <StateEntityKey, ActionKey, StateTransitionInfo>(originalStateEntityKey, action, resultingStateKey, StateTransitionInfo)); }
StateTransitionInfoPair <StateEntityKey, ActionKey, StateTransitionInfo> ApplyEffects(ActionKey action, StateEntityKey originalStateEntityKey) { var originalState = m_StateDataContext.GetStateData(originalStateEntityKey); var originalStateObjectBuffer = originalState.TraitBasedObjects; var originalItemObject = originalStateObjectBuffer[action[k_ItemIndex]]; var originalCharacterObject = originalStateObjectBuffer[action[k_CharacterIndex]]; var newState = m_StateDataContext.CopyStateData(originalState); var newCarriableBuffer = newState.CarriableBuffer; var newCarrierBuffer = newState.CarrierBuffer; { var @Carriable = newCarriableBuffer[originalItemObject.CarriableIndex]; @Carriable.@CarriedBy = originalState.GetTraitBasedObjectId(originalCharacterObject); newCarriableBuffer[originalItemObject.CarriableIndex] = @Carriable; } { var @Carrier = newCarrierBuffer[originalCharacterObject.CarrierIndex]; @Carrier.@Carried = originalState.GetTraitBasedObjectId(originalItemObject); newCarrierBuffer[originalCharacterObject.CarrierIndex] = @Carrier; } var reward = Reward(originalState, action, newState); var StateTransitionInfo = new StateTransitionInfo { Probability = 1f, TransitionUtilityValue = reward }; var resultingStateKey = m_StateDataContext.GetStateDataKey(newState); return(new StateTransitionInfoPair <StateEntityKey, ActionKey, StateTransitionInfo>(originalStateEntityKey, action, resultingStateKey, StateTransitionInfo)); }
StateTransitionInfoPair <StateEntityKey, ActionKey, StateTransitionInfo> ApplyEffects(ActionKey action, StateEntityKey originalStateEntityKey) { var originalState = m_StateDataContext.GetStateData(originalStateEntityKey); var originalStateObjectBuffer = originalState.TraitBasedObjects; var originalNPCObject = originalStateObjectBuffer[action[k_NPCIndex]]; var originalWayPointObject = originalStateObjectBuffer[action[k_WayPointIndex]]; var newState = m_StateDataContext.CopyStateData(originalState); var newLocationBuffer = newState.LocationBuffer; { var @Location = newLocationBuffer[originalNPCObject.LocationIndex]; @Location.Position = newLocationBuffer[originalWayPointObject.LocationIndex].Position; newLocationBuffer[originalNPCObject.LocationIndex] = @Location; } var reward = Reward(originalState, action, newState); var StateTransitionInfo = new StateTransitionInfo { Probability = 1f, TransitionUtilityValue = reward }; var resultingStateKey = m_StateDataContext.GetStateDataKey(newState); return(new StateTransitionInfoPair <StateEntityKey, ActionKey, StateTransitionInfo>(originalStateEntityKey, action, resultingStateKey, StateTransitionInfo)); }
StateTransitionInfoPair <StateEntityKey, ActionKey, StateTransitionInfo> ApplyEffects(ActionKey action, StateEntityKey originalStateEntityKey) { var originalState = m_StateDataContext.GetStateData(originalStateEntityKey); var originalStateObjectBuffer = originalState.TraitBasedObjects; var originalNPCObject = originalStateObjectBuffer[action[k_NPCIndex]]; var newState = m_StateDataContext.CopyStateData(originalState); var newBaggageBuffer = newState.BaggageBuffer; { var @Baggage = newBaggageBuffer[originalNPCObject.BaggageIndex]; @Baggage.@HasItem = true; newBaggageBuffer[originalNPCObject.BaggageIndex] = @Baggage; } newState.RemoveTraitBasedObjectAtIndex(action[k_ItemIndex]); var reward = Reward(originalState, action, newState); var StateTransitionInfo = new StateTransitionInfo { Probability = 1f, TransitionUtilityValue = reward }; var resultingStateKey = m_StateDataContext.GetStateDataKey(newState); return(new StateTransitionInfoPair <StateEntityKey, ActionKey, StateTransitionInfo>(originalStateEntityKey, action, resultingStateKey, StateTransitionInfo)); }
StateTransitionInfoPair <StateEntityKey, ActionKey, StateTransitionInfo> ApplyEffects(ActionKey action, StateEntityKey originalStateEntityKey) { var originalState = m_StateDataContext.GetStateData(originalStateEntityKey); var originalStateObjectBuffer = originalState.TraitBasedObjects; var originalAgentObject = originalStateObjectBuffer[action[k_AgentIndex]]; var originalCollectibleObject = originalStateObjectBuffer[action[k_CollectibleIndex]]; var newState = m_StateDataContext.CopyStateData(originalState); var newAgentBuffer = newState.AgentBuffer; var newCollectibleBuffer = newState.CollectibleBuffer; { var @Agent = newAgentBuffer[originalAgentObject.AgentIndex]; @Agent.Health += newCollectibleBuffer[originalCollectibleObject.CollectibleIndex].Amount; newAgentBuffer[originalAgentObject.AgentIndex] = @Agent; } var reward = Reward(originalState, action, newState); var StateTransitionInfo = new StateTransitionInfo { Probability = 1f, TransitionUtilityValue = reward }; var resultingStateKey = m_StateDataContext.GetStateDataKey(newState); return(new StateTransitionInfoPair <StateEntityKey, ActionKey, StateTransitionInfo>(originalStateEntityKey, action, resultingStateKey, StateTransitionInfo)); }
StateTransitionInfoPair <StateEntityKey, ActionKey, StateTransitionInfo> ApplyEffects(ActionKey action, StateEntityKey originalStateEntityKey) { var originalState = m_StateDataContext.GetStateData(originalStateEntityKey); var originalStateObjectBuffer = originalState.TraitBasedObjects; var originalMoverObject = originalStateObjectBuffer[action[k_MoverIndex]]; var originalDestinationObject = originalStateObjectBuffer[action[k_DestinationIndex]]; var newState = m_StateDataContext.CopyStateData(originalState); var newLocationBuffer = newState.LocationBuffer; var newRobotBuffer = newState.RobotBuffer; { var @Location = newLocationBuffer[originalMoverObject.LocationIndex]; @Location.Position = newLocationBuffer[originalDestinationObject.LocationIndex].Position; newLocationBuffer[originalMoverObject.LocationIndex] = @Location; } { var @Robot = newRobotBuffer[originalMoverObject.RobotIndex]; @Robot.@Battery -= 10; newRobotBuffer[originalMoverObject.RobotIndex] = @Robot; } var reward = Reward(originalState, action, newState); var StateTransitionInfo = new StateTransitionInfo { Probability = 1f, TransitionUtilityValue = reward }; var resultingStateKey = m_StateDataContext.GetStateDataKey(newState); return(new StateTransitionInfoPair <StateEntityKey, ActionKey, StateTransitionInfo>(originalStateEntityKey, action, resultingStateKey, StateTransitionInfo)); }
StateTransitionInfoPair <StateEntityKey, ActionKey, StateTransitionInfo> ApplyEffects(ActionKey action, StateEntityKey originalStateEntityKey) { var originalState = m_StateDataContext.GetStateData(originalStateEntityKey); var originalStateObjectBuffer = originalState.TraitBasedObjects; var originalRobotObject = originalStateObjectBuffer[action[k_RobotIndex]]; var newState = m_StateDataContext.CopyStateData(originalState); var newCleanlinessBuffer = newState.CleanlinessBuffer; { var @Cleanliness = newCleanlinessBuffer[originalRobotObject.CleanlinessIndex]; @Cleanliness.@DirtCount -= 1; newCleanlinessBuffer[originalRobotObject.CleanlinessIndex] = @Cleanliness; } newState.RemoveTraitBasedObjectAtIndex(action[k_DirtIndex]); var reward = Reward(originalState, action, newState); var StateTransitionInfo = new StateTransitionInfo { Probability = 1f, TransitionUtilityValue = reward }; var resultingStateKey = m_StateDataContext.GetStateDataKey(newState); return(new StateTransitionInfoPair <StateEntityKey, ActionKey, StateTransitionInfo>(originalStateEntityKey, action, resultingStateKey, StateTransitionInfo)); }
StateTransitionInfoPair <StateEntityKey, ActionKey, StateTransitionInfo> ApplyEffects(ActionKey action, StateEntityKey originalStateEntityKey) { var originalState = m_StateDataContext.GetStateData(originalStateEntityKey); var originalStateObjectBuffer = originalState.TraitBasedObjects; var newState = m_StateDataContext.CopyStateData(originalState); newState.RemoveTraitBasedObjectAtIndex(action[k_DirtIndex]); var reward = Reward(originalState, action, newState); var StateTransitionInfo = new StateTransitionInfo { Probability = 1f, TransitionUtilityValue = reward }; var resultingStateKey = m_StateDataContext.GetStateDataKey(newState); return(new StateTransitionInfoPair <StateEntityKey, ActionKey, StateTransitionInfo>(originalStateEntityKey, action, resultingStateKey, StateTransitionInfo)); }
StateTransitionInfoPair <StateEntityKey, ActionKey, StateTransitionInfo> ApplyEffects(ActionKey action, StateEntityKey originalStateEntityKey) { var originalState = m_StateDataContext.GetStateData(originalStateEntityKey); var originalStateObjectBuffer = originalState.TraitBasedObjects; var originalCharacterObject = originalStateObjectBuffer[action[k_CharacterIndex]]; var originalToObject = originalStateObjectBuffer[action[k_ToIndex]]; var originalFromObject = originalStateObjectBuffer[action[k_FromIndex]]; var newState = m_StateDataContext.CopyStateData(originalState); var newCharacterBuffer = newState.CharacterBuffer; var newWaypointBuffer = newState.WaypointBuffer; { var @Character = newCharacterBuffer[originalCharacterObject.CharacterIndex]; @Character.@Waypoint = originalState.GetTraitBasedObjectId(originalToObject); newCharacterBuffer[originalCharacterObject.CharacterIndex] = @Character; } { var @Waypoint = newWaypointBuffer[originalToObject.WaypointIndex]; @Waypoint.@Occupied = true; newWaypointBuffer[originalToObject.WaypointIndex] = @Waypoint; } { var @Waypoint = newWaypointBuffer[originalFromObject.WaypointIndex]; @Waypoint.@Occupied = false; newWaypointBuffer[originalFromObject.WaypointIndex] = @Waypoint; } { var @Waypoint = newWaypointBuffer[originalToObject.WaypointIndex]; @Waypoint.@Visited += 1; newWaypointBuffer[originalToObject.WaypointIndex] = @Waypoint; } var reward = Reward(originalState, action, newState); var StateTransitionInfo = new StateTransitionInfo { Probability = 1f, TransitionUtilityValue = reward }; var resultingStateKey = m_StateDataContext.GetStateDataKey(newState); return(new StateTransitionInfoPair <StateEntityKey, ActionKey, StateTransitionInfo>(originalStateEntityKey, action, resultingStateKey, StateTransitionInfo)); }
StateTransitionInfoPair <StateEntityKey, ActionKey, StateTransitionInfo> ApplyEffects(ActionKey action, StateEntityKey originalStateEntityKey) { var originalState = m_StateDataContext.GetStateData(originalStateEntityKey); var originalStateObjectBuffer = originalState.TraitBasedObjects; var originalCoverObject = originalStateObjectBuffer[action[k_CoverIndex]]; var originalAgentObject = originalStateObjectBuffer[action[k_AgentIndex]]; var newState = m_StateDataContext.CopyStateData(originalState); var newCoverBuffer = newState.CoverBuffer; var newLocationBuffer = newState.LocationBuffer; var newAgentBuffer = newState.AgentBuffer; { var @Cover = newCoverBuffer[originalCoverObject.CoverIndex]; @Cover.@SpotTaken = true; newCoverBuffer[originalCoverObject.CoverIndex] = @Cover; } { var @Location = newLocationBuffer[originalAgentObject.LocationIndex]; @Location.Position = newLocationBuffer[originalCoverObject.LocationIndex].Position; newLocationBuffer[originalAgentObject.LocationIndex] = @Location; } { var @Agent = newAgentBuffer[originalAgentObject.AgentIndex]; @Agent.@Safe = true; newAgentBuffer[originalAgentObject.AgentIndex] = @Agent; } { var @Agent = newAgentBuffer[originalAgentObject.AgentIndex]; @Agent.@Timeline += 1; newAgentBuffer[originalAgentObject.AgentIndex] = @Agent; } var reward = Reward(originalState, action, newState); var StateTransitionInfo = new StateTransitionInfo { Probability = 1f, TransitionUtilityValue = reward }; var resultingStateKey = m_StateDataContext.GetStateDataKey(newState); return(new StateTransitionInfoPair <StateEntityKey, ActionKey, StateTransitionInfo>(originalStateEntityKey, action, resultingStateKey, StateTransitionInfo)); }
StateTransitionInfoPair <StateEntityKey, ActionKey, StateTransitionInfo> ApplyEffects(ActionKey action, StateEntityKey originalStateEntityKey) { var originalState = m_StateDataContext.GetStateData(originalStateEntityKey); var originalStateObjectBuffer = originalState.TraitBasedObjects; var originalAgentObject = originalStateObjectBuffer[action[k_AgentIndex]]; var originalItemObject = originalStateObjectBuffer[action[k_ItemIndex]]; var newState = m_StateDataContext.CopyStateData(originalState); var newAgentBuffer = newState.AgentBuffer; var newLocationBuffer = newState.LocationBuffer; var newItemBuffer = newState.ItemBuffer; { var @Agent = newAgentBuffer[originalAgentObject.AgentIndex]; @Agent.@HasWeapon = true; newAgentBuffer[originalAgentObject.AgentIndex] = @Agent; } { var @Location = newLocationBuffer[originalAgentObject.LocationIndex]; @Location.Position = newLocationBuffer[originalItemObject.LocationIndex].Position; newLocationBuffer[originalAgentObject.LocationIndex] = @Location; } { var @Item = newItemBuffer[originalItemObject.ItemIndex]; @Item.@CarriedBy = originalState.GetTraitBasedObjectId(originalAgentObject); newItemBuffer[originalItemObject.ItemIndex] = @Item; } { var @Agent = newAgentBuffer[originalAgentObject.AgentIndex]; @Agent.@Timeline += 1; newAgentBuffer[originalAgentObject.AgentIndex] = @Agent; } var reward = Reward(originalState, action, newState); var StateTransitionInfo = new StateTransitionInfo { Probability = 1f, TransitionUtilityValue = reward }; var resultingStateKey = m_StateDataContext.GetStateDataKey(newState); return(new StateTransitionInfoPair <StateEntityKey, ActionKey, StateTransitionInfo>(originalStateEntityKey, action, resultingStateKey, StateTransitionInfo)); }
StateTransitionInfoPair <StateEntityKey, ActionKey, StateTransitionInfo> ApplyEffects(ActionKey action, StateEntityKey originalStateEntityKey) { var originalState = m_StateDataContext.GetStateData(originalStateEntityKey); var originalStateObjectBuffer = originalState.TraitBasedObjects; var originalGameStateObject = originalStateObjectBuffer[action[k_GameStateIndex]]; var originalNPCObject = originalStateObjectBuffer[action[k_NPCIndex]]; var originalGateObject = originalStateObjectBuffer[action[k_GateIndex]]; var newState = m_StateDataContext.CopyStateData(originalState); var newGateSwitchBuffer = newState.GateSwitchBuffer; var newBaggageBuffer = newState.BaggageBuffer; { var @GateSwitch = newGateSwitchBuffer[originalGameStateObject.GateSwitchIndex]; @GateSwitch.@OpenCount += 1; newGateSwitchBuffer[originalGameStateObject.GateSwitchIndex] = @GateSwitch; } { var @Baggage = newBaggageBuffer[originalNPCObject.BaggageIndex]; @Baggage.@HasItem = false; newBaggageBuffer[originalNPCObject.BaggageIndex] = @Baggage; } { var @Baggage = newBaggageBuffer[originalGateObject.BaggageIndex]; @Baggage.@HasItem = true; newBaggageBuffer[originalGateObject.BaggageIndex] = @Baggage; } var reward = Reward(originalState, action, newState); var StateTransitionInfo = new StateTransitionInfo { Probability = 1f, TransitionUtilityValue = reward }; var resultingStateKey = m_StateDataContext.GetStateDataKey(newState); return(new StateTransitionInfoPair <StateEntityKey, ActionKey, StateTransitionInfo>(originalStateEntityKey, action, resultingStateKey, StateTransitionInfo)); }
public void Execute(int index) { // Read data from input var stateKey = UnexpandedStates[index]; var stateData = StateDataContext.GetStateData(stateKey); // Make modifications to copy of state var newStateData = StateDataContext.CopyStateData(stateData); newStateData += ValueToAdd; var newStateKey = StateDataContext.RegisterState(newStateData); var reward = ValueToAdd; // Register action. Output transition info (state, action, result, resulting state key). CreatedStateInfo.Enqueue(new StateTransitionInfoPair <int, int, StateTransitionInfo>(stateKey, ValueToAdd, newStateKey, new StateTransitionInfo { Probability = 1f, TransitionUtilityValue = reward })); }