public void ReadFromFile(BinaryReader reader) { frameRef = reader.ReadUInt64(); unk_byte = reader.ReadByte(); colType = (CollisionTypes)reader.ReadByte(); idHash = reader.ReadUInt64(); colMaterial = reader.ReadInt16(); Matrix = MatrixExtensions.ReadFromFile(reader); unkByte = reader.ReadByte(); if (colType == CollisionTypes.Box) { collision = new CollisionBox(reader); } else if (colType == CollisionTypes.Sphere) { collision = new CollisionSphere(reader); } else if (colType == CollisionTypes.Capsule) { collision = new CollisionCapsule(reader); } else if (colType == CollisionTypes.Convex) { collision = new CollisionConvex(reader); } else { Log.WriteLine("Failed to parse collision type " + colType, LoggingTypes.WARNING, LogCategoryTypes.FUNCTION); } }
public bool ReadFromFile(MemoryStream stream, bool isBigEndian) { Unk01 = stream.ReadInt32(isBigEndian); Name1 = stream.ReadString16(isBigEndian); Hash1 = stream.ReadUInt64(isBigEndian); Hash2 = stream.ReadUInt64(isBigEndian); Name2 = stream.ReadString16(isBigEndian); Unk02 = stream.ReadInt32(isBigEndian); Unk03 = stream.ReadInt32(isBigEndian); Unk04 = stream.ReadInt32(isBigEndian); Unk05 = stream.ReadByte8(); Unk06 = stream.ReadInt32(isBigEndian); Unk07 = stream.ReadInt32(isBigEndian); Transform = MatrixExtensions.ReadFromFile(stream, isBigEndian); Unk09 = stream.ReadInt32(isBigEndian); Unk10 = stream.ReadInt32(isBigEndian); Unk08 = new float[10]; for (int i = 0; i < 10; i++) { Unk08[i] = stream.ReadSingle(isBigEndian); } Unk11 = stream.ReadInt32(isBigEndian); Unk12 = stream.ReadInt32(isBigEndian); Unk13 = stream.ReadInt16(isBigEndian); return(true); }
public override void ReadFromFile(MemoryStream stream, bool isBigEndian) { base.ReadFromFile(stream, isBigEndian); Unk05 = stream.ReadByte8(); Unk06 = stream.ReadInt32(isBigEndian); Unk07 = stream.ReadInt32(isBigEndian); Transform = MatrixExtensions.ReadFromFile(stream, isBigEndian); Unk09 = stream.ReadInt32(isBigEndian); Unk10 = stream.ReadInt32(isBigEndian); if (Unk10 == 0) // Mostly the same as AeOmniLight, but with 12 floats rather than 10. { // TODO: Why does OmniLight and SpotLight have different array sizes? AeLightType0 LightType0 = new AeLightType0(); LightType0.SetNumFloats(12); LightType0.ReadFromFile(stream, isBigEndian); LightInfo = LightType0; } else if (Unk10 == 1) // This is exactly the same as AeOmniLight. Maybe this is apart of some big type for lights? { LightInfo = new AeLightType1(); LightInfo.ReadFromFile(stream, isBigEndian); } else if (Unk10 == 2) // Mostly the same as AeOmniLight, but with 12 floats rather than 10. { LightInfo = new AeLightType2(); LightInfo.ReadFromFile(stream, isBigEndian); } else { throw new FileFormatException(); } }
public override void ReadFromFile(MemoryStream stream, bool isBigEndian) { base.ReadFromFile(stream, isBigEndian); Unk05 = stream.ReadByte8(); Unk06 = stream.ReadInt32(isBigEndian); Unk07 = stream.ReadInt32(isBigEndian); Transform = MatrixExtensions.ReadFromFile(stream, isBigEndian); Unk09 = stream.ReadInt32(isBigEndian); Unk10 = stream.ReadInt32(isBigEndian); Unk08 = new float[10]; for (int i = 0; i < 10; i++) { Unk08[i] = stream.ReadSingle(isBigEndian); } Unk11 = stream.ReadInt32(isBigEndian); Unk12 = stream.ReadInt32(isBigEndian); Name33 = stream.ReadString16(isBigEndian); Unk14 = new float[9]; for (int i = 0; i < 9; i++) { Unk14[i] = stream.ReadSingle(isBigEndian); } Unk15 = stream.ReadByte8(); Unk16 = new float[12]; for (int i = 0; i < 12; i++) { Unk16[i] = stream.ReadSingle(isBigEndian); } }
public bool ReadFromFile(MemoryStream stream, bool isBigEndian) { Unk01 = stream.ReadInt32(isBigEndian); Name1 = stream.ReadString16(isBigEndian); Hash1 = stream.ReadUInt64(isBigEndian); Hash2 = stream.ReadUInt64(isBigEndian); Name2 = stream.ReadString16(isBigEndian); Unk02 = stream.ReadInt32(isBigEndian); Unk03 = stream.ReadInt32(isBigEndian); Unk04 = stream.ReadInt32(isBigEndian); Unk05 = stream.ReadByte8(); Unk06 = stream.ReadInt32(isBigEndian); Unk07 = stream.ReadInt32(isBigEndian); Transform = MatrixExtensions.ReadFromFile(stream, isBigEndian); Hash3 = stream.ReadUInt64(isBigEndian); Unk08 = stream.ReadSingle(isBigEndian); Hash4 = stream.ReadUInt64(isBigEndian); Hash5 = stream.ReadUInt64(isBigEndian); Name3 = stream.ReadString16(isBigEndian); Unk09 = stream.ReadInt32(isBigEndian); Unk10 = stream.ReadInt32(isBigEndian); Unk11 = stream.ReadInt32(isBigEndian); Unk12 = stream.ReadByte8(); Unk13 = stream.ReadInt32(isBigEndian); Unk14 = stream.ReadInt32(isBigEndian); Transform1 = MatrixExtensions.ReadFromFile(stream, isBigEndian); Hash6 = stream.ReadUInt64(isBigEndian); return(true); }
public override void ReadFromFile(MemoryStream stream, bool isBigEndian) { base.ReadFromFile(stream, isBigEndian); Unk06 = stream.ReadByte8(); Unk07 = stream.ReadUInt64(isBigEndian); Transform = MatrixExtensions.ReadFromFile(stream, isBigEndian); Name4 = stream.ReadString16(isBigEndian); }
public override void ReadFromFile(MemoryStream stream, bool isBigEndian) { base.ReadFromFile(stream, isBigEndian); Unk19 = stream.ReadByte8(); Unk20 = stream.ReadInt32(isBigEndian); Unk21 = stream.ReadInt32(isBigEndian); Transform1 = MatrixExtensions.ReadFromFile(stream, isBigEndian); Unk22 = stream.ReadUInt64(isBigEndian); }
public virtual void ReadFromFile(MemoryStream stream, bool isBigEndian) { name = new HashName(stream, isBigEndian); secondaryFlags = stream.ReadInt32(isBigEndian); localTransform = MatrixExtensions.ReadFromFile(stream, isBigEndian); unk3 = stream.ReadInt16(isBigEndian); parentIndex1 = new ParentStruct(stream.ReadInt32(isBigEndian)); parentIndex2 = new ParentStruct(stream.ReadInt32(isBigEndian)); unk6 = stream.ReadInt16(isBigEndian); }
public override void ReadFromFile(MemoryStream stream, bool isBigEndian) { base.ReadFromFile(stream, isBigEndian); Unk05 = stream.ReadByte8(); Unk06 = stream.ReadInt32(isBigEndian); Unk07 = stream.ReadInt32(isBigEndian); Transform = MatrixExtensions.ReadFromFile(stream, isBigEndian); Unk08 = stream.ReadSingle(isBigEndian); Unk09 = stream.ReadSingle(isBigEndian); Unk10 = stream.ReadSingle(isBigEndian); }
public void ReadFromFilePart2(MemoryStream stream, bool isBigEndian) { //do rest matrices. restTransform = new Matrix[skeleton.NumBones[0]]; for (int i = 0; i != restTransform.Length; i++) { restTransform[i] = MatrixExtensions.ReadFromFile(stream, isBigEndian); } //unknown transform. unkTransform = MatrixExtensions.ReadFromFile(stream, isBigEndian); //attachments. int length1 = stream.ReadInt32(isBigEndian); attachmentReferences = new AttachmentReference[length1]; for (int i = 0; i != length1; i++) { attachmentReferences[i] = new AttachmentReference(stream, isBigEndian); } //unknwon. unkFlags = stream.ReadUInt32(isBigEndian); physSplitSize = stream.ReadInt32(isBigEndian); hitBoxSize = stream.ReadInt32(isBigEndian); if (physSplitSize > 0) { nPhysSplits = stream.ReadInt16(isBigEndian); } else { nPhysSplits = 0; } int totalSplits = 0; blendMeshSplits = new WeightedByMeshSplit[nPhysSplits]; for (int i = 0; i != nPhysSplits; i++) { blendMeshSplits[i] = new WeightedByMeshSplit(stream, isBigEndian); int index = blendInfo.BoneIndexInfos[0].IDs[blendMeshSplits[i].BlendIndex]; blendMeshSplits[i].JointName = skeleton.BoneNames[index].ToString(); totalSplits += blendMeshSplits[i].Data.Length; } hitBoxInfo = new HitBoxInfo[totalSplits]; for (int i = 0; i != hitBoxInfo.Length; i++) { hitBoxInfo[i] = new HitBoxInfo(stream, isBigEndian); } }
public bool ReadFromFile(MemoryStream stream, bool isBigEndian) { Unk01 = stream.ReadInt32(isBigEndian); Name1 = stream.ReadString16(isBigEndian); Hash1 = stream.ReadUInt64(isBigEndian); Hash2 = stream.ReadUInt64(isBigEndian); Name2 = stream.ReadString16(isBigEndian); Unk02 = stream.ReadInt32(isBigEndian); Unk03 = stream.ReadInt32(isBigEndian); Unk04 = stream.ReadInt32(isBigEndian); Unk05 = stream.ReadByte8(); Unk06 = stream.ReadInt32(isBigEndian); Unk07 = stream.ReadInt32(isBigEndian); Transform = MatrixExtensions.ReadFromFile(stream, isBigEndian); Unk09 = stream.ReadInt32(isBigEndian); Unk10 = stream.ReadInt32(isBigEndian); Unk08 = new float[12]; for (int i = 0; i < 12; i++) { Unk08[i] = stream.ReadSingle(isBigEndian); } Unk11 = stream.ReadInt32(isBigEndian); Unk12 = stream.ReadInt32(isBigEndian); Name3 = stream.ReadString16(isBigEndian); Unk14 = new float[20]; for (int i = 0; i < 20; i++) { Unk14[i] = stream.ReadSingle(isBigEndian); } Unk15 = new string[3]; for (int i = 0; i < 3; i++) { Unk15[i] = stream.ReadString16(isBigEndian); } Hash4 = stream.ReadUInt64(isBigEndian); Hash5 = stream.ReadUInt64(isBigEndian); Name4 = stream.ReadString16(isBigEndian); Unk16 = stream.ReadInt32(isBigEndian); Unk17 = stream.ReadInt32(isBigEndian); Unk18 = stream.ReadInt32(isBigEndian); Unk19 = stream.ReadByte8(); Unk20 = stream.ReadInt32(isBigEndian); Unk21 = stream.ReadInt32(isBigEndian); Transform1 = MatrixExtensions.ReadFromFile(stream, isBigEndian); Unk22 = stream.ReadUInt64(isBigEndian); return(true); }
public override void ReadFromFile(MemoryStream stream, bool isBigEndian) { base.ReadFromFile(stream, isBigEndian); Unk14 = stream.ReadByte8(); Hash6 = stream.ReadUInt64(isBigEndian); if (Hash6 != 0) { Hash7 = stream.ReadUInt64(isBigEndian); Transform1 = MatrixExtensions.ReadFromFile(stream, isBigEndian); } else { Transform1 = MatrixExtensions.ReadFromFile(stream, isBigEndian); Hash7 = stream.ReadUInt64(isBigEndian); } }
public virtual void ReadFromFile(MemoryStream stream, bool isBigEndian) { name = new Hash(stream, isBigEndian); secondaryFlags = stream.ReadInt32(isBigEndian); localTransform = MatrixExtensions.ReadFromFile(stream, isBigEndian); unk3 = stream.ReadInt16(isBigEndian); parentIndex1 = new ParentStruct(stream.ReadInt32(isBigEndian)); parentIndex2 = new ParentStruct(stream.ReadInt32(isBigEndian)); unk6 = stream.ReadInt16(isBigEndian); if (SceneData.FrameProperties != null) { if (SceneData.FrameProperties.FrameExtraData.ContainsKey(name.uHash)) { extraData = SceneData.FrameProperties.FrameExtraData[name.uHash].Data; } } }
public void ReadFromFile(MemoryStream stream, bool isBigEndian) { transform = MatrixExtensions.ReadFromFile(stream, isBigEndian); bounds = BoundingBoxExtenders.ReadFromFile(stream, isBigEndian); isValid = stream.ReadByte8(); }
public void ReadFromFile(MemoryStream stream, bool isBigEndian) { //all the same values? for (int i = 0; i != numBones.Length; i++) { numBones[i] = stream.ReadInt32(isBigEndian); } numBlendIDs = stream.ReadInt32(isBigEndian); numLods = stream.ReadInt32(isBigEndian); //unknown lod data; unkLodData = new int[numLods]; for (int i = 0; i != unkLodData.Length; i++) { unkLodData[i] = stream.ReadInt32(isBigEndian); } idType = stream.ReadByte8(); //Bone Names and LOD data. boneNames = new Hash[numBones[0]]; for (int i = 0; i != boneNames.Length; i++) { boneNames[i] = new Hash(stream, isBigEndian); } //Matrices; matrices1 = new Matrix[numBones[1]]; matrices2 = new Matrix[numBones[3]]; for (int i = 0; i != matrices1.Length; i++) { matrices1[i] = MatrixExtensions.ReadFromFile(stream, isBigEndian); } numUnkCount2 = stream.ReadInt32(isBigEndian); boneLODUsage = stream.ReadBytes(numUnkCount2); for (int i = 0; i != matrices2.Length; i++) { matrices2[i] = MatrixExtensions.ReadFromFile(stream, isBigEndian); } //BoneMappings. mappingForBlendingInfos = new MappingForBlendingInfo[numLods]; for (int i = 0; i != mappingForBlendingInfos.Length; i++) { mappingForBlendingInfos[i].Bounds = new BoundingBox[numBones[2]]; for (int x = 0; x != mappingForBlendingInfos[i].Bounds.Length; x++) { mappingForBlendingInfos[i].Bounds[x] = BoundingBoxExtenders.ReadFromFile(stream, isBigEndian); } if (stream.ReadByte() != 0) { throw new System.Exception("oops"); } mappingForBlendingInfos[i].RefToUsageArray = stream.ReadBytes(numBones[2]); mappingForBlendingInfos[i].UsageArray = stream.ReadBytes(unkLodData[i]); } }