using Godot; using System.Collections.Generic; using Rokojori.Extensions; namespace Rokojori; [Tool] [GlobalClass ] public partial class ParticleVFX:Node3D #if TOOLS , GizmoDrawer #endif { ParticleVFXPreset _preset; [Export] public ParticleVFXPreset preset { get => _preset; set { _preset = value; if ( _preset != null ) { _preset.Initialize( this ); } } } [Export] public bool edit = false; #if TOOLS public override void _Process( double delta ) { if ( preset == null ) { return; } if ( edit ) { preset.UpdateSettings( this ); } UpdateGizmos(); } public void DrawGizmo( EditorNode3DGizmoPlugin gizmoPlugin, EditorNode3DGizmo gizmo ) { gizmo.Clear(); preset?.DrawGizmo( this, gizmoPlugin, gizmo ); } #endif protected ParticleVFXData _data; public T GetDataAs() where T:ParticleVFXData { return _data as T; } public void _SetParticlesVFXData( ParticleVFXData data ) { _data = data; } }