示例#1
0
        private void AddTerrainUploadTransaction(TerrainUploadTransaction t, UUID fromSceneID)
        {
            var id = UUID.Random;

            t.XferID = NextXferID;
            m_TerrainTransactions.Add(id, t.XferID, t);
            var m = new RequestXfer
            {
                ID        = t.XferID,
                VFileType = 0,
                VFileID   = id,
                FilePath  = 0,
                Filename  = t.Filename
            };

            SendMessageAlways(m, fromSceneID);
        }
示例#2
0
        private void EstateOwner_Terrain(AgentCircuit circuit, EstateOwnerMessage req)
        {
            if (req.ParamList.Count < 1)
            {
                return;
            }
            SceneInterface scene = circuit.Scene;

            if (scene == null)
            {
                return;
            }
            switch (req.ParamList[0].FromUTF8Bytes())
            {
            case "download filename":
                if (req.ParamList.Count > 1)
                {
                    string viewerFilename = req.ParamList[1].FromUTF8Bytes();

                    AddNewFile("terrain.raw", LLRAWData.ToLLRaw(scene.Terrain.AllPatches));
                    circuit.SendMessage(new InitiateDownload
                    {
                        AgentID        = ID,
                        SimFilename    = "terrain.raw",
                        ViewerFilename = viewerFilename
                    });
                }
                break;

            case "upload filename":
                if (req.ParamList.Count > 1)
                {
                    var t = new TerrainUploadTransaction(circuit.Scene)
                    {
                        Filename = req.ParamList[1].FromUTF8Bytes()
                    };
                    AddTerrainUploadTransaction(t, req.CircuitSceneID);
                }
                break;

            default:
                break;
            }
        }