public override void ShowGUI (List<ActionParameter> parameters) { dragParameterID = Action.ChooseParameterGUI ("Drag object:", parameters, dragParameterID, ParameterType.GameObject); if (dragParameterID < 0 || method == TrackCheckMethod.WithinTrackRegion) { string label = (dragParameterID < 0) ? "Placeholder drag object:" : "Drag object"; dragObject = (Moveable_Drag) EditorGUILayout.ObjectField (label, dragObject, typeof (Moveable_Drag), true); dragConstantID = FieldToID <Moveable_Drag> (dragObject, dragConstantID); dragObject = IDToField <Moveable_Drag> (dragObject, dragConstantID, false); if (dragObject != null && dragObject.dragMode != DragMode.LockToTrack) { EditorGUILayout.HelpBox ("The chosen Drag object must be in 'Lock To Track' mode", MessageType.Warning); } } dragTrackParameterID = Action.ChooseParameterGUI ("Track (optional):", parameters, dragTrackParameterID, ParameterType.GameObject); if (dragTrackParameterID < 0) { dragTrack = (DragTrack) EditorGUILayout.ObjectField ("Track (optional):", dragTrack, typeof (DragTrack), true); dragTrackConstantID = FieldToID<DragTrack> (dragTrack, dragTrackConstantID); dragTrack = IDToField<DragTrack> (dragTrack, dragTrackConstantID, false); } method = (TrackCheckMethod) EditorGUILayout.EnumPopup ("Method:", method); if (method == TrackCheckMethod.PositionValue) { condition = (IntCondition) EditorGUILayout.EnumPopup ("Condition:", condition); checkPositionParameterID = Action.ChooseParameterGUI ("Position:", parameters, checkPositionParameterID, ParameterType.Float); if (checkPositionParameterID < 0) { checkPosition = EditorGUILayout.Slider ("Position:", checkPosition, 0f, 1f); } if (condition == IntCondition.EqualTo || condition == IntCondition.NotEqualTo) { errorMargin = EditorGUILayout.Slider ("Error margin:", errorMargin, 0f, 1f); } } else if (method == TrackCheckMethod.WithinTrackRegion) { if (dragObject == null) { EditorGUILayout.HelpBox ("A drag object must be assigned above for snap regions to display.", MessageType.Info); } else if (dragObject.dragMode != DragMode.LockToTrack) { EditorGUILayout.HelpBox ("The chosen Drag object is not locked to a Track.", MessageType.Warning); } else { snapParameterID = Action.ChooseParameterGUI ("Region ID:", parameters, snapParameterID, ParameterType.Integer); if (snapParameterID < 0) { List<string> labelList = new List<string>(); int snapIndex = 0; DragTrack track = (dragTrack != null) ? dragTrack : dragObject.track; if (track && track.allTrackSnapData != null && track.allTrackSnapData.Count > 0) { for (int i=0; i<track.allTrackSnapData.Count; i++) { labelList.Add (track.allTrackSnapData[i].EditorLabel); if (track.allTrackSnapData[i].ID == snapID) { snapIndex = i; } } snapIndex = EditorGUILayout.Popup ("Region:", snapIndex, labelList.ToArray ()); snapID = track.allTrackSnapData[snapIndex].ID; } else { EditorGUILayout.HelpBox("The chosen Drag object's Track has no Regions defined.", MessageType.Warning); } } } } }
public override void ShowGUI(List <ActionParameter> parameters) { dragParameterID = Action.ChooseParameterGUI("Drag object:", parameters, dragParameterID, ParameterType.GameObject); if (dragParameterID < 0 || method == TrackCheckMethod.WithinSnapRegion) { string label = (dragParameterID < 0) ? "Placeholder drag object:" : "Drag object"; dragObject = (Moveable_Drag)EditorGUILayout.ObjectField(label, dragObject, typeof(Moveable_Drag), true); dragConstantID = FieldToID <Moveable_Drag> (dragObject, dragConstantID); dragObject = IDToField <Moveable_Drag> (dragObject, dragConstantID, false); if (dragObject != null && dragObject.dragMode != DragMode.LockToTrack) { EditorGUILayout.HelpBox("The chosen Drag object must be in 'Lock To Track' mode", MessageType.Warning); } } method = (TrackCheckMethod)EditorGUILayout.EnumPopup("Method:", method); if (method == TrackCheckMethod.PositionValue) { condition = (IntCondition)EditorGUILayout.EnumPopup("Condition:", condition); checkPositionParameterID = Action.ChooseParameterGUI("Position:", parameters, checkPositionParameterID, ParameterType.Float); if (checkPositionParameterID < 0) { checkPosition = EditorGUILayout.Slider("Position:", checkPosition, 0f, 1f); } if (condition == IntCondition.EqualTo || condition == IntCondition.NotEqualTo) { errorMargin = EditorGUILayout.Slider("Error margin:", errorMargin, 0f, 1f); } } else if (method == TrackCheckMethod.WithinSnapRegion) { if (dragObject == null) { EditorGUILayout.HelpBox("A drag object must be assigned above.", MessageType.Warning); } else if (dragObject.track == null || dragObject.dragMode != DragMode.LockToTrack) { EditorGUILayout.HelpBox("The chosen Drag object must have an assigned Track.", MessageType.Warning); } else if (!dragObject.track.doSnapping || dragObject.track.allTrackSnapData == null || dragObject.track.allTrackSnapData.Count == 0) { EditorGUILayout.HelpBox("The chosen Drag object's Track has no snap points.", MessageType.Warning); } else { snapParameterID = Action.ChooseParameterGUI("Snap ID:", parameters, snapParameterID, ParameterType.Integer); if (snapParameterID < 0) { List <string> labelList = new List <string>(); int snapIndex = 0; for (int i = 0; i < dragObject.track.allTrackSnapData.Count; i++) { labelList.Add(dragObject.track.allTrackSnapData[i].EditorLabel); if (dragObject.track.allTrackSnapData[i].ID == snapID) { snapIndex = i; } } snapIndex = EditorGUILayout.Popup("Snap:", snapIndex, labelList.ToArray()); snapID = dragObject.track.allTrackSnapData[snapIndex].ID; } } } }