/// <summary> /// Meant to convert our Physics GameObject data send data to follow our POSITION struct to be sent each update /// </summary> /// <param name="Net_Register_GameObject container of data"></param> public void SendPhysicsGameObjectUpdatesToNetwork(NetworkedGameObject eContainer) { int entityID = default; NetworkEntityIdentificationComponentData entityIDContainer = default; entityIDContainer = entityManager.GetComponentData <NetworkEntityIdentificationComponentData>(eContainer.Entity); entityID = entityIDContainer.entityID; //make sure that we setup the reference to our rigidBody of our physics object that we are using to send data from if (!rigidbodyFromEntityId.ContainsKey(entityID)) { rigidbodyFromEntityId.Add(entityID, eContainer.GetComponent <Rigidbody>()); } var rb = rigidbodyFromEntityId[entityID]; if (!rb) { Debug.LogError("There is no rigidbody in netobject entity id DICTIONARY: " + entityID); return; } Position coords = default; if (!rb.isKinematic && rb.IsSleeping() || entityManager.HasComponent <TransformLockTag>(eContainer.Entity)) { physicsnRGOToRemove.Add(eContainer); //Send a last update for our network objects to be remove their physics funcionality to sync with others. StopPhysicsUpdates(eContainer); } coords = new Position { clientId = entityIDContainer.clientID, entityId = entityIDContainer.entityID, entityType = (int)entityIDContainer.current_Entity_Type, rot = eContainer.transform.rotation, pos = eContainer.transform.position, scaleFactor = eContainer.transform.lossyScale.x, }; netUpdateHandler.SendSyncPoseMessage(coords); }
public void SendSyncPosition(Entity_Type entityType, Vector3 position, Quaternion rotation) { Position coords = GeneratePosition(this, entityType, position, rotation); netUpdateHandler.SendSyncPoseMessage(coords); }