示例#1
0
            public bool LoadTaskOSD(OutputDelegate WriteLine)
            {
                failed    = 0;
                succeeded = 0;
                string taskFile  = ExportCommand.dumpDir + OldID + ".task";
                string taskDataS = File.ReadAllText(taskFile);

                if (string.IsNullOrEmpty(taskDataS) || taskDataS.Length < 30)
                {
                    TaskInvComplete = true;
                    return(true);
                }
                var taskData = OSDParser.DeserializeLLSDXml(taskDataS) as OSDArray;

                if (taskData == null)
                {
                    WriteLine("ERROR: Cant read taskData: " + taskDataS);
                    return(false);
                }

                lock (TaskItemsToCreate) if (taskData.Count == TaskItemsToCreate.Count && taskData.Count > 0)
                    {
                        succeeded = taskData.Count;
                        return(true);
                    }
                // scan for existing source nodes
                lock (TaskItemsToCreate)
                {
                    foreach (OSDMap item in taskData)
                    {
                        if (item["AssetType"].Type == OSDType.Unknown)
                        {
                            continue;
                        }
                        var itemID            = item["UUID"].AsUUID();
                        TaskItemToCreate titc = null;

                        foreach (TaskItemToCreate itemToCreate in TaskItemsToCreate)
                        {
                            if (itemToCreate.OldItemID == itemID)
                            {
                                titc = itemToCreate;
                                break;
                            }
                        }
                        if (titc == null)
                        {
                            titc = new TaskItemToCreate(this, item);
                            TaskItemsToCreate.Add(titc);
                        }
                        else
                        {
                            titc.TaskItemOSD = item;
                        }
                        AssignObjectNums();
                        succeeded++;
                    }
                }
                return(failed == 0);
            }
            public bool LoadTaskOSD(OutputDelegate WriteLine)
            {
                failed = 0;
                succeeded = 0;
                string taskFile = ExportCommand.dumpDir + OldID + ".task";
                string taskDataS = File.ReadAllText(taskFile);
                if (string.IsNullOrEmpty(taskDataS) || taskDataS.Length < 30)
                {
                    TaskInvComplete = true;
                    return true;
                }
                var taskData = OSDParser.DeserializeLLSDXml(taskDataS) as OSDArray;
                if (taskData == null)
                {
                    WriteLine("ERROR: Cant read taskData: " + taskDataS);
                    return false;
                }

                lock (TaskItemsToCreate) if (taskData.Count == TaskItemsToCreate.Count && taskData.Count > 0)
                {
                    succeeded = taskData.Count;
                    return true;
                }
                // scan for existing source nodes
                lock (TaskItemsToCreate)
                {
                    foreach (OSDMap item in taskData)
                    {
                        if (item["AssetType"].Type == OSDType.Unknown)
                        {
                            continue;
                        }
                        var itemID = item["UUID"].AsUUID();
                        TaskItemToCreate titc = null;

                        foreach (TaskItemToCreate itemToCreate in TaskItemsToCreate)
                        {
                            if (itemToCreate.OldItemID == itemID)
                            {
                                titc = itemToCreate;
                                break;
                            }
                        }
                        if (titc == null)
                        {
                            titc = new TaskItemToCreate(this, item);
                            TaskItemsToCreate.Add(titc);
                        }
                        else
                        {
                            titc.TaskItemOSD = item;
                        }
                        AssignObjectNums();
                        succeeded++;
                    }
                }
                return failed == 0;
            }