Exemplo n.º 1
0
	private void OnGUI(){
		Grad = GUIGradientField.GradientField("Gradient", Grad);

		// Gradient Options
		_invertGradient = EditorGUILayout.Toggle("Invert Gradient", _invertGradient);
		gradType = (GradType)EditorGUILayout.EnumPopup ("Gradient Type", gradType);
		
		// Gradient Falloff
		if(gradType == GradType.Radial){
				EditorGUILayout.BeginHorizontal();
				string falloff = EditorGUILayout.TextField("Falloff", _radialGradientFalloff.ToString());
				float.TryParse(falloff, out _radialGradientFalloff);
			GUILayout.EndHorizontal();
			_radialGradientFalloff = GUILayout.HorizontalSlider(_radialGradientFalloff, 0f, 100f);
		}
		
		// Output filename
		_fileName = EditorGUILayout.TextField("Output Filename",_fileName);

		// Gradient output size/aspect
		EditorGUILayout.BeginHorizontal();
			if(_fixedAspect){
				EditorGUILayout.PrefixLabel("Gradient Size");
			} else {
				EditorGUILayout.PrefixLabel("Gradient Width");
			}
			string gradSizeX = EditorGUILayout.TextField(_gradientSizeX.ToString());
			int.TryParse(gradSizeX, out _gradientSizeX);
			EditorGUILayout.PrefixLabel("px");
		EditorGUILayout.EndHorizontal();

		if(_fixedAspect){
			_gradientSizeY = _gradientSizeX;
		} else {
			string gradSizeY = EditorGUILayout.TextField("Gradient Height",_gradientSizeY.ToString());
			int.TryParse(gradSizeY, out _gradientSizeY);
		}

		// Set parammeters of gradient preview area
		GUILayoutOption[] guioptions = new GUILayoutOption[2];
		guioptions[0] = GUILayout.Height(Mathf.Clamp(_gradientSizeX,4,256));
		guioptions[1] = GUILayout.Width(Mathf.Clamp(_gradientSizeY,4,256));
		
		GUIStyle previewStyle = new GUIStyle();
		
		previewStyle.alignment = TextAnchor.MiddleCenter;
		
		// Load checker pattern for preview area
	
		string path = null;
		
		if(checker == null || checker.width != _gradientSizeX || checker.height != _gradientSizeY){
			
			if(Application.platform == RuntimePlatform.OSXEditor){
				path = Application.dataPath + "/GradientMaker/";
			} else if (Application.platform == RuntimePlatform.WindowsEditor){
				path = Application.dataPath + "\\GradientMaker\\";		
			} 
			
			byte[] rawChecker = File.ReadAllBytes(path + "Checker.png");
			checker = new Texture2D(_gradientSizeX, _gradientSizeY);
			checker.LoadImage(rawChecker);
		}
		
		// Draw prewiew area
		GUILayout.BeginHorizontal(checker, previewStyle, guioptions);
            GUILayout.Label(outTexture, guioptions);
		GUILayout.EndHorizontal();
		
		_overWriteExisting = EditorGUILayout.ToggleLeft("Overwrite existing", _overWriteExisting);
		
		GUILayout.BeginHorizontal();
			if(GUILayout.Button("Save Gradient")){
				InitProcessGradient(false);
			}
		GUILayout.EndHorizontal();
		
		// Update preview if nessisary
		if(GUI.changed){
			Undo.RecordObject(this, "Gradient Changed");
			InitProcessGradient(true);
			EditorUtility.SetDirty (this);
		}
	}