Problems with interaction with GameObject from ECS

Version:
Unity: 2022.2.5f
Burst: 1.8.2
Entities: 1.0.0-pre.15

Hello

This might be a something small that i am missing at the moment, but i cant interact with the GameObject. In 0.17 i was able to make it work.

I can also se that the systemBase that i want to use for the gameobject dont print in the debug.
I dont get any errors or nothing so i am a bit confused, any hints or help would be nice.

IComponentData

public struct CharacterControllerData : IComponentData
{

    public float velocityX;
    public float velocityY;

}

public class CharacterControllerClass : IComponentData
{
    public GameObject characterControllerGO;
    public Animator animator;

}

CharacterControllerGeneral

public partial class CharacterControllerGeneral : SystemBase
{


    protected override void OnUpdate()
    {
        foreach (RefRW<CharacterControllerData> characterControllerData in SystemAPI.Query<RefRW< CharacterControllerData >>())
        {
            characterControllerData.ValueRW.velocityX = characterControllerData.ValueRO.velocityX + 0.1f;
            characterControllerData.ValueRW.velocityY = characterControllerData.ValueRO.velocityY + 0.1f;

            if ((characterControllerData.ValueRO.velocityX > 0.9f) && (characterControllerData.ValueRO.velocityY > 0.9f))
            {
                characterControllerData.ValueRW.velocityX = -1;
                characterControllerData.ValueRW.velocityY = -1;
            }

            Debug.Log("Woring ");

        }

        foreach ((RefRO<CharacterControllerData> characterControllerData, CharacterControllerClass CharacterControllerClass) in SystemAPI.Query<RefRO<CharacterControllerData>,CharacterControllerClass>())
        {
            CharacterControllerClass.animator.SetFloat("Velocity X", characterControllerData.ValueRO.velocityX);
            CharacterControllerClass.animator.SetFloat("Velocity Y", characterControllerData.ValueRO.velocityY);
            Debug.Log("Woring ");

        }

    }

    //(var(qd, localToWorld) in SystemAPI.Query<QueryData, RefRO<LocalToWorld>>())
}

Baker

public class CharacterControllerAuthoring : MonoBehaviour
{
    public GameObject characterControllerGO;
    public Animator animator;

    public float velocityX = 0;
    public float velocityY = 0;



    //void OnEnable() { }
}

public class CharacterBaker : Baker<CharacterControllerAuthoring>
{
    public override void Bake(CharacterControllerAuthoring authoring)
    {
        //var transform = GetComponent<Transform>(authoring.characterControllerGO);

        DependsOn(authoring.animator);
        AddComponent(new CharacterControllerData 
        {
            velocityX = authoring.velocityX,
            velocityY = authoring.velocityY

        });

        AddComponentObject(
        new CharacterControllerClass
        {
            characterControllerGO = authoring.characterControllerGO,
            animator = authoring.animator

        });

    }


}


I think i uploaded this question a bit hasty, i just missunderstod some of the new syntaxes with ECS 10. vs ECS 0.17.

Well here is my current temporary solution for sending data from ECS to GameObject. Will check out DOTS animation when i got some other stuff done, this will have to do.

A spawner object in a subscene.

Authoring on GameObject in subscene

public class ECSSpawnHybridAuthoring : MonoBehaviour
{
    public GameObject refGameObject;

}


public class ECSSpawnHybridBaker : Baker<ECSSpawnHybridAuthoring>
{
    public override void Bake(ECSSpawnHybridAuthoring authoring)
    {

        AddComponentObject(new ECSSpawnHybrid
        {
            gameObjectInstance = authoring.refGameObject

        });

    }
}

ECS Spawner and IComponentData

public class ECSSpawnHybrid : IComponentData
{
    public GameObject gameObjectInstance;

}

public partial class ECSSpawnHybridSystem : SystemBase
{
    public bool spawnCharacter;
    protected override void OnCreate()
    {
    }

    protected override void OnStartRunning()
    {
        spawnCharacter = true;
    }

    protected override void OnDestroy()
    {
    }

    protected override void OnUpdate()
    {
        var ecb = SystemAPI.GetSingleton<BeginSimulationEntityCommandBufferSystem.Singleton>().CreateCommandBuffer(World.Unmanaged);

        Entities.ForEach
            ((ECSSpawnHybrid spawner) =>
            {
                if (spawnCharacter == true)
                {
                    GameObject instanceGO = MonoBehaviour.Instantiate(spawner.gameObjectInstance);
                    Entity newEntity = ecb.CreateEntity();
                    newEntity = ecb.Instantiate(newEntity);

                    ecb.AddComponent<CharacterControllerData>(newEntity,
                        new CharacterControllerData
                        {
                            position = new float3(instanceGO.transform.position),
                            velocityX = 0,
                            velocityY = 0
                      
                        });


                    ecb.AddComponent<CharacterControllerClass>(newEntity,
                        new CharacterControllerClass
                        {
                            characterControllerGO = instanceGO,
                            animator = instanceGO.GetComponent<Animator>()
                        });


                    spawnCharacter = false;
                    Debug.Log("Spawn ");
                }

            }
            ).WithoutBurst().Run();

    }

}

ECS systems that change animator values and GameObject position

public partial class CharacterControllerGeneral : SystemBase
{
    public bool spawnCharacter;


    protected override void OnCreate()
    {
    }

    protected override void OnDestroy()
    {
    }

    protected override void OnUpdate()
    {
        float deltaTime = SystemAPI.Time.DeltaTime;

        //Controlling values for animator
        Entities.ForEach
            ((ref CharacterControllerData characterControllerData) =>
                {
                    characterControllerData.velocityX = characterControllerData.velocityX + (0.1f * deltaTime);
                    characterControllerData.velocityY = characterControllerData.velocityY + (0.1f * deltaTime);

                    if ((characterControllerData.velocityX > 0.9f) && (characterControllerData.velocityY > 0.9f))
                    {
                        characterControllerData.velocityX = -1;
                        characterControllerData.velocityY = -1;
                    }

                }
            ).WithBurst().Schedule();

        //Controlling position of Character
        Entities.ForEach
            ((ref CharacterControllerData characterControllerData) =>
            {

                characterControllerData.position = new float3((1f * deltaTime), 0, (1f * deltaTime)) + characterControllerData.position;

                if ((characterControllerData.position.x > 10) && (characterControllerData.position.z > 10))
                {
                    characterControllerData.position = new float3(-10,0,-10);
                }


            }
            ).WithBurst().Schedule();

        //Reading from CharacterControllerData and setting values for GameObject and Animator
        Entities.ForEach
        ((CharacterControllerClass characterControllerClass, in CharacterControllerData characterControllerData ) =>
        {
            characterControllerClass.animator.SetFloat("VelocityX", characterControllerData.velocityX);
            characterControllerClass.animator.SetFloat("VelocityY", characterControllerData.velocityY);

            characterControllerClass.characterControllerGO.transform.position = characterControllerData.position;

            Debug.Log("CharacterControllerClass.animator " + characterControllerClass.animator.GetFloat("VelocityX") + " : " + characterControllerClass.animator.GetFloat("VelocityY") + "   Pos " + characterControllerClass.characterControllerGO.transform.position);

        }
        ).WithoutBurst().Run();


    }

}

IComponentData for Character controller

public struct CharacterControllerData : IComponentData
{
    public float3 position;

    public float velocityX;
    public float velocityY;

}

public class CharacterControllerClass : IComponentData
{
    public GameObject characterControllerGO;
    public Animator animator;

}