//missing: //- action can't be before first observation -> interface validation! public int AddFirstLevel(World.WorldDescription WorldDescription, Scenario.ScenarioDescription ScenarioDescription, out int numberOfImpossibleLeaf) { numberOfImpossibleLeaf = 0; int t = 0; //states List<string> fluentNames = WorldDescription.GetFluentNames().ToList<string>(); List<State> states = CreateStatesBasedOnObservations(fluentNames, ScenarioDescription, ref t); if (states.Count == 0) { numberOfImpossibleLeaf = 0; return 0; } foreach (var state in states) { Vertex newVertex = new Vertex(state, null, t, null); LastLevel.Add(newVertex); } //action WorldAction worldAction = ScenarioDescription.GetActionAtTime(t); if (worldAction != null) for (int i = 0; i < LastLevel.Count; ++i) { LastLevel[i].ActualWorldAction = (WorldAction)worldAction.Clone(); if (!WorldDescription.Validate(LastLevel[i])) { ++numberOfImpossibleLeaf; } } return t; }