public SoundPathPoint(EndianReader reader) { X = reader.ReadSingle(); reader.Skip(4); // Unknown Y = reader.ReadSingle(); Duration = reader.ReadInt32(); }
public float unk11; //almost always 1 #endregion Fields #region Constructors public Block_0A03(EndianReader reader) : base(reader, 0x0A03) { unk11 = reader.ReadSingle(); }
public Vector Data; //relative position coords #endregion Fields #region Constructors public PosBlock_FA02(EndianReader reader) : base(reader, 0xFA02) { Data = new Vector(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle()); }
public MatrixBlock_F900(EndianReader reader) : base(reader, 0xF900) { var m11 = reader.ReadSingle(); var m12 = reader.ReadSingle(); var m13 = reader.ReadSingle(); reader.ReadSingle(); //0.0f var m21 = reader.ReadSingle(); var m22 = reader.ReadSingle(); var m23 = reader.ReadSingle(); reader.ReadSingle(); //0.0f var m31 = reader.ReadSingle(); var m32 = reader.ReadSingle(); var m33 = reader.ReadSingle(); reader.ReadSingle(); //0.0f var m41 = reader.ReadSingle(); var m42 = reader.ReadSingle(); var m43 = reader.ReadSingle(); reader.ReadSingle(); //1.0f Data = new Matrix4x3( m11, m12, m13, m21, m22, m23, m31, m32, m33, m41, m42, m43); }
public int DataCount; //always 1 #endregion Fields #region Constructors public BoundsBlock_1D01(EndianReader reader) : base(reader, 0x1D01) { DataCount = reader.ReadInt32(); var min = new Vector(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle()); var max = new Vector(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle()); Data.XBounds = new Range<float>(min.X, max.X); Data.YBounds = new Range<float>(min.Y, max.Y); Data.ZBounds = new Range<float>(min.Z, max.Z); }
public BoneBlock_E902(EndianReader reader) : base(reader, 0xE902) { unk00 = reader.ReadSingle(); _FA02 = new PosBlock_FA02(reader); if (reader.PeekUInt16() == 0xEA02) _EA02 = new unkBlock_XXXX(reader, 0xEA02); _FB02 = new Block_FB02(reader); if (reader.PeekUInt16() == 0xEB02) _EB02 = new unkBlock_XXXX(reader, 0xEB02); _FC02 = new Block_FC02(reader); if (reader.PeekUInt16() == 0xEC02) _EC02 = new unkBlock_XXXX(reader, 0xEC02); _0A03 = new Block_0A03(reader); if (reader.PeekUInt16() == 0xED02) _ED02 = new unkBlock_XXXX(reader, 0xED02); //technically not part of the block reader.ReadInt16(); //0100 reader.ReadInt32(); //address }
public float unk08, unk09, unk10; //almost always 1/1/1 #endregion Fields #region Constructors public Block_FC02(EndianReader reader) : base(reader, 0xFC02) { unk08 = reader.ReadSingle(); unk09 = reader.ReadSingle(); unk10 = reader.ReadSingle(); }
public Block_2002(EndianReader reader) : base(reader, 0x2002) { unk0 = reader.ReadInt32(); // ] unk1 = reader.ReadInt32(); // ] unknown purpose, often all 60 unk2 = reader.ReadInt32(); // ] var min = new Vector(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle()); var max = new Vector(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle()); Bounds = new BoundingBox() { XBounds = new Range<float>(min.X, max.X), YBounds = new Range<float>(min.Y, max.Y), ZBounds = new Range<float>(min.Z, max.Z), }; unkPos0 = new Vector(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle()); }
public Block_0503(EndianReader reader) : base(reader, 0x0503) { reader.ReadInt16(); //0D03 reader.ReadInt32(); //EOB DataCount = reader.ReadInt32(); unk0 = reader.ReadInt16(); //always 3 unk1 = reader.ReadByte(); //0, 2 or 3 if (unk1 != 3) { for (int i = 0; i < DataCount; i++) { var m11 = reader.ReadSingle(); var m12 = reader.ReadSingle(); var m13 = reader.ReadSingle(); reader.ReadSingle(); //0.0f var m21 = reader.ReadSingle(); var m22 = reader.ReadSingle(); var m23 = reader.ReadSingle(); reader.ReadSingle(); //0.0f var m31 = reader.ReadSingle(); var m32 = reader.ReadSingle(); var m33 = reader.ReadSingle(); reader.ReadSingle(); //0.0f var m41 = reader.ReadSingle(); var m42 = reader.ReadSingle(); var m43 = reader.ReadSingle(); reader.ReadSingle(); //1.0f Data.Add( new Matrix4x3( m11, m12, m13, m21, m22, m23, m31, m32, m33, m41, m42, m43)); } } //technically not part of the block reader.ReadInt16(); //0100 reader.ReadInt32(); //address }
public float[] unkf = new float[8]; //material related #endregion Fields #region Constructors public Block_2001(EndianReader reader) : base(reader, 0x2001) { for (int i = 0; i < 8; i++) unkf[i] = reader.ReadSingle(); }
public float unkf0, unkf1; //material related #endregion Fields #region Constructors public Block_1C01(EndianReader reader) : base(reader, 0x1C01) { unkf0 = reader.ReadSingle(); unkf1 = reader.ReadSingle(); }
public VertexBlock_F100(EndianReader reader, bool loadMesh, int geomUnk01) : base(reader, 0xF100) { DataCount = reader.ReadInt32(); Data = new Vertex[DataCount]; if (DataCount == 0) return; if (geomUnk01 != 134 && geomUnk01 != 142) { CentreX = reader.ReadInt16(); CentreY = reader.ReadInt16(); CentreZ = reader.ReadInt16(); RadiusX = reader.ReadInt16(); RadiusY = reader.ReadInt16(); RadiusZ = reader.ReadInt16(); } if (!loadMesh) reader.SeekTo(EOBOffset); else for (int i = 0; i < DataCount; i++) { Vertex v; if (geomUnk01 == 134 || geomUnk01 == 142) { v = new Vertex() { FormatName = "S3D_World" }; var data = new Vector(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle()); v.Values.Add(new VertexValue(data, VertexValue.ValueType.Float32_3, "position", 0)); } else { v = new Vertex() { FormatName = "S3D_Compressed" }; var data = new Vector(reader.ReadInt16(), reader.ReadInt16(), reader.ReadInt16(), reader.ReadInt16()); v.Values.Add(new VertexValue(data, VertexValue.ValueType.Int16_N4, "position", 0)); } Data[i] = v; } }
public SoundPathRandomRange(EndianReader reader) { HorizontalRange = reader.ReadSingle(); VerticalRange = reader.ReadSingle(); }
public RTPCPoint(EndianReader reader) { X = reader.ReadSingle(); Y = reader.ReadSingle(); CurveShape = (RTPCCurveShape)reader.ReadInt32(); }
public VertexValue(XmlNode Node, EndianReader reader) { if (Convert.ToInt32(Node.Attributes["stream"].Value) > 0) throw new NotSupportedException("Multi-streamed vertices not supported"); Type = (ValueType)Enum.Parse(typeof(ValueType), Node.Attributes["type"].Value); Usage = Node.Attributes["usage"].Value; UsageIndex = Convert.ToInt32(Node.Attributes["usageIndex"].Value); switch (Type) { case ValueType.Float32_2: Data = new Vector(reader.ReadSingle(), reader.ReadSingle()); break; case ValueType.Float32_3: Data = new Vector(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle()); break; case ValueType.Float32_4: Data = new Vector(reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle(), reader.ReadSingle()); break; case ValueType.Int8_N4: Data = new Vector((float)reader.ReadByte() / (float)0x7F, (float)reader.ReadByte() / (float)0x7F, (float)reader.ReadByte() / (float)0x7F, (float)reader.ReadByte() / (float)0x7F); break; case ValueType.UInt8_2: Data = new Vector(reader.ReadByte(), reader.ReadByte(), 0, 0); break; case ValueType.UInt8_3: Data = new Vector(reader.ReadByte(), reader.ReadByte(), reader.ReadByte(), 0); break; case ValueType.UInt8_4: Data = Vector.FromUByte4(reader.ReadUInt32()); break; case ValueType.UInt8_N2: Data = new Vector((float)reader.ReadByte() / (float)0xFF, (float)reader.ReadByte() / (float)0xFF, 0, 0); break; case ValueType.UInt8_N3: Data = new Vector((float)reader.ReadByte() / (float)0xFF, (float)reader.ReadByte() / (float)0xFF, (float)reader.ReadByte() / (float)0xFF, 0); break; case ValueType.UInt8_N4: Data = Vector.FromUByteN4(reader.ReadUInt32()); break; case ValueType.Int16_N3: Data = new Vector(((float)reader.ReadInt16() + (float)0x7FFF) / (float)0xFFFF, ((float)reader.ReadInt16() + (float)0x7FFF) / (float)0xFFFF, ((float)reader.ReadInt16() + (float)0x7FFF) / (float)0xFFFF, 0); break; case ValueType.Int16_N4: Data = new Vector(((float)reader.ReadInt16() + (float)0x7FFF) / (float)0xFFFF, ((float)reader.ReadInt16() + (float)0x7FFF) / (float)0xFFFF, ((float)reader.ReadInt16() + (float)0x7FFF) / (float)0xFFFF, ((float)reader.ReadInt16() + (float)0x7FFF) / (float)0xFFFF); break; case ValueType.UInt16_2: Data = new Vector(reader.ReadUInt16(), reader.ReadUInt16()); break; case ValueType.UInt16_4: Data = new Vector(reader.ReadUInt16(), reader.ReadUInt16(), reader.ReadUInt16(), reader.ReadUInt16()); break; case ValueType.UInt16_N2: Data = new Vector((float)reader.ReadUInt16() / (float)0xFFFF, (float)reader.ReadUInt16() / (float)0xFFFF); break; case ValueType.UInt16_N4: Data = new Vector((float)reader.ReadUInt16() / (float)0xFFFF, (float)reader.ReadUInt16() / (float)0xFFFF, (float)reader.ReadUInt16() / (float)0xFFFF, (float)reader.ReadUInt16() / (float)0xFFFF); break; case ValueType.DecN4: Data = Vector.FromDecN4(reader.ReadUInt32()); break; case ValueType.UDecN4: Data = Vector.FromUDecN4(reader.ReadUInt32()); break; case ValueType.DHenN3: Data = Vector.FromDHenN3(reader.ReadUInt32()); break; case ValueType.UDHenN3: Data = Vector.FromUDHenN3(reader.ReadUInt32()); break; case ValueType.HenDN3: Data = Vector.FromHenDN3(reader.ReadUInt32()); break; case ValueType.UHenDN3: Data = Vector.FromUHenDN3(reader.ReadUInt32()); break; case ValueType.Float16_2: Data = new Vector(Half.ToHalf(reader.ReadUInt16()), Half.ToHalf(reader.ReadUInt16())); break; case ValueType.Float16_4: Data = new Vector(Half.ToHalf(reader.ReadUInt16()), Half.ToHalf(reader.ReadUInt16()), Half.ToHalf(reader.ReadUInt16()), Half.ToHalf(reader.ReadUInt16())); break; case ValueType.D3DColour: reader.ReadUInt32(); break; } }