| 207 |
|
modLUT.freek = efree; |
| 208 |
|
modLUT.freed = FreeRcMod; |
| 209 |
|
kid = NULL; kidRow = NULL; nkids = 0; |
| 210 |
– |
rtFlags = RTtraceSources; |
| 211 |
– |
SetTraceCall(&RctCall, this); |
| 210 |
|
outOp = RCOnew; |
| 211 |
|
cdsF = &defDataShare; |
| 212 |
|
xres = yres = 0; |
| 213 |
|
accum = 1; |
| 214 |
+ |
if (octname) { |
| 215 |
+ |
SetTraceCall(&RctCall, this); |
| 216 |
+ |
rtFlags |= RTtraceSources; |
| 217 |
+ |
UpdateMode(); |
| 218 |
+ |
} |
| 219 |
|
} |
| 220 |
|
~RcontribSimulManager() { |
| 221 |
|
if (nkids >= 0) ClearModifiers(); |
| 233 |
|
} |
| 234 |
|
/// Load octree and prepare renderer |
| 235 |
|
bool LoadOctree(const char *octn) { |
| 236 |
< |
return RtraceSimulManager::LoadOctree(octn); |
| 236 |
> |
if (octname) Cleanup(false); |
| 237 |
> |
if (!RtraceSimulManager::LoadOctree(octn)) |
| 238 |
> |
return false; |
| 239 |
> |
SetTraceCall(&RctCall, this); |
| 240 |
> |
rtFlags |= RTtraceSources; |
| 241 |
> |
return UpdateMode(); |
| 242 |
|
} |
| 243 |
|
/// Prepare header from previous input (or clear) |
| 244 |
|
bool NewHeader(const char *inspec=NULL) { |
| 332 |
|
if (rowsDone.Length()) { |
| 333 |
|
SetThreadCount(1); |
| 334 |
|
rowsDone.NewBitMap(0); |
| 335 |
+ |
rInPos = 0; |
| 336 |
|
} |
| 337 |
|
lu_done(&modLUT); |
| 338 |
|
delete outList; outList = NULL; |
| 342 |
|
int Cleanup(bool everything = false) { |
| 343 |
|
ClearModifiers(); |
| 344 |
|
cow_doneshare(); |
| 345 |
+ |
if (everything) { |
| 346 |
+ |
dtyp = 'f'; |
| 347 |
+ |
outOp = RCOnew; |
| 348 |
+ |
cdsF = &defDataShare; |
| 349 |
+ |
xres = yres = 0; |
| 350 |
+ |
accum = 1; |
| 351 |
+ |
rtFlags &= ~RCmask; |
| 352 |
+ |
} |
| 353 |
|
return RtraceSimulManager::Cleanup(everything); |
| 354 |
|
} |
| 355 |
|
}; |