Add initial prototype.
This commit is contained in:
141
2-low/collada/source/collada-library-visual_scenes.ads
Normal file
141
2-low/collada/source/collada-library-visual_scenes.ads
Normal file
@@ -0,0 +1,141 @@
|
||||
package collada.Library.visual_scenes
|
||||
--
|
||||
-- Models a collada 'visual_scenes' library, which contains node/joint hierachy info.
|
||||
--
|
||||
is
|
||||
------------
|
||||
-- Transform
|
||||
--
|
||||
|
||||
type transform_Kind is (Translate, Rotate, Scale, full_Transform);
|
||||
|
||||
type Transform (Kind : transform_Kind := transform_Kind'First) is
|
||||
record
|
||||
Sid : Text;
|
||||
|
||||
case Kind is
|
||||
when Translate =>
|
||||
Vector : Vector_3;
|
||||
|
||||
when Rotate =>
|
||||
Axis : Vector_3;
|
||||
Angle : math.Real;
|
||||
|
||||
when Scale =>
|
||||
Scale : Vector_3;
|
||||
|
||||
when full_Transform =>
|
||||
Matrix : Matrix_4x4;
|
||||
end case;
|
||||
end record;
|
||||
|
||||
type Transform_array is array (Positive range <>) of aliased Transform;
|
||||
|
||||
function to_Matrix (Self : in Transform) return collada.Matrix_4x4;
|
||||
|
||||
|
||||
--------
|
||||
--- Node
|
||||
--
|
||||
|
||||
type Node is tagged private;
|
||||
type Node_view is access all Node;
|
||||
type Nodes is array (Positive range <>) of Node_view;
|
||||
|
||||
function Sid (Self : in Node) return Text;
|
||||
function Id (Self : in Node) return Text;
|
||||
function Name (Self : in Node) return Text;
|
||||
|
||||
procedure Sid_is (Self : in out Node; Now : in Text);
|
||||
procedure Id_is (Self : in out Node; Now : in Text);
|
||||
procedure Name_is (Self : in out Node; Now : in Text);
|
||||
|
||||
procedure add (Self : in out Node; the_Transform : in Transform);
|
||||
function Transforms (Self : in Node) return Transform_array;
|
||||
function fetch_Transform (Self : access Node; transform_Sid : in String) return access Transform;
|
||||
|
||||
function local_Transform (Self : in Node) return Matrix_4x4;
|
||||
--
|
||||
-- Returns the result of combining all 'Transforms'.
|
||||
|
||||
function global_Transform (Self : in Node) return Matrix_4x4;
|
||||
--
|
||||
-- Returns the result of combining 'local_Transform' with each ancestors 'local_Transform'.
|
||||
|
||||
function full_Transform (Self : in Node) return Matrix_4x4;
|
||||
function Translation (Self : in Node) return Vector_3;
|
||||
function Rotate_Z (Self : in Node) return Vector_4;
|
||||
function Rotate_Y (Self : in Node) return Vector_4;
|
||||
function Rotate_X (Self : in Node) return Vector_4;
|
||||
function Scale (Self : in Node) return Vector_3;
|
||||
|
||||
procedure set_x_rotation_Angle (Self : in out Node; To : in math.Real);
|
||||
procedure set_y_rotation_Angle (Self : in out Node; To : in math.Real);
|
||||
procedure set_z_rotation_Angle (Self : in out Node; To : in math.Real);
|
||||
|
||||
procedure set_Location (Self : in out Node; To : in math.Vector_3);
|
||||
procedure set_Location_x (Self : in out Node; To : in math.Real);
|
||||
procedure set_Location_y (Self : in out Node; To : in math.Real);
|
||||
procedure set_Location_z (Self : in out Node; To : in math.Real);
|
||||
|
||||
procedure set_Transform (Self : in out Node; To : in math.Matrix_4x4);
|
||||
|
||||
function Parent (Self : in Node) return Node_view;
|
||||
procedure Parent_is (Self : in out Node; Now : Node_view);
|
||||
|
||||
function Children (Self : in Node) return Nodes;
|
||||
function Child (Self : in Node; Which : in Positive) return Node_view;
|
||||
function Child (Self : in Node; Named : in String ) return Node_view;
|
||||
|
||||
procedure add (Self : in out Node; the_Child : in Node_view);
|
||||
|
||||
Transform_not_found : exception;
|
||||
|
||||
|
||||
----------------
|
||||
--- visual_Scene
|
||||
--
|
||||
|
||||
type visual_Scene is
|
||||
record
|
||||
Id : Text;
|
||||
Name : Text;
|
||||
|
||||
root_Node : Node_view;
|
||||
end record;
|
||||
|
||||
type visual_Scene_array is array (Positive range <>) of visual_Scene;
|
||||
type visual_Scene_array_view is access visual_Scene_array;
|
||||
|
||||
|
||||
----------------
|
||||
--- Library Item
|
||||
--
|
||||
|
||||
type Item is
|
||||
record
|
||||
Contents : visual_Scene_array_view;
|
||||
skeletal_Root : Text;
|
||||
end record;
|
||||
|
||||
|
||||
|
||||
private
|
||||
|
||||
type Transform_array_view is access all Transform_array;
|
||||
type Nodes_view is access all Nodes;
|
||||
|
||||
type Node is tagged
|
||||
record
|
||||
Sid : Text;
|
||||
Id : Text;
|
||||
Name : Text;
|
||||
|
||||
Transforms : Transform_array_view;
|
||||
|
||||
Parent : Node_view;
|
||||
Children : Nodes_view;
|
||||
end record;
|
||||
|
||||
|
||||
end collada.Library.visual_scenes;
|
||||
Reference in New Issue
Block a user