Changes to python-defined add object operators:
- Reset rotation value when toggling Align to View property which correctly re-alignes object on continuous property toggling and fixes issue #30510: [2.62] Add Mesh - Torus - "Align to View" cannot be switched back when toggling off - Moves all generic object-add properties into a helper function which might be easily re-used.
This commit is contained in:
@@ -21,12 +21,15 @@
|
||||
__all__ = (
|
||||
"add_object_align_init",
|
||||
"object_data_add",
|
||||
"object_generic_transform_prop",
|
||||
)
|
||||
|
||||
|
||||
import bpy
|
||||
import mathutils
|
||||
|
||||
from bpy.props import (BoolProperty, FloatVectorProperty)
|
||||
|
||||
|
||||
def add_object_align_init(context, operator):
|
||||
"""
|
||||
@@ -120,7 +123,8 @@ def object_data_add(context, obdata, operator=None, use_active_layer=True):
|
||||
base.layers_from_view(context.space_data)
|
||||
base.layers[scene.active_layer] = True
|
||||
else:
|
||||
base.layers = [True if i == scene.active_layer else False for i in range(len(scene.layers))]
|
||||
base.layers = [True if i == scene.active_layer
|
||||
else False for i in range(len(scene.layers))]
|
||||
if v3d:
|
||||
base.layers_from_view(context.space_data)
|
||||
|
||||
@@ -163,3 +167,23 @@ def object_data_add(context, obdata, operator=None, use_active_layer=True):
|
||||
bpy.ops.object.mode_set(mode='EDIT')
|
||||
|
||||
return base
|
||||
|
||||
|
||||
class AddObjectHelper:
|
||||
def view_align_update_callback(self, context):
|
||||
if not self.view_align:
|
||||
self.rotation.zero()
|
||||
|
||||
view_align = BoolProperty(
|
||||
name="Align to View",
|
||||
default=False,
|
||||
update=view_align_update_callback,
|
||||
)
|
||||
location = FloatVectorProperty(
|
||||
name="Location",
|
||||
subtype='TRANSLATION',
|
||||
)
|
||||
rotation = FloatVectorProperty(
|
||||
name="Rotation",
|
||||
subtype='EULER',
|
||||
)
|
||||
|
Reference in New Issue
Block a user