rokojori_action_library/Runtime/Actions/Node3D/SetVector3FromNodePosition.cs

67 lines
1.2 KiB
C#
Raw Normal View History

2026-01-27 06:57:54 +00:00
using Godot;
namespace Rokojori
{
[GlobalClass, Tool ]
public partial class SetVector3FromNodePosition : Action
{
[Export]
public Node3D source;
[Export]
public bool global = true;
[Export]
public bool convertToView = false;
[Export]
public Resource target;
[Export]
public string member;
[Export]
public Camera3D camera;
[Export]
public Vector3 scale = Vector3.One;
protected override void _OnTrigger()
{
if ( target == null || source == null )
{
return;
}
var value = source.GetPosition( global );
if ( convertToView )
{
if ( Engine.IsEditorHint() )
{
#if TOOLS
var editorCamera = EditorInterface.Singleton.GetEditorViewport3D().GetCamera3D();
value = editorCamera.ToLocal( value );
#endif
}
else
{
if ( camera != null )
{
value = camera.ToLocal( value );
}
}
}
value = value * scale;
// this.LogInfo( "Set", member, ">>", value );
ReflectionHelper.SetValue( target, member, value );
}
}
}