From 7f58689d828e1b8b2c61d32e84304e916a4a447e Mon Sep 17 00:00:00 2001 From: floralrainfall Date: Sat, 22 Jul 2023 02:03:07 -0400 Subject: [PATCH] fix studio staying open on Windows machines after close --- Projects/Client/Studio/Source/main.cpp | 2 + Projects/Engine/CMakeLists.txt | 2 + .../Header/App/V8/World/JointInstance.hpp | 33 +++++++++++++++ Projects/Engine/Header/App/V8/World/Weld.hpp | 6 +-- .../Source/App/V8/World/JointInstance.cpp | 40 +++++++++++++++++++ Projects/Engine/Source/App/V8/World/Weld.cpp | 32 +-------------- 6 files changed, 80 insertions(+), 35 deletions(-) create mode 100644 Projects/Engine/Header/App/V8/World/JointInstance.hpp create mode 100644 Projects/Engine/Source/App/V8/World/JointInstance.cpp diff --git a/Projects/Client/Studio/Source/main.cpp b/Projects/Client/Studio/Source/main.cpp index 662a7e5..98f7856 100644 --- a/Projects/Client/Studio/Source/main.cpp +++ b/Projects/Client/Studio/Source/main.cpp @@ -39,4 +39,6 @@ int main(int argc, char** argv) window.ogreWidget->render(); world->update(); } + + app.exit(); } \ No newline at end of file diff --git a/Projects/Engine/CMakeLists.txt b/Projects/Engine/CMakeLists.txt index 70240c2..36b4270 100644 --- a/Projects/Engine/CMakeLists.txt +++ b/Projects/Engine/CMakeLists.txt @@ -29,6 +29,7 @@ add_library(Engine STATIC Header/App/V8/World/World.hpp Header/App/V8/World/Weld.hpp Header/App/V8/World/JointsService.hpp + Header/App/V8/World/JointInstance.hpp Header/App/V8/World/ComPlicitNgine.hpp Header/App/CoordinateFrame.hpp Header/App/BrickColor.hpp @@ -69,6 +70,7 @@ add_library(Engine STATIC Source/App/V8/World/World.cpp Source/App/V8/World/Weld.cpp Source/App/V8/World/JointsService.cpp + Source/App/V8/World/JointInstance.cpp Source/App/V8/World/ComPlicitNgine.cpp Source/Network/GUID.cpp Source/Network/Player.cpp diff --git a/Projects/Engine/Header/App/V8/World/JointInstance.hpp b/Projects/Engine/Header/App/V8/World/JointInstance.hpp new file mode 100644 index 0000000..599bb92 --- /dev/null +++ b/Projects/Engine/Header/App/V8/World/JointInstance.hpp @@ -0,0 +1,33 @@ +#pragma once +#include +#include +#include + +namespace RNR +{ + class JointInstance : public Instance + { + PartInstance *m_aInstance, *m_bInstance; + btRigidBody *m_aBody, *m_bBody; + CoordinateFrame m_c0, m_c1; + virtual void addProperties(std::vector& properties); + virtual void deserializeProperty(char* prop_name, pugi::xml_node prop); + public: + JointInstance(); + + void setBodies(PartInstance* a, PartInstance* b); + + PartInstance* getABody() { return m_aInstance; } + void setABody(PartInstance* a) { m_aInstance = a; } + PartInstance* getBBody() { return m_bInstance; } + void setBBody(PartInstance* b) { m_bInstance = b; } + + CoordinateFrame& getC0() { return m_c0; } + void setC0(CoordinateFrame c) { m_c0 = c; } + CoordinateFrame& getC1() { return m_c1; } + void setC1(CoordinateFrame c) { m_c1 = c; } + + + void link(); + }; +} \ No newline at end of file diff --git a/Projects/Engine/Header/App/V8/World/Weld.hpp b/Projects/Engine/Header/App/V8/World/Weld.hpp index d287e93..5b304bc 100644 --- a/Projects/Engine/Header/App/V8/World/Weld.hpp +++ b/Projects/Engine/Header/App/V8/World/Weld.hpp @@ -2,10 +2,11 @@ #include #include #include +#include namespace RNR { - class Weld : public Instance + class Weld : public JointInstance { btRigidBody* m_aBody; PartInstance* m_aInstance; @@ -14,9 +15,6 @@ namespace RNR PartInstance* m_bInstance; btFixedConstraint* m_constraint; - - virtual void addProperties(std::vector& properties); - virtual void deserializeProperty(char* prop_name, pugi::xml_node prop); public: Weld(); ~Weld(); diff --git a/Projects/Engine/Source/App/V8/World/JointInstance.cpp b/Projects/Engine/Source/App/V8/World/JointInstance.cpp new file mode 100644 index 0000000..c28fbde --- /dev/null +++ b/Projects/Engine/Source/App/V8/World/JointInstance.cpp @@ -0,0 +1,40 @@ +#include +#include + +namespace RNR +{ + JointInstance::JointInstance() + { + setName("Joint"); + } + + void JointInstance::setBodies(PartInstance* a, PartInstance* b) + { + m_aInstance = a; + m_bInstance = b; + + m_aBody = world->getComPlicitNgine()->getBody(a); + m_bBody = world->getComPlicitNgine()->getBody(b); + } + + void JointInstance::addProperties(std::vector& properties) + { + ReflectionProperty _properties[] = { + { this, std::string("Part0"), std::string(""), + ACCESS_NONE, OPERATION_READWRITE, PROPERTY_INSTANCE, + REFLECTION_GETTER(JointInstance* instance = (JointInstance*)object; return instance->m_aInstance; ), + REFLECTION_SETTER(JointInstance* instance = (JointInstance*)object; ) }, + { this, std::string("Part1"), std::string(""), + ACCESS_NONE, OPERATION_READWRITE, PROPERTY_INSTANCE, + REFLECTION_GETTER(JointInstance* instance = (JointInstance*)object; return instance->m_bInstance; ), + REFLECTION_SETTER(JointInstance* instance = (JointInstance*)object; ) }, + }; + + properties.insert(properties.end(), _properties, _properties+(sizeof(_properties)/sizeof(ReflectionProperty))); + } + + void JointInstance::deserializeProperty(char* prop_name, pugi::xml_node prop) + { + + } +} \ No newline at end of file diff --git a/Projects/Engine/Source/App/V8/World/Weld.cpp b/Projects/Engine/Source/App/V8/World/Weld.cpp index 94df347..7ff2f14 100644 --- a/Projects/Engine/Source/App/V8/World/Weld.cpp +++ b/Projects/Engine/Source/App/V8/World/Weld.cpp @@ -3,7 +3,7 @@ namespace RNR { - Weld::Weld() + Weld::Weld() : JointInstance() { setName("Weld"); } @@ -13,15 +13,6 @@ namespace RNR destroy(); } - void Weld::weld(PartInstance* a, PartInstance* b) - { - m_aInstance = a; - m_bInstance = b; - - m_aBody = world->getComPlicitNgine()->getBody(a); - m_bBody = world->getComPlicitNgine()->getBody(b); - } - bool Weld::create() { if(!m_aBody || !m_bBody) @@ -51,25 +42,4 @@ namespace RNR return false; } - - void Weld::addProperties(std::vector& properties) - { - ReflectionProperty _properties[] = { - { this, std::string("Part0"), std::string(""), - ACCESS_NONE, OPERATION_READWRITE, PROPERTY_INSTANCE, - REFLECTION_GETTER(Weld* instance = (Weld*)object; return instance->m_aInstance; ), - REFLECTION_SETTER(Weld* instance = (Weld*)object; ) }, - { this, std::string("Part1"), std::string(""), - ACCESS_NONE, OPERATION_READWRITE, PROPERTY_INSTANCE, - REFLECTION_GETTER(Weld* instance = (Weld*)object; return instance->m_bInstance; ), - REFLECTION_SETTER(Weld* instance = (Weld*)object; ) }, - }; - - properties.insert(properties.end(), _properties, _properties+(sizeof(_properties)/sizeof(ReflectionProperty))); - } - - void Weld::deserializeProperty(char* prop_name, pugi::xml_node prop) - { - - } } \ No newline at end of file