CollisionBoxComponent::CollisionBoxComponent(GameObject& aGameObject, eCollisionGroup aCollisionGroup, const Vector2<float>& someDimensions) : CollisionComponent(aGameObject, aCollisionGroup)
{
	myDimensions = someDimensions;
	Line<float> aLine;

	Vector2<float> position1(-myDimensions.myX / 2, -myDimensions.myY / 2);
	Vector2<float> position2(-myDimensions.myX / 2, myDimensions.myY / 2);
	Vector2<float> position3(myDimensions.myX / 2, myDimensions.myY / 2);
	Vector2<float> position4(myDimensions.myX / 2, -myDimensions.myY / 2);

	aLine.InitWith2Points(position1, position2);
	myLineVolume.AddLine(aLine);

	aLine.InitWith2Points(position2, position3);
	myLineVolume.AddLine(aLine);

	aLine.InitWith2Points(position3, position4);
	myLineVolume.AddLine(aLine);

	aLine.InitWith2Points(position4, position1);
	myLineVolume.AddLine(aLine);

	myParent->SetValue<CollisionBoxComponent*>("CollisionBoxComponent", this);
	//mySprite = ResourceManager::GetInstance()->GetSprite("../Data/Gfx/debugBox.png", { someDimensions.x, someDimensions.y }, { someDimensions.x / 2.f, someDimensions.y / 2.f });
}
CollisionBoxComponent::CollisionBoxComponent(GameObject& aGameObject, eCollisionGroup aCollisionGroup, const Vector2<float>& someDimensions, const Vector2<float>& aCenterPosition) : CollisionComponent(aGameObject, aCollisionGroup, aCenterPosition)
{
	myDimensions = someDimensions;
	Line<float> aLine;

	Vector2<float> position1(-myDimensions.myX / 2, -myDimensions.myY / 2);
	Vector2<float> position2(-myDimensions.myX / 2, myDimensions.myY / 2);
	Vector2<float> position3(myDimensions.myX / 2, myDimensions.myY / 2);
	Vector2<float> position4(myDimensions.myX / 2, -myDimensions.myY / 2);

	aLine.InitWith2Points(position1, position2);
	myLineVolume.AddLine(aLine);

	aLine.InitWith2Points(position2, position3);
	myLineVolume.AddLine(aLine);

	aLine.InitWith2Points(position3, position4);
	myLineVolume.AddLine(aLine);

	aLine.InitWith2Points(position4, position1);
	myLineVolume.AddLine(aLine);
	myParent->SetValue<CollisionBoxComponent*>("CollisionBoxComponent", this);

}
int main(int argc, char* argv[])
{
	ExplorationShared shared;
	EBehavior behavior(&shared);
	EBWaitIdle waitStart("Start");
	EBWaitIdle waitMotion1("ArmPositioning");
	EBWaitIdle waitMotion2("Turn1");
	EBWaitIdle waitMotion3("Turn2");
	EBWaitIdle waitMotion4("Turn3");
	EBWaitIdle waitMotion5("Turn4");
	EBWaitIdle waitMotion6("Turn5");
	EBWaitIdle waitMotion7("Final pos");
	EBWaitIdle waitMotion8("Going back to rest");
	EBWaitIdle endState1("end1");
	EBWaitIdle endState2("end2");

	EBWaitIdle stateInhibitHandTracking("Inhibit hand tracking");
	EBWaitIdle stateEnableHandTracking("Enable hand tracking");

	EBWaitIdle position1Wait("Position1 done");
	EBWaitIdle position2Wait("Position2 done");
	EBWaitIdle position3Wait("Position3 done");
	
	EBWaitDeltaT position2Train(6);
	EBWaitDeltaT position3Train(6);
	EBWaitDeltaT position4Train(6);

	EBWaitIdle position2("Waiting arm done");
	EBWaitIdle position3("Waiting arm done");
	EBWaitIdle position4("Waiting arm done");

	EBWaitIdle waitArmAck("Wait armAck");

	EBWaitDeltaT dT1(6);
	EBWaitDeltaT dT2(0.2);
	EBWaitDeltaT dT3OneSecond(3);

	EBWaitDeltaT dTHandClosing(0.1);
	EBWaitDeltaT waitArmSeemsToRest(5);
	EBBehaviorOutput	startTrain(YBVKFTrainStart);
	EBBehaviorOutput	startSequence(YBVKFStart);
	EBBehaviorOutput    stopTrain(YBVKFTrainStop);
	EBBehaviorOutput    stop(YBVKFStop);
	EBSimpleOutput	forceOpen(YBVGraspRflxForceOpen);
	EBSimpleOutput  parkArm(YBVArmForceRestingTrue);
	
	// output: enable and disable hand tracking system
	EBEnableTracker		enableHandTracking;
	EBInhibitTracker	inhibitHandTracking;
		
	EBOutputCommand cmd1(YBVArmForceNewCmd, YVector(_nJoints, pos1));
	EBOutputCommand cmd2(YBVArmForceNewCmd, YVector(_nJoints, pos2));
	EBOutputCommand cmd3(YBVArmForceNewCmd, YVector(_nJoints, pos3));
	// EBOutputCommand cmd4(YBVArmForceNewCmd, YVector(_nJoints, pos4));
	// EBOutputCommand cmd5(YBVArmForceNewCmd, YVector(_nJoints, pos5));
//	EBOutputCommand cmd6(YBVArmForceNewCmd, YVector(_nJoints, pos6));
	EBOutputCommand cmd7(YBVArmForceNewCmd, YVector(_nJoints, pos7));
	EBOutputCommand cmd8(YBVArmForceNewCmd, YVector(_nJoints, pos8));
	EBOutputCommand cmd9(YBVArmForceNewCmd, YVector(_nJoints, pos9));
	EBOutputCommand cmd10(YBVArmForceNewCmd, YVector(_nJoints, pos10));

	EBSimpleInput armDone(YBVArmDone);
	EBSimpleInput handDone(YBVHandDone);
	EBSimpleInput start(YBVKFExplorationStart);
	EBSimpleInput start2(YBVGraspRflxClutch);
	EBSimpleInput armAck(YBVArmIssuedCmd);
	EBSimpleInput armNAck(YBVArmIsBusy);

	behavior.setInitialState(&waitStart);
	behavior.add(&start, &waitStart, &waitMotion1, &cmd1);
	behavior.add(&start2, &waitStart, &dTHandClosing, &enableHandTracking);
	behavior.add(NULL, &dTHandClosing, &waitArmAck, &cmd1);

	behavior.add(&armAck, &waitArmAck, &stateEnableHandTracking, &startSequence);
	behavior.add(&armNAck, &waitArmAck, &waitArmSeemsToRest, &inhibitHandTracking);
	behavior.add(NULL, &waitArmSeemsToRest, &waitStart, &forceOpen);
	behavior.add(NULL, &stateEnableHandTracking, &waitMotion1, &enableHandTracking);

	behavior.add(&armDone, &waitMotion1, &dT3OneSecond);
	// wait some extra time before issueing the startKF signal
	behavior.add(NULL, &dT3OneSecond, &dT1, &startTrain);
	
	// july 21/04
	behavior.add(NULL, &dT1, &waitMotion6);
	behavior.add(NULL, &waitMotion6, &position1Wait, &stopTrain);
	// position2
	behavior.add(NULL, &position1Wait, &position2, &cmd7);
	behavior.add(&armDone, &position2, &position2Train, &startTrain);
	behavior.add(NULL, &position2Train, &position2Wait, &stopTrain);
	//position3
	behavior.add(NULL, &position2Wait, &position3, &cmd8);
	behavior.add(&armDone, &position3, &position3Train, &startTrain);
	behavior.add(NULL, &position3Train, &position3Wait, &stopTrain);
	//position 4
	behavior.add(NULL, &position3Wait, &position4, &cmd9);
	behavior.add(&armDone, &position4, &position4Train, &startTrain);
	behavior.add(NULL, &position4Train, &stateInhibitHandTracking, &stopTrain);

	behavior.add(NULL, &stateInhibitHandTracking, &dT2);

	/*
	behavior.add(NULL, &dT1, &waitMotion2, &cmd2);
	// behavior.add(&armDone, &waitMotion1, &waitMotion2, &cmd2);
	behavior.add(&armDone, &waitMotion2, &waitMotion3, &cmd3);
	behavior.add(&armDone, &waitMotion3, &waitMotion4, &cmd4);
	behavior.add(&armDone, &waitMotion4, &waitMotion5, &cmd5);
	behavior.add(&armDone, &waitMotion5, &waitMotion6, &cmd6);

	behavior.add(&armDone, &waitMotion6, &dT2, &stopKF);
	*/
	behavior.add(NULL, &dT2, &waitMotion7, &cmd10);
	behavior.add(&armDone, &waitMotion7, &waitMotion8, &forceOpen);
	behavior.add(&handDone, &waitMotion8, &endState1, &parkArm);
	behavior.add(NULL, &endState1, &endState2, &inhibitHandTracking);
	behavior.add(NULL, &endState2, &waitStart, &stop);

	behavior.Begin();
	behavior.loop();

	return 0;
}
Example #4
0
/// Tests the Operators
/// @return True if all tests were executed, false if not
bool PositionTestSuite::TestCaseOperator()
{
    //------Last Checked------//
    // - Jan 18, 2005
    
    // TEST CASE: Assignment Operator
    {
        Position position(12,4,2);
        Position position2 = position;
        TEST(wxT("Operator="), 
            (position == position2)
        );
        
        // TEST CASE: Operator= (self-assignment)
        position = position;
        TEST(wxT("Operator= (self-assignment)"),
            (position == position)
        );
    }
    
    // TEST CASE: Equality Operator
    {
        Position position(12,4,2);
        Position position2(12,4,2);
        Position position3(13,4,2);
        Position position4(12,8,2);
        Position position5(12,4,1);
        Position position6(12,4,2);
        position6.SetIrregularGroupingTiming(3,2);
        Position position7(12,4,2);
        position7.SetPreviousBeamDurationType(16);
        Position position8(12,4,2);
        position8.SetBeamStart();
        Position position9(12,4,2);
        position9.SetFractionalLeftBeam();
        Position position10(12,4,2);
        position10.SetFractionalRightBeam();
        Position position11(12,4,2);
        position11.SetBeamEnd();
        Position position12(12,4,2);
        position12.SetDotted();
        Position position13(12,4,2);
        position13.SetRest();
        Position position14(12,4,2);
        position14.SetVibrato();
        Position position15(12,4,2);
        position15.SetWideVibrato();
        Position position16(12,4,2);
        position16.SetArpeggioUp();
        Position position17(12,4,2);
        position17.SetArpeggioDown();
        Position position18(12,4,2);
        position18.SetPickStrokeUp();
        Position position19(12,4,2);
        position19.SetPickStrokeDown();
        Position position20(12,4,2);
        position20.SetStaccato();
        Position position21(12,4,2);
        position21.SetMarcato();
        Position position22(12,4,2);
        position22.SetSforzando();
        Position position23(12,4,2);
        position23.SetTremoloPicking();
        Position position24(12,4,2);
        position24.SetPalmMuting();
        Position position25(12,4,2);
        position25.SetTap();
        Position position26(12,4,2);
        position26.SetAcciaccatura();
        Position position27(12,4,2);
        position27.SetTripletFeel1st();
        Position position28(12,4,2);
        position28.SetTripletFeel2nd();
        Position position29(12,4,2);
        position29.SetLetRing();
        Position position30(12,4,2);
        position30.SetFermata();
        Position position31(12,4,2);
        position31.SetIrregularGroupingStart();
        Position position32(12,4,2);
        position32.SetIrregularGroupingMiddle();
        Position position33(12,4,2);
        position33.SetIrregularGroupingEnd();
        Position position34(12,4,2);
        position34.SetVolumeSwell(Dynamic::off, Dynamic::mp, 1);
        Position position35(12,4,2);
        position35.SetTremoloBar(Position::invertedDip, 1, 12);
        
        TEST(wxT("Operator== - position == position"), (position == position2));
        TEST(wxT("Operator== - position != position"),
            !(position == position3));
        TEST(wxT("Operator== - position != position 2"),
            !(position == position4));
        TEST(wxT("Operator== - position != position 3"),
            !(position == position5));
        TEST(wxT("Operator== - position != position 4"),
            !(position == position6));
        TEST(wxT("Operator== - position != position 5"),
            !(position == position7));
        TEST(wxT("Operator== - position != position 6"),
            !(position == position8));
        TEST(wxT("Operator== - position != position 7"),
            !(position == position9));
        TEST(wxT("Operator== - position != position 8"),
            !(position == position10));
        TEST(wxT("Operator== - position != position 9"),
            !(position == position11));
        TEST(wxT("Operator== - position != position 10"),
            !(position == position12));
        TEST(wxT("Operator== - position != position 11"),
            !(position == position13));
        TEST(wxT("Operator== - position != position 12"),
            !(position == position14));
        TEST(wxT("Operator== - position != position 13"),
            !(position == position15));
        TEST(wxT("Operator== - position != position 14"),
            !(position == position16));
        TEST(wxT("Operator== - position != position 15"),
            !(position == position17));
        TEST(wxT("Operator== - position != position 16"),
            !(position == position18));
        TEST(wxT("Operator== - position != position 17"),
            !(position == position19));
        TEST(wxT("Operator== - position != position 18"),
            !(position == position20));
        TEST(wxT("Operator== - position != position 19"),
            !(position == position21));
        TEST(wxT("Operator== - position != position 20"),
            !(position == position22));
        TEST(wxT("Operator== - position != position 21"),
            !(position == position23));
        TEST(wxT("Operator== - position != position 22"),
            !(position == position24));
        TEST(wxT("Operator== - position != position 23"),
            !(position == position25));
        TEST(wxT("Operator== - position != position 24"),
            !(position == position26));
        TEST(wxT("Operator== - position != position 25"),
            !(position == position27));
        TEST(wxT("Operator== - position != position 26"), 
            !(position == position28));
        TEST(wxT("Operator== - position != position 27"),
            !(position == position29));
        TEST(wxT("Operator== - position != position 28"),
            !(position == position30));
        TEST(wxT("Operator== - position != position 29"),
            !(position == position31));
        TEST(wxT("Operator== - position != position 30"),
            !(position == position32));
        TEST(wxT("Operator== - position != position 31"),
            !(position == position33));
        TEST(wxT("Operator== - position != position 32"),
            !(position == position34));
        TEST(wxT("Operator== - position != position 33"),
            !(position == position35));
    }
    
    // Inequality Operator
    {
        Position position(12,4,2);
        Position position2(12,4,2);
        Position position3(13,4,2);
        Position position4(12,8,2);
        Position position5(12,4,1);
        Position position6(12,4,2);
        position6.SetIrregularGroupingTiming(3,2);
        Position position7(12,4,2);
        position7.SetPreviousBeamDurationType(16);
        Position position8(12,4,2);
        position8.SetBeamStart();
        Position position9(12,4,2);
        position9.SetFractionalLeftBeam();
        Position position10(12,4,2);
        position10.SetFractionalRightBeam();
        Position position11(12,4,2);
        position11.SetBeamEnd();
        Position position12(12,4,2);
        position12.SetDotted();
        Position position13(12,4,2);
        position13.SetRest();
        Position position14(12,4,2);
        position14.SetVibrato();
        Position position15(12,4,2);
        position15.SetWideVibrato();
        Position position16(12,4,2);
        position16.SetArpeggioUp();
        Position position17(12,4,2);
        position17.SetArpeggioDown();
        Position position18(12,4,2);
        position18.SetPickStrokeUp();
        Position position19(12,4,2);
        position19.SetPickStrokeDown();
        Position position20(12,4,2);
        position20.SetStaccato();
        Position position21(12,4,2);
        position21.SetMarcato();
        Position position22(12,4,2);
        position22.SetSforzando();
        Position position23(12,4,2);
        position23.SetTremoloPicking();
        Position position24(12,4,2);
        position24.SetPalmMuting();
        Position position25(12,4,2);
        position25.SetTap();
        Position position26(12,4,2);
        position26.SetAcciaccatura();
        Position position27(12,4,2);
        position27.SetTripletFeel1st();
        Position position28(12,4,2);
        position28.SetTripletFeel2nd();
        Position position29(12,4,2);
        position29.SetLetRing();
        Position position30(12,4,2);
        position30.SetFermata();
        Position position31(12,4,2);
        position31.SetIrregularGroupingStart();
        Position position32(12,4,2);
        position32.SetIrregularGroupingMiddle();
        Position position33(12,4,2);
        position33.SetIrregularGroupingEnd();
        Position position34(12,4,2);
        position34.SetVolumeSwell(Dynamic::off, Dynamic::mp, 1);
        Position position35(12,4,2);
        position35.SetTremoloBar(Position::invertedDip, 1, 12);
        
        TEST(wxT("Operator!= - position == position"),
            !(position != position2));
        TEST(wxT("Operator!= - position != position"),
            (position != position3));
        TEST(wxT("Operator!= - position != position 2"),
            (position != position4));
        TEST(wxT("Operator!= - position != position 3"),
            (position != position5));
        TEST(wxT("Operator!= - position != position 4"),
            (position != position6));
        TEST(wxT("Operator!= - position != position 5"),
            (position != position7));
        TEST(wxT("Operator!= - position != position 6"),
            (position != position8));
        TEST(wxT("Operator!= - position != position 7"),
            (position != position9));
        TEST(wxT("Operator!= - position != position 8"),
            (position != position10));
        TEST(wxT("Operator!= - position != position 9"),
            (position != position11));
        TEST(wxT("Operator!= - position != position 10"),
            (position != position12));
        TEST(wxT("Operator!= - position != position 11"),
            (position != position13));
        TEST(wxT("Operator!= - position != position 12"),
            (position != position14));
        TEST(wxT("Operator!= - position != position 13"),
            (position != position15));
        TEST(wxT("Operator!= - position != position 14"),
            (position != position16));
        TEST(wxT("Operator!= - position != position 15"),
            (position != position17));
        TEST(wxT("Operator!= - position != position 16"),
            (position != position18));
        TEST(wxT("Operator!= - position != position 17"),
            (position != position19));
        TEST(wxT("Operator!= - position != position 18"),
            (position != position20));
        TEST(wxT("Operator!= - position != position 19"),
            (position != position21));
        TEST(wxT("Operator!= - position != position 20"),
            (position != position22));
        TEST(wxT("Operator!= - position != position 21"),
            (position != position23));
        TEST(wxT("Operator!= - position != position 22"),
            (position != position24));
        TEST(wxT("Operator!= - position != position 23"),
            (position != position25));
        TEST(wxT("Operator!= - position != position 24"),
            (position != position26));
        TEST(wxT("Operator!= - position != position 25"),
            (position != position27));
        TEST(wxT("Operator!= - position != position 26"),
            (position != position28));
        TEST(wxT("Operator!= - position != position 27"),
            (position != position29));
        TEST(wxT("Operator!= - position != position 28"),
            (position != position30));
        TEST(wxT("Operator!= - position != position 29"),
            (position != position31));
        TEST(wxT("Operator!= - position != position 30"),
            (position != position32));
        TEST(wxT("Operator!= - position != position 31"),
            (position != position33));
        TEST(wxT("Operator!= - position != position 32"),
            (position != position34));
        TEST(wxT("Operator!= - position != position 33"),
            (position != position35));
    }
    
    return (true);
}