private void Awake() { if (UsePrefabStatus) { prefabSettings = transform.root.GetComponent<PrefabSettings>(); if (prefabSettings==null) Debug.Log("Prefab root have not script \"PrefabSettings\""); } deltaFps = 1f / Fps; count = Rows * Columns; index += Columns - 1; var offset = new Vector2((float)index / Columns - (index / Columns), 1 - (index / Columns) / (float)Rows); OffsetMat = !IsRandomOffsetForInctance ? OffsetMat - (OffsetMat / count) * count : Random.Range(0, count); var size = new Vector2(1f / Columns, 1f / Rows); if (AnimatedMaterialsNotInstance.Length > 0) foreach (var mat in AnimatedMaterialsNotInstance) { mat.SetTextureScale("_MainTex", size); mat.SetTextureOffset("_MainTex", Vector2.zero); if (IsBump) { mat.SetTextureScale("_BumpMap", size); mat.SetTextureOffset("_BumpMap", Vector2.zero); } if (IsHeight) { mat.SetTextureScale("_HeightMap", size); mat.SetTextureOffset("_HeightMap", Vector2.zero); } } else { renderer.material.SetTextureScale("_MainTex", size); renderer.material.SetTextureOffset("_MainTex", offset); if (IsBump) { renderer.material.SetTextureScale("_BumpMap", size); renderer.material.SetTextureOffset("_BumpMap", offset); } if (IsBump) { renderer.material.SetTextureScale("_HeightMap", size); renderer.material.SetTextureOffset("_HeightMap", offset); } } }
void OnGUI() { EditorWindow window = this; prefabSettings = (PrefabSettings)EditorGUILayout.ObjectField ( "Prefab settings (char data):", prefabSettings, typeof(PrefabSettings), false ); if (UseSingle) { GUILayout.Label("Convert CSV level files to Target type"); CsvFile = (TextAsset)EditorGUILayout.ObjectField( "SourceCSV: ", CsvFile, typeof(TextAsset), false); LevelData = (LevelData)EditorGUILayout.ObjectField( "Existing Target:", LevelData, typeof(LevelData), false); CreateNewScriptableObject = EditorGUILayout.Toggle("CreateNewTarget:", CreateNewScriptableObject); ScriptableObjectName = EditorGUILayout.TextField("NewSOName", ScriptableObjectName); if (GUILayout.Button("CONVERT")) { LevelDataContainerTemplate <int> container = ParseCsv(CsvFile); if (CreateNewScriptableObject) { LevelData = (LevelData)ScriptableObject.CreateInstance(typeof(LevelData)); AssetDatabase.CreateAsset(LevelData, $"{ParentFolderPath}/{ScriptableObjectName}.asset"); } LevelData.LevelObjects = container.ObjectList.ToArray(); EditorUtility.SetDirty(LevelData); this.Close(); } } else { GUILayout.Label("Convert list of CSV files to Target type "); ScriptableObjectBaseName = EditorGUILayout.TextField("TargetBaseName", ScriptableObjectBaseName); ScriptableObjectNameFirstNumber = EditorGUILayout.IntField("StartNumberingFrom...", ScriptableObjectNameFirstNumber); ScriptableObject target = this; SerializedObject so = new SerializedObject(target); SerializedProperty CsvFilesProperty = so.FindProperty("CsvFiles"); EditorGUILayout.PropertyField(CsvFilesProperty, true); so.ApplyModifiedProperties(); if (GUILayout.Button("CONVERT")) { int i = 0; foreach (var file in CsvFiles) { LevelDataContainerTemplate <int> container = ParseCsv(file); LevelData = (LevelData)ScriptableObject.CreateInstance(typeof(LevelData)); AssetDatabase.CreateAsset(LevelData, $"{ParentFolderPath}/{ScriptableObjectBaseName}{ScriptableObjectNameFirstNumber + i}.asset"); LevelData.LevelObjects = container.ObjectList.ToArray(); EditorUtility.SetDirty(LevelData); i++; } this.Close(); } } }
public void DropAreaGUI() { var evt = Event.current; var dropArea = GUILayoutUtility.GetRect(0.0f, 50.0f, GUILayout.ExpandWidth(true)); GUI.Box(dropArea, "Register New Icon"); switch (evt.type) { case EventType.DragUpdated: case EventType.DragPerform: if (!dropArea.Contains(evt.mousePosition)) { break; } DragAndDrop.visualMode = DragAndDropVisualMode.Copy; if (evt.type == EventType.DragPerform) { DragAndDrop.AcceptDrag(); foreach (var draggedObject in DragAndDrop.objectReferences) { var go = draggedObject as GameObject; if (!go) { continue; } unityGameObjects.Add(go); GameObject newObject = Instantiate(go, new Vector3(0.0f, 0.0f, 0.0f), Quaternion.identity) as GameObject; // newObject.hideFlags = HideFlags.HideAndDontSave; PrefabSettings pSetting = new PrefabSettings(); int index = iconData.settings.FindIndex(x => x.Go == go); // load from icon data if (index != -1) { pSetting.Go = go; pSetting.cameraSize = iconData.settings[index].cameraSize; pSetting.offset = iconData.settings[index].offset; pSetting.cameraRotate = iconData.settings[index].cameraRotate; pSetting.cameraTilt = iconData.settings[index].cameraTilt; _camTilt.transform.localRotation = Quaternion.Euler(new Vector3(pSetting.cameraTilt, 45, 0)); _camRotate.transform.localRotation = Quaternion.Euler(new Vector3(0, pSetting.cameraRotate, 0)); } // add to icon data else { Bounds bb = GetMaxBounds(newObject); float max = Mathf.Max(bb.size.x, bb.size.y, bb.size.z); pSetting.Go = go; pSetting.originalY = bb.center.y; pSetting.cameraSize = max; pSetting.offset = new Vector2(0, 0); pSetting.cameraRotate = 0.0f; pSetting.cameraTilt = 0.0f; iconData.settings.Add(pSetting); } controlToggles.Add(false); prefabs.Add(pSetting); inSceneObjects.Add(newObject); } UpdateScene(unityGameObjects.Count - 1); RenderNow(); } Event.current.Use(); break; } }