Inheritance: MonoBehaviour
	public void Update () 
	{
		if (!waterBase)
			waterBase = (WaterBase)gameObject.GetComponent(typeof(WaterBase));				
		
		if (specularLight && waterBase.sharedMaterial)
			waterBase.sharedMaterial.SetVector("_WorldLightDir", specularLight.transform.forward);
	}
Example #2
0
    private void AcquireComponents()
    {
        if (!reflection)
            if (transform.parent)
                reflection = transform.parent.GetComponent<PlanarReflection>();
            else
                reflection = transform.GetComponent<PlanarReflection>();

        if (!waterBase)
            if (transform.parent)
                waterBase = transform.parent.GetComponent<WaterBase>();
            else
                waterBase = transform.GetComponent<WaterBase>();
    }
Example #3
0
 void AcquireComponents()
 {
     if (!waterBase)
     {
         if (transform.parent)
         {
             waterBase = transform.parent.GetComponent<WaterBase>();
         }
         else
         {
             waterBase = transform.GetComponent<WaterBase>();
         }
     }
 }
Example #4
0
    // Token: 0x06002B2C RID: 11052 RVA: 0x000A0A24 File Offset: 0x0009EC24
    protected void RefreshSettings()
    {
        WaterBase        component  = base.GetComponent <WaterBase>();
        PlanarReflection component2 = base.GetComponent <PlanarReflection>();

        if (!component)
        {
            return;
        }
        if (global::render.level > 0.8f)
        {
            component.waterQuality = 2;
            component.edgeBlend    = true;
        }
        else if (global::render.level > 0.5f)
        {
            component.waterQuality = 1;
            component.edgeBlend    = false;
        }
        else
        {
            component.waterQuality = 0;
            component.edgeBlend    = false;
        }
        if (global::water.level != -1)
        {
            component.waterQuality = Mathf.Clamp(global::water.level - 1, 0, 2);
            component.edgeBlend    = (global::water.level == 2);
        }
        if (component2)
        {
            component2.reflectionMask = 13111296;
            if (!global::water.reflection)
            {
                component2.reflectionMask = 8388608;
            }
        }
    }
Example #5
0
    protected void RefreshSettings()
    {
        WaterBase        component        = base.GetComponent <WaterBase>();
        PlanarReflection planarReflection = base.GetComponent <PlanarReflection>();

        if (!component)
        {
            return;
        }
        if (render.level > 0.8f)
        {
            component.waterQuality = WaterQuality.High;
            component.edgeBlend    = true;
        }
        else if (render.level <= 0.5f)
        {
            component.waterQuality = WaterQuality.Low;
            component.edgeBlend    = false;
        }
        else
        {
            component.waterQuality = WaterQuality.Medium;
            component.edgeBlend    = false;
        }
        if (water.level != -1)
        {
            component.waterQuality = (WaterQuality)Mathf.Clamp(water.level - 1, 0, 2);
            component.edgeBlend    = water.level == 2;
        }
        if (planarReflection)
        {
            planarReflection.reflectionMask = 13111296;
            if (!water.reflection)
            {
                planarReflection.reflectionMask = 8388608;
            }
        }
    }
Example #6
0
    protected void RefreshSettings()
    {
        WaterBase        component  = base.GetComponent <WaterBase>();
        PlanarReflection reflection = base.GetComponent <PlanarReflection>();

        if (component != null)
        {
            if (render.level > 0.8f)
            {
                component.waterQuality = WaterQuality.High;
                component.edgeBlend    = true;
            }
            else if (render.level > 0.5f)
            {
                component.waterQuality = WaterQuality.Medium;
                component.edgeBlend    = false;
            }
            else
            {
                component.waterQuality = WaterQuality.Low;
                component.edgeBlend    = false;
            }
            if (water.level != -1)
            {
                component.waterQuality = (WaterQuality)Mathf.Clamp(water.level - 1, 0, 2);
                component.edgeBlend    = water.level == 2;
            }
            if (reflection != null)
            {
                reflection.reflectionMask = 0xc81000;
                if (!water.reflection)
                {
                    reflection.reflectionMask = 0x800000;
                }
            }
        }
    }
Example #7
0
    public override void OnInspectorGUI()
    {
        serObj.Update();

        GameObject go = ((GerstnerDisplace)serObj.targetObject).gameObject;
        WaterBase  wb = (WaterBase)go.GetComponent(typeof(WaterBase));
        Material   sharedWaterMaterial = wb.sharedMaterial;

        GUILayout.Label("Animates vertices using up 4 generated waves", EditorStyles.miniBoldLabel);

        if (sharedWaterMaterial)
        {
            Vector4 amplitude   = WaterEditorUtility.GetMaterialVector("_GAmplitude", sharedWaterMaterial);
            Vector4 frequency   = WaterEditorUtility.GetMaterialVector("_GFrequency", sharedWaterMaterial);
            Vector4 steepness   = WaterEditorUtility.GetMaterialVector("_GSteepness", sharedWaterMaterial);
            Vector4 speed       = WaterEditorUtility.GetMaterialVector("_GSpeed", sharedWaterMaterial);
            Vector4 directionAB = WaterEditorUtility.GetMaterialVector("_GDirectionAB", sharedWaterMaterial);
            Vector4 directionCD = WaterEditorUtility.GetMaterialVector("_GDirectionCD", sharedWaterMaterial);

            amplitude   = EditorGUILayout.Vector4Field("Amplitude (Height offset)", amplitude);
            frequency   = EditorGUILayout.Vector4Field("Frequency (Tiling)", frequency);
            steepness   = EditorGUILayout.Vector4Field("Steepness", steepness);
            speed       = EditorGUILayout.Vector4Field("WalkSpeed", speed);
            directionAB = EditorGUILayout.Vector4Field("Direction scale (Wave 1 (X,Y) and 2 (Z,W))", directionAB);
            directionCD = EditorGUILayout.Vector4Field("Direction scale (Wave 3 (X,Y) and 4 (Z,W))", directionCD);

            if (GUI.changed)
            {
                WaterEditorUtility.SetMaterialVector("_GAmplitude", amplitude, sharedWaterMaterial);
                WaterEditorUtility.SetMaterialVector("_GFrequency", frequency, sharedWaterMaterial);
                WaterEditorUtility.SetMaterialVector("_GSteepness", steepness, sharedWaterMaterial);
                WaterEditorUtility.SetMaterialVector("_GSpeed", speed, sharedWaterMaterial);
                WaterEditorUtility.SetMaterialVector("_GDirectionAB", directionAB, sharedWaterMaterial);
                WaterEditorUtility.SetMaterialVector("_GDirectionCD", directionCD, sharedWaterMaterial);
            }

            /*
             *
             * Vector4 animationTiling = WaterEditorUtility.GetMaterialVector("_AnimationTiling", sharedWaterMaterial);
             * Vector4 animationDirection = WaterEditorUtility.GetMaterialVector("_AnimationDirection", sharedWaterMaterial);
             *
             * float firstTilingU = animationTiling.x*100.0F;
             * float firstTilingV = animationTiling.y*100.0F;
             * float firstDirectionU = animationDirection.x;
             * float firstDirectionV = animationDirection.y;
             *
             * float secondTilingU = animationTiling.z*100.0F;
             * float secondTilingV = animationTiling.w*100.0F;
             * float secondDirectionU = animationDirection.z;
             * float secondDirectionV = animationDirection.w;
             *
             *
             * EditorGUILayout.BeginHorizontal ();
             * firstTilingU = EditorGUILayout.FloatField("First Tiling U", firstTilingU);
             * firstTilingV = EditorGUILayout.FloatField("First Tiling V", firstTilingV);
             * EditorGUILayout.EndHorizontal ();
             * EditorGUILayout.BeginHorizontal ();
             * secondTilingU = EditorGUILayout.FloatField("Second Tiling U", secondTilingU);
             * secondTilingV = EditorGUILayout.FloatField("Second Tiling V", secondTilingV);
             * EditorGUILayout.EndHorizontal ();
             *
             * EditorGUILayout.BeginHorizontal ();
             * firstDirectionU = EditorGUILayout.FloatField("1st Animation U", firstDirectionU);
             * firstDirectionV = EditorGUILayout.FloatField("1st Animation V", firstDirectionV);
             * EditorGUILayout.EndHorizontal ();
             * EditorGUILayout.BeginHorizontal ();
             * secondDirectionU = EditorGUILayout.FloatField("2nd Animation U", secondDirectionU);
             * secondDirectionV = EditorGUILayout.FloatField("2nd Animation V", secondDirectionV);
             * EditorGUILayout.EndHorizontal ();
             *
             * animationDirection = new Vector4(firstDirectionU,firstDirectionV, secondDirectionU,secondDirectionV);
             * animationTiling = new Vector4(firstTilingU/100.0F,firstTilingV/100.0F, secondTilingU/100.0F,secondTilingV/100.0F);
             *
             * WaterEditorUtility.SetMaterialVector("_AnimationTiling", animationTiling, sharedWaterMaterial);
             * WaterEditorUtility.SetMaterialVector("_AnimationDirection", animationDirection, sharedWaterMaterial);
             *
             * EditorGUILayout.Separator ();
             *
             * GUILayout.Label ("Displacement Strength", EditorStyles.boldLabel);
             *
             * float heightDisplacement = WaterEditorUtility.GetMaterialFloat("_HeightDisplacement", sharedWaterMaterial);
             *
             * heightDisplacement = EditorGUILayout.Slider("Height", heightDisplacement, 0.0F, 5.0F);
             * WaterEditorUtility.SetMaterialFloat("_HeightDisplacement", heightDisplacement, sharedWaterMaterial);
             */
        }

        serObj.ApplyModifiedProperties();
    }
    public override void OnInspectorGUI()
    {
        serObj.Update();

        waterBase = (WaterBase)serObj.targetObject;
        oceanBase = ((WaterBase)serObj.targetObject).gameObject;
        if(!oceanBase)
          		return;

        GUILayout.Label ("This script helps adjusting water material properties", EditorStyles.miniBoldLabel);

        EditorGUILayout.PropertyField(sharedMaterial, new GUIContent("Material"));
        oceanMaterial = (Material)sharedMaterial.objectReferenceValue;

        if (!oceanMaterial) {
            sharedMaterial.objectReferenceValue = (Object)WaterEditorUtility.LocateValidWaterMaterial(oceanBase.transform);
            serObj.ApplyModifiedProperties();
            oceanMaterial = (Material)sharedMaterial.objectReferenceValue;
            if (!oceanMaterial)
                return;
        }

        EditorGUILayout.Separator ();

        GUILayout.Label ("Overall Quality", EditorStyles.boldLabel);
           		EditorGUILayout.PropertyField(waterQuality, new GUIContent("Quality"));
           		EditorGUILayout.PropertyField(edgeBlend, new GUIContent("Edge blend?"));

        if(waterQuality.intValue > (int)WaterQuality.Low && !SystemInfo.supportsRenderTextures)
            EditorGUILayout.HelpBox("Water features not supported", MessageType.Warning);
        if(edgeBlend.boolValue && !SystemInfo.SupportsRenderTextureFormat(RenderTextureFormat.Depth))
            EditorGUILayout.HelpBox("Edge blend not supported", MessageType.Warning);

        EditorGUILayout.Separator ();

        bool hasShore = oceanMaterial.HasProperty("_ShoreTex");

        GUILayout.Label ("Main Colors", EditorStyles.boldLabel);
        GUILayout.Label ("Alpha values define blending with realtime textures", EditorStyles.miniBoldLabel);

        WaterEditorUtility.SetMaterialColor("_BaseColor", EditorGUILayout.ColorField("Refraction", WaterEditorUtility.GetMaterialColor("_BaseColor", oceanMaterial)), oceanMaterial);
        WaterEditorUtility.SetMaterialColor("_ReflectionColor", EditorGUILayout.ColorField("Reflection", WaterEditorUtility.GetMaterialColor("_ReflectionColor", oceanMaterial)), oceanMaterial);

        EditorGUILayout.Separator ();

        GUILayout.Label ("Main Textures", EditorStyles.boldLabel);
        GUILayout.Label ("Used for small waves (bumps), foam and white caps", EditorStyles.miniBoldLabel);

        WaterEditorUtility.SetMaterialTexture("_BumpMap",(Texture)EditorGUILayout.ObjectField("Normals", WaterEditorUtility.GetMaterialTexture("_BumpMap", waterBase.sharedMaterial), typeof(Texture), false), waterBase.sharedMaterial);
        if (hasShore)
            WaterEditorUtility.SetMaterialTexture("_ShoreTex", (Texture)EditorGUILayout.ObjectField("Shore & Foam", WaterEditorUtility.GetMaterialTexture("_ShoreTex", waterBase.sharedMaterial), typeof(Texture), false), waterBase.sharedMaterial);

        Vector4 animationTiling;
        Vector4 animationDirection;

        Vector2 firstTiling;
        Vector2 secondTiling;
        Vector2 firstDirection;
        Vector2 secondDirection;

        animationTiling = WaterEditorUtility.GetMaterialVector("_BumpTiling", oceanMaterial);
        animationDirection = WaterEditorUtility.GetMaterialVector("_BumpDirection", oceanMaterial);

        firstTiling = new Vector2(animationTiling.x*100.0F,animationTiling.y*100.0F);
        secondTiling = new Vector2(animationTiling.z*100.0F,animationTiling.w*100.0F);

        firstTiling = EditorGUILayout.Vector2Field("Tiling 1", firstTiling);
        secondTiling = EditorGUILayout.Vector2Field("Tiling 2", secondTiling);

        //firstTiling.x = EditorGUILayout.FloatField("1st Tiling U", firstTiling.x);
        //firstTiling.y = EditorGUILayout.FloatField("1st Tiling V", firstTiling.y);
        //secondTiling.x = EditorGUILayout.FloatField("2nd Tiling U", secondTiling.x);
        //secondTiling.y = EditorGUILayout.FloatField("2nd Tiling V", secondTiling.y);

        firstDirection = new Vector2(animationDirection.x,animationDirection.y);
        secondDirection = new Vector2(animationDirection.z,animationDirection.w);

        //firstDirection.x = EditorGUILayout.FloatField("1st Animation U", firstDirection.x);
        //firstDirection.y = EditorGUILayout.FloatField("1st Animation V", firstDirection.y);
        //secondDirection.x = EditorGUILayout.FloatField("2nd Animation U", secondDirection.x);
        //secondDirection.y = EditorGUILayout.FloatField("2nd Animation V", secondDirection.y);

        firstDirection = EditorGUILayout.Vector2Field("Direction 1", firstDirection);
        secondDirection = EditorGUILayout.Vector2Field("Direction 2", secondDirection);

        animationTiling = new Vector4(firstTiling.x/100.0F,firstTiling.y/100.0F, secondTiling.x/100.0F,secondTiling.y/100.0F);
        animationDirection = new Vector4(firstDirection.x,firstDirection.y, secondDirection.x,secondDirection.y);

        WaterEditorUtility.SetMaterialVector("_BumpTiling", animationTiling, oceanMaterial);
        WaterEditorUtility.SetMaterialVector("_BumpDirection", animationDirection, oceanMaterial);

        Vector4 displacementParameter = WaterEditorUtility.GetMaterialVector("_DistortParams", oceanMaterial);
        Vector4 fade = WaterEditorUtility.GetMaterialVector("_InvFadeParemeter", oceanMaterial);

        EditorGUILayout.Separator ();

        GUILayout.Label ("Normals", EditorStyles.boldLabel);
        GUILayout.Label ("Displacement for fresnel, specular and reflection/refraction", EditorStyles.miniBoldLabel);

        float gerstnerNormalIntensity = WaterEditorUtility.GetMaterialFloat("_GerstnerIntensity", oceanMaterial);
        gerstnerNormalIntensity = EditorGUILayout.Slider("Per Vertex", gerstnerNormalIntensity, -2.5F, 2.5F);
        WaterEditorUtility.SetMaterialFloat("_GerstnerIntensity", gerstnerNormalIntensity, oceanMaterial);

        displacementParameter.x = EditorGUILayout.Slider("Per Pixel", displacementParameter.x, -4.0F, 4.0F);
        displacementParameter.y = EditorGUILayout.Slider("Distortion", displacementParameter.y, -0.5F, 0.5F);
        // fade.z = EditorGUILayout.Slider("Distance fade", fade.z, 0.0f, 0.5f);

        EditorGUILayout.Separator ();

        GUILayout.Label ("Fresnel", EditorStyles.boldLabel);
        GUILayout.Label ("Defines reflection to refraction relation", EditorStyles.miniBoldLabel);

        if(!oceanMaterial.HasProperty("_Fresnel")) {
            if(oceanMaterial.HasProperty("_FresnelScale")) {
                float fresnelScale = EditorGUILayout.Slider("Intensity", WaterEditorUtility.GetMaterialFloat("_FresnelScale", oceanMaterial), 0.1F, 4.0F);
                WaterEditorUtility.SetMaterialFloat("_FresnelScale", fresnelScale, oceanMaterial);
            }
            displacementParameter.z = EditorGUILayout.Slider("Power", displacementParameter.z, 0.1F, 10.0F);
            displacementParameter.w = EditorGUILayout.Slider("Bias", displacementParameter.w, -3.0F, 3.0F);
        }
        else
        {
            Texture fresnelTex = (Texture)EditorGUILayout.ObjectField(
                    "Ramp",
                    (Texture)WaterEditorUtility.GetMaterialTexture("_Fresnel",
                    oceanMaterial),
                    typeof(Texture),
                    false);
            WaterEditorUtility.SetMaterialTexture("_Fresnel", fresnelTex, oceanMaterial);
        }

        EditorGUILayout.Separator ();

        WaterEditorUtility.SetMaterialVector("_DistortParams", displacementParameter, oceanMaterial);

        if (edgeBlend.boolValue)
        {
            GUILayout.Label ("Fading", EditorStyles.boldLabel);

            fade.x = EditorGUILayout.Slider("Edge fade", fade.x, 0.001f, 3.0f);
            if(hasShore)
                fade.y = EditorGUILayout.Slider("Shore fade", fade.y, 0.001f, 3.0f);
            fade.w = EditorGUILayout.Slider("Extinction fade", fade.w, 0.0f, 2.5f);

            WaterEditorUtility.SetMaterialVector("_InvFadeParemeter", fade, oceanMaterial);
        }
        EditorGUILayout.Separator ();

        if(oceanMaterial.HasProperty("_Foam")) {
            GUILayout.Label ("Foam", EditorStyles.boldLabel);

            Vector4 foam = WaterEditorUtility.GetMaterialVector("_Foam", oceanMaterial);

            foam.x = EditorGUILayout.Slider("Intensity", foam.x, 0.0F, 1.0F);
            foam.y = EditorGUILayout.Slider("Cutoff", foam.y, 0.0F, 1.0F);

            WaterEditorUtility.SetMaterialVector("_Foam", foam, oceanMaterial);
        }

        serObj.ApplyModifiedProperties();
    }
Example #9
0
    public override void OnInspectorGUI()
    {
        serObj.Update();

        waterBase = (WaterBase)serObj.targetObject;
        oceanBase = ((WaterBase)serObj.targetObject).gameObject;
        if (!oceanBase)
        {
            return;
        }

        GUILayout.Label("This script helps adjusting water material properties", EditorStyles.miniBoldLabel);

        EditorGUILayout.PropertyField(sharedMaterial, new GUIContent("Material"));
        oceanMaterial = (Material)sharedMaterial.objectReferenceValue;

        if (!oceanMaterial)
        {
            sharedMaterial.objectReferenceValue = (Object)WaterEditorUtility.LocateValidWaterMaterial(oceanBase.transform);
            serObj.ApplyModifiedProperties();
            oceanMaterial = (Material)sharedMaterial.objectReferenceValue;
            if (!oceanMaterial)
            {
                return;
            }
        }

        EditorGUILayout.Separator();

        GUILayout.Label("Overall Quality", EditorStyles.boldLabel);
        EditorGUILayout.PropertyField(waterQuality, new GUIContent("Quality"));
        EditorGUILayout.PropertyField(edgeBlend, new GUIContent("Edge blend?"));

        EditorGUILayout.Separator();

        bool hasShore = oceanMaterial.HasProperty("_ShoreTex");

        GUILayout.Label("Main Colors", EditorStyles.boldLabel);
        GUILayout.Label("Alpha values define blending with realtime textures", EditorStyles.miniBoldLabel);

        EditorGUILayout.BeginHorizontal();
        WaterEditorUtility.SetMaterialColor("_BaseColor", EditorGUILayout.ColorField("Refraction", WaterEditorUtility.GetMaterialColor("_BaseColor", oceanMaterial)), oceanMaterial);
        WaterEditorUtility.SetMaterialColor("_ReflectionColor", EditorGUILayout.ColorField("Reflection", WaterEditorUtility.GetMaterialColor("_ReflectionColor", oceanMaterial)), oceanMaterial);
        EditorGUILayout.EndHorizontal();

        EditorGUILayout.Separator();

        GUILayout.Label("Main Textures", EditorStyles.boldLabel);
        GUILayout.Label("Used for small waves (bumps), foam and white caps", EditorStyles.miniBoldLabel);

        EditorGUILayout.BeginHorizontal();
        WaterEditorUtility.SetMaterialTexture("_BumpMap", (Texture)EditorGUILayout.ObjectField("Normals", WaterEditorUtility.GetMaterialTexture("_BumpMap", waterBase.sharedMaterial), typeof(Texture), false), waterBase.sharedMaterial);
        if (hasShore)
        {
            WaterEditorUtility.SetMaterialTexture("_ShoreTex", (Texture)EditorGUILayout.ObjectField("Shore & Foam", WaterEditorUtility.GetMaterialTexture("_ShoreTex", waterBase.sharedMaterial), typeof(Texture), false), waterBase.sharedMaterial);
        }
        EditorGUILayout.EndHorizontal();

        Vector4 animationTiling;
        Vector4 animationDirection;

        Vector2 firstTiling;
        Vector2 secondTiling;
        Vector2 firstDirection;
        Vector2 secondDirection;

        animationTiling    = WaterEditorUtility.GetMaterialVector("_BumpTiling", oceanMaterial);
        animationDirection = WaterEditorUtility.GetMaterialVector("_BumpDirection", oceanMaterial);

        firstTiling  = new Vector2(animationTiling.x * 100.0F, animationTiling.y * 100.0F);
        secondTiling = new Vector2(animationTiling.z * 100.0F, animationTiling.w * 100.0F);

        EditorGUILayout.BeginHorizontal();
        firstTiling.x = EditorGUILayout.FloatField("1st Tiling U", firstTiling.x);
        firstTiling.y = EditorGUILayout.FloatField("1st Tiling V", firstTiling.y);
        EditorGUILayout.EndHorizontal();
        EditorGUILayout.BeginHorizontal();
        secondTiling.x = EditorGUILayout.FloatField("2nd Tiling U", secondTiling.x);
        secondTiling.y = EditorGUILayout.FloatField("2nd Tiling V", secondTiling.y);
        EditorGUILayout.EndHorizontal();

        firstDirection  = new Vector2(animationDirection.x, animationDirection.y);
        secondDirection = new Vector2(animationDirection.z, animationDirection.w);

        EditorGUILayout.BeginHorizontal();
        firstDirection.x = EditorGUILayout.FloatField("1st Animation U", firstDirection.x);
        firstDirection.y = EditorGUILayout.FloatField("1st Animation V", firstDirection.y);
        EditorGUILayout.EndHorizontal();
        EditorGUILayout.BeginHorizontal();
        secondDirection.x = EditorGUILayout.FloatField("2nd Animation U", secondDirection.x);
        secondDirection.y = EditorGUILayout.FloatField("2nd Animation V", secondDirection.y);
        EditorGUILayout.EndHorizontal();

        animationTiling    = new Vector4(firstTiling.x / 100.0F, firstTiling.y / 100.0F, secondTiling.x / 100.0F, secondTiling.y / 100.0F);
        animationDirection = new Vector4(firstDirection.x, firstDirection.y, secondDirection.x, secondDirection.y);

        WaterEditorUtility.SetMaterialVector("_BumpTiling", animationTiling, oceanMaterial);
        WaterEditorUtility.SetMaterialVector("_BumpDirection", animationDirection, oceanMaterial);

        Vector4 displacementParameter = WaterEditorUtility.GetMaterialVector("_DistortParams", oceanMaterial);
        Vector4 fade = WaterEditorUtility.GetMaterialVector("_InvFadeParemeter", oceanMaterial);

        EditorGUILayout.Separator();

        GUILayout.Label("Normals", EditorStyles.boldLabel);
        GUILayout.Label("Displacement for fresnel, specular and reflection/refraction", EditorStyles.miniBoldLabel);

        float gerstnerNormalIntensity = WaterEditorUtility.GetMaterialFloat("_GerstnerIntensity", oceanMaterial);

        gerstnerNormalIntensity = EditorGUILayout.Slider("Per Vertex", gerstnerNormalIntensity, -2.5F, 2.5F);
        WaterEditorUtility.SetMaterialFloat("_GerstnerIntensity", gerstnerNormalIntensity, oceanMaterial);

        displacementParameter.x = EditorGUILayout.Slider("Per Pixel", displacementParameter.x, -4.0F, 4.0F);
        displacementParameter.y = EditorGUILayout.Slider("Distortion", displacementParameter.y, -0.5F, 0.5F);
        // fade.z = EditorGUILayout.Slider("Distance fade", fade.z, 0.0f, 0.5f);

        EditorGUILayout.Separator();

        GUILayout.Label("Fresnel", EditorStyles.boldLabel);
        GUILayout.Label("Defines reflection to refraction relation", EditorStyles.miniBoldLabel);

        if (!oceanMaterial.HasProperty("_Fresnel"))
        {
            if (oceanMaterial.HasProperty("_FresnelScale"))
            {
                float fresnelScale = EditorGUILayout.Slider("Intensity", WaterEditorUtility.GetMaterialFloat("_FresnelScale", oceanMaterial), 0.1F, 4.0F);
                WaterEditorUtility.SetMaterialFloat("_FresnelScale", fresnelScale, oceanMaterial);
            }
            displacementParameter.z = EditorGUILayout.Slider("Power", displacementParameter.z, 0.1F, 10.0F);
            displacementParameter.w = EditorGUILayout.Slider("Bias", displacementParameter.w, -3.0F, 3.0F);
        }
        else
        {
            Texture fresnelTex = (Texture)EditorGUILayout.ObjectField(
                "Ramp",
                (Texture)WaterEditorUtility.GetMaterialTexture("_Fresnel",
                                                               oceanMaterial),
                typeof(Texture),
                false);
            WaterEditorUtility.SetMaterialTexture("_Fresnel", fresnelTex, oceanMaterial);
        }

        EditorGUILayout.Separator();

        WaterEditorUtility.SetMaterialVector("_DistortParams", displacementParameter, oceanMaterial);

        if (edgeBlend.boolValue)
        {
            GUILayout.Label("Fading", EditorStyles.boldLabel);

            fade.x = EditorGUILayout.Slider("Edge fade", fade.x, 0.0f, 0.3f);
            if (hasShore)
            {
                fade.y = EditorGUILayout.Slider("Shore fade", fade.y, 0.0f, 0.3f);
            }
            fade.w = EditorGUILayout.Slider("Extinction fade", fade.w, 0.0f, 2.5f);

            WaterEditorUtility.SetMaterialVector("_InvFadeParemeter", fade, oceanMaterial);
        }
        EditorGUILayout.Separator();

        if (oceanMaterial.HasProperty("_Foam"))
        {
            GUILayout.Label("Foam", EditorStyles.boldLabel);

            Vector4 foam = WaterEditorUtility.GetMaterialVector("_Foam", oceanMaterial);

            foam.x = EditorGUILayout.Slider("Intensity", foam.x, 0.0F, 1.0F);
            foam.y = EditorGUILayout.Slider("Cutoff", foam.y, 0.0F, 1.0F);

            WaterEditorUtility.SetMaterialVector("_Foam", foam, oceanMaterial);
        }

        serObj.ApplyModifiedProperties();
    }
Example #10
0
 public void Start()
 {
     if(!waterBase)
         waterBase = (WaterBase) gameObject.GetComponent(typeof(WaterBase));
 }
    public override void OnInspectorGUI()
    {
        serObj.Update();

        GameObject go = ((GerstnerDisplace)serObj.targetObject).gameObject;
        WaterBase  wb = (WaterBase)go.GetComponent(typeof(WaterBase));
        Material   sharedWaterMaterial = wb.sharedMaterial;

        GUILayout.Label("Animates vertices using up to 4 generated waves", EditorStyles.miniBoldLabel);

        if (sharedWaterMaterial)
        {
            Vector4 amplitude   = WaterEditorUtility.GetMaterialVector("_GAmplitude", sharedWaterMaterial);
            Vector4 frequency   = WaterEditorUtility.GetMaterialVector("_GFrequency", sharedWaterMaterial);
            Vector4 steepness   = WaterEditorUtility.GetMaterialVector("_GSteepness", sharedWaterMaterial);
            Vector4 speed       = WaterEditorUtility.GetMaterialVector("_GSpeed", sharedWaterMaterial);
            Vector4 directionAB = WaterEditorUtility.GetMaterialVector("_GDirectionAB", sharedWaterMaterial);
            Vector4 directionCD = WaterEditorUtility.GetMaterialVector("_GDirectionCD", sharedWaterMaterial);

            float amplitudeA = amplitude.x;
            float amplitudeB = amplitude.y;
            float amplitudeC = amplitude.z;
            float amplitudeD = amplitude.w;

            float frequencyA = frequency.x;
            float frequencyB = frequency.y;
            float frequencyC = frequency.z;
            float frequencyD = frequency.w;

            float steepnessA = steepness.x;
            float steepnessB = steepness.y;
            float steepnessC = steepness.z;
            float steepnessD = steepness.w;

            float speedA = speed.x;
            float speedB = speed.y;
            float speedC = speed.z;
            float speedD = speed.w;

            float xDirectionA = directionAB.x;
            float yDirectionA = directionAB.y;
            float xDirectionB = directionAB.z;
            float yDirectionB = directionAB.w;
            float xDirectionC = directionCD.x;
            float yDirectionC = directionCD.y;
            float xDirectionD = directionCD.z;
            float yDirectionD = directionCD.w;

            GUILayout.Label("Wave A", EditorStyles.boldLabel);

            EditorGUILayout.BeginHorizontal();
            amplitudeA = EditorGUILayout.FloatField("Amplitude", amplitudeA);
            frequencyA = EditorGUILayout.FloatField("Frequency", frequencyA);
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal();
            steepnessA = EditorGUILayout.FloatField("Steepness", steepnessA);
            speedA     = EditorGUILayout.FloatField("Speed", speedA);
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal();
            xDirectionA = EditorGUILayout.FloatField("Direction (X)", xDirectionA);
            yDirectionA = EditorGUILayout.FloatField("Direction (Y)", yDirectionA);
            EditorGUILayout.EndHorizontal();

            GUILayout.Label("Wave B", EditorStyles.boldLabel);

            EditorGUILayout.BeginHorizontal();
            amplitudeB = EditorGUILayout.FloatField("Amplitude", amplitudeB);
            frequencyB = EditorGUILayout.FloatField("Frequency", frequencyB);
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal();
            steepnessB = EditorGUILayout.FloatField("Steepness", steepnessB);
            speedB     = EditorGUILayout.FloatField("Speed", speedB);
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal();
            xDirectionB = EditorGUILayout.FloatField("Direction (X)", xDirectionB);
            yDirectionB = EditorGUILayout.FloatField("Direction (Y)", yDirectionB);
            EditorGUILayout.EndHorizontal();

            GUILayout.Label("Wave C", EditorStyles.boldLabel);

            EditorGUILayout.BeginHorizontal();
            amplitudeC = EditorGUILayout.FloatField("Amplitude", amplitudeC);
            frequencyC = EditorGUILayout.FloatField("Frequency", frequencyC);
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal();
            steepnessC = EditorGUILayout.FloatField("Steepness", steepnessC);
            speedC     = EditorGUILayout.FloatField("Speed", speedC);
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal();
            xDirectionC = EditorGUILayout.FloatField("Direction (X)", xDirectionC);
            yDirectionC = EditorGUILayout.FloatField("Direction (Y)", yDirectionC);
            EditorGUILayout.EndHorizontal();

            GUILayout.Label("Wave D", EditorStyles.boldLabel);

            EditorGUILayout.BeginHorizontal();
            amplitudeD = EditorGUILayout.FloatField("Amplitude", amplitudeD);
            frequencyD = EditorGUILayout.FloatField("Frequency", frequencyD);
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal();
            steepnessD = EditorGUILayout.FloatField("Steepness", steepnessD);
            speedD     = EditorGUILayout.FloatField("Speed", speedD);
            EditorGUILayout.EndHorizontal();

            EditorGUILayout.BeginHorizontal();
            xDirectionD = EditorGUILayout.FloatField("Direction (X)", xDirectionD);
            yDirectionD = EditorGUILayout.FloatField("Direction (Y)", yDirectionD);
            EditorGUILayout.EndHorizontal();

            amplitude = new Vector4(amplitudeA, amplitudeB, amplitudeC, amplitudeD);
            frequency = new Vector4(frequencyA, frequencyB, frequencyC, frequencyD);
            steepness = new Vector4(steepnessA, steepnessB, steepnessC, steepnessD);
            speed     = new Vector4(speedA, speedB, speedC, speedD);
            float dirALen = 1.0f;
            float dirBLen = 1.0f;
            float dirCLen = 1.0f;
            float dirDLen = 1.0f;
            directionAB = new Vector4(xDirectionA / dirALen, yDirectionA / dirALen, xDirectionB / dirBLen, yDirectionB / dirBLen);
            directionCD = new Vector4(xDirectionC / dirCLen, yDirectionC / dirCLen, xDirectionD / dirDLen, yDirectionD / dirDLen);
            if (GUI.changed)
            {
                WaterEditorUtility.SetMaterialVector("_GAmplitude", amplitude, sharedWaterMaterial);
                WaterEditorUtility.SetMaterialVector("_GFrequency", frequency, sharedWaterMaterial);
                WaterEditorUtility.SetMaterialVector("_GSteepness", steepness, sharedWaterMaterial);
                WaterEditorUtility.SetMaterialVector("_GSpeed", speed, sharedWaterMaterial);
                WaterEditorUtility.SetMaterialVector("_GDirectionAB", directionAB, sharedWaterMaterial);
                WaterEditorUtility.SetMaterialVector("_GDirectionCD", directionCD, sharedWaterMaterial);
            }

            /*
             *
             * Vector4 animationTiling = WaterEditorUtility.GetMaterialVector("_AnimationTiling", sharedWaterMaterial);
             * Vector4 animationDirection = WaterEditorUtility.GetMaterialVector("_AnimationDirection", sharedWaterMaterial);
             *
             * float firstTilingU = animationTiling.x*100.0F;
             * float firstTilingV = animationTiling.y*100.0F;
             * float firstDirectionU = animationDirection.x;
             * float firstDirectionV = animationDirection.y;
             *
             * float secondTilingU = animationTiling.z*100.0F;
             * float secondTilingV = animationTiling.w*100.0F;
             * float secondDirectionU = animationDirection.z;
             * float secondDirectionV = animationDirection.w;
             *
             *
             * EditorGUILayout.BeginHorizontal ();
             * firstTilingU = EditorGUILayout.FloatField("First Tiling U", firstTilingU);
             * firstTilingV = EditorGUILayout.FloatField("First Tiling V", firstTilingV);
             * EditorGUILayout.EndHorizontal ();
             * EditorGUILayout.BeginHorizontal ();
             * secondTilingU = EditorGUILayout.FloatField("Second Tiling U", secondTilingU);
             * secondTilingV = EditorGUILayout.FloatField("Second Tiling V", secondTilingV);
             * EditorGUILayout.EndHorizontal ();
             *
             * EditorGUILayout.BeginHorizontal ();
             * firstDirectionU = EditorGUILayout.FloatField("1st Animation U", firstDirectionU);
             * firstDirectionV = EditorGUILayout.FloatField("1st Animation V", firstDirectionV);
             * EditorGUILayout.EndHorizontal ();
             * EditorGUILayout.BeginHorizontal ();
             * secondDirectionU = EditorGUILayout.FloatField("2nd Animation U", secondDirectionU);
             * secondDirectionV = EditorGUILayout.FloatField("2nd Animation V", secondDirectionV);
             * EditorGUILayout.EndHorizontal ();
             *
             * animationDirection = new Vector4(firstDirectionU,firstDirectionV, secondDirectionU,secondDirectionV);
             * animationTiling = new Vector4(firstTilingU/100.0F,firstTilingV/100.0F, secondTilingU/100.0F,secondTilingV/100.0F);
             *
             * WaterEditorUtility.SetMaterialVector("_AnimationTiling", animationTiling, sharedWaterMaterial);
             * WaterEditorUtility.SetMaterialVector("_AnimationDirection", animationDirection, sharedWaterMaterial);
             *
             * EditorGUILayout.Separator ();
             *
             * GUILayout.Label ("Displacement Strength", EditorStyles.boldLabel);
             *
             * float heightDisplacement = WaterEditorUtility.GetMaterialFloat("_HeightDisplacement", sharedWaterMaterial);
             *
             * heightDisplacement = EditorGUILayout.Slider("Height", heightDisplacement, 0.0F, 5.0F);
             * WaterEditorUtility.SetMaterialFloat("_HeightDisplacement", heightDisplacement, sharedWaterMaterial);
             */
        }

        serObj.ApplyModifiedProperties();
    }
Example #12
0
 public void Start()
 {
     waterBase = (WaterBase)GetComponent(typeof(WaterBase));
 }
Example #13
0
 private void Start()
 {
     this.sky = (TOD_Sky)UnityEngine.Object.FindObjectOfType(typeof(TOD_Sky));
     this.water = base.GetComponent<WaterBase>();
 }
Example #14
0
 public void Start()
 {
     waterBase = GetComponent <WaterBase>();
 }
Example #15
0
        public override void LoadContent()
        {
            switchCamera();

            midTerrain = new Vector3(terrain.terrainWidth / 2, waterLevel, terrain.terrainLength / 2);

              //Create water
            water = new WaterBase(midTerrain, waterLevel, new Vector2(terrain.TerrainWidth, terrain.TerrainLength), baseWaterKey, waveKey, baseWaterRowX, baseWaterRowY, "water", amountWaves, Game);
            Game.Components.Add(water);

            //Adding the models
            Models.AddModels addModels = new Models.AddModels(Game, models, terrain, modelmapKey, Game.Content);

            foreach (Models.LFModel model in models)
                if (!Game.Components.Contains(model))
                    Game.Components.Add(model);

            //Load songs.
            this.smallFireSong = Game.Assets.Load<Song>("flamesmall");
            this.mediumFireSong = Game.Assets.Load<Song>("flamemedium");
            this.bigFireSong = Game.Assets.Load<Song>("flamebig");
            this.songPlayTimeCounter = 0;
            this.currentlyPlaying = this.smallFireSong;
            MediaPlayer.Play(this.currentlyPlaying);

            //Load Soundeffects.
            SoundEffect s = Game.Assets.Load<SoundEffect>("collectmeteor");
            this.collectMeteorInstance = s.CreateInstance();
            s = Game.Assets.Load<SoundEffect>("treefall");
            this.treeFallInstance = s.CreateInstance();
            s = Game.Assets.Load<SoundEffect>("watersplash");
            this.waterSplash = s.CreateInstance();
            s = Game.Assets.Load<SoundEffect>("burnsomething");
            this.burnSomething = s.CreateInstance();
            s = Game.Assets.Load<SoundEffect>("collectstar");
            this.collectStarInstance = s.CreateInstance();

            foreach (Models.LFModel model in models) {
                if (model is Coal) {
                    Vector3 pos = model.Position + new Vector3(0, 0.5f, -1.5f);
                    BillBoard.HorizontalBillboarding circle = new BillBoard.HorizontalBillboarding(pos, pos.Y, new Vector2(6), Game.Assets.Load<Texture2D>("circle"), 1, 1, Game.GraphicsDevice, Game.Content, Game);
                    Game.Components.Add(circle);
                } else if (model is Meteoriet) {
                    Vector3 pos = model.Position + new Vector3(0, 32, 0);
                    BillBoard.VerticalBillBoard beam = new BillBoard.VerticalBillBoard(pos, pos.Y, new Vector2(6, 50), Game.Assets.Load<Texture2D>("lightbeam"), 1, 1, Game.GraphicsDevice, Game.Content, Game);
                    Game.Components.Add(beam);
                } else if (model is Tree && this is States.GreenHills.Tutorial) {
                    Vector3 pos = model.Position + new Vector3(0, 0.5f, 0f);
                    BillBoard.HorizontalBillboarding circle = new BillBoard.HorizontalBillboarding(pos, pos.Y, new Vector2(7), Game.Assets.Load<Texture2D>("circletree"), 1, 1, Game.GraphicsDevice, Game.Content, Game);
                    Game.Components.Add(circle);
                }
            }

            foreach (Models.LFModel model in models) {
                if (model is Meteoriet) {
                    Vector3 pos = model.Position + new Vector3(0.5f, 0.5f, 0f);
                    BillBoard.HorizontalBillboarding circle = new BillBoard.HorizontalBillboarding(pos, pos.Y, new Vector2(8), Game.Assets.Load<Texture2D>("circle"), 1, 1, Game.GraphicsDevice, Game.Content, Game);
                    Game.Components.Add(circle);
                }
            }

            // If there is a load file, load the game from that point.
            if (loadName != "") {
                loadProgress(loadName);
            }

            //Set the player's position
            player.Position = this.terrain.GetHeightAtPosition(startPosition.X, startPosition.Z, 0);

            //Create the sky
            sky = new Sky(Game, Game.Assets.Load<TextureCube>("sky"));
            Game.Components.Add(sky);
        }
Example #16
0
 public void Start()
 {
     waterBase = (WaterBase)gameObject.GetComponent(typeof(WaterBase));
 }
Example #17
0
 public void Start()
 {
     this.waterBase = (WaterBase)base.gameObject.GetComponent(typeof(WaterBase));
 }
    public override void OnInspectorGUI()
    {
        serObj.Update();

        waterBase = (WaterBase)serObj.targetObject;
        oceanBase = ((WaterBase)serObj.targetObject).gameObject;
        if(!oceanBase)
          		return;

        GUILayout.Label ("Materials serialized properties tweaking", EditorStyles.miniBoldLabel);

        EditorGUILayout.PropertyField(sharedMaterial, new GUIContent("Material"));
        oceanMaterial = (Material)sharedMaterial.objectReferenceValue;

        if (!oceanMaterial) {
            sharedMaterial.objectReferenceValue = (Object)WaterEditorUtility.LocateValidWaterMaterial(oceanBase.transform);
            serObj.ApplyModifiedProperties();
            oceanMaterial = (Material)sharedMaterial.objectReferenceValue;
            if (!oceanMaterial)
                return;
        }

        EditorGUILayout.Separator ();

        GUILayout.Label ("Overall quality", EditorStyles.boldLabel);
           		EditorGUILayout.PropertyField(waterQuality, new GUIContent("Quality"));
           		EditorGUILayout.PropertyField(edgeBlend, new GUIContent("Edge blend?"));

        EditorGUILayout.Separator ();

        bool hasShore = oceanMaterial.HasProperty("_ShoreTex");

        GUILayout.Label ("Color Blending", EditorStyles.boldLabel);
        GUILayout.Label ("Alpha values blending from realtime textures", EditorStyles.miniBoldLabel);

        EditorGUILayout.BeginHorizontal ();
        WaterEditorUtility.SetMaterialColor("_BaseColor", EditorGUILayout.ColorField("Refraction", WaterEditorUtility.GetMaterialColor("_BaseColor", oceanMaterial)), oceanMaterial);
        WaterEditorUtility.SetMaterialColor("_ReflectionColor", EditorGUILayout.ColorField("Reflection", WaterEditorUtility.GetMaterialColor("_ReflectionColor", oceanMaterial)), oceanMaterial);
        EditorGUILayout.EndHorizontal ();

        EditorGUILayout.Separator ();

        GUILayout.Label ("Main Textures", EditorStyles.boldLabel);
        EditorGUILayout.BeginHorizontal();
        WaterEditorUtility.SetMaterialTexture("_BumpMap",(Texture)EditorGUILayout.ObjectField("Normals", WaterEditorUtility.GetMaterialTexture("_BumpMap", waterBase.sharedMaterial), typeof(Texture), false), waterBase.sharedMaterial);
        if (hasShore)
            WaterEditorUtility.SetMaterialTexture("_ShoreTex", (Texture)EditorGUILayout.ObjectField("Shore & Foam", WaterEditorUtility.GetMaterialTexture("_ShoreTex", waterBase.sharedMaterial), typeof(Texture), false), waterBase.sharedMaterial);
        EditorGUILayout.EndHorizontal();

        EditorGUILayout.Separator ();

        Vector4 animationTiling;
        Vector4 animationDirection;

        Vector2 firstTiling;
        Vector2 secondTiling;
        Vector2 firstDirection;
        Vector2 secondDirection;

        GUILayout.Label ("Waves (Bump)", EditorStyles.boldLabel);
        GUILayout.Label ("Via two scrolling normal maps", EditorStyles.miniBoldLabel);

        animationTiling = WaterEditorUtility.GetMaterialVector("_BumpTiling", oceanMaterial);
        animationDirection = WaterEditorUtility.GetMaterialVector("_BumpDirection", oceanMaterial);

        firstTiling = new Vector2(animationTiling.x*100.0F,animationTiling.y*100.0F);
        secondTiling = new Vector2(animationTiling.z*100.0F,animationTiling.w*100.0F);

        EditorGUILayout.BeginHorizontal ();
        firstTiling.x = EditorGUILayout.FloatField("1st Tiling U", firstTiling.x);
        firstTiling.y = EditorGUILayout.FloatField("1st Tiling V", firstTiling.y);
        EditorGUILayout.EndHorizontal ();
        EditorGUILayout.BeginHorizontal ();
        secondTiling.x = EditorGUILayout.FloatField("2nd Tiling U", secondTiling.x);
        secondTiling.y = EditorGUILayout.FloatField("2nd Tiling V", secondTiling.y);
        EditorGUILayout.EndHorizontal ();

        firstDirection = new Vector2(animationDirection.x,animationDirection.y);
        secondDirection = new Vector2(animationDirection.z,animationDirection.w);

        EditorGUILayout.BeginHorizontal ();
        firstDirection.x = EditorGUILayout.FloatField("1st Animation U", firstDirection.x);
        firstDirection.y = EditorGUILayout.FloatField("1st Animation V", firstDirection.y);
        EditorGUILayout.EndHorizontal ();
        EditorGUILayout.BeginHorizontal ();
        secondDirection.x = EditorGUILayout.FloatField("2nd Animation U", secondDirection.x);
        secondDirection.y = EditorGUILayout.FloatField("2nd Animation V", secondDirection.y);
        EditorGUILayout.EndHorizontal ();

        animationTiling = new Vector4(firstTiling.x/100.0F,firstTiling.y/100.0F, secondTiling.x/100.0F,secondTiling.y/100.0F);
        animationDirection = new Vector4(firstDirection.x,firstDirection.y, secondDirection.x,secondDirection.y);

        WaterEditorUtility.SetMaterialVector("_BumpTiling", animationTiling, oceanMaterial);
        WaterEditorUtility.SetMaterialVector("_BumpDirection", animationDirection, oceanMaterial);

        Vector4 displacementParameter = WaterEditorUtility.GetMaterialVector("_DistortParams", oceanMaterial);
        Vector4 fade = WaterEditorUtility.GetMaterialVector("_InvFadeParemeter", oceanMaterial);

        displacementParameter.x = EditorGUILayout.Slider("Intensity", displacementParameter.x, -4.0F, 4.0F);
        displacementParameter.y = EditorGUILayout.Slider("Displacement", displacementParameter.y, -0.5F, 0.5F);
        fade.z = EditorGUILayout.Slider("Distance fade", fade.z, 0.0f, 0.5f);

        EditorGUILayout.Separator ();

        GUILayout.Label ("Fresnel", EditorStyles.boldLabel);

        if(!oceanMaterial.HasProperty("_Fresnel")) {
            if(oceanMaterial.HasProperty("_FresnelScale")) {
                float fresnelScale = EditorGUILayout.Slider("Intensity", WaterEditorUtility.GetMaterialFloat("_FresnelScale", oceanMaterial), 0.1F, 4.0F);
                WaterEditorUtility.SetMaterialFloat("_FresnelScale", fresnelScale, oceanMaterial);
            }
            displacementParameter.z = EditorGUILayout.Slider("Power", displacementParameter.z, 0.1F, 10.0F);
            displacementParameter.w = EditorGUILayout.Slider("Bias", displacementParameter.w, -3.0F, 3.0F);
        }
        else
        {
            Texture fresnelTex = (Texture)EditorGUILayout.ObjectField(
                    "Ramp",
                    (Texture)WaterEditorUtility.GetMaterialTexture("_Fresnel",
                    oceanMaterial),
                    typeof(Texture),
                    false);
            WaterEditorUtility.SetMaterialTexture("_Fresnel", fresnelTex, oceanMaterial);
        }

        EditorGUILayout.Separator ();

        WaterEditorUtility.SetMaterialVector("_DistortParams", displacementParameter, oceanMaterial);

        if (edgeBlend.boolValue)
        {
            GUILayout.Label ("Fading", EditorStyles.boldLabel);

            fade.x = EditorGUILayout.Slider("Edge fade", fade.x, 0.0f, 0.3f);
            if(hasShore)
                fade.y = EditorGUILayout.Slider("Shore fade", fade.y, 0.0f, 0.3f);
            fade.w = EditorGUILayout.Slider("Extinction fade", fade.w, 0.0f, 2.5f);

            WaterEditorUtility.SetMaterialVector("_InvFadeParemeter", fade, oceanMaterial);
        }
        EditorGUILayout.Separator ();

        if(oceanMaterial.HasProperty("_Foam")) {
            GUILayout.Label ("Foam", EditorStyles.boldLabel);

            Vector4 foam = WaterEditorUtility.GetMaterialVector("_Foam", oceanMaterial);

            foam.x = EditorGUILayout.Slider("Intensity", foam.x, 0.0F, 1.0F);
            foam.y = EditorGUILayout.Slider("Cutoff", foam.y, 0.0F, 1.0F);

            WaterEditorUtility.SetMaterialVector("_Foam", foam, oceanMaterial);
        }

        serObj.ApplyModifiedProperties();
    }
Example #19
0
 private void Start()
 {
     this.sky   = (TOD_Sky)UnityEngine.Object.FindObjectOfType(typeof(TOD_Sky));
     this.water = base.GetComponent <WaterBase>();
 }
Example #20
0
        public override void LoadContent()
        {
            switchCamera();

            midTerrain = new Vector3(terrain.terrainWidth / 2, waterLevel, terrain.terrainLength / 2);

            //Create water
            water = new WaterBase(midTerrain, waterLevel, new Vector2(terrain.TerrainWidth, terrain.TerrainLength), baseWaterKey, waveKey, baseWaterRowX, baseWaterRowY, "water", amountWaves, Game);
            Game.Components.Add(water);

            //Adding the models
            Models.AddModels addModels = new Models.AddModels(Game, models, terrain, modelmapKey, Game.Content);

            foreach (Models.LFModel model in models)
            {
                if (!Game.Components.Contains(model))
                {
                    Game.Components.Add(model);
                }
            }

            //Load songs.
            this.smallFireSong       = Game.Assets.Load <Song>("flamesmall");
            this.mediumFireSong      = Game.Assets.Load <Song>("flamemedium");
            this.bigFireSong         = Game.Assets.Load <Song>("flamebig");
            this.songPlayTimeCounter = 0;
            this.currentlyPlaying    = this.smallFireSong;
            MediaPlayer.Play(this.currentlyPlaying);

            //Load Soundeffects.
            SoundEffect s = Game.Assets.Load <SoundEffect>("collectmeteor");

            this.collectMeteorInstance = s.CreateInstance();
            s = Game.Assets.Load <SoundEffect>("treefall");
            this.treeFallInstance = s.CreateInstance();
            s = Game.Assets.Load <SoundEffect>("watersplash");
            this.waterSplash = s.CreateInstance();
            s = Game.Assets.Load <SoundEffect>("burnsomething");
            this.burnSomething = s.CreateInstance();
            s = Game.Assets.Load <SoundEffect>("collectstar");
            this.collectStarInstance = s.CreateInstance();

            foreach (Models.LFModel model in models)
            {
                if (model is Coal)
                {
                    Vector3 pos = model.Position + new Vector3(0, 0.5f, -1.5f);
                    BillBoard.HorizontalBillboarding circle = new BillBoard.HorizontalBillboarding(pos, pos.Y, new Vector2(6), Game.Assets.Load <Texture2D>("circle"), 1, 1, Game.GraphicsDevice, Game.Content, Game);
                    Game.Components.Add(circle);
                }
                else if (model is Meteoriet)
                {
                    Vector3 pos = model.Position + new Vector3(0, 32, 0);
                    BillBoard.VerticalBillBoard beam = new BillBoard.VerticalBillBoard(pos, pos.Y, new Vector2(6, 50), Game.Assets.Load <Texture2D>("lightbeam"), 1, 1, Game.GraphicsDevice, Game.Content, Game);
                    Game.Components.Add(beam);
                }
                else if (model is Tree && this is States.GreenHills.Tutorial)
                {
                    Vector3 pos = model.Position + new Vector3(0, 0.5f, 0f);
                    BillBoard.HorizontalBillboarding circle = new BillBoard.HorizontalBillboarding(pos, pos.Y, new Vector2(7), Game.Assets.Load <Texture2D>("circletree"), 1, 1, Game.GraphicsDevice, Game.Content, Game);
                    Game.Components.Add(circle);
                }
            }

            foreach (Models.LFModel model in models)
            {
                if (model is Meteoriet)
                {
                    Vector3 pos = model.Position + new Vector3(0.5f, 0.5f, 0f);
                    BillBoard.HorizontalBillboarding circle = new BillBoard.HorizontalBillboarding(pos, pos.Y, new Vector2(8), Game.Assets.Load <Texture2D>("circle"), 1, 1, Game.GraphicsDevice, Game.Content, Game);
                    Game.Components.Add(circle);
                }
            }

            // If there is a load file, load the game from that point.
            if (loadName != "")
            {
                loadProgress(loadName);
            }

            //Set the player's position
            player.Position = this.terrain.GetHeightAtPosition(startPosition.X, startPosition.Z, 0);

            //Create the sky
            sky = new Sky(Game, Game.Assets.Load <TextureCube>("sky"));
            Game.Components.Add(sky);
        }
Example #21
0
    public void DrawMapInEditor()
    {
        if (processus == 2)
        {
            if (heightLinear == 0)
            {
                waterMap = new float[101, 101];
                WaterBase.Params();
            }
        }
        if (witch == 1)
        {
            if (processus == 2)
            {
                Rain.SetActive(true);
                Cloud.SetActive(true);
                Sun.intensity         = .5f;
                RenderSettings.skybox = Rainning;
            }
            waterMap = RainSimulate();
        }
        if (witch == 4)
        {
            if (processus == 2)
            {
                waterMap = Wave.initWave(waterMap, 0.5f, 8);
            }
            waterMap = WaterBase.waterMove(waterMap, processus, 0.5f);
        }
        if (witch == 2)
        {
            if (processus == 2)
            {
                heightLinear += .05f;
                if (heightLinear <= 1)
                {
                    waterMap = Wave.initUniformWave(waterMap, heightLinear, 3);
                }
            }
            if (heightLinear <= 1)
            {
                waterMap = WaterBase.waterMove(waterMap, processus, heightLinear);
            }
            if (processus >= 102)
            {
                processus = 1;
            }
        }
        processus++;
        waterDisplay display = FindObjectOfType <waterDisplay>();

        display.DrawMesh(MeshGenerator.GenerateTerrainMesh(waterMap, multiplier, waterCurve));
        if ((waterMap[1, 1] >= 1 && witch == 1) || (processus >= 100 && witch == 4) || (heightLinear >= 1.05 && witch == 2))
        {
            instance.CancelInvoke();
            if (Rain.activeSelf)
            {
                Rain.SetActive(false);
                Cloud.SetActive(false);
                Sun.intensity         = 1f;
                RenderSettings.skybox = Sunning;
            }
            infos.text = "PrevSimulation is finish, remove water in 20 s";
            TextScenes.SetActive(true);
            remove = 1;
            InvokeRepeating("HideText", 5f, 10f);
        }
    }