void run () { init(); lastTurn = Straight; // endofList = 0; // memory allocation for recieved parameters from graph to drive the bot //res_params = (param*) malloc(sizeof(param)); int i = 0; while(i<9){ createVertexNode(); i++; } addEdge(searchNode(0),searchNode(1), 3, Left, Right ); addEdge(searchNode(1),searchNode(2), 3, Left, Right ); addEdge(searchNode(2),searchNode(5), 3, Back, Straight ); addEdge(searchNode(5),searchNode(4), 3, Right, Left ); addEdge(searchNode(4),searchNode(3), 3, Right, Left ); addEdge(searchNode(1),searchNode(4), 3, Back, Straight ); addEdge(searchNode(0),searchNode(3), 3, Back, Straight ); addEdge(searchNode(3),searchNode(6), 3, Back, Straight ); addEdge(searchNode(6),searchNode(7), 3, Left, Right ); addEdge(searchNode(7),searchNode(8), 3, Left, Right ); addEdge(searchNode(4),searchNode(7), 3, Back, Straight ); addEdge(searchNode(5),searchNode(8), 3, Back, Straight ); //print(); }
void Scene::create() { _oneSidedProgram = new osg::Program; _oneSidedProgram->addShader(osgDB::readShaderFile(osg::Shader::VERTEX, "data/diffuse_directional1_vs.glsl")); _oneSidedProgram->addShader(osgDB::readShaderFile(osg::Shader::FRAGMENT, "data/diffuse_directional1_fs.glsl")); _twoSidedProgram = new osg::Program; _twoSidedProgram->addShader(osgDB::readShaderFile(osg::Shader::VERTEX, "data/diffuse_directional2_vs.glsl")); _twoSidedProgram->addShader(osgDB::readShaderFile(osg::Shader::FRAGMENT, "data/diffuse_directional2_fs.glsl")); _instancedProgram = new osg::Program; _instancedProgram->addShader(osgDB::readShaderFile(osg::Shader::VERTEX, "data/diffuse_billboard_instanced_vs.glsl")); _instancedProgram->addShader(osgDB::readShaderFile(osg::Shader::FRAGMENT, "data/diffuse_billboard_instanced_fs.glsl")); createPolyhedronNode(); createVertexNode(); createTextNode(); onPolyhedronChanged(); onLightModelChanged(); osg::ref_ptr<osgGA::LambdaEventHandler> eventHandler = new osgGA::LambdaEventHandler; eventHandler->onKeyDown([&](const osgGA::GUIEventAdapter& ea) { auto key = ea.getKey(); auto num = key - osgGA::GUIEventAdapter::KEY_0; if (0 <= num && num <= 9) { _faces ^= osgKaleido::PolyhedronGeometry::FaceMaskFromSides(wild::mod(num-1, 10) + 3); onFaceMaskChanged(); return true; } switch (key) { case osgGA::GUIEventAdapter::KEY_V: { _vgeode->setNodeMask(~_vgeode->getNodeMask()); return true; } case osgGA::GUIEventAdapter::KEY_L: { _twoSided = !_twoSided; onLightModelChanged(); return true; } case osgGA::GUIEventAdapter::KEY_Right: { _faces = osgKaleido::PolyhedronGeometry::All; _index++; onPolyhedronChanged(); return true; } case osgGA::GUIEventAdapter::KEY_Left: { _faces = osgKaleido::PolyhedronGeometry::All; _index--; onPolyhedronChanged(); return true; } default: return false; } }); _viewer->addEventHandler(eventHandler); }