///<summary>Raises the ObjectDataBlockUpdate Event</summary> /// <param name="e">A ObjectDataBlockUpdateEventArgs object containing /// the data sent from the simulator</param> protected virtual void OnObjectDataBlockUpdate(ObjectDataBlockUpdateEventArgs e) { EventHandler<ObjectDataBlockUpdateEventArgs> handler = m_ObjectDataBlockUpdate; if (handler != null) handler(this, e); }
void Objects_ObjectDataBlockUpdate(object sender, ObjectDataBlockUpdateEventArgs e) { if (Prims.ContainsKey(e.Prim.LocalID)) { UpdatePrimBlocking(e.Prim); } }
void Objects_ObjectDataBlockUpdate(object sender, ObjectDataBlockUpdateEventArgs e) { if (e.Simulator.Handle != Client.Network.CurrentSim.Handle) return; UpdatePrimBlocking(e.Prim); }
void Objects_ObjectDataBlockUpdate(object sender, ObjectDataBlockUpdateEventArgs e) { if (!this.IsHandleCreated) return; if (Prims.ContainsKey(e.Prim.LocalID)) { UpdatePrimBlocking(e.Prim); } }
private void Objects_OnObjectDataBlockUpdate(object sender, ObjectDataBlockUpdateEventArgs e) { Simulator simulator = e.Simulator; Primitive prim = e.Prim; var data = e.ConstructionData; ObjectUpdatePacket.ObjectDataBlock block = e.Block; var objectupdate0 = e.Update; if (!IsMaster(simulator)) return; // return; if (!objectupdate0.Avatar) { PrimtiveBlockUpdate(simulator, objectupdate0, prim, block, data); } else // this code only is usefull for avatars { prim.Flags = (PrimFlags)block.UpdateFlags; if ((prim.Flags & PrimFlags.ZlibCompressed) != 0) { Logger.Log("Got a ZlibCompressed ObjectMovementUpdate, implement me!", Helpers.LogLevel.Warning, client); } prim.NameValues = e.NameValues; prim.LocalID = block.ID; prim.ID = block.FullID; //NOTE this broke onSitChanged! prim.ParentID = block.ParentID; prim.RegionHandle = simulator.Handle; prim.Scale = block.Scale; prim.ClickAction = (ClickAction)block.ClickAction; prim.OwnerID = block.OwnerID; prim.MediaURL = Utils.BytesToString(block.MediaURL); prim.Text = Utils.BytesToString(block.Text); prim.TextColor = new Color4(block.TextColor, 0, false, true); // Sound information prim.Sound = block.Sound; prim.SoundFlags = (SoundFlags)block.Flags; prim.SoundGain = block.Gain; prim.SoundRadius = block.Radius; // Joint information prim.Joint = (JointType)block.JointType; prim.JointPivot = block.JointPivot; prim.JointAxisOrAnchor = block.JointAxisOrAnchor; // Object parameters prim.PrimData = data; // Textures, texture animations, particle system, and extra params //prim.Textures = objectupdate.Textures; prim.TextureAnim = new Primitive.TextureAnimation(block.TextureAnim, 0); prim.ParticleSys = new Primitive.ParticleSystem(block.PSBlock, 0); prim.SetExtraParamsFromBytes(block.ExtraParams, 0); // PCode-specific data switch (data.PCode) { case PCode.Grass: case PCode.Tree: case PCode.NewTree: if (block.Data.Length == 1) prim.TreeSpecies = (Tree)block.Data[0]; else Logger.Log("Got a foliage update with an invalid TreeSpecies field", Helpers.LogLevel.Warning); prim.ScratchPad = Utils.EmptyBytes; break; default: prim.ScratchPad = new byte[block.Data.Length]; if (block.Data.Length > 0) Buffer.BlockCopy(block.Data, 0, prim.ScratchPad, 0, prim.ScratchPad.Length); break; } // Packed parameters //prim.CollisionPlane = objectupdate.CollisionPlane; //prim.Position = objectupdate.Position; //prim.Velocity = objectupdate.Velocity; //prim.Acceleration = objectupdate.Acceleration; //prim.Rotation = objectupdate.Rotation; //prim.AngularVelocity = objectupdate.AngularVelocity; EnsureSelected(prim, simulator); Objects_OnPrimitiveUpdateReal(simulator, prim, objectupdate0, simulator.Handle, 0); } }