Example #1
0
        protected string AddTxtr(GenericRcol txtr, string unique, GenericRcol txmt, MaterialDefinition md)
        {
            string old = Hashes.StripHashFromName(txtr.FileName.Trim().ToLower());

            if (old.EndsWith("_txtr"))
            {
                old = old.Substring(0, old.Length - 5);
            }
            //Console.WriteLine("Adding Texture: "+old);

            string name = txtr.FileName.Trim();

            if (name.ToLower().EndsWith("_txtr"))
            {
                name = name.Substring(0, name.Length - 5);
            }

            string tname = RenameForm.ReplaceOldUnique(name, unique, true);

            txtr.FileName = tname + "_txtr";

            txtr.FileDescriptor = ScenegraphHelper.BuildPfd(txtr.FileName, Data.MetaData.TXTR, Data.MetaData.CUSTOM_GROUP);

            for (int i = 0; i < md.Listing.Length; i++)
            {
                if (Hashes.StripHashFromName(md.Listing[i].Trim().ToLower()) == old)
                {
                    md.Listing[i] = "##0x" + Helper.HexString(Data.MetaData.CUSTOM_GROUP) + "!" + tname;
                }
            }

            //update References
            foreach (string k in txmt.ReferenceChains.Keys)
            {
                if (k == "TXTR" || k == "Generic")
                {
                    continue;
                }
                //Console.WriteLine("    Checking Property "+k);
                string thisname = Hashes.StripHashFromName(md.FindProperty(k).Value.Trim().ToLower());

                if (thisname == old)
                {
                    string nname = "##0x" + Helper.HexString(Data.MetaData.CUSTOM_GROUP) + "!" + tname;
                    //Console.WriteLine("    --> Updating to "+nname);
                    md.FindProperty(k).Value = nname;
                }
            }

            //Load the Lifos into the Texture File
            ImageData id = (ImageData)txtr.Blocks[0];

            id.GetReferencedLifos();

            return(name);
        }
Example #2
0
        /*public override string ToString()
         * {
         *      return this.NameResource.FileName;
         * }*/

        #region IScenegraphBlock Member

        public void ReferencedItems(Hashtable refmap, uint parentgroup)
        {
            ArrayList list = new ArrayList();

            foreach (MipMapBlock mmp in this.MipMapBlocks)
            {
                foreach (MipMap mm in mmp.MipMaps)
                {
                    if (mm.DataType == MipMapType.LifoReference)
                    {
                        list.Add(ScenegraphHelper.BuildPfd(mm.LifoFile, SimPe.Plugin.ScenegraphHelper.LIFO, parentgroup));
                    }
                }
            }
            refmap["LIFO"] = list;
        }
Example #3
0
        public void ReferencedItems(Hashtable refmap, uint parentgroup)
        {
            ArrayList list = new ArrayList();

            foreach (string name in Listing)
            {
                list.Add(ScenegraphHelper.BuildPfd(name + "_txtr", SimPe.Plugin.ScenegraphHelper.TXTR, parentgroup));
            }
            refmap["TXTR"] = list;

            string refname = this.GetProperty("stdMatBaseTextureName").Value;

            if (refname.Trim() != "")
            {
                list = new ArrayList();
                list.Add(ScenegraphHelper.BuildPfd(refname + "_txtr", SimPe.Plugin.ScenegraphHelper.TXTR, parentgroup));
                refmap["stdMatBaseTextureName"] = list;
            }

            refname = this.GetProperty("stdMatNormalMapTextureName").Value;
            if (refname.Trim() != "")
            {
                list = new ArrayList();
                list.Add(ScenegraphHelper.BuildPfd(refname + "_txtr", SimPe.Plugin.ScenegraphHelper.TXTR, parentgroup));
                refmap["stdMatNormalMapTextureName"] = list;
            }

            refname = this.GetProperty("stdMatEnvCubeTextureName").Value;
            if (refname.Trim() != "")
            {
                list = new ArrayList();
                list.Add(ScenegraphHelper.BuildPfd(refname + "_txtr", SimPe.Plugin.ScenegraphHelper.TXTR, parentgroup));
                refmap["stdMatEnvCubeTextureName"] = list;
            }


            //for characters
            int count = 0;

            try
            {
                string s = this.GetProperty("numTexturesToComposite").Value;
                if (s != "")
                {
                    count = Convert.ToInt32(this.GetProperty("numTexturesToComposite").Value);
                }
            }
            catch {}
            list = new ArrayList();
            refmap["baseTexture"] = list;
            for (int i = 0; i < count; i++)
            {
                refname = this.GetProperty("baseTexture" + i.ToString()).Value.Trim();
                if (refname != "")
                {
                    if (!refname.EndsWith("_txtr"))
                    {
                        refname += "_txtr";
                    }
                    list.Add(ScenegraphHelper.BuildPfd(refname, SimPe.Plugin.ScenegraphHelper.TXTR, parentgroup));
                }
            }
        }
Example #4
0
        /// <summary>
        /// Add a small Scenegraph Chain
        /// </summary>
        /// <param name="mmat">the MAterial override File for this Subset</param>
        /// <param name="txmt">The Material Definition File for this Subset</param>
        /// <param name="txtr">The Txtr File for this Subset (can be null)</param>
        /// <param name="unique">A unique String for the Filenames</param>
        /// <param name="slavemap">The Slavemap as generated by Scenegraph.GetSlaveSubsets() (if null, no slave txmts are loaded)</param>
        void AddTxmt(IPackageFile newpkg, SimPe.Plugin.MmatWrapper mmat, GenericRcol txmt, GenericRcol txtr, string unique, Hashtable slavemap)
        {
            //Get/Update Material Definition
            if (txmt != null)
            {
                string name = Hashes.StripHashFromName(txmt.FileName.Trim());

                //load Slave TXMTs
                if (slavemap != null)
                {
                    LoadSlaveTxmt(newpkg, mmat, name, unique, slavemap);
                }

                if (name.ToLower().EndsWith("_txmt"))
                {
                    name = name.Substring(0, name.Length - 5);
                }
                txmt.FileName       = FixObject.GetUniqueTxmtName(name, unique, mmat.SubsetName, true);          ///*"##0x"+Helper.HexString(Data.MetaData.CUSTOM_GROUP)+"!"+*/name+"_"+unique+"_txmt";
                txmt.FileDescriptor = ScenegraphHelper.BuildPfd(txmt.FileName, Data.MetaData.TXMT, Data.MetaData.CUSTOM_GROUP);

                mmat.Name = "##0x" + Helper.HexString(txmt.FileDescriptor.Group) + "!" + FixObject.GetUniqueTxmtName(name, unique, mmat.SubsetName, false);

                MaterialDefinition md = (MaterialDefinition)txmt.Blocks[0];
                if (txtr == null)
                {
                    txtr = mmat.GetTxtr(txmt);
                    if (txtr != null)
                    {
                        txtr.FileDescriptor = (Interfaces.Files.IPackedFileDescriptor)txtr.FileDescriptor.Clone();
                    }
                }

                //Get/Update Texture
                if (txtr != null)
                {
                    name = AddTxtr(txtr, unique, txmt, md);

                    md.FileDescription = Hashes.StripHashFromName(txmt.FileName).Trim();
                    if (md.FileDescription.ToLower().EndsWith("_txmt"))
                    {
                        md.FileDescription = md.FileDescription.Substring(0, md.FileDescription.Length - 5);
                    }
                }

                if (txtr != null)
                {
                    txtr.SynchronizeUserData();
                    if (newpkg.FindFile(txtr.FileDescriptor) == null)
                    {
                        newpkg.Add(txtr.FileDescriptor);
                    }
                }

                AddReferencedTxtr(newpkg, txmt, md, unique);

                if (txmt != null)
                {
                    txmt.SynchronizeUserData();
                    if (newpkg.FindFile(txmt.FileDescriptor) == null)
                    {
                        newpkg.Add(txmt.FileDescriptor);
                    }
                }
            }
        }