void System::registerEntity( Entity* anEntity ) { switch ( anEntity->getEntityType() ) { case EntityType::VARIABLE: registerEntity( static_cast< Variable* >( anEntity ) ); break; case EntityType::PROCESS: registerEntity( static_cast< Process* >( anEntity ) ); break; case EntityType::SYSTEM: registerEntity( static_cast< System* >( anEntity ) ); break; default: THROW_EXCEPTION_INSIDE( InvalidEntityType, "invalid EntityType specified [" + anEntity->getEntityType().asString() + "]" ); } }
/* Constructor, modify this to change what happens */ EntityScene::EntityScene(Visualisation &visualisation) : Scene(visualisation) , deerModel(new Entity(Stock::Models::DEER, 10.0f, Stock::Shaders::TEXTURE)) , colorModel(new Entity(Stock::Models::ROTHWELL, 45.0f, Stock::Shaders::COLOR)) , tick(0.0f) , polarity(-1) , instancedSphere(new Entity(Stock::Models::ICOSPHERE, 1.0f, Stock::Shaders::INSTANCED)) #ifdef __CUDACC__ , cuTexBuf(mallocGLInteropTextureBuffer<float>(100, 3)) , texBuf("_texBuf", cuTexBuf, true) #else , texBuf("_texBuf", 100, 3) #endif { registerEntity(deerModel); registerEntity(colorModel); registerEntity(instancedSphere); this->visualisation.setSkybox(true); this->visualisation.setWindowTitle("Entity Render Sample"); this->visualisation.setRenderAxis(true); srand((unsigned int)time(0)); this->colorModel->setRotation(glm::vec4(1.0, 0.0, 0.0, -90)); this->colorModel->setCullFace(false); this->deerModel->flipVertexOrder(); #ifdef __CUDACC__ cuInit(); #else float *tempData = (float*)malloc(sizeof(float) * 3 * 100); for (int i = 0; i < 100;i++) { tempData[(i * 3) + 0] = 100 * (float)sin(i*3.6); tempData[(i * 3) + 1] = -50.0f; tempData[(i * 3) + 2] = 100 * (float)cos(i*3.6); } texBuf.setData(tempData); free(tempData); #endif texBuf.bindToShader(this->instancedSphere->getShaders().get()); this->instancedSphere->setColor(glm::vec3(rand() / (float)RAND_MAX, rand() / (float)RAND_MAX, rand() / (float)RAND_MAX)); }
void World::init() { float xPos = kStatsTextXpos, yPos = kStatsTextYpos; _framerate = createText(kFramerateName, xPos, yPos, "", kStatsTextSize, sf::Color::Yellow); KeyboardMap aKeyboardPressedMapping; KeyboardMap aKeyboardReleasedMapping = { { sf::Keyboard::F3, std::make_shared<EnableStatsCommand>(*this, xPos, yPos)} }; _framerate->addComponent(std::make_shared<InputComponent>(aKeyboardPressedMapping, aKeyboardReleasedMapping)); #ifndef NDEBUG _framerate->removeComponent<PositionComponent>(); #endif // NDEBUG registerEntity(_framerate); createMenus(); }
Game::Game() : escapelistener(*this) { // Event Handler eventhandler = new EventHandler(); eventhandler->bind(this); // Pathfinder registerEntity(&pathfinder); // Viewport registerEntity(&viewport); // Default Actors, remove later std::cerr << "Generating" << std::endl; const int num_actors = 50; Actor * a; Actor * actors = new Actor[num_actors]; for (int i = 0; i < num_actors; i++) { if (!(i % 100)) std::cout << i << std::endl; int r, g, b; r = (67 * i) % 255; g = (73 * i) % 255; b = (83 * i) % 255; a = &actors[i]; //a->setPosition(sf::Vector2f(r, g)); a->setColor(sf::Color(r, g, b)); registerEntity(a); } // Default Obstacle, remove later StaticSquare* sq2 = new StaticSquare(sf::Vector2f(400, 400), sf::Vector2f(600, 600)); registerEntity(sq2); }
void World::createLevel(const std::string& iLevelFile) { // TODO have a level loader separated std::ifstream file(RESOURCES_FOLDER + iLevelFile); std::string line; int lineNb = 0; while (std::getline(file, line)) { int columnNb = 0; _levelGrid.resize(lineNb + 1); _levelGrid[lineNb].resize(line.size()); for (char character : line) { // create grass registerEntity(createGrassTile(toRealCoordinates(sf::Vector2i(lineNb, columnNb)))); switch (character) { case 'S': registerEntity(createSoftBrick(toRealCoordinates(sf::Vector2i(lineNb, columnNb)))); break; case 'H': registerEntity(createSolidBrick(toRealCoordinates(sf::Vector2i(lineNb, columnNb)))); break; case 'E': break; default: // TODO error break; } ++columnNb; } ++lineNb; } // create player registerEntity(createPlayer("Player 1", toRealCoordinates(sf::Vector2i(1, 1)))); }
void HeapLogger::registerEntity(CoreThread *coreThread){ #ifdef HEAPLOGGER_ENABLED registerEntity(coreThread->name); #endif }
void HeapLogger::registerEntity(CoreObject *coreObject){ #ifdef HEAPLOGGER_ENABLED registerEntity(coreObject->name); #endif }