void OnEnable() { m_Weight = serializedObject.FindProperty("m_Weight"); m_SourceObjectsToggle = serializedObject.FindProperty("m_SourceObjectsGUIToggle"); m_SettingsToggle = serializedObject.FindProperty("m_SettingsGUIToggle"); var data = serializedObject.FindProperty("m_Data"); m_ConstrainedObject = data.FindPropertyRelative("m_ConstrainedObject"); m_AimAxis = data.FindPropertyRelative("m_AimAxis"); m_UpAxis = data.FindPropertyRelative("m_UpAxis"); m_WorldUpType = data.FindPropertyRelative("m_WorldUpType"); m_WorldUpAxis = data.FindPropertyRelative("m_WorldUpAxis"); m_WorldUpObject = data.FindPropertyRelative("m_WorldUpObject"); m_SourceObjects = data.FindPropertyRelative("m_SourceObjects"); m_MaintainOffset = data.FindPropertyRelative("m_MaintainOffset"); m_Offset = data.FindPropertyRelative("m_Offset"); m_ConstrainedAxes = data.FindPropertyRelative("m_ConstrainedAxes"); m_MinLimit = data.FindPropertyRelative("m_MinLimit"); m_MaxLimit = data.FindPropertyRelative("m_MaxLimit"); m_Constraint = (MultiAimConstraint)serializedObject.targetObject; m_SourceObjectsArray = m_Constraint.data.sourceObjects; var dataType = m_Constraint.data.GetType(); var fieldInfo = dataType.GetField("m_SourceObjects", BindingFlags.NonPublic | BindingFlags.Instance); var range = fieldInfo.GetCustomAttribute <RangeAttribute>(); if (m_SourceObjectsArray.Count == 0) { m_SourceObjectsArray.Add(WeightedTransform.Default(1f)); m_Constraint.data.sourceObjects = m_SourceObjectsArray; } m_ReorderableList = WeightedTransformHelper.CreateReorderableList(m_SourceObjects, ref m_SourceObjectsArray, range); m_ReorderableList.onChangedCallback = (ReorderableList reorderableList) => { Undo.RegisterCompleteObjectUndo(m_Constraint, "Edit MultiAim"); m_Constraint.data.sourceObjects = (WeightedTransformArray)reorderableList.list; if (PrefabUtility.IsPartOfPrefabInstance(m_Constraint)) { EditorUtility.SetDirty(m_Constraint); } }; Undo.undoRedoPerformed += () => { m_ReorderableList.list = m_Constraint.data.sourceObjects; }; }
public static Vector3 GetRotAxis(MultiAimConstraint multiAimConstraint) { if (multiAimConstraint == null) { return(Vector3.zero); } var xAxis = multiAimConstraint.data.constrainedXAxis; var yAxis = multiAimConstraint.data.constrainedYAxis; var zAxis = multiAimConstraint.data.constrainedZAxis; int count = 0; count += xAxis ? 1 : 0; count += yAxis ? 1 : 0; count += zAxis ? 1 : 0; if (count != 1) { return(Vector3.zero); } if (xAxis) { return(Vector3.right); } if (yAxis) { return(Vector3.up); } if (zAxis) { return(Vector3.forward); } return(Vector3.zero); }
void OnEnable() { m_Weight = serializedObject.FindProperty("m_Weight"); m_SourceObjectsToggle = serializedObject.FindProperty("m_SourceObjectsGUIToggle"); m_SettingsToggle = serializedObject.FindProperty("m_SettingsGUIToggle"); var data = serializedObject.FindProperty("m_Data"); m_ConstrainedObject = data.FindPropertyRelative("m_ConstrainedObject"); m_AimAxis = data.FindPropertyRelative("m_AimAxis"); m_SourceObjects = data.FindPropertyRelative("m_SourceObjects"); m_MaintainOffset = data.FindPropertyRelative("m_MaintainOffset"); m_Offset = data.FindPropertyRelative("m_Offset"); m_ConstrainedAxes = data.FindPropertyRelative("m_ConstrainedAxes"); m_MinLimit = data.FindPropertyRelative("m_MinLimit"); m_MaxLimit = data.FindPropertyRelative("m_MaxLimit"); m_Constraint = (MultiAimConstraint)serializedObject.targetObject; m_SourceObjectsArray = m_Constraint.data.sourceObjects; var dataType = m_Constraint.data.GetType(); var fieldInfo = dataType.GetField("m_SourceObjects", BindingFlags.NonPublic | BindingFlags.Instance); var range = fieldInfo.GetCustomAttribute <RangeAttribute>(); if (m_SourceObjectsArray.Count == 0) { m_SourceObjectsArray.Add(WeightedTransform.Default(1f)); m_Constraint.data.sourceObjects = m_SourceObjectsArray; } m_ReorderableList = WeightedTransformHelper.CreateReorderableList(m_SourceObjects, ref m_SourceObjectsArray, range); m_ReorderableList.onChangedCallback = (ReorderableList reorderableList) => { m_Constraint.data.sourceObjects = (WeightedTransformArray)reorderableList.list; }; }
public MultiAimInverseConstraint(MultiAimConstraint baseConstraint) : base(baseConstraint) { }