private ScenePresence(IClientAPI client, Scene world, RegionInfo reginfo) { m_regionHandle = reginfo.RegionHandle; m_controllingClient = client; Firstname = m_controllingClient.FirstName; Lastname = m_controllingClient.LastName; m_name = String.Format("{0} {1}", Firstname, Lastname); m_scene = world; m_uuid = client.AgentId; m_regionInfo = reginfo; m_localId = m_scene.AllocateLocalId(); m_useFlySlow = m_scene.m_useFlySlow; m_usePreJump = m_scene.m_usePreJump; IGroupsModule gm = m_scene.RequestModuleInterface<IGroupsModule>(); if (gm != null) m_grouptitle = gm.GetGroupTitle(m_uuid); m_scriptEngines = m_scene.RequestModuleInterfaces<IScriptModule>(); ISceneViewModule sceneViewModule = m_scene.RequestModuleInterface<ISceneViewModule>(); if (sceneViewModule != null) m_sceneView = sceneViewModule.CreateSceneView(this); else m_log.Warn("[SCENE PRESENCE]: Failed to create a scene view"); SetAgentPositionInfo(null, true, m_controllingClient.StartPos, null, Vector3.Zero, m_velocity); m_animPersistUntil = 0; RegisterToEvents(); SetDirectionVectors(); SetDirectionFlags(); m_remotePresences = new AvatarRemotePresences(world, this); m_connection = world.ConnectionManager.GetConnection(this.UUID); if (m_connection != null) // can be null for bots which don't have a LLCV m_connection.ScenePresence = this; // Prime (cache) the user's group list. m_scene.UserGroupsGet(this.UUID); }