protected override void OnUpdate() { for (int i = 0; i < data.Length; ++i) { // Need to split this out into server / client / whatever var transform = data.Transform[i]; var defaultToSet = new TransformToSet { Position = transform.Location.ToUnityVector3() + worker.Origin, Velocity = transform.Velocity.ToUnityVector3(), Orientation = transform.Rotation.ToUnityQuaternion() }; var defaultToSend = new TransformToSend { Position = transform.Location.ToUnityVector3() - worker.Origin, Velocity = transform.Velocity.ToUnityVector3(), Orientation = transform.Rotation.ToUnityQuaternion() }; var previousTransform = new DefferedUpdateTransform { Transform = transform }; var ticksSinceLastUpdate = new TicksSinceLastTransformUpdate { NumberOfTicks = 0 }; var lastTransform = new LastTransformSentData { // could set this to the max time if we want to immediately send something TimeSinceLastUpdate = 0.0f, Transform = transform }; var lastPosition = new LastPositionSentData { // could set this to the max time if we want to immediately send something TimeSinceLastUpdate = 0.0f, Position = data.Position[i] }; PostUpdateCommands.AddComponent(data.Entity[i], defaultToSet); PostUpdateCommands.AddComponent(data.Entity[i], defaultToSend); PostUpdateCommands.AddComponent(data.Entity[i], previousTransform); PostUpdateCommands.AddComponent(data.Entity[i], ticksSinceLastUpdate); PostUpdateCommands.AddComponent(data.Entity[i], lastPosition); PostUpdateCommands.AddComponent(data.Entity[i], lastTransform); PostUpdateCommands.AddBuffer <BufferedTransform>(data.Entity[i]); } }
private void AddCommonSendComponents(EntityCommandBuffer commandBuffer) { commandBuffer.AddComponent(entity, new GetTransformFromGameObjectTag()); var transformComponent = transformReader.Data; var defaultToSend = new TransformToSend { Position = transformComponent.Location.ToUnityVector() - world.GetExistingSystem <WorkerSystem>().Origin, Velocity = transformComponent.Velocity.ToUnityVector(), Orientation = transformComponent.Rotation.ToUnityQuaternion() }; var ticksSinceLastUpdate = new TicksSinceLastTransformUpdate { NumberOfTicks = 0 }; var lastTransform = new LastTransformSentData { // could set this to the max time if we want to immediately send something TimeSinceLastUpdate = 0.0f, Transform = transformComponent }; var position = entityManager.GetComponentData <Position.Component>(entity); var lastPosition = new LastPositionSentData { // could set this to the max time if we want to immediately send something TimeSinceLastUpdate = 0.0f, Position = position }; commandBuffer.AddComponent(entity, defaultToSend); commandBuffer.AddComponent(entity, ticksSinceLastUpdate); commandBuffer.AddComponent(entity, lastPosition); commandBuffer.AddComponent(entity, lastTransform); }