public override PhysicsActor AddAvatar(string avName, Vector3 position, Quaternion rotation, Vector3 size, bool isFlying, uint localID, UUID UUID) { if (!m_initialized) { return(null); } BSCharacter actor = new BSCharacter(localID, avName, this, position, size, isFlying); actor.UUID = UUID; lock (PhysObjects) PhysObjects.Add(localID, actor); // TODO: Remove kludge someday. // We must generate a collision for avatars whether they collide or not. // This is required by WhiteCore to update avatar animations, etc. lock (m_avatars) m_avatars.Add(actor); return(actor); }
public override void RemoveAvatar(PhysicsActor actor) { // MainConsole.Instance.DebugFormat("{0}: RemoveAvatar", LogHeader); if (!m_initialized) { return; } BSCharacter bsactor = actor as BSCharacter; if (bsactor != null) { try { lock (PhysObjects) PhysObjects.Remove(bsactor.LocalID); // Remove kludge someday lock (m_avatars) m_avatars.Remove(bsactor); } catch (Exception e) { MainConsole.Instance.WarnFormat("{0}: Attempt to remove avatar that is not in physics scene: {1}", LogHeader, e); } bsactor.Destroy(); // bsactor.dispose(); } else { MainConsole.Instance.ErrorFormat( "{0}: Requested to remove avatar that is not a BSCharacter. ID={1}, type={2}", LogHeader, actor.LocalID, actor.GetType().Name); } }
public override PhysicsActor AddAvatar(string avName, Vector3 position, Quaternion rotation, Vector3 size, bool isFlying, uint localID, UUID UUID) { if (!m_initialized) return null; BSCharacter actor = new BSCharacter(localID, avName, this, position, size, isFlying); actor.UUID = UUID; lock (PhysObjects) PhysObjects.Add(localID, actor); // TODO: Remove kludge someday. // We must generate a collision for avatars whether they collide or not. // This is required by OpenSim to update avatar animations, etc. lock (m_avatars) m_avatars.Add(actor); return actor; }