Skip to content

Commit 328843b

Browse files
committed
Gui: Fold widget #880
1 parent 003a1a7 commit 328843b

File tree

30 files changed

+469
-225
lines changed

30 files changed

+469
-225
lines changed

engine/includes/components/animator.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33

44
#include "nativebehaviour.h"
55

6+
#include "animationstatemachine.h"
7+
68
class AnimationClip;
79
class AnimationStateMachine;
810
class AnimationState;

engine/includes/editor/viewport/viewport.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ class ENGINE_EXPORT Viewport : public QWidget {
2323

2424
virtual void init();
2525

26-
CameraController *controllder();
26+
CameraController *controller();
2727
void setController(CameraController *ctrl);
2828
virtual void setWorld(World *world);
2929

engine/includes/resources/resource.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@
55

66
#include <mutex>
77

8-
9-
108
class ENGINE_EXPORT Resource : public Object {
119
A_REGISTER(Resource, Object, General)
1210

engine/src/components/actor.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,10 @@ void Actor::setEnabled(const bool enabled) {
105105
}
106106

107107
setHierarchyEnabled(enabled);
108+
109+
if(m_transform) {
110+
m_transform->setEnabled(enabled);
111+
}
108112
}
109113
/*!
110114
Returns a set of Actor::HideFlags applied to this Actor.

engine/src/components/transform.cpp

Lines changed: 31 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,11 @@ void Transform::setParentTransform(Transform *parent, bool force) {
147147
return;
148148
}
149149

150+
if(parent && actor()->parent() != parent->actor()) {
151+
actor()->setParent(parent->actor());
152+
return;
153+
}
154+
150155
Vector3 p;
151156
Vector3 e;
152157
Vector3 s;
@@ -185,60 +190,42 @@ void Transform::setParentTransform(Transform *parent, bool force) {
185190
Returns current transform matrix in local space.
186191
*/
187192
const Matrix4 &Transform::localTransform() const {
188-
if(m_dirty) {
189-
std::unique_lock<std::mutex> locker(m_mutex);
190-
cleanDirty();
191-
}
193+
cleanDirty();
192194
return m_transform;
193195
}
194196
/*!
195197
Returns current transform matrix in world space.
196198
*/
197199
const Matrix4 &Transform::worldTransform() const {
198-
if(m_dirty) {
199-
std::unique_lock<std::mutex> locker(m_mutex);
200-
cleanDirty();
201-
}
200+
cleanDirty();
202201
return m_worldTransform;
203202
}
204203
/*!
205204
Returns current position of the transform in world space.
206205
*/
207206
Vector3 Transform::worldPosition() const {
208-
if(m_dirty) {
209-
std::unique_lock<std::mutex> locker(m_mutex);
210-
cleanDirty();
211-
}
207+
cleanDirty();
212208
return Vector3(m_worldTransform[12], m_worldTransform[13], m_worldTransform[14]);
213209
}
214210
/*!
215211
Returns current rotation of the transform in world space as Euler angles in degrees.
216212
*/
217213
Vector3 Transform::worldRotation() const {
218-
if(m_dirty) {
219-
std::unique_lock<std::mutex> locker(m_mutex);
220-
cleanDirty();
221-
}
214+
cleanDirty();
222215
return m_worldRotation;
223216
}
224217
/*!
225218
Returns current rotation of the transform in world space as Quaternion.
226219
*/
227220
Quaternion Transform::worldQuaternion() const {
228-
if(m_dirty) {
229-
std::unique_lock<std::mutex> locker(m_mutex);
230-
cleanDirty();
231-
}
221+
cleanDirty();
232222
return m_worldQuaternion;
233223
}
234224
/*!
235225
Returns current scale of the transform in world space.
236226
*/
237227
Vector3 Transform::worldScale() const {
238-
if(m_dirty) {
239-
std::unique_lock<std::mutex> locker(m_mutex);
240-
cleanDirty();
241-
}
228+
cleanDirty();
242229
return m_worldScale;
243230
}
244231
/*!
@@ -261,10 +248,7 @@ void Transform::setParent(Object *parent, int32_t position, bool force) {
261248
\internal
262249
*/
263250
uint32_t Transform::hash() const {
264-
if(m_dirty) {
265-
std::unique_lock<std::mutex> locker(m_mutex);
266-
cleanDirty();
267-
}
251+
cleanDirty();
268252
return m_hash;
269253
}
270254
/*!
@@ -275,20 +259,24 @@ const std::list<Transform *> &Transform::children() const {
275259
}
276260

277261
void Transform::cleanDirty() const {
278-
m_transform = Matrix4(m_position, m_quaternion, m_scale);
279-
m_worldTransform = m_transform;
280-
m_worldRotation = m_rotation;
281-
m_worldQuaternion = m_quaternion;
282-
m_worldScale = m_scale;
283-
if(m_parent) {
284-
m_worldScale = m_parent->worldScale() * m_worldScale;
285-
m_worldRotation = m_parent->worldRotation() + m_worldRotation;
286-
m_worldQuaternion = m_parent->worldQuaternion() * m_worldQuaternion;
287-
m_worldTransform = m_parent->worldTransform() * m_worldTransform;
288-
}
289-
m_hash = 16;
290-
for(int i = 0; i < 16; i++) {
291-
Mathf::hashCombine(m_hash, m_worldTransform[i]);
262+
if(m_dirty) {
263+
std::unique_lock<std::mutex> locker(m_mutex);
264+
265+
m_transform = Matrix4(m_position, m_quaternion, m_scale);
266+
m_worldTransform = m_transform;
267+
m_worldRotation = m_rotation;
268+
m_worldQuaternion = m_quaternion;
269+
m_worldScale = m_scale;
270+
if(m_parent) {
271+
m_worldScale = m_parent->worldScale() * m_worldScale;
272+
m_worldRotation = m_parent->worldRotation() + m_worldRotation;
273+
m_worldQuaternion = m_parent->worldQuaternion() * m_worldQuaternion;
274+
m_worldTransform = m_parent->worldTransform() * m_worldTransform;
275+
}
276+
m_hash = 16;
277+
for(int i = 0; i < 16; i++) {
278+
Mathf::hashCombine(m_hash, m_worldTransform[i]);
279+
}
280+
m_dirty = false;
292281
}
293-
m_dirty = false;
294282
}

engine/src/editor/viewport/viewport.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -530,7 +530,7 @@ void Viewport::init() {
530530
}
531531
}
532532

533-
CameraController *Viewport::controllder() {
533+
CameraController *Viewport::controller() {
534534
return m_controller;
535535
}
536536

engine/src/engine.cpp

Lines changed: 1 addition & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -34,29 +34,8 @@
3434
#else
3535
#include "adapters/desktopadaptor.h"
3636
#endif
37-
#include "resources/text.h"
38-
#include "resources/texture.h"
39-
#include "resources/rendertarget.h"
40-
#include "resources/material.h"
41-
#include "resources/mesh.h"
42-
#include "resources/font.h"
43-
#include "resources/animationclip.h"
44-
#include "resources/animationstatemachine.h"
45-
#include "resources/translator.h"
46-
#include "resources/particleeffect.h"
47-
#include "resources/pipeline.h"
48-
#include "resources/pose.h"
49-
#include "resources/prefab.h"
50-
#include "resources/map.h"
51-
#include "resources/computebuffer.h"
52-
#include "resources/computeshader.h"
53-
54-
#include "resources/meshgroup.h"
5537

56-
#include "resources/controlscheme.h"
57-
58-
#include "resources/tileset.h"
59-
#include "resources/tilemap.h"
38+
#include "resources/translator.h"
6039

6140
#include "systems/resourcesystem.h"
6241
#include "systems/rendersystem.h"
@@ -157,37 +136,6 @@ Engine::Engine(File *file, const char *path) {
157136

158137
m_file = file;
159138

160-
// The order is critical for the import
161-
Resource::registerClassFactory(m_resourceSystem);
162-
163-
Text::registerClassFactory(m_resourceSystem);
164-
Texture::registerClassFactory(m_resourceSystem);
165-
Material::registerClassFactory(m_resourceSystem);
166-
Mesh::registerClassFactory(m_resourceSystem);
167-
MeshGroup::registerClassFactory(m_resourceSystem);
168-
Sprite::registerClassFactory(m_resourceSystem);
169-
Font::registerClassFactory(m_resourceSystem);
170-
AnimationClip::registerClassFactory(m_resourceSystem);
171-
RenderTarget::registerClassFactory(m_resourceSystem);
172-
173-
Translator::registerClassFactory(m_resourceSystem);
174-
Pose::registerSuper(m_resourceSystem);
175-
176-
Prefab::registerClassFactory(m_resourceSystem);
177-
Map::registerClassFactory(m_resourceSystem);
178-
179-
TileSet::registerClassFactory(m_resourceSystem);
180-
TileMap::registerClassFactory(m_resourceSystem);
181-
182-
ParticleEffect::registerClassFactory(m_resourceSystem);
183-
184-
AnimationStateMachine::registerSuper(m_resourceSystem);
185-
186-
Pipeline::registerClassFactory(m_resourceSystem);
187-
188-
ComputeBuffer::registerClassFactory(m_resourceSystem);
189-
ComputeShader::registerClassFactory(m_resourceSystem);
190-
191139
World::registerClassFactory(m_instance);
192140
Scene::registerClassFactory(m_instance);
193141
Actor::registerClassFactory(m_instance);
@@ -201,7 +149,6 @@ Engine::Engine(File *file, const char *path) {
201149

202150
Armature::registerClassFactory(m_instance);
203151

204-
ControlScheme::registerClassFactory(m_resourceSystem);
205152
PlayerInput::registerClassFactory(m_instance);
206153

207154
m_world = ObjectSystem::objectCreate<World>("World");

engine/src/systems/resourcesystem.cpp

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,65 @@
1010

1111
#include "resources/resource.h"
1212

13+
#include "resources/text.h"
14+
#include "resources/texture.h"
15+
#include "resources/rendertarget.h"
16+
#include "resources/material.h"
17+
#include "resources/mesh.h"
18+
#include "resources/font.h"
19+
#include "resources/animationclip.h"
20+
#include "resources/animationstatemachine.h"
21+
#include "resources/translator.h"
22+
#include "resources/particleeffect.h"
23+
#include "resources/pipeline.h"
24+
#include "resources/pose.h"
25+
#include "resources/prefab.h"
26+
#include "resources/map.h"
27+
#include "resources/computebuffer.h"
28+
#include "resources/computeshader.h"
29+
30+
#include "resources/meshgroup.h"
31+
32+
#include "resources/controlscheme.h"
33+
34+
#include "resources/tileset.h"
35+
#include "resources/tilemap.h"
36+
1337
ResourceSystem::ResourceSystem() {
1438
setName("ResourceSystem");
1539

40+
// The order is critical for the import
41+
Resource::registerClassFactory(this);
42+
43+
Text::registerClassFactory(this);
44+
Texture::registerClassFactory(this);
45+
Material::registerClassFactory(this);
46+
Mesh::registerClassFactory(this);
47+
MeshGroup::registerClassFactory(this);
48+
Sprite::registerClassFactory(this);
49+
Font::registerClassFactory(this);
50+
AnimationClip::registerClassFactory(this);
51+
RenderTarget::registerClassFactory(this);
52+
53+
Translator::registerClassFactory(this);
54+
Pose::registerSuper(this);
55+
56+
Prefab::registerClassFactory(this);
57+
Map::registerClassFactory(this);
58+
59+
TileSet::registerClassFactory(this);
60+
TileMap::registerClassFactory(this);
61+
62+
ParticleEffect::registerClassFactory(this);
63+
64+
AnimationStateMachine::registerSuper(this);
65+
66+
Pipeline::registerClassFactory(this);
67+
68+
ComputeBuffer::registerClassFactory(this);
69+
ComputeShader::registerClassFactory(this);
70+
71+
ControlScheme::registerClassFactory(this);
1672
}
1773

1874
bool ResourceSystem::init() {

modules/editor/grapheditor/editor/graph/graphview.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ class ObjectObserver : public Object {
5050

5151
void onNodePressed() {
5252
if(m_view) {
53-
GraphController *ctrl = dynamic_cast<GraphController *>(m_view->controllder());
53+
GraphController *ctrl = dynamic_cast<GraphController *>(m_view->controller());
5454
if(ctrl) {
5555
ctrl->setFocusNode(dynamic_cast<NodeWidget *>(sender()));
5656
}
@@ -339,6 +339,10 @@ void GraphView::showMenu() {
339339
}
340340
}
341341

342+
void GraphView::selectNode(GraphNode *node) {
343+
static_cast<GraphController *>(m_controller)->setSelected({node});
344+
}
345+
342346
void GraphView::onComponentSelected() {
343347
AbstractNodeGraph *g = graph();
344348

modules/editor/grapheditor/editor/graph/graphview.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ class NODEGRAPH_EXPORT GraphView : public Viewport {
3939

4040
void showMenu();
4141

42+
void selectNode(GraphNode *node);
43+
4244
signals:
4345
void itemsSelected(const QList<QObject *> &);
4446

0 commit comments

Comments
 (0)