예제 #1
0
        public DL_Editor(LevelEditorForm lf)
        {
            InitializeComponent();

            this.availableTree.Nodes.Clear();
            ROMFileSelect.LoadFileList(this.availableTree);
            this.lf   = lf;
            no        = new NitroOverlay(Program.m_ROM, (uint)(103 + lf.m_LevelID));
            tableAddr = no.Read32(0x30);

            uint count = no.Read16(tableAddr);

            for (uint i = 0; i < count; i++)
            {
                currentTree.Nodes.Add(Program.m_ROM.GetFileNameFromID(Program.m_ROM.GetFileIDFromInternalID(no.Read16(i * 2 + tableAddr + 2))));
            }
        }
예제 #2
0
        private static void WriteTextureAnimationDataToXML(XmlWriter writer)
        {
            // Start TextureAnimationData
            writer.WriteStartElement("TextureAnimationData");

            for (int area = 0; area < m_NumAreas; area++)
            {
                uint objlistptr      = m_Overlay.ReadPointer(0x70);
                uint texAnimAddr     = (uint)(objlistptr + (area * 12) + 4);
                bool areaHasTexAnims = (m_Overlay.Read32(texAnimAddr) != 0);

                if (!areaHasTexAnims)
                {
                    continue;
                }

                writer.WriteStartElement("TextureAnimationArea");
                writer.WriteAttributeString("area", area.ToString());

                uint texAnimHeader = m_Overlay.ReadPointer(texAnimAddr);
                writer.WriteElementString("NumberOfFrames", m_Overlay.Read32(texAnimHeader).ToString());
                writer.WriteElementString("NumberOfAnimations", m_Overlay.Read32(texAnimHeader + 0x10).ToString());

                int scaleSize = 0;
                int rotSize   = 0;
                int transSize = 0;
                for (int j = 0; j < m_TexAnims[area].Count; j++)
                {
                    if ((m_TexAnims[area].ElementAt(j).getScaleTblStart() + (int)m_TexAnims[area].ElementAt(j).getScaleTblSize()) > scaleSize)
                    {
                        scaleSize += (int)m_TexAnims[area].ElementAt(j).getScaleTblSize();
                    }
                    if ((m_TexAnims[area].ElementAt(j).getRotTblStart() + (int)m_TexAnims[area].ElementAt(j).getRotTblSize()) > rotSize)
                    {
                        rotSize += (int)m_TexAnims[area].ElementAt(j).getRotTblSize();
                    }
                    if ((m_TexAnims[area].ElementAt(j).getTransTblStart() + (int)m_TexAnims[area].ElementAt(j).getTransTblSize()) > transSize)
                    {
                        transSize += (int)m_TexAnims[area].ElementAt(j).getTransTblSize();
                    }
                }

                writer.WriteStartElement("ScaleTable");
                for (int i = 0; i < scaleSize; i++)
                {
                    writer.WriteElementString("UInt", m_Overlay.Read32(m_TexAnims[area].ElementAt(0).m_BaseScaleTblAddr +
                                                                       (uint)(i * 4)).ToString());
                }
                writer.WriteEndElement();
                writer.WriteStartElement("RotationTable");
                for (int i = 0; i < rotSize; i++)
                {
                    writer.WriteElementString("UShort", m_Overlay.Read16(m_TexAnims[area].ElementAt(0).m_BaseRotTblAddr +
                                                                         (uint)(i * 2)).ToString());
                }
                writer.WriteEndElement();
                writer.WriteStartElement("TranslationTable");
                for (int i = 0; i < transSize; i++)
                {
                    writer.WriteElementString("UInt", m_Overlay.Read32(m_TexAnims[area].ElementAt(0).m_BaseTransTblAddr +
                                                                       (uint)(i * 4)).ToString());
                }
                writer.WriteEndElement();

                for (int i = 0; i < m_TexAnims[area].Count; i++)
                {
                    writer.WriteStartElement("TextureAnimation");

                    writer.WriteElementString("MaterialName", m_Overlay.ReadString(m_TexAnims[area].ElementAt(i).m_MatNameOffset, 0));
                    writer.WriteElementString("ScaleStartIndex", m_TexAnims[area].ElementAt(i).getScaleTblStart().ToString());
                    writer.WriteElementString("ScaleLength", m_TexAnims[area].ElementAt(i).getScaleTblSize().ToString());
                    writer.WriteElementString("RotationStartIndex", m_TexAnims[area].ElementAt(i).getRotTblStart().ToString());
                    writer.WriteElementString("RotationLength", m_TexAnims[area].ElementAt(i).getRotTblSize().ToString());
                    writer.WriteElementString("TranslationStartIndex", m_TexAnims[area].ElementAt(i).getTransTblStart().ToString());
                    writer.WriteElementString("TranslationLength", m_TexAnims[area].ElementAt(i).getTransTblSize().ToString());
                    writer.WriteElementString("DefaultScaleValue", m_Overlay.Read32(m_TexAnims[area].ElementAt(i).m_Offset + 0x08).ToString());

                    writer.WriteEndElement();
                }

                writer.WriteEndElement();
            }

            writer.WriteEndElement();
            // End TextureAnimationData
        }