Client.Terrain.LandPatchReceived += new EventHandler<LandPatchReceivedEventArgs>(Terrain_LandPatchReceived);\r
Client.Avatars.AvatarAnimation += new EventHandler<AvatarAnimationEventArgs>(AvatarAnimationChanged);\r
Client.Avatars.AvatarAppearance += new EventHandler<AvatarAppearanceEventArgs>(Avatars_AvatarAppearance);\r
+ Client.Appearance.AppearanceSet += new EventHandler<AppearanceSetEventArgs>(Appearance_AppearanceSet);\r
Instance.Netcom.ClientDisconnected += new EventHandler<DisconnectedEventArgs>(Netcom_ClientDisconnected);\r
Application.Idle += new EventHandler(Application_Idle);\r
}\r
\r
-\r
void frmPrimWorkshop_Disposed(object sender, EventArgs e)\r
{\r
RenderingEnabled = false;\r
Client.Terrain.LandPatchReceived -= new EventHandler<LandPatchReceivedEventArgs>(Terrain_LandPatchReceived);\r
Client.Avatars.AvatarAnimation -= new EventHandler<AvatarAnimationEventArgs>(AvatarAnimationChanged);\r
Client.Avatars.AvatarAppearance -= new EventHandler<AvatarAppearanceEventArgs>(Avatars_AvatarAppearance);\r
+ Client.Appearance.AppearanceSet -= new EventHandler<AppearanceSetEventArgs>(Appearance_AppearanceSet);\r
\r
if (instance.Netcom != null)\r
{\r
}\r
}\r
\r
+ void Appearance_AppearanceSet(object sender, AppearanceSetEventArgs e)\r
+ {\r
+ if (e.Success)\r
+ {\r
+ RenderAvatar me;\r
+ if (Avatars.TryGetValue(Client.Self.LocalID, out me))\r
+ {\r
+ me.glavatar.morph(me.avatar);\r
+ }\r
+ }\r
+ }\r
\r
#endregion Network messaage handlers\r
\r
{\r
Printer.Begin();\r
Printer.Print(tagText, AvatarTagFont, Color.Orange,\r
- new RectangleF(screenPos.X, screenPos.Y, tSize.BoundingBox.Width, tSize.BoundingBox.Height),\r
+ new RectangleF(screenPos.X, screenPos.Y, tSize.BoundingBox.Width + 2, tSize.BoundingBox.Height + 2),\r
OpenTK.Graphics.TextPrinterOptions.Default, OpenTK.Graphics.TextAlignment.Center);\r
Printer.End();\r
}\r
}\r
}\r
\r
- lock (Prims)\r
+ lock (SortedObjects)\r
{\r
int primNr = 0;\r
- foreach (RenderPrimitive mesh in Prims.Values)\r
+ foreach (SceneObject obj in SortedObjects)\r
{\r
+ if (!(obj is RenderPrimitive)) continue;\r
+\r
+ RenderPrimitive prim = (RenderPrimitive)obj;\r
primNr++;\r
- Primitive prim = mesh.Prim;\r
- if (!string.IsNullOrEmpty(prim.Text))\r
+\r
+ if (!string.IsNullOrEmpty(prim.BasePrim.Text))\r
{\r
- string text = System.Text.RegularExpressions.Regex.Replace(prim.Text, "(\r?\n)+", "\n");\r
- var newPrimPos = PrimPos(prim);\r
- OpenTK.Vector3 primPos = new OpenTK.Vector3(newPrimPos.X, newPrimPos.Y, newPrimPos.Z);\r
- var distance = Vector3.Distance(newPrimPos, Camera.Position);\r
+ string text = System.Text.RegularExpressions.Regex.Replace(prim.BasePrim.Text, "(\r?\n)+", "\n");\r
+ OpenTK.Vector3 primPos = RHelp.TKVector3(prim.RenderPosition);\r
\r
// Display hovertext only on objects that are withing 12m of the camera\r
- if (distance > 12) continue;\r
+ if (prim.DistanceSquared > (12 * 12)) continue;\r
\r
- primPos.Z += prim.Scale.Z * 0.8f;\r
+ primPos.Z += prim.BasePrim.Scale.Z * 0.8f;\r
\r
// Convert objects world position to 2D screen position in pixels\r
OpenTK.Vector3 screenPos;\r
\r
Printer.Begin();\r
\r
- Color color = Color.FromArgb((int)(prim.TextColor.A * 255), (int)(prim.TextColor.R * 255), (int)(prim.TextColor.G * 255), (int)(prim.TextColor.B * 255));\r
+ Color color = Color.FromArgb((int)(prim.BasePrim.TextColor.A * 255), (int)(prim.BasePrim.TextColor.R * 255), (int)(prim.BasePrim.TextColor.G * 255), (int)(prim.BasePrim.TextColor.B * 255));\r
\r
var size = Printer.Measure(text, HoverTextFont);\r
screenPos.X -= size.BoundingBox.Width / 2;\r
// Shadow\r
if (color != Color.Black)\r
{\r
- Printer.Print(text, HoverTextFont, Color.Black, new RectangleF(screenPos.X + 1, screenPos.Y + 1, size.BoundingBox.Width, size.BoundingBox.Height), OpenTK.Graphics.TextPrinterOptions.Default, OpenTK.Graphics.TextAlignment.Center);\r
+ Printer.Print(text, HoverTextFont, Color.Black, new RectangleF(screenPos.X + 1, screenPos.Y + 1, size.BoundingBox.Width + 2, size.BoundingBox.Height + 2), OpenTK.Graphics.TextPrinterOptions.Default, OpenTK.Graphics.TextAlignment.Center);\r
}\r
// Text\r
- Printer.Print(text, HoverTextFont, color, new RectangleF(screenPos.X, screenPos.Y, size.BoundingBox.Width, size.BoundingBox.Height), OpenTK.Graphics.TextPrinterOptions.Default, OpenTK.Graphics.TextAlignment.Center);\r
+ Printer.Print(text, HoverTextFont, color, new RectangleF(screenPos.X, screenPos.Y, size.BoundingBox.Width + 2, size.BoundingBox.Height + 2), OpenTK.Graphics.TextPrinterOptions.Default, OpenTK.Graphics.TextAlignment.Center);\r
}\r
\r
Printer.End();\r