red_dragon_pon/base/scripts/enemies/directional_sprite3d.gd

27 lines
891 B
GDScript

@tool
extends Sprite3D
@export var rotations : Dictionary[float,Texture2D]
func _process(delta: float) -> void:
var camera = get_viewport().get_camera_3d()
if Engine.is_editor_hint():
camera = EditorInterface.get_editor_viewport_3d().get_camera_3d()
var rotation_to_camera = -vec3_to_vec2(global_transform.basis.z).angle_to(vec3_to_vec2(camera.global_position)) + PI
var chosen_index = 0
for i in rotations.keys():
if abs(rotation_to_camera-i) < abs(rotation_to_camera-chosen_index):
chosen_index = i
texture = rotations[chosen_index]
@export_tool_button("Generate entries") var generator = entry_generator
@export var rotation_count : float = 8
func entry_generator():
rotations.clear()
for i in range(rotation_count+1):
rotations[TAU/rotation_count*i] = Texture2D.new()
func vec3_to_vec2(vector : Vector3) -> Vector2:
return Vector2(vector.x,vector.z).normalized()