breaking map (warp3d)
parent
b91c0f0d01
commit
00cc17c239
|
@ -30,6 +30,8 @@ using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Data;
|
using System.Data;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
|
using System.Drawing;
|
||||||
|
using System.Drawing.Imaging;
|
||||||
using System.Globalization;
|
using System.Globalization;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.IO.Compression;
|
using System.IO.Compression;
|
||||||
|
@ -3442,6 +3444,34 @@ namespace OpenSim.Framework
|
||||||
m_log.ErrorFormat("{0} Failed XML ({1} bytes) = {2}", message, length, xml);
|
m_log.ErrorFormat("{0} Failed XML ({1} bytes) = {2}", message, length, xml);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Performs a high quality image resize
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="image">Image to resize</param>
|
||||||
|
/// <param name="width">New width</param>
|
||||||
|
/// <param name="height">New height</param>
|
||||||
|
/// <returns>Resized image</returns>
|
||||||
|
public static Bitmap ResizeImageSolid(Image image, int width, int height)
|
||||||
|
{
|
||||||
|
Bitmap result = new Bitmap(width, height, PixelFormat.Format24bppRgb);
|
||||||
|
|
||||||
|
using (ImageAttributes atrib = new ImageAttributes())
|
||||||
|
using (Graphics graphics = Graphics.FromImage(result))
|
||||||
|
{
|
||||||
|
atrib.SetWrapMode(System.Drawing.Drawing2D.WrapMode.TileFlipXY);
|
||||||
|
atrib.SetWrapMode(System.Drawing.Drawing2D.WrapMode.TileFlipXY);
|
||||||
|
graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
|
||||||
|
graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
|
||||||
|
graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
|
||||||
|
graphics.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.None;
|
||||||
|
|
||||||
|
graphics.DrawImage(image,new Rectangle(0,0, result.Width, result.Height),
|
||||||
|
0, 0, image.Width, image.Height, GraphicsUnit.Pixel, atrib);
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* don't like this code
|
/* don't like this code
|
||||||
|
@ -3606,5 +3636,6 @@ namespace OpenSim.Framework
|
||||||
{
|
{
|
||||||
rng.GetBytes(buff);
|
rng.GetBytes(buff);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -161,7 +161,7 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap
|
||||||
if(detailTexture[i].PixelFormat != PixelFormat.Format24bppRgb ||
|
if(detailTexture[i].PixelFormat != PixelFormat.Format24bppRgb ||
|
||||||
detailTexture[i].Width != 16 || detailTexture[i].Height != 16)
|
detailTexture[i].Width != 16 || detailTexture[i].Height != 16)
|
||||||
using(Bitmap origBitmap = detailTexture[i])
|
using(Bitmap origBitmap = detailTexture[i])
|
||||||
detailTexture[i] = ImageUtils.ResizeImageSolid(origBitmap, 16, 16);
|
detailTexture[i] = Util.ResizeImageSolid(origBitmap, 16, 16);
|
||||||
|
|
||||||
// Save the decoded and resized texture to the cache
|
// Save the decoded and resized texture to the cache
|
||||||
byte[] data;
|
byte[] data;
|
||||||
|
@ -260,7 +260,7 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap
|
||||||
if(detailTexture[i].Width != 16 || detailTexture[i].Height != 16)
|
if(detailTexture[i].Width != 16 || detailTexture[i].Height != 16)
|
||||||
{
|
{
|
||||||
using(Bitmap origBitmap = detailTexture[i])
|
using(Bitmap origBitmap = detailTexture[i])
|
||||||
detailTexture[i] = ImageUtils.ResizeImageSolid(origBitmap, 16, 16);
|
detailTexture[i] = Util.ResizeImageSolid(origBitmap, 16, 16);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -296,8 +296,8 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap
|
||||||
int npointsx = (int)(regionsx / diff);
|
int npointsx = (int)(regionsx / diff);
|
||||||
int npointsy = (int)(regionsy / diff);
|
int npointsy = (int)(regionsy / diff);
|
||||||
|
|
||||||
float invsx = 1.0f / (npointsx);
|
float invsx = 1.0f / (npointsx * diff);
|
||||||
float invsy = 1.0f / (npointsy);
|
float invsy = 1.0f / (npointsy * diff);
|
||||||
|
|
||||||
npointsx++;
|
npointsx++;
|
||||||
npointsy++;
|
npointsy++;
|
||||||
|
@ -387,9 +387,7 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap
|
||||||
texture = new warp_Texture(image);
|
texture = new warp_Texture(image);
|
||||||
|
|
||||||
warp_Material material = new warp_Material(texture);
|
warp_Material material = new warp_Material(texture);
|
||||||
// material.setReflectivity(50);
|
|
||||||
renderer.Scene.addMaterial("TerrainColor", material);
|
renderer.Scene.addMaterial("TerrainColor", material);
|
||||||
// renderer.Scene.material("TerrainColor").setReflectivity(0); // reduces tile seams a bit thanks lkalif
|
|
||||||
renderer.SetObjectMaterial("Terrain", "TerrainColor");
|
renderer.SetObjectMaterial("Terrain", "TerrainColor");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -775,32 +773,5 @@ namespace OpenSim.Region.CoreModules.World.Warp3DMap
|
||||||
{
|
{
|
||||||
return Utils.Lerp(Utils.Lerp(v00, v01, xPercent), Utils.Lerp(v10, v11, xPercent), yPercent);
|
return Utils.Lerp(Utils.Lerp(v00, v01, xPercent), Utils.Lerp(v10, v11, xPercent), yPercent);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Performs a high quality image resize
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="image">Image to resize</param>
|
|
||||||
/// <param name="width">New width</param>
|
|
||||||
/// <param name="height">New height</param>
|
|
||||||
/// <returns>Resized image</returns>
|
|
||||||
public static Bitmap ResizeImageSolid(Image image, int width, int height)
|
|
||||||
{
|
|
||||||
Bitmap result = new Bitmap(width, height, PixelFormat.Format24bppRgb);
|
|
||||||
|
|
||||||
using (ImageAttributes atrib = new ImageAttributes())
|
|
||||||
using (Graphics graphics = Graphics.FromImage(result))
|
|
||||||
{
|
|
||||||
atrib.SetWrapMode(System.Drawing.Drawing2D.WrapMode.TileFlipXY);
|
|
||||||
graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
|
|
||||||
graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
|
|
||||||
graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
|
|
||||||
graphics.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.None;
|
|
||||||
|
|
||||||
graphics.DrawImage(image,new Rectangle(0,0, result.Width, result.Height),
|
|
||||||
0, 0, image.Width, image.Height, GraphicsUnit.Pixel, atrib);
|
|
||||||
}
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1427,8 +1427,9 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
|
||||||
|
|
||||||
Bitmap mapTexture = new Bitmap(spanX, spanY);
|
Bitmap mapTexture = new Bitmap(spanX, spanY);
|
||||||
ImageAttributes gatrib = new ImageAttributes();
|
ImageAttributes gatrib = new ImageAttributes();
|
||||||
Graphics g = Graphics.FromImage(mapTexture);
|
|
||||||
gatrib.SetWrapMode(System.Drawing.Drawing2D.WrapMode.TileFlipXY);
|
gatrib.SetWrapMode(System.Drawing.Drawing2D.WrapMode.TileFlipXY);
|
||||||
|
|
||||||
|
Graphics g = Graphics.FromImage(mapTexture);
|
||||||
g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
|
g.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality;
|
||||||
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
|
g.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic;
|
||||||
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
|
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
|
||||||
|
@ -1687,11 +1688,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
|
||||||
if(mb > Constants.RegionSize && mb > 0)
|
if(mb > Constants.RegionSize && mb > 0)
|
||||||
{
|
{
|
||||||
float scale = (float)Constants.RegionSize/(float)mb;
|
float scale = (float)Constants.RegionSize/(float)mb;
|
||||||
Size newsize = new Size();
|
using(Bitmap scaledbmp = Util.ResizeImageSolid(mapbmp, (int)(bx * scale), (int)(by * scale)))
|
||||||
newsize.Width = (int)(bx * scale);
|
|
||||||
newsize.Height = (int)(by * scale);
|
|
||||||
|
|
||||||
using(Bitmap scaledbmp = new Bitmap(mapbmp,newsize))
|
|
||||||
data = OpenJPEG.EncodeFromImage(scaledbmp, false);
|
data = OpenJPEG.EncodeFromImage(scaledbmp, false);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
Loading…
Reference in New Issue