From 84defabb6bfc803632e1115c418499b3812a1c72 Mon Sep 17 00:00:00 2001 From: Bashar Ahmed Date: Mon, 7 Mar 2022 22:09:31 +0530 Subject: [PATCH 1/3] minor scripting changes --- rootex/assets/scenes/pause.scene.json | 12 +------ .../components/physics/rigid_body_component.h | 4 +-- .../visual/model/renderable_component.cpp | 11 ++---- rootex/framework/system.cpp | 34 +++++++++++-------- rootex/script/interpreter.cpp | 7 +++- 5 files changed, 31 insertions(+), 37 deletions(-) diff --git a/rootex/assets/scenes/pause.scene.json b/rootex/assets/scenes/pause.scene.json index 4ff62614d..f99ffade2 100644 --- a/rootex/assets/scenes/pause.scene.json +++ b/rootex/assets/scenes/pause.scene.json @@ -28,17 +28,7 @@ ], "entity": { "components": { - "MusicComponent": { - "attenuationModel": 53251, - "audio": "rootex/assets/ball.wav", - "isAttenuated": false, - "isLooping": true, - "maxDistance": 100.0, - "playOnStart": true, - "referenceDistance": 1.0, - "rollOffFactor": 1.0, - "volume": 1.0 - }, + "TextUIComponent": { "color": { "a": 1.0, diff --git a/rootex/framework/components/physics/rigid_body_component.h b/rootex/framework/components/physics/rigid_body_component.h index d5019a335..91b66942e 100644 --- a/rootex/framework/components/physics/rigid_body_component.h +++ b/rootex/framework/components/physics/rigid_body_component.h @@ -49,13 +49,13 @@ class RigidBodyComponent : public CollisionComponent, public btMotionState void getWorldTransform(btTransform& worldTrans) const override; void setWorldTransform(const btTransform& worldTrans) override; - void updateTransform(); - void handleHit(Hit* hit) override; public: virtual ~RigidBodyComponent() = default; + void updateTransform(); + void applyForce(const Vector3& force); void applyTorque(const Vector3& torque); diff --git a/rootex/framework/components/visual/model/renderable_component.cpp b/rootex/framework/components/visual/model/renderable_component.cpp index 4290d9723..6972fd85d 100644 --- a/rootex/framework/components/visual/model/renderable_component.cpp +++ b/rootex/framework/components/visual/model/renderable_component.cpp @@ -232,12 +232,12 @@ void RenderableComponent::draw() ImGui::BeginGroup(); ImGui::Text("%s", newMaterial->getPath().filename().generic_string().c_str()); - if (ImGui::Button((ICON_ROOTEX_PENCIL_SQUARE_O "##" + newMaterial->getPath().generic_string()).c_str())) + if (ImGui::Button((ICON_ROOTEX_PENCIL_SQUARE_O "##1" + newMaterial->getPath().generic_string()).c_str())) { EventManager::GetSingleton()->call(EditorEvents::EditorOpenFile, VariantVector { newMaterial->getPath().generic_string(), (int)newMaterial->getType() }); } ImGui::SameLine(); - if (ImGui::Button((ICON_ROOTEX_FOLDER_OPEN "##" + newMaterial->getPath().generic_string()).c_str())) + if (ImGui::Button((ICON_ROOTEX_FOLDER_OPEN "##2" + newMaterial->getPath().generic_string()).c_str())) { if (Optional result = OS::SelectFile("Material(*.rmat)\0*.rmat\0", "game/assets/materials/")) { @@ -245,13 +245,6 @@ void RenderableComponent::draw() } } ImGui::SameLine(); - if (ImGui::Button((ICON_ROOTEX_FOLDER_OPEN "##" + oldMaterial->getPath().generic_string()).c_str())) - { - if (Optional result = OS::SelectFile("Material(*.rmat)\0*.rmat\0", "game/assets/materials/")) - { - setMaterialOverride(oldMaterial, ResourceLoader::CreateMaterialResourceFile(*result)); - } - } ImGui::EndGroup(); ImGui::NextColumn(); ImGui::Separator(); diff --git a/rootex/framework/system.cpp b/rootex/framework/system.cpp index a19ecdcb3..9fc55ac43 100644 --- a/rootex/framework/system.cpp +++ b/rootex/framework/system.cpp @@ -55,23 +55,29 @@ void System::setActive(bool enabled) void System::pause() { - for (auto& systemType : GetSystems()) - { - for (auto& system : systemType) - { - system->m_IsSystemPaused = true; - } - } + EventManager::GetSingleton()->defer([]() + { + for (auto& systemType : GetSystems()) + { + for (auto& system : systemType) + { + system->m_IsSystemPaused = true; + } + } + }); } void System::unPause() { - for (auto& systemType : GetSystems()) - { - for (auto& system : systemType) - { - system->m_IsSystemPaused = false; - } - } + EventManager::GetSingleton()->defer([]() + { + for (auto& systemType : GetSystems()) + { + for (auto& system : systemType) + { + system->m_IsSystemPaused = false; + } + } + }); } void System::draw() diff --git a/rootex/script/interpreter.cpp b/rootex/script/interpreter.cpp index 64fc7c178..323c63df8 100644 --- a/rootex/script/interpreter.cpp +++ b/rootex/script/interpreter.cpp @@ -260,6 +260,7 @@ void LuaInterpreter::registerTypes() resourceLoader["CreateAnimatedModel"] = &ResourceLoader::CreateAnimatedModelResourceFile; resourceLoader["CreateCollisionModel"] = &ResourceLoader::CreateAnimatedModelResourceFile; resourceLoader["CreateParticleEffectResourceFile"] = &ResourceLoader::CreateParticleEffectResourceFile; + resourceLoader["CreateMaterialResourceFile"] = &ResourceLoader::CreateMaterialResourceFile; } { sol::usertype resourceFile = rootex.new_usertype("ResourceFile"); @@ -491,7 +492,7 @@ void LuaInterpreter::registerTypes() transformComponent["getPosition"] = &TransformComponent::getPosition; transformComponent["setPosition"] = &TransformComponent::setPosition; - + transformComponent["getScale"] = &TransformComponent::getScale; transformComponent["setScale"] = &TransformComponent::setScale; @@ -521,6 +522,8 @@ void LuaInterpreter::registerTypes() "ModelComponent", sol::base_classes, sol::bases()); modelComponent["getModelResourceFile"] = &ModelComponent::getModelResourceFile; + modelComponent["setMaterialOverride"] = &RenderableComponent::setMaterialOverride; + modelComponent["getMaterialOverride"] = &RenderableComponent::getMaterialOverride; } { sol::usertype animatedModelComponent = rootex.new_usertype( @@ -620,6 +623,8 @@ void LuaInterpreter::registerTypes() rigidBodyComponent["applyTorque"] = &RigidBodyComponent::applyTorque; rigidBodyComponent["setAxisLock"] = &RigidBodyComponent::setAxisLock; rigidBodyComponent["translate"] = &RigidBodyComponent::translate; + + rigidBodyComponent["update"] = &RigidBodyComponent::updateTransform; } { sol::usertype bcc = rootex.new_usertype( From 61ce851252efde042775aafd8d53da128aac4d6b Mon Sep 17 00:00:00 2001 From: Bashar Ahmed Date: Mon, 21 Mar 2022 20:14:25 +0530 Subject: [PATCH 2/3] formatted --- rootex/script/interpreter.cpp | 125 ++++++++++++++++++++++------------ 1 file changed, 83 insertions(+), 42 deletions(-) diff --git a/rootex/script/interpreter.cpp b/rootex/script/interpreter.cpp index 323c63df8..4e94420ab 100644 --- a/rootex/script/interpreter.cpp +++ b/rootex/script/interpreter.cpp @@ -123,14 +123,21 @@ void LuaInterpreter::registerTypes() sol::usertype vector2 = rootex.new_usertype( "Vector2", sol::constructors(), - sol::meta_function::addition, [](Vector2& l, Vector2& r) { return l + r; }, - sol::meta_function::subtraction, [](Vector2& l, Vector2& r) { return l - r; }, - sol::meta_function::multiplication, [](Vector2& l, Vector2& r) { return l * r; }, - sol::meta_function::multiplication, [](Vector2& l, float r) { return l * r; }, - sol::meta_function::division, [](Vector2& l, float r) { return l / r; }, - sol::meta_function::division, [](Vector2& l, Vector2& r) { return l / r; }); + sol::meta_function::addition, [](Vector2& l, Vector2& r) + { return l + r; }, + sol::meta_function::subtraction, [](Vector2& l, Vector2& r) + { return l - r; }, + sol::meta_function::multiplication, [](Vector2& l, Vector2& r) + { return l * r; }, + sol::meta_function::multiplication, [](Vector2& l, float r) + { return l * r; }, + sol::meta_function::division, [](Vector2& l, float r) + { return l / r; }, + sol::meta_function::division, [](Vector2& l, Vector2& r) + { return l / r; }); vector2["dot"] = &Vector2::Dot; - vector2["cross"] = [](const Vector2& l, const Vector2& r) { return l.Cross(r); }; + vector2["cross"] = [](const Vector2& l, const Vector2& r) + { return l.Cross(r); }; vector2["x"] = &Vector2::x; vector2["y"] = &Vector2::y; } @@ -138,14 +145,21 @@ void LuaInterpreter::registerTypes() sol::usertype vector3 = rootex.new_usertype( "Vector3", sol::constructors(), - sol::meta_function::addition, [](Vector3& l, Vector3& r) { return l + r; }, - sol::meta_function::subtraction, [](Vector3& l, Vector3& r) { return l - r; }, - sol::meta_function::multiplication, [](float l, Vector3& r) { return l * r; }, - sol::meta_function::multiplication, [](Vector3& l, float r) { return l * r; }, - sol::meta_function::division, [](Vector3& l, float r) { return l / r; }, - sol::meta_function::division, [](Vector3& l, Vector3& r) { return l / r; }); + sol::meta_function::addition, [](Vector3& l, Vector3& r) + { return l + r; }, + sol::meta_function::subtraction, [](Vector3& l, Vector3& r) + { return l - r; }, + sol::meta_function::multiplication, [](float l, Vector3& r) + { return l * r; }, + sol::meta_function::multiplication, [](Vector3& l, float r) + { return l * r; }, + sol::meta_function::division, [](Vector3& l, float r) + { return l / r; }, + sol::meta_function::division, [](Vector3& l, Vector3& r) + { return l / r; }); vector3["dot"] = &Vector3::Dot; - vector3["cross"] = [](const Vector3& l, const Vector3& r) { return l.Cross(r); }; + vector3["cross"] = [](const Vector3& l, const Vector3& r) + { return l.Cross(r); }; vector3["x"] = &Vector3::x; vector3["y"] = &Vector3::y; vector3["z"] = &Vector3::z; @@ -153,14 +167,21 @@ void LuaInterpreter::registerTypes() { sol::usertype vector4 = rootex.new_usertype( "Vector4", sol::constructors(), - sol::meta_function::addition, [](Vector4& l, Vector4& r) { return l + r; }, - sol::meta_function::subtraction, [](Vector4& l, Vector4& r) { return l - r; }, - sol::meta_function::multiplication, [](Vector4& l, Vector4& r) { return l * r; }, - sol::meta_function::multiplication, [](Vector4& l, float r) { return l * r; }, - sol::meta_function::division, [](Vector4& l, Vector4& r) { return l / r; }, - sol::meta_function::division, [](Vector4& l, float r) { return l / r; }); + sol::meta_function::addition, [](Vector4& l, Vector4& r) + { return l + r; }, + sol::meta_function::subtraction, [](Vector4& l, Vector4& r) + { return l - r; }, + sol::meta_function::multiplication, [](Vector4& l, Vector4& r) + { return l * r; }, + sol::meta_function::multiplication, [](Vector4& l, float r) + { return l * r; }, + sol::meta_function::division, [](Vector4& l, Vector4& r) + { return l / r; }, + sol::meta_function::division, [](Vector4& l, float r) + { return l / r; }); vector4["dot"] = &Vector4::Dot; - vector4["cross"] = [](const Vector4& l, const Vector4& r) { return l.Cross(l, r); }; + vector4["cross"] = [](const Vector4& l, const Vector4& r) + { return l.Cross(l, r); }; vector4["x"] = &Vector4::x; vector4["y"] = &Vector4::y; vector4["z"] = &Vector4::z; @@ -169,9 +190,12 @@ void LuaInterpreter::registerTypes() { sol::usertype color = rootex.new_usertype( "Color", sol::constructors(), - sol::meta_function::addition, [](Color& l, Color& r) { return l + r; }, - sol::meta_function::subtraction, [](Color& l, Color& r) { return l - r; }, - sol::meta_function::multiplication, [](Color& l, Color& r) { return l * r; }); + sol::meta_function::addition, [](Color& l, Color& r) + { return l + r; }, + sol::meta_function::subtraction, [](Color& l, Color& r) + { return l - r; }, + sol::meta_function::multiplication, [](Color& l, Color& r) + { return l * r; }); color["x"] = &Color::x; color["y"] = &Color::y; color["z"] = &Color::z; @@ -192,9 +216,12 @@ void LuaInterpreter::registerTypes() sol::usertype matrix = rootex.new_usertype( "Matrix", sol::constructors(), - sol::meta_function::addition, [](Matrix& l, Matrix& r) { return l + r; }, - sol::meta_function::subtraction, [](Matrix& l, Matrix& r) { return l - r; }, - sol::meta_function::multiplication, [](Matrix& l, Matrix& r) { return l * r; }); + sol::meta_function::addition, [](Matrix& l, Matrix& r) + { return l + r; }, + sol::meta_function::subtraction, [](Matrix& l, Matrix& r) + { return l - r; }, + sol::meta_function::multiplication, [](Matrix& l, Matrix& r) + { return l * r; }); matrix["Identity"] = sol::var(Matrix::Identity); matrix["_11"] = &Matrix::_11; matrix["_12"] = &Matrix::_12; @@ -219,22 +246,34 @@ void LuaInterpreter::registerTypes() event["getData"] = &Event::getData; } { - rootex["CallEvent"] = [](const Event& event) { EventManager::GetSingleton()->call(event); }; - rootex["Call"] = [](const Event::Type& type, const Variant& data) { EventManager::GetSingleton()->call(type, data); }; - rootex["DeferredCallEvent"] = [](const Ref& event) { EventManager::GetSingleton()->deferredCall(event); }; - rootex["ReturnCallEvent"] = [](const Event& event) { return EventManager::GetSingleton()->returnCall(event); }; - rootex["Bind"] = [this](const Event::Type& event, sol::function function) { m_Binder.bind(event, function); }; - rootex["Unbind"] = [this](const Event::Type& event) { m_Binder.unbind(event); }; + rootex["CallEvent"] = [](const Event& event) + { EventManager::GetSingleton()->call(event); }; + rootex["Call"] = [](const Event::Type& type, const Variant& data) + { EventManager::GetSingleton()->call(type, data); }; + rootex["DeferredCallEvent"] = [](const Ref& event) + { EventManager::GetSingleton()->deferredCall(event); }; + rootex["ReturnCallEvent"] = [](const Event& event) + { return EventManager::GetSingleton()->returnCall(event); }; + rootex["Bind"] = [this](const Event::Type& event, sol::function function) + { m_Binder.bind(event, function); }; + rootex["Unbind"] = [this](const Event::Type& event) + { m_Binder.unbind(event); }; } { sol::usertype> atomicInt = rootex.new_usertype>("AtomicInt", sol::constructors(), Atomic(int)>()); - atomicInt["load"] = [](Atomic* a) { return a->load(); }; + atomicInt["load"] = [](Atomic* a) + { return a->load(); }; - rootex["LoadScene"] = [](const String& sceneFile, const sol::table& arguments) { SceneLoader::GetSingleton()->loadScene(sceneFile, arguments.as>()); }; - rootex["PreloadScene"] = [](const String& sceneFile, Atomic& progress) { return SceneLoader::GetSingleton()->preloadScene(sceneFile, progress); }; - rootex["LoadPreloadedScene"] = [](const String& sceneFile, const sol::nested>& arguments) { SceneLoader::GetSingleton()->loadPreloadedScene(sceneFile, arguments.value()); }; - rootex["GetSceneArguments"] = []() { return SceneLoader::GetSingleton()->getArguments(); }; - rootex["GetCurrentScene"] = []() { return SceneLoader::GetSingleton()->getCurrentScene(); }; + rootex["LoadScene"] = [](const String& sceneFile, const sol::table& arguments) + { SceneLoader::GetSingleton()->loadScene(sceneFile, arguments.as>()); }; + rootex["PreloadScene"] = [](const String& sceneFile, Atomic& progress) + { return SceneLoader::GetSingleton()->preloadScene(sceneFile, progress); }; + rootex["LoadPreloadedScene"] = [](const String& sceneFile, const sol::nested>& arguments) + { SceneLoader::GetSingleton()->loadPreloadedScene(sceneFile, arguments.value()); }; + rootex["GetSceneArguments"] = []() + { return SceneLoader::GetSingleton()->getArguments(); }; + rootex["GetCurrentScene"] = []() + { return SceneLoader::GetSingleton()->getCurrentScene(); }; } { sol::usertype inputManager = rootex.new_usertype("Input"); @@ -265,7 +304,8 @@ void LuaInterpreter::registerTypes() { sol::usertype resourceFile = rootex.new_usertype("ResourceFile"); resourceFile["isDirty"] = &ResourceFile::isDirty; - resourceFile["getPath"] = [](ResourceFile& f) { return f.getPath().string(); }; + resourceFile["getPath"] = [](ResourceFile& f) + { return f.getPath().string(); }; resourceFile["getType"] = &ResourceFile::getType; } { @@ -492,7 +532,7 @@ void LuaInterpreter::registerTypes() transformComponent["getPosition"] = &TransformComponent::getPosition; transformComponent["setPosition"] = &TransformComponent::setPosition; - + transformComponent["getScale"] = &TransformComponent::getScale; transformComponent["setScale"] = &TransformComponent::setScale; @@ -570,7 +610,8 @@ void LuaInterpreter::registerTypes() "UIComponent", sol::base_classes, sol::bases(), "document", sol::property(&UIComponent::getDocument)); - ui["getDocumentID"] = [](UIComponent* ui) { return ui->getDocument()->GetId(); }; + ui["getDocumentID"] = [](UIComponent* ui) + { return ui->getDocument()->GetId(); }; } { sol::usertype audioComponent = rootex.new_usertype( From 4401698f3ceb7bec0c221124af2c221a6c3737c6 Mon Sep 17 00:00:00 2001 From: Bashar Ahmed Date: Tue, 23 Aug 2022 14:51:46 +0530 Subject: [PATCH 3/3] fix clang --- rootex/framework/system.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/rootex/framework/system.cpp b/rootex/framework/system.cpp index 9fc55ac43..0a9d2ba0a 100644 --- a/rootex/framework/system.cpp +++ b/rootex/framework/system.cpp @@ -63,8 +63,7 @@ void System::pause() { system->m_IsSystemPaused = true; } - } - }); + } }); } void System::unPause() { @@ -76,8 +75,7 @@ void System::unPause() { system->m_IsSystemPaused = false; } - } - }); + } }); } void System::draw()