Problem
Need to add a Node3D to the AnimationPlayer’s Parent but it literaly wont work. I even assign the owner of the node it just wont work some one help!
using Godot;
namespace ProjectKazen.Framework;
[GlobalClass]
[Tool]
public partial class FGAnimationPlayer : AnimationPlayer
{
[Export]
private Godot.Collections.Array<FGAnimationLibrary> FGAnimationLibraries;
[Export]
private Godot.Collections.Array<AnimationLibrary> AnimationLibraries;
[Export]
bool ReInit;
public Node3D HitBoxContainer;
public string LastAnimation = null;
public int CurrentAnimationFrame;
public FGAnimationLibrary GetFGAnimationLibrary(string LibName)
{
foreach(FGAnimationLibrary AnimationLibrary in FGAnimationLibraries)
{
if(AnimationLibrary.Name == LibName)
{
return AnimationLibrary;
}
}
return null;
}
public void AddFGAnimationLibrary(FGAnimationLibrary AnimationLibrary)
{
FGAnimationLibraries.Add(AnimationLibrary);
}
public FGAnimationPlayer(){}
public override void _Ready()
{
base._Ready();
Init();
}
public void Init()
{
HitBoxContainer = new()
{
Owner = GetTree().CurrentScene
};
GetParent().CallDeferred("add_child",HitBoxContainer);
foreach (AnimationLibrary AnimLib in AnimationLibraries)
{
AnimationLibrary AnimLibDuplicate = (AnimationLibrary)AnimLib.Duplicate();
for (int i = 0; i < AnimLibDuplicate.GetAnimationList().Count;i++)
{
Animation CurrentAnimation = AnimLibDuplicate.GetAnimation(AnimLibDuplicate.GetAnimationList()[i]);
for(int j = 0; j < CurrentAnimation.GetTrackCount(); j++)
{
CurrentAnimation.TrackSetInterpolationType(j,Animation.InterpolationType.Nearest);
}
}
AddAnimationLibrary("",AnimLibDuplicate);
}
}
public void SpawnHitBoxes()
{
foreach(FGAnimationLibrary FGALib in FGAnimationLibraries)
{
foreach(string Animation in FGALib.GetAnimationList())
{
FGAnimation FGAnimation = (FGAnimation)FGALib.GetAnimation(Animation);
//FGAnimation.FightData
}
}
}
public void ClearAnimations()
{
for (int i = 0; i<GetAnimationLibraryList().Count;i++)
{
RemoveAnimationLibrary(GetAnimationLibraryList()[i]);
}
}
public override void _Process(double delta)
{
base._Process(delta);
if (ReInit)
{
ClearAnimations();
Init();
ReInit = false;
}
if (IsPlaying())
{
CurrentAnimationFrame = (int)(CurrentAnimationPosition * 24 + 0.5f);
}
}
public void Play()
{
base.Play();
}
}

