public void Objects_NewPrim(object sender, PrimEventArgs args) { Primitive prim = args.Prim; if (prim != null) { if (prim.Textures != null) { if (prim.Textures.DefaultTexture.TextureID != UUID.Zero) { client.Assets.RequestImage(prim.Textures.DefaultTexture.TextureID, ImageType.Normal, Asset_TextureCallback_Texture); } for (int i = 0; i < prim.Textures.FaceTextures.Length; i++) { if (prim.Textures.FaceTextures[i] != null) { if (prim.Textures.FaceTextures[i].TextureID != UUID.Zero) { client.Assets.RequestImage(prim.Textures.FaceTextures[i].TextureID, ImageType.Normal, Asset_TextureCallback_Texture); } } } } if (prim.Sculpt.SculptTexture != UUID.Zero) { client.Assets.RequestImage(prim.Sculpt.SculptTexture, ImageType.Normal, Asset_TextureCallback_Texture); } } }
void Objects_ObjectUpdate(object sender, PrimEventArgs e) { if (Prims.ContainsKey(e.Prim.LocalID) || Prims.ContainsKey(e.Prim.ParentID)) { UpdatePrimBlocking(e.Prim); } }
private static void onObjectTerseUpdate(object sender, TerseObjectUpdateEventArgs e) { //Console.WriteLine("TerseObjectUpdate @ " + DateTime.Now); PrimEventArgs ex = new PrimEventArgs(e.Simulator, e.Prim, e.TimeDilation, false, false); onObjectUpdate(sender, ex); }
void Objects_OnObjectUpdate(object sender, PrimEventArgs e) { //leave tree out temporarily. Radegast doesn't implement tree rendering yet. if (e.Prim.PrimData.PCode != PCode.Prim) { Debug.Log("Receive " + e.Prim.PrimData.PCode.ToString()); return; } FacetedMesh mesh = null; //FIXME : need to update prims? if (objects.ContainsKey(e.Prim.LocalID)) { Debug.Log("receive prim with LocalID " + e.Prim.LocalID.ToString() + " again!"); return; } if (e.Prim.Sculpt != null) { //leave sculpt prim out temporarily } else { mesh = R.GenerateFacetedMesh(e.Prim, DetailLevel.Highest); lock (newPrims) { newPrims[e.Prim.LocalID] = mesh; } foreach (Face face in mesh.Faces) { DownloadTexture(face.TextureFace.TextureID); } } }
private void Objects_OnNewPrim(object sender, PrimEventArgs e) { //if (!this.IsHandleCreated) return; if (e.Simulator.Handle != client.Network.CurrentSim.Handle || e.Prim is Avatar) { return; } //if (e.Prim.ParentID != 0) return; if (!e.Prim.IsAttachment) { return; } if (e.Prim.ParentID != av.LocalID) { return; } lock (listItems) { listItems.Clear(); } BeginInvoke(new MethodInvoker(delegate() { pBar3.Visible = true; lbxPrims.Items.Clear(); lbxPrimGroup.Items.Clear(); ReLoadItems(); })); }
void Objects_ObjectUpdate(object sender, PrimEventArgs e) { // If we know of this avatar, update its position and rotation, and send an AvatarUpdated callback. if (this.nearbyAvatars.ContainsKey(e.Prim.LocalID)) { Avatar avatar; lock (this.nearbyAvatars) avatar = this.nearbyAvatars[e.Prim.LocalID]; avatar.Position = e.Prim.Position; avatar.Rotation = e.Prim.Rotation; } }
public void Objects_NewPrim(object sender, PrimEventArgs args) { if (!RequestObjectTextures) { return; } Primitive prim = args.Prim; if (prim != null) { lock (m_objects) m_objects[prim.ID] = prim; if (prim.Textures != null) { if (prim.Textures.DefaultTexture.TextureID != UUID.Zero) { GetTextureOrMesh(prim.Textures.DefaultTexture.TextureID, true); } for (int i = 0; i < prim.Textures.FaceTextures.Length; i++) { Primitive.TextureEntryFace face = prim.Textures.FaceTextures[i]; if (face != null) { UUID textureID = prim.Textures.FaceTextures[i].TextureID; if (textureID != UUID.Zero) { GetTextureOrMesh(textureID, true); } } } } if (prim.Sculpt != null && prim.Sculpt.SculptTexture != UUID.Zero) { bool mesh = (prim.Sculpt.Type == SculptType.Mesh); GetTextureOrMesh(prim.Sculpt.SculptTexture, !mesh); } } }
void Objects_OnObjectUpdate(object sender, PrimEventArgs e) { //leave other regions out temporarily if (e.Simulator.Handle != Client.Network.CurrentSim.Handle) { return; } //leave tree out temporarily. Radegast doesn't implement tree rendering yet. if (e.Prim.PrimData.PCode != PCode.Prim) { //Debug.Log("Receive " + e.Prim.PrimData.PCode.ToString()); return; } //FIXME : need to update prims? if (objects.ContainsKey(e.Prim.LocalID)) { //Debug.Log ("receive prim with LocalID " + e.Prim.LocalID.ToString() + " again!"); return; } if (e.Prim.Sculpt != null) { //leave sculpt prim out temporarily } else { FacetedMesh mesh = Utility.R.GenerateFacetedMesh(e.Prim, DetailLevel.Highest); lock (newPrims) { newPrims[e.Prim.LocalID] = mesh; } if (Application.platform == RuntimePlatform.WindowsPlayer || Application.platform == RuntimePlatform.WindowsEditor) { foreach (Face face in mesh.Faces) { m_textures.DownloadTexture(face.TextureFace.TextureID); } } } }
public void Objects_NewPrim(object sender, PrimEventArgs args) { // if (Name.EndsWith("4")) // throw new Exception("Aaargh"); Primitive prim = args.Prim; if (prim != null) { lock (m_objects) m_objects[prim.ID] = prim; if (prim.Textures != null) { if (prim.Textures.DefaultTexture.TextureID != UUID.Zero) { GetTexture(prim.Textures.DefaultTexture.TextureID); } for (int i = 0; i < prim.Textures.FaceTextures.Length; i++) { Primitive.TextureEntryFace face = prim.Textures.FaceTextures[i]; if (face != null) { UUID textureID = prim.Textures.FaceTextures[i].TextureID; if (textureID != UUID.Zero) { GetTexture(textureID); } } } } if (prim.Sculpt != null && prim.Sculpt.SculptTexture != UUID.Zero) { GetTexture(prim.Sculpt.SculptTexture); } } }
void Objects_OnNewPrim(object sender, PrimEventArgs e) { Primitive prim = e.Prim; if (enabled) { // Search this prim for textures for (int i = 0; i < prim.Textures.FaceTextures.Length; i++) { Primitive.TextureEntryFace face = prim.Textures.FaceTextures[i]; if (face != null) { if (!alreadyRequested.ContainsKey(face.TextureID)) { alreadyRequested[face.TextureID] = face.TextureID; Client.Assets.RequestImage(face.TextureID, ImageType.Normal, Assets_OnImageReceived); } } } } }
void Objects_OnNewPrim(object sender, PrimEventArgs e) { Primitive prim = e.Prim; if ((prim.Flags & PrimFlags.CreateSelected) == 0) { return; // We received an update for an object we didn't create } if (String.IsNullOrEmpty(ObjectName)) { ObjectName = "SimpleBuilder " + DateTime.Now.ToString("hmmss"); } client.Objects.SetName(client.Network.CurrentSim, prim.LocalID, ObjectName); client.Objects.ObjectUpdate -= Objects_OnNewPrim; primDone.Set(); instance.MainForm.TabConsole.DisplayNotificationInChat(pluginName + ": Object '" + txt_ObjectName.Text + "' has been successfully built and rezzed", ChatBufferTextStyle.Normal); MessageBox.Show("Object '" + txt_ObjectName.Text + "' has been built and rezzed", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information); }
static void Objects_OnNewPrim(object sender, PrimEventArgs e) { Primitive prim = e.Prim; if (CurrentSculpt != null && (prim.Flags & PrimFlags.CreateSelected) != 0 && !RezzedPrims.Contains(prim.LocalID)) { lock (RezzedPrims) RezzedPrims.Add(prim.LocalID); Console.WriteLine("Rezzed prim " + CurrentSculpt.Name + ", setting properties"); // Deselect the prim Client.Objects.DeselectObject(Client.Network.CurrentSim, prim.LocalID); // Set the prim position Client.Objects.SetPosition(Client.Network.CurrentSim, prim.LocalID, RootPosition + CurrentSculpt.Offset); // Set the texture Primitive.TextureEntry textures = new Primitive.TextureEntry(CurrentSculpt.TextureID); Client.Objects.SetTextures(Client.Network.CurrentSim, prim.LocalID, textures); // Turn it in to a sculpted prim Primitive.SculptData sculpt = new Primitive.SculptData(); sculpt.SculptTexture = CurrentSculpt.SculptID; sculpt.Type = SculptType.Sphere; Client.Objects.SetSculpt(Client.Network.CurrentSim, prim.LocalID, sculpt); // Set the prim name if (!String.IsNullOrEmpty(CurrentSculpt.Name)) { Client.Objects.SetName(Client.Network.CurrentSim, prim.LocalID, CurrentSculpt.Name); } RezzedEvent.Set(); } }
void Objects_AttachmentUpdate(object sender, PrimEventArgs e) { Primitive prim = e.Prim; if (client.Self.LocalID == 0 || prim.ParentID != client.Self.LocalID || prim.NameValues == null) { return; } for (int i = 0; i < prim.NameValues.Length; i++) { if (prim.NameValues[i].Name == "AttachItemID") { AttachmentInfo attachment = new AttachmentInfo(); attachment.Prim = prim; attachment.InventoryID = new UUID(prim.NameValues[i].Value.ToString()); attachment.PrimID = prim.ID; lock (attachments) { // Add new attachment info if (!attachments.ContainsKey(attachment.InventoryID)) { attachments.Add(attachment.InventoryID, attachment); } else { attachment = attachments[attachment.InventoryID]; if (attachment.Prim == null) { attachment.Prim = prim; } } // Don't update the tree yet if we're still updating invetory tree from server //if (!TreeUpdateInProgress) { if (Inventory.Contains(attachment.InventoryID)) { if (attachment.Item == null) { InventoryItem item = (InventoryItem)Inventory[attachment.InventoryID]; attachment.Item = item; } if (!attachment.MarkedAttached) { attachment.MarkedAttached = true; } } else { client.Inventory.RequestFetchInventory(attachment.InventoryID, client.Self.AgentID); } } } break; } } }
void Objects_OnNewPrim(object sender, PrimEventArgs e) { Primitive prim = e.Prim; if ((prim.Flags & PrimFlags.CreateSelected) == 0) { return; // We received an update for an object we didn't create } switch (state) { case ImporterState.RezzingParent: rootLocalID = prim.LocalID; goto case ImporterState.RezzingChildren; case ImporterState.RezzingChildren: if (!primsCreated.Contains(prim)) { // Need to set the textures first, and we have the old UUID's, which will work fine // for anyone who has the cached UUID for the texture in question. // TODO: Is there a way to set all of this at once, and update more ObjectProperties stuff? Client.Objects.SetPosition(e.Simulator, prim.LocalID, currentPosition); if (TextureUse == TextureSet.NewUUID) { if (Textures[currentPrim.Textures.DefaultTexture.TextureID] == UUID.Zero) { currentPrim.Textures.DefaultTexture.TextureID = Primitive.TextureEntry.WHITE_TEXTURE; } else { currentPrim.Textures.DefaultTexture.TextureID = Textures[currentPrim.Textures.DefaultTexture.TextureID]; } for (int j = 0; j < currentPrim.Textures.FaceTextures.Length; j++) { if (currentPrim.Textures.FaceTextures[j] != null && currentPrim.Textures.FaceTextures[j].TextureID != Primitive.TextureEntry.WHITE_TEXTURE) { if (Textures[currentPrim.Textures.FaceTextures[j].TextureID] == UUID.Zero) { currentPrim.Textures.FaceTextures[j] = null; } else { currentPrim.Textures.FaceTextures[j].TextureID = Textures[currentPrim.Textures.FaceTextures[j].TextureID]; } } } } else if (TextureUse == TextureSet.WhiteUUID || TextureUse == TextureSet.SculptUUID) { currentPrim.Textures.DefaultTexture.TextureID = Primitive.TextureEntry.WHITE_TEXTURE; for (int j = 0; j < currentPrim.Textures.FaceTextures.Length; j++) { currentPrim.Textures.FaceTextures[j] = null; } } Client.Objects.SetTextures(e.Simulator, prim.LocalID, currentPrim.Textures); if (currentPrim.Light != null && currentPrim.Light.Intensity > 0) { Client.Objects.SetLight(e.Simulator, prim.LocalID, currentPrim.Light); } if (currentPrim.Flexible != null) { Client.Objects.SetFlexible(e.Simulator, prim.LocalID, currentPrim.Flexible); } if (currentPrim.Sculpt != null && currentPrim.Sculpt.SculptTexture != UUID.Zero) { if (TextureUse == TextureSet.NewUUID || TextureUse == TextureSet.SculptUUID) { if (Textures[currentPrim.Sculpt.SculptTexture] == UUID.Zero) { currentPrim.Sculpt.SculptTexture = Primitive.TextureEntry.WHITE_TEXTURE; } else { currentPrim.Sculpt.SculptTexture = Textures[currentPrim.Sculpt.SculptTexture]; } } else if (TextureUse == TextureSet.WhiteUUID) { currentPrim.Sculpt.SculptTexture = Primitive.TextureEntry.WHITE_TEXTURE; } Client.Objects.SetSculpt(e.Simulator, prim.LocalID, currentPrim.Sculpt); } if (currentPrim.Properties != null && !String.IsNullOrEmpty(currentPrim.Properties.Name)) { Client.Objects.SetName(e.Simulator, prim.LocalID, currentPrim.Properties.Name); } if (currentPrim.Properties != null && !String.IsNullOrEmpty(currentPrim.Properties.Description)) { Client.Objects.SetDescription(e.Simulator, prim.LocalID, currentPrim.Properties.Description); } primsCreated.Add(prim); primDone.Set(); } break; case ImporterState.Linking: lock (linkQueue) { int indx = linkQueue.IndexOf(prim.LocalID); if (indx != -1) { linkQueue.RemoveAt(indx); if (linkQueue.Count == 0) { primDone.Set(); } } } break; } }
/// <summary> /// Handle object updates, looking for sound events /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void Objects_ObjectUpdate(object sender, PrimEventArgs e) { HandleObjectSound(e.Prim, e.Simulator); }
void Objects_ObjectUpdate(object sender, PrimEventArgs e) { if ((e.Prim.Flags & PrimFlags.CreateSelected) == 0) { return; // We received an update for an object we didn't create } switch (state) { case ImporterState.RezzingParent: rootLocalID = e.Prim.LocalID; goto case ImporterState.RezzingChildren; case ImporterState.RezzingChildren: if (!primsCreated.Contains(e.Prim)) { Console.WriteLine("Setting properties for " + e.Prim.LocalID); // TODO: Is there a way to set all of this at once, and update more ObjectProperties stuff? Client.Objects.SetPosition(e.Simulator, e.Prim.LocalID, currentPosition); Client.Objects.SetTextures(e.Simulator, e.Prim.LocalID, currentPrim.Textures); if (currentPrim.Light != null && currentPrim.Light.Intensity > 0) { Client.Objects.SetLight(e.Simulator, e.Prim.LocalID, currentPrim.Light); } if (currentPrim.Flexible != null) { Client.Objects.SetFlexible(e.Simulator, e.Prim.LocalID, currentPrim.Flexible); } if (currentPrim.Sculpt != null && currentPrim.Sculpt.SculptTexture != UUID.Zero) { Client.Objects.SetSculpt(e.Simulator, e.Prim.LocalID, currentPrim.Sculpt); } if (currentPrim.Properties != null && !String.IsNullOrEmpty(currentPrim.Properties.Name)) { Client.Objects.SetName(e.Simulator, e.Prim.LocalID, currentPrim.Properties.Name); } if (currentPrim.Properties != null && !String.IsNullOrEmpty(currentPrim.Properties.Description)) { Client.Objects.SetDescription(e.Simulator, e.Prim.LocalID, currentPrim.Properties.Description); } primsCreated.Add(e.Prim); primDone.Set(); } break; case ImporterState.Linking: lock (linkQueue) { int index = linkQueue.IndexOf(e.Prim.LocalID); if (index != -1) { linkQueue.RemoveAt(index); if (linkQueue.Count == 0) { primDone.Set(); } } } break; } }
private static void onObjectUpdate(object sender, PrimEventArgs e) { //Console.WriteLine("ObjectUpdate @ " + DateTime.Now); /* * Disabled until Libremetaverse is fully tested * * while (Monitor.IsEntered(_CacheLock)) { } * lock (_CacheLock) * { * * if (MasterObjectCaches == null) * { * MasterObjectCaches = ObjectCaches.Instance; * Console.WriteLine("\n=> Recv: ObjectUpdate; Set: new MasterObjectCache(" + e.Simulator.Name + ")"); * } * if (MasterObjectCaches.RegionPrims == null) MasterObjectCaches.RegionPrims = new Dictionary<string, Dictionary<UUID, Primitive2>>(); * Dictionary<UUID, Primitive2> NewDictionary = new Dictionary<UUID, Primitive2>(); * if (!MasterObjectCaches.RegionPrims.ContainsKey(e.Simulator.Name)) * { * NewDictionary = new Dictionary<UUID, Primitive2>(); * try * { * * MasterObjectCaches.RegionPrims.Add(e.Simulator.Name, NewDictionary); * MasterObjectCaches.MarkDirty(); * } * catch (Exception E) * { * Console.WriteLine("FAILED TO INITIALIZE MASTER OBJECT CACHE FOR REGION"); * Console.WriteLine(E.StackTrace); * } * } * else * { * NewDictionary = MasterObjectCaches.RegionPrims[e.Simulator.Name]; * } * Primitive p = e.Prim; * if (!NewDictionary.ContainsKey(e.Prim.ID)) * { * NewDictionary.Add(p.ID, new Primitive2(p)); * MasterObjectCaches.RegionPrims[e.Simulator.Name] = NewDictionary; * MasterObjectCaches.MarkDirty(); * // Check properties val * if (p.Properties == null) * { * client.Objects.SelectObject(client.Network.CurrentSim, p.LocalID); * client.Objects.DeselectObject(client.Network.CurrentSim, p.LocalID); * } * * if (p.OwnerID == client.Self.AgentID) * { * Console.WriteLine("[!] Discovered a prim that i created\n\n"); * } * } * else * { * // Prim is already in list. * // Verify that the properties are still the same * if (p.Properties == null) * { * client.Objects.SelectObject(client.Network.CurrentSim, p.LocalID); * client.Objects.DeselectObject(client.Network.CurrentSim, p.LocalID); * } * * } * } */ }
public void OnObjectUpdate(object sender, PrimEventArgs e) { // Console.WriteLine("OnObjectUpdated" + e.Prim); }