Add phantom camera

This commit is contained in:
2025-03-01 19:52:43 +01:00
parent 57930f1c50
commit a9f8fb717e
149 changed files with 19276 additions and 2 deletions

View File

@@ -0,0 +1,91 @@
extends EditorNode3DGizmoPlugin
class_name CustomPluginGizmo
var _gizmo_name
var gizmo_name: String: set = set_gizmo_name
var _gizmo_icon: Texture2D
var gizmo_icon: Texture2D: set = set_gizmo_icon
var _gizmo_spatial_script: Script
var gizmo_spatial_script: Script: set = set_gizmo_spatial_script
var _gizmo_scale: float = 0.035
func set_gizmo_name(name: String) -> void:
_gizmo_name = name
func set_gizmo_icon(icon: Texture2D) -> void:
_gizmo_icon = icon
func set_gizmo_spatial_script(script: Script) -> void:
_gizmo_spatial_script = script
func _get_gizmo_name() -> String:
return _gizmo_name
func _has_gizmo(spatial: Node3D):
return spatial.get_script() == _gizmo_spatial_script
func _init() -> void:
create_icon_material(_gizmo_name, _gizmo_icon, false, Color.WHITE)
create_material("main", Color8(252, 127, 127, 255))
func _draw_frustum() -> PackedVector3Array:
var lines = PackedVector3Array()
var dis: float = 0.25
var width: float = dis * 1.25
var len: float = dis * 1.5
# Straight line
# lines.push_back(Vector3(0, 0, 0))
# lines.push_back(Vector3(0, 0, -len))
# Trapezoid
lines.push_back(Vector3(0, 0, 0))
lines.push_back(Vector3(-width, dis, -len))
lines.push_back(Vector3(0, 0, 0))
lines.push_back(Vector3(width, dis, -len))
lines.push_back(Vector3(0, 0, 0))
lines.push_back(Vector3(-width, -dis, -len))
lines.push_back(Vector3(0, 0, 0))
lines.push_back(Vector3(width, -dis, -len))
# Square
## Left
lines.push_back(Vector3(-width, dis, -len))
lines.push_back(Vector3(-width, -dis, -len))
## Bottom
lines.push_back(Vector3(-width, -dis, -len))
lines.push_back(Vector3(width, -dis, -len))
## Right
lines.push_back(Vector3(width, -dis, -len))
lines.push_back(Vector3(width, dis, -len))
## Top
lines.push_back(Vector3(width, dis, -len))
lines.push_back(Vector3(-width, dis, -len))
return lines
func _redraw(gizmo: EditorNode3DGizmo):
gizmo.clear()
var icon: Material = get_material(_gizmo_name, gizmo)
gizmo.add_unscaled_billboard(icon, _gizmo_scale)
var material = get_material("main", gizmo)
gizmo.add_lines(_draw_frustum(), material)

View File

@@ -0,0 +1,12 @@
extends CustomPluginGizmo
var _spatial_script: Script = preload("res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_3d.gd")
var _icon: Texture2D = preload("res://addons/phantom_camera/icons/phantom_camera_gizmo.svg")
func _init() -> void:
set_gizmo_name("PhantomCamera")
set_gizmo_spatial_script(_spatial_script)
set_gizmo_icon(_icon)
super()

View File

@@ -0,0 +1,29 @@
extends EditorNode3DGizmoPlugin
var _spatial_script: Script = preload("res://addons/phantom_camera/scripts/phantom_camera/phantom_camera_noise_emitter_3d.gd")
var _gizmo_icon: Texture2D = preload("res://addons/phantom_camera/icons/phantom_camera_noise_emitter_gizmo.svg")
var _gizmo_name: StringName = "PhantomCameraNoiseEmitter"
func _init() -> void:
create_material("main", Color8(252, 127, 127, 255))
create_handle_material("handles")
create_icon_material(_gizmo_name, _gizmo_icon, false, Color.WHITE)
func _has_gizmo(node: Node3D):
return node.get_script() == _spatial_script
func _get_gizmo_name() -> String:
return _gizmo_name
func _redraw(gizmo: EditorNode3DGizmo):
gizmo.clear()
var icon: Material = get_material(_gizmo_name, gizmo)
gizmo.add_unscaled_billboard(icon, 0.035)
#var material = get_material("main", gizmo)
#gizmo.add_lines(_draw_frustum(), material)