Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void WorldEditorSelection::offset( const Point3F& offset, F32 gridSnap )
- {
- for( iterator iter = begin(); iter != end(); ++ iter )
- {
- SceneObject* obj = dynamic_cast<SceneObject*>( *iter );
- if( !obj )
- continue;
- MatrixF mat = obj->getTransform();
- Point3F wPos;
- mat.getColumn(3, &wPos);
- // adjust
- wPos += offset;
- if( gridSnap != 0.f )
- {
- wPos.x = _snapFloat(wPos.x, gridSnap);
- wPos.y = _snapFloat(wPos.y, gridSnap);
- wPos.z = _snapFloat(wPos.z, gridSnap);
- }
- mat.setColumn(3, wPos);
- obj->setTransform(mat);
- }
- mCentroidValid = false;
- }
- F32 WorldEditorSelection::_snapFloat(const F32 &val, const F32 &snap) const
- {
- if (snap == 0.0f)
- return val;
- F32 a = mFmod(val, snap);
- F32 temp = val;
- if (mFabs(a) > (snap / 2))
- val < 0.0f ? temp -= snap : temp += snap;
- return(temp - a);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement