Example #1
0
 public static State GenerateInitialNode (bool is_double, ICostFactory cost_factory) {
     State initial = new State(null, 0.0f, -1, false);
     initial.limbs[0] = new Analyzer.State.Limb();
     initial.limbs[1] = new Analyzer.State.Limb();
     if (is_double) {
         initial.limbs[0].main = new Analyzer.State.Part(
             Analyzer.State.Movement.PassiveDown,
             Panel.Panels_1D_Playable[4],
             0.0f, 0.0f, 0.0f
         );
         initial.limbs[0].sub = new Analyzer.State.Part(
             Analyzer.State.Movement.PassiveDown,
             Panel.Panels_1D_Playable[3],
             0.0f, 0.0f, 0.0f
         );
         initial.limbs[0].extra = new Analyzer.State.Part(
             Analyzer.State.Movement.Unknown,
             null,
             0.0f, 0.0f, 0.0f
         );
         initial.limbs[1].main = new Analyzer.State.Part(
             Analyzer.State.Movement.PassiveDown,
             Panel.Panels_1D_Playable[5],
             0.0f, 0.0f, 0.0f
         );
         initial.limbs[1].sub = new Analyzer.State.Part(
             Analyzer.State.Movement.PassiveDown,
             Panel.Panels_1D_Playable[6],
             0.0f, 0.0f, 0.0f
         );
         initial.limbs[1].extra = new Analyzer.State.Part(
             Analyzer.State.Movement.Unknown,
             null,
             0.0f, 0.0f, 0.0f
         );
     } else {
         initial.limbs[0].main = new Analyzer.State.Part(
             Analyzer.State.Movement.PassiveDown,
             Panel.Panels_1D_Playable[0],
             0.0f, 0.0f, 0.0f
         );
         initial.limbs[0].sub = new Analyzer.State.Part(
             Analyzer.State.Movement.PassiveDown,
             Panel.Panels_1D_Playable[1],
             0.0f, 0.0f, 0.0f
         );
         initial.limbs[0].extra = new Analyzer.State.Part(
             Analyzer.State.Movement.Unknown,
             null,
             0.0f, 0.0f, 0.0f
         );
         initial.limbs[1].main = new Analyzer.State.Part(
             Analyzer.State.Movement.PassiveDown,
             Panel.Panels_1D_Playable[4],
             0.0f, 0.0f, 0.0f
         );
         initial.limbs[1].sub = new Analyzer.State.Part(
             Analyzer.State.Movement.PassiveDown,
             Panel.Panels_1D_Playable[3],
             0.0f, 0.0f, 0.0f
         );
         initial.limbs[1].extra = new Analyzer.State.Part(
             Analyzer.State.Movement.Unknown,
             null,
             0.0f, 0.0f, 0.0f
         );
     }
     initial.facing = new Vector(0.0f, 1.0f);
     initial.facing_desired = new Vector(0.0f, 1.0f);
     initial.sanityCheck();
     initial.cost = cost_factory.Calculate(initial);
     return initial;
 }
Example #2
0
 public static State TransitionTo (State from, Limb[] to, float second, int distance_from_start, Beat beat, ICostFactory cost_factory) {
     State nxt = null;
     Vector facing = FacingCalculator.Calculate(to, from.facing);
     Vector facing_desired = FacingCalculator.CalculateDesiredFacing(facing, from.facing_desired);
     if (IsArcValidWithoutCrossing(to, facing_desired)) {
         nxt = new State(from, second, distance_from_start, false);
     } else if (IsArcValidWithCrossing(to, facing_desired)) {
         //nxt = new State(from, second, distance_from_start, true);
         return null;
     } else {
         return null;
     }
     //Transition
     for (int i = 0; i < from.limbs.Length; ++i) {
         nxt.limbs[i] = to[i];
     }
     nxt.beat = beat;
     nxt.facing = facing;
     nxt.facing_desired = facing_desired;
     nxt.sanityCheck();
     nxt.cost = cost_factory.Calculate(nxt);
     return nxt;
 }