public static SerializedCellDefinition Serialize(CellDefinition cell) { if (cell == null) { return null; } var serializedCell = new SerializedCellDefinition(); if (cell.wall != null) { serializedCell.wall = cell.wall.Serialize(); } if (cell.floor != null) { serializedCell.floor = cell.floor.Serialize(); } if (cell.containedObject != null) { serializedCell.containedObject = cell.containedObject.Serialize(); } return serializedCell; }
public static CellDefinition Deserialize(IntVector3 position, Chunk parentChunk, SerializedCellDefinition serializedCell) { var cell = new CellDefinition(position, parentChunk); if (serializedCell.wall != null) { cell.wall = new WallObject(); cell.wall.Deserialize(position, serializedCell.wall); } if (serializedCell.floor != null) { cell.floor = new FloorObject(); cell.floor.Deserialize(position, serializedCell.floor); } if (serializedCell.containedObject != null) { var type = GameRegistry.Instance.GetObjectType(serializedCell.containedObject.Id); cell.containedObject = (BaseObject) Activator.CreateInstance(type); cell.containedObject.Deserialize(position, serializedCell.containedObject); } parentChunk.SetCellAt(position, cell); return cell; }