public void Read(BinaryReader br) { VTable = br.ReadUInt32(); NodeType = (HtmlNodeType)br.ReadInt32(); ParentNodeOffset = ResourceUtil.ReadOffset(br); ChildNodes = new PtrCollection <HtmlNode>(br); foreach (var node in ChildNodes) { node.ParentNode = this; } RenderState = new HtmlRenderState(br); if (NodeType != HtmlNodeType.HtmlDataNode) { Tag = (HtmlTag)br.ReadInt32(); _fDC = br.ReadUInt32(); _linkAddress = new SimpleCollection <byte>(br, reader => reader.ReadByte()); if (NodeType == HtmlNodeType.HtmlTableElementNode) { _fE8 = br.ReadInt32(); _fEC = br.ReadInt32(); } } else { Data = new PtrString(br); } }
internal Model(PtrCollection<Resource.Models.Model> infos) { Geometries = new List<Geometry>(infos.Count); foreach (var info in infos) { Geometries.Add(new Geometry(info)); } }
internal Model(PtrCollection <Resource.Models.Model> infos) { Geometries = new List <Geometry>(infos.Count); foreach (var info in infos) { Geometries.Add(new Geometry(info)); } }
public void Read(BinaryReader br) { RootElement = new PtrValue<HtmlNode>(br).Value; BodyOffset = ResourceUtil.ReadOffset(br); Unknown1Offset = ResourceUtil.ReadOffset(br); TextureDictionaryOffset = ResourceUtil.ReadOffset(br); Unknown2 = new PtrCollection<UnDocData>(br); ChildNodes = new PtrCollection<HtmlNode>(br); Unknown3 = new PtrCollection<UnDocData>(br); }
public void Read(BinaryReader br) { RootElement = new PtrValue <HtmlNode>(br).Value; BodyOffset = ResourceUtil.ReadOffset(br); Unknown1Offset = ResourceUtil.ReadOffset(br); TextureDictionaryOffset = ResourceUtil.ReadOffset(br); Unknown2 = new PtrCollection <UnDocData>(br); ChildNodes = new PtrCollection <HtmlNode>(br); Unknown3 = new PtrCollection <UnDocData>(br); }
public new void Read(BinaryReader br) { base.Read(br); TextureDictionaryOffset = ResourceUtil.ReadOffset(br); // CPtrCollection<T> Shaders = new PtrCollection<ShaderFx>(br); Zeros = new SimpleArray<uint>(br, 12, r => r.ReadUInt32()); VertexDeclarationUsageFlags = new SimpleCollection<uint>(br, reader => reader.ReadUInt32()); Data3 = new SimpleCollection<uint>(br, reader => reader.ReadUInt32()); }
public new void Read(BinaryReader br) { base.Read(br); TextureDictionaryOffset = ResourceUtil.ReadOffset(br); // CPtrCollection<T> Shaders = new PtrCollection <ShaderFx>(br); Zeros = new SimpleArray <uint>(br, 12, r => r.ReadUInt32()); VertexDeclarationUsageFlags = new SimpleCollection <uint>(br, reader => reader.ReadUInt32()); Data3 = new SimpleCollection <uint>(br, reader => reader.ReadUInt32()); }
public new void Read(BinaryReader br) { base.Read(br); Geometries = new PtrCollection <Geometry>(br); var unknownVectorOffsets = ResourceUtil.ReadOffset(br); var materialMappingOffset = ResourceUtil.ReadOffset(br); Unknown1 = br.ReadUInt16(); Unknown2 = br.ReadUInt16(); Unknown3 = br.ReadUInt16(); Unknown4 = br.ReadUInt16(); // br.BaseStream.Seek(unknownVectorOffsets, SeekOrigin.Begin); UnknownVectors = new SimpleArray <Vector4>(br, 4, reader => new Vector4(reader)); br.BaseStream.Seek(materialMappingOffset, SeekOrigin.Begin); ShaderMappings = new SimpleArray <ushort>(br, Geometries.Count, reader => reader.ReadUInt16()); }
public new void Read(BinaryReader br) { base.Read(br); Geometries = new PtrCollection<Geometry>(br); var unknownVectorOffsets = ResourceUtil.ReadOffset(br); var materialMappingOffset = ResourceUtil.ReadOffset(br); Unknown1 = br.ReadUInt16(); Unknown2 = br.ReadUInt16(); Unknown3 = br.ReadUInt16(); Unknown4 = br.ReadUInt16(); // br.BaseStream.Seek(unknownVectorOffsets, SeekOrigin.Begin); UnknownVectors = new SimpleArray<Vector4>(br, 4, reader => new Vector4(reader)); br.BaseStream.Seek(materialMappingOffset, SeekOrigin.Begin); ShaderMappings = new SimpleArray<ushort>(br, Geometries.Count, reader => reader.ReadUInt16()); }
public new void Read(BinaryReader br) { base.Read(br); // rage::rmcDrawableBase // rage::rmcDrawable // gtaDrawable var shaderGroupOffset = ResourceUtil.ReadOffset(br); var skeletonOffset = ResourceUtil.ReadOffset(br); Center = new Vector4(br); BoundsMin = new Vector4(br); BoundsMax = new Vector4(br); int levelOfDetailCount = 0; var modelOffsets = new uint[4]; for (int i = 0; i < 4; i++) { modelOffsets[i] = ResourceUtil.ReadOffset(br); if (modelOffsets[i] != 0) { levelOfDetailCount++; } } AbsoluteMax = new Vector4(br); Unk1 = br.ReadUInt32(); Neg1 = br.ReadUInt32(); Neg2 = br.ReadUInt32(); Neg3 = br.ReadUInt32(); Unk2 = br.ReadSingle(); Unk3 = br.ReadUInt32(); Unk4 = br.ReadUInt32(); Unk5 = br.ReadUInt32(); // Collection<LightAttrs> Unk6 = br.ReadUInt32(); Unk7 = br.ReadUInt32(); // The data follows: if (shaderGroupOffset != 0) { br.BaseStream.Seek(shaderGroupOffset, SeekOrigin.Begin); ShaderGroup = new ShaderGroup(br); } if (skeletonOffset != 0) { br.BaseStream.Seek(skeletonOffset, SeekOrigin.Begin); Skeleton = new Skeleton(br); } ModelCollection = new PtrCollection<Model>[levelOfDetailCount]; for (int i = 0; i < levelOfDetailCount; i++) { br.BaseStream.Seek(modelOffsets[i], SeekOrigin.Begin); ModelCollection[i] = new PtrCollection<Model>(br); } }
public void Read(BinaryReader br) { VTable = br.ReadUInt32(); NodeType = (HtmlNodeType)br.ReadInt32(); ParentNodeOffset = ResourceUtil.ReadOffset(br); ChildNodes = new PtrCollection<HtmlNode>(br); foreach (var node in ChildNodes) { node.ParentNode = this; } RenderState = new HtmlRenderState(br); if (NodeType != HtmlNodeType.HtmlDataNode) { Tag = (HtmlTag)br.ReadInt32(); _fDC = br.ReadUInt32(); _linkAddress = new SimpleCollection<byte>(br, reader => reader.ReadByte()); if (NodeType == HtmlNodeType.HtmlTableElementNode) { _fE8 = br.ReadInt32(); _fEC = br.ReadInt32(); } } else { Data = new PtrString(br); } }
public new void Read(BinaryReader br) { base.Read(br); // rage::rmcDrawableBase // rage::rmcDrawable // gtaDrawable var shaderGroupOffset = ResourceUtil.ReadOffset(br); var skeletonOffset = ResourceUtil.ReadOffset(br); Center = new Vector4(br); BoundsMin = new Vector4(br); BoundsMax = new Vector4(br); int levelOfDetailCount = 0; var modelOffsets = new uint[4]; for (int i = 0; i < 4; i++) { modelOffsets[i] = ResourceUtil.ReadOffset(br); if (modelOffsets[i] != 0) { levelOfDetailCount++; } } AbsoluteMax = new Vector4(br); Unk1 = br.ReadUInt32(); Neg1 = br.ReadUInt32(); Neg2 = br.ReadUInt32(); Neg3 = br.ReadUInt32(); Unk2 = br.ReadSingle(); Unk3 = br.ReadUInt32(); Unk4 = br.ReadUInt32(); Unk5 = br.ReadUInt32(); // Collection<LightAttrs> Unk6 = br.ReadUInt32(); Unk7 = br.ReadUInt32(); // The data follows: if (shaderGroupOffset != 0) { br.BaseStream.Seek(shaderGroupOffset, SeekOrigin.Begin); ShaderGroup = new ShaderGroup(br); } if (skeletonOffset != 0) { br.BaseStream.Seek(skeletonOffset, SeekOrigin.Begin); Skeleton = new Skeleton(br); } ModelCollection = new PtrCollection <Model> [levelOfDetailCount]; for (int i = 0; i < levelOfDetailCount; i++) { br.BaseStream.Seek(modelOffsets[i], SeekOrigin.Begin); ModelCollection[i] = new PtrCollection <Model>(br); } }
public static void *Alloc(Pool *self, int size) { if ((size & 0x3) != 0) // align to 4 { size = (((size >> 2) + 1) << 2); } #if FDB Verify(self); Should.GreaterThanZero("size", size); #endif byte *arr = self->arr; int *head; int *freeHead; int freeSize; int curFree = 0; while (curFree != -1) // foreach free block { head = (int *)(arr + curFree); int blockSize = head[2]; if (blockSize >= size) // found a block that can fit // | head | data... | tail | // | blockSize | // | head | data... | tail | freeHead | data... | tail | // | size | | freeSize | { freeSize = blockSize - size - TailSize - HeadSize; if (freeSize > 0) // split { freeHead = (int *)((byte *)head + HeadSize + size + TailSize); SetFreeMetaAndInsert(arr, freeHead, freeSize); MergeRight(arr, freeHead); RemoveFromFreeList(arr, head); SetUsedMeta(head, size); } else { RemoveFromFreeList(arr, head); SetUsedMeta(head, blockSize); } #if FDB Verify(self); #endif return(head + 3); } curFree = head[1]; } // expand and split // | data... | endHead | // | data... | freeHead | data... | freeTail | head | data... | tail | endHead | // | len | // | oldLen | freeSize | | size | int oldLen = self->len, len = oldLen, minLen = oldLen + HeadSize + size + TailSize + HeadSize + TailSize; while (len < minLen) { len <<= 1; } self->len = len; // Fdb.Log("{0:X}", (long)arr); // Fdb.Log("len: {0}", Mem.Verify(arr)); byte *oldArr = arr; arr = self->arr = (byte *)Mem.Realloc(arr, len); long shift = self->shift = arr - oldArr; if (shift != 0) { var dependentLst = &self->dependentLst; void **dependentArr = dependentLst->arr; for (int i = 0, dependentLen = dependentLst->count; i < dependentLen; i += 1) { PtrCollection.ShiftBase(dependentArr[i], shift); } } // Fdb.Log("{0:X}", (long)arr); // Fdb.Log("len: {0}", Mem.Verify(self->arr)); freeHead = (int *)(arr + oldLen - HeadSize); freeSize = len - oldLen - TailSize - HeadSize - size - TailSize - HeadSize; SetFreeMetaAndInsert(arr, freeHead, freeSize); // Fdb.Dump(arr, len); MergeLeft(arr, freeHead); int *endHead = (int *)(arr + len - HeadSize); endHead[0] = -1; endHead[1] = -1; endHead[2] = 0; head = (int *)((byte *)freeHead + HeadSize + freeSize + TailSize); SetUsedMeta(head, size); #if FDB Verify(self); #endif return(head + 3); }