- Home /
Syncing Position and Rotation data in ECS tests?
Hey, everyone!
I'm working on a project where I'm trying to sync physics data into ECS (I know this is probably a bad idea, but we'll see).
At first, I was syncing the Position and Rotation entities inside the PhysicsSyncSystem, but I realized that something built in should probably be doing that.
In the IDE, I'm able to add the "CopyTransformFromGameObject" Entity. However, when I try to add this via AddComponentData in a test, it results in a compilation error.
I've referenced Unity.Transforms, and addComponentData works fine. CopyTransformFromGameObject seems to be in the Unity.Transforms namespace, but the compiler can't find it. What am I missing?
I'd like to release this as a unity package, because I imagine a lot of people could use this until Unity releases an ECS-compatible physics engine.
Below is the code, in case my description wasn't clear enough:
 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
 using Unity.Entities;
 using Unity.Mathematics;
 using Unity.Transforms;
 
 using UnityEngine.TestTools;
 using NUnit.Framework;
 namespace ECS {
     namespace Tests
     {
         [TestFixture]    
         public class PhysicsSyncSystemTest : ECSTest
         {
             private GameObject camera;
             private GameObject physicsObject;                                    
             [SetUp]
             public void setupWorld() {                                               
                 Physics.gravity = Vector3.zero;
                 camera = new GameObject("camera");            
                 camera.transform.position = new Vector3(0, 500, 0);
                 camera.transform.rotation = Quaternion.Euler(90,0,0);
                 camera.AddComponent<Camera>();                                                 
 
                 physicsObject = new GameObject("main");
                 physicsObject.AddComponent<Rigidbody>();
 
                 sutObjectEntity = physicsObject.AddComponent<GameObjectEntity>();
                 
                 var physicsSync = new PhysicsSyncData{mass=2};
                 physicsSync.AddForce(new Vector3(200, 0, 0));
                 physicsSync.AddTorque(Vector3.up);
                 physicsSync.AddRelativeTorque(Vector3.right);            
 
                 addComponentData<PhysicsSyncData>(sutObjectEntity, physicsSync);            
                 addComponentData<Position>(sutObjectEntity, new Position{Value=new float3(100,0,0)});
                 addComponentData<Rotation>(sutObjectEntity, new Rotation());
 
                 //the line below won't compile
                 addComponentData<CopyTransformFromGameObject>(sutObjectEntity, new CopyTransformFromGameObject());
                 
                 // act                            
                 updateSystem<PhysicsSyncSystem>();            
             }
Your answer
 
 
              koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                