using mface->flag for both.
Also found that the cdDM_drawMappedFaces and cdDM_drawFacesTex_common could get normals mixed up when rendering hidden faces. because hidden/invisible faces used continue without advancing to the next normal.
Ctrl+RMB used to select a hidden object as well as "Select Grouped -> Parent"
Also made OOps and data browser check for hidden objects.
Added a countall to hide/unhide objects.
Checked every instance of testbase to see this dosnt break anything, also changed TESTBASE and TESTBASELIB, both were used incorrectly in places.
added error_libdata() for library error messages that are everywhere.
added object_data_is_libdata to test if the object and its data's are from a library.
fixed 2 crashs in adding Curve points to a library object (remember to check, verify_ipocurve returns NULL!)
made duplicating and making dupli's real for lib objects possible, disabled joining into lib armatures and meshes.
- Modified pack so it can repack too, rather the n raising an error.
editobject - Dont need to recalc data when hiding and unhiding. rather do what layers do and re-sort the scene.
Small feature, added keybindings for setting the visibility restriction flags
that were previously only accesible via the outliner
HKEY Hides all selected
SHIFT-HKEY Hides all unselected
ALT-HKEY Shows all hidden
Issue in Blender 10 years ago already:
CTRL+L "Link Materials" reduced total amount of materials in cases, which
it should not.
It now just copies Material links from the active to selected Objects.
Note for developers: see how this now is 3 lines of code, instead of
like 30. I have no idea what I was thinking back then... the current
solution could have been coded back then too.
Added checks to the following areas
* half the material buttons
* multires, shapekeys, vert groups
* renaming a linked Object in the links could loose the object on next reload.
Made center functions check for library data as well as changing
the way it works.
Rather then centering all objects in the selection and stopping if it finds libdata, or a multiuser mesh.
It centers all that it can, and reports any objects that didnt center and why.
Existing data is flagged with LIB_APPEND_TAG and all_local only has an option to only operate on un-flagged data.
If you append an object thats linked to a material alredy linked in your scene, the material will not be made local.
So at worst youll need to make local some of the datablocks.
This is fairly simple and though my tests show it to work, do some tests on your own libraries before assuming its problem free.
scripttemplate_mesh_edit wasnt updated with PyAPI changes and moved some functions into generic places.
Posemode: you can get a situation of an active object, in posemode, which
is not selected. That is very invisible, and gives issues for tools like
'clear rotation', because it checks for selected objects.
Als fixed clear (alt+g,r,s) options to only work on posemode for the active
object.
Made "Select Grouped" functions and "Select Linked" use BASE_SELECTABLE macro so they wont select objects they shouldent.
Made "Select Grouped" push an undo
Made "Select Grouped" and "Select Linked" only push add an UNDO if they make a change to the selection.
Fix for own bug. "Select Group" -> Hooks option could crash blender if an objetc hook was in another scene.
Removed special Sculpt Mode undo code. Sculpt Mode undo is no longer so useful, since in order to make it more correct it has gotten slower, so normal BIF_undo_push is used now. Fixes bug with Shape Keys, sculpting on a shape key wasn't doing undo properly.
When in sculptmode, enter editmode, add faces or vertices, exit editmode,
then undos/redos screw up mesh.
Now the stack for sculpt is freed. Later on one could precisely test why
this undo isn't resistant to such changes.
After all these years, it is now possible to (re)center armatures like you
can do with meshes and curves.
At the moment, you can only access this functionality from the menus
(Spacebar->Transform) as the armature button panels are pretty
crowded.
(saved files cannot read back, they crash).
The implementation of this option was plain accident that it even worked
once... you cannot use the API in blender that way.
Please read:
http://www.blender3d.org/cms/Imaging.834.0.html
Or in short:
- adding MultiLayer Image support
- recoded entire Image API
- better integration of movie/sequence Images
Was a whole load of work... went down for a week to do this. So, will need
a lot of testing! Will be in irc all evening.
- Bug: material emit was ignored (showed in preview render backdrop)
- Bug: world exposure was ignored
- Bug: lamp halo was ignoring 'render layer light override'.
Further reshuffled the way shadows are being pre-calculated, this to enable
more advanced (and faster) usage of Material lightgroups. Now shadows are
being cached in lamps, using a per-sample counter to check if a recalc is
needed. Will also work (later) for Raytracing node shaders.
- New: Material LightGroup option "Always", which always shades the lights
in the group, independent of visibility layer. (so it allows to move such
lights to hidden layer, not influencing anything).
This commit upgrades the modifier stack to only calculate the data which is
needed, either by modifiers further down the stack or by other functions at
the end of the stack (e.g. drawing functions).
This speeds up modifier stack recalculation, especially where vertex
groups and UV coordinates are concerned. For example, a mesh with an Armature
modifier followed by a Subsurf modifier would previously have required the
Subsurf modifier to interpolate all the vertex groups in the mesh, slowing
down modifier calculations considerably. With this update, vertex group data
is not propagated beyond the Armature modifier, so calculations are faster.
Note that this depends on the order of modifiers in the stack. If the Armature
and Subsurf modifiers were swapped in the above example, the Subsurf modifier
would have to interpolate vertex groups, as they are needed by the Armature
modifier.
All data layers, including MVert/MEdge/MFace, are now managed as custom
data layers. The pointers like Mesh.mvert, Mesh.dvert or Mesh.mcol are
still used of course, but allocating, copying or freeing these arrays
should be done through the CustomData API.
Work in progress documentation on this is here:
http://mediawiki.blender.org/index.php/BlenderDev/BlenderArchitecture/CustomData
Replaced TFace by MTFace:
This is the same struct, except that it does not contain color, that now
always stays separated in MCol. This was not a good design decision to
begin with, and it is needed for adding multiple color layers later. Note
that this does mean older Blender versions will not be able to read UV
coordinates from the next release, due to an SDNA limitation.
Removed DispListMesh:
This now fully replaced by DerivedMesh. To provide access to arrays of
vertices, edges and faces, like DispListMesh does. The semantics of the
DerivedMesh.getVertArray() and similar functions were changed to return
a pointer to an array if one exists, or otherwise allocate a temporary
one. On releasing the DerivedMesh, this temporary array will be removed
automatically.
Removed ssDM and meshDM DerivedMesh backends:
The ssDM backend was for DispListMesh, so that became obsolete automatically.
The meshDM backend was replaced by the custom data backend, that now figures
out which layers need to be modified, and only duplicates those.
This changes code in many places, and overall removes 2514 lines of code.
So, there's a good chance this might break some stuff, although I've been
testing it for a few days now. The good news is, adding multiple color and
uv layers should now become easy.
Prob: selection sometimes gave wrong edges/faces
Selection code for editmesh was still using a short for calculating the
distance of a projected vertex/edge/face from the mouse position. In
zoomed in cases that'll give overflows and unpredictable results.
It was fixed only half before... now all shorts are removed for distance
calculus.