All pastes #488425 Raw Edit

Mine

public text v1 · immutable
·published 2007-05-15 00:17 UTC
rendered paste body
graphics.cpp:
#include "/usr/include/irr/irrlicht.h"
#include <string>
#include <vector>

using namespace irr;
using namespace scene;
using namespace video;
using namespace core;
using namespace io;

  IrrlichtDevice *device = createDevice(video::EDT_OPENGL, core::dimension2d<s32>(640, 480));
  IVideoDriver* driver  = device->getVideoDriver();
  ISceneManager* smgr = device->getSceneManager();
 // ICameraSceneNode* cam = smgr->addCameraSceneNodeFPS();
//  scene::ICameraSceneNode* 	
//		cam = smgr->addCameraSceneNodeFPS(0,100.0f,300.0f);
  stringw title = "Some Game";

void render() { 
  driver->beginScene(true, true, video::SColor(255,0,0,255));
  smgr->drawAll();
  device->setWindowCaption(title.c_str());
  driver->endScene();
}

class CMesh {
 protected:
  IAnimatedMeshSceneNode* meshnode;
 public:
  CMesh(const c8* file) {
   meshnode = smgr->addAnimatedMeshSceneNode(smgr->getMesh(file));
  }
  IAnimatedMeshSceneNode* mesh() { // get mesh, SHOULD ONLY BE USED BY CGRAPHICS
   return meshnode;
  }
  void setPosition(int x, int y, int z) {
   vector3df lol(x,y,z);
   meshnode->setPosition(lol);
  }
  void setRotation(int x, int y, int z) {
   vector3df lol(x,y,z);
   meshnode->setRotation(lol);
  }
  void setScale(int x, int y, int z) {
   vector3df lol(x,y,z);
   meshnode->setScale(lol);
  }
  bool collision(CMesh *m, int size) {
   if(meshnode->getAbsolutePosition().getDistanceFrom(m->mesh()->getAbsolutePosition()) < size)
    return true;

   return false;
  }
  bool collision(ISceneNode* m, int size) {
   if(meshnode->getAbsolutePosition().getDistanceFrom(m->getAbsolutePosition()) < size)
    return true;

   return false;
  }
  
  vector3df getScale() { return meshnode->getScale(); }
  vector3df getPosition() { return meshnode->getPosition(); }
  vector3df getRotation() { return meshnode->getRotation(); }
};

CMesh* LoadMap(const c8* zipArchive, const c8* map) {
 CMesh *m;
 // add .pk3 archive to the file system
 device->getFileSystem()->addZipFileArchive(zipArchive);

// collide shit
/*scene::ITriangleSelector* selector = 0;
 m->mesh()->setPosition(core::vector3df(-1370,-130,-1400));
 selector = smgr->createOctTreeTriangleSelector(
 m->mesh()->getMesh(), m->mesh(), (s32)128);
 m->mesh()->setTriangleSelector(selector);
 selector->drop();*/


 m = new CMesh(map);
 return m;
};



Crapper.cpp:

#include "graphics.cpp"

class CMap {
 protected:
  CMesh *map;
 public:
  CMap() {
   map = // new CMesh("simpleMap.3ds");
    LoadMap("map-20kdm2.pk3","20kdm2.bsp");
  }
  CMesh *getMesh() {
   return map;
  }
};

class CPlayer {
 protected:
  irr::scene::ICameraSceneNode *cam; // Irrlicht camera
  CMesh *eco; // current eco
  int bla;
 public:
  CPlayer() {
   bla = 0;
   cam = smgr->addCameraSceneNodeFPS();
  }
  irr::scene::ICameraSceneNode *getCam() {
   return cam;
  }
  void setEco(CMesh *m) {
   eco = m;
   eco->setPosition(0,0,20);
   //eco->setScale(40,40,40);
   eco->mesh()->setParent(cam);
   printf("blablabla %d\n",bla);
   bla++;
  }   
  void jump() {
   // to implement once gravity works
   // basically just set y+=35;, then
   // gravity will make you fall
  }
};

class CEco {
 protected:
  CMesh *eco;
  int type;
 public:
  CEco(int t) {
   type = t;
   if(t == 1) // blue
    eco = new CMesh("blue_eco.3ds");
   if(t == 2) // green
    eco = new CMesh("green_eco.3ds");
  }
  void setPos(int x, int z) {
   eco->setPosition(x,15,z);
  }
  CMesh *getMesh() { return eco; } 
};





int main() {
 CMap *map = new CMap();
 CEco *eco1 = new CEco(1); // blue
 CPlayer *p = new CPlayer();

 eco1->setPos(15,15);
 while(device->run() && device) {
  if(eco1->getMesh()->collision(p->getCam(),110)) { // eco1->player collision?
   p->setEco(eco1->getMesh());
  }
  render();


  core::stringw str;
  str += "[Crapper v0.2] ";  str += "[FPS: "; str += driver->getFPS(); str += "] ";
  device->setWindowCaption(str.c_str());
 }
};