Exemple #1
0
        void OverrideWind()
        {
            if (TVEManager.Instance != null)
            {
                globalMotion = TVEManager.Instance.globalMotion;
            }

            if (globalMotion != null)
            {
                windPower            = globalMotion.windPower;
                globalMotion.enabled = false;
            }
        }
        void OnEnable()
        {
            Instance = this;

            if (globalMotion == null)
            {
                GameObject go = new GameObject();

                go.AddComponent <MeshFilter>();
                go.GetComponent <MeshFilter>().mesh = Resources.Load <Mesh>("ArrowMesh");

                go.AddComponent <MeshRenderer>();
                go.GetComponent <MeshRenderer>().sharedMaterial = Resources.Load <Material>("ArrowMotion");

                go.AddComponent <TVEGlobalMotion>();

                SetParent(go);

                go.transform.localPosition = new Vector3(0, 2f, 0);

                globalMotion         = go.GetComponent <TVEGlobalMotion>();
                globalMotion.enabled = true;
            }

            if (globalShading == null)
            {
                GameObject go = new GameObject();
                go.AddComponent <TVEGlobalShading>();
                SetParent(go);

                globalShading = go.GetComponent <TVEGlobalShading>();

                SetGlobalLightingMainLight();
            }

            if (globalSeasons == null)
            {
                GameObject go = new GameObject();
                go.AddComponent <TVEGlobalSeasons>();
                SetParent(go);

                globalSeasons = go.GetComponent <TVEGlobalSeasons>();
            }

            if (globalOverlay == null)
            {
                GameObject go = new GameObject();
                go.AddComponent <TVEGlobalOverlay>();

                SetParent(go);

                globalOverlay = go.GetComponent <TVEGlobalOverlay>();
            }

            if (globalWetness == null)
            {
                GameObject go = new GameObject();
                go.AddComponent <TVEGlobalWetness>();
                SetParent(go);

                globalWetness = go.GetComponent <TVEGlobalWetness>();
            }

            if (globalSizeFade == null)
            {
                GameObject go = new GameObject();
                go.AddComponent <TVEGlobalSizeFade>();
                SetParent(go);

                globalSizeFade = go.GetComponent <TVEGlobalSizeFade>();
            }

            if (globalVolume == null)
            {
                GameObject go = new GameObject();
                go.AddComponent <TVEGlobalVolume>();
                SetParent(go);

                go.transform.localScale = new Vector3(200, 200, 200);

                globalVolume = go.GetComponent <TVEGlobalVolume>();
                globalVolume.globalMotion = globalMotion.gameObject;

                SetGlobalVolumeDefaultBuffers();
            }

            if (isInitialized == false)
            {
                Debug.Log("[The Vegetation Engine] " + "The Vegetation Engine is set in the current scene! Check the Documentation for the next steps!");
                userVersion   = assetVersion;
                isInitialized = true;
            }

            if (userVersion < 150)
            {
                UpgradeTo150();
            }

            if (userVersion < 200)
            {
                UpgradeTo200();
            }
        }
Exemple #3
0
        void OnGUI()
        {
            SetGUIStyles();

            GUI_HALF_WIDTH = this.position.width / 2.0f - 24;

            StyledGUI.DrawWindowBanner(bannerColor, bannerText, helpURL);

            GUILayout.BeginHorizontal();
            GUILayout.Space(15);

            GUILayout.BeginVertical();

            GUILayout.Space(-2);

            if (isValid && prefabObjects.Count > 0)
            {
                EditorGUILayout.HelpBox("Move the slider to owerride the Mixed values for prefabs with different material settings. Please note that Undo is not supported for the Prefab Settings window!", MessageType.Info, true);

                if (useProceduralVariation)
                {
                    EditorGUILayout.HelpBox("Procedural variation detected! Use the Scale settings if the Variation is breaking the bending and rolling animation!", MessageType.Warning, true);
                }
            }
            else
            {
                if (isValid == false)
                {
                    EditorGUILayout.HelpBox("The Vegetation Engine manager is missing from your scene. Make sure setup it up first and the reopen the Prefab Converter!", MessageType.Warning, true);
                }
                else if (prefabObjects.Count == 0)
                {
                    EditorGUILayout.HelpBox("Select a prefab or multiple prefabs to get started!", MessageType.Info, true);
                }
            }

            scrollPosition = GUILayout.BeginScrollView(scrollPosition, false, false, GUILayout.Width(this.position.width - 28), GUILayout.Height(this.position.height - 200));

            if (isValid == false || prefabObjects.Count == 0)
            {
                GUI.enabled = false;
            }

            DrawWindPower();

            SetGlobalShaderProperties();

            if (TVEManager.Instance == null)
            {
                globalMotion = TVEManager.Instance.globalMotion;
            }

            if (prefabObjects.Count > 0)
            {
                GUILayout.Space(5);
            }

            DrawPrefabObjects();

            GUILayout.Space(15);

            presetIndex = StyledPopup("Material Preset", presetIndex, presetOptions);

            if (presetIndex > 0)
            {
                GetPresetLines();

                for (int i = 0; i < prefabMaterials.Count; i++)
                {
                    var material = prefabMaterials[i];

                    GetMaterialConversionFromPreset(material);
                    TVEShaderUtils.SetMaterialSettings(material);
                }

                materialData = new List <TVEMaterialData>();
                materialData.AddRange(motionData);
                materialData.AddRange(globalData);
                materialData.AddRange(subsurfaceData);
                materialData.AddRange(mainData);
                materialData.AddRange(secondData);
                materialData.AddRange(gradientAndNoiseData);
                materialData.AddRange(billboardAndGrassData);

                GetInitMaterialProperties();
                GetMaterialProperties();

                presetIndex      = 0;
                settingsIndexOld = -1;
            }

            settingsIndex = StyledPopup("Material Settings", settingsIndex, materialOptions);

            if (settingsIndexOld != settingsIndex)
            {
                materialData = new List <TVEMaterialData>();

                if (settingsIndex == 0)
                {
                    materialData.AddRange(motionData);
                    materialData.AddRange(globalData);
                    materialData.AddRange(subsurfaceData);
                    materialData.AddRange(mainData);
                    materialData.AddRange(secondData);
                    materialData.AddRange(gradientAndNoiseData);
                    materialData.AddRange(billboardAndGrassData);
                }
                else if (settingsIndex == 1)
                {
                    materialData = motionData;
                }
                else if (settingsIndex == 2)
                {
                    materialData.AddRange(globalData);
                    materialData.AddRange(subsurfaceData);
                    materialData.AddRange(mainData);
                    materialData.AddRange(secondData);
                    materialData.AddRange(gradientAndNoiseData);
                    materialData.AddRange(billboardAndGrassData);
                }
                else if (settingsIndex == 3)
                {
                    materialData = globalData;
                }
                else if (settingsIndex == 4)
                {
                    materialData = subsurfaceData;
                }
                else if (settingsIndex == 5)
                {
                    materialData = mainData;
                }
                else if (settingsIndex == 6)
                {
                    materialData = secondData;
                }
                else if (settingsIndex == 7)
                {
                    materialData = gradientAndNoiseData;
                }
                else if (settingsIndex == 8)
                {
                    materialData = billboardAndGrassData;
                }

                settingsIndexOld = settingsIndex;
            }

            for (int i = 0; i < materialData.Count; i++)
            {
                if (materialData[i].type == TVEMaterialData.PropertyType.Range)
                {
                    materialData[i].value = StyledSlider(materialData[i].name, materialData[i].value, materialData[i].min, materialData[i].max, materialData[i].snap, materialData[i].space);
                }
                else if (materialData[i].type == TVEMaterialData.PropertyType.Color)
                {
                    materialData[i].color = StyledColor(materialData[i].name, materialData[i].color, materialData[i].hdr, materialData[i].space);
                }
            }

            GUILayout.Space(10);

            SavePreset();

            SetMaterialProperties();

            GUILayout.EndScrollView();

            GUILayout.EndVertical();

            GUILayout.Space(13);
            GUILayout.EndHorizontal();
        }