public static MatrixData SaveMatrix(MetaTileMap MetaTileMap, bool SingleSave = true, Vector3?Localboundarie1 = null, Vector3?Localboundarie2 = null, bool UseInstance = false) { if (SingleSave) { UnserialisedObjectReferences.Clear(); MonoToID.Clear(); FieldsToRefresh.Clear(); IDStatic = 0; IDmatrixStatic = 0; } MatrixData matrixData = new MatrixData(); matrixData.ObjectMapData = SaveObjects(MetaTileMap, Localboundarie1, Localboundarie2, UseInstance); matrixData.TileMapData = SaveTileMap(MetaTileMap, Localboundarie1, Localboundarie2); matrixData.MatrixName = MetaTileMap.matrix.NetworkedMatrix.gameObject.name; matrixData.MatrixID = IDmatrixStatic; matrixData.Location = Math.Round(MetaTileMap.matrix.NetworkedMatrix.transform.localPosition.x, 2) + "┼" + Math.Round(MetaTileMap.matrix.NetworkedMatrix.transform.localPosition.y, 2) + "┼" + Math.Round(MetaTileMap.matrix.NetworkedMatrix.transform.localPosition.z, 2) + "┼"; var Angles = MetaTileMap.matrix.NetworkedMatrix.transform.eulerAngles; matrixData.Location = matrixData.Location + Math.Round(Angles.x, 2) + "ø" + Math.Round(Angles.y, 2) + "ø" + Math.Round(Angles.z, 2) + "ø"; IDmatrixStatic++; if (SingleSave) { foreach (var MFD in UnserialisedObjectReferences) { if (MonoToID.ContainsKey(MFD.Item1)) { MFD.Item2.AddID(MonoToID[MFD.Item1]); } else { Logger.LogError("Missing money behaviour in MonoToID"); } } UnserialisedObjectReferences.Clear(); MonoToID.Clear(); foreach (var FD in FieldsToRefresh) { FD.Serialise(); } FieldsToRefresh.Clear(); } return(matrixData); }
public static MapData SaveMap(List <MetaTileMap> MetaTileMaps, string MapName = "Unknown map name your maps dam it") { var OutMapData = new MapData(); UnserialisedObjectReferences.Clear(); MonoToID.Clear(); FieldsToRefresh.Clear(); IDStatic = 0; IDmatrixStatic = 0; OutMapData.MapName = MapName; foreach (var MetaTileMap in MetaTileMaps) { OutMapData.ContainedMatrices.Add(SaveMatrix(MetaTileMap, false)); } //move outside if multiple matrices foreach (var MFD in UnserialisedObjectReferences) { if (MonoToID.ContainsKey(MFD.Item1)) { MFD.Item2.AddID(MonoToID[MFD.Item1]); MFD.Item2.RemoveRuntimeReference(MFD.Item1); } else { Logger.LogError("Missing money behaviour in MonoToID"); } } UnserialisedObjectReferences.Clear(); MonoToID.Clear(); foreach (var FD in FieldsToRefresh) { FD.Serialise(); } FieldsToRefresh.Clear(); return(OutMapData); }