import evas_canvas3d_types; class @beta Evas.Canvas3D.Node extends Evas.Canvas3D.Object { [[Evas 3D canvas node class]] data: Evas_Canvas3D_Node_Data; methods { @property node_type { [[Get the type of the given node. See also @Evas.Canvas3D.Node.member_add.]] set { [[Type can only be set before finalize.]] } get { [[If the object is not node object, returns $unknown.]] } values { type: Evas.Canvas3D.Node_Type(Evas.Canvas3D.Node_Type.unknown); [[Node type]] } } member_add { [[Add a member node to the given node. Nodes can be constructed into N-ary tree structure like other ordinary scene graphs. A node inherit transforms from its parent. See also @Evas.Canvas3D.Node.parent_get.]] params { @in member: Evas.Canvas3D.Node; [[Node object to be added.]] } } member_del { [[Delete a member node from the given node. See also @Evas.Canvas3D.Node.member_add.]] params { @in member: Evas.Canvas3D.Node; [[Member node to be deleted from the given node.]] } } parent_get @const { [[Get the parent node of the given node. See also @Evas.Canvas3D.Node.member_add.]] return: Evas.Canvas3D.Node; [[The parent node of the given node.]] } member_list_get @const { [[Get the list of member nodes of the given node. See also @Evas.Canvas3D.Node.member_add.]] return: const(list); [[The list of member nodes if any or $null if there are none.]] } scene_root_get { [[Get hash table of scenes using this node as root.]] /* FIXME: void_ptr is actually uintptr and that is also wrong */ return: hash; [[ scenes using this node as root. FIXME: Actually a scene, not object.]] } position_set { [[Set the position of the given node. According to the inheritance flag, (x, y, z) can be a world space position or parent space position. Default position is (0.0, 0.0, 0.0). See also @Evas.Canvas3D.Node.position_inherit.set.]] params { @in x: Evas.Real; [[X coordinate of the position.]] @in y: Evas.Real; [[Y coordinate of the position.]] @in z: Evas.Real; [[Z coordinate of the position.]] } } orientation_set { [[Set the orientation of the given node using quaternion. According the the inheritance flag, (w, x, y, z) can be a world space orientation or parent space orientation. Default orientation is (1.0, 0.0, 0.0, 0.0) (identity quaternion). See also @Evas.Canvas3D.Node.orientation_inherit.set.]] params { @in x: Evas.Real; [[X term of the orientation quaternion (w, x, y, z.]] @in y: Evas.Real; [[Y term of the orientation quaternion (w, x, y, z.]] @in z: Evas.Real; [[Z term of the orientation quaternion (w, x, y, z.]] @in w: Evas.Real; [[W term of the orientation quaternion (w, x, y, z.]] } } orientation_angle_axis_set { [[Set the orientation of the given node using axis-angle. See also @Evas.Canvas3D.Node.orientation_set.]] params { @in angle: Evas.Real; [[Rotation angle.]] @in x: Evas.Real; [[X term of the rotation axis.]] @in y: Evas.Real; [[Y term of the rotation axis.]] @in z: Evas.Real; [[Z term of the rotation axis.]] } } scale_set { [[Set the scale of the given node. According to the inheritance flag, (x, y, z) can be a world space scale or parent space scale. Be careful when using non-uniform scale factor with inheritance, each transform attributes are not affected by other attributes. Default scale is (1.0, 1.0, 1.0). See also @Evas.Canvas3D.Node.scale_inherit.set.]] params { @in x: Evas.Real; [[Scale factor along X-axis.]] @in y: Evas.Real; [[Scale factor along Y-axis.]] @in z: Evas.Real; [[Scale factor along Z-axis.]] } } position_get @const { [[Get the position of the given node. See also @Evas.Canvas3D.Node.position_set.]] params { @in space: Evas.Canvas3D.Space; [[The given node.]] @out x: Evas.Real; [[Pointer to receive X coordinate of the position.]] @out y: Evas.Real; [[Pointer to receive Y coordinate of the position.]] @out z: Evas.Real; [[Pointer to receive Z coordinate of the position.]] } } orientation_get @const { [[Get the orientation of the given node as quaternion. See also @Evas.Canvas3D.Node.orientation_set.]] params { @in space: Evas.Canvas3D.Space; [[The given node.]] @out x: Evas.Real; [[Pointer to receive X term of the orientation quaternion.]] @out y: Evas.Real; [[Pointer to receive Y term of the orientation quaternion.]] @out z: Evas.Real; [[Pointer to receive Z term of the orientation quaternion.]] @out w: Evas.Real; [[Pointer to receive W term of the orientation quaternion.]] } } scale_get @const { [[Get the scale of the given node. See also @Evas.Canvas3D.Node.scale_get.]] params { @in space: Evas.Canvas3D.Space; [[The given node.]] @out x: Evas.Real; [[Pointer to receive Scale factor along X-axis.]] @out y: Evas.Real; [[Pointer to receive Scale factor along X-axis.]] @out z: Evas.Real; [[Pointer to receive Scale factor along X-axis.]] } } look_at_set { [[Rotate the given node to look at desired position. This function rotate the given node so that its forward vector (negative Z-axis) points to the desired position and the up vector coincide with the given up vector. See also @Evas.Canvas3D.Node.orientation_set.]] params { @in target_space: Evas.Canvas3D.Space; [[Space where the target position belongs to.]] @in x: Evas.Real; [[X coordinate of the target position.]] @in y: Evas.Real; [[Y coordinate of the target position.]] @in z: Evas.Real; [[Z coordinate of the target position.]] @in up_space: Evas.Canvas3D.Space; [[Space where the up vector belongs to.]] @in ux: Evas.Real; [[X term of the up vector.]] @in uy: Evas.Real; [[Y term of the up vector.]] @in uz: Evas.Real; [[Z term of the up vector.]] } } mesh_add { [[Add a mesh to the given node. If the node is not of type EVAS_CANVAS3D_NODE_TYPE_MESH, error message will be generated and nothing happens. See also @Evas.Canvas3D.Node.member_add.]] params { @in mesh: Evas.Canvas3D.Mesh; [[The mesh to be added.]] } } mesh_del { [[Delete a mesh from the given node. If the node is not of type EVAS_CANVAS3D_NODE_TYPE_MESH or the given mesh does not belong to the given node, error message will be gnerated and nothing happens. See also @Evas.Canvas3D.Node.mesh_add.]] params { @in mesh: Evas.Canvas3D.Mesh; [[The mesh to be deleted.]] } } mesh_list_get @const { [[Get the list of meshes of the given node. If the node is not of type EVAS_CANVAS3D_NODE_TYPE_MESH, error message will be generated and $null will be returned. If there're no meshes in the given node, $null will be returned. See also @Evas.Canvas3D.Node.mesh_add.]] return: const(list); [[The list of meshes if any, or $null if there're none.]] } bounding_box_get{ [[Get axis-aligned bounding box (AABB) of the given node.]] params { @in x: ptr(Evas.Real); [[Pointer to receive X coordinate of the first point of AABB.]] @in y: ptr(Evas.Real); [[Pointer to receive Y coordinate of the first point of AABB.]] @in z: ptr(Evas.Real); [[Pointer to receive Z coordinate of the first point of AABB.]] @in x2: ptr(Evas.Real); [[Pointer to receive X coordinate of the second point of AABB.]] @in y2: ptr(Evas.Real); [[Pointer to receive Y coordinate of the second point of AABB.]] @in z2: ptr(Evas.Real); [[Pointer to receive Z coordinate of the second point of AABB.]] } } bounding_sphere_get { [[Get bounding sphere of the given node.]] params { @in x: ptr(Evas.Real); [[Pointer to receive X coordinate of the center of sphere.]] @in y: ptr(Evas.Real); [[Pointer to receive Y coordinate of the center of sphere.]] @in z: ptr(Evas.Real); [[Pointer to receive Z coordinate of center of sphere.]] @in r: ptr(Evas.Real); [[Pointer to receive radius of center of sphere.]] } } @property position_inherit { set { [[Set the position inheritance flag of the given node. When inheritance is enabled, a node's world space position is determined by adding the parent node's world position and the node's position. Otherwise the node's position will be the world space position.]] } get { [[Get the position inheritance flag of the given node. See also @Evas.Canvas3D.Node.position_inherit.set.]] } values { inherit: bool; [[Whether to inherit parent position.]] } } @property orientation_inherit { set { [[Set the orientation inheritance flag of the given node. When inheritance is enabled, a node's world space orientation is determined by multiplying the parent node's world orientation and the node's orientation. Otherwise the node's orientation will be the world space orientation.]] } get { [[Get the orientation inheritance flag of the given node. See also @Evas.Canvas3D.Node.orientation_inherit.set.]] } values { inherit: bool; [[Whether to inherit parent orientation.]] } } @property scale_inherit { set { [[Set the scale inheritance flag of the given node. When inheritance is enabled, a node's world space scale is determined by multiplying the parent node's world scale and the node's scale. Otherwise the node's scale will be the world space scale.]] } get { [[Get the scale inheritance flag of the given node. See also @Evas.Canvas3D.Node.scale_inherit.set.]] } values { inherit: bool; [[Whether to inherit parent scale.]] } } @property camera { set { [[Set a camera to the given node. If the node is not of type EVAS_CANVAS3D_NODE_TYPE_CAMERA, error message will be generated and nothing happens. See also @Evas.Canvas3D.Node.member_add.]] } get { [[Get the camera of the given node. See also @Evas.Canvas3D.Node.camera.set.]] } values { // FIXME: Evas_Canvas3D_Camera is necessary, but that introduces a cycle camera: Evas.Canvas3D.Object; [[The camera of the given node if any, or $null if there're none.]] } } @property light { set { [[Set the light of the given node. If the node is not of type EVAS_CANVAS3D_NODE_TYPE_LIGHT, error message will be generated and nothing happens. See also @Evas.Canvas3D.Node.member_add.]] } get { [[Get the light of the given node. See also @Evas.Canvas3D.Node.light.set.]] } values { light: Evas.Canvas3D.Light; [[The light of the given node if any, or $null if there're none.]] } } @property mesh_frame { set { [[Set the animation frame number of the given node for the given mesh. If the node is not of type EVAS_CANVAS3D_NODE_TYPE_MESH or the given mesh does not belong to the given mesh error mesh will be generated and nothing happens. Default mesh frame is 0. See also @Evas.Canvas3D.Node.mesh_add.]] } get { [[Set the animation frame number of the given node for the given mesh. If the node is not of type EVAS_CANVAS3D_NODE_TYPE_MESH or the given mesh does not belong to the given mesh error mesh will be generated and nothing happens. See also @Evas.Canvas3D.Node.mesh_add.]] } keys { mesh: Evas.Canvas3D.Mesh; [[The given mesh.]] } values { frame: int; [[The animation frame number.]] } } @property billboard_target { set { [[Set behavior of node like billboard object.]] } get { [[Get the target node for billboard object. See also @Evas.Canvas3D.Node.billboard_target.set.]] } values { target: Evas.Canvas3D.Node; [[The pointer to target node for billboard object, or $null if there're none.]] } } @property lod_enable { set { [[Enable behavior of node like LOD object.]] } get { [[Get(check) status of node does node is LOD object. See also @Evas.Canvas3D.Node.lod_enable.set.]] } values { enable: bool; [[status property (true/false)]] } } } implements { Efl.Object.constructor; Efl.Object.destructor; Efl.Object.finalize; Evas.Canvas3D.Object.update_notify; Evas.Canvas3D.Object.change_notify; Evas.Canvas3D.Object.callback_register; Evas.Canvas3D.Object.callback_unregister; } }