From 530bcf2a74eba1549f9c2330a55cc2be642d467a Mon Sep 17 00:00:00 2001 From: Vulpovile Date: Wed, 5 Oct 2022 20:35:59 -0700 Subject: [PATCH] Optimizations and Physics Improvements --- Blocks3D.vcproj | 11 ++++++++++- src/source/Application.cpp | 13 +++++++------ src/source/XplicitNgine/XplicitNgine.cpp | 8 +++++--- 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/Blocks3D.vcproj b/Blocks3D.vcproj index d556d08..a6a890c 100644 --- a/Blocks3D.vcproj +++ b/Blocks3D.vcproj @@ -49,12 +49,16 @@ getSelectionService()->removeSelected(p); + if(g_dataModel->getSelectionService()->isSelected(p)) + g_dataModel->getSelectionService()->removeSelected(p); p->setParent(NULL); delete p; } @@ -568,12 +569,12 @@ void Application::onGraphics(RenderDevice* rd) { - renderDevice->setShininess(70); - renderDevice->setSpecularCoefficient(Color3(0.1F, 0.1F, 0.1F)); + //renderDevice->setShininess(70); + //renderDevice->setSpecularCoefficient(Color3(0.1F, 0.1F, 0.1F)); - //float lightAmbient[] = { 0.5F, 0.6F, 0.9F, 1.0F }; - //float lightDiffuse[] = { 0.6F, 0.4F, 0.9F, 1.0F }; - //float lightSpecular[] = { 0.8F, 0.6F, 1.0F, 1.0F }; + //float lightAmbient[] = { 0.5F, 0.5F, 0.5F, 1.0F }; + //float lightDiffuse[] = { 0.6F, 0.6F, 0.6F, 1.0F }; + //float lightSpecular[] = { 0.8F, 0.8F, 0.8F, 1.0F }; //glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, lightAmbient); //glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, lightDiffuse); diff --git a/src/source/XplicitNgine/XplicitNgine.cpp b/src/source/XplicitNgine/XplicitNgine.cpp index e1efa61..0e3a3f1 100644 --- a/src/source/XplicitNgine/XplicitNgine.cpp +++ b/src/source/XplicitNgine/XplicitNgine.cpp @@ -15,11 +15,11 @@ XplicitNgine::XplicitNgine() physSpace = dHashSpaceCreate(0); contactgroup = dJointGroupCreate(0); - dWorldSetGravity(physWorld, 0, -9.8, 0); + dWorldSetGravity(physWorld, 0, -9.8F, 0); dWorldSetAutoDisableFlag(physWorld, 1); dWorldSetAutoDisableLinearThreshold(physWorld, 0.05F); dWorldSetAutoDisableAngularThreshold(physWorld, 0.05F); - dWorldSetAutoDisableSteps(physWorld, 400); + dWorldSetAutoDisableSteps(physWorld, 40); this->name = "PhysicsService"; //dGeomID ground_geom = dCreatePlane(physSpace, 0, 1, 0, 0); @@ -52,7 +52,7 @@ void collisionCallback(void *data, dGeomID o1, dGeomID o2) // Define contact surface properties contact[i].surface.bounce = 0.5; //Elasticity - contact[i].surface.mu = 0.3F; //Friction + contact[i].surface.mu = 0.4F; //Friction contact[i].surface.slip1 = 0.0; contact[i].surface.slip2 = 0.0; contact[i].surface.soft_erp = 0.8F; @@ -75,6 +75,8 @@ void XplicitNgine::deleteBody(PartInstance* partInstance) if(partInstance->physBody != NULL) { dBodyEnable(partInstance->physBody); + if(partInstance->isAnchored()) + dGeomSetBody(partInstance->physGeom[0], partInstance->physBody); dGeomEnable(partInstance->physGeom[0]); //createBody(partInstance); //step(0.5F);