EditorNode3DGizmoPlugin

继承: Resource < RefCounted < Object

编辑器用于定义Node3D gizmo类型的类。

描述

方法

void

_begin_handle_action(gizmo: EditorNode3DGizmo, handle_id: int, secondary: bool) virtual

bool

_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

EditorNode3DGizmo

_create_gizmo(for_node_3d: Item3D) virtual const

String

_get_gizmo_name() virtual const

String

_get_handle_name(gizmo: EditorNode3DGizmo, handle_id: int, secondary: bool) virtual const

Variant

_get_handle_value(gizmo: EditorNode3DGizmo, handle_id: int, secondary: bool) virtual const

int

_get_priority() virtual const

Transform3D

_get_subgizmo_transform(gizmo: EditorNode3DGizmo, subgizmo_id: int) virtual const

bool

_has_gizmo(for_node_3d: Item3D) virtual const

bool

_is_handle_highlighted(gizmo: EditorNode3DGizmo, handle_id: int, secondary: bool) virtual const

bool

_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

PackedInt32Array

_subgizmos_intersect_frustum(gizmo: EditorNode3DGizmo, camera: Camera, frustum_planes: Array[Plane]) virtual const

int

_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)

StandardMaterial3D

get_material(name: String, gizmo: EditorNode3DGizmo = null)


方法说明

void _begin_handle_action(gizmo: EditorNode3DGizmo, handle_id: int, secondary: bool) virtual 🔗


bool _can_be_hidden() virtual const 🔗

重写此方法以定义此插件处理的小工具是否可以隐藏。如果未覆盖,则返回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()了解更多信息)。为这个插件的活动小发明调用。


bool _is_selectable_when_hidden() virtual const 🔗

重写此方法以定义是否应选择带有此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。给定camerafrustum_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。给定屏幕坐标中的camerascreen_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,它将尝试获取相应的变体(已选择和/或可编辑)。