mirror of
https://github.com/blender/blender-addons.git
synced 2025-08-20 13:22:58 +00:00
Added poll() function to fix crash with no selected objects. Grouped registration functions.
This commit is contained in:
@ -20,7 +20,7 @@
|
||||
bl_addon_info = {
|
||||
'name': 'Object: Cloud Generator',
|
||||
'author': 'Nick Keeline(nrk)',
|
||||
'version': '0.5',
|
||||
'version': '0.6',
|
||||
'blender': (2, 5, 3),
|
||||
'location': 'Tool Shelf ',
|
||||
'description': 'Creates Volumetric Clouds',
|
||||
@ -41,6 +41,7 @@ Rev 0.2 Added Point Density turbulence and fixed degenerate
|
||||
Rev 0.3 Fixed bug in degenerate
|
||||
Rev 0.4 updated for api change/changed to new apply modifier technique
|
||||
Rev 0.5 made particle count equation with radius so radius increases with cloud volume
|
||||
Rev 0.6 added poll function to operator, fixing crash with no selected objects
|
||||
"""
|
||||
|
||||
import bpy
|
||||
@ -48,9 +49,6 @@ import mathutils
|
||||
from math import *
|
||||
from bpy.props import *
|
||||
|
||||
# Deselect All
|
||||
bpy.ops.object.select_all(action='DESELECT')
|
||||
|
||||
|
||||
# This routine takes an object and deletes all of the geometry in it
|
||||
# and adds a bounding box to it.
|
||||
@ -281,23 +279,6 @@ class VIEW3D_PT_tools_cloud(View3DPanel):
|
||||
col.label(text="a cloud.")
|
||||
# col.label(active_obj["CloudMember"])
|
||||
|
||||
classes = [VIEW3D_PT_tools_cloud]
|
||||
|
||||
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
if __name__ == "__main__":
|
||||
register()
|
||||
|
||||
|
||||
class GenerateCloud(bpy.types.Operator):
|
||||
bl_idname = "cloud.generate_cloud"
|
||||
@ -306,6 +287,12 @@ class GenerateCloud(bpy.types.Operator):
|
||||
bl_register = True
|
||||
bl_undo = True
|
||||
|
||||
def poll(self, context):
|
||||
if not context.active_object:
|
||||
return False
|
||||
else:
|
||||
return (context.active_object.type=='MESH')
|
||||
|
||||
def execute(self, context):
|
||||
# Make variable that is the current .blend file main data blocks
|
||||
main = context.main
|
||||
@ -316,7 +303,6 @@ class GenerateCloud(bpy.types.Operator):
|
||||
# Make variable scene that is current scene
|
||||
scene = context.scene
|
||||
|
||||
if active_object and active_object.type == 'MESH':
|
||||
# Parameters the user may want to change:
|
||||
# Number of points this number is multiplied by the volume to get
|
||||
# the number of points the scripts will put in the volume.
|
||||
@ -330,7 +316,6 @@ class GenerateCloud(bpy.types.Operator):
|
||||
degenerate = degenerateCloud(active_object)
|
||||
|
||||
if degenerate:
|
||||
if active_object is not None:
|
||||
# Degenerate Cloud
|
||||
mainObj = active_object
|
||||
|
||||
@ -390,14 +375,10 @@ class GenerateCloud(bpy.types.Operator):
|
||||
###############Create Combined Object bounds##################
|
||||
# Make a list of all Selected objects.
|
||||
selectedObjects = bpy.context.selected_objects
|
||||
if not selectedObjects:
|
||||
selectedObjects = [bpy.context.active_object]
|
||||
|
||||
# Create a new object bounds
|
||||
if selectedObjects is None:
|
||||
bounds = addNewObject(scene,
|
||||
"CloudBounds",
|
||||
[])
|
||||
|
||||
else:
|
||||
bounds = addNewObject(scene,
|
||||
"CloudBounds",
|
||||
selectedObjects[0])
|
||||
@ -628,11 +609,25 @@ class GenerateCloud(bpy.types.Operator):
|
||||
# scene.update()
|
||||
#bpy.ops.ptcache.bake_all(bake=False)
|
||||
|
||||
#self.report({'WARNING'}, "Generating Cloud")
|
||||
|
||||
return {'FINISHED'}
|
||||
|
||||
bpy.types.register(GenerateCloud)
|
||||
|
||||
classes = [VIEW3D_PT_tools_cloud,
|
||||
GenerateCloud]
|
||||
|
||||
|
||||
def register():
|
||||
register = bpy.types.register
|
||||
for cls in classes:
|
||||
register(cls)
|
||||
|
||||
|
||||
def unregister():
|
||||
unregister = bpy.types.unregister
|
||||
for cls in classes:
|
||||
unregister(cls)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
bpy.ops.cloud.generate_cloud()
|
||||
register()
|
Reference in New Issue
Block a user