From 3e93c982f3bd2506396346042df2dfd99e600c15 Mon Sep 17 00:00:00 2001 From: Latif Khalifa Date: Sat, 9 Jul 2011 22:18:17 +0000 Subject: [PATCH] Lock list of Avatars during skeleton rendering git-svn-id: https://radegast.googlecode.com/svn/trunk@962 f7a694da-4d33-11de-9ad6-1127a62b9fcd --- Radegast/GUI/Rendering/Rendering.cs | 133 ++++++++++++++++++------------------ 1 file changed, 68 insertions(+), 65 deletions(-) diff --git a/Radegast/GUI/Rendering/Rendering.cs b/Radegast/GUI/Rendering/Rendering.cs index 3442ff3..d2afa78 100644 --- a/Radegast/GUI/Rendering/Rendering.cs +++ b/Radegast/GUI/Rendering/Rendering.cs @@ -1115,97 +1115,100 @@ namespace Radegast.Rendering private void RenderAvatarsSkeleton(RenderPass pass) { - foreach (RenderAvatar av in Avatars.Values) + lock (Avatars) { - // Individual prim matrix - GL.PushMatrix(); + foreach (RenderAvatar av in Avatars.Values) + { + // Individual prim matrix + GL.PushMatrix(); - // Prim roation and position - Vector3 pos = av.avatar.Position; - pos.X += 1; - GL.MultMatrix(Math3D.CreateTranslationMatrix(pos)); - GL.MultMatrix(Math3D.CreateRotationMatrix(av.avatar.Rotation)); + // Prim roation and position + Vector3 pos = av.avatar.Position; + pos.X += 1; + GL.MultMatrix(Math3D.CreateTranslationMatrix(pos)); + GL.MultMatrix(Math3D.CreateRotationMatrix(av.avatar.Rotation)); - GL.Begin(BeginMode.Lines); + GL.Begin(BeginMode.Lines); - GL.Color3(1.0, 0.0, 0.0); - - foreach (Bone b in av.glavatar.skel.mBones.Values) - { - Vector3 newpos = b.getOffset(); + GL.Color3(1.0, 0.0, 0.0); - if (b.parent != null) + foreach (Bone b in av.glavatar.skel.mBones.Values) { - Vector3 parentpos = b.parent.getOffset(); - GL.Vertex3(parentpos.X,parentpos.Y,parentpos.Z); - } - else - { + Vector3 newpos = b.getOffset(); + + if (b.parent != null) + { + Vector3 parentpos = b.parent.getOffset(); + GL.Vertex3(parentpos.X, parentpos.Y, parentpos.Z); + } + else + { + GL.Vertex3(newpos.X, newpos.Y, newpos.Z); + } + GL.Vertex3(newpos.X, newpos.Y, newpos.Z); - } - GL.Vertex3(newpos.X, newpos.Y, newpos.Z); + //Mark the joints - //Mark the joints - - newpos.X += 0.01f; - newpos.Y += 0.01f; - newpos.Z += 0.01f; - GL.Vertex3(newpos.X, newpos.Y, newpos.Z); + newpos.X += 0.01f; + newpos.Y += 0.01f; + newpos.Z += 0.01f; + GL.Vertex3(newpos.X, newpos.Y, newpos.Z); - newpos.X -= 0.02f; - GL.Vertex3(newpos.X, newpos.Y, newpos.Z); - GL.Vertex3(newpos.X, newpos.Y, newpos.Z); - - newpos.Y -= 0.02f; - GL.Vertex3(newpos.X, newpos.Y, newpos.Z); - GL.Vertex3(newpos.X, newpos.Y, newpos.Z); + newpos.X -= 0.02f; + GL.Vertex3(newpos.X, newpos.Y, newpos.Z); + GL.Vertex3(newpos.X, newpos.Y, newpos.Z); - newpos.X += 0.02f; - GL.Vertex3(newpos.X, newpos.Y, newpos.Z); - GL.Vertex3(newpos.X, newpos.Y, newpos.Z); + newpos.Y -= 0.02f; + GL.Vertex3(newpos.X, newpos.Y, newpos.Z); + GL.Vertex3(newpos.X, newpos.Y, newpos.Z); - newpos.Y += 0.02f; - GL.Vertex3(newpos.X, newpos.Y, newpos.Z); - GL.Vertex3(newpos.X, newpos.Y, newpos.Z); + newpos.X += 0.02f; + GL.Vertex3(newpos.X, newpos.Y, newpos.Z); + GL.Vertex3(newpos.X, newpos.Y, newpos.Z); - newpos.Z -= 0.02f; - GL.Vertex3(newpos.X, newpos.Y, newpos.Z); - GL.Vertex3(newpos.X, newpos.Y, newpos.Z); + newpos.Y += 0.02f; + GL.Vertex3(newpos.X, newpos.Y, newpos.Z); + GL.Vertex3(newpos.X, newpos.Y, newpos.Z); - newpos.Y -= 0.02f; - GL.Vertex3(newpos.X, newpos.Y, newpos.Z); - GL.Vertex3(newpos.X, newpos.Y, newpos.Z); + newpos.Z -= 0.02f; + GL.Vertex3(newpos.X, newpos.Y, newpos.Z); + GL.Vertex3(newpos.X, newpos.Y, newpos.Z); - newpos.X -= 0.02f; - GL.Vertex3(newpos.X, newpos.Y, newpos.Z); - GL.Vertex3(newpos.X, newpos.Y, newpos.Z); + newpos.Y -= 0.02f; + GL.Vertex3(newpos.X, newpos.Y, newpos.Z); + GL.Vertex3(newpos.X, newpos.Y, newpos.Z); - newpos.Y += 0.02f; - GL.Vertex3(newpos.X, newpos.Y, newpos.Z); - GL.Vertex3(newpos.X, newpos.Y, newpos.Z); + newpos.X -= 0.02f; + GL.Vertex3(newpos.X, newpos.Y, newpos.Z); + GL.Vertex3(newpos.X, newpos.Y, newpos.Z); - newpos.X += 0.02f; - GL.Vertex3(newpos.X, newpos.Y, newpos.Z); - GL.Vertex3(newpos.X, newpos.Y, newpos.Z); + newpos.Y += 0.02f; + GL.Vertex3(newpos.X, newpos.Y, newpos.Z); + GL.Vertex3(newpos.X, newpos.Y, newpos.Z); - newpos.Y -= 0.01f; - newpos.Z += 0.01f; - newpos.X -= 0.01f; - GL.Vertex3(newpos.X, newpos.Y, newpos.Z); + newpos.X += 0.02f; + GL.Vertex3(newpos.X, newpos.Y, newpos.Z); + GL.Vertex3(newpos.X, newpos.Y, newpos.Z); + newpos.Y -= 0.01f; + newpos.Z += 0.01f; + newpos.X -= 0.01f; + GL.Vertex3(newpos.X, newpos.Y, newpos.Z); - } + } - - GL.Color3(0.0, 1.0, 0.0); - GL.End(); - GL.PopMatrix(); + GL.Color3(0.0, 1.0, 0.0); + + GL.End(); + + GL.PopMatrix(); + } } } -- 2.11.0