void BuildGroupInTheFloor(int floor) { groups.BeginRecord(); for (var y = 0; y < voxelBuilder.CountY(); ++y) { var lines = GetLines(floor, y); for (var i = 0; i < lines.Count; ++i) //1個line會對映到1個group { var group = CreateGroup(); var voxels = lines[i]; var elementList = new List <Element>(); for (var k = 0; k < voxels.Length; ++k) { var element = CreateElement(); var voxel = voxels[k]; element.Set(voxel); elementList.Add(element); //為了之後建立relation方便 voxel.group = group; voxel.element = element; } var voxelBegin = voxels[0]; var voxelEnd = voxels[voxels.Length - 1]; group.Setpos(voxelBegin); group.Set(voxelBegin.floor, voxelBegin.y, voxelBegin.x, voxelEnd.x); group.AddElements(elementList.ToArray()); group.SetGroupRelationBuilder(this); groups.Add(group); } } groups.EndRecord(floor); }
static void DrawMap(VoxelBuilder target) { var nowHeight = target.GetNowFlowerHeight(); var original = target.transform.position + nowHeight; //畫點 var offsetX = 0.5f * Vector3.right * VoxelBuilder.xUnit; var offsetY = 0.5f * Vector3.forward * VoxelBuilder.yUnit; var offsetXY = offsetX + offsetY; var nowFloorIndex = target.GetNowFloorIndex(); if (!target.IsValidatedFloorIndex(nowFloorIndex)) { return; } var CountY = target.CountY(); var CountX = target.CountX(); for (var y = 0; y < CountY; ++y) { var from = original + offsetXY + offsetY * y; for (var x = 0; x < CountX; ++x) { ChoseColor(target, nowFloorIndex, y, x); Gizmos.DrawSphere(from, PointR); from = from + offsetX; } } }