Skip to content

Commit 8a5150c

Browse files
committed
Updated level curve extraction example
1 parent fa02ecf commit 8a5150c

File tree

2 files changed

+55
-5
lines changed

2 files changed

+55
-5
lines changed

examples_tests/44.LevelCurveExtraction/InputEventReciever.h

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@
77
class ChgSpacingEventReciever : public irr::IEventReceiver
88
{
99
public:
10-
ChgSpacingEventReciever() : spacing(10), running(true)
11-
{
10+
ChgSpacingEventReciever() : spacing(10), running(true), speed(1), resetCam(false) {
1211
}
1312

1413
bool OnEvent(const irr::SEvent& event)
@@ -31,11 +30,29 @@ class ChgSpacingEventReciever : public irr::IEventReceiver
3130
case irr::KEY_KEY_S:
3231
saveBuffer = true;
3332
return true;
33+
case irr::KEY_KEY_R:
34+
resetCam = true;
35+
return true;
36+
case irr::KEY_MINUS:
37+
speed = std::clamp<float>(speed - 0.1f, 0.2f, 5.0f);
38+
std::cout << "Camera speed: " << speed << std::endl;
39+
return true;
40+
case irr::KEY_PLUS:
41+
speed = std::clamp<float>(speed + 0.1f, 0.2f, 5.0f);
42+
std::cout << "Camera speed: " << speed << std::endl;
43+
return true;
3444
default:
3545
break;
3646
}
3747
}
48+
else if (event.EventType == irr::EET_MOUSE_INPUT_EVENT && event.MouseInput.Wheel != 0.0f)
49+
{
50+
speed = std::clamp<float>(speed + event.MouseInput.Wheel / 10.0f, 0.2f, 5.0f);
51+
std::cout << "Camera speed: " << speed << std::endl;
52+
53+
return true;
3854

55+
}
3956
return false;
4057
}
4158
inline bool keepOpen() const { return running; }
@@ -49,10 +66,21 @@ class ChgSpacingEventReciever : public irr::IEventReceiver
4966
}
5067
return false;
5168
}
52-
69+
inline int resetCameraPosition()
70+
{
71+
if (resetCam)
72+
{
73+
resetCam = false;
74+
return true;
75+
}
76+
return false;
77+
}
78+
inline float getCameraSpeed() const { return speed; }
5379
private:
80+
float speed;
5481
int spacing;
5582
bool running;
5683
bool saveBuffer;
84+
bool resetCam;
5785
};
5886
#endif

examples_tests/44.LevelCurveExtraction/main.cpp

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -491,9 +491,12 @@ int main()
491491
// finally get our GPU mesh
492492
auto gpumesh = driver->getGPUObjectsFromAssets(&mesh_raw, &mesh_raw+1)->front();
493493

494+
auto startingCameraSpeed = gpumesh->getBoundingBox().getExtent().getLength() * 0.0005f;
495+
float cameraSpeed = 1;
496+
494497
auto boundingBoxSize = gpumesh->getBoundingBox().getExtent().getLength();
495498
//! we want to move around the scene and view it from different angles
496-
scene::ICameraSceneNode* camera = smgr->addCameraSceneNodeFPS(0,100.0f, boundingBoxSize * 0.0005f);
499+
scene::ICameraSceneNode* camera = smgr->addCameraSceneNodeFPS(0, 100.0f, startingCameraSpeed);
497500

498501
camera->setPosition(core::vector3df(-4,0,0));
499502
camera->setTarget(core::vector3df(0,0,0));
@@ -502,10 +505,29 @@ int main()
502505

503506
smgr->setActiveCamera(camera);
504507
uint64_t lastFPSTime = 0;
505-
506508
GlobalUniforms globalUniforms = { 0u,10.f };
507509
while(device->run() && receiver.keepOpen())
508510
{
511+
if (receiver.resetCameraPosition())
512+
{
513+
camera->setPosition(core::vector3df(-4, 0, 0));
514+
camera->setTarget(core::vector3df(0, 0, 0));
515+
}
516+
if (cameraSpeed != receiver.getCameraSpeed())
517+
{
518+
cameraSpeed = receiver.getCameraSpeed();
519+
auto pos = camera->getPosition();
520+
auto rot = camera->getRotation();
521+
smgr->addToDeletionQueue(camera);
522+
camera = smgr->addCameraSceneNodeFPS(0, 100.0f, startingCameraSpeed * cameraSpeed);
523+
smgr->setActiveCamera(camera);
524+
camera->setPosition(pos);
525+
camera->setRotation(rot);
526+
camera->setNearValue(1.f);
527+
camera->setFarValue(5000.0f);
528+
}
529+
530+
509531
driver->beginScene(true, true, video::SColor(255,128,128,128) );
510532

511533
// always update cause of mdiIndex

0 commit comments

Comments
 (0)