private void CheckAvoidFalls(SimAvatarClient TheCBot) { if (AvoidFalls && !TheCBot.Flying) { if (!AvoidFallsWithFlight) { SwitchSalientProc(); return; } TheCBot.Flying = true; setFlight = true; } }
public SimAvatarClient(UUID id, WorldObjects objectSystem, Simulator reg) : base(id, objectSystem, reg) { SingleInstance = this; Affordances.ObjectType.SuperType.Add(SimTypeSystem.GetObjectType("PlayerAvatar")); //try //{ // AspectName = slAvatar.Name; //} //catch (Exception) //{ // AspectName += objectSystem.client + "_Avatar_" + slAvatar.LocalID; //} //MakeEnterable(this); WorldSystem.AddAvatar(this, id); }
private void SwitchSalientProc() { procnum++; if (procnum >= proceedure.Length) { procnum = 0; } proposed = proceedure[procnum]; SimAvatarClient TheCBot = (SimAvatarClient)this.TheCBot; if (setFlight) { setFlight = false; TheCBot.Flying = false; } switch (proposed.Proc) { case MovementProceedure.AutoPilot: if (!UseAutoPilot) { SwitchSalientProc(); break; } CheckAvoidFalls(TheCBot); break; case MovementProceedure.AStar: if (!UseGotoTarget) { SwitchSalientProc(); } break; case MovementProceedure.TurnToAndWalk: if (!UseSimpleTurnTo) { SwitchSalientProc(); break; } CheckAvoidFalls(TheCBot); break; case MovementProceedure.FlyTo: if (!UseFlight || !TheCBot.CanFly) { SwitchSalientProc(); } break; case MovementProceedure.Teleport: if (!UseTeleport || !TheCBot.GetSimRegion().CanTeleportLocally /*|| SimAvatarClient.GotoUseTeleportFallback || SimAvatarClient.MoveUseTeleportFallback*/) { SwitchSalientProc(); } break; default: throw new ArgumentOutOfRangeException("proposed.Proc=" + proposed.Proc); } TheCBot.SalientMovementProceedure = proposed.Proc; }
public void Objects_OnNewAvatar1(Simulator simulator, Avatar avatar, ulong regionHandle) { try { Objects_OnNewPrimReal(simulator, avatar, regionHandle); if (avatar.LocalID == client.Self.LocalID) { SimObject AV = (SimObject)GetSimObject(avatar, simulator); if (AV is SimActor) { TheSimAvatar = (SimAvatarClient)AV; TheSimAvatar.SetClient(client); } } } catch (Exception e) { WriteLine(String.Format("err :{0}", e.StackTrace)); } }
//object Objects_OnNewAvatarLock = new object(); public override void Objects_OnNewAvatar(object sender, AvatarUpdateEventArgs e) { Avatar avatar = e.Avatar; var simulator = e.Simulator; var regionHandle = e.Simulator.Handle; if (regionHandle==0) { return; } SimObject AV = GetSimObject(avatar, simulator); if (avatar.ID == client.Self.AgentID) { if (AV is SimActor) { TheSimAvatar = (SimAvatarClient)AV; TheSimAvatar.SetClient(client); } } AV.IsKilled = false; if (IsMaster(simulator)) //lock (Objects_OnNewAvatarLock) { AV.ResetPrim(avatar, client, simulator); } Objects_OnNewAvatar1(simulator, avatar, regionHandle); }
public void SetSimAvatar(SimActor simAvatar) { TheSimAvatar = (SimAvatarClient)simAvatar; }
internal SimAvatarImpl CreateSimAvatar(UUID uuid, WorldObjects objects, Simulator simulator) { if (uuid == UUID.Zero) { throw new NullReferenceException("UUID.Zero!"); } // Request all of the packets that make up an avatar profile // lock (GetSimObjectLock) if (client.Self.AgentID == uuid) { return TheSimAvatar; } SimAvatarImpl obj0 = GetSimObjectFromUUID(uuid) as SimAvatarImpl; if (obj0 != null) return (SimAvatarImpl)obj0; object getSimLock = GetSimLock(simulator ?? client.Network.CurrentSim); lock (getSimLock) { lock (UUIDTypeObjectLock) //lock (SimObjects) // lock (SimAvatars) { SimObject simObj = GetSimObjectFromUUID(uuid); obj0 = simObj as SimAvatarImpl; if (obj0 != null) return (SimAvatarImpl) obj0; if (simObj != null) { Debug("SimObj->SimAvatar!?! " + simObj); } obj0 = new SimAvatarClient(uuid, objects, simulator); AddAvatar(obj0,uuid); obj0.PollForPrim(this, simulator); return (SimAvatarImpl)obj0; } } }
public SimAvatarClient(UUID id, WorldObjects objectSystem, Simulator reg) : base(id, objectSystem, reg) { SingleInstance = this; Affordances.ObjectType.SuperType.Add(SimTypeSystem.GetObjectType("PlayerAvatar")); //try //{ // AspectName = slAvatar.Name; //} //catch (Exception) //{ // AspectName += objectSystem.client + "_Avatar_" + slAvatar.LocalID; //} //MakeEnterable(this); WorldSystem.AddAvatar(this,id); }