@@ -159,28 +159,39 @@ public void AddSegmentation(VolumeDataset dataset)
159
159
160
160
overlayType = OverlayType . Segmentation ;
161
161
162
- int segmentationId = segmentationLabels . Count > 0 ? segmentationLabels . Max ( l => l . id ) + 1 : 1 ;
162
+ int lastSegmentationId = segmentationLabels . Count > 0 ? segmentationLabels . Max ( l => l . id ) : 0 ;
163
+ int maxSegmentationId = - 1 ;
163
164
164
165
if ( segmentationLabels . Count == 0 )
165
166
{
166
167
secondaryDataset = dataset ;
168
+ maxSegmentationId = Mathf . RoundToInt ( dataset . GetMaxDataValue ( ) ) ;
167
169
}
168
170
else
169
171
{
170
- for ( int i = 0 ; i < secondaryDataset . data . Length ; i ++ )
172
+ for ( int i = 0 ; i < dataset . data . Length ; i ++ )
171
173
{
172
- secondaryDataset . data [ i ] = dataset . data [ i ] > 0.0f ? ( float ) segmentationId : secondaryDataset . data [ i ] ;
174
+ int value = Mathf . RoundToInt ( dataset . data [ i ] ) ;
175
+ if ( value > 0 )
176
+ {
177
+ maxSegmentationId = Mathf . Max ( maxSegmentationId , value ) ;
178
+ secondaryDataset . data [ i ] = maxSegmentationId + value ;
179
+ }
173
180
}
174
181
secondaryDataset . RecalculateBounds ( ) ;
175
182
secondaryDataset . RecreateDataTexture ( ) ;
176
183
secondaryDataset . GetDataTexture ( ) . filterMode = FilterMode . Point ;
177
184
}
178
- SegmentationLabel segmentationLabel = new SegmentationLabel ( ) ;
179
- segmentationLabel . id = segmentationId ;
180
- segmentationLabel . name = dataset . name ;
181
- segmentationLabel . colour = Random . ColorHSV ( ) ;
182
- segmentationLabels . Add ( segmentationLabel ) ;
183
- UpdateSegmentationLabels ( ) ;
185
+ for ( int i = 1 ; i <= maxSegmentationId ; i ++ )
186
+ {
187
+ int segmentationId = i + lastSegmentationId ;
188
+ SegmentationLabel segmentationLabel = new SegmentationLabel ( ) ;
189
+ segmentationLabel . id = segmentationId ;
190
+ segmentationLabel . name = dataset . name ;
191
+ segmentationLabel . colour = Random . ColorHSV ( ) ;
192
+ segmentationLabels . Add ( segmentationLabel ) ;
193
+ UpdateSegmentationLabels ( ) ;
194
+ }
184
195
}
185
196
186
197
public void RemoveSegmentation ( int id )
0 commit comments