void AddWalkSat() { ALGORITHM *pCurAlg; pCurAlg = CreateAlgorithm("walksat","",FALSE, "WALKSAT: Original WalkSAT algorithm (SKC variant)", "Selman, Kautz, Cohen [AAAI 94]", "PickWalkSatSKC", "DefaultProcedures,Flip+FalseClauseList", "default","default"); AddParmProbability(&pCurAlg->parmList,"-wp","walk probability [default %s]","with probability PR, select a random variable from a~randomly selected unsat clause","",&iWp,0.50); CreateTrigger("PickWalkSatSKC",ChooseCandidate,PickWalkSatSKC,"",""); pCurAlg = CreateAlgorithm("walksat","",TRUE, "WALKSAT: Original WalkSAT algorithm (SKC variant) (weighted)", "Selman, Kautz, Cohen [AAAI 94]", "PickWalkSatSKCW", "DefaultProceduresW,Flip+FalseClauseListW", "default_w","default"); CopyParameters(pCurAlg,"walksat","",FALSE); CreateTrigger("PickWalkSatSKCW",ChooseCandidate,PickWalkSatSKCW,"",""); }
void AddRandom() { ALGORITHM *pCurAlg; pCurAlg = CreateAlgorithm("urwalk","",FALSE, "Uninformed Random Walk: flip any var at random", "", "PickURWalk", "DefaultProcedures", "default","default"); CreateTrigger("PickURWalk",ChooseCandidate,PickURWalk,"",""); pCurAlg = CreateAlgorithm("urwalk","",TRUE, "Uninformed Random Walk: flip any var at random (weighted)", "", "PickURWalk", "DefaultProceduresW", "default_w","default"); pCurAlg = CreateAlgorithm("crwalk","",FALSE, "Conflict-Directed Random Walk: choose unsat clause, then literal at random", "Papadimitriou [FOCS 91]", "PickCRWalk", "DefaultProcedures,Flip+FalseClauseList", "default","default"); CreateTrigger("PickCRWalk",ChooseCandidate,PickCRWalk,"",""); pCurAlg = CreateAlgorithm("crwalk","",TRUE, "Conflict-Directed Random Walk (weighted)", "Papadimitriou [FOCS 91]", "PickCRWalk", "DefaultProceduresW,Flip+FalseClauseListW", "default_w","default"); CreateTrigger("SchoeningRestart",CreateData,SchoeningRestart,"",""); pCurAlg = CreateAlgorithm("crwalk","schoening",FALSE, "Conflict-Directed Random Walk, restart every 3n steps", "Schoening [FOCS 99]", "PickCRWalk,SchoeningRestart", "DefaultProcedures,Flip+FalseClauseList", "default","default"); pCurAlg = CreateAlgorithm("crwalk","schoening",TRUE, "Conflict-Directed Random Walk, restart every 3n steps (weighted)", "Schoening [FOCS 99]", "PickCRWalk,SchoeningRestart", "DefaultProceduresW,Flip+FalseClauseListW", "default_w","default"); }
bool InitNx() { // Initialize PhysicsSDK NxPhysicsSDKDesc desc; gMyPhysX.initPhysX(desc); if(isPhysXHardwarePresent()) printf("PhysX Hardware is available in your system!\n"); // Create a scene NxSceneDesc sceneDesc; sceneDesc.gravity = gDefaultGravity; gMyPhysX.createDefaultScene(sceneDesc); // Create ground plane NxPlaneShapeDesc PlaneDesc; PlaneDesc.group = 2; NxActorDesc ActorDesc; ActorDesc.shapes.pushBack(&PlaneDesc); gMyPhysX.getScene()->createActor(ActorDesc); NxMaterial * defaultMaterial = gMyPhysX.getScene()->getMaterialFromIndex(0); defaultMaterial->setRestitution(0.0f); defaultMaterial->setStaticFriction(0.5f); defaultMaterial->setDynamicFriction(0.5f); // Create trigger NxVec3 zeroV(0,0,0); CreateTrigger(NxVec3(0,10,0), 10); CreateTrigger(NxVec3(-40,10,0), 10, &zeroV, false); CreateCube(NxVec3(-40,10,40), 10, NULL, false, true); CreateCube(NxVec3(-40,10,80), 10, NULL, true, false); //This creates a kinematic actor with a trigger, note that kinematic //triggers get interactions with static objects, thus this trigger //(which is placed directly above the ground) will directly get an //enter event for the ground plane (and change it's color). CreateTrigger(NxVec3(40,10,0), 10, NULL, true); //You can try to move it up just a little bit, and you will see //that it will no longer intersect the ground plane. //CreateTrigger(NxVec3(40,11,0), 10, NULL, true); return true; }
boost::shared_ptr<Trigger> MojoTriggerManager::CreateWhereTrigger( boost::shared_ptr<Activity> activity, const MojoURL& url, const MojObject& params, const MojObject& where) { boost::shared_ptr<MojoMatcher> matcher = boost::make_shared<MojoWhereMatcher>(where); return CreateTrigger(activity, url, params, matcher); }
boost::shared_ptr<Trigger> MojoTriggerManager::CreateCompareTrigger( boost::shared_ptr<Activity> activity, const MojoURL& url, const MojObject& params, const MojString& key, const MojObject& value) { boost::shared_ptr<MojoMatcher> matcher = boost::make_shared<MojoCompareMatcher>(key, value); return CreateTrigger(activity, url, params, matcher); }
boost::shared_ptr<Trigger> MojoTriggerManager::CreateBasicTrigger( boost::shared_ptr<Activity> activity, const MojoURL& url, const MojObject& params) { boost::shared_ptr<MojoMatcher> matcher = boost::make_shared<MojoSimpleMatcher>(); return CreateTrigger(activity, url, params, matcher); }
void AddRNoveltyPlus() { ALGORITHM *pCurAlg; pCurAlg = CreateAlgorithm("rnovelty+","",FALSE, "RNovelty+: RNovelty with random walk", "Hoos [AAAI 99]", "PickRNoveltyPlus", "DefaultProcedures,Flip+FalseClauseList,VarLastChange", "default","default"); CopyParameters(pCurAlg,"novelty+","",FALSE); CreateTrigger("PickRNoveltyPlus",ChooseCandidate,PickRNoveltyPlus,"",""); }
void AddRNovelty() { ALGORITHM *pCurAlg; pCurAlg = CreateAlgorithm("rnovelty","",FALSE, "RNovelty", "McAllester, Selman, Kautz [AAAI 97]", "PickRNovelty", "DefaultProcedures,Flip+FalseClauseList,VarLastChange", "default","default"); CopyParameters(pCurAlg,"novelty","",FALSE); CreateTrigger("PickRNovelty",ChooseCandidate,PickRNovelty,"",""); }
void MainEventPool::ParseAllTriggers(XmlNode* rootNode) { // trigsNode is root node in map's triggers file // First save all variables - find node Variables XmlNode* varsNode = rootNode->first_node("Variables", 9); // Save all variables // Create triggers - find Triggers node XmlNode* trigsNode = rootNode->first_node("Triggers", 8); XmlNode* trigNode = trigsNode->first_node("Trigger"); while(trigNode != 0) { Trigger* trigger = CreateTrigger(trigNode); _triggers.insert(std::make_pair(trigger->GetName(), trigger)); bool enabled = XmlUtility::XmlGetBoolIfExists(trigNode, "is_enabled", true); if(enabled) trigger->Enable(); trigNode = trigNode->next_sibling(); } }
void getkey(unsigned char key,int x,int y) { static int drawMode = 0; switch(key) { case 27: exit(0); break; case '0': ResetNx(); break; case '1': CreateCube(NxVec3(0.0f, 30.0f, 0.0f), 1+(rand()&3)); break; case '2': { NxVec3 t = g_CameraPos; NxVec3 Vel = g_CameraForward; Vel.normalize(); Vel*=200.0f; CreateTrigger(t, 8 ,&Vel, true); } break; case '3': CreateStack(10); break; case 'p': case 'P': gMyPhysX.pauseSimulation(!gMyPhysX.isPaused()); break; case 'h': case 'H': g_DisplayHelp = !g_DisplayHelp; break; case 'f': case 'F': FullScreen(); break; case 't': case 'T': drawMode = ++drawMode % 3; if(drawMode == 0) // fill mode { glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); glEnable(GL_DEPTH_TEST); glEnable(GL_CULL_FACE); } else if(drawMode == 1) // wireframe mode { glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); glDisable(GL_DEPTH_TEST); glDisable(GL_CULL_FACE); } else // point mode { glPolygonMode(GL_FRONT_AND_BACK, GL_POINT); glDisable(GL_DEPTH_TEST); glDisable(GL_CULL_FACE); } break; case ' ': g_CameraPos = NxVec3(0.0f, 20.0f, 80.0f); g_CameraForward = NxVec3(0.0f,0.0f,-1.0f); g_fovy =90.0f; break; default: break; } glutPostRedisplay(); glCheckError("getkey"); }
void CreateBuoyancyTrigger (const dMatrix& matrix, NewtonCollision* const convexShape) { CustomTriggerController* const controller = CreateTrigger (matrix, convexShape, NULL); BuoyancyForce* const buoyancyForce = new BuoyancyForce (controller); controller->SetUserData (buoyancyForce); }