public override void SaveBlueprint() { blueprints = new FancyModelRoomBlueprints(); RoomEdge edge0 = new RoomEdge(); edge0.direction = Direction.NORTH; edge0.length = 5; blueprints.edges.Add(edge0); RoomEdge edge1 = new RoomEdge(); edge0.direction = Direction.WEST; edge0.length = 4; blueprints.edges.Add(edge1); RoomEdge edge2 = new RoomEdge(); edge0.direction = Direction.EAST; edge0.length = 5; blueprints.edges.Add(edge2); RoomEdge edge3 = new RoomEdge(); edge0.direction = Direction.SOUTH; edge0.length = 4; blueprints.edges.Add(edge3); string blueprint_json = JsonUtility.ToJson(blueprints); Parser.SaveResourceTextfile(blueprint_json, Parser.ROOM_GENERATOR_PATH, FULL_FILENAME); Debug.Log("Saved blueprints to " + Parser.ROOM_GENERATOR_PATH + FULL_FILENAME + ".json"); }
private void CreateRoomEdge(Room from, Room to) { var edge = new RoomEdge { Room = from, AdjacentRoom = to, RoomId = from.Id, AdjacentRoomId = to.Id }; _context.RoomEdges.Add(edge); }
//메인 방들을 연결한 최소 신장 트리를 구하고 보스방과 플레이어방을 선택. List<RoomEdge> GetMST(List<Room> mainRoomList) { List<RoomVertex> roomVertexList = new List<RoomVertex>(); List<RoomEdge> roomEdgeList = new List<RoomEdge>(); //정점을 만듬 for (int i = 0; i < mainRoomList.Count; ++i) { var vertex = new RoomVertex(mainRoomList[i]); roomVertexList.Add(vertex); } //모든 정점을 간선으로 연결 for (int i = 0; i < roomVertexList.Count - 1; ++i) { for (int j = i + 1; j < roomVertexList.Count; ++j) { RoomVertex vertexA = roomVertexList[i]; RoomVertex vertexB = roomVertexList[j]; float weight = (mainRoomList[i].CachedTransform.position - mainRoomList[j].CachedTransform.position).sqrMagnitude; RoomEdge edge = new RoomEdge(vertexA, vertexB, (int)weight); roomEdgeList.Add(edge); } } //그래프로 만든뒤 MST를 구한다. RoomGraph graph = new RoomGraph(roomVertexList, roomEdgeList); var mst = graph.GetMST(); //플레이어 방과 보스방을고름 SelectPlayerRoomAndBossRoom(mst, roomVertexList); return mst; }