void Start() { EntityManager entityManager = World.Active.GetOrCreateManager <EntityManager>(); // Create archetypes KineticRigidBodyArchetype = PhysicsEntityFactory.CreateKineticRigidbodyArchetype(entityManager); KinematicRigidBodyArchetype = PhysicsEntityFactory.CreateKinematicRigidbodyArchetype(entityManager); SphereColliderArchetype = PhysicsEntityFactory.CreateSphereColliderArchetype(entityManager); //BoxColliderArchetype = PhysicsEntityFactory.CreateBoxColliderArchetype(entityManager); SimpleRendererArchetype = entityManager.CreateArchetype( typeof(Unity.Transforms.Position), typeof(Unity.Transforms.Rotation), typeof(MeshInstanceRenderer), typeof(PhysicsEngine.FollowRigidBody) ); // Spawn kinetic objects random for (int i = 0; i < SpawnCount; i++) { float3 startPos = new float3( transform.position.x + UnityEngine.Random.Range(-SpawnDistance, SpawnDistance), transform.position.y + UnityEngine.Random.Range(-SpawnDistance, SpawnDistance), transform.position.z + UnityEngine.Random.Range(-SpawnDistance, SpawnDistance) ); float3 startVel = new float3( startPos.x >= 0f ? -SpawnVelocityRange : SpawnVelocityRange, 0, 0 ); if (i % 2 == 0) { //SpawnBoxSmall(startPos, startVel); SpawnSphereSmall(startPos, startVel); } else { SpawnSphereSmall(startPos, startVel); } } // spawn ground spheres if (SpawnGround) { foreach (Transform t in GroundSpheresRoot) { SpawnSphereBig(t.position, new float3(0, 0, 0)); } } }