ForEachSOG() public method

public ForEachSOG ( Action action ) : void
action Action
return void
Ejemplo n.º 1
0
 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); });
 }
Ejemplo n.º 2
0
        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;
        }