diff options
author | Ton Roosendaal <ton@blender.org> | 2005-03-18 00:31:49 +0300 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2005-03-18 00:31:49 +0300 |
commit | 17bd00a851b24feb19a6a917d39e6e2044f31ccd (patch) | |
tree | 72d4f0e736f06f779fe7538bc8336f1a9b4eae9f /source/blender/src/headerbuttons.c | |
parent | ab21276aaf3de85afeb3b2fc2a265b735712e8d3 (diff) |
So! Finally a show-off of the *power* of Martin P's work! :)
- Made framework for 3d Transform Manipulators (widgets)
- The Manipulators act like '2d buttons', by default with LeftMouse and with
while-hold-move-release
- Implemented now: Translation Widget, which allows:
- four hotspots for axis grab or view-aligned grab
- center defined by 'around' setting
- SHIFT+LMB gives planar constraint on other 2 axes
- works in Object mode and Edit mode (not posemode yet)
Enable it with (temporal) icon in 3D header. All other 'normal' transforms
then keeps working btw.
On the todo for this widget:
- choice for Global, Local or Normal orientation
The way the widgets are going to work is in review still. Commit is also for
Matt for his proposal/paper on topic.
Some notes regarding this project;
- no life updates (on mouse over) like 3DS, I think that's neurotic
- on click, dominant axis changes to theme defined "Transform" color, other axes disappear, like maya
- manipulater size is fixed preset, independent zoom.
- manipulator follows selection, and is located based on 'around' mode
Unresolved;
- in maya, when you select 2 or more objects, the manipulator draws on the 'active' object, also interesting
- what to do with G,R,S hotkeys? It could switch the manipulator "mode"...
- header button/menu for manipulator mode?
Diffstat (limited to 'source/blender/src/headerbuttons.c')
-rw-r--r-- | source/blender/src/headerbuttons.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/source/blender/src/headerbuttons.c b/source/blender/src/headerbuttons.c index 510619e0a8a..459b3bdd8e2 100644 --- a/source/blender/src/headerbuttons.c +++ b/source/blender/src/headerbuttons.c @@ -494,6 +494,7 @@ int std_libbuttons(uiBlock *block, short xco, short yco, static void do_update_for_newframe(int mute) { extern void audiostream_scrub(unsigned int frame); /* seqaudio.c */ + ScrArea *sa; allqueue(REDRAWVIEW3D, 0); allqueue(REDRAWACTION,0); @@ -522,6 +523,16 @@ static void do_update_for_newframe(int mute) test_all_displists(); + /* manipulators like updates too */ + for(sa=G.curscreen->areabase.first; sa; sa=sa->next) { + if(sa->spacetype==SPACE_VIEW3D) { + View3D *v3d= sa->spacedata.first; + if(v3d->twflag & V3D_USE_MANIPULATOR) break; + else break; // for now + } + } + if(sa) countall(); // does manipulator centers + if ( (CFRA>1) && (!mute) && (G.scene->audio.flag & AUDIO_SCRUB)) audiostream_scrub( CFRA ); } |