public void UpdateTransform(Transform objectTransform, DoubleVector3 objectOriginECEF, Vector3 translationOffsetECEF, Quaternion orientationECEF, float heightOffset, bool applyFlattening)
        {
            var finalPositionECEF = objectOriginECEF + translationOffsetECEF;
            var resourceUp        = m_frame.ECEFToLocalRotation * objectOriginECEF.normalized.ToSingleVector();
            var localPosition     = m_frame.ECEFToLocalSpace(finalPositionECEF) + Vector3.up * heightOffset;
            var localRotation     = m_frame.ECEFToLocalRotation * orientationECEF;

            if (applyFlattening && m_flattenScale != 1.0f)
            {
                var resourceToLocal = Quaternion.FromToRotation(resourceUp, Vector3.up);
                var localToResource = Quaternion.Inverse(resourceToLocal);
                var innerRotation   = resourceToLocal * localRotation;
                var scaleVec        = new Vector3(1, m_flattenScale, 1);

                TransformHelper.ApplyTransform(objectTransform, localPosition, scaleVec, localToResource, innerRotation);
            }
            else
            {
                TransformHelper.ApplyTransform(objectTransform, localPosition, Vector3.one, localRotation, Quaternion.identity);
            }
        }
 public void UpdateTransform(Transform objectTransform, DoubleVector3 objectOriginECEF, float heightOffset)
 {
     objectTransform.localPosition = m_frame.ECEFToLocalSpace(objectOriginECEF) + Vector3.up * heightOffset;
     objectTransform.localRotation = m_frame.ECEFToLocalRotation;
 }