private void RenderAvatarsSkeleton(RenderPass pass)
{
if (!RenderSettings.RenderAvatarSkeleton) return;
lock (Avatars)
{
foreach (RenderAvatar av in Avatars.Values)
{
// Individual prim matrix
GL.PushMatrix();
// Prim roation and position
//Vector3 pos = av.avatar.Position;
Vector3 avataroffset = av.glavatar.skel.getOffset("mPelvis");
avataroffset.X += 1.0f;
GL.MultMatrix(Math3D.CreateSRTMatrix(Vector3.One, av.RenderRotation, av.RenderPosition - avataroffset * av.RenderRotation));
GL.Begin(PrimitiveType.Lines);
GL.Color3(1.0, 0.0, 0.0);
foreach (Bone b in av.glavatar.skel.mBones.Values)
{
Vector3 newpos = b.getTotalOffset();
if (b.parent != null)
{
Vector3 parentpos = b.parent.getTotalOffset();
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);
//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.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.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.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.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.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();
}
}
}