Esempio n. 1
0
        public object FindUserTxtr(string name)
        {
            if (txtrs == null)
            {
                this.LoadSkinImages();
            }
            if (txtrs == null)
            {
                return(null);
            }

            name = name.ToLower();
            SimPe.Plugin.Txtr txtr = (SimPe.Plugin.Txtr)txtrs[name];
            if (txtr == null)
            {
                txtr = (SimPe.Plugin.Txtr)txtrs[name + "_txtr"];
            }
            if (txtr == null)
            {
                return(null);
            }

            if (txtr.Fast)
            {
                txtr.Fast = false;
                SimPe.Packages.File fl = SimPe.Packages.File.LoadFromFile(txtr.Package.FileName);
                Interfaces.Files.IPackedFileDescriptor pfd = fl.FindFile(txtr.FileDescriptor.Type, txtr.FileDescriptor.SubType, txtr.FileDescriptor.Group, txtr.FileDescriptor.Instance);
                txtr.ProcessData(pfd, fl);
                //fl.Reader.Close();
            }

            return(txtr);
        }
Esempio n. 2
0
        /// <summary>
        /// Searches BHAV Files
        /// </summary>
        /// <param name="pfd"></param>
        /// <param name="package"></param>
        /// <param name="prov"></param>
        /// <returns>Null if no match or a valid SearchItem Object</returns>
        public SearchItem BhavSearch(Interfaces.Files.IPackedFileDescriptor pfd, Interfaces.Files.IPackageFile package, Interfaces.IProviderRegistry prov)
        {
            ushort opcode = Convert.ToUInt16(this.tbOpcode.Text, 16);

            //group Filter
            if (tbbhavgroup.Text.Trim() != "")
            {
                uint group = Convert.ToUInt32(this.tbbhavgroup.Text, 16);
                if (pfd.Group != group)
                {
                    return(null);
                }
            }

            Bhav bhav = new Bhav(prov.OpcodeProvider);

            bhav.ProcessData(pfd, package);

            foreach (Instruction i in bhav)
            {
                if (i.OpCode == opcode)
                {
                    return(new SearchItem(bhav.FileName, pfd));
                }
            }

            return(null);
        }
Esempio n. 3
0
        /// <summary>
        /// Returns all matching FileIndexItems
        /// </summary>
        /// <param name="pfd">The File you are looking for</param>
        /// <returns>all FileIndexItems</returns>
        public PackedFileDescriptors FindFile(Interfaces.Files.IPackedFileDescriptor pfd)
        {
            ArrayList list = new ArrayList();

            if (!flat)
            {
                if (index.ContainsKey(pfd.Type))
                {
                    Hashtable groups = (Hashtable)index[pfd.Type];
                    if (groups.ContainsKey(pfd.Group))
                    {
                        Hashtable instances = (Hashtable)groups[pfd.Group];
                        if (instances.ContainsKey(pfd.LongInstance))
                        {
                            return((PackedFileDescriptors)instances[pfd.LongInstance]);
                        }
                    }
                }

                return(new PackedFileDescriptors());
            }
            else
            {
                PackedFileDescriptors ret = new PackedFileDescriptors();
                foreach (Interfaces.Files.IPackedFileDescriptor i in pfds)
                {
                    if (i.Equals(pfd))
                    {
                        ret.Add(i);
                    }
                }

                return(ret);
            }
        }
Esempio n. 4
0
 /// <summary>
 /// Returns the Thumbnail of an Object
 /// </summary>
 /// <param name="group"></param>
 /// <param name="modelname"></param>
 /// <returns>The Thumbnail</returns>
 public static Image GetThumbnail(string message, uint[] types, uint group, uint inst, SimPe.Packages.File thumbs)
 {
     foreach (uint type in types)
     {
         //0x6C2A22C3
         Interfaces.Files.IPackedFileDescriptor[] pfds = thumbs.FindFile(type, group, inst);
         if (pfds.Length == 0)
         {
             pfds = thumbs.FindFile(type, 0, inst);
         }
         if (pfds.Length > 0)
         {
             Interfaces.Files.IPackedFileDescriptor pfd = pfds[0];
             try
             {
                 SimPe.PackedFiles.Wrapper.Picture pic = new SimPe.PackedFiles.Wrapper.Picture();
                 pic.ProcessData(pfd, thumbs);
                 Bitmap bm = (Bitmap)ImageLoader.Preview(pic.Image, WaitingScreen.ImageSize);
                 if (WaitingScreen.Running)
                 {
                     WaitingScreen.Update(bm, message);
                 }
                 return(pic.Image);
             }
             catch (Exception) {}
         }
     }
     return(null);
 }
Esempio n. 5
0
        protected ExtendedImagePanel CreateItem(Interfaces.Files.IPackedFileDescriptor pfd, int left, int top)
        {
            ExtendedImagePanel eip = new ExtendedImagePanel();

            eip.BeginUpdate();
            eip.SetBounds(left, top, 216, 80);


            Wrapper.SDesc sdesc = new SDesc();
            try
            {
                sdesc.ProcessData(pfd, pkg);

                PrepareItem(eip, sdesc);
            }
            catch (Exception ex)
            {
                eip.Properties["Error"].Value = ex.Message;
            }

            //eip.GotFocus += new EventHandler(eip_GotFocus);
            //eip.MouseDown += new System.Windows.Forms.MouseEventHandler(eip_MouseDown);
            //eip.DoubleClick += new EventHandler(eip_DoubleClick);

            return(eip);
        }
Esempio n. 6
0
        /// <summary>
        /// Returns the Property Set (=cpf) of a Skin
        /// </summary>
        /// <param name="spfd">The File Description of the File you are looking for</param>
        /// <returns>null or the Property Set File</returns>
        public object FindSet(Interfaces.Files.IPackedFileDescriptor spfd)
        {
            if (sets == null)
            {
                this.LoadSkins();
            }
            if (sets == null)
            {
                return(null);
            }
            foreach (SimPe.PackedFiles.Wrapper.Cpf cpf in sets)
            {
                Interfaces.Files.IPackedFileDescriptor pfd = cpf.FileDescriptor;
                if (
                    (pfd.Group == spfd.Group) &&
                    (pfd.SubType == spfd.SubType) &&
                    (pfd.Instance == spfd.Instance) &&
                    (pfd.Type == spfd.Type)
                    )
                {
                    return(cpf);
                }
            }

            return(null);
        }
Esempio n. 7
0
        public void Load(System.IO.BinaryReader reader)
        {
            version = reader.ReadByte();
            if (version > VERSION)
            {
                throw new CacheException("Unknown CacheItem Version.", null, version);
            }

            name             = reader.ReadString();
            type             = reader.ReadString();
            pfd              = new Packages.PackedFileDescriptor();
            pfd.Type         = reader.ReadUInt32();
            pfd.Group        = reader.ReadUInt32();
            pfd.LongInstance = reader.ReadUInt64();
            influence        = reader.ReadInt32();
            score            = reader.ReadInt32();
            guid             = reader.ReadUInt32();
            folder           = reader.ReadString();


            int size = reader.ReadInt32();

            if (size == 0)
            {
                thumb = null;
            }
            else
            {
                byte[]       data = reader.ReadBytes(size);
                MemoryStream ms   = new MemoryStream(data);

                thumb = Image.FromStream(ms);
            }
        }
Esempio n. 8
0
 public RefFileItem(Interfaces.Files.IPackedFileDescriptor pfd, RefFile parent)
 {
     this.parent   = parent;
     this.Group    = pfd.Group;
     this.Type     = pfd.Type;
     this.SubType  = pfd.SubType;
     this.Instance = pfd.Instance;
 }
Esempio n. 9
0
 private void llEdit_LinkClicked(object sender, System.Windows.Forms.LinkLabelLinkClickedEventArgs e)
 {
     Interfaces.Files.IPackedFileDescriptor ctss = CatalogDescription;
     if (ctss != null)
     {
         SimPe.RemoteControl.OpenPackedFile(ctss, pkg);
     }
 }
Esempio n. 10
0
        internal Interfaces.Files.IPackedFileDescriptor Execute(Interfaces.Files.IPackageFile package)
        {
            this.package = package;
            this.pfd     = null;
            RemoteControl.ShowSubForm(this);

            return(pfd);
        }
Esempio n. 11
0
        public void Load(System.IO.BinaryReader reader)
        {
            version = reader.ReadByte();
            if (version > VERSION)
            {
                throw new CacheException("Unknown CacheItem Version.", null, version);
            }

            name = reader.ReadString();
            if (version >= 2)
            {
                objdname = reader.ReadString();
            }
            else
            {
                objdname = null;
            }
            if (version >= 3)
            {
                int ct = reader.ReadUInt16();
                valuenames = new string[ct];
                for (int i = 0; i < ct; i++)
                {
                    valuenames[i] = reader.ReadString();
                }
            }
            else
            {
                valuenames = new string[0];
            }

            type             = (SimPe.Data.ObjectTypes)reader.ReadUInt16();
            pfd              = new Packages.PackedFileDescriptor();
            pfd.Type         = reader.ReadUInt32();
            pfd.Group        = reader.ReadUInt32();
            pfd.LongInstance = reader.ReadUInt64();
            guid             = reader.ReadUInt32();


            int size = reader.ReadInt32();

            if (size == 0)
            {
                thumb = null;
            }
            else
            {
                byte[]       data = reader.ReadBytes(size);
                MemoryStream ms   = new MemoryStream(data);

                thumb = Image.FromStream(ms);
            }
        }
Esempio n. 12
0
        private void MoveUp(object sender, System.EventArgs e)
        {
            if (lblist.SelectedIndex < 1)
            {
                return;
            }

            Interfaces.Files.IPackedFileDescriptor pfd = (Interfaces.Files.IPackedFileDescriptor)lblist.Items[lblist.SelectedIndex];
            lblist.Items[lblist.SelectedIndex]     = lblist.Items[lblist.SelectedIndex - 1];
            lblist.Items[lblist.SelectedIndex - 1] = pfd;
            lblist.SelectedIndex--;
        }
Esempio n. 13
0
        protected virtual SimPe.PackedFiles.Wrapper.StrItemList GetCtssItems(Interfaces.Files.IPackedFileDescriptor ctss, SimPe.Interfaces.Files.IPackageFile pkg)
        {
            if (ctss != null)
            {
                SimPe.PackedFiles.Wrapper.Str str = new SimPe.PackedFiles.Wrapper.Str();
                str.ProcessData(ctss, pkg);

                return(str.FallbackedLanguageItems(Helper.WindowsRegistry.LanguageCode));
            }

            return(null);
        }
Esempio n. 14
0
 private void PackageItemDrop(object sender, System.Windows.Forms.DragEventArgs e)
 {
     try
     {
         Interfaces.Files.IPackedFileDescriptor pfd = null;
         pfd = (Interfaces.Files.IPackedFileDescriptor)e.Data.GetData(typeof(SimPe.Packages.PackedFileDescriptor));
         lblist.Items.Add(pfd);
     }
     catch (Exception ex)
     {
         Helper.ExceptionMessage("", ex);
     }
 }
Esempio n. 15
0
        /// <summary>
        /// Searches Sims
        /// </summary>
        /// <param name="pfd"></param>
        /// <param name="package"></param>
        /// <param name="prov"></param>
        /// <returns>Null if no match or a valid SearchItem Object</returns>
        public SearchItem GuidSearch(Interfaces.Files.IPackedFileDescriptor pfd, Interfaces.Files.IPackageFile package, Interfaces.IProviderRegistry prov)
        {
            uint guid = Convert.ToUInt32(tbguid.Text, 16);

            SimPe.PackedFiles.Wrapper.ExtObjd objd = new SimPe.PackedFiles.Wrapper.ExtObjd();
            objd.ProcessData(pfd, package);

            if (objd.Guid == guid)
            {
                return(new SearchItem(objd.FileName, pfd));
            }
            return(null);
        }
Esempio n. 16
0
        /// <summary>
        /// Looks for a File based on the Filename
        /// </summary>
        /// <param name="pfd">The FileDescriptor</param>
        /// <param name="betolerant">
        /// set true if you want to enable a
        /// fallback Algorithm in case of the precice Search failing
        /// </param>
        /// <returns>The first matching File or null if none</returns>
        public Interfaces.Files.IPackedFileDescriptor FindSingleFile(Interfaces.Files.IPackedFileDescriptor pfd, bool betolerant)
        {
            PackedFileDescriptors list;

            list = this.FindFile(pfd);


            if (list.Length > 0)
            {
                return(list[0]);
            }
            return(null);
        }
Esempio n. 17
0
        /// <summary>
        /// Clone the Makeup of a Sim
        /// </summary>
        /// <returns>the new Package for the patient Sim</returns>
        /// <param name="eyecolor">true, if you want to alter the eyecolor</param>
        /// <param name="makeups">true, if you want to alter the makeup</param>
        public SimPe.Packages.GeneratableFile CloneMakeup(bool eyecolor, bool makeups)
        {
            SimPe.Packages.GeneratableFile ret = SimPe.Packages.GeneratableFile.LoadFromFile((string)null);

            ArrayList list = new ArrayList();

            list.Add((uint)0xE86B1EEF);             //make sure the compressed Directory won't be copied!
            foreach (Interfaces.Files.IPackedFileDescriptor pfd in patient.Index)
            {
                if (!list.Contains(pfd.Type))
                {
                    Interfaces.Files.IPackedFile fl = patient.Read(pfd);

                    Interfaces.Files.IPackedFileDescriptor newpfd = ret.NewDescriptor(pfd.Type, pfd.SubType, pfd.Group, pfd.Instance);
                    newpfd.UserData = fl.UncompressedData;
                    ret.Add(newpfd);
                }
            }

            //Update TXMT Files for the Face
            SimPe.Interfaces.Files.IPackedFileDescriptor[] pfds = ret.FindFiles(Data.MetaData.TXMT);
            foreach (SimPe.Interfaces.Files.IPackedFileDescriptor pfd in pfds)
            {
                SimPe.Plugin.Rcol rcol = new GenericRcol(null, false);
                rcol.ProcessData(pfd, ret);

                MaterialDefinition md = (MaterialDefinition)rcol.Blocks[0];
                this.UpdateMakeup(md, eyecolor, makeups);

                rcol.SynchronizeUserData();
            }

            if (eyecolor)
            {
                //Update DNA File
                Interfaces.Files.IPackedFileDescriptor dna  = ngbh.FindFile(0xEBFEE33F, 0, Data.MetaData.LOCAL_GROUP, spatient.Instance);
                Interfaces.Files.IPackedFileDescriptor adna = ngbh.FindFile(0xEBFEE33F, 0, Data.MetaData.LOCAL_GROUP, sarchetype.Instance);
                if ((dna != null) && (adna != null))
                {
                    SimPe.PackedFiles.Wrapper.Cpf cpf = new Cpf();
                    cpf.ProcessData(dna, ngbh);

                    SimPe.PackedFiles.Wrapper.Cpf acpf = new Cpf();
                    acpf.ProcessData(adna, ngbh);
                    cpf.GetSaveItem("3").StringValue = acpf.GetSaveItem("3").StringValue;

                    cpf.SynchronizeUserData();
                }
            }
            return(ret);
        }
Esempio n. 18
0
        public string FindTxtrName(Interfaces.Files.IPackedFileDescriptor spfd)
        {
            if (matds == null)
            {
                this.LoadSkinImages();
            }
            if (matds == null)
            {
                return("");
            }
            if (refs == null)
            {
                return("");
            }
            foreach (SimPe.Plugin.RefFile reff in refs)
            {
                Interfaces.Files.IPackedFileDescriptor pfd = reff.FileDescriptor;
                if (
                    (pfd.Group == spfd.Group) &&
                    (pfd.SubType == spfd.SubType) &&
                    (pfd.Instance == spfd.Instance)
                    )
                {
                    foreach (SimPe.Interfaces.Files.IPackedFileDescriptor refpfd in reff.Items)
                    {
                        //found a MATD Reference File
                        if (refpfd.Type == 0x49596978)
                        {
                            foreach (SimPe.Plugin.Rcol matd in matds)
                            {
                                pfd = matd.FileDescriptor;
                                if (
                                    (pfd.Group == refpfd.Group) &&
                                    (pfd.SubType == refpfd.SubType) &&
                                    (pfd.Instance == refpfd.Instance)
                                    )
                                {
                                    foreach (SimPe.Plugin.MaterialDefinition md in matd.Blocks)
                                    {
                                        return(md.GetProperty("stdMatBaseTextureName").Value);
                                    }
                                }
                            }
                        }
                    }                     //foreach matd
                }
            }

            return("");
        }
Esempio n. 19
0
        /// <summary>
        /// Serializes a the Attributes stored in this Instance to the BinaryStream
        /// </summary>
        /// <param name="writer">The Stream the Data should be stored to</param>
        /// <remarks>
        /// Be sure that the Position of the stream is Proper on
        /// return (i.e. must point to the first Byte after your actual File)
        /// </remarks>
        protected override void Serialize(System.IO.BinaryWriter writer)
        {
            writer.Write((uint)items.Length);

            for (int i = 0; i < items.Length; i++)
            {
                Interfaces.Files.IPackedFileDescriptor pfd = items[i];
                writer.Write(pfd.Group);
                writer.Write(pfd.Instance);

                writer.Write((uint)pfd.Filename.Length);
                writer.Write(Helper.ToBytes(pfd.Filename, 0));
            }
        }
Esempio n. 20
0
 /// <summary>
 /// Set the Enabled state of the Toll MenuItems
 /// </summary>
 /// <param name="mi"></param>
 /// <param name="pfd"></param>
 /// <param name="package"></param>
 public void EnableMenuItems(System.Windows.Forms.MenuItem mi, Interfaces.Files.IPackedFileDescriptor pfd, Interfaces.Files.IPackageFile package)
 {
     foreach (System.Windows.Forms.MenuItem item in mi.MenuItems)
     {
         try
         {
             ToolMenuItem tmi = (ToolMenuItem)item;
             tmi.Package        = package;
             tmi.FileDescriptor = pfd;
             tmi.UpdateEnabledState();
         }
         catch (Exception) {}
     }
 }
Esempio n. 21
0
        protected SimPe.PackedFiles.Wrapper.StrItemList GetCtssItems()
        {
            //Get the Name of the Object
            Interfaces.Files.IPackedFileDescriptor ctss = CatalogDescription;
            if (ctss != null)
            {
                ctss.ChangedData += new SimPe.Events.PackedFileChanged(ctss_ChangedUserData);
                SimPe.PackedFiles.Wrapper.Str str = new SimPe.PackedFiles.Wrapper.Str();
                str.ProcessData(ctss, pkg);

                return(str.LanguageItems(Helper.WindowsRegistry.LanguageCode));
            }
            return(null);
        }
Esempio n. 22
0
        public void Load(System.IO.BinaryReader reader)
        {
            version = reader.ReadByte();
            if (version > VERSION)
            {
                throw new CacheException("Unknown CacheItem Version.", null, version);
            }

            resourcename     = reader.ReadString();
            rtp              = (RcolCacheItemType)reader.ReadByte();
            pfd              = new Packages.PackedFileDescriptor();
            pfd.Type         = reader.ReadUInt32();
            pfd.Group        = reader.ReadUInt32();
            pfd.LongInstance = reader.ReadUInt64();
        }
Esempio n. 23
0
        /// <summary>
        /// Returns all Filedescriptors for Files starting with the given Value
        /// </summary>
        /// <param name="start">The string the FIlename starts with</param>
        /// <returns>A List of File Descriptors</returns>
        public Interfaces.Files.IPackedFileDescriptor[] FindFiles(string start)
        {
            start = start.Trim().ToLower();
            System.Collections.ArrayList a = new System.Collections.ArrayList();
            foreach (Interfaces.Files.IPackedFileDescriptor pfd in items)
            {
                if (pfd.Filename.Trim().ToLower().StartsWith(start))
                {
                    a.Add(pfd);
                }
            }

            Interfaces.Files.IPackedFileDescriptor[] pfds = new Interfaces.Files.IPackedFileDescriptor[a.Count];
            a.CopyTo(pfds);
            return(pfds);
        }
Esempio n. 24
0
        protected GenericRcol LoadRcol(uint type, Interfaces.Files.IPackedFileDescriptor pfd)
        {
            if (pfd.Type == type)
            {
                Interfaces.Scenegraph.IScenegraphFileIndexItem[] items = FileTable.FileIndex.FindFile(pfd, null);
                if (items.Length > 0)
                {
                    SimPe.Plugin.GenericRcol rcol = new GenericRcol(null, false);
                    rcol.ProcessData(items[0], false);

                    return(rcol);
                }
            }

            return(null);
        }
Esempio n. 25
0
        private void MoveDown(object sender, System.EventArgs e)
        {
            if (lblist.SelectedIndex < 0)
            {
                return;
            }
            if (lblist.SelectedIndex > lblist.Items.Count - 2)
            {
                return;
            }

            Interfaces.Files.IPackedFileDescriptor pfd = (Interfaces.Files.IPackedFileDescriptor)lblist.Items[lblist.SelectedIndex];
            lblist.Items[lblist.SelectedIndex]     = lblist.Items[lblist.SelectedIndex + 1];
            lblist.Items[lblist.SelectedIndex + 1] = pfd;
            lblist.SelectedIndex++;
        }
Esempio n. 26
0
        /// <summary>
        /// Searches RCOL Files
        /// </summary>
        /// <param name="pfd"></param>
        /// <param name="package"></param>
        /// <param name="prov"></param>
        /// <returns>Null if no match or a valid SearchItem Object</returns>
        public SearchItem RcolSearch(Interfaces.Files.IPackedFileDescriptor pfd, Interfaces.Files.IPackageFile package, Interfaces.IProviderRegistry prov)
        {
            string flname = Hashes.StripHashFromName(tbflname.Text);
            uint   inst   = Hashes.InstanceHash(flname);
            uint   st     = Hashes.SubTypeHash(flname);

            if ((pfd.Instance == inst) && ((pfd.SubType == st) || pfd.SubType == 0))
            {
                SimPe.Plugin.Rcol rcol = new GenericRcol(prov, false);
                rcol.ProcessData(pfd, package);
                return(new SearchItem(rcol.FileName, pfd));
            }


            return(null);
        }
Esempio n. 27
0
        public void Load(System.IO.BinaryReader reader)
        {
            version = reader.ReadByte();
            if (version > VERSION)
            {
                throw new CacheException("Unknown CacheItem Version.", null, version);
            }

            modelname        = reader.ReadString();
            family           = reader.ReadString();
            def              = reader.ReadBoolean();
            pfd              = new Packages.PackedFileDescriptor();
            pfd.Type         = reader.ReadUInt32();
            pfd.Group        = reader.ReadUInt32();
            pfd.LongInstance = reader.ReadUInt64();
        }
Esempio n. 28
0
        /// <summary>
        /// Load the IdNo stored in the passed package
        /// </summary>
        /// <param name="pkg"></param>
        /// <returns></returns>
        public static Idno FromPackage(SimPe.Interfaces.Files.IPackageFile pkg)
        {
            if (pkg == null)
            {
                return(null);
            }
            Interfaces.Files.IPackedFileDescriptor idno = pkg.FindFile(Data.MetaData.IDNO, 0, Data.MetaData.LOCAL_GROUP, 1);
            if (idno != null)
            {
                SimPe.Plugin.Idno wrp = new Idno();
                wrp.ProcessData(idno, pkg);

                return(wrp);
            }

            return(null);
        }
Esempio n. 29
0
 private void Open(object sender, System.EventArgs e)
 {
     if (lblist.SelectedIndex < 0)
     {
         return;
     }
     try
     {
         SearchItem si = (SearchItem)lblist.Items[lblist.SelectedIndex];
         pfd = si.Descriptor;
         Close();
     }
     catch (Exception ex)
     {
         Helper.ExceptionMessage("", ex);
     }
 }
Esempio n. 30
0
        /// <summary>
        /// Load a Texture belonging to a TXMT
        /// </summary>
        /// <param name="txmt">a valid txmt</param>
        /// <returns>the Texture or null</returns>
        public GenericRcol GetTxtr(GenericRcol txmt)
        {
            if (txmt == null)
            {
                return(null);
            }
            Hashtable refs  = txmt.ReferenceChains;
            ArrayList txtrs = (ArrayList)refs["stdMatBaseTextureName"];            //["TXTR"];

            if (txtrs != null)
            {
                if (txtrs.Count > 0)
                {
                    Interfaces.Files.IPackedFileDescriptor pfd = package.FindFile((Interfaces.Files.IPackedFileDescriptor)txtrs[0]);
                    if (pfd == null)                   //fallback code
                    {
                        Interfaces.Files.IPackedFileDescriptor[] pfds = package.FindFile(((Interfaces.Files.IPackedFileDescriptor)txtrs[0]).Filename, Data.MetaData.TXTR);
                        if (pfds.Length > 0)
                        {
                            pfd = pfds[0];
                        }
                    }
                    if (pfd != null)
                    {
                        GenericRcol txtr = new GenericRcol(null, false);
                        txtr.ProcessData(pfd, package);

                        return(txtr);
                    }

                    if (pfd == null)                   //FileTable fallback code
                    {
                        Interfaces.Scenegraph.IScenegraphFileIndexItem[] items = FileTable.FileIndex.FindFileDiscardingGroup((Interfaces.Files.IPackedFileDescriptor)txtrs[0]);
                        if (items.Length > 0)
                        {
                            GenericRcol txtr = new GenericRcol(null, false);
                            txtr.ProcessData(items[0].FileDescriptor, items[0].Package);

                            return(txtr);
                        }
                    }
                }
            }

            return(null);
        }