gitextract_pl6iqfhu/ ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── bug_report.md │ │ └── feature_request.md │ └── workflows/ │ ├── msvcBuild.yml │ └── ubuntuBuild.yml ├── .gitignore ├── CMakeLists.txt ├── LICENSE.md ├── Physics3D/ │ ├── CMakeLists.txt │ ├── Physics3D.vcxproj │ ├── boundstree/ │ │ ├── boundsTree.cpp │ │ ├── boundsTree.h │ │ ├── boundsTreeAVX.cpp │ │ ├── boundsTreeSSE.cpp │ │ └── filters/ │ │ ├── outOfBoundsFilter.h │ │ ├── rayIntersectsBoundsFilter.h │ │ ├── visibilityFilter.cpp │ │ └── visibilityFilter.h │ ├── colissionBuffer.h │ ├── constraints/ │ │ ├── ballConstraint.cpp │ │ ├── ballConstraint.h │ │ ├── barConstraint.cpp │ │ ├── barConstraint.h │ │ ├── constraint.cpp │ │ ├── constraint.h │ │ ├── constraintGroup.cpp │ │ ├── constraintGroup.h │ │ ├── constraintImpl.h │ │ ├── hingeConstraint.cpp │ │ └── hingeConstraint.h │ ├── datastructures/ │ │ ├── alignedPtr.h │ │ ├── aligned_alloc.cpp │ │ ├── aligned_alloc.h │ │ ├── buffers.h │ │ ├── compactPtrDataPair.h │ │ ├── iteratorEnd.h │ │ ├── iteratorFactory.h │ │ ├── monotonicTree.h │ │ ├── parallelArray.h │ │ ├── sharedArray.h │ │ ├── smartPointers.h │ │ ├── uniqueArrayPtr.h │ │ ├── unmanagedArray.h │ │ └── unorderedVector.h │ ├── externalforces/ │ │ ├── directionalGravity.cpp │ │ ├── directionalGravity.h │ │ ├── externalForce.cpp │ │ ├── externalForce.h │ │ ├── magnetForce.cpp │ │ └── magnetForce.h │ ├── geometry/ │ │ ├── builtinShapeClasses.cpp │ │ ├── builtinShapeClasses.h │ │ ├── computationBuffer.cpp │ │ ├── computationBuffer.h │ │ ├── convexShapeBuilder.cpp │ │ ├── convexShapeBuilder.h │ │ ├── genericCollidable.h │ │ ├── genericIntersection.cpp │ │ ├── genericIntersection.h │ │ ├── indexedShape.cpp │ │ ├── indexedShape.h │ │ ├── intersection.cpp │ │ ├── intersection.h │ │ ├── polyhedron.cpp │ │ ├── polyhedron.h │ │ ├── scalableInertialMatrix.h │ │ ├── shape.cpp │ │ ├── shape.h │ │ ├── shapeBuilder.cpp │ │ ├── shapeBuilder.h │ │ ├── shapeClass.cpp │ │ ├── shapeClass.h │ │ ├── shapeCreation.cpp │ │ ├── shapeCreation.h │ │ ├── shapeLibrary.cpp │ │ ├── shapeLibrary.h │ │ ├── triangleMesh.cpp │ │ ├── triangleMesh.h │ │ ├── triangleMeshAVX.cpp │ │ ├── triangleMeshCommon.h │ │ ├── triangleMeshSSE.cpp │ │ └── triangleMeshSSE4.cpp │ ├── hardconstraints/ │ │ ├── constraintTemplates.h │ │ ├── controller/ │ │ │ ├── constController.h │ │ │ ├── sineWaveController.cpp │ │ │ └── sineWaveController.h │ │ ├── fixedConstraint.cpp │ │ ├── fixedConstraint.h │ │ ├── hardConstraint.cpp │ │ ├── hardConstraint.h │ │ ├── hardPhysicalConnection.cpp │ │ ├── hardPhysicalConnection.h │ │ ├── motorConstraint.cpp │ │ ├── motorConstraint.h │ │ └── sinusoidalPistonConstraint.h │ ├── inertia.cpp │ ├── inertia.h │ ├── layer.cpp │ ├── layer.h │ ├── math/ │ │ ├── boundingBox.h │ │ ├── bounds.h │ │ ├── cframe.h │ │ ├── constants.h │ │ ├── fix.h │ │ ├── globalCFrame.h │ │ ├── globalTransform.h │ │ ├── linalg/ │ │ │ ├── commonMatrices.h │ │ │ ├── eigen.cpp │ │ │ ├── eigen.h │ │ │ ├── largeMatrix.h │ │ │ ├── largeMatrixAlgorithms.h │ │ │ ├── mat.h │ │ │ ├── quat.h │ │ │ ├── trigonometry.cpp │ │ │ ├── trigonometry.h │ │ │ └── vec.h │ │ ├── mathUtil.h │ │ ├── position.h │ │ ├── predefinedTaylorExpansions.h │ │ ├── ray.h │ │ ├── rotation.h │ │ ├── taylorExpansion.h │ │ ├── transform.h │ │ └── utils.h │ ├── misc/ │ │ ├── catchable_assert.h │ │ ├── cpuid.cpp │ │ ├── cpuid.h │ │ ├── debug.cpp │ │ ├── debug.h │ │ ├── physicsProfiler.cpp │ │ ├── physicsProfiler.h │ │ ├── profiling.h │ │ ├── serialization/ │ │ │ ├── dynamicSerialize.h │ │ │ ├── serialization.cpp │ │ │ ├── serialization.h │ │ │ ├── serializeBasicTypes.cpp │ │ │ ├── serializeBasicTypes.h │ │ │ └── sharedObjectSerializer.h │ │ ├── toString.h │ │ ├── unreachable.h │ │ ├── validityHelper.cpp │ │ └── validityHelper.h │ ├── motion.h │ ├── part.cpp │ ├── part.h │ ├── physical.cpp │ ├── physical.h │ ├── relativeMotion.h │ ├── rigidBody.cpp │ ├── rigidBody.h │ ├── softlinks/ │ │ ├── alignmentLink.cpp │ │ ├── alignmentLink.h │ │ ├── elasticLink.cpp │ │ ├── elasticLink.h │ │ ├── magneticLink.cpp │ │ ├── magneticLink.h │ │ ├── softLink.cpp │ │ ├── softLink.h │ │ ├── springLink.cpp │ │ └── springLink.h │ ├── threading/ │ │ ├── physicsThread.cpp │ │ ├── physicsThread.h │ │ ├── sharedLockGuard.h │ │ ├── threadPool.h │ │ ├── upgradeableMutex.cpp │ │ └── upgradeableMutex.h │ ├── world.cpp │ ├── world.h │ ├── worldIteration.h │ ├── worldPhysics.cpp │ └── worldPhysics.h ├── Physics3D.sln ├── README.md ├── _config.yml ├── application/ │ ├── application.cpp │ ├── application.h │ ├── application.rc │ ├── application.vcxproj │ ├── builtinWorlds.cpp │ ├── builtinWorlds.h │ ├── core.cpp │ ├── core.h │ ├── debugData.natvis │ ├── ecs/ │ │ ├── components.h │ │ └── entityBuilder.h │ ├── eventHandler.cpp │ ├── eventHandler.h │ ├── extendedPart.cpp │ ├── extendedPart.h │ ├── input/ │ │ ├── playerController.cpp │ │ ├── playerController.h │ │ ├── standardInputHandler.cpp │ │ └── standardInputHandler.h │ ├── io/ │ │ ├── saveDialog.cpp │ │ ├── saveDialog.h │ │ ├── serialization.cpp │ │ └── serialization.h │ ├── layer/ │ │ ├── cameraLayer.cpp │ │ ├── cameraLayer.h │ │ ├── constraintLayer.cpp │ │ ├── constraintLayer.h │ │ ├── debugLayer.cpp │ │ ├── debugLayer.h │ │ ├── debugOverlay.cpp │ │ ├── debugOverlay.h │ │ ├── guiLayer.cpp │ │ ├── guiLayer.h │ │ ├── imguiLayer.cpp │ │ ├── imguiLayer.h │ │ ├── modelLayer.cpp │ │ ├── modelLayer.h │ │ ├── pickerLayer.cpp │ │ ├── pickerLayer.h │ │ ├── postprocessLayer.cpp │ │ ├── postprocessLayer.h │ │ ├── shadowLayer.cpp │ │ ├── shadowLayer.h │ │ ├── skyboxLayer.cpp │ │ ├── skyboxLayer.h │ │ ├── testLayer.cpp │ │ └── testLayer.h │ ├── legacy/ │ │ └── frames.h │ ├── math.natvis │ ├── picker/ │ │ ├── ray.cpp │ │ ├── ray.h │ │ ├── selection.cpp │ │ ├── selection.h │ │ └── tools/ │ │ ├── alignmentLinkTool.cpp │ │ ├── alignmentLinkTool.h │ │ ├── attachmentTool.cpp │ │ ├── attachmentTool.h │ │ ├── elasticLinkTool.cpp │ │ ├── elasticLinkTool.h │ │ ├── fixedConstraintTool.cpp │ │ ├── fixedConstraintTool.h │ │ ├── magneticLinkTool.cpp │ │ ├── magneticLinkTool.h │ │ ├── motorConstraintTool.cpp │ │ ├── motorConstraintTool.h │ │ ├── pathTool.cpp │ │ ├── pathTool.h │ │ ├── pistonConstraintTool.cpp │ │ ├── pistonConstraintTool.h │ │ ├── regionSelectionTool.cpp │ │ ├── regionSelectionTool.h │ │ ├── rotationTool.cpp │ │ ├── rotationTool.h │ │ ├── scaleTool.cpp │ │ ├── scaleTool.h │ │ ├── selectionTool.cpp │ │ ├── selectionTool.h │ │ ├── springLinkTool.cpp │ │ ├── springLinkTool.h │ │ ├── toolSpacing.h │ │ ├── translationTool.cpp │ │ └── translationTool.h │ ├── resource.h │ ├── resources.cpp │ ├── resources.h │ ├── shader/ │ │ ├── basicShader.cpp │ │ ├── basicShader.h │ │ ├── shaderBase.cpp │ │ ├── shaderBase.h │ │ ├── shaders.cpp │ │ └── shaders.h │ ├── view/ │ │ ├── camera.cpp │ │ ├── camera.h │ │ ├── debugFrame.cpp │ │ ├── debugFrame.h │ │ ├── ecsFrame.cpp │ │ ├── ecsFrame.h │ │ ├── environmentFrame.cpp │ │ ├── environmentFrame.h │ │ ├── frames.cpp │ │ ├── frames.h │ │ ├── layerFrame.cpp │ │ ├── layerFrame.h │ │ ├── propertiesFrame.cpp │ │ ├── propertiesFrame.h │ │ ├── resourceFrame.cpp │ │ ├── resourceFrame.h │ │ ├── screen.cpp │ │ ├── screen.h │ │ ├── toolbarFrame.cpp │ │ └── toolbarFrame.h │ ├── view.natvis │ ├── worldBuilder.cpp │ ├── worldBuilder.h │ ├── worlds.cpp │ └── worlds.h ├── benchmarks/ │ ├── basicWorld.cpp │ ├── benchmark.cpp │ ├── benchmark.h │ ├── benchmarks.vcxproj │ ├── complexObjectBenchmark.cpp │ ├── ecsBenchmark.cpp │ ├── getBoundsPerformance.cpp │ ├── manyCubesBenchmark.cpp │ ├── rotationBenchmark.cpp │ ├── threadResponseTime.cpp │ ├── worldBenchmark.cpp │ └── worldBenchmark.h ├── engine/ │ ├── core.cpp │ ├── core.h │ ├── ecs/ │ │ └── registry.h │ ├── engine.vcxproj │ ├── event/ │ │ ├── event.h │ │ ├── keyEvent.h │ │ ├── mouseEvent.h │ │ └── windowEvent.h │ ├── input/ │ │ ├── inputHandler.cpp │ │ ├── inputHandler.h │ │ ├── keyboard.cpp │ │ ├── keyboard.h │ │ ├── modifiers.cpp │ │ ├── modifiers.h │ │ ├── mouse.cpp │ │ └── mouse.h │ ├── io/ │ │ ├── export.cpp │ │ ├── export.h │ │ ├── import.cpp │ │ └── import.h │ ├── layer/ │ │ ├── layer.h │ │ ├── layerStack.cpp │ │ └── layerStack.h │ ├── options/ │ │ ├── keyboardOptions.cpp │ │ └── keyboardOptions.h │ ├── resource/ │ │ ├── meshResource.cpp │ │ └── meshResource.h │ └── tool/ │ ├── buttonTool.h │ ├── stateTool.h │ ├── tool.h │ ├── toolManager.cpp │ └── toolManager.h ├── examples/ │ ├── CMakeLists.txt │ ├── examples.vcxproj │ └── openglBasic.cpp ├── graphics/ │ ├── batch/ │ │ ├── batch.h │ │ ├── batchConfig.h │ │ ├── commandBatch.h │ │ ├── guiBatch.h │ │ ├── instanceBatch.h │ │ └── instanceBatchManager.h │ ├── bindable.cpp │ ├── bindable.h │ ├── buffers/ │ │ ├── bufferLayout.cpp │ │ ├── bufferLayout.h │ │ ├── frameBuffer.cpp │ │ ├── frameBuffer.h │ │ ├── indexBuffer.cpp │ │ ├── indexBuffer.h │ │ ├── renderBuffer.cpp │ │ ├── renderBuffer.h │ │ ├── vertexArray.cpp │ │ ├── vertexArray.h │ │ ├── vertexBuffer.cpp │ │ └── vertexBuffer.h │ ├── component.natvis │ ├── core.cpp │ ├── core.h │ ├── debug/ │ │ ├── guiDebug.cpp │ │ ├── guiDebug.h │ │ ├── profilerUI.cpp │ │ ├── profilerUI.h │ │ ├── threePhaseBuffer.h │ │ ├── visualDebug.cpp │ │ └── visualDebug.h │ ├── ecs/ │ │ ├── components.h │ │ └── materials.h │ ├── extendedTriangleMesh.cpp │ ├── extendedTriangleMesh.h │ ├── font.cpp │ ├── font.h │ ├── glfwUtils.cpp │ ├── glfwUtils.h │ ├── graphics.vcxproj │ ├── gui/ │ │ ├── color.h │ │ ├── gui.cpp │ │ ├── gui.h │ │ ├── guiUtils.cpp │ │ ├── guiUtils.h │ │ ├── imgui/ │ │ │ ├── imguiExtension.h │ │ │ ├── imguiStyle.cpp │ │ │ ├── imguiStyle.h │ │ │ ├── legacy_imgui_impl_glfw.cpp │ │ │ ├── legacy_imgui_impl_glfw.h │ │ │ ├── legacy_imgui_impl_opengl3.cpp │ │ │ └── legacy_imgui_impl_opengl3.h │ │ └── orderedVector.h │ ├── legacy/ │ │ ├── button.cpp │ │ ├── button.h │ │ ├── checkBox.cpp │ │ ├── checkBox.h │ │ ├── colorPicker.cpp │ │ ├── colorPicker.h │ │ ├── component.h │ │ ├── container.cpp │ │ ├── container.h │ │ ├── cshader.cpp │ │ ├── cshader.h │ │ ├── directionEditor.cpp │ │ ├── directionEditor.h │ │ ├── frame.cpp │ │ ├── frame.h │ │ ├── gshader.cpp │ │ ├── gshader.h │ │ ├── image.cpp │ │ ├── image.h │ │ ├── label.cpp │ │ ├── label.h │ │ ├── layout.cpp │ │ ├── layout.h │ │ ├── panel.cpp │ │ ├── panel.h │ │ ├── shader.cpp │ │ ├── shader.h │ │ ├── shaderLexer.cpp │ │ ├── shaderLexer.h │ │ ├── shaderParser.cpp │ │ ├── shaderParser.h │ │ ├── slider.cpp │ │ ├── slider.h │ │ ├── text.cpp │ │ └── text.h │ ├── mesh/ │ │ ├── abstractMesh.cpp │ │ ├── abstractMesh.h │ │ ├── arrayMesh.cpp │ │ ├── arrayMesh.h │ │ ├── indexedMesh.cpp │ │ ├── indexedMesh.h │ │ ├── pointMesh.cpp │ │ ├── pointMesh.h │ │ ├── primitive.h │ │ ├── vectorMesh.cpp │ │ └── vectorMesh.h │ ├── meshRegistry.cpp │ ├── meshRegistry.h │ ├── path/ │ │ ├── path.cpp │ │ ├── path.h │ │ ├── path3D.cpp │ │ └── path3D.h │ ├── renderer.cpp │ ├── renderer.h │ ├── resource/ │ │ ├── fontResource.cpp │ │ ├── fontResource.h │ │ ├── shaderResource.cpp │ │ ├── shaderResource.h │ │ ├── textureResource.cpp │ │ └── textureResource.h │ ├── shader/ │ │ ├── lexer.cpp │ │ ├── lexer.h │ │ ├── parser.cpp │ │ ├── parser.h │ │ ├── propertiesParser.cpp │ │ ├── propertiesParser.h │ │ ├── shader.cpp │ │ ├── shader.h │ │ ├── shaders.cpp │ │ └── shaders.h │ ├── texture.cpp │ └── texture.h ├── install/ │ ├── clean.bat │ ├── clean.sh │ ├── setup.bat │ ├── setup.sh │ ├── setupBuild.bat │ ├── setupBuild.sh │ ├── setupBuildUbuntu.sh │ ├── setupDependencies.bat │ ├── setupDependencies.sh │ ├── setupDependenciesUbuntu.sh │ └── setupUbuntu.sh ├── res/ │ ├── default_imgui.ini │ └── shaders/ │ ├── basic.shader │ ├── blur.shader │ ├── compute.shader │ ├── debug.shader │ ├── depth.shader │ ├── depthbuffer.shader │ ├── font.shader │ ├── gui.shader │ ├── instance.shader │ ├── lighting.shader │ ├── line.shader │ ├── mask.shader │ ├── origin.shader │ ├── point.shader │ ├── postprocess.shader │ ├── quad.shader │ ├── sky.shader │ ├── skybox.shader │ ├── test.shader │ └── vector.shader ├── tests/ │ ├── boundsTree2Tests.cpp │ ├── compare.h │ ├── constraintTests.cpp │ ├── ecsTests.cpp │ ├── estimateMotion.cpp │ ├── estimateMotion.h │ ├── estimationTests.cpp │ ├── generators.cpp │ ├── generators.h │ ├── geometryTests.cpp │ ├── guiTests.cpp │ ├── indexedShapeTests.cpp │ ├── inertiaTests.cpp │ ├── jointTests.cpp │ ├── lexerTests.cpp │ ├── mathTests.cpp │ ├── motionTests.cpp │ ├── physicalStructureTests.cpp │ ├── physicsTests.cpp │ ├── randomValues.h │ ├── rotationTests.cpp │ ├── simulation.h │ ├── testFrameworkConsistencyTests.cpp │ ├── testValues.cpp │ ├── testValues.h │ ├── tests.vcxproj │ ├── testsMain.cpp │ └── testsMain.h ├── util/ │ ├── cmdParser.h │ ├── fileUtils.cpp │ ├── fileUtils.h │ ├── iteratorUtils.h │ ├── log.cpp │ ├── log.h │ ├── parseCPUIDArgs.h │ ├── properties.cpp │ ├── properties.h │ ├── resource/ │ │ ├── resource.cpp │ │ ├── resource.h │ │ ├── resourceDescriptor.h │ │ ├── resourceLoader.cpp │ │ ├── resourceLoader.h │ │ ├── resourceManager.cpp │ │ └── resourceManager.h │ ├── stringUtil.cpp │ ├── stringUtil.h │ ├── systemVariables.cpp │ ├── systemVariables.h │ ├── terminalColor.cpp │ ├── terminalColor.h │ ├── tracker.h │ ├── typetraits.h │ ├── util.vcxproj │ ├── valueCycle.cpp │ └── valueCycle.h └── world.grammar