63 lines
1.8 KiB
C#
63 lines
1.8 KiB
C#
using UnityEngine;
|
|
using System.Collections;
|
|
|
|
public class Tools{
|
|
|
|
static Material lineMaterial;
|
|
static void CreateLineMaterial()
|
|
{
|
|
if( !lineMaterial ) {
|
|
lineMaterial = new Material( "Shader \"Lines/Colored Blended\" {" +
|
|
"SubShader { Pass { " +
|
|
" Blend SrcAlpha OneMinusSrcAlpha " +
|
|
" ZWrite Off Cull Off Fog { Mode Off } " +
|
|
" BindChannels {" +
|
|
" Bind \"vertex\", vertex Bind \"color\", color }" +
|
|
"} } }" );
|
|
lineMaterial.hideFlags = HideFlags.HideAndDontSave;
|
|
lineMaterial.shader.hideFlags = HideFlags.HideAndDontSave;
|
|
}
|
|
}
|
|
|
|
|
|
public static void DrawRectangle(Rect rect, Color color){
|
|
DrawRectangle (rect.x, rect.y, rect.width, rect.height, color);
|
|
}
|
|
public static void DrawRectangle(float x, float y, float width, float height, Color color){
|
|
CreateLineMaterial ();
|
|
lineMaterial.SetPass (0);
|
|
GL.Begin(GL.QUADS);
|
|
GL.Color(color);
|
|
GL.Vertex3(x, y, 0);
|
|
GL.Vertex3(x, y + height, 0);
|
|
GL.Vertex3(x + width, y + height, 0);
|
|
GL.Vertex3(x + width, y, 0);
|
|
GL.End();
|
|
}
|
|
|
|
public static Rect BoundsToRect(Bounds bounds){
|
|
return new Rect(bounds.min.x, bounds.min.y, bounds.max.x - bounds.min.x, bounds.max.y - bounds.min.y);
|
|
}
|
|
|
|
public static Vector3 WorldToGuiPoint(Vector3 point){
|
|
|
|
var pt = Camera.main.WorldToScreenPoint(point);
|
|
pt.y = Camera.main.pixelHeight - pt.y;
|
|
return pt;
|
|
}
|
|
|
|
public static void BeginGui(bool verticalFlip = true){
|
|
GL.PushMatrix();
|
|
if (verticalFlip) {
|
|
GL.LoadPixelMatrix (0, Camera.current.pixelWidth, Camera.current.pixelHeight, 0);
|
|
} else {
|
|
GL.LoadPixelMatrix (0, Camera.current.pixelWidth, 0, Camera.current.pixelHeight);
|
|
}
|
|
|
|
}
|
|
|
|
public static void EndGui(){
|
|
GL.PopMatrix();
|
|
}
|
|
}
|