Tanks_single::Tanks_single( int& id, int WIDTH_, int HEIGHT_ ) : AppSDL2OGL_3D( id, WIDTH_, HEIGHT_ ) { world.init_world(); printf( "DEBUG_SHIT : %i \n", world.debug_shit ); // ---- terrain //new Terrain25D(); world.terrain = prepareTerrain(); // ---- Objects int sphereShape = glGenLists(1); glNewList( sphereShape , GL_COMPILE ); //glPushMatrix(); //glDisable ( GL_LIGHTING ); //Draw3D::drawAxis ( 3.0f ); //glColor3f( 1.0f, 0.0f, 1.0f ); Draw3D::drawLines ( Solids::Icosahedron_nedges, Solids::Icosahedron_edges, Solids::Icosahedron_verts ); //glEnable( GL_LIGHTING ); //glColor3f( 0.8f, 0.8f, 0.8f ); Draw3D::drawPolygons( Solids::Icosahedron_nfaces, Solids::Icosahedron_ngons, Solids::Icosahedron_faces, Solids::Icosahedron_verts ); glEnable( GL_LIGHTING ); glColor3f( 0.8f, 0.8f, 0.8f ); Draw3D::drawSphere_oct( 6, 1.0, {0.0,0.0,0.0} ); //glPopMatrix(); glEndList(); int nobjects=10; double xrange = 10.0; for( int i=0; i<nobjects; i++){ Object3D * o = new Object3D(); //o->bounds.orientation.set({}); //o->bounds.span.set(o->bounds.orientation.a.normalize(),o->bounds.orientation.a.normalize(),o->bounds.orientation.a.normalize()); o->bounds.orientation.fromRand( {randf(0,1),randf(0,1),randf(0,1)} ); o->bounds.span.set( randf(0.2,2.0), randf(0.2,2.0), randf(0.2,2.0) ); //o->bounds.span.set( 1, 2.0, 0.5 ); Mat3d m; m.set_mmul_NT( o->bounds.orientation, o->bounds.orientation ); /* printf( " === %i \n", i ); printf( " %f %f %f \n", m.ax, m.ay, m.az ); printf( " %f %f %f \n", m.bx, m.by, m.bz ); printf( " %f %f %f \n", m.cx, m.cy, m.cz ); */ //o->bounds.pos.set( randf(-xrange,xrange),randf(-xrange,xrange),randf(-xrange,xrange) ); Vec2d p,dv; p.set( randf(-xrange,xrange),randf(-xrange,xrange) ); double v = world.terrain->eval( p, dv ); o->bounds.pos.set( p.x, v, p.y ); //o->bounds.pos.set( {0.0,0.0,0.0} ); o->shape= sphereShape; o->id = i; world.objects.push_back(o); } //camPos.set(); warrior1 = world.makeWarrior( {0.0d,0.0d,0.0d}, {0.0d,0.0d,1.0d}, {0.0d,1.0d,0.0d}, 0 ); warrior1->pos.set( 0.0, 0.0, -15.0 ); zoom = 5.0; first_person = true; perspective = true; }