public void SampleFromField()
        {
            m_objPosition = transform.position;
            m_objRotation = transform.rotation;

            if (ReactorField == null)
            {
                return;
            }

            var comp = ReactorField.GetComponent <BoingReactorField>();

            if (comp == null)
            {
        #if UNITY_EDITOR
                if (!s_warnedComponent)
                {
                    Debug.LogWarning("The assigned ReactorField game object must have a BoingReactorField component for BoingReactorFieldCpuSampler components to sample from.");
                    s_warnedComponent = true;
                }
        #endif

                return;
            }

            if (comp.HardwareMode != BoingReactorField.HardwareModeEnum.CPU)
            {
        #if UNITY_EDITOR
                if (!s_warnedHardwareMode)
                {
                    Debug.LogWarning("The BoingReactorField component needs to be set to CPU hardware mode for BoingReactorFieldCpuSampler components to sample from.");
                    s_warnedHardwareMode = true;
                }
        #endif

                return;
            }

            Vector3 positionOffset;
            Vector4 rotationOffset;
            if (!comp.SampleCpuGrid(transform.position, out positionOffset, out rotationOffset))
            {
                return;
            }

            transform.position = m_objPosition + positionOffset * PositionSampleMultiplier;
            transform.rotation = QuaternionUtil.Pow(QuaternionUtil.FromVector4(rotationOffset), RotationSampleMultiplier) * m_objRotation;
        }