@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() # Angle between camera's -basis.z (forward direction) and direction to camera var angle = vec3_to_vec2(global_transform.basis.z).angle_to(vec3_to_vec2(global_position - camera.global_position)) + PI var chosen_index = 0 for i in rotations.keys(): if abs(angle-i) < abs(angle-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.z,vector.x).normalized()