private void OnTransformUpdate(WorldTransform.Update update) { if (!CurrentlyBeingHeld() && !WorldTransformReader.HasAuthority) { if (update.position.HasValue) { transform.position = update.position.Value.ToVector3(); } if (update.rotation.HasValue) { transform.rotation = MathUtils.ToUnityQuaternion(update.rotation.Value); } } }
private void OnComponentUpdated(WorldTransform.Update update) { if (!WorldTransformReader.HasAuthority) { if (update.position.HasValue) { transform.position = update.position.Value.ToVector3(); } if (update.rotation.HasValue) { var rotation = update.rotation.Value; transform.rotation = new Quaternion(rotation.x, rotation.y, rotation.z, rotation.w); } } }
// Callback for whenever one or more property of the WorldTransform component is updated void OnComponentUpdated(WorldTransform.Update update) { /* * Only update the transform if this component is on a worker which isn't authorative over the * entity's WorldTransform component. * This synchronises the entity's local representation on the worker with that of the entity on * whichever worker is authoritative over its WorldTransform and is responsible for its movement. */ if (!WorldTransformReader.HasAuthority) { if (update.position.HasValue) { transform.position = update.position.Value.ToVector3(); } } }
private void Update() { var transformUpdate = new WorldTransform.Update(); var newPosition = transform.position.ToCoordinates(); var newRotation = transform.rotation; var updatedTransform = false; if (PositionNeedsUpdate(newPosition)) { transformUpdate.SetPosition(newPosition); updatedTransform = true; } if (RotationNeedsUpdate(newRotation)) { transformUpdate.SetRotation(MathUtils.ToNativeQuaternion(transform.rotation)); updatedTransform = true; } if (updatedTransform) { WorldTransformWriter.Send(transformUpdate); } }
private void WorldTransformWriter_ComponentUpdated(WorldTransform.Update obj) { Debug.Log("WorldTransformWriter_ComponentUpdated!!"); }