Exemplo n.º 1
0
		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);
						}
					}
				}
			}
		}
Exemplo n.º 2
0
        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;
                    }
                }
            }
        }