Esempio n. 1
0
    public void dont_act_as_if_grab_if_hand_already_closed_as_arrives_at_knob()
    {
        CreateKnobs("a");
        var firstAPosition = Knob("a").Position();

        strategy = NewGrabStrategy();

        Assert.AreEqual(1, arranger.layers);

        strategy.OnHandUpdate(rightHand.At(firstAPosition).Closed());

        Assert.AreEqual(1, arranger.layers);
    }
Esempio n. 2
0
    public void only_creates_one_new_layer_when_knob_grabbed()
    {
        CreateKnobs("a");
        var firstAPosition = Knob("a").Position();

        strategy = NewGrabStrategy();

        strategy.OnHandUpdate(rightHand.At(firstAPosition).Open());
        strategy.OnHandUpdate(rightHand.Closed());
        strategy.OnHandUpdate(rightHand);
        strategy.OnHandUpdate(rightHand);

        Assert.AreEqual(2, arranger.layers);
    }
Esempio n. 3
0
    public void second_hand_presence_does_not_release_first_grab()
    {
        CreateKnobs("a", "b");

        var leftHand = new StubHand(HandSide.Left);

        strategy = NewGrabStrategy();

        strategy.OnHandUpdate(rightHand.At(Knob("a", 0).Position()).Open());
        strategy.OnHandUpdate(rightHand.Closed());
        strategy.OnHandUpdate(leftHand.At(Knob("b", 0).Position()).Open());

        Assert.IsTrue(strategy.IsGrabbing(HandSide.Right));
        Assert.IsTrue(strategy.IsGrabbing(HandSide.Left));
    }
Esempio n. 4
0
    public void second_grab_with_other_hand_adds_to_text()
    {
        CreateKnobs("a", "b");

        var leftHand = new StubHand(HandSide.Left);

        strategy = NewGrabStrategy();

        strategy.OnHandUpdate(rightHand.At(Knob("a", 0).Position()).Open());
        strategy.OnHandUpdate(rightHand.Closed());
        strategy.OnHandUpdate(leftHand.At(Knob("b", 1).Position()).Open());
        strategy.OnHandUpdate(leftHand.Closed());

        Assert.AreEqual("ab", strategy.Text());
    }
Esempio n. 5
0
    public void need_to_release_grabbed_knob_when_hand_no_longer_present()
    {
        CreateKnobs("a");

        strategy = NewGrabStrategy();

        strategy.OnHandUpdate(rightHand.At(Knob("a").Position()).Open());
        strategy.OnHandUpdate(rightHand.Closed());

        Assert.IsTrue(strategy.IsGrabbing(HandSide.Right));

        strategy.OnHandUpdate(rightHand.ThatIsNotPresent());

        Assert.IsFalse(strategy.IsGrabbing(HandSide.Right));
    }
Esempio n. 6
0
    public void creates_new_knobs_layer_when_knob_grabbed()
    {
        CreateKnobs("a");
        var firstAPosition = Knob("a").Position();

        strategy = NewGrabStrategy();

        strategy.OnHandUpdate(rightHand.At(firstAPosition).Open());

        Assert.AreEqual(1, arranger.layers);

        strategy.OnHandUpdate(rightHand.At(firstAPosition).Closed());

        Assert.AreEqual(2, arranger.layers); // layers should be exposed as truth of knobs
                                             // or mock out arranger?
    }
Esempio n. 7
0
    public void need_to_release_grabbed_knob_when_hand_moved_away_from_knobs()
    {
        CreateKnobs("a");

        Vector3 somewhereElse = new Vector3(9999, 6543, 7399);

        strategy = NewGrabStrategy();

        strategy.OnHandUpdate(rightHand.At(Knob("a").Position()).Open());
        strategy.OnHandUpdate(rightHand.Closed());

        Assert.IsTrue(strategy.IsGrabbing(HandSide.Right));

        strategy.OnHandUpdate(rightHand.At(somewhereElse));

        Assert.IsFalse(strategy.IsGrabbing(HandSide.Right));
    }
Esempio n. 8
0
    void Start()
    {
        hands = GetComponent <LeapHands>();
        debug = GetComponent <LiveDebug>();

        knobs   = GameObject.Find("interactables").GetComponent <Knobs>();
        letters = GameObject.Find("letters").GetComponent <Letters>();

        debug.Log("knobs and letters: " + knobs + ", " + letters);

        knobArranger = new KnobArranger(letters, knobs);
        knobArranger.Arrange(0f);

        grabStrategy = new GrabStrategy(knobs, knobArranger, debug);

        hands.OnHandUpdate += OnHandUpdate;
    }
Esempio n. 9
0
    public void dont_go_around_approaching_loads_of_different_knobs_then_grabbing_all_and_sundry_when_arrive_again_this_time_closed()
    {
        CreateKnobs("a", "b", "c");

        var firstAPosition = Knob("a").Position();
        var firstBPosition = Knob("b").Position();
        var firstCPosition = Knob("c").Position();

        strategy = NewGrabStrategy();

        rightHand.Open();
        strategy.OnHandUpdate(rightHand.At(firstAPosition));
        strategy.OnHandUpdate(rightHand.At(firstBPosition));
        strategy.OnHandUpdate(rightHand.At(firstCPosition));

        rightHand.Closed();
        strategy.OnHandUpdate(rightHand.At(firstAPosition));
        strategy.OnHandUpdate(rightHand.At(firstBPosition));
        strategy.OnHandUpdate(rightHand.At(firstCPosition));

        Assert.IsFalse(strategy.IsGrabbing(HandSide.Right));
    }
Esempio n. 10
0
    public void need_to_stay_grabbed_as_move_away_then_release_once_hand_opened()
    {
        CreateKnobs("a", "b", "c");
        var firstAPosition = Knob("a").Position();
        var firstCPosition = Knob("c").Position();

        strategy = NewGrabStrategy();

        Assert.IsFalse(strategy.IsGrabbing(HandSide.Right));

        strategy.OnHandUpdate(rightHand.At(firstAPosition).Open());
        strategy.OnHandUpdate(rightHand.Closed());

        Assert.IsTrue(strategy.IsGrabbing(HandSide.Right));

        strategy.OnHandUpdate(rightHand.At(firstCPosition));

        Assert.IsTrue(strategy.IsGrabbing(HandSide.Right));

        strategy.OnHandUpdate(rightHand.Open());

        Assert.IsFalse(strategy.IsGrabbing(HandSide.Right));
    }