fix studio staying open on Windows machines after close

This commit is contained in:
floralrainfall 2023-07-22 02:03:07 -04:00
parent 2f34afd1ae
commit 7f58689d82
6 changed files with 80 additions and 35 deletions

View File

@ -39,4 +39,6 @@ int main(int argc, char** argv)
window.ogreWidget->render();
world->update();
}
app.exit();
}

View File

@ -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

View File

@ -0,0 +1,33 @@
#pragma once
#include <App/V8/Tree/Instance.hpp>
#include <App/V8/DataModel/PartInstance.hpp>
#include <App/V8/World/ComPlicitNgine.hpp>
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<ReflectionProperty>& 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();
};
}

View File

@ -2,10 +2,11 @@
#include <App/V8/Tree/Instance.hpp>
#include <App/V8/DataModel/PartInstance.hpp>
#include <App/V8/World/ComPlicitNgine.hpp>
#include <App/V8/World/JointInstance.hpp>
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<ReflectionProperty>& properties);
virtual void deserializeProperty(char* prop_name, pugi::xml_node prop);
public:
Weld();
~Weld();

View File

@ -0,0 +1,40 @@
#include <App/V8/World/JointInstance.hpp>
#include <App/V8/World/World.hpp>
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<ReflectionProperty>& 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)
{
}
}

View File

@ -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<ReflectionProperty>& 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)
{
}
}