public WorldState PerformAction(Action goapAction, WorldState from) { var result = new WorldState(); var postcondition = goapAction.Postconditions; var affected = postcondition.Mask; var unaffected = affected ^ -1L; result.Values = (from.Values & unaffected) | (postcondition.Values & affected); result.Mask = from.Mask | postcondition.Mask; return result; }
public WorldStateNode(GoapGraph graph, WorldState state, ActionPlanner.Action action) { Graph = graph; State = state; Action = action; }
internal bool Match(WorldState other) { var mask = other.Mask; return (Values & mask) == (other.Values & mask); }