with ada.unchecked_Deallocation; package body physics.Model is ---------- --- Forge -- package body Forge is function new_physics_Model (Id : in model_Id := null_model_Id; shape_Info : in a_Shape; Scale : in Vector_3 := (1.0, 1.0, 1.0); Mass : in Real := 0.0; Friction : in Real := 0.1; Restitution : in Real := 0.1; -- Site : in Vector_3 := Origin_3D; is_Tangible : in Boolean := True) return View is begin return new Item' (Id => Id, Scale => Scale, shape_Info => shape_Info, Shape => null, Mass => Mass, Friction => Friction, Restitution => Restitution, -- Site => Site, is_Tangible => is_Tangible); end new_physics_Model; end Forge; procedure define (Self : in out Item; Scale : in Vector_3) is begin Self.Scale := Scale; end define; procedure destroy (Self : in out Item) is begin null; end destroy; procedure free (Self : in out View) is procedure deallocate is new ada.unchecked_Deallocation (Item'Class, View); begin Self.destroy; deallocate (Self); end free; --------------- --- Attributes -- function Id (Self : in Item'Class) return model_Id is begin return Self.Id; end Id; procedure Id_is (Self : in out Item'Class; Now : in model_Id) is begin Self.Id := Now; end Id_is; procedure Scale_is (Self : in out Item'Class; Now : in Vector_3) is begin Self.Scale := Now; end Scale_is; end physics.Model;