void NavUpdate(ScriptableRenderContext context, Camera[] cameras) { _unityPosition = ConventionTransforms.PositionUnityToNED(gameObject.transform.position); _unityOrientation = ConventionTransforms.OrientationUnityToNED(gameObject.transform.rotation); // Set Navigation Position and orientation to the same value as the Unity position and orientation // TODO: This should be done in a own function _navPosition.X = _unityPosition.x; _navPosition.Y = _unityPosition.y; _navPosition.Z = _unityPosition.z; _navOrientation.X = _unityOrientation.x; _navOrientation.Y = _unityOrientation.y; _navOrientation.Z = _unityOrientation.z; _navOrientation.W = _unityOrientation.w; // TODO: In the future this should either be estimated from position and time // or this should be retreived from a Rigidbody component, depending on which // type of simulation that is running. _navLinearVelocity.X = 0.0f; _navLinearVelocity.Y = 0.0f; _navLinearVelocity.Z = 0.0f; _navAngularVelocity.X = 0.0f; _navAngularVelocity.Y = 0.0f; _navAngularVelocity.Z = 0.0f; gate = true; }
void NavUpdate(ScriptableRenderContext context, Camera[] cameras) { _unityPosition = ConventionTransforms.PositionUnityToNED(gameObject.transform.position); _unityOrientation = UnityEngine.Quaternion.Euler(ConventionTransforms.EulerOrientationUnityToNED(gameObject.transform.rotation.eulerAngles)); // Set Navigation Position and orientation to the same value as the Unity position and orientation // TODO: This should be done in a own function // Publishes local coordinates _navPosition.X = _unityPosition.x; _navPosition.Y = _unityPosition.y; //_navPosition.Z = _unityPosition.z; // Publishes latitude and longitude //_navPosition.X = _unityPosition.x * (float)Math.Atan2(1, R_M * Math.PI / 180f) + latOffset; // Latitude //_navPosition.Y = _unityPosition.y * (float)Math.Atan2(1, R_N * Math.PI / 180f * Math.Cos(latOffset * Math.PI / 180f)) + lonOffset; // Longitude _navPosition.Z = gameObject.transform.rotation.eulerAngles.y; // Heading _navOrientation.X = _unityOrientation.x; _navOrientation.Y = _unityOrientation.y; _navOrientation.Z = _unityOrientation.z; _navOrientation.W = _unityOrientation.w; if (_rigidBody != null) { _unityLinearVelocity = ConventionTransforms.VelocityUnityToNED(_rigidBody.velocity); _navLinearVelocity.X = _unityLinearVelocity.x; _navLinearVelocity.Y = _unityLinearVelocity.y; _navLinearVelocity.Z = _unityLinearVelocity.z; _unityAngularVelocity = ConventionTransforms.AngularVelocityUnityToNED(_rigidBody.angularVelocity); _navAngularVelocity.X = _unityAngularVelocity.x; _navAngularVelocity.Y = _unityAngularVelocity.y; _navAngularVelocity.Z = _unityAngularVelocity.z; } else { _navLinearVelocity.X = 0.0f; _navLinearVelocity.Y = 0.0f; _navLinearVelocity.Z = 0.0f; _navAngularVelocity.X = 0.0f; _navAngularVelocity.Y = 0.0f; _navAngularVelocity.Z = 0.0f; } gate = true; }
void NavUpdate(ScriptableRenderContext context, Camera[] cameras) { var pirenOffset = new Vector3( -piren.position.x + gameObject.transform.position.x, -piren.position.y + gameObject.transform.position.y, -piren.position.z + gameObject.transform.position.z ); //_unityPosition = ConventionTransforms.PositionUnityToNED(gameObject.transform.position); _unityPosition = ConventionTransforms.PositionUnityToNED(pirenOffset); _unityOrientation = UnityEngine.Quaternion.Euler(ConventionTransforms.EulerOrientationUnityToNED(gameObject.transform.rotation.eulerAngles)); // Set Navigation Position and orientation to the same value as the Unity position and orientation // TODO: This should be done in a own function _navPosition.X = _unityPosition.x; _navPosition.Y = _unityPosition.y; _navPosition.Z = _unityPosition.z; _navOrientation.X = _unityOrientation.x; _navOrientation.Y = _unityOrientation.y; _navOrientation.Z = _unityOrientation.z; _navOrientation.W = _unityOrientation.w; if (_rigidBody != null) { _unityLinearVelocity = ConventionTransforms.VelocityUnityToNED(_rigidBody.velocity); _navLinearVelocity.X = _unityLinearVelocity.x; _navLinearVelocity.Y = _unityLinearVelocity.y; _navLinearVelocity.Z = _unityLinearVelocity.z; _unityAngularVelocity = ConventionTransforms.AngularVelocityUnityToNED(_rigidBody.angularVelocity); _navAngularVelocity.X = _unityAngularVelocity.x; _navAngularVelocity.Y = _unityAngularVelocity.y; _navAngularVelocity.Z = _unityAngularVelocity.z; } else { _navLinearVelocity.X = 0.0f; _navLinearVelocity.Y = 0.0f; _navLinearVelocity.Z = 0.0f; _navAngularVelocity.X = 0.0f; _navAngularVelocity.Y = 0.0f; _navAngularVelocity.Z = 0.0f; } gate = true; }