Added source-code.

This commit is contained in:
Deathsbreed
2014-10-19 10:36:32 -05:00
parent 6f5934732f
commit b4d523cc94
189 changed files with 39680 additions and 1 deletions

18
src/eventReceiver.cpp Normal file
View File

@@ -0,0 +1,18 @@
#include "eventReceiver.h"
EventReceiver::EventReceiver() {
for(u32 i = 0; i < KEY_KEY_CODES_COUNT; i++) {
KeyIsDown[i] = false;
}
}
bool EventReceiver::OnEvent(const SEvent &event) {
if(event.EventType == irr::EET_KEY_INPUT_EVENT) {
KeyIsDown[event.KeyInput.Key] = event.KeyInput.PressedDown;
}
return false;
}
const bool EventReceiver::IsKeyDown(EKEY_CODE keyCode) {
return KeyIsDown[keyCode];
}

12
src/eventReceiver.h Normal file
View File

@@ -0,0 +1,12 @@
#include <irrlicht.h>
using namespace irr;
class EventReceiver : public IEventReceiver {
public:
EventReceiver();
virtual bool OnEvent(const SEvent &event);
virtual const bool IsKeyDown(EKEY_CODE keyCode);
private:
bool KeyIsDown[KEY_KEY_CODES_COUNT];
};

90
src/main.cpp Normal file
View File

@@ -0,0 +1,90 @@
#include <iostream>
#include <irrlicht.h>
#include "driverChoice.h"
#include "eventReceiver.h"
using namespace irr;
enum {
ID_IsNotPickable = 0,
IDFlag_IsPickable = 1 << 0,
IDFlag_IsHighlightable = 1 << 1
};
int main() {
// Choose driver
video::E_DRIVER_TYPE driverType = driverChoiceConsole();
if(driverType == video::EDT_COUNT) return 1;
EventReceiver eventReceiver;
IrrlichtDevice *device = createDevice(driverType, core::dimension2d<u32>(800, 600), 32, true, false, false, &eventReceiver);
if(device == 0) return 1;
video::IVideoDriver *driver = device->getVideoDriver();
scene::ISceneManager *smgr = device->getSceneManager();
gui::IGUIEnvironment *guienv = device->getGUIEnvironment();
guienv->addStaticText(L"Press ESC to quit.", core::rect<s32>(10, 10, 150, 22), false, false, 0, -1, true);
device->getFileSystem()->addFileArchive("../res/map-20kdm2.pk3");
scene::IAnimatedMesh *mapmesh = smgr->getMesh("20kdm2.bsp");
scene::IMeshSceneNode *mapnode = 0;
if(mapmesh) {
mapnode = smgr->addOctreeSceneNode(mapmesh->getMesh(0), 0, IDFlag_IsPickable);
}
scene::ITriangleSelector *tselector = 0;
if(mapnode) {
mapnode->setPosition(core::vector3df(-1350, -130, -1400));
tselector = smgr->createOctreeTriangleSelector(mapnode->getMesh(), mapnode, 128);
mapnode->setTriangleSelector(tselector);
}
// Setup new keys
SKeyMap keyMap[5];
keyMap[0].Action = EKA_MOVE_FORWARD;
keyMap[0].KeyCode = KEY_KEY_W;
keyMap[1].Action = EKA_MOVE_BACKWARD;
keyMap[1].KeyCode = KEY_KEY_S;
keyMap[2].Action = EKA_STRAFE_LEFT;
keyMap[2].KeyCode = KEY_KEY_A;
keyMap[3].Action = EKA_STRAFE_RIGHT;
keyMap[3].KeyCode = KEY_KEY_D;
keyMap[4].Action = EKA_JUMP_UP;
keyMap[4].KeyCode = KEY_SPACE;
scene::ICameraSceneNode *cam = smgr->addCameraSceneNodeFPS(0, 100.0f, .3f, ID_IsNotPickable, keyMap, 5, true, 3.0f);
cam->setPosition(core::vector3df(50, 50, -60));
cam->setTarget(core::vector3df(-70, 30, -60));
if(tselector) {
scene::ISceneNodeAnimator *sanim = smgr->createCollisionResponseAnimator(tselector, cam, core::vector3df(30, 50, 30), core::vector3df(0, -10, 0), core::vector3df(0, 30, 0));
tselector->drop();
cam->addAnimator(sanim);
sanim->drop();
}
device->getCursorControl()->setVisible(false);
int lastFPS = -1;
while(device->run()) {
driver->beginScene(true, true, video::SColor(0, 255, 101, 255));
smgr->drawAll();
guienv->drawAll();
driver->endScene();
if(eventReceiver.IsKeyDown(KEY_ESCAPE)) {
device->closeDevice();
}
int fps = driver->getFPS();
if(lastFPS != fps) {
std::cout << "FPS: " << fps << std::endl;
lastFPS = fps;
}
}
device->drop();
return 0;
}