| 38 | } |
| 39 | |
| 40 | DataDescription DescriptionEditService::createHex(CreateHexParameters const& parameters) |
| 41 | { |
| 42 | DataDescription result; |
| 43 | auto creatureId = parameters._randomCreatureId ? toInt(NumberGenerator::get().getRandomInt(std::numeric_limits<int>::max())) : 0; |
| 44 | auto incY = sqrt(3.0) * parameters._cellDistance / 2.0; |
| 45 | for (int j = 0; j < parameters._layers; ++j) { |
| 46 | for (int i = -(parameters._layers - 1); i < parameters._layers - j; ++i) { |
| 47 | |
| 48 | //create cell: upper layer |
| 49 | result.addCell(CellDescription() |
| 50 | .setId(NumberGenerator::get().getId()) |
| 51 | .setEnergy(parameters._energy) |
| 52 | .setStiffness(parameters._stiffness) |
| 53 | .setPos({toFloat(i * parameters._cellDistance + j * parameters._cellDistance / 2.0), toFloat(-j * incY)}) |
| 54 | .setMaxConnections(parameters._maxConnections) |
| 55 | .setColor(parameters._color) |
| 56 | .setBarrier(parameters._barrier) |
| 57 | .setCreatureId(creatureId)); |
| 58 | |
| 59 | //create cell: under layer (except for 0-layer) |
| 60 | if (j > 0) { |
| 61 | result.addCell(CellDescription() |
| 62 | .setId(NumberGenerator::get().getId()) |
| 63 | .setEnergy(parameters._energy) |
| 64 | .setStiffness(parameters._stiffness) |
| 65 | .setPos({toFloat(i * parameters._cellDistance + j * parameters._cellDistance / 2.0), toFloat(j * incY)}) |
| 66 | .setMaxConnections(parameters._maxConnections) |
| 67 | .setColor(parameters._color) |
| 68 | .setBarrier(parameters._barrier) |
| 69 | .setCreatureId(creatureId)); |
| 70 | } |
| 71 | } |
| 72 | } |
| 73 | |
| 74 | reconnectCells(result, parameters._cellDistance * 1.5f); |
| 75 | if (parameters._removeStickiness) { |
| 76 | removeStickiness(result); |
| 77 | } |
| 78 | result.setCenter(parameters._center); |
| 79 | |
| 80 | return result; |
| 81 | } |
| 82 | |
| 83 | DataDescription DescriptionEditService::createUnconnectedCircle(CreateUnconnectedCircleParameters const& parameters) |
| 84 | { |
no test coverage detected