Add initial prototype.

This commit is contained in:
Rod Kay
2022-07-31 17:34:54 +10:00
commit 54a53b2ac0
1421 changed files with 358874 additions and 0 deletions

View File

@@ -0,0 +1,150 @@
with
physics.Object,
physics.Model,
physics.Shape,
bullet_C;
private
with
bullet_c.Pointers,
lace.Any;
package bullet_Physics.Object
--
-- Provides glue between a physics object and a Bullet3D object.
--
is
type Item is limited new physics.Object.item with private;
type View is access all Item'Class;
use Math;
---------
--- Forge
--
function new_Object (Shape : in physics.Shape.view;
Mass : in Real;
Friction : in Real;
Restitution : in Real;
at_Site : in Vector_3) return View;
-- is_Kinematic : in Boolean) return View;
overriding
procedure define (Self : access Item; Shape : in physics.Shape.view;
Mass : in Real;
Friction : in Real;
Restitution : in Real;
at_Site : in Vector_3);
procedure free (the_Object : in out physics.Object.view);
--------------
--- Attributes
--
function C (Self : in Item) return access bullet_C.Object;
overriding
function Model (Self : in Item) return physics.Model.view;
overriding
procedure Model_is (Self : in out Item; Now : in physics.Model.view);
overriding
procedure update_Dynamics (Self : in out Item);
overriding
function get_Dynamics (Self : in Item) return Matrix_4x4;
private
type Item is limited new physics.Object.item with
record
C : bullet_c.Pointers.Object_pointer;
Shape : physics.Shape.view;
Model : physics.Model.view;
Dynamics : physics.Object.safe_Dynamics;
user_Data : access lace.Any.limited_item'Class;
end record;
overriding
procedure destruct (Self : in out Item);
overriding
function Shape (Self : in Item) return physics.Shape.view;
overriding
function Scale (Self : in Item) return Vector_3;
overriding
procedure Scale_is (Self : in out Item; Now : in Vector_3);
overriding
procedure activate (Self : in out Item; forceActivation : in Boolean := False);
overriding
function is_Active (Self : in Item) return Boolean;
overriding
function Mass (Self : in Item) return Real;
overriding
function Site (Self : in Item) return Vector_3;
overriding
procedure Site_is (Self : in out Item; Now : in Vector_3);
overriding
function Spin (Self : in Item) return Matrix_3x3;
overriding
procedure Spin_is (Self : in out Item; Now : in Matrix_3x3);
overriding
function xy_Spin (Self : in Item) return Radians;
overriding
procedure xy_Spin_is (Self : in out Item; Now : in Radians);
overriding
function Transform (Self : in Item) return Matrix_4x4;
overriding
procedure Transform_is (Self : in out Item; Now : in Matrix_4x4);
overriding
function Speed (Self : in Item) return Vector_3;
overriding
procedure Speed_is (Self : in out Item; Now : in Vector_3);
overriding
function Gyre (Self : in Item) return Vector_3;
overriding
procedure Gyre_is (Self : in out Item; Now : in Vector_3);
overriding
procedure Friction_is (Self : in out Item; Now : in Real);
overriding
procedure Restitution_is (Self : in out Item; Now : in Real);
--- Forces
--
overriding
procedure apply_Torque (Self : in out Item; Torque : in Vector_3);
overriding
procedure apply_Torque_impulse (Self : in out Item; Torque : in Vector_3);
overriding
procedure apply_Force (Self : in out Item; Force : in Vector_3);
--- User data
--
overriding
procedure user_Data_is (Self : in out Item; Now : access lace.Any.limited_item'Class);
overriding
function user_Data (Self : in Item) return access lace.Any.limited_item'Class;
end bullet_Physics.Object;