public override void RemoveAvatar(PhysicsCharacter actor) { BasicCharacterActor act = (BasicCharacterActor)actor; if (_actors.Contains(act)) { _actors.Remove(act); } }
public void AddAvatar (PhysicsCharacter prm) { PhysicsState state = new PhysicsState (); state.Position = prm.Position; state.AngularVelocity = prm.RotationalVelocity; state.LinearVelocity = prm.Velocity; state.Rotation = prm.Orientation; m_activePrims[prm.UUID] = state; }
private void ResetAvatar (PhysicsCharacter physicsObject, PhysicsState physicsState, float direction) { physicsObject.Position = physicsState.Position; physicsObject.ForceSetPosition (physicsState.Position); physicsObject.Orientation = physicsState.Rotation; physicsObject.RotationalVelocity = physicsState.AngularVelocity * direction; physicsObject.Velocity = physicsState.LinearVelocity * direction; physicsObject.ForceSetVelocity (physicsState.LinearVelocity * direction); physicsObject.RequestPhysicsterseUpdate (); }
public override void RemoveAvatar(PhysicsCharacter actor) { //m_log.Debug("[PHYSICS]:ODELOCK"); ((AuroraODECharacter)actor).Destroy(); }
public override void RemoveAvatar(PhysicsCharacter actor) { //MainConsole.Instance.Debug("[PHYSICS]:ODELOCK"); ((AuroraODECharacter) actor).Destroy(); }
/// <summary> /// Removes physics plugin scene representation of this agent if it exists. /// </summary> public virtual void RemoveFromPhysicalScene () { try { if (PhysicsActor != null) { if (OnRemovePhysics != null) OnRemovePhysics(); if (m_physicsActor != null) m_scene.PhysicsScene.RemoveAvatar(m_physicsActor); if (m_physicsActor != null) m_physicsActor.OnCollisionUpdate -= PhysicsCollisionUpdate; if (m_physicsActor != null) m_physicsActor.OnRequestTerseUpdate -= SendPhysicsTerseUpdateToAllClients; if (m_physicsActor != null) m_physicsActor.OnSignificantMovement -= CheckForSignificantMovement; if (m_physicsActor != null) m_physicsActor.OnPositionAndVelocityUpdate -= PhysicsUpdatePosAndVelocity; if (m_physicsActor != null) m_physicsActor.OnCheckForRegionCrossing -= CheckForBorderCrossing; if (m_physicsActor != null) m_physicsActor.OnOutOfBounds -= OutOfBoundsCall; if (m_physicsActor != null) m_scene.PhysicsScene.RemoveAvatar(PhysicsActor); if (m_physicsActor != null) m_physicsActor.UnSubscribeEvents(); m_physicsActor = null; } } catch { } }
/// <summary> /// Adds a physical representation of the avatar to the Physics plugin /// </summary> public virtual void AddToPhysicalScene (bool isFlying, bool AddAvHeightToPosition) { //Make sure we arn't already doing this if (m_creatingPhysicalRepresentation) return; //Set this so we don't do it multiple times m_creatingPhysicalRepresentation = true; IAvatarAppearanceModule appearance = RequestModuleInterface<IAvatarAppearanceModule> (); if (appearance != null) { if (appearance.Appearance.AvatarHeight == 0) appearance.Appearance.SetHeight (); if (appearance.Appearance.AvatarHeight != 0) m_avHeight = appearance.Appearance.AvatarHeight; } PhysicsScene scene = m_scene.PhysicsScene; Vector3 pVec = AbsolutePosition; if(AddAvHeightToPosition) //This is here so that after teleports, you arrive just slightly higher so that you don't fall through the ground/objects pVec.Z += m_avHeight; m_physicsActor = scene.AddAvatar(Name, pVec, Rotation, new Vector3 (0f, 0f, m_avHeight), isFlying, LocalId, UUID); scene.AddPhysicsActorTaint(m_physicsActor); m_physicsActor.OnRequestTerseUpdate += SendPhysicsTerseUpdateToAllClients; m_physicsActor.OnSignificantMovement += CheckForSignificantMovement; m_physicsActor.OnCollisionUpdate += PhysicsCollisionUpdate; m_physicsActor.OnPositionAndVelocityUpdate += PhysicsUpdatePosAndVelocity; m_physicsActor.OnCheckForRegionCrossing += CheckForBorderCrossing; m_physicsActor.OnOutOfBounds += OutOfBoundsCall; // Called for PhysicsActors when there's something wrong m_physicsActor.SubscribeEvents(500); m_physicsActor.Orientation = Rotation; //Tell any events about it if (OnAddPhysics != null) OnAddPhysics(); //All done, reset this m_creatingPhysicalRepresentation = false; }
public override void RemoveAvatar(PhysicsCharacter actor) { lock (BulletLock) { BulletDotNETCharacter chr = (BulletDotNETCharacter)actor; if (!Locked) { chr.Remove(); AddPhysicsActorTaint(chr); //chr = null; } else { RemoveQueue.Add(actor); } m_charactersLocalID.Remove(chr.m_localID); } }
public override void RemoveAvatar(PhysicsCharacter actor) { // m_log.DebugFormat("{0}: RemoveAvatar", LogHeader); if (actor is BSCharacter) ((BSCharacter)actor).Destroy(); try { lock (m_avatars) m_avatars.Remove(actor.LocalID); } catch (Exception e) { m_log.WarnFormat("{0}: Attempt to remove avatar that is not in physics scene: {1}", LogHeader, e); } }
public abstract void RemoveAvatar(PhysicsCharacter actor);
public override void RemoveAvatar (PhysicsCharacter actor) { }