EditorNode3DGizmoPlugin¶
继承: Resource < RefCounted < Object
编辑器用于定义Node3D gizmo类型的类。
描述¶
方法¶
void |
_begin_handle_action(gizmo: EditorNode3DGizmo, handle_id: int, secondary: bool) virtual |
_can_be_hidden() virtual const |
|
void |
_commit_handle(gizmo: EditorNode3DGizmo, handle_id: int, secondary: bool, restore: Variant, cancel: bool) virtual |
void |
_commit_subgizmos(gizmo: EditorNode3DGizmo, ids: PackedInt32Array, restores: Array[Transform3D], cancel: bool) virtual |
_create_gizmo(for_node_3d: Item3D) virtual const |
|
_get_gizmo_name() virtual const |
|
_get_handle_name(gizmo: EditorNode3DGizmo, handle_id: int, secondary: bool) virtual const |
|
_get_handle_value(gizmo: EditorNode3DGizmo, handle_id: int, secondary: bool) virtual const |
|
_get_priority() virtual const |
|
_get_subgizmo_transform(gizmo: EditorNode3DGizmo, subgizmo_id: int) virtual const |
|
_has_gizmo(for_node_3d: Item3D) virtual const |
|
_is_handle_highlighted(gizmo: EditorNode3DGizmo, handle_id: int, secondary: bool) virtual const |
|
_is_selectable_when_hidden() virtual const |
|
void |
_redraw(gizmo: EditorNode3DGizmo) virtual |
void |
_set_handle(gizmo: EditorNode3DGizmo, handle_id: int, secondary: bool, camera: Camera, screen_pos: Vector2) virtual |
void |
_set_subgizmo_transform(gizmo: EditorNode3DGizmo, subgizmo_id: int, transform: Transform3D) virtual |
_subgizmos_intersect_frustum(gizmo: EditorNode3DGizmo, camera: Camera, frustum_planes: Array[Plane]) virtual const |
|
_subgizmos_intersect_ray(gizmo: EditorNode3DGizmo, camera: Camera, screen_pos: Vector2) virtual const |
|
void |
add_material(name: String, material: StandardMaterial3D) |
void |
create_handle_material(name: String, billboard: bool = false, texture: Texture2D = null) |
void |
create_icon_material(name: String, texture: Texture2D, on_top: bool = false, color: Color = Color(1, 1, 1, 1)) |
void |
create_material(name: String, color: Color, billboard: bool = false, on_top: bool = false, use_vertex_color: bool = false) |
get_material(name: String, gizmo: EditorNode3DGizmo = null) |
方法说明¶
void _begin_handle_action(gizmo: EditorNode3DGizmo, handle_id: int, secondary: bool) virtual 🔗
重写此方法以定义此插件处理的小工具是否可以隐藏。如果未覆盖,则返回true。
void _commit_handle(gizmo: EditorNode3DGizmo, handle_id: int, secondary: bool, restore: Variant, cancel: bool) virtual 🔗
重写此方法以提交正在编辑的句柄(句柄必须事先由EditorNode3DGizmo.add_handles()在_redraw()期间添加)。这通常意味着为更改创建UndoRedo操作,使用当前句柄值作为“do”,使用restore参数作为“undo”。
如果cancel参数为true,则应直接设置restore值,而无需任何UndoRedo操作。
当提交的句柄是辅助句柄时,secondary参数是true(有关详细信息,请参阅EditorNode3DGizmo.add_handles())。
调用此插件的活动小发明。
void _commit_subgizmos(gizmo: EditorNode3DGizmo, ids: PackedInt32Array, restores: Array[Transform3D], cancel: bool) virtual 🔗
重写此方法以提交正在编辑的一组subgizmos(参见_subgizmos_intersect_ray()和_subgizmos_intersect_frustum())。这通常意味着为更改创建UndoRedo操作,将当前转换使用为“do”,将restores转换使用为“undo”。
如果cancel参数为true,则应直接设置restores转换,而无需任何UndoRedo操作。与所有subgizmo方法一样,转换是在本地空间中针对gizmo的Node3D给出的。为这个插件的活动小发明调用。
EditorNode3DGizmo _create_gizmo(for_node_3d: Item3D) virtual const 🔗
重写此方法以为您选择的3D节点返回自定义EditorNode3DGizmo,为其余节点返回null。另请参见_has_gizmo()。
String _get_gizmo_name() virtual const 🔗
重写此方法以提供将出现在gizmo可见性菜单中的名称。
String _get_handle_name(gizmo: EditorNode3DGizmo, handle_id: int, secondary: bool) virtual const 🔗
重写此方法以提供gizmo的句柄名称。当请求的句柄是辅助句柄时,secondary参数是true(有关详细信息,请参阅EditorNode3DGizmo.add_handles())。为此插件的活动小发明调用。
Variant _get_handle_value(gizmo: EditorNode3DGizmo, handle_id: int, secondary: bool) virtual const 🔗
重写此方法以返回句柄的当前值。此值将在编辑开始时请求,并用作_commit_handle()中的恢复参数。
当请求的句柄是辅助句柄时,secondary参数是true(有关详细信息,请参阅EditorNode3DGizmo.add_handles())。
调用此插件的活动小发明。
int _get_priority() virtual const 🔗
重写此方法以设置gizmo的优先级。在处理句柄或subgizmos选择等输入时,具有更高优先级的Gizmos将具有优先权。
所有内置编辑器gizmos都返回-1的优先级。如果没有被覆盖,此方法将返回0,这意味着自定义gizmos将自动获得比内置gizmos更高的优先级。
Transform3D _get_subgizmo_transform(gizmo: EditorNode3DGizmo, subgizmo_id: int) virtual const 🔗
重写此方法以返回subgizmo的当前转换。与所有subgizmo方法一样,转换应该在gizmo的Node3D的本地空间中。此转换将在编辑开始时请求,并在_commit_subgizmos()的恢复参数中使用。为此插件的活动小发明调用。
bool _has_gizmo(for_node_3d: Item3D) virtual const 🔗
重写此方法以定义哪些Node3D节点拥有此插件中的小发明。每当将Item3D节点添加到场景时,都会调用此方法,如果它返回true,则该节点将获得分配的通用EditorNode3DGizmo并添加到此插件的活动小发明列表中。
bool _is_handle_highlighted(gizmo: EditorNode3DGizmo, handle_id: int, secondary: bool) virtual const 🔗
重写此方法以在编辑器中突出显示给定句柄时返回true。当请求的句柄是次要句柄时,secondary参数是true(请参阅EditorNode3DGizmo.add_handles()了解更多信息)。为这个插件的活动小发明调用。
重写此方法以定义是否应选择带有此gizmo的Node3D,即使该gizmo被隐藏。
void _redraw(gizmo: EditorNode3DGizmo) virtual 🔗
重写此方法以在请求gizmo更新时添加所有gizmo元素。通常在此方法的开头调用EditorNode3DGizmo.clear(),然后根据节点的属性添加可视元素。
void _set_handle(gizmo: EditorNode3DGizmo, handle_id: int, secondary: bool, camera: Camera, screen_pos: Vector2) virtual 🔗
覆盖此方法以在用户拖动gizmo句柄时更新节点的属性(之前添加了EditorNode3DGizmo.add_handles())。提供的screen_pos是屏幕坐标中的鼠标位置,camera可用于将其转换为光线投射。
当编辑的句柄是辅助句柄时,secondary参数为true(有关详细信息,请参阅EditorNode3DGizmo.add_handles())。
调用此插件的活动小发明。
void _set_subgizmo_transform(gizmo: EditorNode3DGizmo, subgizmo_id: int, transform: Transform3D) virtual 🔗
重写此方法以在subgizmo编辑期间更新节点属性(参见_subgizmos_intersect_ray()和_subgizmos_intersect_frustum())。transform在Node3D的本地坐标系中给出。为此插件的活动小工具调用。
PackedInt32Array _subgizmos_intersect_frustum(gizmo: EditorNode3DGizmo, camera: Camera, frustum_planes: Array[Plane]) virtual const 🔗
重写此方法以允许使用鼠标拖动框选择选择subgizmos。给定camera和frustum_planes,此方法应返回哪些subgizmos包含在截头体中。frustum_planes参数由一个数组组成,其中包含构成选择截头体的所有Plane。返回值应包含唯一subgizmo标识符的列表,这些标识符可以具有任何非负值,并将在其他虚拟方法中使用,如_get_subgizmo_transform()或_commit_subgizmos()。为此插件的活动小工具调用。
int _subgizmos_intersect_ray(gizmo: EditorNode3DGizmo, camera: Camera, screen_pos: Vector2) virtual const 🔗
重写此方法以允许使用鼠标点击选择subgizmos。给定屏幕坐标中的camera和screen_pos,此方法应返回应选择的subgizmo。返回值应是唯一的subgizmo标识符,它可以具有任何非负值,并将用于其他虚拟方法,如_get_subgizmo_transform()或_commit_subgizmos()。为该插件的活动gizmos调用。
void add_material(name: String, material: StandardMaterial3D) 🔗
将新素材添加到插件的内部素材列表中。然后可以使用get_material()访问它。不应被覆盖。
void create_handle_material(name: String, billboard: bool = false, texture: Texture2D = null) 🔗
创建带有变体(选定和/或可编辑)的句柄材质并将它们添加到内部材质列表中。然后可以使用get_material()访问它们并在EditorNode3DGizmo.add_handles()中使用。不应被覆盖。
您可以选择提供要使用的纹理而不是默认图标。
void create_icon_material(name: String, texture: Texture2D, on_top: bool = false, color: Color = Color(1, 1, 1, 1)) 🔗
创建具有变体(选定和/或可编辑)的图标材质并将它们添加到内部材质列表中。然后可以使用get_material()访问它们并在EditorNode3DGizmo.add_unscaled_billboard()中使用。不应被覆盖。
void create_material(name: String, color: Color, billboard: bool = false, on_top: bool = false, use_vertex_color: bool = false) 🔗
创建带有变体(选定和/或可编辑)的无阴影材质并将它们添加到内部材质列表中。然后可以使用get_material()访问它们并在EditorNode3DGizmo.add_mesh()和EditorNode3DGizmo.add_lines()中使用。不应被覆盖。
StandardMaterial3D get_material(name: String, gizmo: EditorNode3DGizmo = null) 🔗
从内部材质列表中获取材质。如果提供了EditorNode3DGizmo,它将尝试获取相应的变体(已选择和/或可编辑)。