internal ModelBlockBase(BinaryReader binaryReader) { this.renderModel = binaryReader.ReadTagReference(); this.collisionModel = binaryReader.ReadTagReference(); this.animation = binaryReader.ReadTagReference(); this.physics = binaryReader.ReadTagReference(); this.physicsModel = binaryReader.ReadTagReference(); this.disappearDistanceWorldUnits = binaryReader.ReadSingle(); this.beginFadeDistanceWorldUnits = binaryReader.ReadSingle(); this.invalidName_ = binaryReader.ReadBytes(4); this.reduceToL1WorldUnitsSuperLow = binaryReader.ReadSingle(); this.reduceToL2WorldUnitsLow = binaryReader.ReadSingle(); this.reduceToL3WorldUnitsMedium = binaryReader.ReadSingle(); this.reduceToL4WorldUnitsHigh = binaryReader.ReadSingle(); this.reduceToL5WorldUnitsSuperHigh = binaryReader.ReadSingle(); this.invalidName_0 = binaryReader.ReadBytes(4); this.shadowFadeDistance = (ShadowFadeDistance)binaryReader.ReadInt16(); this.invalidName_1 = binaryReader.ReadBytes(2); this.variants = ReadModelVariantBlockArray(binaryReader); this.materials = ReadModelMaterialBlockArray(binaryReader); this.newDamageInfo = ReadGlobalDamageInfoBlockArray(binaryReader); this.targets = ReadModelTargetBlockArray(binaryReader); this.modelRegionBlock = ReadModelRegionBlockArray(binaryReader); this.modelNodeBlock = ReadModelNodeBlockArray(binaryReader); this.invalidName_2 = binaryReader.ReadBytes(4); this.modelObjectData = ReadModelObjectDataBlockArray(binaryReader); this.defaultDialogue = binaryReader.ReadTagReference(); this.uNUSED = binaryReader.ReadTagReference(); this.flags = (Flags)binaryReader.ReadInt32(); this.defaultDialogueEffect = binaryReader.ReadStringID(); this.renderOnlyNodeFlags = new RenderOnlyNodeFlags(binaryReader); this.invalidName_3 = binaryReader.ReadByte(); }
public HierarchyModel(BinaryReader binaryReader) { this.renderModel = binaryReader.ReadTagReference(); this.collisionModel = binaryReader.ReadTagReference(); this.animation = binaryReader.ReadTagReference(); this.physics = binaryReader.ReadTagReference(); this.physicsModel = binaryReader.ReadTagReference(); this.disappearDistanceWorldUnits = binaryReader.ReadSingle(); this.beginFadeDistanceWorldUnits = binaryReader.ReadSingle(); this.padding = binaryReader.ReadBytes(4); this.reduceToL1WorldUnitsSuperLow = binaryReader.ReadSingle(); this.reduceToL2WorldUnitsLow = binaryReader.ReadSingle(); this.reduceToL3WorldUnitsMedium = binaryReader.ReadSingle(); this.reduceToL4WorldUnitsHigh = binaryReader.ReadSingle(); this.reduceToL5WorldUnitsSuperHigh = binaryReader.ReadSingle(); this.skip0 = binaryReader.ReadBytes(4); this.shadowFadeDistance = (ShadowFadeDistance)binaryReader.ReadInt16(); this.padding1 = binaryReader.ReadBytes(2); { var count = binaryReader.ReadInt32(); var address = binaryReader.ReadInt32(); var elementSize = Marshal.SizeOf(typeof(ModelVariantBlock)); this.variants = new ModelVariantBlock[count]; using (binaryReader.BaseStream.Pin()) { for (int i = 0; i < count; ++i) { binaryReader.BaseStream.Position = address + i * elementSize; this.variants[i] = new ModelVariantBlock(binaryReader); } } } { var count = binaryReader.ReadInt32(); var address = binaryReader.ReadInt32(); var elementSize = Marshal.SizeOf(typeof(ModelMaterialBlock)); this.materials = new ModelMaterialBlock[count]; using (binaryReader.BaseStream.Pin()) { for (int i = 0; i < count; ++i) { binaryReader.BaseStream.Position = address + i * elementSize; this.materials[i] = new ModelMaterialBlock(binaryReader); } } } { var count = binaryReader.ReadInt32(); var address = binaryReader.ReadInt32(); var elementSize = Marshal.SizeOf(typeof(GlobalDamageInfoBlock)); this.newDamageInfo = new GlobalDamageInfoBlock[count]; using (binaryReader.BaseStream.Pin()) { for (int i = 0; i < count; ++i) { binaryReader.BaseStream.Position = address + i * elementSize; this.newDamageInfo[i] = new GlobalDamageInfoBlock(binaryReader); } } } { var count = binaryReader.ReadInt32(); var address = binaryReader.ReadInt32(); var elementSize = Marshal.SizeOf(typeof(ModelTargetBlock)); this.targets = new ModelTargetBlock[count]; using (binaryReader.BaseStream.Pin()) { for (int i = 0; i < count; ++i) { binaryReader.BaseStream.Position = address + i * elementSize; this.targets[i] = new ModelTargetBlock(binaryReader); } } } { var count = binaryReader.ReadInt32(); var address = binaryReader.ReadInt32(); var elementSize = Marshal.SizeOf(typeof(ModelRegionBlock)); this.modelRegionBlock = new ModelRegionBlock[count]; using (binaryReader.BaseStream.Pin()) { for (int i = 0; i < count; ++i) { binaryReader.BaseStream.Position = address + i * elementSize; this.modelRegionBlock[i] = new ModelRegionBlock(binaryReader); } } } { var count = binaryReader.ReadInt32(); var address = binaryReader.ReadInt32(); var elementSize = Marshal.SizeOf(typeof(ModelNodeBlock)); this.modelNodeBlock = new ModelNodeBlock[count]; using (binaryReader.BaseStream.Pin()) { for (int i = 0; i < count; ++i) { binaryReader.BaseStream.Position = address + i * elementSize; this.modelNodeBlock[i] = new ModelNodeBlock(binaryReader); } } } this.padding2 = binaryReader.ReadBytes(4); { var count = binaryReader.ReadInt32(); var address = binaryReader.ReadInt32(); var elementSize = Marshal.SizeOf(typeof(ModelObjectDataBlock)); this.modelObjectData = new ModelObjectDataBlock[count]; using (binaryReader.BaseStream.Pin()) { for (int i = 0; i < count; ++i) { binaryReader.BaseStream.Position = address + i * elementSize; this.modelObjectData[i] = new ModelObjectDataBlock(binaryReader); } } } this.defaultDialogueTheDefaultDialogueTagForThisModelOverridenByVariants = binaryReader.ReadTagReference(); this.uNUSED = binaryReader.ReadTagReference(); this.flags = (Flags)binaryReader.ReadInt32(); this.defaultDialogueEffectTheDefaultDialogueTagForThisModelOverridenByVariants = binaryReader.ReadStringID(); this.renderOnlyNodeFlags = new RenderOnlyNodeFlags[32]; for (int i = 0; i < 32; ++i) { this.renderOnlyNodeFlags[i] = new RenderOnlyNodeFlags(binaryReader); } this.renderOnlySectionFlags = new RenderOnlySectionFlags[32]; for (int i = 0; i < 32; ++i) { this.renderOnlySectionFlags[i] = new RenderOnlySectionFlags(binaryReader); } this.runtimeFlags = (RuntimeFlags)binaryReader.ReadInt32(); { var count = binaryReader.ReadInt32(); var address = binaryReader.ReadInt32(); var elementSize = Marshal.SizeOf(typeof(GlobalScenarioLoadParametersBlock)); this.scenarioLoadParameters = new GlobalScenarioLoadParametersBlock[count]; using (binaryReader.BaseStream.Pin()) { for (int i = 0; i < count; ++i) { binaryReader.BaseStream.Position = address + i * elementSize; this.scenarioLoadParameters[i] = new GlobalScenarioLoadParametersBlock(binaryReader); } } } this.hologramShader = binaryReader.ReadTagReference(); this.hologramControlFunction = binaryReader.ReadStringID(); Initialize(); }