MCPcopy Create free account
hub / github.com/chrxh/alien / gridMultiply

Method gridMultiply

source/EngineInterface/DescriptionEditService.cpp:237–264  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

235}
236
237DataDescription DescriptionEditService::gridMultiply(DataDescription const& input, GridMultiplyParameters const& parameters)
238{
239 DataDescription result;
240 auto clone = input;
241 auto cloneWithoutMetadata = input;
242 removeMetadata(cloneWithoutMetadata);
243 for (int i = 0; i < parameters._horizontalNumber; ++i) {
244 for (int j = 0; j < parameters._verticalNumber; ++j) {
245 auto templateData = [&] {
246 if (i == 0 && j == 0) {
247 return clone;
248 }
249 return cloneWithoutMetadata;
250 }();
251 templateData.shift({i * parameters._horizontalDistance, j * parameters._verticalDistance});
252 templateData.rotate(i * parameters._horizontalAngleInc + j * parameters._verticalAngleInc);
253 templateData.accelerate(
254 {i * parameters._horizontalVelXinc + j * parameters._verticalVelXinc, i * parameters._horizontalVelYinc + j * parameters._verticalVelYinc},
255 i * parameters._horizontalAngularVelInc + j * parameters._verticalAngularVelInc);
256
257 generateNewIds(templateData);
258 generateNewCreatureIds(templateData);
259 result.add(templateData);
260 }
261 }
262
263 return result;
264}
265
266DataDescription DescriptionEditService::randomMultiply(
267 DataDescription const& input,

Callers 1

onBuildMethod · 0.80

Calls 4

generateNewIdsFunction · 0.85
shiftMethod · 0.80
rotateMethod · 0.80
accelerateMethod · 0.80

Tested by

no test coverage detected