// 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)); } // }
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]); } }
public void Load() { Disposed = false; Root = new CsabChunk(Data, 0, null); }