using UnityEngine;
|
using UnityEditor;
|
using System.Collections;
|
using System.Collections.Generic;
|
using System.Text;
|
using qtools.qhierarchy.pdata;
|
|
namespace qtools.qhierarchy.phelper
|
{
|
public delegate void QColorSelectedHandler(GameObject[] gameObjects, Color color);
|
public delegate void QColorRemovedHandler(GameObject[] gameObjects);
|
|
public class QColorPickerWindow: PopupWindowContent
|
{
|
// PRIVATE
|
private GameObject[] gameObjects;
|
private QColorSelectedHandler colorSelectedHandler;
|
private QColorRemovedHandler colorRemovedHandler;
|
private Texture2D colorPaletteTexture;
|
private Rect paletteRect;
|
|
// CONSTRUCTOR
|
public QColorPickerWindow(GameObject[] gameObjects, QColorSelectedHandler colorSelectedHandler, QColorRemovedHandler colorRemovedHandler)
|
{
|
this.gameObjects = gameObjects;
|
this.colorSelectedHandler = colorSelectedHandler;
|
this.colorRemovedHandler = colorRemovedHandler;
|
|
colorPaletteTexture = QResources.getInstance().getTexture(QTexture.QColorPalette);
|
paletteRect = new Rect(0, 0, colorPaletteTexture.width, colorPaletteTexture.height);
|
}
|
|
// DESTRUCTOR
|
public override void OnClose()
|
{
|
gameObjects = null;
|
colorSelectedHandler = null;
|
colorRemovedHandler = null;
|
}
|
|
// GUI
|
public override Vector2 GetWindowSize()
|
{
|
return new Vector2(paletteRect.width, paletteRect.height);
|
}
|
|
public override void OnGUI(Rect rect)
|
{
|
GUI.DrawTexture(paletteRect, colorPaletteTexture);
|
|
Vector2 mousePosition = Event.current.mousePosition;
|
if (Event.current.isMouse && Event.current.button == 0 && Event.current.type == EventType.MouseUp && paletteRect.Contains(mousePosition))
|
{
|
Event.current.Use();
|
if (mousePosition.x < 15 && mousePosition.y < 15)
|
{
|
colorRemovedHandler(gameObjects);
|
}
|
else
|
{
|
colorSelectedHandler(gameObjects, colorPaletteTexture.GetPixel((int)mousePosition.x, colorPaletteTexture.height - (int)mousePosition.y));
|
}
|
this.editorWindow.Close();
|
}
|
}
|
}
|
}
|
|