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; }