Skip to content
A physics engine made with Unity ECS
Branch: master
Clone or download
Latest commit d60468e Sep 14, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Assets - 2018.3.0b1 update (and packages update) Sep 14, 2018
Packages - 2018.3.0b1 update (and packages update) Sep 14, 2018
ProjectSettings - 2018.3.0b1 update (and packages update) Sep 14, 2018
.gitignore update readme and gitignore Sep 6, 2018
LICENSE Initial commit Sep 6, 2018
README.md Update README.md Sep 14, 2018

README.md

ECSPhysics

Alt Text

(Under Construction) A physics engine made with Unity ECS

Task management (Trello): https://trello.com/b/XcYxQFrh/ecsphysics

Forum discussion: https://forum.unity.com/threads/physics-in-pure-ecs.531716/

Overview

  • "TestScene_ECS" is the main test scene. Press play to see the physics simulation happen. Modify the parameters under the "Init" GameObject in the scene (The "TestScene_PhysX" scene is for comparing with Unity's built-in physics)
  • There are some additional settings stored in the "\PhysicsEngine\Data\Resources\DefaultPhysicsSettings" ScriptableObject. It's possible that not everything in there actually works
  • Everything in the scene starts with the "TestSceneInitializer" script, which spawns the physics objects
  • The physics simulation is all done through "PhysicsSystem". This is where the fixed update is called and all other systems are manually called from it:
    • UniformGravitySystem: Modifies rigidbody velocities to simulate gravity
    • RigidBodySystem: handles moving rigidbodies based on their velocity
    • UpdateColliderPoseSystem: handles making colliders follow their parented rigidbody (this is still incomplete, might be replaced with new Transform System later)
    • ComputeColliderAABBSystem: computes an AABB for each collider
    • BroadphaseSystem: the goal of this system is to ultimately produce a list of "CollisionPairs", which are pairs of collider entities which are potentially overlapping. It does that in three main steps:
      • ComputeAndSortMortonCodes: sort colliders in order of morton codes (also known as z-order curve)
      • BuildBVH: Creates a BVH with all collider AABBs
      • BuildCollisionPairsParallel: finds overlapping AABBs and stores them as pairs
    • ContactsGenerationSystem: This system's jobs is to take all collision pairs from the previous step and do the actual collision test on them to generate "CollisionManifold"s
    • ConstraintSolverSystem: uses the CollisionManifolds and feeds them to a constraints solver that will compute a set of forces to apply to all rigidbodies in response to the constraints
You can’t perform that action at this time.