Both sides previous revisionPrevious revisionNext revision | Previous revisionNext revisionBoth sides next revision |
1.0.0:physics [2023/03/16 09:00] – [Override Collider-Registration] admin | 1.0.0:physics [2023/03/16 09:13] – [Colliders] admin |
---|
| |
On collider registration you push starting transformation information and shape data to the physics world: | On collider registration you push starting transformation information and shape data to the physics world: |
* AddBoxCollider() | ^Method^ |
* AddSphereCollider() | |procedure AddBoxCollider(const AControl : TControl3D; const APrefab : TGorillaColliderSettings);|Add a box collider for a specific TControl3D instance to the physics system. At first you will need to create a TGorillaColliderSettings structure, where to define the body type (static, dynamic, kinematic)| |
* AddCapsuleCollider() | |procedure AddSphereCollider(const AControl : TControl3D; const APrefab : TGorillaColliderSettings);|Add a spherical collider for a specific TControl3D instance to the physics system. At first you will need to create a TGorillaColliderSettings structure, where to define the body type (static, dynamic, kinematic)| |
* AddParticleCollider() | |procedure AddCapsuleCollider(const AControl : TControl3D; const APrefab : TGorillaColliderSettings; const ARadius, AHeight : Single);|Add a capsule collider for a specific TControl3D instance to the physics system. At first you will need to create a TGorillaColliderSettings structure, where to define the body type (static, dynamic, kinematic)| |
* AddTerrainCollider() | |procedure AddParticleCollider(const AData : Pointer; const AType : PTypeInfo; const APrefab : TGorillaColliderSettings; const ATransformation : TMatrix3D; const ARadius : Single; out ABody : TQ3Body);|Add a particle collider for a specific pointer value to the physics system. At first you will need to create a TGorillaColliderSettings structure, where to define the body type (static, dynamic, kinematic). Also provide a starting transformation matrix and a radius of the particle. The procedure will return a TQ3Body instance as pointer which should be linked with your particle structure (AParticle). This method is automatically used by the physics particle influencer class.| |
* AddMeshCollider() | |procedure AddTerrainCollider(const AMesh : TCustomMesh; const APrefab : TGorillaColliderSettings);|Add a terrain collider for a specific TCustomMesh (terrain) instance to the physics system. At first you will need to create a TGorillaColliderSettings structure, where to define the body type (static, dynamic, kinematic). Of course the body type is flexible, but for terrains you should use the static body type.| |
| |procedure AddTerrainCollider(const ATerrain : TGorillaMesh; const APrefab : TGorillaColliderSettings);|Add a terrain collider for a specific TGorillaMesh instance to the physics system. At first you will need to create a TGorillaColliderSettings structure where to define the body type (static, dynamic, kinematic). Of course the body type is flexible, but for terrains you should use the static body type.| |
| |procedure AddMeshCollider(const AMesh : TCustomMesh; const APrefab : TGorillaColliderSettings);|Add a capsule collider for a specific TCustomMesh instance to the physics system. At first you will need to create a TGorillaColliderSettings structure where to define the body type (static, dynamic, kinematic)| |
| |procedure AddMeshCollider(const AMesh : TGorillaMesh; const APrefab : TGorillaColliderSettings);|Add a capsule collider for a specific TGorillaMesh instance to the physics system. At first you will need to create a TGorillaColliderSettings structure where to define the body type (static, dynamic, kinematic)| |
| |
From there on the physics controller will compute transformation based on its own universe. | From there on the physics controller will compute transformation based on its own universe. |
| |
Derived components of **TControl3D**, **TCustomMesh** and **TGorillaMesh** are supported for colliders. But for mesh or terrain colliders only TCustomMesh and TGorillaMesh/TGorillaModel are allowed. Other components do not have any vertex information. | Derived components of **TControl3D**, **TCustomMesh** and **TGorillaMesh** are supported for colliders. But for mesh or terrain colliders only TCustomMesh and TGorillaMesh/TGorillaModel are allowed. Other components do not have any vertex information. |
| |
| ==== ColliderSettings / ColliderPrefab ==== |
| |
| Registering a collider for a 3D object expects collider settings (TGorillaColliderSettings) or a collider prefab (TGorillaPhysicsColliderPrefab). |
| |
| The collider prefab is a collection item for design time usage. It will automatically register a collider settings (TGorillaColliderSettings) for you when the physics system getting started. |
| |
| While the collider settings (TGorillaColliderSettings) is the core structure for collider registration. |
| |
| It gives you a number of possible settings: |
| |
| ^Property ^Description^ |
| |_Type|TGorillaPhysicsBodyType (static, dynamic or kinematic)| |
| |LockRotAxisX|Locked rotation on the x axis.| |
| |LockRotAxisY|Locked rotation on the y axis.| |
| |LockRotAxisZ|Locked rotation on the z axis.| |
| |LockMoveAxisX|Locked translation on the x axis.| |
| |LockMoveAxisY|Locked translation on the y axis.| |
| |LockMoveAxisZ|Locked translation on the z axis.| |
| |LinearDamping|Linear Damping controls how much the physics body or constraint resists translation.| |
| |AngularDamping|Angular Damping controls how much they resist rotating. | |
| |Slop|Additional slop value, which will be added to the computed penetration depth on collision.| |
| |AllowSubColliders|If a object hierarchy is provided as control, it will try to add the same kind of collider for all sub-elements. Caution: This may produce unexpected behaviour especially on dynamic colliders.| |
| |AllowSleep|Allows a body to go in sleeping mode and save resources. By default TRUE.| |
| |Active|Is body enabled for physics computation.| |
| |Data|Setup colliderdata: friction, restitution, density, sensor ...| |
===== Threading ===== | ===== Threading ===== |
| |