Exemple #1
0
        //

        public AnimNode(CsabChunk parentCsab, int offset)
        {
            Tag = Encoding.ASCII.GetString(parentCsab.ChunkData, offset, 4).TrimEnd(' ');

            if (Tag != AnimNodeTag)
            {
                throw new Exception(string.Format("Trying to read data with tag '{0}' as {1}, expected tag '{2}'", Tag, this.GetType().Name, AnimNodeTag));
            }

            //
        }
Exemple #2
0
        public Animation(CsabChunk parent, int offset)
        {
            parentCsab = parent;
            Offset     = offset;

            int rofs = offset;

            Unknown00             = BitConverter.ToUInt32(parent.ChunkData, rofs);
            Unknown04             = BitConverter.ToUInt32(parent.ChunkData, rofs + 0x04);
            Unknown08             = BitConverter.ToUInt32(parent.ChunkData, rofs + 0x08);
            Unknown0C             = BitConverter.ToUInt32(parent.ChunkData, rofs + 0x0C);
            NumberOfUnknownStuffs = BitConverter.ToUInt32(parent.ChunkData, rofs + 0x10);
            Unknown14             = BitConverter.ToUInt32(parent.ChunkData, rofs + 0x14);
            NumberOfAnimNodes     = BitConverter.ToUInt32(parent.ChunkData, rofs + 0x18);
            NumberOfBones         = BitConverter.ToUInt32(parent.ChunkData, rofs + 0x1C);

            rofs          += 0x20;
            PerBoneIncides = new ushort[NumberOfBones];
            for (int i = 0; i < PerBoneIncides.Length; i++)
            {
                PerBoneIncides[i] = BitConverter.ToUInt16(parent.ChunkData, rofs + (i * sizeof(ushort)));
            }

            rofs           += PerBoneIncides.Length * sizeof(ushort);
            AnimNodeOffsets = new uint[NumberOfAnimNodes];
            for (int i = 0; i < AnimNodeOffsets.Length; i++)
            {
                AnimNodeOffsets[i] = BitConverter.ToUInt32(parent.ChunkData, rofs + (i * sizeof(uint)));
            }

            AnimNodes = new AnimNode[NumberOfAnimNodes];
            for (int i = 0; i < AnimNodes.Length; i++)
            {
                AnimNodes[i] = new AnimNode(parent, Offset + (int)AnimNodeOffsets[i]);
            }
        }
Exemple #3
0
        public void Load()
        {
            Disposed = false;

            Root = new CsabChunk(Data, 0, null);
        }