180 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			180 lines
		
	
	
		
			4.8 KiB
		
	
	
	
		
			C#
		
	
	
	
| using UnityEngine;
 | |
| using System.Collections;
 | |
| using UnityEditor;
 | |
| using System.IO;
 | |
| using System;
 | |
| using EasyRoads3D;
 | |
| public class NewEasyRoads3D : EditorWindow
 | |
| {
 | |
| public static NewEasyRoads3D instance;
 | |
| private Vector3 scroll;
 | |
| public GUISkin OCDQQDOODQ;
 | |
| public GUISkin ODDOQQCQDC;
 | |
| private string objectname = "NewEasyRoads3D";
 | |
| private string backupFolder = "/EasyRoads3D";
 | |
| private int objectType = 0;
 | |
| private bool OOQDOOQQ;
 | |
| public NewEasyRoads3D()
 | |
| {
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| instance = this;
 | |
| 
 | |
| position = new Rect((Screen.width - 350.0f) / 2.0f, (Screen.height - 130.0f) / 2.0f, 350.0f, 130.0f);
 | |
| 
 | |
| minSize = new Vector2(350.0f, 130.0f);
 | |
| maxSize = new Vector2(350.0f, 130.0f);
 | |
| 
 | |
| }
 | |
| public void OnDestroy(){
 | |
| instance = null;
 | |
| }
 | |
| public static NewEasyRoads3D Instance{
 | |
| get
 | |
| {
 | |
| if( instance == null ){
 | |
| new NewEasyRoads3D();
 | |
| }
 | |
| 
 | |
| return instance;
 | |
| }
 | |
| }
 | |
| public void OnAwake()
 | |
| {
 | |
| 
 | |
| }
 | |
| public void OnGUI()
 | |
| {
 | |
| if(OCDQQDOODQ == null){
 | |
| ODDOQQCQDC = GUI.skin;
 | |
| OCDQQDOODQ = (GUISkin)Resources.Load("ER3DSkin", typeof(GUISkin));
 | |
| }
 | |
| if(objectname == "NewEasyRoads3D") objectname = GetNewRoadName();
 | |
| if(titleContent.text == "NewEasyRoads3D")titleContent = new GUIContent("New EasyRoads3D Object");
 | |
| 
 | |
| 
 | |
| GUILayout.Space(15);
 | |
| GUILayout.Box("", GUILayout.MinWidth(340), GUILayout.MaxWidth(340), GUILayout.Height(70));
 | |
| GUI.skin = ODDOQQCQDC;
 | |
| GUILayout.BeginArea  (new Rect (5, 5, 336, 250));
 | |
| GUILayout.Label("Set a name for the new EasyRoads3D Road Object");
 | |
| GUILayout.Space(65);
 | |
| GUILayout.BeginArea  (new Rect (50, 40, 250, 150));
 | |
| 
 | |
| 
 | |
| RoadObjectScript.objectStrings = new string[3];
 | |
| RoadObjectScript.objectStrings[0] = "Road Object"; RoadObjectScript.objectStrings[1]="River Object";RoadObjectScript.objectStrings[2]="Procedural Mesh Object";
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| EditorGUILayout.BeginHorizontal();
 | |
| GUILayout.Label("Object type",GUILayout.Width(75));
 | |
| objectType = EditorGUILayout.Popup (objectType, RoadObjectScript.objectStrings, EditorStyles.toolbarPopup,   GUILayout.Width(150));
 | |
| EditorGUILayout.EndHorizontal();
 | |
| EditorGUILayout.BeginHorizontal();
 | |
| GUILayout.Label("Object name",GUILayout.Width(75));
 | |
| objectname = GUILayout.TextField(objectname,GUILayout.Width(150));
 | |
| EditorGUILayout.EndHorizontal();
 | |
| GUILayout.EndArea();
 | |
| EditorGUILayout.Space();
 | |
| EditorGUILayout.BeginHorizontal();
 | |
| GUILayout.Space(195);
 | |
| if(GUILayout.Button ("Create Object", EditorStyles.toolbarButton, GUILayout.Width(125))){
 | |
| if(objectname == ""){
 | |
| EditorUtility.DisplayDialog("Alert", "Please fill out a name for the new road object!", "Close");
 | |
| }else{
 | |
| bool flag = false;
 | |
| string[] dirs = Directory.GetDirectories(Directory.GetCurrentDirectory() + backupFolder);
 | |
| foreach(string nm in dirs){
 | |
| string[] words = nm.Split('\\');
 | |
| words = words[words.Length - 1].Split('/');
 | |
| string nm1 = words[words.Length - 1];
 | |
| if(nm1.ToUpper() == objectname.ToUpper()){
 | |
| EditorUtility.DisplayDialog("Alert", "An EasyRoads3D object with the name '"+objectname+"' already exists!\r\n\r\nPlease use an unique name!", "Close");
 | |
| flag = true;
 | |
| break;
 | |
| }
 | |
| }
 | |
| if(!flag){
 | |
| GameObject go = (GameObject)MonoBehaviour.Instantiate(Resources.Load("EasyRoad3DObject", typeof(GameObject)));
 | |
| instance.Close();
 | |
| go.name = objectname;
 | |
| go.transform.position = Vector3.zero;
 | |
| RoadObjectScript script = go.GetComponent<RoadObjectScript>();
 | |
| script.OOQDOOQQ = false;
 | |
| script.autoUpdate = true;
 | |
| script.surrounding = 3.0f;
 | |
| script.indent = 3.0f;
 | |
| script.geoResolution = 2.5f;
 | |
| script.objectType = objectType;
 | |
| script.materialType = 0;
 | |
| if(objectType == 1){
 | |
| script.objectText = "River";
 | |
| script.forceY = true;
 | |
| }
 | |
| if(objectType == 2)script.geoResolution = 0.5f;
 | |
| Selection.activeGameObject =  go;
 | |
| }
 | |
| }
 | |
| }
 | |
| EditorGUILayout.EndHorizontal();
 | |
| GUILayout.EndArea();
 | |
| }
 | |
| public string GetNewRoadName(){
 | |
| 
 | |
| if(EditorPrefs.GetInt("ER3DbckLocation", 0) == 1){
 | |
| if(ODQQDOOOOO.extensionPath == ""){
 | |
| ODQQDOOOOO.extensionPath = GetExtensionPath();
 | |
| }
 | |
| backupFolder = ODQQDOOOOO.extensionPath + "Backups";
 | |
| }
 | |
| 
 | |
| string path = Directory.GetCurrentDirectory() + backupFolder;
 | |
| if( !Directory.Exists(path)){
 | |
| try{
 | |
| Directory.CreateDirectory( path);
 | |
| }
 | |
| catch(System.Exception e){
 | |
| Debug.Log("Could not create directory: " + path + " " + e);
 | |
| return "";
 | |
| }
 | |
| }
 | |
| string[] dirs = Directory.GetDirectories(@Directory.GetCurrentDirectory() + backupFolder);
 | |
| int c = 0;
 | |
| int num;
 | |
| foreach(string nm in dirs){
 | |
| string[] words = nm.Split('\\');
 | |
| words = words[words.Length - 1].Split('/');
 | |
| string nm1 = words[words.Length - 1];
 | |
| if(nm.IndexOf("RoadObject") != -1){
 | |
| string str = nm1.Replace("RoadObject","");
 | |
| if(int.TryParse(str, out num)){
 | |
| if(num > c) c = num;
 | |
| }
 | |
| }
 | |
| }
 | |
| c++;
 | |
| string n;
 | |
| if(c < 10) n = "RoadObject0" + c.ToString();
 | |
| else n = "RoadObject" + c.ToString();
 | |
| return n;
 | |
| }
 | |
| public string GetExtensionPath(){
 | |
| string extensionPath  = Path.GetDirectoryName( AssetDatabase.GetAssetPath( MonoScript.FromScriptableObject( this ) ) );
 | |
| 
 | |
| extensionPath = extensionPath.Replace("lib", "");
 | |
| extensionPath = extensionPath.Replace("Editor", "");
 | |
| extensionPath = extensionPath.Replace("scripts", "");
 | |
| 
 | |
| return "/" + extensionPath;
 | |
| }
 | |
| }
 |