|
@@ -28,28 +28,28 @@ RenderWidget::RenderWidget(QWidget *parent) :
|
28
|
28
|
|
29
|
29
|
//_engine->addEntity(new UGEEntityAxes(_engine));
|
30
|
30
|
|
31
|
|
- for (int i = 0; i < 1; ++i) {
|
32
|
|
- UGEEntityCube* cube = new GameCube(_engine);
|
33
|
|
- cube->setTextureId("rubiks");
|
34
|
|
-// cube->rotate(Vector3D(0.0, 45.0, 45.0));
|
35
|
|
- cube->move(Vector3D(0, i, i));
|
36
|
|
-// cube->setScale(Vector3D(1.0, 2.0, 1.0));
|
37
|
|
- _engine->addEntity(cube);
|
38
|
|
- _entities.append(cube);
|
39
|
|
- }
|
40
|
|
-
|
41
|
|
-// for(int i = 0,j = 0; i * j< 626;){
|
|
31
|
+// for (int i = 0; i < 1; ++i) {
|
42
|
32
|
// UGEEntityCube* cube = new GameCube(_engine);
|
43
|
33
|
// cube->setTextureId("rubiks");
|
44
|
|
-// cube->move(Vector3D(i, 0, j++));
|
|
34
|
+//// cube->rotate(Vector3D(0.0, 45.0, 45.0));
|
|
35
|
+// cube->move(Vector3D(0, i, i));
|
|
36
|
+//// cube->setScale(Vector3D(1.0, 2.0, 1.0));
|
45
|
37
|
// _engine->addEntity(cube);
|
46
|
38
|
// _entities.append(cube);
|
47
|
|
-// if(j == 26){
|
48
|
|
-// j = 0;
|
49
|
|
-// i++;
|
50
|
|
-// }
|
51
|
39
|
// }
|
52
|
40
|
|
|
41
|
+ for(int i = 0,j = 0; i * j< 626;){
|
|
42
|
+ UGEEntityCube* cube = new GameCube(_engine);
|
|
43
|
+ cube->setTextureId("rubiks");
|
|
44
|
+ cube->move(Vector3D(i, 0, j++));
|
|
45
|
+ _engine->addEntity(cube);
|
|
46
|
+ _entities.append(cube);
|
|
47
|
+ if(j == 26){
|
|
48
|
+ j = 0;
|
|
49
|
+ i++;
|
|
50
|
+ }
|
|
51
|
+ }
|
|
52
|
+
|
53
|
53
|
WaveFrontObj* wavefrontObj = new WaveFrontObj(this);
|
54
|
54
|
wavefrontObj->openFile(_assetsPath + "objs/enterprise/USSEnterprise.obj");
|
55
|
55
|
UGEEntityWaveFrontObj* obj = new UGEEntityWaveFrontObj(wavefrontObj, this);
|
|
@@ -84,15 +84,15 @@ void RenderWidget::mousePressEvent(QMouseEvent *event)
|
84
|
84
|
_camera->mousePressEvent(event);
|
85
|
85
|
if (event->buttons() & Qt::LeftButton) {
|
86
|
86
|
// Vector3D pos = _engine->get3DFrom2D(Vector2D(event->x(), height() - event->y()));
|
87
|
|
- Vector3D pos = _camera->getDirection();
|
|
87
|
+ Vector3D pos = _camera->getPosition();
|
88
|
88
|
qDebug() << pos.getX() << pos.getY() << pos.getZ();
|
89
|
89
|
Vector3D bestp;
|
90
|
|
- bool ok;
|
|
90
|
+ bool ok = false;
|
91
|
91
|
for (int i = 0; i < _engine->getEntities().size(); i++) {
|
92
|
92
|
UGEEntity* entity = _engine->getEntities()[i];
|
93
|
93
|
bool provi;
|
94
|
|
- Vector3D collision = entity->getVectorNearestIntesection(_camera->getDirection(), _camera->getPosition(), &provi);
|
95
|
|
- if (provi) {
|
|
94
|
+ Vector3D collision = entity->getVectorNearestIntesection(_camera->getDirection(), pos, &provi);
|
|
95
|
+ if (provi && (!ok || (pos - bestp).norm() > (pos - collision).norm())) {
|
96
|
96
|
bestp = collision;
|
97
|
97
|
UGEEntityAxes* axe = new UGEEntityAxes(_engine);
|
98
|
98
|
axe->move(bestp);
|