More Godot 4 rename fixes (#6315)

* Spatial -> 3D, Transform, Quaternion

* File -> FileAccess

* Camera -> Camera3D

* Update references to MeshInstance and MultiMeshInstance

* ImmediateGeometry -> ImmediateMesh, misc renames
This commit is contained in:
Max Hilbrunner
2022-10-15 20:54:47 +02:00
committed by GitHub
parent 78526465c8
commit 198393eec7
58 changed files with 243 additions and 241 deletions

View File

@@ -1,13 +1,13 @@
.. _doc_spatial_gizmo_plugins:
.. _doc_3d_gizmo_plugins:
Spatial gizmo plugins
=====================
3D gizmo plugins
================
Introduction
------------
Spatial gizmo plugins are used by the editor and custom plugins to define the
gizmos attached to any kind of Spatial node.
3D gizmo plugins are used by the editor and custom plugins to define the
gizmos attached to any kind of Node3D node.
This tutorial shows the two main approaches to defining your own custom
gizmos. The first option works well for simple gizmos and creates less clutter in
@@ -16,11 +16,11 @@ your plugin structure, and the second one will let you store some per-gizmo data
.. note:: This tutorial assumes you already know how to make generic plugins. If
in doubt, refer to the :ref:`doc_making_plugins` page.
The EditorSpatialGizmoPlugin
----------------------------
The EditorNode3DGizmoPlugin
---------------------------
Regardless of the approach we choose, we will need to create a new
:ref:`EditorSpatialGizmoPlugin <class_EditorSpatialGizmoPlugin>`. This will allow
:ref:`EditorNode3DGizmoPlugin <class_EditorNode3DGizmoPlugin>`. This will allow
us to set a name for the new gizmo type and define other behaviors such as whether
the gizmo can be hidden or not.
@@ -29,7 +29,7 @@ This would be a basic setup:
::
# MyCustomGizmoPlugin.gd
extends EditorSpatialGizmoPlugin
extends EditorNode3DGizmoPlugin
func get_name():
@@ -49,14 +49,14 @@ This would be a basic setup:
func _enter_tree():
add_spatial_gizmo_plugin(gizmo_plugin)
add_node3d_gizmo_plugin(gizmo_plugin)
func _exit_tree():
remove_spatial_gizmo_plugin(gizmo_plugin)
remove_node3d_gizmo_plugin(gizmo_plugin)
For simple gizmos, inheriting :ref:`EditorSpatialGizmoPlugin <class_EditorSpatialGizmoPlugin>`
For simple gizmos, inheriting :ref:`EditorNode3DGizmoPlugin <class_EditorNode3DGizmoPlugin>`
is enough. If you want to store some per-gizmo data or you are porting a Godot 3.0 gizmo
to 3.1+, you should go with the second approach.
@@ -64,21 +64,21 @@ to 3.1+, you should go with the second approach.
Simple approach
---------------
The first step is to, in our custom gizmo plugin, override the :ref:`has_gizmo()<class_EditorSpatialGizmoPlugin_method_has_gizmo>`
method so that it returns ``true`` when the spatial parameter is of our target type.
The first step is to, in our custom gizmo plugin, override the :ref:`_has_gizmo()<class_EditorNode3DGizmoPlugin_method__has_gizmo>`
method so that it returns ``true`` when the node parameter is of our target type.
::
# ...
func has_gizmo(spatial):
return spatial is MyCustomSpatial
func _has_gizmo(node):
return node is MyCustomNode3D
# ...
Then we can override methods like :ref:`redraw()<class_EditorSpatialGizmoPlugin_method_redraw>`
Then we can override methods like :ref:`_redraw()<class_EditorNode3DGizmoPlugin_method__redraw>`
or all the handle related ones.
::
@@ -94,17 +94,17 @@ or all the handle related ones.
func redraw(gizmo):
gizmo.clear()
var spatial = gizmo.get_spatial_node()
var node3d = gizmo.get_node3d()
var lines = PackedVector3Array()
lines.push_back(Vector3(0, 1, 0))
lines.push_back(Vector3(0, spatial.my_custom_value, 0))
lines.push_back(Vector3(0, node3d.my_custom_value, 0))
var handles = PackedVector3Array()
handles.push_back(Vector3(0, 1, 0))
handles.push_back(Vector3(0, spatial.my_custom_value, 0))
handles.push_back(Vector3(0, node3d.my_custom_value, 0))
gizmo.add_lines(lines, get_material("main", gizmo), false)
gizmo.add_handles(handles, get_material("handles", gizmo))
@@ -113,7 +113,7 @@ or all the handle related ones.
# ...
Note that we created a material in the `_init` method, and retrieved it in the `redraw`
method using :ref:`get_material()<class_EditorSpatialGizmoPlugin_method_get_material>`. This
method using :ref:`get_material()<class_EditorNode3DGizmoPlugin_method_get_material>`. This
method retrieves one of the material's variants depending on the state of the gizmo
(selected and/or editable).
@@ -121,10 +121,10 @@ So the final plugin would look somewhat like this:
::
extends EditorSpatialGizmoPlugin
extends EditorNode3DGizmoPlugin
const MyCustomSpatial = preload("res://addons/my-addon/MyCustomSpatial.gd")
const MyCustomNode3D = preload("res://addons/my-addon/MyCustomNode3D.gd")
func _init():
@@ -132,54 +132,54 @@ So the final plugin would look somewhat like this:
create_handle_material("handles")
func has_gizmo(spatial):
return spatial is MyCustomSpatial
func _has_gizmo(node):
return node is MyCustomNode3D
func redraw(gizmo):
gizmo.clear()
var spatial = gizmo.get_spatial_node()
var node3d = gizmo.get_node3d()
var lines = PackedVector3Array()
lines.push_back(Vector3(0, 1, 0))
lines.push_back(Vector3(0, spatial.my_custom_value, 0))
lines.push_back(Vector3(0, node3d.my_custom_value, 0))
var handles = PackedVector3Array()
handles.push_back(Vector3(0, 1, 0))
handles.push_back(Vector3(0, spatial.my_custom_value, 0))
handles.push_back(Vector3(0, node3d.my_custom_value, 0))
gizmo.add_lines(lines, get_material("main", gizmo), false)
gizmo.add_handles(handles, get_material("handles", gizmo))
# You should implement the rest of handle-related callbacks
# (get_handle_name(), get_handle_value(), commit_handle()...).
# (_get_handle_name(), _get_handle_value(), _commit_handle(), ...).
Note that we just added some handles in the redraw method, but we still need to implement
the rest of handle-related callbacks in :ref:`EditorSpatialGizmoPlugin <class_EditorSpatialGizmoPlugin>`
the rest of handle-related callbacks in :ref:`EditorNode3DGizmoPlugin <class_EditorNode3DGizmoPlugin>`
to get properly working handles.
Alternative approach
--------------------
In some cases we want to provide our own implementation of :ref:`EditorSpatialGizmo<class_EditorSpatialGizmo>`,
In some cases we want to provide our own implementation of :ref:`EditorNode3DGizmo<class_EditorNode3DGizmo>`,
maybe because we want to have some state stored in each gizmo or because we are porting
an old gizmo plugin and we don't want to go through the rewriting process.
In these cases all we need to do is, in our new gizmo plugin, override
:ref:`create_gizmo()<class_EditorSpatialGizmoPlugin_method_create_gizmo>`, so it returns our custom gizmo implementation
for the Spatial nodes we want to target.
:ref:`_create_gizmo()<class_EditorNode3DGizmoPlugin_method__create_gizmo>`, so it returns our custom gizmo implementation
for the Node3D nodes we want to target.
::
# MyCustomGizmoPlugin.gd
extends EditorSpatialGizmoPlugin
extends EditorNode3DGizmoPlugin
const MyCustomSpatial = preload("res://addons/my-addon/MyCustomSpatial.gd")
const MyCustomNode3D = preload("res://addons/my-addon/MyCustomNode3D.gd")
const MyCustomGizmo = preload("res://addons/my-addon/MyCustomGizmo.gd")
@@ -188,19 +188,19 @@ for the Spatial nodes we want to target.
create_handle_material("handles")
func create_gizmo(spatial):
if spatial is MyCustomSpatial:
func _create_gizmo(node):
if node is MyCustomNode3D:
return MyCustomGizmo.new()
else:
return null
This way all the gizmo logic and drawing methods can be implemented in a new class extending
:ref:`EditorSpatialGizmo<class_EditorSpatialGizmo>`, like so:
:ref:`EditorNode3DGizmo<class_EditorNode3DGizmo>`, like so:
::
# MyCustomGizmo.gd
extends EditorSpatialGizmo
extends EditorNode3DGizmo
# You can store data in the gizmo itself (more useful when working with handles).
@@ -210,17 +210,17 @@ This way all the gizmo logic and drawing methods can be implemented in a new cla
func redraw():
clear()
var spatial = get_spatial_node()
var node3d = get_node3d()
var lines = PackedVector3Array()
lines.push_back(Vector3(0, 1, 0))
lines.push_back(Vector3(gizmo_size, spatial.my_custom_value, 0))
lines.push_back(Vector3(gizmo_size, node3d.my_custom_value, 0))
var handles = PackedVector3Array()
handles.push_back(Vector3(0, 1, 0))
handles.push_back(Vector3(gizmo_size, spatial.my_custom_value, 0))
handles.push_back(Vector3(gizmo_size, node3d.my_custom_value, 0))
var material = get_plugin().get_material("main", self)
add_lines(lines, material, false)
@@ -230,8 +230,8 @@ This way all the gizmo logic and drawing methods can be implemented in a new cla
# You should implement the rest of handle-related callbacks
# (get_handle_name(), get_handle_value(), commit_handle()...).
# (_get_handle_name(), _get_handle_value(), _commit_handle(), ...).
Note that we just added some handles in the redraw method, but we still need to implement
the rest of handle-related callbacks in :ref:`EditorSpatialGizmo<class_EditorSpatialGizmo>`
the rest of handle-related callbacks in :ref:`EditorNode3DGizmo<class_EditorNode3DGizmo>`
to get properly working handles.

View File

@@ -302,7 +302,7 @@ method. Our sample code is a bit long, so let's split in a few parts:
file.close()
The first part of our import method opens and reads the source file. We use the
:ref:`File <class_File>` class to do that, passing the ``source_file``
:ref:`FileAccess <class_FileAccess>` class to do that, passing the ``source_file``
parameter which is provided by the editor.
If there's an error when opening the file, we return it to let the editor know
@@ -410,7 +410,7 @@ system is scanned, making the custom resource appear on the FileSystem dock. If
you select it and focus the Import dock, you can see the only option to select
there.
Create a MeshInstance node in the scene, and for its Mesh property set up a new
Create a MeshInstance3D node in the scene, and for its Mesh property set up a new
SphereMesh. Unfold the Material section in the Inspector and then drag the file
from the FileSystem dock to the material property. The object will update in the
viewport with the blue color of the imported material.

View File

@@ -9,6 +9,6 @@ Editor plugins
making_plugins
making_main_screen_plugins
import_plugins
spatial_gizmos
3d_gizmos
inspector_plugins
visual_shader_plugins

View File

@@ -300,7 +300,7 @@ If you are using ``@tool``:
.. code-tab:: gdscript GDScript
func _ready():
var node = Spatial.new()
var node = Node3D.new()
add_child(node) # Parent could be any node in the scene
# The line below is required to make the node visible in the Scene tree dock
@@ -311,7 +311,7 @@ If you are using ``@tool``:
public override void _Ready()
{
var node = new Spatial();
var node = new Node3D();
AddChild(node); // Parent could be any node in the scene
// The line below is required to make the node visible in the Scene tree dock
@@ -327,7 +327,7 @@ If you are using :ref:`EditorScript<class_EditorScript>`:
func _run():
# `parent` could be any node in the scene.
var parent = get_scene().find_node("Parent")
var node = Spatial.new()
var node = Node3D.new()
parent.add_child(node)
# The line below is required to make the node visible in the Scene tree dock
@@ -340,7 +340,7 @@ If you are using :ref:`EditorScript<class_EditorScript>`:
{
// `parent` could be any node in the scene.
var parent = GetScene().FindNode("Parent");
var node = new Spatial();
var node = new Node3D();
parent.AddChild(node);
// The line below is required to make the node visible in the Scene tree dock