| 290 | //----------------------------------------------------------------------------- |
| 291 | |
| 292 | void WorldEditorSelection::offset( const Point3F& offset, F32 gridSnap ) |
| 293 | { |
| 294 | for( iterator iter = begin(); iter != end(); ++ iter ) |
| 295 | { |
| 296 | SceneObject* obj = dynamic_cast<SceneObject*>( *iter ); |
| 297 | if( !obj ) |
| 298 | continue; |
| 299 | |
| 300 | MatrixF mat = obj->getTransform(); |
| 301 | Point3F wPos; |
| 302 | mat.getColumn(3, &wPos); |
| 303 | |
| 304 | // adjust |
| 305 | wPos += offset; |
| 306 | |
| 307 | if( gridSnap != 0.f ) |
| 308 | { |
| 309 | wPos.x = _snapFloat(wPos.x, gridSnap); |
| 310 | wPos.y = _snapFloat(wPos.y, gridSnap); |
| 311 | wPos.z = _snapFloat(wPos.z, gridSnap); |
| 312 | } |
| 313 | |
| 314 | mat.setColumn(3, wPos); |
| 315 | obj->setTransform(mat); |
| 316 | } |
| 317 | |
| 318 | mCentroidValid = false; |
| 319 | } |
| 320 | |
| 321 | F32 WorldEditorSelection::_snapFloat(const F32 &val, const F32 &snap) const |
| 322 | { |
no test coverage detected