public bool IsPositionListIdentical(CollisionCameraData other) { var a = PositionList; var b = other.PositionList; if (a.Count != b.Count) { return(false); } for (int i = 0; i < a.Count; i++) { if (!a[i].Data.SequenceEqual(b[i].Data)) { return(false); } } return(true); }
public void Initialize(BinaryReader br) { long seekBack; byte[] data; //initialize header data = new byte[HEADER_SIZE]; seekBack = br.Seek(HeaderOffset.Offset); br.Read(data, 0, HEADER_SIZE); InitializeHeader(data); //initialize polygon list data = new byte[CollisionPolygon.SIZE]; br.Seek(PolyArray.Offset); for (int i = 0; i < Polys; i++) { br.Read(data, 0, CollisionPolygon.SIZE); PolyList.Add(new CollisionPolygon(data)); } //initialize polygon types data = new byte[CollisionPolyType.SIZE]; br.Seek(PolyTypeArray.Offset); PolyTypes = GetPolygonTypeListLength(); for (int i = 0; i < PolyTypes; i++) { br.Read(data, 0, CollisionPolyType.SIZE); int hi = Endian.ConvertInt32(data, 0); int low = Endian.ConvertInt32(data, 4); PolyTypeList.Add(new CollisionPolyType(hi, low)); } //initialize vertex list br.Seek(VertexArray.Offset); for (int i = 0; i < Vertices; i++) { VertexList.Add(new Vector3 <short>(br.ReadBigInt16(), br.ReadBigInt16(), br.ReadBigInt16())); } //initialize camera data if (CameraDataArray != 0) { br.Seek(CameraDataArray.Offset); CameraDatas = GetCameraDataListLength(); for (int i = 0; i < CameraDatas; i++) { var camData = new CollisionCameraData(br); CameraDataList.Add(camData); if (CameraDataMin == 0 || (camData.PositionAddress != 0 && camData.PositionAddress.Offset < CameraDataMin.Offset)) { CameraDataMin = camData.PositionAddress; } } } //initialize water box data if (WaterBoxes > 0) { br.Seek(WaterBoxesArray.Offset); for (int i = 0; i < WaterBoxes; i++) { data = br.ReadBytes(CollisionWaterBox.SIZE); WaterBoxList.Add(new CollisionWaterBox(data)); } } br.Seek(seekBack); }