void OnEnable() { m_Weight = serializedObject.FindProperty("m_Weight"); m_TwistNodesToggle = serializedObject.FindProperty("m_TwistNodesGUIToggle"); var data = serializedObject.FindProperty("m_Data"); m_Source = data.FindPropertyRelative("m_Source"); m_TwistAxis = data.FindPropertyRelative("m_TwistAxis"); m_TwistNodes = data.FindPropertyRelative("m_TwistNodes"); m_Constraint = (TwistCorrection)serializedObject.targetObject; m_TwistNodesArray = m_Constraint.data.twistNodes; var dataType = m_Constraint.data.GetType(); var fieldInfo = dataType.GetField("m_TwistNodes", BindingFlags.NonPublic | BindingFlags.Instance); var range = fieldInfo.GetCustomAttribute <RangeAttribute>(); if (m_TwistNodesArray.Count == 0) { m_TwistNodesArray.Add(WeightedTransform.Default(0f)); m_Constraint.data.twistNodes = m_TwistNodesArray; } m_ReorderableList = WeightedTransformHelper.CreateReorderableList(m_TwistNodes, ref m_TwistNodesArray, range); m_ReorderableList.onChangedCallback = (ReorderableList reorderableList) => { m_Constraint.data.twistNodes = (WeightedTransformArray)reorderableList.list; }; }
void OnEnable() { m_Weight = serializedObject.FindProperty("m_Weight"); m_TwistNodesToggle = serializedObject.FindProperty("m_TwistNodesGUIToggle"); var data = serializedObject.FindProperty("m_Data"); m_Source = data.FindPropertyRelative("m_Source"); m_TwistAxis = data.FindPropertyRelative("m_TwistAxis"); m_TwistNodes = data.FindPropertyRelative("m_TwistNodes"); m_Constraint = (TwistCorrection)serializedObject.targetObject; m_TwistNodesArray = m_Constraint.data.twistNodes; var dataType = m_Constraint.data.GetType(); var fieldInfo = dataType.GetField("m_TwistNodes", BindingFlags.NonPublic | BindingFlags.Instance); var range = fieldInfo.GetCustomAttribute <RangeAttribute>(); if (m_TwistNodesArray.Count == 0) { m_TwistNodesArray.Add(WeightedTransform.Default(0f)); m_Constraint.data.twistNodes = m_TwistNodesArray; } m_ReorderableList = WeightedTransformHelper.CreateReorderableList(m_TwistNodes, ref m_TwistNodesArray, range); m_ReorderableList.onChangedCallback = (ReorderableList reorderableList) => { Undo.RegisterCompleteObjectUndo(m_Constraint, "Edit TwistCorrection"); m_Constraint.data.twistNodes = (WeightedTransformArray)reorderableList.list; if (PrefabUtility.IsPartOfPrefabInstance(m_Constraint)) { EditorUtility.SetDirty(m_Constraint); } }; Undo.undoRedoPerformed += () => { m_ReorderableList.list = m_Constraint.data.twistNodes; }; }