void EventManager_OnPrimsLoaded(Scene s) { // let's sniff all the user names referenced by objects in the scene m_log.DebugFormat("[USER MANAGEMENT MODULE]: Caching creators' data from {0} ({1} objects)...", s.RegionInfo.RegionName, s.GetEntities().Length); s.ForEachSOG(delegate(SceneObjectGroup sog) { CacheCreators(sog); }); }
public XmlRpcResponse ListXmlRpcHandler(XmlRpcRequest request, IPEndPoint client) { // AuthClient.VerifySession(GetUserServerURL(userID), userID, sessionID); XmlRpcResponse response = new XmlRpcResponse(); Hashtable requestData = (Hashtable)request.Params[0]; Hashtable resp = new Hashtable(); Hashtable result = new Hashtable(); if (requestData.ContainsKey("RegionID")) { UUID regionID = UUID.Parse((string)requestData["RegionID"]); m_scene = SelectRegion(regionID); IModrexObjectsProvider rexObjects = m_scene.RequestModuleInterface<IModrexObjectsProvider>(); m_scene.ForEachSOG(delegate(SceneObjectGroup e) { Hashtable sogdata = new Hashtable(); sogdata["name"] = e.Name; sogdata["primname"] = e.RootPart.Name; sogdata["groupid"] = e.GroupID.ToString(); sogdata["primcount"] = e.PrimCount.ToString(); sogdata["owner"] = e.OwnerID.ToString(); sogdata["part"] = e.GetFromItemID().ToString(); sogdata["rotation"] = e.RootPart.GetWorldRotation().ToString(); sogdata["position"] = e.AbsolutePosition.ToString(); sogdata["scale"] = e.GroupScale().ToString(); RexObjectProperties robject = rexObjects.GetObject(e.RootPart.UUID); sogdata["asset"] = robject.RexMeshUUID.ToString(); sogdata["drawtype"] = robject.RexDrawType.ToString(); sogdata["distance"] = robject.RexDrawDistance.ToString(); if (robject.RexMaterials.Count > 0) { Hashtable materials = new Hashtable(); foreach (uint matindex in robject.RexMaterials.Keys) { materials[robject.RexMaterials[matindex].AssetID.ToString()] = robject.RexMaterials[matindex].AssetURI; } sogdata["materials"] = materials; } Hashtable parts = new Hashtable(); foreach (UUID prim_uuid in e.Children.Keys) { SceneObjectPart child = e.Children[prim_uuid]; RexObjectProperties child_robject = rexObjects.GetObject(child.UUID); parts[prim_uuid.ToString()] = child_robject.RexMeshUUID.ToString(); } sogdata["parts"] = parts; // robject.RexCastShadows = ent.CastShadows; // robject.RexDrawType = 1; result[e.UUID.ToString()] = sogdata; }); resp["res"] = result; // m_scene.DeleteAllSceneObjects(); } else { resp["success"] = false; resp["error"] = "no RegionID provided"; response.Value = resp; return response; } // return ok; m_log.Info("Region Cleared: " + requestData["RegionID"].ToString()); resp["success"] = true; response.Value = resp; return response; }