OSDN Git Service

* Don't send the whole big data object for the texture queue (reduces memory usage)
authorLatif Khalifa <latifer@streamgrid.net>
Sat, 2 Jul 2011 21:08:20 +0000 (21:08 +0000)
committerLatif Khalifa <latifer@streamgrid.net>
Sat, 2 Jul 2011 21:08:20 +0000 (21:08 +0000)
* Correct PrimPos() to work with seated avatars

git-svn-id: https://radegast.googlecode.com/svn/trunk@932 f7a694da-4d33-11de-9ad6-1127a62b9fcd

Radegast/GUI/Rendering/PrimWorkshop.cs
Radegast/GUI/Rendering/Rendering.cs
Radegast/GUI/Rendering/RenderingHelpers.cs

index 36fb96c..0181ced 100644 (file)
@@ -467,20 +467,20 @@ namespace Radegast.Rendering
 
                 if (TexturesPtrMap.ContainsKey(item.TeFace.TextureID))
                 {
-                    item.Data.TextureInfo = TexturesPtrMap[item.TeFace.TextureID];
-                    GL.BindTexture(TextureTarget.Texture2D, item.Data.TextureInfo.TexturePointer);
+                    item.Info = TexturesPtrMap[item.TeFace.TextureID];
+                    GL.BindTexture(TextureTarget.Texture2D, item.Info.TexturePointer);
                     continue;
                 }
 
-                if (LoadTexture(item.TeFace.TextureID, ref item.Data.TextureInfo.Texture, false))
+                if (LoadTexture(item.TeFace.TextureID, ref item.Info.Texture, false))
                 {
-                    GL.GenTextures(1, out item.Data.TextureInfo.TexturePointer);
-                    GL.BindTexture(TextureTarget.Texture2D, item.Data.TextureInfo.TexturePointer);
+                    GL.GenTextures(1, out item.Info.TexturePointer);
+                    GL.BindTexture(TextureTarget.Texture2D, item.Info.TexturePointer);
 
-                    Bitmap bitmap = (Bitmap)item.Data.TextureInfo.Texture;
+                    Bitmap bitmap = (Bitmap)item.Info.Texture;
 
                     bool hasAlpha;
-                    if (item.Data.TextureInfo.Texture.PixelFormat == System.Drawing.Imaging.PixelFormat.Format32bppArgb)
+                    if (item.Info.Texture.PixelFormat == System.Drawing.Imaging.PixelFormat.Format32bppArgb)
                     {
                         hasAlpha = true;
                     }
@@ -488,7 +488,7 @@ namespace Radegast.Rendering
                     {
                         hasAlpha = false;
                     }
-                    item.Data.TextureInfo.HasAlpha = hasAlpha;
+                    item.Info.HasAlpha = hasAlpha;
 
                     bitmap.RotateFlip(RotateFlipType.RotateNoneFlipY);
                     Rectangle rectangle = new Rectangle(0, 0, bitmap.Width, bitmap.Height);
@@ -524,11 +524,11 @@ namespace Radegast.Rendering
                         GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)TextureMinFilter.Linear);
                     }
 
-                    TexturesPtrMap[item.TeFace.TextureID] = item.Data.TextureInfo;
+                    TexturesPtrMap[item.TeFace.TextureID] = item.Info;
 
                     bitmap.UnlockBits(bitmapData);
-                    bitmap.Dispose();
-                    item.Data.TextureInfo.Texture = null;
+                    item.Info.Texture.Dispose();
+                    item.Info.Texture = null;
 
                     GL.Flush();
                     SafeInvalidate();
@@ -996,7 +996,7 @@ namespace Radegast.Rendering
 
                     var textureItem = new TextureLoadItem()
                     {
-                        Data = data,
+                        Info = data.TextureInfo,
                         Prim = prim,
                         TeFace = teFace
                     };
index 54cbeee..1e93dac 100644 (file)
@@ -708,18 +708,18 @@ namespace Radegast.Rendering
 \r
                 if (TexturesPtrMap.ContainsKey(item.TeFace.TextureID))\r
                 {\r
-                    item.Data.TextureInfo = TexturesPtrMap[item.TeFace.TextureID];\r
-                    GL.BindTexture(TextureTarget.Texture2D, item.Data.TextureInfo.TexturePointer);\r
+                    item.Info = TexturesPtrMap[item.TeFace.TextureID];\r
+                    GL.BindTexture(TextureTarget.Texture2D, item.Info.TexturePointer);\r
                     \r
                     continue;\r
                 }\r
 \r
-                if (LoadTexture(item.TeFace.TextureID, ref item.Data.TextureInfo.Texture, false))\r
+                if (LoadTexture(item.TeFace.TextureID, ref item.Info.Texture, false))\r
                 {\r
-                    Bitmap bitmap = (Bitmap)item.Data.TextureInfo.Texture;\r
+                    Bitmap bitmap = (Bitmap)item.Info.Texture;\r
 \r
                     bool hasAlpha;\r
-                    if (item.Data.TextureInfo.Texture.PixelFormat == System.Drawing.Imaging.PixelFormat.Format32bppArgb)\r
+                    if (item.Info.Texture.PixelFormat == System.Drawing.Imaging.PixelFormat.Format32bppArgb)\r
                     {\r
                         hasAlpha = true;\r
                     }\r
@@ -728,13 +728,13 @@ namespace Radegast.Rendering
                         hasAlpha = false;\r
                     }\r
 \r
-                    item.Data.TextureInfo.HasAlpha = hasAlpha;\r
+                    item.Info.HasAlpha = hasAlpha;\r
                     bitmap.RotateFlip(RotateFlipType.RotateNoneFlipY);\r
-                    item.Data.TextureInfo.TexturePointer = GLLoadImage(bitmap, hasAlpha);\r
-                    TexturesPtrMap[item.TeFace.TextureID] = item.Data.TextureInfo;\r
+                    item.Info.TexturePointer = GLLoadImage(bitmap, hasAlpha);\r
+                    TexturesPtrMap[item.TeFace.TextureID] = item.Info;\r
 \r
-                    bitmap.Dispose();\r
-                    item.Data.TextureInfo.Texture = null;\r
+                    item.Info.Texture.Dispose();\r
+                    item.Info.Texture = null;\r
                 }\r
             }\r
             Logger.DebugLog("Texture thread exited");\r
@@ -801,13 +801,13 @@ namespace Radegast.Rendering
                 }\r
                 else if (Avatars.TryGetValue(prim.ParentID, out parentav))\r
                 {\r
-                    //close enough for the moment, PrimPos is only used for culling so an arse-tachment should be close enough\r
-                    //return parentav.avatar.Position + prim.Position * Matrix4.CreateFromQuaternion(parentav.avatar.Rotation);\r
-                    return Vector3.Zero; // Attachments will be culled and not displayed\r
+                    var avPos = PrimPos(parentav.avatar);\r
+                    \r
+                    return avPos + prim.Position * Matrix4.CreateFromQuaternion(parentav.avatar.Rotation);\r
                 }\r
                 else\r
                 {\r
-                    return Vector3.Zero;\r
+                    return new Vector3(99999f, 99999f, 99999f);\r
                 }\r
             }\r
         }\r
@@ -989,7 +989,7 @@ namespace Radegast.Rendering
                     data.TextureInfo.TextureID = TEF.TextureID;\r
                     var textureItem = new TextureLoadItem()\r
                     {\r
-                        Data = data,\r
+                        Info = data.TextureInfo,\r
                         Prim = ra.avatar,\r
                         TeFace = ra.avatar.Textures.FaceTextures[fi]\r
                     };\r
@@ -1713,7 +1713,7 @@ namespace Radegast.Rendering
 \r
                     var textureItem = new TextureLoadItem()\r
                     {\r
-                        Data = data,\r
+                        Info = data.TextureInfo,\r
                         Prim = prim,\r
                         TeFace = teFace\r
                     };\r
index 7f17242..02ff576 100644 (file)
@@ -54,7 +54,7 @@ namespace Radegast.Rendering
 \r
     public class TextureLoadItem\r
     {\r
-        public FaceData Data;\r
+        public TextureInfo Info;\r
         public Primitive Prim;\r
         public Primitive.TextureEntryFace TeFace;\r
     }\r