Наследование: UnityEngine.ScriptableObject
Пример #1
0
 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);
     }
   }
 }
Пример #2
0
    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();
            }
        }
    }
Пример #3
0
    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;
        }
    }