155 lines
6.4 KiB
C#
155 lines
6.4 KiB
C#
/*
|
|
* Copyright (c) Contributors, http://opensimulator.org/
|
|
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
|
*
|
|
* Redistribution and use in source and binary forms, with or without
|
|
* modification, are permitted provided that the following conditions are met:
|
|
* * Redistributions of source code must retain the above copyright
|
|
* notice, this list of conditions and the following disclaimer.
|
|
* * Redistributions in binary form must reproduce the above copyright
|
|
* notice, this list of conditions and the following disclaimer in the
|
|
* documentation and/or other materials provided with the distribution.
|
|
* * Neither the name of the OpenSimulator Project nor the
|
|
* names of its contributors may be used to endorse or promote products
|
|
* derived from this software without specific prior written permission.
|
|
*
|
|
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
|
|
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
|
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
*/
|
|
|
|
using System.Collections.Generic;
|
|
using OpenMetaverse;
|
|
using OpenMetaverse.StructuredData;
|
|
|
|
namespace OpenSim.Framework
|
|
{
|
|
public class WaterData
|
|
{
|
|
public UUID normalMap = new UUID("822ded49-9a6c-f61c-cb89-6df54f42cdf4");
|
|
public UUID transpTexture = new UUID("2bfd3884-7e27-69b9-ba3a-3e673f680004");
|
|
|
|
public float blurMultiplier = 0.04f;
|
|
public float fresnelOffset = 0.5f;
|
|
public float fresnelScale = 0.4f;
|
|
public Vector3 normScale = new Vector3(2f, 2f, 2f);
|
|
public float scaleAbove = 0.03f;
|
|
public float scaleBelow = 0.2f;
|
|
public float underWaterFogMod = 0.25f;
|
|
public Vector3 waterFogColor = new Vector3(0.0156f, 0.149f, 0.2509f);
|
|
public float waterFogDensity = 10;
|
|
public Vector2 wave1Dir = new Vector2(1.05f, -0.42f);
|
|
public Vector2 wave2Dir = new Vector2(1.11f, -1.16f);
|
|
public string Name;
|
|
|
|
public void FromWLOSD(string name, OSD osd)
|
|
{
|
|
Vector4 v4tmp;
|
|
OSDMap map = osd as OSDMap;
|
|
blurMultiplier = map["blurMultiplier"];
|
|
fresnelOffset = map["fresnelOffset"];
|
|
fresnelScale = map["fresnelScale"];
|
|
normScale = map["normScale"];
|
|
normalMap = map["normalMap"];
|
|
scaleAbove = map["scaleAbove"];
|
|
scaleBelow = map["scaleBelow"];
|
|
underWaterFogMod = map["underWaterFogMod"];
|
|
v4tmp = map["waterFogColor"];
|
|
waterFogColor = new Vector3(v4tmp.X, v4tmp.Y, v4tmp.Z);
|
|
waterFogDensity = map["waterFogDensity"];
|
|
wave1Dir = map["wave1Dir"];
|
|
wave2Dir = map["wave2Dir"];
|
|
Name = name;
|
|
}
|
|
|
|
public OSDMap ToWLOSD()
|
|
{
|
|
OSDMap map = new OSDMap();
|
|
|
|
map["blurMultiplier"] = blurMultiplier;
|
|
map["fresnelOffset"] = fresnelOffset;
|
|
map["fresnelScale"] = fresnelScale;
|
|
map["normScale"] = normScale;
|
|
map["normalMap"] = normalMap;
|
|
map["scaleAbove"] = scaleAbove;
|
|
map["scaleBelow"] = scaleBelow;
|
|
map["underWaterFogMod"] = underWaterFogMod;
|
|
map["waterFogColor"] = new Vector4(waterFogColor.X, waterFogColor.Y, waterFogColor.Z, 1);
|
|
map["waterFogDensity"] = waterFogDensity;
|
|
//map["waterFogDensity"] = (float)Math.Pow(2.0f, waterFogDensity);
|
|
map["wave1Dir"] = wave1Dir;
|
|
map["wave2Dir"] = wave2Dir;
|
|
|
|
return map;
|
|
}
|
|
|
|
public void FromOSD(string name, OSDMap map)
|
|
{
|
|
OSD otmp;
|
|
if (map.TryGetValue("blur_multiplier", out otmp))
|
|
blurMultiplier = otmp;
|
|
if (map.TryGetValue("fresnel_offset", out otmp))
|
|
fresnelOffset = otmp;
|
|
if (map.TryGetValue("fresnel_scale", out otmp))
|
|
fresnelScale = otmp;
|
|
if (map.TryGetValue("normal_scale", out otmp))
|
|
normScale = otmp;
|
|
if (map.TryGetValue("normal_map", out otmp))
|
|
normalMap = otmp;
|
|
if (map.TryGetValue("scale_above", out otmp))
|
|
scaleAbove = otmp;
|
|
if (map.TryGetValue("scale_below", out otmp))
|
|
scaleBelow = otmp;
|
|
if (map.TryGetValue("underwater_fog_mod", out otmp))
|
|
underWaterFogMod = otmp;
|
|
if (map.TryGetValue("water_fog_color", out otmp))
|
|
waterFogColor = otmp;
|
|
if (map.TryGetValue("water_fog_density", out otmp))
|
|
waterFogDensity = otmp;
|
|
if (map.TryGetValue("wave1_direction", out otmp))
|
|
wave1Dir = otmp;
|
|
if (map.TryGetValue("wave2_direction", out otmp))
|
|
wave2Dir = otmp;
|
|
if (map.TryGetValue("transparent_texture", out otmp))
|
|
transpTexture = otmp;
|
|
|
|
Name = name;
|
|
}
|
|
|
|
public OSDMap ToOSD()
|
|
{
|
|
OSDMap map = new OSDMap();
|
|
|
|
map["blur_multiplier"] = blurMultiplier;
|
|
map["fresnel_offset"] = fresnelOffset;
|
|
map["fresnel_scale"] = fresnelScale;
|
|
map["normal_scale"] = normScale;
|
|
map["normal_map"] = normalMap;
|
|
map["scale_above"] = scaleAbove;
|
|
map["scale_below"] = scaleBelow;
|
|
map["underwater_fog_mod"] = underWaterFogMod;
|
|
map["water_fog_color"] = waterFogColor;
|
|
map["water_fog_density"] = waterFogDensity;
|
|
map["wave1_direction"] = wave1Dir;
|
|
map["wave2_direction"] = wave2Dir;
|
|
map["transparent_texture"] = transpTexture;
|
|
map["type"] ="water";
|
|
|
|
return map;
|
|
}
|
|
|
|
public void GatherAssets(Dictionary<UUID, sbyte> uuids)
|
|
{
|
|
Util.AddToGatheredIds(uuids, normalMap, (sbyte)AssetType.Texture);
|
|
Util.AddToGatheredIds(uuids, transpTexture, (sbyte)AssetType.Texture);
|
|
}
|
|
}
|
|
}
|