| 215 | | Real32 tstepx = 1.0f/getSizeX(); |
|---|
| 216 | | Real32 tstepy = 1.0f/getSizeY(); |
|---|
| 217 | | UInt32 i, j; |
|---|
| 218 | | const UInt32 roi = getSizeROI()+getSizeROI()+1; |
|---|
| 219 | | for(j=0; j<roi; ++j) |
|---|
| 220 | | { |
|---|
| 221 | | for(i=0; i<roi; ++i) |
|---|
| | 215 | if(getParents().size() > 0 && getParents()[0] != NullFC) |
|---|
| | 216 | { // parent must be set! |
|---|
| | 217 | Real32 tstepx = 1.0f/getSizeX(); |
|---|
| | 218 | Real32 tstepy = 1.0f/getSizeY(); |
|---|
| | 219 | UInt32 i, j; |
|---|
| | 220 | const UInt32 roi = getSizeROI()+getSizeROI()+1; |
|---|
| | 221 | for(j=0; j<roi; ++j) |
|---|
| | 222 | { |
|---|
| | 223 | for(i=0; i<roi; ++i) |
|---|
| | 224 | { |
|---|
| | 225 | NodePtr pParent = dynamic_cast<NodePtr>(getParents()[0].getCPtr()); |
|---|
| | 226 | |
|---|
| | 227 | NodePtr node = pParent->getChild(j*roi+i); |
|---|
| | 228 | |
|---|
| | 229 | QuadTreeTerrainPtr terrain = |
|---|
| | 230 | dynamic_cast<QuadTreeTerrainPtr>(node->getCore()); |
|---|
| | 231 | |
|---|
| | 232 | if (terrain == NullFC) |
|---|
| | 233 | { |
|---|
| | 234 | continue; |
|---|
| | 235 | } |
|---|
| | 236 | |
|---|
| | 237 | if(getMaterial() == NullFC) |
|---|
| | 238 | { // use material of MFHeightTextures |
|---|
| | 239 | if(getHeightTextures().size() > j*getSizeX()+i && |
|---|
| | 240 | i < getSizeX() && j < getSizeY()) |
|---|
| | 241 | { |
|---|
| | 242 | terrain->setMaterial( |
|---|
| | 243 | getHeightTextures(j*getSizeX()+i)); |
|---|
| | 244 | } |
|---|
| | 245 | } |
|---|
| | 246 | else |
|---|
| | 247 | { // use material of this MaterialGroup |
|---|
| | 248 | MaterialPtr mat = cloneMaterial(getMaterial()); |
|---|
| | 249 | terrain->setMaterial(mat); |
|---|
| | 250 | terrain->setOriginTexX(i*tstepx); |
|---|
| | 251 | terrain->setOriginTexY(j*tstepy); |
|---|
| | 252 | terrain->setTexSpacing (tstepx); |
|---|
| | 253 | terrain->setTexYSpacing(tstepy); |
|---|
| | 254 | } |
|---|
| | 255 | |
|---|
| | 256 | terrain->setPerPixelLighting(getPerPixelLighting()); |
|---|
| | 257 | } |
|---|
| | 258 | } |
|---|
| | 259 | } |
|---|
| | 260 | } |
|---|
| | 261 | |
|---|
| | 262 | if((whichField & GeoMorphingFieldMask)) |
|---|
| | 263 | { |
|---|
| | 264 | if(getParents().size() > 0 && getParents()[0] != NullFC) |
|---|
| | 265 | { // parent must be set! |
|---|
| | 266 | const UInt32 roi = getSizeROI()+getSizeROI()+1; |
|---|
| | 267 | const UInt32 roi2 = roi*roi; |
|---|
| | 268 | |
|---|
| | 269 | for(UInt32 i=0; i<roi2; ++i) |
|---|
| 234 | | |
|---|
| 235 | | if(getMaterial() == NullFC) |
|---|
| 236 | | { // use material of MFHeightTextures |
|---|
| 237 | | if(getHeightTextures().size() > j*getSizeX()+i && |
|---|
| 238 | | i < getSizeX() && j < getSizeY()) |
|---|
| 239 | | { |
|---|
| 240 | | terrain->setMaterial( |
|---|
| 241 | | getHeightTextures(j*getSizeX()+i)); |
|---|
| 242 | | } |
|---|
| 243 | | } |
|---|
| 244 | | else |
|---|
| 245 | | { // use material of this MaterialGroup |
|---|
| 246 | | MaterialPtr mat = cloneMaterial(getMaterial()); |
|---|
| 247 | | terrain->setMaterial(mat); |
|---|
| 248 | | terrain->setOriginTexX(i*tstepx); |
|---|
| 249 | | terrain->setOriginTexY(j*tstepy); |
|---|
| 250 | | terrain->setTexSpacing (tstepx); |
|---|
| 251 | | terrain->setTexYSpacing(tstepy); |
|---|
| 252 | | } |
|---|
| 253 | | |
|---|
| 254 | | terrain->setPerPixelLighting(getPerPixelLighting()); |
|---|
| | 282 | |
|---|
| | 283 | terrain->setGeoMorphing(getGeoMorphing()); |
|---|
| 256 | | } |
|---|
| 257 | | } |
|---|
| 258 | | |
|---|
| 259 | | if((whichField & GeoMorphingFieldMask)) |
|---|
| 260 | | { |
|---|
| 261 | | const UInt32 roi = getSizeROI()+getSizeROI()+1; |
|---|
| 262 | | const UInt32 roi2 = roi*roi; |
|---|
| 263 | | |
|---|
| 264 | | for(UInt32 i=0; i<roi2; ++i) |
|---|
| 265 | | { |
|---|
| 266 | | NodePtr pParent = dynamic_cast<NodePtr>(getParents()[0].getCPtr()); |
|---|
| 267 | | |
|---|
| 268 | | NodePtr node = pParent->getChild(i); |
|---|
| 269 | | |
|---|
| 270 | | QuadTreeTerrainPtr terrain = |
|---|
| 271 | | dynamic_cast<QuadTreeTerrainPtr>(node->getCore()); |
|---|
| 272 | | |
|---|
| 273 | | if(terrain == NullFC) |
|---|
| 274 | | { |
|---|
| 275 | | continue; |
|---|
| 276 | | } |
|---|
| 277 | | |
|---|
| 278 | | terrain->setGeoMorphing(getGeoMorphing()); |
|---|
| 284 | | const UInt32 roi = getSizeROI()+getSizeROI()+1; |
|---|
| 285 | | const UInt32 roi2 = roi*roi; |
|---|
| 286 | | |
|---|
| 287 | | for (UInt32 i=0; i<roi2; ++i) |
|---|
| 288 | | { |
|---|
| 289 | | NodePtr pParent = dynamic_cast<NodePtr>(getParents()[0].getCPtr()); |
|---|
| 290 | | |
|---|
| 291 | | NodePtr node = pParent->getChild(i); |
|---|
| 292 | | |
|---|
| 293 | | QuadTreeTerrainPtr terrain = |
|---|
| 294 | | dynamic_cast<QuadTreeTerrainPtr>(node->getCore()); |
|---|
| 295 | | |
|---|
| 296 | | if(terrain == NullFC) |
|---|
| | 290 | if(getParents().size() > 0 && getParents()[0] != NullFC) |
|---|
| | 291 | { // parent must be set! |
|---|
| | 292 | const UInt32 roi = getSizeROI()+getSizeROI()+1; |
|---|
| | 293 | const UInt32 roi2 = roi*roi; |
|---|
| | 294 | |
|---|
| | 295 | for (UInt32 i=0; i<roi2; ++i) |
|---|