diff --git a/engine/includes/editor/editorplatform.h b/engine/includes/editor/editorplatform.h index 383f9bec5..e325f1947 100644 --- a/engine/includes/editor/editorplatform.h +++ b/engine/includes/editor/editorplatform.h @@ -33,6 +33,7 @@ class ENGINE_EXPORT EditorPlatform : public PlatformAdaptor { void setKeys(QKeyEvent *ev, bool release); void update() override; + void reset(); protected: EditorPlatform(); diff --git a/engine/includes/editor/viewport/cameracontroller.h b/engine/includes/editor/viewport/cameracontroller.h index f29c69fd0..d6ef65fd2 100644 --- a/engine/includes/editor/viewport/cameracontroller.h +++ b/engine/includes/editor/viewport/cameracontroller.h @@ -59,8 +59,6 @@ class ENGINE_EXPORT CameraController : public QObject { Camera *camera() const { return m_activeCamera; } - bool cameraInMove() const { return m_cameraInMove; } - Axis gridAxis() const { return m_gridAxis; } void setGridAxis(Axis axis) { m_gridAxis = axis; } diff --git a/engine/includes/systems/resourcesystem.h b/engine/includes/systems/resourcesystem.h index 1a1c726d6..68bd6706f 100644 --- a/engine/includes/systems/resourcesystem.h +++ b/engine/includes/systems/resourcesystem.h @@ -43,6 +43,8 @@ class ENGINE_EXPORT ResourceSystem : public System { void deleteFromCahe(Resource *resource); + void makeClean(); + private: void update(World *) override; @@ -60,6 +62,8 @@ class ENGINE_EXPORT ResourceSystem : public System { ObjectList m_deleteList; + bool m_clean; + }; #endif // RESOURCESYSTEM_H diff --git a/engine/src/editor/assetmanager.cpp b/engine/src/editor/assetmanager.cpp index dcbef7230..2def115cc 100644 --- a/engine/src/editor/assetmanager.cpp +++ b/engine/src/editor/assetmanager.cpp @@ -144,6 +144,10 @@ void AssetManager::rescan() { #endif m_assetProvider->onDirectoryChangedForce(m_projectManager->contentPath().data(), m_force); + if(m_force) { + Engine::resourceSystem()->makeClean(); + } + emit directoryChanged(m_projectManager->contentPath().data()); reimport(); diff --git a/engine/src/editor/editorplatform.cpp b/engine/src/editor/editorplatform.cpp index 0ebeafded..ec9c3864f 100644 --- a/engine/src/editor/editorplatform.cpp +++ b/engine/src/editor/editorplatform.cpp @@ -198,6 +198,21 @@ void EditorPlatform::update() { m_mouseDelta = Vector4(); } +void EditorPlatform::reset() { + m_inputString.clear(); + + m_mouseScrollDelta = 0.0f; + m_mouseDelta = Vector4(); + + for(auto &it : m_keys) { + it = NONE; + } + + for(auto &it : m_mouseButtons) { + it = NONE; + } +} + bool EditorPlatform::key(Input::KeyCode code) const { return (m_keys.value(code) > RELEASE); } diff --git a/engine/src/editor/viewport/cameracontroller.cpp b/engine/src/editor/viewport/cameracontroller.cpp index 986a901df..f756622ca 100644 --- a/engine/src/editor/viewport/cameracontroller.cpp +++ b/engine/src/editor/viewport/cameracontroller.cpp @@ -207,7 +207,7 @@ void CameraController::move() { t->setPosition(pos - delta * m_activeCamera->focalDistance() * 0.1f); - m_cameraSpeed -= m_cameraSpeed * 3.0f * DT; + m_cameraSpeed -= m_cameraSpeed * 4.0f * DT; if(m_cameraSpeed.length() <= .01f) { m_cameraSpeed = Vector3(); } diff --git a/engine/src/editor/viewport/viewport.cpp b/engine/src/editor/viewport/viewport.cpp index ad4c84828..c422f12e4 100644 --- a/engine/src/editor/viewport/viewport.cpp +++ b/engine/src/editor/viewport/viewport.cpp @@ -215,10 +215,12 @@ void Viewport::onDraw() { m_renderSystem->update(m_world); if(isFocused()) { - if(!m_gameView) { + if(!m_gameView && m_controller) { m_controller->update(); } instance.update(); + } else { + instance.reset(); } if(m_screenInProgress && m_color) { diff --git a/engine/src/systems/resourcesystem.cpp b/engine/src/systems/resourcesystem.cpp index a4ba20a8f..e25d7db50 100644 --- a/engine/src/systems/resourcesystem.cpp +++ b/engine/src/systems/resourcesystem.cpp @@ -34,7 +34,8 @@ #include "resources/tileset.h" #include "resources/tilemap.h" -ResourceSystem::ResourceSystem() { +ResourceSystem::ResourceSystem() : + m_clean(false) { setName("ResourceSystem"); // The order is critical for the import @@ -101,7 +102,7 @@ void ResourceSystem::setResource(Resource *object, const TString &uuid) { Resource *ResourceSystem::loadResource(const TString &path) { PROFILE_FUNCTION(); - if(!path.isEmpty() && !m_indexMap.empty()) { + if(!path.isEmpty() && !m_clean) { TString uuid = path; Resource *object = resource(uuid); @@ -131,7 +132,7 @@ Resource *ResourceSystem::loadResource(const TString &path) { } Resource *ResourceSystem::loadResourceAsync(const TString &path) { - if(!path.isEmpty() && !m_indexMap.empty()) { + if(!path.isEmpty() && !m_clean) { ResourceInfo info; auto indexIt = m_indexMap.find(path); @@ -235,6 +236,10 @@ void ResourceSystem::deleteFromCahe(Resource *resource) { } } +void ResourceSystem::makeClean() { + m_clean = true; +} + void ResourceSystem::processState(Resource *resource) { if(resource) { switch(resource->state()) {