/// <summary> /// Raised when the simulator sends us data containing Primitive and Avatar movement changes /// </summary> /// <see cref="http://lib.openmetaverse.org/docs/trunk/html/E_OpenMetaverse_ObjectManager_TerseObjectUpdate.htm"/> /// <param name="sender">Source of this event.</param> /// <param name="e">Provides primitive data containing updated location, velocity, rotation, textures for the TerseObjectUpdate event.</param> void Objects_TerseObjectUpdate(object sender, TerseObjectUpdateEventArgs e) { lock (greedyBotLock) { gameComponents.Objects_TerseObjectUpdate(sender, e); } }
void Objects_TerseObjectUpdate(object sender, TerseObjectUpdateEventArgs e) { if (!e.Update.Avatar) { return; } if (e.Prim.LocalID == Client.Self.LocalID) { SetDefaultCamera(); } if (!IsFollowing) { return; } Avatar av; Client.Network.CurrentSim.ObjectsAvatars.TryGetValue(e.Update.LocalID, out av); if (av == null) { return; } if (av.ID == followID) { Vector3 pos = AvatarPosition(Client.Network.CurrentSim, av); FollowUpdate(pos); } }
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); }
private void Objects_OnObjectUpdated(object sender, TerseObjectUpdateEventArgs e) { if (startTime == 0) { return; } if (e.Update.LocalID == Client.Self.LocalID) { XYMovement(); ZMovement(); if (Client.Self.Movement.AtPos || Client.Self.Movement.AtNeg) { Client.Self.Movement.TurnToward(target); Debug("Flyxy "); } else if (Client.Self.Movement.UpPos || Client.Self.Movement.UpNeg) { Client.Self.Movement.TurnToward(target); //Client.Self.Movement.SendUpdate(false); Debug("Fly z "); } else if (Vector3.Distance(target, Client.Self.SimPosition) <= 2.0) { EndFlyto(); Debug("At Target"); } } if (Environment.TickCount - startTime > duration) { EndFlyto(); Debug("End Flyto"); } }
private void Objects_OnObjectUpdated(object sender, TerseObjectUpdateEventArgs e) { if (startTime == 0) return; if (e.Update.LocalID == Client.Self.LocalID) { XYMovement(); ZMovement(); if (Client.Self.Movement.AtPos || Client.Self.Movement.AtNeg) { Client.Self.Movement.TurnToward(target); Debug("Flyxy "); } else if (Client.Self.Movement.UpPos || Client.Self.Movement.UpNeg) { Client.Self.Movement.TurnToward(target); //Client.Self.Movement.SendUpdate(false); Debug("Fly z "); } else if (Vector3.Distance(target, Client.Self.SimPosition) <= 2.0) { EndFlyto(); Debug("At Target"); } } if (Environment.TickCount - startTime > duration) { EndFlyto(); Debug("End Flyto"); } }
void Objects_TerseObjectUpdate(object sender, TerseObjectUpdateEventArgs e) { if (Prims.ContainsKey(e.Prim.LocalID)) { UpdatePrimBlocking(e.Prim); } }
void Objects_TerseObjectUpdate(object sender, TerseObjectUpdateEventArgs e) { if (e.Prim.LocalID == Self.LocalID) { SetDefaultCamera(); } }
/// <summary> /// Event Handler for waypoint distance checking /// </summary> private void Objects_TerseObjectUpdate(object sender, TerseObjectUpdateEventArgs e) { if (status == AutoPilotStatus.Moving && e.Update.Avatar && e.Update.LocalID == Client.Self.LocalID) { uint regionX, regionY; Utils.LongToUInts(e.Simulator.Handle, out regionX, out regionY); myGlobalPosition = new Vector3d( regionX + e.Update.Position.X, regionY + e.Update.Position.Y, e.Update.Position.Z ); if (Vector3d.Distance(myGlobalPosition, NextWaypoint) <= waypointRadius) { if (NextWaypointIsFinal && !Loop) { Stop(AutoPilotStatus.Finished); } else { if (OnWaypointArrival != null) { OnWaypointArrival(NextWaypoint); } MoveToNextWaypoint(); } } } }
void Objects_TerseObjectUpdate(object sender, TerseObjectUpdateEventArgs e) { if (e.Prim.PrimData.PCode == PCode.Avatar) { newTerseAvatarUpdates.Add(e); } }
//static void Objects_OnNewPrim(Simulator simulator, Primitive primd, ulong regionHandle, ushort timeDilation) static void Objects_OnNewPrim(object sender, TerseObjectUpdateEventArgs e) { lock (objects) { Primitive primd = e.Prim; objects.Add(primd); } }
private void Objects_OnObjectUpdated(object s, TerseObjectUpdateEventArgs e) { if (startTime == DateTime.MinValue) { return; } if (e.Update.LocalID == Client.Self.LocalID) { XYMovement(); ZMovement(); if (Client.Self.Movement.AtPos || Client.Self.Movement.AtNeg) { Client.Self.Movement.TurnToward(target); Debug("Flyxy "); } else if (Client.Self.Movement.UpPos || Client.Self.Movement.UpNeg) { Client.Self.Movement.TurnToward(target); //Client.Self.Movement.SendUpdate(false); Debug("Fly z "); } else if (Vector3.Distance(target, GetSimPosition()) <= 2.0) { EndFlyto(); Debug("At Target"); } } if (DateTime.Now.Subtract(startTime).TotalMilliseconds > duration) { EndFlyto(); Debug("End Flyto"); } }
void Objects_TerseObjectUpdate(object sender, TerseObjectUpdateEventArgs e) { if (e.Update.Avatar && e.Update.LocalID == Client.Self.LocalID) { mypos = e.Update.Position; if (Vector3.Distance(mypos, Waypoints[NextWaypoint]) < 2f) { NextWaypoint++; } } }
void Objects_OnObjectUpdated(object sender, TerseObjectUpdateEventArgs e) { bool found; lock (_TrackedAvatars) found = _TrackedAvatars.ContainsKey(e.Update.LocalID); if (found) { Avatar av; if (e.Simulator.ObjectsAvatars.TryGetValue(e.Update.LocalID, out av)) { UpdateAvatar(av); } } }
public void Objects_TerseObjectUpdate(object sender, TerseObjectUpdateEventArgs e) { if (diceLeftId != UUID.Zero && e.Prim.ID == diceLeftId) { if (e.Update.Textures == null) { return; } gameDice.OnDiceFaceUpdate(true, e.Update.Textures); return; } if (diceRightId != UUID.Zero && e.Prim.ID == diceRightId) { if (e.Update.Textures == null) { return; } gameDice.OnDiceFaceUpdate(false, e.Update.Textures); return; } if (scoreId != UUID.Zero && e.Prim.ID == scoreId) { if (e.Update.Textures == null) { return; } gameScore.OnUpdate(e.Prim.Textures); return; } if (playerLightIds.Contains(e.Prim.ID)) { Utils.OutputLine("Updating light", Utils.OutputLevel.Game); int lightIndex = -1; for (int i = 0; i < playerLightIds.Length; i++) { if (playerLightIds[i] == e.Prim.ID) { lightIndex = i; break; } } gameLight.UpdateLight(e.Prim, lightIndex); return; } }
void MoveAvatar(TerseObjectUpdateEventArgs e) { GameObject av = avatars[e.Prim.LocalID]; UnityEngine.Vector3 pos; pos.x = e.Prim.Position.X; pos.y = e.Prim.Position.Y; pos.z = -(e.Prim.Position.Z - 0.7f); //hack: fix foot to ground av.transform.position = pos; UnityEngine.Quaternion rot; rot.x = e.Prim.Rotation.X; rot.y = e.Prim.Rotation.Y; rot.z = e.Prim.Rotation.Z; rot.w = e.Prim.Rotation.W; av.transform.rotation = rot; }
private void Objects_OnObjectUpdated(object s, TerseObjectUpdateEventArgs e) { var Client = GetGridClient(); var ClientMovement = Client.Self.Movement; if (startTime == DateTime.MinValue) { DeRegCallback(); return; } if (e.Update.LocalID == Client.Self.LocalID) { XYMovement(); ZMovement(); if (ClientMovement.AtPos || ClientMovement.AtNeg) { TheBot.TurnToward(Target.GlobalPosition); //Debug("Flyxy "); } else if (ClientMovement.UpPos || ClientMovement.UpNeg) { TheBot.TurnToward(Target.GlobalPosition); //ClientMovement.SendUpdate(false); //Debug("Fly z "); } else if (Vector3d.Distance(Target.GlobalPosition, TheBot.GlobalPosition) <= 2.0) { EndFlyto(); KeepFollowing = false; Debug("At Target"); } } if (!KeepFollowing) { EndFlyto(); Debug("End Flyto"); } }
public void OnTerseObjectUpdate(object sender, TerseObjectUpdateEventArgs e) { ObjectMovementUpdate omu = e.Update; Avatar avatar; m_GridClient.Network.CurrentSim.ObjectsAvatars.TryGetValue(e.Update.LocalID, out avatar); if (avatar != null && avatar.Name != "") { if (avatar.Name == CONDUCTOR) { m_ir.UpdateState(m_GridClient.Self.RelativePosition, avatar.Position); Debug.WriteLine("UUID = " + avatar.ID); if (Vector3.Distance(m_GridClient.Self.RelativePosition, avatar.Position) < 5) { Debug.WriteLine("collision happened between player and " + m_GridClient.Self.Name); } } // follow avatar FollowAvatar(avatar); } }
private void Objects_OnObjectUpdated(object sender, TerseObjectUpdateEventArgs e) { if (!e.Update.Avatar) { return; } //if (e.Prim.LocalID == client.Self.LocalID) ResetCamera(); //if (!following && !goingto) return; if (!following) { return; } Avatar av = new Avatar(); client.Network.CurrentSim.ObjectsAvatars.TryGetValue(e.Update.LocalID, out av); if (av == null) { client.Self.AutoPilotCancel(); Logger.Log("Follow/GoTo cancelled. Could not find the target avatar on the SIM.", Helpers.LogLevel.Warning); return; } if (av.Name != followName) { return; } Vector3 pos = new Vector3(Vector3.Zero);; pos = av.Position; if (av.ParentID != 0) { uint oID = av.ParentID; if (prim == null) { client.Network.CurrentSim.ObjectsPrimitives.TryGetValue(oID, out prim); } if (prim == null) { client.Self.AutoPilotCancel(); Logger.Log("Follow/GoTo cancelled. Could not find the object the target avatar is sitting on.", Helpers.LogLevel.Warning); return; } pos += prim.Position; } else { prim = null; } client.Self.Movement.TurnToward(pos); float dist = Vector3.Distance(instance.SIMsittingPos(), pos); //if (av.Name == goName) //{ // if (goingto) // { // if (dist < 3.0f) // { // client.Self.AutoPilotCancel(); // client.Self.Movement.TurnToward(pos); // goid = UUID.Zero; // goName = string.Empty; // goingto = false; // } // else // { // client.Self.AutoPilotCancel(); // ulong followRegionX = e.Simulator.Handle >> 32; // ulong followRegionY = e.Simulator.Handle & (ulong)0xFFFFFFFF; // ulong xTarget = (ulong)pos.X + followRegionX; // ulong yTarget = (ulong)pos.Y + followRegionY; // float zTarget = pos.Z - 1f; // client.Self.AutoPilot(xTarget, yTarget, zTarget); // } // } // return; //} //if (av.Name == followName) //{ client.Self.Movement.TurnToward(av.Position); if (dist > followDistance) { client.Self.AutoPilotCancel(); ulong followRegionX = e.Simulator.Handle >> 32; ulong followRegionY = e.Simulator.Handle & (ulong)0xFFFFFFFF; ulong xTarget = (ulong)pos.X + followRegionX; ulong yTarget = (ulong)pos.Y + followRegionY; float zTarget = pos.Z - 1f; client.Self.AutoPilot(xTarget, yTarget, zTarget); } //} }
public override void Objects_OnObjectUpdated(object sender, TerseObjectUpdateEventArgs e1) { Objects_OnPrimitiveUpdateReal(e1.Simulator, e1.Prim, e1.Update, e1.Simulator.Handle, e1.TimeDilation); //base.Objects_OnObjectUpdated(sender,e1); }