Exemplo n.º 1
0
	void ShowSpriteSettings()
	{
		IPackableControl cont = (IPackableControl)control;

		// Get the info for this state/element:
		stateInfo = cont.GetStateElementInfo(curState);


		// See if the sprite timeline is available:
		if (ste == null)
		{
			System.Reflection.Assembly asm = System.Reflection.Assembly.GetAssembly(typeof(UICtlEditor));
			System.Type steType = asm.GetType("SpriteTimeline");
			if (steType != null)
			{
				ste = (ISTE)System.Activator.CreateInstance(steType);
				ste.Setup(position, 0);
			}
		}

		// NOW see if the timeline is available:
		if (ste != null)
		{
			ste.SetCurAnim(curState);
			needRepaint = ste.STEOnGUI(-(20f + height), out textureAreaBottom);
		}
		else
		{
			// Put up a texture drop box:
			// Load the texture:
			if (stateInfo.stateObj.frameGUIDs.Length < 1)
			{
				stateInfo.stateObj.frameGUIDs = new string[1] { "" };
			}
			stateInfo.tex = (Texture2D)AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath(stateInfo.stateObj.frameGUIDs[0]), typeof(Texture2D));


			BeginMonitorChanges();
#if UNITY_IPHONE && !(UNITY_3_0 || UNITY_3_1 || UNITY_3_2 || UNITY_3_3 || UNITY_3_4 || UNITY_3_5 || UNITY_3_6 || UNITY_3_7 || UNITY_3_8 || UNITY_3_9 || UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_4_7 || UNITY_4_8 || UNITY_4_9)
			// Draw a "clear" button:
			if(GUI.Button(new Rect(clearRect.x, clearRect.y + height, clearRect.width, clearRect.height), "X"))
				stateInfo.tex = null;

			// Select the texture for the state:
			stateInfo.tex = (Texture2D)EditorGUI.ObjectField(tempRect, stateInfo.tex, typeof(Texture2D));
			textureAreaBottom = tempRect.yMax + ctlVirtSpace;
#else
			// Select the texture for the state:
#if UNITY_3_4 || UNITY_3_5 || UNITY_3_6 || UNITY_3_7 || UNITY_3_8 || UNITY_3_9 || UNITY_4_0 || UNITY_4_1 || UNITY_4_2 || UNITY_4_3 || UNITY_4_4 || UNITY_4_5 || UNITY_4_6 || UNITY_4_7 || UNITY_4_8 || UNITY_4_9
			stateInfo.tex = (Texture2D)EditorGUILayout.ObjectField(stateNames[curState], stateInfo.tex, typeof(Texture2D), false);
#else
			stateInfo.tex = (Texture2D)EditorGUILayout.ObjectField(stateNames[curState], stateInfo.tex, typeof(Texture2D));
#endif
			textureAreaBottom = 0; // This tells us to use Layout.
#endif

			// Handle drag and drop from an outside source:
			EventType eventType = Event.current.type;
			if (eventType == EventType.DragUpdated || eventType == EventType.DragPerform)
			{
				// Validate what is being dropped:
				if (DragAndDrop.objectReferences[0] is Texture2D)
				{
					// Show a copy icon on the drag
					DragAndDrop.visualMode = DragAndDropVisualMode.Copy;

					if (eventType == EventType.DragPerform)
					{
						DragAndDrop.AcceptDrag();
						stateInfo.tex = (Texture2D)DragAndDrop.objectReferences[0];
						needRepaint = true;
					}

					Event.current.Use();
				}
			}

			EndMonitorChanges();

			// Re-assign the state info to the control:
			stateInfo.stateObj.frameGUIDs[0] = AssetDatabase.AssetPathToGUID(AssetDatabase.GetAssetPath(stateInfo.tex));
		}
	}
    void ShowSpriteSettings()
    {
        IPackableControl cont = (IPackableControl)control;

        // Get the info for this state/element:
        stateInfo = cont.GetStateElementInfo(curState);


        // See if the sprite timeline is available:
        if (ste == null)
        {
            System.Reflection.Assembly asm = System.Reflection.Assembly.GetAssembly(typeof(UICtlEditor));
            System.Type steType            = asm.GetType("SpriteTimeline");
            if (steType != null)
            {
                ste = (ISTE)System.Activator.CreateInstance(steType);
                ste.Setup(position, 0);
            }
        }

        // NOW see if the timeline is available:
        if (ste != null)
        {
            ste.SetCurAnim(curState);
            needRepaint = ste.STEOnGUI(-(20f + height), out textureAreaBottom);
        }
        else
        {
            // Put up a texture drop box:
            // Load the texture:
            if (stateInfo.stateObj.frameGUIDs.Length < 1)
            {
                stateInfo.stateObj.frameGUIDs = new string[1] {
                    ""
                };
            }
            stateInfo.tex = (Texture2D)AssetDatabase.LoadAssetAtPath(AssetDatabase.GUIDToAssetPath(stateInfo.stateObj.frameGUIDs[0]), typeof(Texture2D));


            BeginMonitorChanges();
#if UNITY_IPHONE && !(UNITY_3_0 || UNITY_3_1 || UNITY_3_2 || UNITY_3_3 || UNITY_3_4 || UNITY_3_5 || UNITY_3_6 || UNITY_3_7 || UNITY_3_8 || UNITY_3_9)
            // Draw a "clear" button:
            if (GUI.Button(new Rect(clearRect.x, clearRect.y + height, clearRect.width, clearRect.height), "X"))
            {
                stateInfo.tex = null;
            }

            // Select the texture for the state:
            stateInfo.tex     = (Texture2D)EditorGUI.ObjectField(tempRect, stateInfo.tex, typeof(Texture2D));
            textureAreaBottom = tempRect.yMax + ctlVirtSpace;
#else
            // Select the texture for the state:
        #if UNITY_3_4 || UNITY_3_5 || UNITY_3_6 || UNITY_3_7 || UNITY_3_8 || UNITY_3_9
            stateInfo.tex = (Texture2D)EditorGUILayout.ObjectField(stateNames[curState], stateInfo.tex, typeof(Texture2D), false);
        #else
            stateInfo.tex = (Texture2D)EditorGUILayout.ObjectField(stateNames[curState], stateInfo.tex, typeof(Texture2D));
        #endif
            textureAreaBottom = 0;             // This tells us to use Layout.
#endif

            // Handle drag and drop from an outside source:
            EventType eventType = Event.current.type;
            if (eventType == EventType.DragUpdated || eventType == EventType.DragPerform)
            {
                // Validate what is being dropped:
                if (DragAndDrop.objectReferences[0] is Texture2D)
                {
                    // Show a copy icon on the drag
                    DragAndDrop.visualMode = DragAndDropVisualMode.Copy;

                    if (eventType == EventType.DragPerform)
                    {
                        DragAndDrop.AcceptDrag();
                        stateInfo.tex = (Texture2D)DragAndDrop.objectReferences[0];
                        needRepaint   = true;
                    }

                    Event.current.Use();
                }
            }

            EndMonitorChanges();

            // Re-assign the state info to the control:
            stateInfo.stateObj.frameGUIDs[0] = AssetDatabase.AssetPathToGUID(AssetDatabase.GetAssetPath(stateInfo.tex));
        }
    }