本文整理汇总了C++中EntityManager::update方法的典型用法代码示例。如果您正苦于以下问题:C++ EntityManager::update方法的具体用法?C++ EntityManager::update怎么用?C++ EntityManager::update使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类EntityManager
的用法示例。
在下文中一共展示了EntityManager::update方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main() {
ResourceManager resourceManager = ResourceManager();
resourceManager.addResourceDirectory("res/");
sf::RenderWindow window(sf::VideoMode(WINDOW_X, WINDOW_Y), "ECS Test");
EntityManager entityManager = EntityManager(&window, 100);
for (int i = 1; i < 10000; ++i) {
int temp = entityManager.createEntity(sf::Vector2f(WINDOW_X * float(rand()) / RAND_MAX, WINDOW_Y * float(rand()) / RAND_MAX));
entityManager.attachComponent(temp, RenderComponent(resourceManager.getTexture("player.png")));
entityManager.attachComponent(temp, PhysicsComponent(sf::Vector2f(100 * (float(rand()) / RAND_MAX - 0.5), 100 * (float(rand()) / RAND_MAX - 0.5))));
}
// Remove some entities.
for (int i = 1; i < 3; ++i) {
entityManager.destroyEntity(i);
}
// Remove some components.
for (int i = 3; i < 10; ++i) {
entityManager.detachComponent(i, RENDER);
}
sf::Clock clock;
while (window.isOpen()) {
// Handle events.
sf::Event event;
while (window.pollEvent(event)) {
if(event.type == sf::Event::Closed) {
window.close();
}
}
float frametime = clock.restart().asSeconds();
std::cout << (1 / frametime) << std::endl;
window.clear(sf::Color::White);
entityManager.update(frametime);
window.display();
}
}
示例2: main
int main(int /*argc*/, char** /*argv*/)
{
std::cout << "--------------------------" << std::endl;
std::cout << "EXPLODING BOMBS EXAMPLE!" << std::endl;
std::cout << "--------------------------" << std::endl;
std::cout << "This example displays the interaction between multiple entities via uncoupled components." << std::endl;
std::cout << "--------------------------" << std::endl;
std::cout << "CREATING ENTITIES" << std::endl;
std::cout << "--------------------------" << std::endl;
EntityManager mgr;
auto boxA = make_box("BoxA", mgr);
auto boxB = make_box("BoxB", mgr);
auto bombA = make_bomb("BombA", mgr);
auto bombB = make_bomb("BombB", mgr);
std::cout << "--------------------------" << std::endl;
std::cout << "SETTING PROPERTIES" << std::endl;
std::cout << "--------------------------" << std::endl;
std::cout << "Position of " << bombA->get_name() << " is " << bombA->get<Vec2i>(PROPERTY_POSITION).get().x << ", " << bombA->get<Vec2i>(PROPERTY_POSITION).get().y << std::endl;
bombB->get<Vec2i>(PROPERTY_POSITION) = Vec2i(2,0);
boxA->get<Vec2i>(PROPERTY_POSITION) = Vec2i(2,1);
boxB->get<Vec2i>(PROPERTY_POSITION) = Vec2i(5,0);
boxA->get<int>(PROPERTY_HEALTH) = 150;
boxB->get<int>(PROPERTY_HEALTH) = 150;
std::cout << "Health of " << bombA->get_name() << " is " << bombA->get<int>(PROPERTY_HEALTH) << std::endl;
std::cout << "Health of " << bombB->get_name() << " is " << bombB->get<int>(PROPERTY_HEALTH) << std::endl;
std::cout << "--------------------------" << std::endl;
std::cout << "START EXPLOSION" << std::endl;
std::cout << "--------------------------" << std::endl;
bombA->get<int>(PROPERTY_HEALTH) = 0;
std::cout << "--------------------------" << std::endl;
std::cout << "UPDATE ENTITY MANAGER STATE" << std::endl;
std::cout << "--------------------------" << std::endl;
mgr.update();
std::cout << "--------------------------" << std::endl;
std::cout << "ENTITIES IN ENTITY MANAGER" << std::endl;
std::cout << "--------------------------" << std::endl;
for(auto entity : mgr.get_entities())
{
std::cout << entity->get_name() << std::endl;
}
std::cout << "--------------------------" << std::endl;
system("pause");
return 0;
}
示例3: main
int main(int argc, char** argv)
{
EntityManager *em = new EntityManager();
SphereDetectionComponent* dcCam = new SphereDetectionComponent(1);
StateComponent* scCam = new StateComponent();
PhysicComponent* pcCam = new PhysicComponent(dcCam, scCam);
mat4 projection = glm::perspective(70.0*M_PI / 180.0, 16.0 / 9.0, 0.1, 100.0);
Camera* cam = new Camera(projection, pcCam);
SphereDetectionComponent* dc1 = new SphereDetectionComponent(1);
StateComponent* sc1 = new StateComponent();
PhysicComponent* pc1 = new PhysicComponent(dc1, sc1);
GraphicComponent* gc1 = new GraphicComponent();
Entity* en1 = new Entity(gc1, pc1);
em->add(en1);
SphereDetectionComponent* dc2 = new SphereDetectionComponent(1);
StateComponent* sc2 = new StateComponent();
PhysicComponent* pc2 = new PhysicComponent(dc2, sc2);
GraphicComponent* gc2 = new GraphicComponent();
Entity* en2 = new Entity(gc2, pc2);
em->add(en2);
SphereDetectionComponent* dc3 = new SphereDetectionComponent(1);
StateComponent* sc3 = new StateComponent();
PhysicComponent* pc3 = new PhysicComponent(dc3, sc3);
GraphicComponent* gc3 = new GraphicComponent();
Entity* en3 = new Entity(gc3, pc3);
em->add(en3);
for (int i = 0; i < 100; i++)
{
en2->getPhysicComponent()->getStateComponent()->setPosition(vec3(0, 0, 5-(float)i/2.0));
en3->getPhysicComponent()->getStateComponent()->setPosition(vec3(0, 3 - (float)i / 4.0,0));
em->collision();
em->update();
std::set<Contact*> contact_en1 = en1->getPhysicComponent()->getContact();
int j = 0;
cout << "frame n " << i << endl;
for (std::set<Contact*>::iterator it = contact_en1.begin(); it != contact_en1.end(); it++)
{
j++;
cout << "Contact du solide 1 :" << endl;
cout << "Contact n " << j << " Xpos = " << (*it)->position.x << " Ypos = " << (*it)->position.y << " Zpos = " << (*it)->position.z << endl;
cout << "Contact n " << j << " Xnor = " << (*it)->normal.x << " Ynor = " << (*it)->normal.y << " Znor = " << (*it)->normal.z << endl;
}
cout << endl;
}
system("PAUSE");
}