Added physics-related functions to Entity and mouse clicks vs holds
This commit is contained in:
1 parent
43c3d3930f
commit
3e403681a3
12 files changed
+174
-46
No files matched your search
+26
-5
@@ -9,8 +9,9 @@ void MainState::onEnter() {
|
||||
test.setPosition(nf::Vec3(0.0, 1.5, -5.0));
|
||||
plane.create(nf::BaseAssets::plane);
|
||||
plane.setScale(20.0);
|
||||
text.create("This is a test text.", nf::Vec2(0.1, 0.025), nf::Vec3(0.8));
|
||||
text.create("", nf::Vec2(0.1, 0.025), nf::Vec3(0.8));
|
||||
text.centered(true);
|
||||
gravText.create("", nf::Vec2(0.025, 0.2), nf::Vec3(0.8), 1.0f, 0.5f);
|
||||
uiTex.create(nf::BaseAssets::logo, nf::Vec2(0.025, 0.025), 0.5);
|
||||
button.create(nf::Vec2(0.8, 0.025), "Reset");
|
||||
button2.create(nf::Vec2(0.6, 0.025), "Play Sound");
|
||||
@@ -29,12 +30,15 @@ void MainState::onEnter() {
|
||||
for (int y = 0; y < 5; y++) {
|
||||
for (int z = 0; z < 5; z++) {
|
||||
entities.push_back(new nf::Entity);
|
||||
entities.back()->create(nf::BaseAssets::sphere, nf::Entity::Type::DYNAMIC);
|
||||
entities.back()->create(ap["2mats.obj"], nf::Entity::Type::DYNAMIC);
|
||||
entities.back()->setPosition(nf::Vec3(5.0 + x * 2.05, 1.0 + y * 2.05, -5.0 + z * 2.05));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
grav = 2.0f;
|
||||
setGravity(grav);
|
||||
|
||||
camera->setPosition(-20.0, 5.0, 0.0);
|
||||
camera->setRotation(85.0, 0.0);
|
||||
}
|
||||
@@ -76,12 +80,28 @@ void MainState::update(float deltaTime) {
|
||||
sound2.stop();
|
||||
}
|
||||
|
||||
if (app->isKeyPressed(NFI_K)) {
|
||||
if (app->isMouseClicked(NFI_LEFTMOUSE) || app->isMouseHeld(NFI_RIGHTMOUSE)) {
|
||||
entities.push_back(new nf::Entity);
|
||||
entities.back()->create(ap["2mats.obj"], nf::Entity::Type::DYNAMIC);
|
||||
entities.back()->setPosition(camera->getPosition());
|
||||
entities.back()->create(nf::BaseAssets::sphere, nf::Entity::Type::DYNAMIC);
|
||||
entities.back()->setPosition(camera->getPosition() + camera->getRotation() * 5.0);
|
||||
entities.back()->setVelocity(camera->getRotation() * 100.0f);
|
||||
entities.back()->setMass(1000.0f);
|
||||
}
|
||||
|
||||
if (app->isKeyHeld(NFI_UP)) {
|
||||
grav += 0.05f;
|
||||
setGravity(grav);
|
||||
}
|
||||
if (app->isKeyHeld(NFI_DOWN)) {
|
||||
grav -= 0.05f;
|
||||
setGravity(grav);
|
||||
}
|
||||
if (app->isKeyPressed(NFI_T)) {
|
||||
grav = 1.0f;
|
||||
setGravity(1.0f);
|
||||
}
|
||||
gravText.setText("Gravity Scale: " + std::to_string(grav));
|
||||
|
||||
if (app->isKeyPressed(NFI_ESCAPE))
|
||||
app->quit();
|
||||
}
|
||||
@@ -93,6 +113,7 @@ void MainState::render(nf::Renderer& renderer) {
|
||||
renderer.render(light2);
|
||||
renderer.render(light3);
|
||||
renderer.render(text);
|
||||
renderer.render(gravText);
|
||||
renderer.render(uiTex);
|
||||
renderer.render(button);
|
||||
renderer.render(button2);
|
||||
|
||||
@@ -16,6 +16,7 @@ private:
|
||||
nf::Entity test;
|
||||
nf::Entity plane;
|
||||
nf::Text text;
|
||||
nf::Text gravText;
|
||||
nf::UITexture uiTex;
|
||||
nf::Button button;
|
||||
nf::Button button2;
|
||||
@@ -27,5 +28,7 @@ private:
|
||||
nf::Sound sound;
|
||||
nf::Sound sound2;
|
||||
|
||||
float grav;
|
||||
|
||||
std::vector<nf::Entity*> entities;
|
||||
};
|
||||
Reference in new issue
Block a user