// Helper for SwapGeometry. // Sets up pointers from this -> geom, and from geom -> this. private void SetGeometry(ControllerGeometry geom) { m_ControllerGeometry = geom; // The back-pointers is implicit; it's geometry.transform.parent. // worldPositionStays: false because we're about to overwrite it anyway m_ControllerGeometry.transform.SetParent(this.transform, worldPositionStays: false); Quaternion rot = m_GeometryRotation.IsInitialized() ? m_GeometryRotation : Quaternion.identity; Coords.AsLocal[m_ControllerGeometry.transform] = TrTransform.TRS(m_GeometryOffset, rot, 1); m_ControllerGeometry.OnBehaviorChanged(); }