Skip to content

Commit 08c2a7a

Browse files
authored
Merge pull request #696 from chrxh/copilot/update-cell-type-generator
Remove legacy serializer compatibility paths
2 parents 1067fa2 + ef2437e commit 08c2a7a

19 files changed

Lines changed: 103 additions & 128 deletions

source/EngineImpl/DescConverterService.cpp

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -403,16 +403,15 @@ ObjectDesc DescConverterService::createObjectDesc(TOs const& to, int objectIndex
403403
case CellType_Generator: {
404404
GeneratorDesc generator;
405405
generator._additive = objectTO.typeData.cell.cellTypeData.generator.additive;
406-
generator._valueOffset = objectTO.typeData.cell.cellTypeData.generator.valueOffset;
406+
generator._minValue = objectTO.typeData.cell.cellTypeData.generator.minValue;
407+
generator._maxValue = objectTO.typeData.cell.cellTypeData.generator.maxValue;
407408
generator._timeOffset = objectTO.typeData.cell.cellTypeData.generator.timeOffset;
408409
if (objectTO.typeData.cell.cellTypeData.generator.mode == GeneratorMode_SquareSignal) {
409410
SquareSignalDesc squareSignal;
410-
squareSignal._amplitude = objectTO.typeData.cell.cellTypeData.generator.modeData.squareSignal.amplitude;
411411
squareSignal._period = objectTO.typeData.cell.cellTypeData.generator.modeData.squareSignal.period;
412412
generator._mode = squareSignal;
413413
} else if (objectTO.typeData.cell.cellTypeData.generator.mode == GeneratorMode_SawtoothSignal) {
414414
SawtoothSignalDesc sawtoothSignal;
415-
sawtoothSignal._amplitude = objectTO.typeData.cell.cellTypeData.generator.modeData.sawtoothSignal.amplitude;
416415
sawtoothSignal._period = objectTO.typeData.cell.cellTypeData.generator.modeData.sawtoothSignal.period;
417416
generator._mode = sawtoothSignal;
418417
}
@@ -682,16 +681,15 @@ NodeDesc DescConverterService::createNodeDesc(TOs const& to, NodeTO const* nodeT
682681
case CellType_Generator: {
683682
GeneratorGenomeDesc generatorDesc;
684683
generatorDesc._additive = nodeTO->cellTypeData.generator.additive;
685-
generatorDesc._valueOffset = nodeTO->cellTypeData.generator.valueOffset;
684+
generatorDesc._minValue = nodeTO->cellTypeData.generator.minValue;
685+
generatorDesc._maxValue = nodeTO->cellTypeData.generator.maxValue;
686686
generatorDesc._timeOffset = nodeTO->cellTypeData.generator.timeOffset;
687687
if (nodeTO->cellTypeData.generator.mode == GeneratorMode_SquareSignal) {
688688
SquareSignalGenomeDesc squareSignal;
689-
squareSignal._amplitude = nodeTO->cellTypeData.generator.modeData.squareSignal.amplitude;
690689
squareSignal._period = nodeTO->cellTypeData.generator.modeData.squareSignal.period;
691690
generatorDesc._mode = squareSignal;
692691
} else if (nodeTO->cellTypeData.generator.mode == GeneratorMode_SawtoothSignal) {
693692
SawtoothSignalGenomeDesc sawtoothSignal;
694-
sawtoothSignal._amplitude = nodeTO->cellTypeData.generator.modeData.sawtoothSignal.amplitude;
695693
sawtoothSignal._period = nodeTO->cellTypeData.generator.modeData.sawtoothSignal.period;
696694
generatorDesc._mode = sawtoothSignal;
697695
}
@@ -1037,16 +1035,15 @@ void DescConverterService::convertGenomeToTO(
10371035
auto const& generatorDesc = std::get<GeneratorGenomeDesc>(nodeDesc._cellType);
10381036
auto& generatorTO = nodeTO.cellTypeData.generator;
10391037
generatorTO.additive = generatorDesc._additive;
1040-
generatorTO.valueOffset = generatorDesc._valueOffset;
1038+
generatorTO.minValue = generatorDesc._minValue;
1039+
generatorTO.maxValue = generatorDesc._maxValue;
10411040
generatorTO.timeOffset = generatorDesc._timeOffset;
10421041
generatorTO.mode = generatorDesc.getMode();
10431042
if (generatorTO.mode == GeneratorMode_SquareSignal) {
10441043
auto const& squareSignalDesc = std::get<SquareSignalGenomeDesc>(generatorDesc._mode);
1045-
generatorTO.modeData.squareSignal.amplitude = squareSignalDesc._amplitude;
10461044
generatorTO.modeData.squareSignal.period = squareSignalDesc._period;
10471045
} else if (generatorTO.mode == GeneratorMode_SawtoothSignal) {
10481046
auto const& sawtoothSignalDesc = std::get<SawtoothSignalGenomeDesc>(generatorDesc._mode);
1049-
generatorTO.modeData.sawtoothSignal.amplitude = sawtoothSignalDesc._amplitude;
10501047
generatorTO.modeData.sawtoothSignal.period = sawtoothSignalDesc._period;
10511048
}
10521049
} break;
@@ -1350,16 +1347,15 @@ void DescConverterService::convertObjectToTO(
13501347
auto const& generatorDesc = std::get<GeneratorDesc>(cellDesc._cellType);
13511348
GeneratorTO& generatorTO = objectTO.typeData.cell.cellTypeData.generator;
13521349
generatorTO.additive = generatorDesc._additive;
1353-
generatorTO.valueOffset = generatorDesc._valueOffset;
1350+
generatorTO.minValue = generatorDesc._minValue;
1351+
generatorTO.maxValue = generatorDesc._maxValue;
13541352
generatorTO.timeOffset = generatorDesc._timeOffset;
13551353
generatorTO.mode = generatorDesc.getMode();
13561354
if (generatorTO.mode == GeneratorMode_SquareSignal) {
13571355
auto const& squareSignalDesc = std::get<SquareSignalDesc>(generatorDesc._mode);
1358-
generatorTO.modeData.squareSignal.amplitude = squareSignalDesc._amplitude;
13591356
generatorTO.modeData.squareSignal.period = squareSignalDesc._period;
13601357
} else if (generatorTO.mode == GeneratorMode_SawtoothSignal) {
13611358
auto const& sawtoothSignalDesc = std::get<SawtoothSignalDesc>(generatorDesc._mode);
1362-
generatorTO.modeData.sawtoothSignal.amplitude = sawtoothSignalDesc._amplitude;
13631359
generatorTO.modeData.sawtoothSignal.period = sawtoothSignalDesc._period;
13641360
}
13651361
generatorTO.numPulses = generatorDesc._numPulses;

source/EngineInterface/Desc.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -139,14 +139,12 @@ struct SensorDesc
139139
struct SquareSignalDesc
140140
{
141141
auto operator<=>(SquareSignalDesc const&) const = default;
142-
MEMBER(SquareSignalDesc, float, amplitude, 1.0f);
143142
MEMBER(SquareSignalDesc, int, period, 100);
144143
};
145144

146145
struct SawtoothSignalDesc
147146
{
148147
auto operator<=>(SawtoothSignalDesc const&) const = default;
149-
MEMBER(SawtoothSignalDesc, float, amplitude, 1.0f);
150148
MEMBER(SawtoothSignalDesc, int, period, 100);
151149
};
152150

@@ -158,7 +156,8 @@ struct GeneratorDesc
158156

159157
// Fixed data
160158
MEMBER(GeneratorDesc, bool, additive, false);
161-
MEMBER(GeneratorDesc, float, valueOffset, 0);
159+
MEMBER(GeneratorDesc, float, minValue, -1.0f);
160+
MEMBER(GeneratorDesc, float, maxValue, 1.0f);
162161
MEMBER(GeneratorDesc, int, timeOffset, 0);
163162
MEMBER(GeneratorDesc, GeneratorModeDesc, mode, SquareSignalDesc());
164163

source/EngineInterface/DescValidationService.cpp

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -94,18 +94,20 @@ void DescValidationService::validateAndCorrect(GenomeDesc& genome)
9494

9595
} else if (nodeType == CellType_Generator) {
9696
auto& generator = std::get<GeneratorGenomeDesc>(node._cellType);
97-
generator._valueOffset = std::clamp(generator._valueOffset, -2.0f, 2.0f);
97+
generator._minValue = std::clamp(generator._minValue, -2.0f, 2.0f);
98+
generator._maxValue = std::clamp(generator._maxValue, -2.0f, 2.0f);
99+
if (generator._minValue > generator._maxValue) {
100+
std::swap(generator._minValue, generator._maxValue);
101+
}
98102
generator._timeOffset = std::max(generator._timeOffset, 0);
99103
// Validate mode-specific data
100104
auto generatorMode = generator.getMode();
101105
if (generatorMode == GeneratorMode_SquareSignal) {
102106
auto& squareSignal = std::get<SquareSignalGenomeDesc>(generator._mode);
103107
squareSignal._period = std::max(squareSignal._period, 1);
104-
squareSignal._amplitude = std::clamp(squareSignal._amplitude, 0.0f, 2.0f);
105108
} else if (generatorMode == GeneratorMode_SawtoothSignal) {
106109
auto& sawtoothSignal = std::get<SawtoothSignalGenomeDesc>(generator._mode);
107110
sawtoothSignal._period = std::max(sawtoothSignal._period, 1);
108-
sawtoothSignal._amplitude = std::clamp(sawtoothSignal._amplitude, 0.0f, 4.0f);
109111
}
110112

111113
} else if (nodeType == CellType_Attacker) {
@@ -294,17 +296,19 @@ void DescValidationService::validateAndCorrect(ObjectDesc& object)
294296

295297
} else if (cellType == CellType_Generator) {
296298
auto& generator = std::get<GeneratorDesc>(cell._cellType);
297-
generator._valueOffset = std::clamp(generator._valueOffset, -2.0f, 2.0f);
299+
generator._minValue = std::clamp(generator._minValue, -2.0f, 2.0f);
300+
generator._maxValue = std::clamp(generator._maxValue, -2.0f, 2.0f);
301+
if (generator._minValue > generator._maxValue) {
302+
std::swap(generator._minValue, generator._maxValue);
303+
}
298304
generator._timeOffset = std::max(generator._timeOffset, 0);
299305
auto generatorMode = generator.getMode();
300306
if (generatorMode == GeneratorMode_SquareSignal) {
301307
auto& squareSignal = std::get<SquareSignalDesc>(generator._mode);
302308
squareSignal._period = std::max(squareSignal._period, 1);
303-
squareSignal._amplitude = std::clamp(squareSignal._amplitude, 0.0f, 2.0f);
304309
} else if (generatorMode == GeneratorMode_SawtoothSignal) {
305310
auto& sawtoothSignal = std::get<SawtoothSignalDesc>(generator._mode);
306311
sawtoothSignal._period = std::max(sawtoothSignal._period, 1);
307-
sawtoothSignal._amplitude = std::clamp(sawtoothSignal._amplitude, 0.0f, 4.0f);
308312
}
309313

310314
} else if (cellType == CellType_Attacker) {

source/EngineInterface/GenomeDesc.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -114,14 +114,12 @@ struct SensorGenomeDesc
114114
struct SquareSignalGenomeDesc
115115
{
116116
auto operator<=>(SquareSignalGenomeDesc const&) const = default;
117-
MEMBER(SquareSignalGenomeDesc, float, amplitude, 1.0f);
118117
MEMBER(SquareSignalGenomeDesc, int, period, 100);
119118
};
120119

121120
struct SawtoothSignalGenomeDesc
122121
{
123122
auto operator<=>(SawtoothSignalGenomeDesc const&) const = default;
124-
MEMBER(SawtoothSignalGenomeDesc, float, amplitude, 1.0f);
125123
MEMBER(SawtoothSignalGenomeDesc, int, period, 100);
126124
};
127125

@@ -132,7 +130,8 @@ struct GeneratorGenomeDesc
132130
auto operator<=>(GeneratorGenomeDesc const&) const = default;
133131

134132
MEMBER(GeneratorGenomeDesc, bool, additive, false);
135-
MEMBER(GeneratorGenomeDesc, float, valueOffset, 0);
133+
MEMBER(GeneratorGenomeDesc, float, minValue, -1.0f);
134+
MEMBER(GeneratorGenomeDesc, float, maxValue, 1.0f);
136135
MEMBER(GeneratorGenomeDesc, int, timeOffset, 0);
137136
MEMBER(GeneratorGenomeDesc, GeneratorModeGenomeDesc, mode, SquareSignalGenomeDesc());
138137

source/EngineInterface/GenomeDescHash.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,6 @@ struct std::hash<SquareSignalGenomeDesc>
113113
std::size_t operator()(SquareSignalGenomeDesc const& desc) const
114114
{
115115
std::size_t seed = 0;
116-
hash_combine(seed, desc._amplitude);
117116
hash_combine(seed, desc._period);
118117
return seed;
119118
}
@@ -125,7 +124,6 @@ struct std::hash<SawtoothSignalGenomeDesc>
125124
std::size_t operator()(SawtoothSignalGenomeDesc const& desc) const
126125
{
127126
std::size_t seed = 0;
128-
hash_combine(seed, desc._amplitude);
129127
hash_combine(seed, desc._period);
130128
return seed;
131129
}
@@ -144,7 +142,8 @@ struct std::hash<GeneratorGenomeDesc>
144142
{
145143
std::size_t seed = 0;
146144
hash_combine(seed, desc._additive);
147-
hash_combine(seed, desc._valueOffset);
145+
hash_combine(seed, desc._minValue);
146+
hash_combine(seed, desc._maxValue);
148147
hash_combine(seed, desc._timeOffset);
149148
hash_combine(seed, std::hash<GeneratorModeGenomeDesc>{}(desc._mode));
150149
return seed;

source/EngineKernels/DataAccessKernels.cu

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -116,14 +116,13 @@ namespace
116116
break;
117117
case CellType_Generator:
118118
nodeTO.cellTypeData.generator.additive = node.cellTypeData.generator.additive;
119-
nodeTO.cellTypeData.generator.valueOffset = node.cellTypeData.generator.valueOffset;
119+
nodeTO.cellTypeData.generator.minValue = node.cellTypeData.generator.minValue;
120+
nodeTO.cellTypeData.generator.maxValue = node.cellTypeData.generator.maxValue;
120121
nodeTO.cellTypeData.generator.timeOffset = node.cellTypeData.generator.timeOffset;
121122
nodeTO.cellTypeData.generator.mode = node.cellTypeData.generator.mode;
122123
if (node.cellTypeData.generator.mode == GeneratorMode_SquareSignal) {
123-
nodeTO.cellTypeData.generator.modeData.squareSignal.amplitude = node.cellTypeData.generator.modeData.squareSignal.amplitude;
124124
nodeTO.cellTypeData.generator.modeData.squareSignal.period = node.cellTypeData.generator.modeData.squareSignal.period;
125125
} else if (node.cellTypeData.generator.mode == GeneratorMode_SawtoothSignal) {
126-
nodeTO.cellTypeData.generator.modeData.sawtoothSignal.amplitude = node.cellTypeData.generator.modeData.sawtoothSignal.amplitude;
127126
nodeTO.cellTypeData.generator.modeData.sawtoothSignal.period = node.cellTypeData.generator.modeData.sawtoothSignal.period;
128127
}
129128
break;
@@ -406,14 +405,13 @@ namespace
406405
} break;
407406
case CellType_Generator: {
408407
cellTO.cellTypeData.generator.additive = cell.cellTypeData.generator.additive;
409-
cellTO.cellTypeData.generator.valueOffset = cell.cellTypeData.generator.valueOffset;
408+
cellTO.cellTypeData.generator.minValue = cell.cellTypeData.generator.minValue;
409+
cellTO.cellTypeData.generator.maxValue = cell.cellTypeData.generator.maxValue;
410410
cellTO.cellTypeData.generator.timeOffset = cell.cellTypeData.generator.timeOffset;
411411
cellTO.cellTypeData.generator.mode = cell.cellTypeData.generator.mode;
412412
if (cell.cellTypeData.generator.mode == GeneratorMode_SquareSignal) {
413-
cellTO.cellTypeData.generator.modeData.squareSignal.amplitude = cell.cellTypeData.generator.modeData.squareSignal.amplitude;
414413
cellTO.cellTypeData.generator.modeData.squareSignal.period = cell.cellTypeData.generator.modeData.squareSignal.period;
415414
} else if (cell.cellTypeData.generator.mode == GeneratorMode_SawtoothSignal) {
416-
cellTO.cellTypeData.generator.modeData.sawtoothSignal.amplitude = cell.cellTypeData.generator.modeData.sawtoothSignal.amplitude;
417415
cellTO.cellTypeData.generator.modeData.sawtoothSignal.period = cell.cellTypeData.generator.modeData.sawtoothSignal.period;
418416
}
419417
cellTO.cellTypeData.generator.numPulses = cell.cellTypeData.generator.numPulses;

source/EngineKernels/Entities.cuh

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -152,13 +152,11 @@ struct Sensor
152152

153153
struct SquareSignal
154154
{
155-
float amplitude;
156155
int period;
157156
};
158157

159158
struct SawtoothSignal
160159
{
161-
float amplitude;
162160
int period;
163161
};
164162

@@ -171,7 +169,8 @@ union GeneratorModeData
171169
struct Generator
172170
{
173171
bool additive;
174-
float valueOffset;
172+
float minValue;
173+
float maxValue;
175174
int timeOffset;
176175
GeneratorMode mode;
177176
GeneratorModeData modeData;

source/EngineKernels/EntityFactory.cuh

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -170,14 +170,13 @@ __inline__ __device__ Genome* EntityFactory::createGenomeFromTO(TOs const& to, i
170170
break;
171171
case CellType_Generator:
172172
node.cellTypeData.generator.additive = nodeTO.cellTypeData.generator.additive;
173-
node.cellTypeData.generator.valueOffset = nodeTO.cellTypeData.generator.valueOffset;
173+
node.cellTypeData.generator.minValue = nodeTO.cellTypeData.generator.minValue;
174+
node.cellTypeData.generator.maxValue = nodeTO.cellTypeData.generator.maxValue;
174175
node.cellTypeData.generator.timeOffset = nodeTO.cellTypeData.generator.timeOffset;
175176
node.cellTypeData.generator.mode = nodeTO.cellTypeData.generator.mode;
176177
if (nodeTO.cellTypeData.generator.mode == GeneratorMode_SquareSignal) {
177-
node.cellTypeData.generator.modeData.squareSignal.amplitude = nodeTO.cellTypeData.generator.modeData.squareSignal.amplitude;
178178
node.cellTypeData.generator.modeData.squareSignal.period = nodeTO.cellTypeData.generator.modeData.squareSignal.period;
179179
} else if (nodeTO.cellTypeData.generator.mode == GeneratorMode_SawtoothSignal) {
180-
node.cellTypeData.generator.modeData.sawtoothSignal.amplitude = nodeTO.cellTypeData.generator.modeData.sawtoothSignal.amplitude;
181180
node.cellTypeData.generator.modeData.sawtoothSignal.period = nodeTO.cellTypeData.generator.modeData.sawtoothSignal.period;
182181
}
183182
break;
@@ -452,14 +451,13 @@ __inline__ __device__ void EntityFactory::changeObjectFromTO(TOs const& to, Obje
452451
} break;
453452
case CellType_Generator: {
454453
cell->cellTypeData.generator.additive = cellTO.cellTypeData.generator.additive;
455-
cell->cellTypeData.generator.valueOffset = cellTO.cellTypeData.generator.valueOffset;
454+
cell->cellTypeData.generator.minValue = cellTO.cellTypeData.generator.minValue;
455+
cell->cellTypeData.generator.maxValue = cellTO.cellTypeData.generator.maxValue;
456456
cell->cellTypeData.generator.timeOffset = cellTO.cellTypeData.generator.timeOffset;
457457
cell->cellTypeData.generator.mode = cellTO.cellTypeData.generator.mode;
458458
if (cellTO.cellTypeData.generator.mode == GeneratorMode_SquareSignal) {
459-
cell->cellTypeData.generator.modeData.squareSignal.amplitude = cellTO.cellTypeData.generator.modeData.squareSignal.amplitude;
460459
cell->cellTypeData.generator.modeData.squareSignal.period = cellTO.cellTypeData.generator.modeData.squareSignal.period;
461460
} else if (cellTO.cellTypeData.generator.mode == GeneratorMode_SawtoothSignal) {
462-
cell->cellTypeData.generator.modeData.sawtoothSignal.amplitude = cellTO.cellTypeData.generator.modeData.sawtoothSignal.amplitude;
463461
cell->cellTypeData.generator.modeData.sawtoothSignal.period = cellTO.cellTypeData.generator.modeData.sawtoothSignal.period;
464462
}
465463
cell->cellTypeData.generator.numPulses = cellTO.cellTypeData.generator.numPulses;
@@ -802,14 +800,13 @@ __inline__ __device__ Object* EntityFactory::createCellFromNode(
802800
auto const& nodeGenerator = node->cellTypeData.generator;
803801
auto& generator = cell.cellTypeData.generator;
804802
generator.additive = nodeGenerator.additive;
805-
generator.valueOffset = nodeGenerator.valueOffset;
803+
generator.minValue = nodeGenerator.minValue;
804+
generator.maxValue = nodeGenerator.maxValue;
806805
generator.timeOffset = nodeGenerator.timeOffset;
807806
generator.mode = nodeGenerator.mode;
808807
if (nodeGenerator.mode == GeneratorMode_SquareSignal) {
809-
generator.modeData.squareSignal.amplitude = nodeGenerator.modeData.squareSignal.amplitude;
810808
generator.modeData.squareSignal.period = nodeGenerator.modeData.squareSignal.period;
811809
} else if (nodeGenerator.mode == GeneratorMode_SawtoothSignal) {
812-
generator.modeData.sawtoothSignal.amplitude = nodeGenerator.modeData.sawtoothSignal.amplitude;
813810
generator.modeData.sawtoothSignal.period = nodeGenerator.modeData.sawtoothSignal.period;
814811
}
815812
generator.numPulses = 0;

0 commit comments

Comments
 (0)