From af8823c50827e084fc9e4c7653a34aff8f44e657 Mon Sep 17 00:00:00 2001 From: Vulpovile Date: Sun, 2 Oct 2022 17:56:50 -0700 Subject: [PATCH] Improved Physics --- Blocks3D-2003.sln | 35 -- Blocks3D-2003.vcproj | 649 ----------------------- src/include/XplicitNgine/XplicitNgine.h | 3 +- src/source/Application.cpp | 6 +- src/source/XplicitNgine/XplicitNgine.cpp | 11 +- 5 files changed, 16 insertions(+), 688 deletions(-) delete mode 100644 Blocks3D-2003.sln delete mode 100644 Blocks3D-2003.vcproj diff --git a/Blocks3D-2003.sln b/Blocks3D-2003.sln deleted file mode 100644 index f494330..0000000 --- a/Blocks3D-2003.sln +++ /dev/null @@ -1,35 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 8.00 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Blocks3D", "Blocks3D-2003.vcproj", "{6C4D6EEF-B1D1-456A-B850-92CAB17124BE}" - ProjectSection(ProjectDependencies) = postProject - EndProjectSection -EndProject -Global - GlobalSection(SolutionConfiguration) = preSolution - Debug = Debug - Release = Release - EndGlobalSection - GlobalSection(ProjectConfiguration) = postSolution - {6C4D6EEF-B1D1-456A-B850-92CAB17124BE}.Debug.ActiveCfg = Debug|Win32 - {6C4D6EEF-B1D1-456A-B850-92CAB17124BE}.Debug.Build.0 = Debug|Win32 - {6C4D6EEF-B1D1-456A-B850-92CAB17124BE}.Release.ActiveCfg = Release|Win32 - {6C4D6EEF-B1D1-456A-B850-92CAB17124BE}.Release.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - EndGlobalSection - GlobalSection(ExtensibilityAddIns) = postSolution - EndGlobalSection - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Win32 = Debug|Win32 - Release|Win32 = Release|Win32 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {6C4D6EEF-B1D1-456A-B850-92CAB17124BE}.Debug|Win32.ActiveCfg = Debug|Win32 - {6C4D6EEF-B1D1-456A-B850-92CAB17124BE}.Debug|Win32.Build.0 = Debug|Win32 - {6C4D6EEF-B1D1-456A-B850-92CAB17124BE}.Release|Win32.ActiveCfg = Release|Win32 - {6C4D6EEF-B1D1-456A-B850-92CAB17124BE}.Release|Win32.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection -EndGlobal diff --git a/Blocks3D-2003.vcproj b/Blocks3D-2003.vcproj deleted file mode 100644 index 75f2202..0000000 --- a/Blocks3D-2003.vcproj +++ /dev/null @@ -1,649 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/include/XplicitNgine/XplicitNgine.h b/src/include/XplicitNgine/XplicitNgine.h index 842254e..0c33a3b 100644 --- a/src/include/XplicitNgine/XplicitNgine.h +++ b/src/include/XplicitNgine/XplicitNgine.h @@ -12,7 +12,8 @@ public: dSpaceID physSpace; dJointGroupID contactgroup; - void createBody(PartInstance* partInstance, float stepSize); + void step(float stepSize); + void createBody(PartInstance* partInstance); void deleteBody(PartInstance* partInstance); void updateBody(PartInstance* partInstance, CoordinateFrame * cFrame); }; \ No newline at end of file diff --git a/src/source/Application.cpp b/src/source/Application.cpp index 0ad5702..44b5e3a 100644 --- a/src/source/Application.cpp +++ b/src/source/Application.cpp @@ -329,7 +329,7 @@ void Application::onSimulation(RealTime rdt, SimTime sdt, SimTime idt) { toDelete.push_back(partInstance); } else - _dataModel->getEngine()->createBody(partInstance, sdt*15/_dataModel->getWorkspace()->partObjects.size()); + _dataModel->getEngine()->createBody(partInstance); } while(toDelete.size() > 0) { @@ -338,6 +338,10 @@ void Application::onSimulation(RealTime rdt, SimTime sdt, SimTime idt) { p->setParent(NULL); delete p; } + for(int i = 0; i < 8; i++) + { + _dataModel->getEngine()->step(sdt*2); + } onLogic(); } diff --git a/src/source/XplicitNgine/XplicitNgine.cpp b/src/source/XplicitNgine/XplicitNgine.cpp index d167a43..b5e8fa2 100644 --- a/src/source/XplicitNgine/XplicitNgine.cpp +++ b/src/source/XplicitNgine/XplicitNgine.cpp @@ -79,10 +79,10 @@ void XplicitNgine::deleteBody(PartInstance* partInstance) } } -void XplicitNgine::createBody(PartInstance* partInstance, float stepSize) +void XplicitNgine::createBody(PartInstance* partInstance) { // calculate collisions - dSpaceCollide (physSpace,0,&collisionCallback); + //dSpaceCollide (physSpace,0,&collisionCallback); if(partInstance->physBody == NULL) { @@ -161,6 +161,13 @@ void XplicitNgine::createBody(PartInstance* partInstance, float stepSize) } } //STEP SHOULD NOT BE HERE! + //dWorldQuickStep(physWorld, stepSize); + //dJointGroupEmpty(contactgroup); +} + +void XplicitNgine::step(float stepSize) +{ + dSpaceCollide (physSpace,0,&collisionCallback); dWorldQuickStep(physWorld, stepSize); dJointGroupEmpty(contactgroup); }