Пример #1
0
 public void KillInWorldAndDisk(UUID oldobjid)
 {
     if (CogbotHelpers.IsNullOrZero(oldobjid))
     {
         return;
     }
     Importing.KillID(oldobjid);
     KillInWorld(oldobjid);
 }
Пример #2
0
    public void Start()
    {
        dir = Application.dataPath + @"\" + fileName + ".txt";

        if (File.Exists(dir))
        {
            pointManager.GetComponent <PointManager>().boot(Importing.readFile(dir)[0]);
            gameObject.SetActive(false);
        }
    }
 private void InvItemCreated(bool success1, string status, UUID itemid, UUID assetid)
 {
     if (!success1)
     {
         Importing.Failure("!SUCCESS " + status + " ON " + this);
         return;
     }
     NewID                 = assetid;
     this.NewItemID        = itemid;
     this.NewTaskID        = UUID.Zero;
     NewUUID2OBJECT[NewID] = this;
     ConfirmDLable();
 }
Пример #4
0
 public List <InventoryBase> SourceTaskInventory(bool useCache)
 {
     // get
     {
         List <InventoryBase> regenObjInv = useCache ? this.sourceObjectinventory : null;
         bool improve = !useCache;
         if (regenObjInv == null)
         {
             if (IsLocalScene)
             {
                 if (TaskItemsToCreate == null)
                 {
                     return(null);
                 }
                 bool improvementM = false;
                 if (sourceObjectinventory != null)
                 {
                     //return objectinventory;
                 }
                 regenObjInv = new List <InventoryBase>();
                 lock (TaskItemsToCreate)
                 {
                     foreach (var toCreate in LockInfo.CopyOf(TaskItemsToCreate))
                     {
                         bool improvement;
                         var  item = toCreate.ToInventoryBase(out improvement, improve);
                         if (improvement)
                         {
                             improvementM = true;
                         }
                         regenObjInv.Add(item);
                     }
                     AssignObjectNums();
                 }
                 if (improvementM)
                 {
                     Exporting.SaveTaskOSD(OldID, regenObjInv);
                 }
                 return(sourceObjectinventory = regenObjInv);
             }
             if (!RequestNewTaskInventory().WaitOne(TimeSpan.FromSeconds(10)))
             {
                 Importing.WriteLine("Unable to retrieve TaskInv for " + ToString());
             }
         }
         return(sourceObjectinventory = regenObjInv);
     }
 }
        public static void ReplaceLSLText(string dir, string before, string after, ImportSettings arglist)
        {
            int changed   = 0;
            int seenAsset = 0;
            HashSet <ItemToCreate> ItemsToCreate = LocalScene.Assets;
            bool alwayReupload = arglist.Contains("reup");

            foreach (var file in Directory.GetFiles(dir, "*.lsl"))
            {
                seenAsset++;
                string readfile = File.ReadAllText(file);
                if (!readfile.Contains(before))
                {
                    continue;
                }
                readfile = readfile.Replace(before, after);
                changed++;
                File.WriteAllText(file, readfile);
            }
            Importing.Success("ReplaceLSLText seenAssets=" + seenAsset + " changed=" + changed);
        }
            public void OnDownloaded(AssetDownload transfer, Asset asset)
            {
                if (transfer.AssetID != NewID)
                {
                    return;
                }
                if (assetType == AssetType.Texture && !asset.Decode())
                {
                    Difference(asset.AssetData, AssetData);
                    asset.AssetData = AssetData;
                    if (false)
                    {
                        Inventory.RemoveItem(NewItemID);
                        NewItemID = UUID.Zero;
                        NewID     = UUID.Zero;
                        UploadAssetData(false);

                        /*Inventory.RequestCreateItemFromAsset(AssetData, "" + OldID, ProgressString,
                         *                                   assetType, inventoryType,
                         *                                   GetAssetUploadsFolder(),
                         *                                   Permissions.FullPermissions,
                         *                                   InvItemCreated);*/
                        //UpdateAsset(AssetData);
                        return;
                    }
                }
                if (!transfer.Success)
                {
                    Importing.Error(ExportCommand.Exporting.LocalFailure, "bad transfer on " + this);
                }
                else
                {
                    WriteProgress();
                }
                _NewItem = asset;
                NewUUID2OBJECT[NewID] = this;
                UUID2OBJECT[OldID]    = this;
                AssetUploaded.Set();
            }
Пример #7
0
    public void reImport() //Import/re-import the points from all sources
    {
        //Google sheet ops
        locationCache.Clear();

        if (URL != null) //Make sure we CAN load it...
        {
            List <string> sheet = Importing.downloadTSV(URL);
            foreach (string gps in sheet)
            {
                if (gps.Contains("GPS:"))
                {
                    locationCache.Add(new GPSDefinition.GPSPoint(gps, scaleDivisor));
                }
            }
            redisplay();
        }
        else
        {
            //SHOW AN ERROR MESSAGE PLS
            Debug.Log("No URL file");
        }
    }
Пример #8
0
 public void setURL(string URL)
 {
     File.WriteAllText(dir, URL);
     pointManager.GetComponent <PointManager>().boot(Importing.readFile(dir)[0]);
     gameObject.SetActive(false);
 }
Пример #9
0
        public void KillAllUnpacked(OutputDelegate Failures, bool artifacts)
        {
            UUID into = UUID.Zero;

            if (!settings.Contains("info"))
            {
                into = CogbotHelpers.NonZero(FolderCalled("TaskInvKilled"),
                                             Client.Inventory.FindFolderForType(AssetType.TrashFolder));
            }
            int count = 0;

            lock (fileWriterLock) foreach (string ext in new[] { "*.repack", /* "*.objectAsset"*/ })
                {
                    foreach (var file in Directory.GetFiles(dumpDir, ext))
                    {
                        count++;
                        if (count > 1)
                        {
                            if (settings.Contains("once"))
                            {
                                return;
                            }
                        }
                        string   filetext = File.ReadAllText(file);
                        string[] csv      = filetext.Split(new[] { ',' });
                        UUID     assetID  = new UUID(csv[2]);
                        uint     localID  = uint.Parse(csv[0]);
                        var      O1       = WorldObjects.GetSimObjectFromUUID(assetID);
                        if (O1 == null)
                        {
                            Client.Objects.RequestObject(Client.Network.CurrentSim, localID);
                        }
                        var O = GetSimObjectFromUUID(assetID);
                        if (O == null)
                        {
                            Failure("Cant find object for file: " + file + " " + filetext);
                            if (settings.Contains("info"))
                            {
                                Success("INFO: " + localID + " " + assetID);
                                continue;
                            }
                            Client.Inventory.RequestDeRezToInventory(localID, DeRezDestination.TrashFolder, into,
                                                                     UUID.Random());
                            File.Delete(file);
                            if (artifacts)
                            {
                                Importing.KillID(assetID);
                            }
                            if (settings.Contains("once"))
                            {
                                return;
                            }
                        }
                        else
                        {
                            if (!settings.Contains("info"))
                            {
                                Success("INFO: " + localID + " " + assetID + " text=" + filetext);
                                continue;
                            }
                            Client.Inventory.RequestDeRezToInventory(O.LocalID, DeRezDestination.TrashFolder, into,
                                                                     UUID.Random());
                            File.Delete(file);
                            if (artifacts)
                            {
                                Importing.KillID(assetID);
                            }
                            if (settings.Contains("once"))
                            {
                                return;
                            }
                        }
                    }
                    if (artifacts)
                    {
                        foreach (var file in Directory.GetFiles(dumpDir, "*.taskobj"))
                        {
                            string   filetext = File.ReadAllText(file);
                            string[] csv      = filetext.Split(new[] { ',' });
                            UUID     assetID  = new UUID(csv[2]);
                            Importing.KillID(assetID);
                            UUID   holderID   = new UUID(csv[3]);
                            string exportFile = dumpDir + "" + holderID + ".task";
                            if (File.Exists(exportFile))
                            {
                                File.Delete(exportFile);
                            }
                            File.Delete(file);
                        }
                    }
                }
        }
Пример #10
0
        internal bool SaveTaskInv(ImportSettings arglist, BotClient Client, string pathStem, SimObject exportPrim, OutputDelegate Failure)
        {
            string exportFile = pathStem + ".task";

            if (Incremental || showsMissingOnly)
            {
                lock (fileWriterLock) if (File.Exists(exportFile))
                    {
                        return(true);
                    }
            }
            needFiles++;
            exportPrim.StartGetTaskInventory();
            bool mightHaveTaskInv = exportPrim.TaskInventoryLikely;

            var ib = exportPrim.TaskInventory;

            if (ib == null || ib == SimObjectImpl.ERROR_TASK_INV)
            {
                bool canSee    = checkPerms(Client, exportPrim, SilientFailure, false);
                bool canScript = checkPerms(Client, exportPrim, SilientFailure, true);

                if (!canSee)
                {
                    if (!mightHaveTaskInv)
                    {
                        LogError(exportPrim, "!canSee TaskInv");
                        lock (fileWriterLock) File.WriteAllText(exportFile, "!canSee");
                        return(true);
                    }
                    Failure("Cant get/check TaskInv of " + named(exportPrim));
                }
                Failure("NULL TaskInv for " + named(exportPrim));
                if (!canScript)
                {
                    LogError(exportPrim, "!canScript to get TaskInv");
                    lock (fileWriterLock) File.WriteAllText(exportFile, "!canScript");
                    return(true);
                }
                if (ib == SimObjectImpl.ERROR_TASK_INV)
                {
                    LogError(exportPrim, "TaskInv Null once");
                    lock (fileWriterLock) File.WriteAllText(exportFile, "!error");
                }
                return(true);
            }
            if (ib.Count == 0)
            {
                if (!exportPrim.InventoryEmpty)
                {
                    if (verbosely)
                    {
                        Failure("ZEROITEM TaskInv for " + named(exportPrim));
                    }
                    //return;
                }
                lock (fileWriterLock) File.WriteAllText(exportFile, "");
                return(true);
            }
            if (ib.Count == 1)
            {
                if (ib[0].Name == "Contents" && ib[0] is InventoryFolder)
                {
                    lock (fileWriterLock) File.WriteAllText(exportFile, "");
                    return(true);
                }
            }
            SaveTaskOSD(exportPrim.ID, ib);
            return(true);

            OSDArray contents = new OSDArray();

            string TaskInvFailures = "";
            bool   hasObjects      = false;

            foreach (InventoryBase b in ib)
            {
                if (b is InventoryObject)
                {
                    hasObjects = true;
                    break;
                }
            }
            bool wasShouldBeMoving = shouldBeMoving;

            shouldBeMoving = false;
            if (hasObjects && taskobj)
            {
                MoveCloseTo(exportPrim);
            }

            foreach (InventoryBase b in ib)
            {
                bool   missing;
                OSDMap was = SaveEachTaskItem(arglist, Client, exportPrim, b, Failure, out missing);
                if (was != null)
                {
                    contents.Add(was);
                }
                if (missing)
                {
                    if (forced && false)
                    {
                        Failure("Missing but forced: " + was);
                    }
                    else
                    {
                        TaskInvFailures += was;
                    }
                }
            }
            shouldBeMoving = wasShouldBeMoving;
            // TaskInvFailures = GetTaskInvFailures(Failure, exportPrim, Client, folderObject, contents, TaskInvFailures);
            if (showsMissingOnly)
            {
                Failure("NEED TASK for " + named(exportPrim));
                return(false);
            }
            if (string.IsNullOrEmpty(TaskInvFailures))
            {
                lock (fileWriterLock) File.WriteAllText(exportFile, OSDParser.SerializeLLSDXmlString(contents));
            }
            else
            {
                Failure(string.Format("Skipping writting contents unil Items/Objects can be resolved: for {0}\n{1}",
                                      named(exportPrim), TaskInvFailures));
            }
            var ptc = Importing.APrimToCreate(exportPrim.ID);

            return(ptc.EnsureTaskInv(false));
        }
Пример #11
0
        public void SaveLLSD(BotClient Client, string pathStem, SimObject exportPrim, OutputDelegate Failure, ImportSettings settings)
        {
            if (exportPrim != null)
            {
                string exportFile = pathStem + ".llsd";
                if (Incremental || showsMissingOnly)
                {
                    lock (fileWriterLock) if (File.Exists(exportFile))
                        {
                            return;
                        }
                }
                needFiles++;
                if (showsMissingOnly)
                {
                    Failure("NEED LLSD for " + named(exportPrim));
                    AddMoveTo(exportPrim.SimPosition);
                    return;
                }

                try
                {
                    List <string> skipTag = new List <string>()
                    {
                        "Tag"
                    };
                    Primitive prim = exportPrim.Prim;

                    Vector3    pp = prim.Position;
                    Quaternion pr = prim.Rotation;
                    //prim = prim.Clone();
                    OSDMap primOSD = (OSDMap)prim.GetOSD();
                    if (prim.ParentID != 0)
                    {
                        var parent = WorldSystem.GetLibOMVHostedPrim(prim.ParentID, settings.CurSim, false);
                        if (parent == null)
                        {
                            pp += new Vector3(128, 128, Client.Self.SimPosition.Z + 20);
                            Failure("YET FAILED: Cant GET parent of " + prim);
                            return;
                        }
                        else
                        {
                            pp = prim.Position * Matrix4.CreateFromQuaternion(parent.Rotation) + parent.Position;
                            pr = parent.Rotation * pr;
                            primOSD["ParentUUID"] = parent.ID;
                        }
                    }
                    primOSD["RegionPosition"] = pp;
                    primOSD["RegionRotation"] = pr;
                    if (exportPrim.PathFinding.MadeNonPhysical)
                    {
                        primOSD["physical"]    = true;
                        primOSD["use_physics"] = true;
                    }
                    if (exportPrim.PathFinding.MadeNonTemp)
                    {
                        primOSD["temporary"] = true;
                    }
                    AddExportUser(primOSD["CreatorID"]);
                    AddExportGroup(primOSD["GroupID"]);
                    AddExportUser(primOSD["OwnerID"]);
                    AddExportUser(primOSD["LastOwnerID"]);
                    string output = OSDParser.SerializeLLSDXmlString(primOSD);
                    {
                        lock (fileWriterLock) File.WriteAllText(exportFile, output);
                    }
                    var ptc = Importing.APrimToCreate(prim);
                    ptc.Rezed = exportPrim;

                    if (forced && !verbosely)
                    {
                        return;
                    }
                    return;

                    Primitive prim2             = FromFile(exportFile, ExportCommand.UseBinarySerialization) as Primitive;
                    string    memberwiseCompare = MemberwiseCompare(prim, prim2, skipTag);
                    if (!string.IsNullOrEmpty(memberwiseCompare))
                    {
                        string failre = "Error in LLSD: " + memberwiseCompare;
                        Failure(failre);
                        if (!forced)
                        {
                            File.Delete(exportFile);
                            return;

                            Error(failre);
                        }
                    }
                }
                catch (Exception e)
                {
                    File.Delete(exportFile);
                    Failure("Writing file " + exportFile + " caused " + e);
                }
            }
        }
Пример #12
0
    public void redisplay()
    {     //Display cache contents
        foreach (GameObject obj in pointObjects)
        { //*flush*
            Destroy(obj);
        }
        List <GPSDefinition.GPSPoint> tempCache = new List <GPSDefinition.GPSPoint>();

        tempCache.Clear();
        tempCache = Importing.filterGPSEntries(locationCache, filters);
        pointObjects.Clear();
        buttonContentPanel.GetComponent <ButtonManager>().populate(tempCache);
        foreach (GPSDefinition.GPSPoint point in tempCache)
        {
            if (point.name.Contains("VL|"))
            { //It's a volume
                string[] substrings = point.name.Split('|');
                float    size;
                if (float.TryParse(substrings[2], out size) && showTerritory)
                {
                    size = size / scaleDivisor;
                    switch (substrings[1])
                    {
                    case "FreindlyTerritory":     //Us
                        CreateVolume(point.unityPosition, size, friendlyTerritoryPrefab);
                        break;

                    case "EnemyTerritory":     //Enemy
                        CreateVolume(point.unityPosition, size, hostileTerritoryPrefab);
                        break;

                    case "Planet":                                                        //Planet
                        CreateVolume(point.unityPosition, size + 10, planetMarkerPrefab); //Add 10 to height to offset mountains
                        break;

                    default:
                        CreateVolume(point.unityPosition, size, planetMarkerPrefab);
                        break;
                    }
                }
            }
            else
            { //Its a roid or somethin
                bool isAsteroid = false;
                foreach (string flag in asteroidFlags)
                { //Check to see if it is an asteroid
                    if (point.name.Contains(flag))
                    {
                        isAsteroid = true;
                        break; //No need to keep checking
                    }
                }
                if (isAsteroid)
                {
                    CreateMarker(point.name, point.unityPosition, asteroidMarkerPrefab);
                }
                else
                {
                    CreateMarker(point.name, point.unityPosition, otherMarkerPrefab);
                }
            }
        }
    }
Пример #13
0
        private void CountReady(ImportSettings settings)
        {
            Exporting.GiveStatus();
            int readyObjects          = 0;
            int readyObjectsForDelete = 0;
            int unreadyObjs           = 0;
            int unreadyObjsMustReRez  = 0;
            int requestedShort        = 0;

            foreach (var file in Directory.GetFiles(ExportCommand.dumpDir, "*.*.rti"))
            {
                if (!file.EndsWith("rti"))
                {
                    //rti_status
                    continue;
                }
                string rtiData  = File.ReadAllText(file);
                var    contents = rtiData.Split(',');
                if (contents.Length < 2)
                {
                    requestedShort++;
                    continue;
                }
                UUID objID, holderID;
                if (!UUID.TryParse(contents[0], out objID) || !UUID.TryParse(contents[1], out holderID))
                {
                    Failure("SHORT: " + file + " " + rtiData);
                    requestedShort++;
                    continue;
                }
                // var uuidstr = Path.GetFileName(file).Split('.');
                // var objNum = int.Parse(uuidstr[1]);
                string completeStr = ExportCommand.IsComplete(objID, false, true, settings);
                Vector3 where;
                bool inWorld = Exporting.IsExisting(objID, out where);
                if (string.IsNullOrEmpty(completeStr))
                {
                    readyObjects++;
                    if (inWorld)
                    {
                        Exporting.AttemptMoveTo(where);
                        Thread.Sleep(3000);
                        Exporting.KillInWorld(objID);
                        Importing.APrimToCreate(holderID);
                        readyObjectsForDelete++;
                    }
                    else
                    {
                        Importing.APrimToCreate(holderID);
                        Importing.APrimToCreate(objID);
                    }
                }
                else
                {
                    unreadyObjs++;
                    if (!inWorld)
                    {
                        unreadyObjsMustReRez++;
                        Failure("REREZ: " + completeStr + " " + rtiData);
                        Importing.APrimToCreate(holderID).MustUseAgentCopy = true;
                        File.Delete(ExportCommand.dumpDir + holderID + ".rti_status");
                        File.Delete(file);
                    }
                    else
                    {
                        MustExport.Add(objID);
                        MustExport.Add(holderID);
                        Importing.APrimToCreate(holderID);
                        Failure("RTIDATA: " + completeStr + " " + rtiData);
                        Exporting.AddMoveTo(where);
                    }
                }
            }
            Success("readyObjects = " + readyObjects);
            Success("readyObjectsForDelete = " + readyObjectsForDelete);
            Success("unreadyObjs = " + unreadyObjs);
            Success("unreadyObjsMustReRez = " + unreadyObjsMustReRez);
            Success("requestedShort = " + requestedShort);
        }