[Bf-committers] [Bf-blender-cvs] SVN commit:/data/svn/bf-blender [11518]branches/soc-2007-red_fox/source/ blender: Editmesh toolinteraction working, memleaks fixed, etc.

Levi Schooley levischooley at eaglecom.net
Fri Aug 10 23:53:02 CEST 2007

> Was there a good reason for abusing TransData's factor
> member to store bevel values instead of ival and val?

No. I just needed a float, and factor happened to share a name. :)

> The use of global is a bit weird too, not sure I like
> that (haven't look much at that part though).

Yeah, I suppose I didn't need to do that. I will be passing things
around globally, though. Global seemed a nice way to package it
up. Let me know how it is preferred to work.

> Also, you shouldn't hold on to a pointer to the
> TransInfo data structure (outside of the transform
> engine), you should use BIF_GetTransInfo. This is
> safer for future "unglobalizing".

Ah! Thanks! That's precisely what I needed.

I'll need to look at your Transform() changes later.


>--- Levi Schooley <redfox at hhofministries.org> wrote:
>> Revision: 11518
>> Author:   red_fox
>> Date:     2007-08-08 20:02:24 +0200 (Wed, 08 Aug
>> 2007)
>> Log Message:
>> -----------
>> Editmesh tool interaction working, memleaks fixed,
>> etc.
>> First off, I removed all memory leaks (as far as I
>> can tell).
>> I did this by correctly handling editmesh, adding 
>> CustomData_free() functions to BME_free_mesh() in
>> BME_Mesh.c, 
>> and changing the CustomData_copy() functions to 
>> CustomData_merge() in BME_bmesh_to_derivedmesh().
>> Second, I wrapped BME_SFME() with BME_split_face()
>> so that 
>> face and edge flags were propagated to the new
>> geometry.
>> Third, and this is the big one, I infiltrated the
>> Transform() 
>> system so that the editmode tool now works
>> interactively. The 
>> tool uses the horizontal mouse position to determine
>> the 
>> bevel distance. Also, you can click the middle mouse
>> button 
>> during transform to toggle between vert-only and
>> edge-based 
>> methods of beveling.
>> To do this, I added a new global struct, editBMesh,
>> to Global 
>> G that holds pointers to all of the information I
>> need. I 
>> capture events during Transform(), and if they
>> change a 
>> significant option, the option is set globally, and 
>> Transform() is cancelled. Trans.state and the global
>> options 
>> are tested by the calling function, bevel_menu(),
>> after 
>> Transform() completes. If they signal an option
>> change during 
>> Transform(), the tool is reset with the new options.
>> Fourth, and last (except for some other little
>> stuff, like to 
>> fix warnings), I added a limiting value (that only
>> works to 
>> the fullest in special circumstances) that prevents
>> the bevel 
>> from "overshooting." This definitely needs some more
>> math and 
>> tweaking work, though.
>Choose the right car based on your needs.  Check out Yahoo! Autos
new Car Finder tool.
>Bf-committers mailing list
>Bf-committers at blender.org

More information about the Bf-committers mailing list