OSDN Git Service

Lock list of Avatars during skeleton rendering
authorLatif Khalifa <latifer@streamgrid.net>
Sat, 9 Jul 2011 22:18:17 +0000 (22:18 +0000)
committerLatif Khalifa <latifer@streamgrid.net>
Sat, 9 Jul 2011 22:18:17 +0000 (22:18 +0000)
git-svn-id: https://radegast.googlecode.com/svn/trunk@962 f7a694da-4d33-11de-9ad6-1127a62b9fcd

Radegast/GUI/Rendering/Rendering.cs

index 3442ff3..d2afa78 100644 (file)
@@ -1115,97 +1115,100 @@ namespace Radegast.Rendering
 \r
         private void RenderAvatarsSkeleton(RenderPass pass)\r
         {\r
-            foreach (RenderAvatar av in Avatars.Values)\r
+            lock (Avatars)\r
             {\r
-                // Individual prim matrix\r
-                GL.PushMatrix();\r
+                foreach (RenderAvatar av in Avatars.Values)\r
+                {\r
+                    // Individual prim matrix\r
+                    GL.PushMatrix();\r
 \r
-                // Prim roation and position\r
-                Vector3 pos = av.avatar.Position;\r
-                pos.X += 1;\r
-                GL.MultMatrix(Math3D.CreateTranslationMatrix(pos));\r
-                GL.MultMatrix(Math3D.CreateRotationMatrix(av.avatar.Rotation));\r
+                    // Prim roation and position\r
+                    Vector3 pos = av.avatar.Position;\r
+                    pos.X += 1;\r
+                    GL.MultMatrix(Math3D.CreateTranslationMatrix(pos));\r
+                    GL.MultMatrix(Math3D.CreateRotationMatrix(av.avatar.Rotation));\r
 \r
-                GL.Begin(BeginMode.Lines);\r
+                    GL.Begin(BeginMode.Lines);\r
 \r
-                GL.Color3(1.0, 0.0, 0.0);\r
-                \r
-                foreach (Bone b in av.glavatar.skel.mBones.Values)\r
-                {\r
-                    Vector3 newpos = b.getOffset();\r
+                    GL.Color3(1.0, 0.0, 0.0);\r
 \r
-                    if (b.parent != null)\r
+                    foreach (Bone b in av.glavatar.skel.mBones.Values)\r
                     {\r
-                        Vector3 parentpos = b.parent.getOffset();\r
-                        GL.Vertex3(parentpos.X,parentpos.Y,parentpos.Z);\r
-                    }\r
-                    else\r
-                    {                       \r
+                        Vector3 newpos = b.getOffset();\r
+\r
+                        if (b.parent != null)\r
+                        {\r
+                            Vector3 parentpos = b.parent.getOffset();\r
+                            GL.Vertex3(parentpos.X, parentpos.Y, parentpos.Z);\r
+                        }\r
+                        else\r
+                        {\r
+                            GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
+                        }\r
+\r
                         GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
-                    }\r
 \r
-                    GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
+                        //Mark the joints\r
 \r
-                    //Mark the joints\r
 \r
-                   \r
-                    newpos.X += 0.01f;\r
-                    newpos.Y += 0.01f;\r
-                    newpos.Z += 0.01f;\r
-                    GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
+                        newpos.X += 0.01f;\r
+                        newpos.Y += 0.01f;\r
+                        newpos.Z += 0.01f;\r
+                        GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
 \r
-                    newpos.X -= 0.02f;\r
-                    GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
-                    GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
-                  \r
-                    newpos.Y -= 0.02f;\r
-                    GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
-                    GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
+                        newpos.X -= 0.02f;\r
+                        GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
+                        GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
 \r
-                    newpos.X += 0.02f;\r
-                    GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
-                    GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
+                        newpos.Y -= 0.02f;\r
+                        GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
+                        GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
 \r
-                    newpos.Y += 0.02f;\r
-                    GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
-                    GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
+                        newpos.X += 0.02f;\r
+                        GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
+                        GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
 \r
-                    newpos.Z -= 0.02f;\r
-                    GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
-                    GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
+                        newpos.Y += 0.02f;\r
+                        GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
+                        GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
 \r
-                    newpos.Y -= 0.02f;\r
-                    GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
-                    GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
+                        newpos.Z -= 0.02f;\r
+                        GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
+                        GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
 \r
-                    newpos.X -= 0.02f;\r
-                    GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
-                    GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
+                        newpos.Y -= 0.02f;\r
+                        GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
+                        GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
 \r
-                    newpos.Y += 0.02f;\r
-                    GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
-                    GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
+                        newpos.X -= 0.02f;\r
+                        GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
+                        GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
 \r
-                    newpos.X += 0.02f;\r
-                    GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
-                    GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
+                        newpos.Y += 0.02f;\r
+                        GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
+                        GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
 \r
-                    newpos.Y -= 0.01f;\r
-                    newpos.Z += 0.01f;\r
-                    newpos.X -= 0.01f;\r
-                    GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
+                        newpos.X += 0.02f;\r
+                        GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
+                        GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
 \r
+                        newpos.Y -= 0.01f;\r
+                        newpos.Z += 0.01f;\r
+                        newpos.X -= 0.01f;\r
+                        GL.Vertex3(newpos.X, newpos.Y, newpos.Z);\r
 \r
 \r
-                }\r
 \r
+                    }\r
 \r
-                \r
-                GL.Color3(0.0, 1.0, 0.0);\r
 \r
-                GL.End();\r
 \r
-                GL.PopMatrix();\r
+                    GL.Color3(0.0, 1.0, 0.0);\r
+\r
+                    GL.End();\r
+\r
+                    GL.PopMatrix();\r
+                }\r
             }\r
         }\r
 \r