Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicholas Bishop <nicholasbishop@gmail.com>2010-08-21 08:06:07 +0400
committerNicholas Bishop <nicholasbishop@gmail.com>2010-08-21 08:06:07 +0400
commit19746b89796f048c261a9cd1de281df00835966f (patch)
tree7cd7def570fb13da69575e62cbf6beb0e6f95bf3
parentdd972441a9a4c4431ef8a453d237f947c392e9df (diff)
svn merge https://svn.blender.org/svnroot/bf-blender/trunk/blender -r31296:31488
-rw-r--r--build_files/scons/config/freebsd7-config.py213
-rw-r--r--build_files/scons/config/freebsd8-config.py213
-rw-r--r--build_files/scons/config/freebsd9-config.py213
-rw-r--r--intern/audaspace/CMakeLists.txt19
-rw-r--r--intern/audaspace/FX/AUD_AccumulatorFactory.cpp43
-rw-r--r--intern/audaspace/FX/AUD_AccumulatorFactory.h14
-rw-r--r--intern/audaspace/FX/AUD_AccumulatorReader.cpp99
-rw-r--r--intern/audaspace/FX/AUD_AccumulatorReader.h75
-rw-r--r--intern/audaspace/FX/AUD_BaseIIRFilterReader.cpp76
-rw-r--r--intern/audaspace/FX/AUD_BaseIIRFilterReader.h114
-rw-r--r--intern/audaspace/FX/AUD_ButterworthFactory.cpp49
-rw-r--r--intern/audaspace/FX/AUD_ButterworthFactory.h14
-rw-r--r--intern/audaspace/FX/AUD_ButterworthReader.cpp124
-rw-r--r--intern/audaspace/FX/AUD_ButterworthReader.h83
-rw-r--r--intern/audaspace/FX/AUD_CallbackIIRFilterReader.cpp (renamed from intern/audaspace/FX/AUD_RectifyReader.cpp)36
-rw-r--r--intern/audaspace/FX/AUD_CallbackIIRFilterReader.h83
-rw-r--r--intern/audaspace/FX/AUD_DelayFactory.cpp24
-rw-r--r--intern/audaspace/FX/AUD_DelayFactory.h24
-rw-r--r--intern/audaspace/FX/AUD_DelayReader.cpp56
-rw-r--r--intern/audaspace/FX/AUD_DelayReader.h25
-rw-r--r--intern/audaspace/FX/AUD_DoubleFactory.cpp50
-rw-r--r--intern/audaspace/FX/AUD_DoubleFactory.h (renamed from intern/audaspace/FX/AUD_SquareReader.h)42
-rw-r--r--intern/audaspace/FX/AUD_DoubleReader.cpp109
-rw-r--r--intern/audaspace/FX/AUD_DoubleReader.h21
-rw-r--r--intern/audaspace/FX/AUD_EffectFactory.cpp13
-rw-r--r--intern/audaspace/FX/AUD_EffectFactory.h22
-rw-r--r--intern/audaspace/FX/AUD_EffectReader.cpp22
-rw-r--r--intern/audaspace/FX/AUD_EffectReader.h16
-rw-r--r--intern/audaspace/FX/AUD_EnvelopeFactory.cpp56
-rw-r--r--intern/audaspace/FX/AUD_EnvelopeFactory.h24
-rw-r--r--intern/audaspace/FX/AUD_EnvelopeReader.cpp86
-rw-r--r--intern/audaspace/FX/AUD_EnvelopeReader.h84
-rw-r--r--intern/audaspace/FX/AUD_FaderFactory.cpp42
-rw-r--r--intern/audaspace/FX/AUD_FaderFactory.h47
-rw-r--r--intern/audaspace/FX/AUD_FaderReader.cpp54
-rw-r--r--intern/audaspace/FX/AUD_FaderReader.h34
-rw-r--r--intern/audaspace/FX/AUD_HighpassFactory.cpp38
-rw-r--r--intern/audaspace/FX/AUD_HighpassFactory.h17
-rw-r--r--intern/audaspace/FX/AUD_HighpassReader.cpp116
-rw-r--r--intern/audaspace/FX/AUD_HighpassReader.h83
-rw-r--r--intern/audaspace/FX/AUD_IIRFilterFactory.cpp39
-rw-r--r--intern/audaspace/FX/AUD_IIRFilterFactory.h66
-rw-r--r--intern/audaspace/FX/AUD_IIRFilterReader.cpp50
-rw-r--r--intern/audaspace/FX/AUD_IIRFilterReader.h (renamed from intern/audaspace/FX/AUD_VolumeReader.h)44
-rw-r--r--intern/audaspace/FX/AUD_LimiterFactory.cpp28
-rw-r--r--intern/audaspace/FX/AUD_LimiterFactory.h29
-rw-r--r--intern/audaspace/FX/AUD_LimiterReader.cpp36
-rw-r--r--intern/audaspace/FX/AUD_LimiterReader.h13
-rw-r--r--intern/audaspace/FX/AUD_LoopFactory.cpp24
-rw-r--r--intern/audaspace/FX/AUD_LoopFactory.h26
-rw-r--r--intern/audaspace/FX/AUD_LoopReader.cpp71
-rw-r--r--intern/audaspace/FX/AUD_LoopReader.h27
-rw-r--r--intern/audaspace/FX/AUD_LowpassFactory.cpp38
-rw-r--r--intern/audaspace/FX/AUD_LowpassFactory.h17
-rw-r--r--intern/audaspace/FX/AUD_LowpassReader.cpp115
-rw-r--r--intern/audaspace/FX/AUD_PingPongFactory.cpp45
-rw-r--r--intern/audaspace/FX/AUD_PingPongFactory.h13
-rw-r--r--intern/audaspace/FX/AUD_PitchFactory.cpp19
-rw-r--r--intern/audaspace/FX/AUD_PitchFactory.h27
-rw-r--r--intern/audaspace/FX/AUD_PitchReader.cpp5
-rw-r--r--intern/audaspace/FX/AUD_PitchReader.h9
-rw-r--r--intern/audaspace/FX/AUD_RectifyFactory.cpp25
-rw-r--r--intern/audaspace/FX/AUD_RectifyFactory.h14
-rw-r--r--intern/audaspace/FX/AUD_ReverseFactory.cpp15
-rw-r--r--intern/audaspace/FX/AUD_ReverseFactory.h12
-rw-r--r--intern/audaspace/FX/AUD_ReverseReader.cpp38
-rw-r--r--intern/audaspace/FX/AUD_ReverseReader.h29
-rw-r--r--intern/audaspace/FX/AUD_SquareFactory.cpp45
-rw-r--r--intern/audaspace/FX/AUD_SquareFactory.h24
-rw-r--r--intern/audaspace/FX/AUD_SumFactory.cpp22
-rw-r--r--intern/audaspace/FX/AUD_SumFactory.h9
-rw-r--r--intern/audaspace/FX/AUD_SumReader.cpp68
-rw-r--r--intern/audaspace/FX/AUD_SuperposeFactory.cpp49
-rw-r--r--intern/audaspace/FX/AUD_SuperposeFactory.h63
-rw-r--r--intern/audaspace/FX/AUD_SuperposeReader.cpp115
-rw-r--r--intern/audaspace/FX/AUD_SuperposeReader.h79
-rw-r--r--intern/audaspace/FX/AUD_VolumeFactory.cpp29
-rw-r--r--intern/audaspace/FX/AUD_VolumeFactory.h24
-rw-r--r--intern/audaspace/FX/AUD_VolumeReader.cpp69
-rw-r--r--intern/audaspace/Makefile21
-rw-r--r--intern/audaspace/OpenAL/AUD_OpenALDevice.cpp1069
-rw-r--r--intern/audaspace/OpenAL/AUD_OpenALDevice.h73
-rw-r--r--intern/audaspace/Python/AUD_PyAPI.cpp2973
-rw-r--r--intern/audaspace/Python/AUD_PyAPI.h67
-rw-r--r--intern/audaspace/Python/Makefile76
-rw-r--r--intern/audaspace/SConscript14
-rw-r--r--intern/audaspace/SDL/AUD_SDLDevice.cpp11
-rw-r--r--intern/audaspace/SDL/AUD_SDLDevice.h4
-rw-r--r--intern/audaspace/SRC/AUD_SRCResampleFactory.cpp24
-rw-r--r--intern/audaspace/SRC/AUD_SRCResampleFactory.h9
-rw-r--r--intern/audaspace/SRC/AUD_SRCResampleReader.cpp36
-rw-r--r--intern/audaspace/SRC/AUD_SRCResampleReader.h29
-rw-r--r--intern/audaspace/ffmpeg/AUD_FFMPEGFactory.cpp36
-rw-r--r--intern/audaspace/ffmpeg/AUD_FFMPEGFactory.h19
-rw-r--r--intern/audaspace/ffmpeg/AUD_FFMPEGReader.cpp139
-rw-r--r--intern/audaspace/ffmpeg/AUD_FFMPEGReader.h26
-rw-r--r--intern/audaspace/fftw/AUD_BandPassReader.h1
-rw-r--r--intern/audaspace/intern/AUD_3DMath.h189
-rw-r--r--intern/audaspace/intern/AUD_Buffer.cpp21
-rw-r--r--intern/audaspace/intern/AUD_Buffer.h8
-rw-r--r--intern/audaspace/intern/AUD_BufferReader.cpp33
-rw-r--r--intern/audaspace/intern/AUD_BufferReader.h14
-rw-r--r--intern/audaspace/intern/AUD_C-API.cpp485
-rw-r--r--intern/audaspace/intern/AUD_C-API.h192
-rw-r--r--intern/audaspace/intern/AUD_ChannelMapperFactory.cpp35
-rw-r--r--intern/audaspace/intern/AUD_ChannelMapperFactory.h8
-rw-r--r--intern/audaspace/intern/AUD_ChannelMapperReader.cpp32
-rw-r--r--intern/audaspace/intern/AUD_ChannelMapperReader.h12
-rw-r--r--intern/audaspace/intern/AUD_ConverterFactory.cpp23
-rw-r--r--intern/audaspace/intern/AUD_ConverterFactory.h9
-rw-r--r--intern/audaspace/intern/AUD_ConverterReader.cpp18
-rw-r--r--intern/audaspace/intern/AUD_ConverterReader.h15
-rw-r--r--intern/audaspace/intern/AUD_DefaultMixer.cpp63
-rw-r--r--intern/audaspace/intern/AUD_DefaultMixer.h (renamed from intern/audaspace/FX/AUD_SumReader.h)41
-rw-r--r--intern/audaspace/intern/AUD_FileFactory.cpp63
-rw-r--r--intern/audaspace/intern/AUD_FileFactory.h19
-rw-r--r--intern/audaspace/intern/AUD_I3DDevice.h291
-rw-r--r--intern/audaspace/intern/AUD_IDevice.h111
-rw-r--r--intern/audaspace/intern/AUD_IFactory.h2
-rw-r--r--intern/audaspace/intern/AUD_IReader.h25
-rw-r--r--intern/audaspace/intern/AUD_LinearResampleFactory.cpp24
-rw-r--r--intern/audaspace/intern/AUD_LinearResampleFactory.h9
-rw-r--r--intern/audaspace/intern/AUD_LinearResampleReader.cpp45
-rw-r--r--intern/audaspace/intern/AUD_LinearResampleReader.h42
-rw-r--r--intern/audaspace/intern/AUD_Mixer.cpp74
-rw-r--r--intern/audaspace/intern/AUD_Mixer.h53
-rw-r--r--intern/audaspace/intern/AUD_MixerFactory.cpp73
-rw-r--r--intern/audaspace/intern/AUD_MixerFactory.h58
-rw-r--r--intern/audaspace/intern/AUD_NULLDevice.cpp50
-rw-r--r--intern/audaspace/intern/AUD_NULLDevice.h22
-rw-r--r--intern/audaspace/intern/AUD_PyInit.h47
-rw-r--r--intern/audaspace/intern/AUD_ReadDevice.cpp10
-rw-r--r--intern/audaspace/intern/AUD_ReadDevice.h10
-rw-r--r--intern/audaspace/intern/AUD_Reference.h22
-rw-r--r--intern/audaspace/intern/AUD_SequencerFactory.cpp32
-rw-r--r--intern/audaspace/intern/AUD_SequencerFactory.h8
-rw-r--r--intern/audaspace/intern/AUD_SequencerReader.cpp77
-rw-r--r--intern/audaspace/intern/AUD_SequencerReader.h26
-rw-r--r--intern/audaspace/intern/AUD_SilenceFactory.cpp (renamed from intern/audaspace/intern/AUD_SourceCaps.h)22
-rw-r--r--intern/audaspace/intern/AUD_SilenceFactory.h (renamed from intern/audaspace/FX/AUD_RectifyReader.h)33
-rw-r--r--intern/audaspace/intern/AUD_SilenceReader.cpp (renamed from intern/audaspace/FX/AUD_SquareReader.cpp)55
-rw-r--r--intern/audaspace/intern/AUD_SilenceReader.h (renamed from intern/audaspace/FX/AUD_LowpassReader.h)64
-rw-r--r--intern/audaspace/intern/AUD_SinusFactory.cpp19
-rw-r--r--intern/audaspace/intern/AUD_SinusFactory.h20
-rw-r--r--intern/audaspace/intern/AUD_SinusReader.cpp41
-rw-r--r--intern/audaspace/intern/AUD_SinusReader.h29
-rw-r--r--intern/audaspace/intern/AUD_SoftwareDevice.cpp302
-rw-r--r--intern/audaspace/intern/AUD_SoftwareDevice.h21
-rw-r--r--intern/audaspace/intern/AUD_Space.h164
-rw-r--r--intern/audaspace/intern/AUD_StreamBufferFactory.cpp17
-rw-r--r--intern/audaspace/intern/AUD_StreamBufferFactory.h6
-rw-r--r--intern/audaspace/intern/Makefile3
-rw-r--r--intern/audaspace/jack/AUD_JackDevice.cpp55
-rw-r--r--intern/audaspace/jack/AUD_JackDevice.h22
-rw-r--r--intern/audaspace/make/msvc_9_0/audaspace.vcproj130
-rw-r--r--intern/audaspace/sndfile/AUD_SndFileFactory.cpp34
-rw-r--r--intern/audaspace/sndfile/AUD_SndFileFactory.h19
-rw-r--r--intern/audaspace/sndfile/AUD_SndFileReader.cpp53
-rw-r--r--intern/audaspace/sndfile/AUD_SndFileReader.h21
-rw-r--r--intern/ghost/SConscript4
-rw-r--r--intern/smoke/intern/WTURBULENCE.cpp17
-rw-r--r--projectfiles_vc9/blender/BPY_python/BPY_python.vcproj16
-rw-r--r--projectfiles_vc9/blender/blenkernel/BKE_blenkernel.vcproj24
-rw-r--r--projectfiles_vc9/blender/editors/ED_editors.vcproj116
-rw-r--r--projectfiles_vc9/blender/makesrna/RNA_makesrna.vcproj12
-rw-r--r--projectfiles_vc9/blender/makesrna/RNA_rna.vcproj4
-rw-r--r--release/scripts/io/export_3ds.py34
-rw-r--r--release/scripts/io/export_fbx.py60
-rw-r--r--release/scripts/io/export_mdd.py21
-rw-r--r--release/scripts/io/export_obj.py136
-rw-r--r--release/scripts/io/export_ply.py17
-rw-r--r--release/scripts/io/export_x3d.py59
-rw-r--r--release/scripts/io/import_anim_bvh.py2
-rw-r--r--release/scripts/io/import_scene_3ds.py8
-rw-r--r--release/scripts/io/import_scene_obj.py146
-rw-r--r--release/scripts/io/import_shape_mdd.py4
-rw-r--r--release/scripts/io/netrender/client.py20
-rw-r--r--release/scripts/io/netrender/master.py21
-rw-r--r--release/scripts/io/netrender/operators.py37
-rw-r--r--release/scripts/io/netrender/repath.py8
-rw-r--r--release/scripts/io/netrender/slave.py36
-rw-r--r--release/scripts/io/netrender/ui.py20
-rw-r--r--release/scripts/io/netrender/utils.py13
-rw-r--r--release/scripts/keyingsets/keyingsets_utils.py16
-rw-r--r--release/scripts/modules/add_object_utils.py2
-rw-r--r--release/scripts/modules/animsys_refactor.py201
-rw-r--r--release/scripts/modules/bpy/__init__.py2
-rw-r--r--release/scripts/modules/bpy/utils.py4
-rw-r--r--release/scripts/modules/bpy_types.py22
-rw-r--r--release/scripts/modules/bpyml.py24
-rw-r--r--release/scripts/modules/graphviz_export.py4
-rw-r--r--release/scripts/modules/rigify/__init__.py30
-rw-r--r--release/scripts/modules/rigify/arm_biped.py60
-rw-r--r--release/scripts/modules/rigify/copy.py4
-rw-r--r--release/scripts/modules/rigify/delta.py8
-rw-r--r--release/scripts/modules/rigify/eye_balls.py24
-rw-r--r--release/scripts/modules/rigify/eye_lid.py78
-rw-r--r--release/scripts/modules/rigify/finger_curl.py40
-rw-r--r--release/scripts/modules/rigify/leg_biped.py70
-rw-r--r--release/scripts/modules/rigify/leg_quadruped.py44
-rw-r--r--release/scripts/modules/rigify/mouth.py68
-rw-r--r--release/scripts/modules/rigify/neck.py24
-rw-r--r--release/scripts/modules/rigify/neck_flex.py34
-rw-r--r--release/scripts/modules/rigify/palm_curl.py16
-rw-r--r--release/scripts/modules/rigify/shape_key_control.py2
-rw-r--r--release/scripts/modules/rigify/shape_key_distance.py2
-rw-r--r--release/scripts/modules/rigify/shape_key_rotdiff.py2
-rw-r--r--release/scripts/modules/rigify/spine_pivot_flex.py46
-rw-r--r--release/scripts/modules/rigify/stretch.py6
-rw-r--r--release/scripts/modules/rigify/stretch_twist.py12
-rw-r--r--release/scripts/modules/rigify/tail_control.py6
-rw-r--r--release/scripts/modules/rigify/tongue.py34
-rw-r--r--release/scripts/modules/rigify/track_dual.py6
-rw-r--r--release/scripts/modules/rigify/track_reverse.py4
-rw-r--r--release/scripts/modules/rigify_utils.py8
-rw-r--r--release/scripts/modules/rna_info.py12
-rw-r--r--release/scripts/op/add_armature_human.py150
-rw-r--r--release/scripts/op/add_mesh_torus.py4
-rw-r--r--release/scripts/op/animsys_update.py580
-rw-r--r--release/scripts/op/fcurve_euler_filter.py6
-rw-r--r--release/scripts/op/image.py2
-rw-r--r--release/scripts/op/mesh.py12
-rw-r--r--release/scripts/op/nla.py2
-rw-r--r--release/scripts/op/object.py22
-rw-r--r--release/scripts/op/presets.py58
-rw-r--r--release/scripts/op/screen_play_rendered_anim.py2
-rw-r--r--release/scripts/op/sequencer.py2
-rw-r--r--release/scripts/op/uv.py2
-rw-r--r--release/scripts/op/uvcalc_follow_active.py16
-rw-r--r--release/scripts/op/uvcalc_smart_project.py6
-rw-r--r--release/scripts/op/vertexpaint_dirt.py16
-rw-r--r--release/scripts/presets/interaction/blender.py18
-rw-r--r--release/scripts/presets/interaction/maya.py32
-rw-r--r--release/scripts/templates/operator_uv.py4
-rw-r--r--release/scripts/ui/properties_animviz.py12
-rw-r--r--release/scripts/ui/properties_data_armature.py58
-rw-r--r--release/scripts/ui/properties_data_armature_rigify.py6
-rw-r--r--release/scripts/ui/properties_data_bone.py100
-rw-r--r--release/scripts/ui/properties_data_camera.py12
-rw-r--r--release/scripts/ui/properties_data_curve.py72
-rw-r--r--release/scripts/ui/properties_data_lamp.py45
-rw-r--r--release/scripts/ui/properties_data_lattice.py12
-rw-r--r--release/scripts/ui/properties_data_mesh.py56
-rw-r--r--release/scripts/ui/properties_data_metaball.py18
-rw-r--r--release/scripts/ui/properties_data_modifier.py101
-rw-r--r--release/scripts/ui/properties_game.py102
-rw-r--r--release/scripts/ui/properties_material.py643
-rw-r--r--release/scripts/ui/properties_object.py30
-rw-r--r--release/scripts/ui/properties_object_constraint.py148
-rw-r--r--release/scripts/ui/properties_particle.py274
-rw-r--r--release/scripts/ui/properties_physics_cloth.py26
-rw-r--r--release/scripts/ui/properties_physics_common.py34
-rw-r--r--release/scripts/ui/properties_physics_field.py34
-rw-r--r--release/scripts/ui/properties_physics_fluid.py40
-rw-r--r--release/scripts/ui/properties_physics_smoke.py40
-rw-r--r--release/scripts/ui/properties_physics_softbody.py32
-rw-r--r--release/scripts/ui/properties_render.py162
-rw-r--r--release/scripts/ui/properties_scene.py58
-rw-r--r--release/scripts/ui/properties_texture.py209
-rw-r--r--release/scripts/ui/properties_world.py175
-rw-r--r--release/scripts/ui/space_console.py2
-rw-r--r--release/scripts/ui/space_dopesheet.py10
-rw-r--r--release/scripts/ui/space_filebrowser.py28
-rw-r--r--release/scripts/ui/space_graph.py12
-rw-r--r--release/scripts/ui/space_image.py98
-rw-r--r--release/scripts/ui/space_info.py8
-rw-r--r--release/scripts/ui/space_nla.py8
-rw-r--r--release/scripts/ui/space_node.py6
-rw-r--r--release/scripts/ui/space_outliner.py8
-rw-r--r--release/scripts/ui/space_sequencer.py79
-rw-r--r--release/scripts/ui/space_text.py12
-rw-r--r--release/scripts/ui/space_time.py44
-rw-r--r--release/scripts/ui/space_userpref.py166
-rw-r--r--release/scripts/ui/space_userpref_keymap.py164
-rw-r--r--release/scripts/ui/space_view3d.py155
-rw-r--r--release/scripts/ui/space_view3d_toolbar.py117
-rw-r--r--source/Makefile25
-rw-r--r--source/blender/avi/intern/avi.c2
-rw-r--r--source/blender/avi/intern/avi_intern.h2
-rw-r--r--source/blender/blenfont/intern/blf_lang.c1
-rw-r--r--source/blender/blenkernel/BKE_pointcache.h4
-rw-r--r--source/blender/blenkernel/BKE_sequencer.h20
-rw-r--r--source/blender/blenkernel/intern/BME_Customdata.c2
-rw-r--r--source/blender/blenkernel/intern/BME_conversions.c7
-rw-r--r--source/blender/blenkernel/intern/DerivedMesh.c7
-rw-r--r--source/blender/blenkernel/intern/anim.c3
-rw-r--r--source/blender/blenkernel/intern/armature.c5
-rw-r--r--source/blender/blenkernel/intern/boids.c13
-rw-r--r--source/blender/blenkernel/intern/booleanops_mesh.c1
-rw-r--r--source/blender/blenkernel/intern/brush.c1
-rw-r--r--source/blender/blenkernel/intern/cdderivedmesh.c10
-rw-r--r--source/blender/blenkernel/intern/collision.c3
-rw-r--r--source/blender/blenkernel/intern/constraint.c215
-rw-r--r--source/blender/blenkernel/intern/depsgraph.c12
-rw-r--r--source/blender/blenkernel/intern/effect.c6
-rw-r--r--source/blender/blenkernel/intern/fluidsim.c1
-rw-r--r--source/blender/blenkernel/intern/fmodifier.c4
-rw-r--r--source/blender/blenkernel/intern/group.c9
-rw-r--r--source/blender/blenkernel/intern/idcode.c2
-rw-r--r--source/blender/blenkernel/intern/idprop.c53
-rw-r--r--source/blender/blenkernel/intern/implicit.c5
-rw-r--r--source/blender/blenkernel/intern/material.c21
-rw-r--r--source/blender/blenkernel/intern/mesh.c20
-rw-r--r--source/blender/blenkernel/intern/modifier.c12
-rw-r--r--source/blender/blenkernel/intern/node.c6
-rw-r--r--source/blender/blenkernel/intern/object.c34
-rw-r--r--source/blender/blenkernel/intern/paint.c1
-rw-r--r--source/blender/blenkernel/intern/particle.c26
-rw-r--r--source/blender/blenkernel/intern/particle_system.c12
-rw-r--r--source/blender/blenkernel/intern/pointcache.c4
-rw-r--r--source/blender/blenkernel/intern/scene.c12
-rw-r--r--source/blender/blenkernel/intern/screen.c4
-rw-r--r--source/blender/blenkernel/intern/seqeffects.c31
-rw-r--r--source/blender/blenkernel/intern/sequencer.c76
-rw-r--r--source/blender/blenkernel/intern/shrinkwrap.c1
-rw-r--r--source/blender/blenkernel/intern/sketch.c3
-rw-r--r--source/blender/blenkernel/intern/smoke.c4
-rw-r--r--source/blender/blenkernel/intern/softbody.c3
-rw-r--r--source/blender/blenkernel/intern/sound.c14
-rw-r--r--source/blender/blenkernel/intern/text.c6
-rw-r--r--source/blender/blenkernel/intern/texture.c31
-rw-r--r--source/blender/blenkernel/intern/world.c12
-rw-r--r--source/blender/blenkernel/intern/writeframeserver.c1
-rw-r--r--source/blender/blenlib/BLI_ghash.h9
-rw-r--r--source/blender/blenlib/BLI_listbase.h1
-rw-r--r--source/blender/blenlib/intern/BLI_ghash.c2
-rw-r--r--source/blender/blenlib/intern/listbase.c21
-rw-r--r--source/blender/blenlib/intern/math_geom.c12
-rw-r--r--source/blender/blenlib/intern/math_matrix.c8
-rw-r--r--source/blender/blenlib/intern/math_rotation.c13
-rw-r--r--source/blender/blenlib/intern/math_vector.c6
-rw-r--r--source/blender/blenlib/intern/pbvh.c2
-rw-r--r--source/blender/blenlib/intern/winstuff.c1
-rw-r--r--source/blender/blenloader/intern/readfile.c1
-rw-r--r--source/blender/collada/DocumentExporter.cpp2
-rw-r--r--source/blender/editors/animation/fmodifier_ui.c42
-rw-r--r--source/blender/editors/animation/keyframes_draw.c1
-rw-r--r--source/blender/editors/armature/armature_ops.c1
-rw-r--r--source/blender/editors/armature/editarmature.c4
-rw-r--r--source/blender/editors/armature/editarmature_generate.c1
-rw-r--r--source/blender/editors/armature/poseSlide.c1
-rw-r--r--source/blender/editors/armature/poseUtils.c1
-rw-r--r--source/blender/editors/armature/poselib.c6
-rw-r--r--source/blender/editors/armature/poseobject.c9
-rw-r--r--source/blender/editors/armature/reeb.c6
-rw-r--r--source/blender/editors/curve/curve_ops.c1
-rw-r--r--source/blender/editors/curve/editcurve.c9
-rw-r--r--source/blender/editors/gpencil/drawgpencil.c1
-rw-r--r--source/blender/editors/gpencil/editaction_gpencil.c9
-rw-r--r--source/blender/editors/gpencil/gpencil_buttons.c11
-rw-r--r--source/blender/editors/gpencil/gpencil_edit.c2
-rw-r--r--source/blender/editors/include/UI_interface.h4
-rw-r--r--source/blender/editors/interface/interface.c1
-rw-r--r--source/blender/editors/interface/interface_anim.c1
-rw-r--r--source/blender/editors/interface/interface_icons.c1
-rw-r--r--source/blender/editors/interface/interface_layout.c10
-rw-r--r--source/blender/editors/interface/interface_style.c2
-rw-r--r--source/blender/editors/interface/interface_templates.c156
-rw-r--r--source/blender/editors/interface/interface_widgets.c1
-rw-r--r--source/blender/editors/interface/view2d.c1
-rw-r--r--source/blender/editors/interface/view2d_ops.c1
-rw-r--r--source/blender/editors/mesh/editface.c1
-rw-r--r--source/blender/editors/mesh/editmesh_add.c4
-rw-r--r--source/blender/editors/mesh/editmesh_mods.c1
-rw-r--r--source/blender/editors/mesh/editmesh_tools.c6
-rw-r--r--source/blender/editors/mesh/loopcut.c1
-rw-r--r--source/blender/editors/mesh/mesh_ops.c1
-rw-r--r--source/blender/editors/object/object_add.c10
-rw-r--r--source/blender/editors/object/object_edit.c12
-rw-r--r--source/blender/editors/object/object_group.c1
-rw-r--r--source/blender/editors/object/object_ops.c9
-rw-r--r--source/blender/editors/object/object_relations.c8
-rw-r--r--source/blender/editors/object/object_select.c4
-rw-r--r--source/blender/editors/object/object_transform.c1
-rw-r--r--source/blender/editors/physics/physics_fluid.c1
-rw-r--r--source/blender/editors/render/render_internal.c30
-rw-r--r--source/blender/editors/render/render_preview.c9
-rw-r--r--source/blender/editors/screen/screen_edit.c1
-rw-r--r--source/blender/editors/screen/screen_ops.c24
-rw-r--r--source/blender/editors/sculpt_paint/paint_vertex.c18
-rw-r--r--source/blender/editors/sculpt_paint/sculpt.c15
-rw-r--r--source/blender/editors/sound/Makefile2
-rw-r--r--source/blender/editors/space_action/action_draw.c2
-rw-r--r--source/blender/editors/space_action/action_edit.c1
-rw-r--r--source/blender/editors/space_action/action_ops.c1
-rw-r--r--source/blender/editors/space_api/space.c1
-rw-r--r--source/blender/editors/space_api/spacetypes.c1
-rw-r--r--source/blender/editors/space_buttons/buttons_header.c3
-rw-r--r--source/blender/editors/space_console/console_draw.c1
-rw-r--r--source/blender/editors/space_file/filesel.c2
-rw-r--r--source/blender/editors/space_file/writeimage.c1
-rw-r--r--source/blender/editors/space_graph/Makefile2
-rw-r--r--source/blender/editors/space_graph/graph_buttons.c13
-rw-r--r--source/blender/editors/space_graph/graph_draw.c1
-rw-r--r--source/blender/editors/space_graph/graph_edit.c4
-rw-r--r--source/blender/editors/space_graph/graph_ops.c1
-rw-r--r--source/blender/editors/space_graph/graph_utils.c1
-rw-r--r--source/blender/editors/space_image/image_buttons.c12
-rw-r--r--source/blender/editors/space_image/image_header.c3
-rw-r--r--source/blender/editors/space_image/space_image.c2
-rw-r--r--source/blender/editors/space_info/info_ops.c2
-rw-r--r--source/blender/editors/space_logic/logic_buttons.c3
-rw-r--r--source/blender/editors/space_logic/logic_window.c251
-rw-r--r--source/blender/editors/space_logic/space_logic.c1
-rw-r--r--source/blender/editors/space_nla/nla_buttons.c25
-rw-r--r--source/blender/editors/space_nla/nla_channels.c1
-rw-r--r--source/blender/editors/space_nla/nla_draw.c1
-rw-r--r--source/blender/editors/space_nla/nla_ops.c1
-rw-r--r--source/blender/editors/space_node/drawnode.c70
-rw-r--r--source/blender/editors/space_node/node_buttons.c1
-rw-r--r--source/blender/editors/space_node/node_draw.c1
-rw-r--r--source/blender/editors/space_node/node_edit.c1
-rw-r--r--source/blender/editors/space_node/node_header.c2
-rw-r--r--source/blender/editors/space_node/space_node.c1
-rw-r--r--source/blender/editors/space_outliner/outliner.c2
-rw-r--r--source/blender/editors/space_outliner/space_outliner.c1
-rw-r--r--source/blender/editors/space_script/script_edit.c1
-rw-r--r--source/blender/editors/space_script/script_header.c3
-rw-r--r--source/blender/editors/space_script/script_ops.c1
-rw-r--r--source/blender/editors/space_sequencer/Makefile1
-rw-r--r--source/blender/editors/space_sequencer/sequencer_add.c2
-rw-r--r--source/blender/editors/space_sequencer/sequencer_draw.c35
-rw-r--r--source/blender/editors/space_sequencer/sequencer_edit.c24
-rw-r--r--source/blender/editors/space_sequencer/sequencer_ops.c1
-rw-r--r--source/blender/editors/space_sequencer/sequencer_select.c1
-rw-r--r--source/blender/editors/space_sound/Makefile2
-rw-r--r--source/blender/editors/space_text/text_draw.c15
-rw-r--r--source/blender/editors/space_text/text_header.c3
-rw-r--r--source/blender/editors/space_text/text_ops.c2
-rw-r--r--source/blender/editors/space_time/time_ops.c1
-rw-r--r--source/blender/editors/space_userpref/space_userpref.c1
-rw-r--r--source/blender/editors/space_view3d/drawanimviz.c2
-rw-r--r--source/blender/editors/space_view3d/drawarmature.c1
-rw-r--r--source/blender/editors/space_view3d/drawobject.c3
-rw-r--r--source/blender/editors/space_view3d/drawvolume.c1
-rw-r--r--source/blender/editors/space_view3d/view3d_buttons.c3
-rw-r--r--source/blender/editors/space_view3d/view3d_draw.c1
-rw-r--r--source/blender/editors/space_view3d/view3d_header.c12
-rw-r--r--source/blender/editors/space_view3d/view3d_ops.c7
-rw-r--r--source/blender/editors/space_view3d/view3d_toolbar.c1
-rw-r--r--source/blender/editors/space_view3d/view3d_view.c5
-rw-r--r--source/blender/editors/transform/transform.c4
-rw-r--r--source/blender/editors/transform/transform_constraints.c1
-rw-r--r--source/blender/editors/transform/transform_conversions.c11
-rw-r--r--source/blender/editors/transform/transform_generics.c4
-rw-r--r--source/blender/editors/transform/transform_ops.c2
-rw-r--r--source/blender/editors/transform/transform_snap.c5
-rw-r--r--source/blender/gpu/intern/gpu_extensions.c2
-rw-r--r--source/blender/gpu/intern/gpu_material.c2
-rw-r--r--source/blender/ikplugin/intern/ikplugin_api.c1
-rw-r--r--source/blender/imbuf/intern/allocimbuf.c1
-rw-r--r--source/blender/imbuf/intern/anim.c2
-rw-r--r--source/blender/imbuf/intern/cache.c2
-rw-r--r--source/blender/imbuf/intern/filter.c1
-rw-r--r--source/blender/imbuf/intern/imbuf.h2
-rw-r--r--source/blender/imbuf/intern/iris.c3
-rw-r--r--source/blender/imbuf/intern/jp2.c4
-rw-r--r--source/blender/imbuf/intern/png.c1
-rw-r--r--source/blender/imbuf/intern/radiance_hdr.c3
-rw-r--r--source/blender/imbuf/intern/rotate.c3
-rw-r--r--source/blender/imbuf/intern/scaling.c1
-rw-r--r--source/blender/imbuf/intern/targa.c1
-rw-r--r--source/blender/makesdna/DNA_modifier_types.h3
-rw-r--r--source/blender/makesdna/DNA_scene_types.h1
-rw-r--r--source/blender/makesdna/intern/SConscript2
-rw-r--r--source/blender/makesrna/RNA_access.h5
-rw-r--r--source/blender/makesrna/RNA_define.h2
-rw-r--r--source/blender/makesrna/RNA_enum_types.h2
-rw-r--r--source/blender/makesrna/RNA_types.h3
-rw-r--r--source/blender/makesrna/intern/Makefile2
-rw-r--r--source/blender/makesrna/intern/SConscript4
-rw-r--r--source/blender/makesrna/intern/rna_ID.c10
-rw-r--r--source/blender/makesrna/intern/rna_access.c92
-rw-r--r--source/blender/makesrna/intern/rna_action.c46
-rw-r--r--source/blender/makesrna/intern/rna_actuator.c114
-rw-r--r--source/blender/makesrna/intern/rna_animation.c23
-rw-r--r--source/blender/makesrna/intern/rna_animviz.c20
-rw-r--r--source/blender/makesrna/intern/rna_armature.c55
-rw-r--r--source/blender/makesrna/intern/rna_boid.c55
-rw-r--r--source/blender/makesrna/intern/rna_brush.c20
-rw-r--r--source/blender/makesrna/intern/rna_camera.c2
-rw-r--r--source/blender/makesrna/intern/rna_cloth.c12
-rw-r--r--source/blender/makesrna/intern/rna_color.c6
-rw-r--r--source/blender/makesrna/intern/rna_constraint.c130
-rw-r--r--source/blender/makesrna/intern/rna_controller.c10
-rw-r--r--source/blender/makesrna/intern/rna_curve.c71
-rw-r--r--source/blender/makesrna/intern/rna_define.c10
-rw-r--r--source/blender/makesrna/intern/rna_fcurve.c82
-rw-r--r--source/blender/makesrna/intern/rna_fluidsim.c30
-rw-r--r--source/blender/makesrna/intern/rna_gpencil.c10
-rw-r--r--source/blender/makesrna/intern/rna_group.c2
-rw-r--r--source/blender/makesrna/intern/rna_image.c20
-rw-r--r--source/blender/makesrna/intern/rna_image_api.c2
-rw-r--r--source/blender/makesrna/intern/rna_internal.h4
-rw-r--r--source/blender/makesrna/intern/rna_key.c6
-rw-r--r--source/blender/makesrna/intern/rna_lamp.c22
-rw-r--r--source/blender/makesrna/intern/rna_lattice.c8
-rw-r--r--source/blender/makesrna/intern/rna_main.c10
-rw-r--r--source/blender/makesrna/intern/rna_material.c166
-rw-r--r--source/blender/makesrna/intern/rna_material_api.c9
-rw-r--r--source/blender/makesrna/intern/rna_mesh.c114
-rw-r--r--source/blender/makesrna/intern/rna_mesh_api.c2
-rw-r--r--source/blender/makesrna/intern/rna_meta.c15
-rw-r--r--source/blender/makesrna/intern/rna_modifier.c102
-rw-r--r--source/blender/makesrna/intern/rna_nla.c12
-rw-r--r--source/blender/makesrna/intern/rna_nodetree.c77
-rw-r--r--source/blender/makesrna/intern/rna_object.c76
-rw-r--r--source/blender/makesrna/intern/rna_object_force.c109
-rw-r--r--source/blender/makesrna/intern/rna_particle.c209
-rw-r--r--source/blender/makesrna/intern/rna_pose.c61
-rw-r--r--source/blender/makesrna/intern/rna_render.c4
-rw-r--r--source/blender/makesrna/intern/rna_rna.c29
-rw-r--r--source/blender/makesrna/intern/rna_scene.c255
-rw-r--r--source/blender/makesrna/intern/rna_scene_api.c4
-rw-r--r--source/blender/makesrna/intern/rna_screen.c8
-rw-r--r--source/blender/makesrna/intern/rna_sculpt_paint.c47
-rw-r--r--source/blender/makesrna/intern/rna_sensor.c33
-rw-r--r--source/blender/makesrna/intern/rna_sequencer.c58
-rw-r--r--source/blender/makesrna/intern/rna_smoke.c28
-rw-r--r--source/blender/makesrna/intern/rna_sound.c2
-rw-r--r--source/blender/makesrna/intern/rna_space.c208
-rw-r--r--source/blender/makesrna/intern/rna_text.c22
-rw-r--r--source/blender/makesrna/intern/rna_texture.c76
-rw-r--r--source/blender/makesrna/intern/rna_ui.c4
-rw-r--r--source/blender/makesrna/intern/rna_ui_api.c4
-rw-r--r--source/blender/makesrna/intern/rna_userdef.c152
-rw-r--r--source/blender/makesrna/intern/rna_vfont.c2
-rw-r--r--source/blender/makesrna/intern/rna_wm.c22
-rw-r--r--source/blender/makesrna/intern/rna_world.c30
-rwxr-xr-xsource/blender/makesrna/rna_cleanup/rna_cleaner.py49
-rwxr-xr-xsource/blender/makesrna/rna_cleanup/rna_cleaner_merge.py11
-rw-r--r--source/blender/makesrna/rna_cleanup/rna_properties.txt9217
-rwxr-xr-xsource/blender/makesrna/rna_cleanup/rna_update.sh13
-rw-r--r--source/blender/modifiers/intern/MOD_armature.c2
-rw-r--r--source/blender/modifiers/intern/MOD_array.c8
-rw-r--r--source/blender/modifiers/intern/MOD_bevel.c1
-rw-r--r--source/blender/modifiers/intern/MOD_boolean_util.c2
-rw-r--r--source/blender/modifiers/intern/MOD_build.c2
-rw-r--r--source/blender/modifiers/intern/MOD_cloth.c2
-rw-r--r--source/blender/modifiers/intern/MOD_collision.c2
-rw-r--r--source/blender/modifiers/intern/MOD_curve.c2
-rw-r--r--source/blender/modifiers/intern/MOD_lattice.c2
-rw-r--r--source/blender/modifiers/intern/MOD_mask.c6
-rw-r--r--source/blender/modifiers/intern/MOD_particleinstance.c2
-rw-r--r--source/blender/modifiers/intern/MOD_shrinkwrap.c2
-rw-r--r--source/blender/modifiers/intern/MOD_util.c2
-rw-r--r--source/blender/nodes/intern/CMP_nodes/CMP_chromaMatte.c86
-rw-r--r--source/blender/nodes/intern/CMP_nodes/CMP_sepcombHSVA.c2
-rw-r--r--source/blender/python/CMakeLists.txt1
-rw-r--r--source/blender/python/SConscript2
-rw-r--r--source/blender/python/doc/examples/mathutils.py4
-rw-r--r--source/blender/python/doc/sphinx_doc_gen.py18
-rw-r--r--source/blender/python/generic/bgl.c2
-rw-r--r--source/blender/python/generic/blf_api.c6
-rw-r--r--source/blender/python/generic/bpy_internal_import.c2
-rw-r--r--source/blender/python/generic/geometry.c2
-rw-r--r--source/blender/python/generic/mathutils.c2
-rw-r--r--source/blender/python/generic/mathutils_color.c2
-rw-r--r--source/blender/python/generic/mathutils_euler.c2
-rw-r--r--source/blender/python/generic/mathutils_matrix.c2
-rw-r--r--source/blender/python/generic/mathutils_quat.c4
-rw-r--r--source/blender/python/generic/mathutils_vector.c8
-rw-r--r--source/blender/python/generic/noise.c2
-rw-r--r--source/blender/python/intern/Makefile1
-rw-r--r--source/blender/python/intern/bpy.c6
-rw-r--r--source/blender/python/intern/bpy_operator.c4
-rw-r--r--source/blender/python/intern/bpy_operator_wrap.c23
-rw-r--r--source/blender/python/intern/bpy_props.c2
-rw-r--r--source/blender/python/intern/bpy_rna.c148
-rw-r--r--source/blender/python/intern/bpy_rna.h2
-rw-r--r--source/blender/python/intern/bpy_util.c26
-rw-r--r--source/blender/python/intern/bpy_util.h2
-rw-r--r--source/blender/render/intern/raytrace/bvh.h1
-rw-r--r--source/blender/render/intern/raytrace/rayobject_qbvh.cpp1
-rw-r--r--source/blender/render/intern/raytrace/rayobject_svbvh.cpp2
-rw-r--r--source/blender/render/intern/source/pipeline.c6
-rw-r--r--source/blender/windowmanager/WM_api.h3
-rw-r--r--source/blender/windowmanager/intern/wm.c9
-rw-r--r--source/blender/windowmanager/intern/wm_dragdrop.c2
-rw-r--r--source/blender/windowmanager/intern/wm_event_system.c16
-rw-r--r--source/blender/windowmanager/intern/wm_init_exit.c115
-rw-r--r--source/blender/windowmanager/intern/wm_operators.c80
-rw-r--r--source/blender/windowmanager/intern/wm_window.c2
-rw-r--r--source/blender/windowmanager/wm_window.h2
-rw-r--r--source/creator/creator.c6
-rw-r--r--source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp12
-rw-r--r--source/gameengine/Converter/BL_ArmatureChannel.cpp16
-rw-r--r--source/gameengine/Converter/BL_ArmatureConstraint.cpp4
-rw-r--r--source/gameengine/Converter/BL_ArmatureObject.cpp1
-rw-r--r--source/gameengine/Expressions/PyObjectPlus.h3
-rw-r--r--source/gameengine/GameLogic/SCA_ISensor.cpp17
-rw-r--r--source/gameengine/GameLogic/SCA_ISensor.h15
-rw-r--r--source/gameengine/GameLogic/SCA_JoystickSensor.cpp1
-rw-r--r--source/gameengine/GameLogic/SCA_PythonController.cpp2
-rw-r--r--source/gameengine/GamePlayer/ghost/GPG_ghost.cpp2
-rw-r--r--source/gameengine/Ketsji/KX_BlenderMaterial.cpp39
-rw-r--r--source/gameengine/Ketsji/KX_BlenderMaterial.h8
-rw-r--r--source/gameengine/Ketsji/KX_Camera.cpp12
-rw-r--r--source/gameengine/Ketsji/KX_ConstraintWrapper.cpp8
-rw-r--r--source/gameengine/Ketsji/KX_ConstraintWrapper.h2
-rw-r--r--source/gameengine/Ketsji/KX_KetsjiEngine.cpp43
-rw-r--r--source/gameengine/Ketsji/KX_PolyProxy.cpp161
-rw-r--r--source/gameengine/Ketsji/KX_PolyProxy.h10
-rw-r--r--source/gameengine/Ketsji/KX_PolygonMaterial.cpp2
-rw-r--r--source/gameengine/Ketsji/KX_PythonInit.cpp64
-rw-r--r--source/gameengine/Ketsji/KX_Scene.cpp2
-rw-r--r--source/gameengine/Ketsji/KX_SoundActuator.cpp197
-rw-r--r--source/gameengine/Ketsji/KX_SoundActuator.h4
-rw-r--r--source/gameengine/Ketsji/KX_VertexProxy.cpp454
-rw-r--r--source/gameengine/Ketsji/KX_VertexProxy.h31
610 files changed, 19616 insertions, 14420 deletions
diff --git a/build_files/scons/config/freebsd7-config.py b/build_files/scons/config/freebsd7-config.py
new file mode 100644
index 00000000000..7d66a69a2dc
--- /dev/null
+++ b/build_files/scons/config/freebsd7-config.py
@@ -0,0 +1,213 @@
+CC = 'gcc44'
+CXX = 'g++44'
+
+LCGDIR = '../lib/freebsd7'
+LIBDIR = "${LCGDIR}"
+
+BF_PYTHON = '/usr/local'
+BF_PYTHON_LIBPATH = '${BF_PYTHON}/lib'
+BF_PYTHON_VERSION = '3.1'
+WITH_BF_STATICPYTHON = False
+BF_PYTHON_INC = '${BF_PYTHON}/include/python${BF_PYTHON_VERSION}'
+BF_PYTHON_BINARY = '${BF_PYTHON}/bin/python${BF_PYTHON_VERSION}'
+BF_PYTHON_LIB = 'python${BF_PYTHON_VERSION}'
+BF_PYTHON_LIB_STATIC = '${BF_PYTHON}/lib/libpython${BF_PYTHON_VERSION}.a'
+
+WITH_BF_OPENAL = True
+WITH_BF_STATICOPENAL = False
+BF_OPENAL = '/usr/local'
+BF_OPENAL_INC = '${BF_OPENAL}/include'
+BF_OPENAL_LIB = 'openal'
+BF_OPENAL_LIB_STATIC = '${BF_OPENAL}/lib/libopenal.a'
+
+BF_CXX = '/usr/local'
+WITH_BF_STATICCXX = False
+BF_CXX_LIB_STATIC = '${BF_CXX}/lib/libstdc++.a'
+
+BF_LIBSAMPLERATE = '/usr/local'
+BF_LIBSAMPLERATE_INC = '${BF_LIBSAMPLERATE}/include'
+BF_LIBSAMPLERATE_LIB = 'samplerate'
+BF_LIBSAMPLERATE_LIBPATH = '${BF_LIBSAMPLERATE}/lib'
+
+WITH_BF_JACK = True
+BF_JACK = '/usr/local'
+BF_JACK_INC = '${BF_JACK}/include/jack'
+BF_JACK_LIB = 'jack'
+BF_JACK_LIBPATH = '${BF_JACK}/lib'
+
+WITH_BF_SNDFILE = True
+BF_SNDFILE = '/usr/local'
+BF_SNDFILE_INC = '${BF_SNDFILE}/include/sndfile'
+BF_SNDFILE_LIB = 'sndfile'
+BF_SNDFILE_LIBPATH = '${BF_SNDFILE}/lib'
+
+WITH_BF_SDL = True
+BF_SDL = '/usr/local' #$(shell sdl-config --prefix)
+BF_SDL_INC = '${BF_SDL}/include/SDL' #$(shell $(BF_SDL)/bin/sdl-config --cflags)
+BF_SDL_LIB = 'SDL' #BF_SDL #$(shell $(BF_SDL)/bin/sdl-config --libs) -lSDL_mixer
+
+WITH_BF_OPENEXR = True
+WITH_BF_STATICOPENEXR = False
+BF_OPENEXR = '/usr/local'
+# when compiling with your own openexr lib you might need to set...
+# BF_OPENEXR_INC = '${BF_OPENEXR}/include/OpenEXR ${BF_OPENEXR}/include'
+
+BF_OPENEXR_INC = '${BF_OPENEXR}/include/OpenEXR'
+BF_OPENEXR_LIB = 'Half IlmImf Iex Imath '
+BF_OPENEXR_LIB_STATIC = '${BF_OPENEXR}/lib/libHalf.a ${BF_OPENEXR}/lib/libIlmImf.a ${BF_OPENEXR}/lib/libIex.a ${BF_OPENEXR}/lib/libImath.a ${BF_OPENEXR}/lib/libIlmThread.a'
+# BF_OPENEXR_LIBPATH = '${BF_OPENEXR}/lib'
+
+
+WITH_BF_DDS = True
+
+WITH_BF_JPEG = True
+BF_JPEG = '/usr/local'
+BF_JPEG_INC = '${BF_JPEG}/include'
+BF_JPEG_LIB = 'jpeg'
+
+WITH_BF_PNG = True
+BF_PNG = '/usr/local'
+BF_PNG_INC = '${BF_PNG}/include'
+BF_PNG_LIB = 'png'
+
+WITH_BF_TIFF = True
+BF_TIFF = '/usr/local'
+BF_TIFF_INC = '${BF_TIFF}/include'
+BF_TIFF_LIB = 'tiff'
+
+WITH_BF_ZLIB = True
+BF_ZLIB = '/usr'
+BF_ZLIB_INC = '${BF_ZLIB}/include'
+BF_ZLIB_LIB = 'z'
+
+WITH_BF_INTERNATIONAL = True
+
+BF_GETTEXT = '/usr/local'
+BF_GETTEXT_INC = '${BF_GETTEXT}/include'
+BF_GETTEXT_LIB = 'gettextlib'
+BF_GETTEXT_LIBPATH = '${BF_GETTEXT}/lib'
+
+WITH_BF_GAMEENGINE = True
+WITH_BF_PLAYER = True
+
+WITH_BF_BULLET = True
+BF_BULLET = '#extern/bullet2/src'
+BF_BULLET_INC = '${BF_BULLET}'
+BF_BULLET_LIB = 'extern_bullet'
+
+# enable freetype2 support for text objects
+BF_FREETYPE = '/usr/local'
+BF_FREETYPE_INC = '${BF_FREETYPE}/include ${BF_FREETYPE}/include/freetype2'
+BF_FREETYPE_LIB = 'freetype'
+
+WITH_BF_QUICKTIME = True # -DWITH_QUICKTIME
+BF_QUICKTIME = '/usr/local'
+BF_QUICKTIME_INC = '${BF_QUICKTIME}/include'
+
+WITH_BF_ICONV = True
+BF_ICONV = LIBDIR + "/iconv"
+BF_ICONV_INC = '${BF_ICONV}/include'
+BF_ICONV_LIB = 'iconv'
+BF_ICONV_LIBPATH = '${BF_ICONV}/lib'
+
+WITH_BF_BINRELOC = True
+
+# enable ffmpeg support
+WITH_BF_FFMPEG = True # -DWITH_FFMPEG
+BF_FFMPEG = '/usr/local'
+BF_FFMPEG_LIB = 'avformat avcodec swscale avutil avdevice'
+BF_FFMPEG_INC = '${BF_FFMPEG}/include'
+BF_FFMPEG_LIBPATH='${BF_FFMPEG}/lib'
+
+# enable ogg, vorbis and theora in ffmpeg
+WITH_BF_OGG = True # -DWITH_OGG
+BF_OGG = '/usr/local'
+BF_OGG_INC = '${BF_OGG}/include'
+BF_OGG_LIB = 'ogg vorbis vorbisenc theoraenc theoradec'
+
+WITH_BF_OPENJPEG = True
+BF_OPENJPEG = '#extern/libopenjpeg'
+BF_OPENJPEG_LIB = ''
+BF_OPENJPEG_INC = '${BF_OPENJPEG}'
+BF_OPENJPEG_LIBPATH='${BF_OPENJPEG}/lib'
+
+WITH_BF_FFTW3 = True
+BF_FFTW3 = LIBDIR + '/usr/local'
+BF_FFTW3_INC = '${BF_FFTW3}/include'
+BF_FFTW3_LIB = 'fftw3'
+BF_FFTW3_LIBPATH = '${BF_FFTW3}/lib'
+
+WITH_BF_REDCODE = True
+BF_REDCODE = '#extern/libredcode'
+BF_REDCODE_LIB = ''
+# BF_REDCODE_INC = '${BF_REDCODE}/include'
+BF_REDCODE_INC = '${BF_REDCODE}/../' #C files request "libredcode/format.h" which is in "#extern/libredcode/format.h", stupid but compiles for now.
+BF_REDCODE_LIBPATH='${BF_REDCODE}/lib'
+
+# Mesa Libs should go here if your using them as well....
+WITH_BF_STATICOPENGL = False
+BF_OPENGL = '/usr/local'
+BF_OPENGL_INC = '${BF_OPENGL}/include'
+BF_OPENGL_LIB = 'GL GLU X11 Xi'
+BF_OPENGL_LIBPATH = '/usr/X11R6/lib'
+BF_OPENGL_LIB_STATIC = '${BF_OPENGL_LIBPATH}/libGL.a ${BF_OPENGL_LIBPATH}/libGLU.a ${BF_OPENGL_LIBPATH}/libXxf86vm.a ${BF_OPENGL_LIBPATH}/libX11.a ${BF_OPENGL_LIBPATH}/libXi.a ${BF_OPENGL_LIBPATH}/libXext.a ${BF_OPENGL_LIBPATH}/libXxf86vm.a'
+
+WITH_BF_COLLADA = False
+BF_COLLADA = '#source/blender/collada'
+BF_COLLADA_INC = '${BF_COLLADA}'
+BF_COLLADA_LIB = 'bf_collada'
+BF_OPENCOLLADA = '/usr'
+BF_OPENCOLLADA_INC = '${BF_OPENCOLLADA}'
+BF_OPENCOLLADA_LIB = 'OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver pcre buffer ftoa'
+BF_OPENCOLLADA_LIBPATH = '${BF_OPENCOLLADA}/lib'
+BF_PCRE = '/usr/local'
+BF_PCRE_LIB = 'pcre'
+BF_PCRE_LIBPATH = '${BF_PCRE}/lib'
+BF_EXPAT = '/usr/local'
+BF_EXPAT_LIB = 'expat'
+BF_EXPAT_LIBPATH = '${BF_EXPAT}/lib'
+
+WITH_BF_OPENMP = True
+
+#Ray trace optimization
+WITH_BF_RAYOPTIMIZATION = True
+BF_RAYOPTIMIZATION_SSE_FLAGS = ['-msse','-pthread']
+
+CCFLAGS = ['-pipe','-fPIC','-funsigned-char','-fno-strict-aliasing','-D_LARGEFILE_SOURCE', '-D_FILE_OFFSET_BITS=64']
+
+CPPFLAGS = []
+CXXFLAGS = ['-pipe','-fPIC','-funsigned-char','-fno-strict-aliasing','-D_LARGEFILE_SOURCE', '-D_FILE_OFFSET_BITS=64']
+if WITH_BF_FFMPEG:
+ # libavutil needs UINT64_C()
+ CXXFLAGS += ['-D__STDC_CONSTANT_MACROS', ]
+REL_CFLAGS = ['-O2']
+REL_CCFLAGS = ['-O2']
+##BF_DEPEND = True
+##
+##AR = ar
+##ARFLAGS = ruv
+##ARFLAGSQUIET = ru
+##
+C_WARN = ['-Wno-char-subscripts', '-Wdeclaration-after-statement']
+CC_WARN = ['-Wall']
+CXX_WARN = ['-Wno-invalid-offsetof', '-Wno-sign-compare']
+
+
+##FIX_STUBS_WARNINGS = -Wno-unused
+
+LLIBS = ['util', 'c', 'm', 'dl', 'pthread', 'stdc++']
+##LOPTS = --dynamic
+##DYNLDFLAGS = -shared $(LDFLAGS)
+
+BF_PROFILE = False
+BF_PROFILE_CCFLAGS = ['-pg','-g']
+BF_PROFILE_LINKFLAGS = ['-pg']
+
+BF_DEBUG = False
+BF_DEBUG_CCFLAGS = ['-g']
+
+BF_BUILDDIR = '../build/freebsd7'
+BF_INSTALLDIR='../install/freebsd7'
+
+#Link against pthread
+PLATFORM_LINKFLAGS = ['-pthread']
diff --git a/build_files/scons/config/freebsd8-config.py b/build_files/scons/config/freebsd8-config.py
new file mode 100644
index 00000000000..c0df29df335
--- /dev/null
+++ b/build_files/scons/config/freebsd8-config.py
@@ -0,0 +1,213 @@
+CC = 'gcc44'
+CXX = 'g++44'
+
+LCGDIR = '../lib/freebsd8'
+LIBDIR = "${LCGDIR}"
+
+BF_PYTHON = '/usr/local'
+BF_PYTHON_LIBPATH = '${BF_PYTHON}/lib'
+BF_PYTHON_VERSION = '3.1'
+WITH_BF_STATICPYTHON = False
+BF_PYTHON_INC = '${BF_PYTHON}/include/python${BF_PYTHON_VERSION}'
+BF_PYTHON_BINARY = '${BF_PYTHON}/bin/python${BF_PYTHON_VERSION}'
+BF_PYTHON_LIB = 'python${BF_PYTHON_VERSION}'
+BF_PYTHON_LIB_STATIC = '${BF_PYTHON}/lib/libpython${BF_PYTHON_VERSION}.a'
+
+WITH_BF_OPENAL = True
+WITH_BF_STATICOPENAL = False
+BF_OPENAL = '/usr/local'
+BF_OPENAL_INC = '${BF_OPENAL}/include'
+BF_OPENAL_LIB = 'openal'
+BF_OPENAL_LIB_STATIC = '${BF_OPENAL}/lib/libopenal.a'
+
+BF_CXX = '/usr/local'
+WITH_BF_STATICCXX = False
+BF_CXX_LIB_STATIC = '${BF_CXX}/lib/libstdc++.a'
+
+BF_LIBSAMPLERATE = '/usr/local'
+BF_LIBSAMPLERATE_INC = '${BF_LIBSAMPLERATE}/include'
+BF_LIBSAMPLERATE_LIB = 'samplerate'
+BF_LIBSAMPLERATE_LIBPATH = '${BF_LIBSAMPLERATE}/lib'
+
+WITH_BF_JACK = True
+BF_JACK = '/usr/local'
+BF_JACK_INC = '${BF_JACK}/include/jack'
+BF_JACK_LIB = 'jack'
+BF_JACK_LIBPATH = '${BF_JACK}/lib'
+
+WITH_BF_SNDFILE = True
+BF_SNDFILE = '/usr/local'
+BF_SNDFILE_INC = '${BF_SNDFILE}/include/sndfile'
+BF_SNDFILE_LIB = 'sndfile'
+BF_SNDFILE_LIBPATH = '${BF_SNDFILE}/lib'
+
+WITH_BF_SDL = True
+BF_SDL = '/usr/local' #$(shell sdl-config --prefix)
+BF_SDL_INC = '${BF_SDL}/include/SDL' #$(shell $(BF_SDL)/bin/sdl-config --cflags)
+BF_SDL_LIB = 'SDL' #BF_SDL #$(shell $(BF_SDL)/bin/sdl-config --libs) -lSDL_mixer
+
+WITH_BF_OPENEXR = True
+WITH_BF_STATICOPENEXR = False
+BF_OPENEXR = '/usr/local'
+# when compiling with your own openexr lib you might need to set...
+# BF_OPENEXR_INC = '${BF_OPENEXR}/include/OpenEXR ${BF_OPENEXR}/include'
+
+BF_OPENEXR_INC = '${BF_OPENEXR}/include/OpenEXR'
+BF_OPENEXR_LIB = 'Half IlmImf Iex Imath '
+BF_OPENEXR_LIB_STATIC = '${BF_OPENEXR}/lib/libHalf.a ${BF_OPENEXR}/lib/libIlmImf.a ${BF_OPENEXR}/lib/libIex.a ${BF_OPENEXR}/lib/libImath.a ${BF_OPENEXR}/lib/libIlmThread.a'
+# BF_OPENEXR_LIBPATH = '${BF_OPENEXR}/lib'
+
+
+WITH_BF_DDS = True
+
+WITH_BF_JPEG = True
+BF_JPEG = '/usr/local'
+BF_JPEG_INC = '${BF_JPEG}/include'
+BF_JPEG_LIB = 'jpeg'
+
+WITH_BF_PNG = True
+BF_PNG = '/usr/local'
+BF_PNG_INC = '${BF_PNG}/include'
+BF_PNG_LIB = 'png'
+
+WITH_BF_TIFF = True
+BF_TIFF = '/usr/local'
+BF_TIFF_INC = '${BF_TIFF}/include'
+BF_TIFF_LIB = 'tiff'
+
+WITH_BF_ZLIB = True
+BF_ZLIB = '/usr'
+BF_ZLIB_INC = '${BF_ZLIB}/include'
+BF_ZLIB_LIB = 'z'
+
+WITH_BF_INTERNATIONAL = True
+
+BF_GETTEXT = '/usr/local'
+BF_GETTEXT_INC = '${BF_GETTEXT}/include'
+BF_GETTEXT_LIB = 'gettextlib'
+BF_GETTEXT_LIBPATH = '${BF_GETTEXT}/lib'
+
+WITH_BF_GAMEENGINE = True
+WITH_BF_PLAYER = True
+
+WITH_BF_BULLET = True
+BF_BULLET = '#extern/bullet2/src'
+BF_BULLET_INC = '${BF_BULLET}'
+BF_BULLET_LIB = 'extern_bullet'
+
+# enable freetype2 support for text objects
+BF_FREETYPE = '/usr/local'
+BF_FREETYPE_INC = '${BF_FREETYPE}/include ${BF_FREETYPE}/include/freetype2'
+BF_FREETYPE_LIB = 'freetype'
+
+WITH_BF_QUICKTIME = True # -DWITH_QUICKTIME
+BF_QUICKTIME = '/usr/local'
+BF_QUICKTIME_INC = '${BF_QUICKTIME}/include'
+
+WITH_BF_ICONV = True
+BF_ICONV = LIBDIR + "/iconv"
+BF_ICONV_INC = '${BF_ICONV}/include'
+BF_ICONV_LIB = 'iconv'
+BF_ICONV_LIBPATH = '${BF_ICONV}/lib'
+
+WITH_BF_BINRELOC = True
+
+# enable ffmpeg support
+WITH_BF_FFMPEG = True # -DWITH_FFMPEG
+BF_FFMPEG = '/usr/local'
+BF_FFMPEG_LIB = 'avformat avcodec swscale avutil avdevice'
+BF_FFMPEG_INC = '${BF_FFMPEG}/include'
+BF_FFMPEG_LIBPATH='${BF_FFMPEG}/lib'
+
+# enable ogg, vorbis and theora in ffmpeg
+WITH_BF_OGG = True # -DWITH_OGG
+BF_OGG = '/usr/local'
+BF_OGG_INC = '${BF_OGG}/include'
+BF_OGG_LIB = 'ogg vorbis vorbisenc theoraenc theoradec'
+
+WITH_BF_OPENJPEG = True
+BF_OPENJPEG = '#extern/libopenjpeg'
+BF_OPENJPEG_LIB = ''
+BF_OPENJPEG_INC = '${BF_OPENJPEG}'
+BF_OPENJPEG_LIBPATH='${BF_OPENJPEG}/lib'
+
+WITH_BF_FFTW3 = True
+BF_FFTW3 = LIBDIR + '/usr/local'
+BF_FFTW3_INC = '${BF_FFTW3}/include'
+BF_FFTW3_LIB = 'fftw3'
+BF_FFTW3_LIBPATH = '${BF_FFTW3}/lib'
+
+WITH_BF_REDCODE = True
+BF_REDCODE = '#extern/libredcode'
+BF_REDCODE_LIB = ''
+# BF_REDCODE_INC = '${BF_REDCODE}/include'
+BF_REDCODE_INC = '${BF_REDCODE}/../' #C files request "libredcode/format.h" which is in "#extern/libredcode/format.h", stupid but compiles for now.
+BF_REDCODE_LIBPATH='${BF_REDCODE}/lib'
+
+# Mesa Libs should go here if your using them as well....
+WITH_BF_STATICOPENGL = False
+BF_OPENGL = '/usr/local'
+BF_OPENGL_INC = '${BF_OPENGL}/include'
+BF_OPENGL_LIB = 'GL GLU X11 Xi'
+BF_OPENGL_LIBPATH = '/usr/X11R6/lib'
+BF_OPENGL_LIB_STATIC = '${BF_OPENGL_LIBPATH}/libGL.a ${BF_OPENGL_LIBPATH}/libGLU.a ${BF_OPENGL_LIBPATH}/libXxf86vm.a ${BF_OPENGL_LIBPATH}/libX11.a ${BF_OPENGL_LIBPATH}/libXi.a ${BF_OPENGL_LIBPATH}/libXext.a ${BF_OPENGL_LIBPATH}/libXxf86vm.a'
+
+WITH_BF_COLLADA = False
+BF_COLLADA = '#source/blender/collada'
+BF_COLLADA_INC = '${BF_COLLADA}'
+BF_COLLADA_LIB = 'bf_collada'
+BF_OPENCOLLADA = '/usr'
+BF_OPENCOLLADA_INC = '${BF_OPENCOLLADA}'
+BF_OPENCOLLADA_LIB = 'OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver pcre buffer ftoa'
+BF_OPENCOLLADA_LIBPATH = '${BF_OPENCOLLADA}/lib'
+BF_PCRE = '/usr/local'
+BF_PCRE_LIB = 'pcre'
+BF_PCRE_LIBPATH = '${BF_PCRE}/lib'
+BF_EXPAT = '/usr/local'
+BF_EXPAT_LIB = 'expat'
+BF_EXPAT_LIBPATH = '${BF_EXPAT}/lib'
+
+WITH_BF_OPENMP = True
+
+#Ray trace optimization
+WITH_BF_RAYOPTIMIZATION = True
+BF_RAYOPTIMIZATION_SSE_FLAGS = ['-msse','-pthread']
+
+CCFLAGS = ['-pipe','-fPIC','-funsigned-char','-fno-strict-aliasing','-D_LARGEFILE_SOURCE', '-D_FILE_OFFSET_BITS=64']
+
+CPPFLAGS = []
+CXXFLAGS = ['-pipe','-fPIC','-funsigned-char','-fno-strict-aliasing','-D_LARGEFILE_SOURCE', '-D_FILE_OFFSET_BITS=64']
+if WITH_BF_FFMPEG:
+ # libavutil needs UINT64_C()
+ CXXFLAGS += ['-D__STDC_CONSTANT_MACROS', ]
+REL_CFLAGS = ['-O2']
+REL_CCFLAGS = ['-O2']
+##BF_DEPEND = True
+##
+##AR = ar
+##ARFLAGS = ruv
+##ARFLAGSQUIET = ru
+##
+C_WARN = ['-Wno-char-subscripts', '-Wdeclaration-after-statement']
+CC_WARN = ['-Wall']
+CXX_WARN = ['-Wno-invalid-offsetof', '-Wno-sign-compare']
+
+
+##FIX_STUBS_WARNINGS = -Wno-unused
+
+LLIBS = ['util', 'c', 'm', 'dl', 'pthread', 'stdc++']
+##LOPTS = --dynamic
+##DYNLDFLAGS = -shared $(LDFLAGS)
+
+BF_PROFILE = False
+BF_PROFILE_CCFLAGS = ['-pg','-g']
+BF_PROFILE_LINKFLAGS = ['-pg']
+
+BF_DEBUG = False
+BF_DEBUG_CCFLAGS = ['-g']
+
+BF_BUILDDIR = '../build/freebsd8'
+BF_INSTALLDIR='../install/freebsd8'
+
+#Link against pthread
+PLATFORM_LINKFLAGS = ['-pthread']
diff --git a/build_files/scons/config/freebsd9-config.py b/build_files/scons/config/freebsd9-config.py
new file mode 100644
index 00000000000..c344046d8cc
--- /dev/null
+++ b/build_files/scons/config/freebsd9-config.py
@@ -0,0 +1,213 @@
+CC = 'gcc44'
+CXX = 'g++44'
+
+LCGDIR = '../lib/freebsd9'
+LIBDIR = "${LCGDIR}"
+
+BF_PYTHON = '/usr/local'
+BF_PYTHON_LIBPATH = '${BF_PYTHON}/lib'
+BF_PYTHON_VERSION = '3.1'
+WITH_BF_STATICPYTHON = False
+BF_PYTHON_INC = '${BF_PYTHON}/include/python${BF_PYTHON_VERSION}'
+BF_PYTHON_BINARY = '${BF_PYTHON}/bin/python${BF_PYTHON_VERSION}'
+BF_PYTHON_LIB = 'python${BF_PYTHON_VERSION}'
+BF_PYTHON_LIB_STATIC = '${BF_PYTHON}/lib/libpython${BF_PYTHON_VERSION}.a'
+
+WITH_BF_OPENAL = True
+WITH_BF_STATICOPENAL = False
+BF_OPENAL = '/usr/local'
+BF_OPENAL_INC = '${BF_OPENAL}/include'
+BF_OPENAL_LIB = 'openal'
+BF_OPENAL_LIB_STATIC = '${BF_OPENAL}/lib/libopenal.a'
+
+BF_CXX = '/usr/local'
+WITH_BF_STATICCXX = False
+BF_CXX_LIB_STATIC = '${BF_CXX}/lib/libstdc++.a'
+
+BF_LIBSAMPLERATE = '/usr/local'
+BF_LIBSAMPLERATE_INC = '${BF_LIBSAMPLERATE}/include'
+BF_LIBSAMPLERATE_LIB = 'samplerate'
+BF_LIBSAMPLERATE_LIBPATH = '${BF_LIBSAMPLERATE}/lib'
+
+WITH_BF_JACK = True
+BF_JACK = '/usr/local'
+BF_JACK_INC = '${BF_JACK}/include/jack'
+BF_JACK_LIB = 'jack'
+BF_JACK_LIBPATH = '${BF_JACK}/lib'
+
+WITH_BF_SNDFILE = True
+BF_SNDFILE = '/usr/local'
+BF_SNDFILE_INC = '${BF_SNDFILE}/include/sndfile'
+BF_SNDFILE_LIB = 'sndfile'
+BF_SNDFILE_LIBPATH = '${BF_SNDFILE}/lib'
+
+WITH_BF_SDL = True
+BF_SDL = '/usr/local' #$(shell sdl-config --prefix)
+BF_SDL_INC = '${BF_SDL}/include/SDL' #$(shell $(BF_SDL)/bin/sdl-config --cflags)
+BF_SDL_LIB = 'SDL' #BF_SDL #$(shell $(BF_SDL)/bin/sdl-config --libs) -lSDL_mixer
+
+WITH_BF_OPENEXR = True
+WITH_BF_STATICOPENEXR = False
+BF_OPENEXR = '/usr/local'
+# when compiling with your own openexr lib you might need to set...
+# BF_OPENEXR_INC = '${BF_OPENEXR}/include/OpenEXR ${BF_OPENEXR}/include'
+
+BF_OPENEXR_INC = '${BF_OPENEXR}/include/OpenEXR'
+BF_OPENEXR_LIB = 'Half IlmImf Iex Imath '
+BF_OPENEXR_LIB_STATIC = '${BF_OPENEXR}/lib/libHalf.a ${BF_OPENEXR}/lib/libIlmImf.a ${BF_OPENEXR}/lib/libIex.a ${BF_OPENEXR}/lib/libImath.a ${BF_OPENEXR}/lib/libIlmThread.a'
+# BF_OPENEXR_LIBPATH = '${BF_OPENEXR}/lib'
+
+
+WITH_BF_DDS = True
+
+WITH_BF_JPEG = True
+BF_JPEG = '/usr/local'
+BF_JPEG_INC = '${BF_JPEG}/include'
+BF_JPEG_LIB = 'jpeg'
+
+WITH_BF_PNG = True
+BF_PNG = '/usr/local'
+BF_PNG_INC = '${BF_PNG}/include'
+BF_PNG_LIB = 'png'
+
+WITH_BF_TIFF = True
+BF_TIFF = '/usr/local'
+BF_TIFF_INC = '${BF_TIFF}/include'
+BF_TIFF_LIB = 'tiff'
+
+WITH_BF_ZLIB = True
+BF_ZLIB = '/usr'
+BF_ZLIB_INC = '${BF_ZLIB}/include'
+BF_ZLIB_LIB = 'z'
+
+WITH_BF_INTERNATIONAL = True
+
+BF_GETTEXT = '/usr/local'
+BF_GETTEXT_INC = '${BF_GETTEXT}/include'
+BF_GETTEXT_LIB = 'gettextlib'
+BF_GETTEXT_LIBPATH = '${BF_GETTEXT}/lib'
+
+WITH_BF_GAMEENGINE = True
+WITH_BF_PLAYER = True
+
+WITH_BF_BULLET = True
+BF_BULLET = '#extern/bullet2/src'
+BF_BULLET_INC = '${BF_BULLET}'
+BF_BULLET_LIB = 'extern_bullet'
+
+# enable freetype2 support for text objects
+BF_FREETYPE = '/usr/local'
+BF_FREETYPE_INC = '${BF_FREETYPE}/include ${BF_FREETYPE}/include/freetype2'
+BF_FREETYPE_LIB = 'freetype'
+
+WITH_BF_QUICKTIME = True # -DWITH_QUICKTIME
+BF_QUICKTIME = '/usr/local'
+BF_QUICKTIME_INC = '${BF_QUICKTIME}/include'
+
+WITH_BF_ICONV = True
+BF_ICONV = LIBDIR + "/iconv"
+BF_ICONV_INC = '${BF_ICONV}/include'
+BF_ICONV_LIB = 'iconv'
+BF_ICONV_LIBPATH = '${BF_ICONV}/lib'
+
+WITH_BF_BINRELOC = True
+
+# enable ffmpeg support
+WITH_BF_FFMPEG = True # -DWITH_FFMPEG
+BF_FFMPEG = '/usr/local'
+BF_FFMPEG_LIB = 'avformat avcodec swscale avutil avdevice'
+BF_FFMPEG_INC = '${BF_FFMPEG}/include'
+BF_FFMPEG_LIBPATH='${BF_FFMPEG}/lib'
+
+# enable ogg, vorbis and theora in ffmpeg
+WITH_BF_OGG = True # -DWITH_OGG
+BF_OGG = '/usr/local'
+BF_OGG_INC = '${BF_OGG}/include'
+BF_OGG_LIB = 'ogg vorbis vorbisenc theoraenc theoradec'
+
+WITH_BF_OPENJPEG = True
+BF_OPENJPEG = '#extern/libopenjpeg'
+BF_OPENJPEG_LIB = ''
+BF_OPENJPEG_INC = '${BF_OPENJPEG}'
+BF_OPENJPEG_LIBPATH='${BF_OPENJPEG}/lib'
+
+WITH_BF_FFTW3 = True
+BF_FFTW3 = LIBDIR + '/usr/local'
+BF_FFTW3_INC = '${BF_FFTW3}/include'
+BF_FFTW3_LIB = 'fftw3'
+BF_FFTW3_LIBPATH = '${BF_FFTW3}/lib'
+
+WITH_BF_REDCODE = True
+BF_REDCODE = '#extern/libredcode'
+BF_REDCODE_LIB = ''
+# BF_REDCODE_INC = '${BF_REDCODE}/include'
+BF_REDCODE_INC = '${BF_REDCODE}/../' #C files request "libredcode/format.h" which is in "#extern/libredcode/format.h", stupid but compiles for now.
+BF_REDCODE_LIBPATH='${BF_REDCODE}/lib'
+
+# Mesa Libs should go here if your using them as well....
+WITH_BF_STATICOPENGL = False
+BF_OPENGL = '/usr/local'
+BF_OPENGL_INC = '${BF_OPENGL}/include'
+BF_OPENGL_LIB = 'GL GLU X11 Xi'
+BF_OPENGL_LIBPATH = '/usr/X11R6/lib'
+BF_OPENGL_LIB_STATIC = '${BF_OPENGL_LIBPATH}/libGL.a ${BF_OPENGL_LIBPATH}/libGLU.a ${BF_OPENGL_LIBPATH}/libXxf86vm.a ${BF_OPENGL_LIBPATH}/libX11.a ${BF_OPENGL_LIBPATH}/libXi.a ${BF_OPENGL_LIBPATH}/libXext.a ${BF_OPENGL_LIBPATH}/libXxf86vm.a'
+
+WITH_BF_COLLADA = False
+BF_COLLADA = '#source/blender/collada'
+BF_COLLADA_INC = '${BF_COLLADA}'
+BF_COLLADA_LIB = 'bf_collada'
+BF_OPENCOLLADA = '/usr'
+BF_OPENCOLLADA_INC = '${BF_OPENCOLLADA}'
+BF_OPENCOLLADA_LIB = 'OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver pcre buffer ftoa'
+BF_OPENCOLLADA_LIBPATH = '${BF_OPENCOLLADA}/lib'
+BF_PCRE = '/usr/local'
+BF_PCRE_LIB = 'pcre'
+BF_PCRE_LIBPATH = '${BF_PCRE}/lib'
+BF_EXPAT = '/usr/local'
+BF_EXPAT_LIB = 'expat'
+BF_EXPAT_LIBPATH = '${BF_EXPAT}/lib'
+
+WITH_BF_OPENMP = True
+
+#Ray trace optimization
+WITH_BF_RAYOPTIMIZATION = True
+BF_RAYOPTIMIZATION_SSE_FLAGS = ['-msse','-pthread']
+
+CCFLAGS = ['-pipe','-fPIC','-funsigned-char','-fno-strict-aliasing','-D_LARGEFILE_SOURCE', '-D_FILE_OFFSET_BITS=64']
+
+CPPFLAGS = []
+CXXFLAGS = ['-pipe','-fPIC','-funsigned-char','-fno-strict-aliasing','-D_LARGEFILE_SOURCE', '-D_FILE_OFFSET_BITS=64']
+if WITH_BF_FFMPEG:
+ # libavutil needs UINT64_C()
+ CXXFLAGS += ['-D__STDC_CONSTANT_MACROS', ]
+REL_CFLAGS = ['-O2']
+REL_CCFLAGS = ['-O2']
+##BF_DEPEND = True
+##
+##AR = ar
+##ARFLAGS = ruv
+##ARFLAGSQUIET = ru
+##
+C_WARN = ['-Wno-char-subscripts', '-Wdeclaration-after-statement']
+CC_WARN = ['-Wall']
+CXX_WARN = ['-Wno-invalid-offsetof', '-Wno-sign-compare']
+
+
+##FIX_STUBS_WARNINGS = -Wno-unused
+
+LLIBS = ['util', 'c', 'm', 'dl', 'pthread', 'stdc++']
+##LOPTS = --dynamic
+##DYNLDFLAGS = -shared $(LDFLAGS)
+
+BF_PROFILE = False
+BF_PROFILE_CCFLAGS = ['-pg','-g']
+BF_PROFILE_LINKFLAGS = ['-pg']
+
+BF_DEBUG = False
+BF_DEBUG_CCFLAGS = ['-g']
+
+BF_BUILDDIR = '../build/freebsd9'
+BF_INSTALLDIR='../install/freebsd9'
+
+#Link against pthread
+PLATFORM_LINKFLAGS = ['-pthread']
diff --git a/intern/audaspace/CMakeLists.txt b/intern/audaspace/CMakeLists.txt
index 0965a467201..7e226145adc 100644
--- a/intern/audaspace/CMakeLists.txt
+++ b/intern/audaspace/CMakeLists.txt
@@ -54,12 +54,19 @@ IF(WITH_SNDFILE)
ADD_DEFINITIONS(-DWITH_SNDFILE)
ENDIF(WITH_SNDFILE)
-IF(WITH_FFTW3)
- SET(INC ${INC} fftw ${FFTW3_INC})
- FILE(GLOB FFTW3SRC fftw/*.cpp)
- ADD_DEFINITIONS(-DWITH_FFTW3)
-ENDIF(WITH_FFTW3)
+#IF(WITH_FFTW3)
+# SET(INC ${INC} fftw ${FFTW3_INC})
+# FILE(GLOB FFTW3SRC fftw/*.cpp)
+# ADD_DEFINITIONS(-DWITH_FFTW3)
+#ENDIF(WITH_FFTW3)
-SET(SRC ${SRC} ${FFMPEGSRC} ${SNDFILESRC} ${FFTW3SRC} ${SDLSRC} ${OPENALSRC} ${JACKSRC})
+IF(WITH_PYTHON)
+ SET(INC ${INC} Python ${PYTHON_INC})
+ FILE(GLOB PYTHONSRC Python/*.cpp)
+ELSE(WITH_PYTHON)
+ ADD_DEFINITIONS(-DDISABLE_PYTHON)
+ENDIF(WITH_PYTHON)
+
+SET(SRC ${SRC} ${FFMPEGSRC} ${SNDFILESRC} ${FFTW3SRC} ${SDLSRC} ${OPENALSRC} ${JACKSRC} ${PYTHONSRC})
BLENDERLIB(bf_audaspace "${SRC}" "${INC}")
diff --git a/intern/audaspace/FX/AUD_AccumulatorFactory.cpp b/intern/audaspace/FX/AUD_AccumulatorFactory.cpp
index 20709c57ee5..0c51e5241e4 100644
--- a/intern/audaspace/FX/AUD_AccumulatorFactory.cpp
+++ b/intern/audaspace/FX/AUD_AccumulatorFactory.cpp
@@ -24,26 +24,37 @@
*/
#include "AUD_AccumulatorFactory.h"
-#include "AUD_AccumulatorReader.h"
+#include "AUD_CallbackIIRFilterReader.h"
+
+sample_t accumulatorFilterAdditive(AUD_CallbackIIRFilterReader* reader, void* useless)
+{
+ float in = reader->x(0);
+ float lastin = reader->x(-1);
+ float out = reader->y(-1) + in - lastin;
+ if(in > lastin)
+ out += in - lastin;
+ return out;
+}
+
+sample_t accumulatorFilter(AUD_CallbackIIRFilterReader* reader, void* useless)
+{
+ float in = reader->x(0);
+ float lastin = reader->x(-1);
+ float out = reader->y(-1);
+ if(in > lastin)
+ out += in - lastin;
+ return out;
+}
AUD_AccumulatorFactory::AUD_AccumulatorFactory(AUD_IFactory* factory,
bool additive) :
AUD_EffectFactory(factory),
- m_additive(additive) {}
-
-AUD_AccumulatorFactory::AUD_AccumulatorFactory(bool additive) :
- AUD_EffectFactory(0),
- m_additive(additive) {}
-
-AUD_IReader* AUD_AccumulatorFactory::createReader()
+ m_additive(additive)
{
- AUD_IReader* reader = getReader();
-
- if(reader != 0)
- {
- reader = new AUD_AccumulatorReader(reader, m_additive);
- AUD_NEW("reader")
- }
+}
- return reader;
+AUD_IReader* AUD_AccumulatorFactory::createReader() const
+{
+ return new AUD_CallbackIIRFilterReader(getReader(), 2, 2,
+ m_additive ? accumulatorFilterAdditive : accumulatorFilter);
}
diff --git a/intern/audaspace/FX/AUD_AccumulatorFactory.h b/intern/audaspace/FX/AUD_AccumulatorFactory.h
index e475a19ccf6..2b90fa43bdf 100644
--- a/intern/audaspace/FX/AUD_AccumulatorFactory.h
+++ b/intern/audaspace/FX/AUD_AccumulatorFactory.h
@@ -37,7 +37,11 @@ private:
/**
* Whether the accumulator is additive.
*/
- bool m_additive;
+ const bool m_additive;
+
+ // hide copy constructor and operator=
+ AUD_AccumulatorFactory(const AUD_AccumulatorFactory&);
+ AUD_AccumulatorFactory& operator=(const AUD_AccumulatorFactory&);
public:
/**
@@ -47,13 +51,7 @@ public:
*/
AUD_AccumulatorFactory(AUD_IFactory* factory, bool additive = false);
- /**
- * Creates a new accumulator factory.
- * \param additive Whether the accumulator is additive.
- */
- AUD_AccumulatorFactory(bool additive = false);
-
- virtual AUD_IReader* createReader();
+ virtual AUD_IReader* createReader() const;
};
#endif //AUD_ACCUMULATORFACTORY
diff --git a/intern/audaspace/FX/AUD_AccumulatorReader.cpp b/intern/audaspace/FX/AUD_AccumulatorReader.cpp
deleted file mode 100644
index 67ab4157f9c..00000000000
--- a/intern/audaspace/FX/AUD_AccumulatorReader.cpp
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * $Id$
- *
- * ***** BEGIN LGPL LICENSE BLOCK *****
- *
- * Copyright 2009 Jörg Hermann Müller
- *
- * This file is part of AudaSpace.
- *
- * AudaSpace is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * AudaSpace is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with AudaSpace. If not, see <http://www.gnu.org/licenses/>.
- *
- * ***** END LGPL LICENSE BLOCK *****
- */
-
-#include "AUD_AccumulatorReader.h"
-#include "AUD_Buffer.h"
-
-#include <cstring>
-
-#define CC specs.channels + channel
-
-AUD_AccumulatorReader::AUD_AccumulatorReader(AUD_IReader* reader,
- bool additive) :
- AUD_EffectReader(reader),
- m_additive(additive)
-{
- AUD_Specs specs = reader->getSpecs();
- int samplesize = AUD_SAMPLE_SIZE(specs);
-
- m_buffer = new AUD_Buffer(); AUD_NEW("buffer")
-
- m_sums = new AUD_Buffer(samplesize); AUD_NEW("buffer")
- memset(m_sums->getBuffer(), 0, samplesize);
-
- m_prevs = new AUD_Buffer(samplesize); AUD_NEW("buffer")
- memset(m_prevs->getBuffer(), 0, samplesize);
-}
-
-AUD_AccumulatorReader::~AUD_AccumulatorReader()
-{
- delete m_buffer; AUD_DELETE("buffer")
- delete m_sums; AUD_DELETE("buffer")
- delete m_prevs; AUD_DELETE("buffer")
-}
-
-void AUD_AccumulatorReader::read(int & length, sample_t* & buffer)
-{
- sample_t* buf;
- sample_t* sums;
- sample_t* prevs;
- sums = m_sums->getBuffer();
- prevs = m_prevs->getBuffer();
-
- AUD_Specs specs = m_reader->getSpecs();
-
- m_reader->read(length, buf);
- if(m_buffer->getSize() < length * AUD_SAMPLE_SIZE(specs))
- m_buffer->resize(length * AUD_SAMPLE_SIZE(specs));
-
- buffer = m_buffer->getBuffer();
-
- if(m_additive)
- {
- for(int channel = 0; channel < specs.channels; channel++)
- {
- for(int i = 0; i < length; i++)
- {
- if(buf[i * CC] > prevs[channel])
- sums[channel] += buf[i * CC] - prevs[channel];
- buffer[i * CC] = sums[channel] + buf[i * CC];
- prevs[channel] = buf[i * CC];
- }
- }
- }
- else
- {
- for(int channel = 0; channel < specs.channels; channel++)
- {
- for(int i = 0; i < length * specs.channels; i++)
- {
- if(buf[i * CC] > prevs[channel])
- sums[channel] += buf[i * CC] - prevs[channel];
- buffer[i * CC] = sums[channel];
- prevs[channel] = buf[i * CC];
- }
- }
- }
-}
diff --git a/intern/audaspace/FX/AUD_AccumulatorReader.h b/intern/audaspace/FX/AUD_AccumulatorReader.h
deleted file mode 100644
index 8ad1dda30f6..00000000000
--- a/intern/audaspace/FX/AUD_AccumulatorReader.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * $Id$
- *
- * ***** BEGIN LGPL LICENSE BLOCK *****
- *
- * Copyright 2009 Jörg Hermann Müller
- *
- * This file is part of AudaSpace.
- *
- * AudaSpace is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * AudaSpace is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with AudaSpace. If not, see <http://www.gnu.org/licenses/>.
- *
- * ***** END LGPL LICENSE BLOCK *****
- */
-
-#ifndef AUD_ACCUMULATORREADER
-#define AUD_ACCUMULATORREADER
-
-#include "AUD_EffectReader.h"
-class AUD_Buffer;
-
-/**
- * This class represents an accumulator.
- */
-class AUD_AccumulatorReader : public AUD_EffectReader
-{
-private:
- /**
- * The playback buffer.
- */
- AUD_Buffer *m_buffer;
-
- /**
- * The sums of the specific channels.
- */
- AUD_Buffer *m_sums;
-
- /**
- * The previous results of the specific channels.
- */
- AUD_Buffer *m_prevs;
-
- /**
- * Whether the accumulator is additive.
- */
- bool m_additive;
-
-public:
- /**
- * Creates a new accumulator reader.
- * \param reader The reader to read from.
- * \param additive Whether the accumulator is additive.
- * \exception AUD_Exception Thrown if the reader specified is NULL.
- */
- AUD_AccumulatorReader(AUD_IReader* reader, bool additive);
-
- /**
- * Destroys the reader.
- */
- virtual ~AUD_AccumulatorReader();
-
- virtual void read(int & length, sample_t* & buffer);
-};
-
-#endif //AUD_ACCUMULATORREADER
diff --git a/intern/audaspace/FX/AUD_BaseIIRFilterReader.cpp b/intern/audaspace/FX/AUD_BaseIIRFilterReader.cpp
new file mode 100644
index 00000000000..9e14bcf0e40
--- /dev/null
+++ b/intern/audaspace/FX/AUD_BaseIIRFilterReader.cpp
@@ -0,0 +1,76 @@
+/*
+ * $Id$
+ *
+ * ***** BEGIN LGPL LICENSE BLOCK *****
+ *
+ * Copyright 2009 Jörg Hermann Müller
+ *
+ * This file is part of AudaSpace.
+ *
+ * AudaSpace is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * AudaSpace is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with AudaSpace. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * ***** END LGPL LICENSE BLOCK *****
+ */
+
+#include "AUD_BaseIIRFilterReader.h"
+
+#include <cstring>
+
+#define CC m_channels + m_channel
+
+AUD_BaseIIRFilterReader::AUD_BaseIIRFilterReader(AUD_IReader* reader, int in,
+ int out) :
+ AUD_EffectReader(reader),
+ m_channels(reader->getSpecs().channels),
+ m_xlen(in), m_ylen(out),
+ m_xpos(0), m_ypos(0), m_channel(0)
+{
+ m_x = new sample_t[in * m_channels];
+ m_y = new sample_t[out * m_channels];
+
+ memset(m_x, 0, sizeof(sample_t) * in * m_channels);
+ memset(m_y, 0, sizeof(sample_t) * out * m_channels);
+}
+
+AUD_BaseIIRFilterReader::~AUD_BaseIIRFilterReader()
+{
+ delete[] m_x;
+ delete[] m_y;
+}
+
+void AUD_BaseIIRFilterReader::read(int & length, sample_t* & buffer)
+{
+ sample_t* buf;
+
+ int samplesize = AUD_SAMPLE_SIZE(m_reader->getSpecs());
+
+ m_reader->read(length, buf);
+
+ if(m_buffer.getSize() < length * samplesize)
+ m_buffer.resize(length * samplesize);
+
+ buffer = m_buffer.getBuffer();
+
+ for(m_channel = 0; m_channel < m_channels; m_channel++)
+ {
+ for(int i = 0; i < length; i++)
+ {
+ m_x[m_xpos * CC] = buf[i * CC];
+ m_y[m_ypos * CC] = buffer[i * CC] = filter();
+
+ m_xpos = (m_xpos + 1) % m_xlen;
+ m_ypos = (m_ypos + 1) % m_ylen;
+ }
+ }
+}
diff --git a/intern/audaspace/FX/AUD_BaseIIRFilterReader.h b/intern/audaspace/FX/AUD_BaseIIRFilterReader.h
new file mode 100644
index 00000000000..7e2b71983a0
--- /dev/null
+++ b/intern/audaspace/FX/AUD_BaseIIRFilterReader.h
@@ -0,0 +1,114 @@
+/*
+ * $Id$
+ *
+ * ***** BEGIN LGPL LICENSE BLOCK *****
+ *
+ * Copyright 2009 Jörg Hermann Müller
+ *
+ * This file is part of AudaSpace.
+ *
+ * AudaSpace is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * AudaSpace is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with AudaSpace. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * ***** END LGPL LICENSE BLOCK *****
+ */
+
+#ifndef AUD_BASEIIRFILTERREADER
+#define AUD_BASEIIRFILTERREADER
+
+#include "AUD_EffectReader.h"
+#include "AUD_Buffer.h"
+
+/**
+ * This class is a base class for infinite impulse response filters.
+ */
+class AUD_BaseIIRFilterReader : public AUD_EffectReader
+{
+private:
+ /**
+ * Channel count.
+ */
+ const int m_channels;
+
+ /**
+ * Length of input samples needed.
+ */
+ const int m_xlen;
+
+ /**
+ * Length of output samples needed.
+ */
+ const int m_ylen;
+
+ /**
+ * The playback buffer.
+ */
+ AUD_Buffer m_buffer;
+
+ /**
+ * The last in samples array.
+ */
+ sample_t* m_x;
+
+ /**
+ * The last out samples array.
+ */
+ sample_t* m_y;
+
+ /**
+ * Position of the current input sample in the input array.
+ */
+ int m_xpos;
+
+ /**
+ * Position of the current output sample in the output array.
+ */
+ int m_ypos;
+
+ /**
+ * Current channel.
+ */
+ int m_channel;
+
+ // hide copy constructor and operator=
+ AUD_BaseIIRFilterReader(const AUD_BaseIIRFilterReader&);
+ AUD_BaseIIRFilterReader& operator=(const AUD_BaseIIRFilterReader&);
+
+protected:
+ /**
+ * Creates a new base IIR filter reader.
+ * \param reader The reader to read from.
+ * \param in The count of past input samples needed.
+ * \param out The count of past output samples needed.
+ */
+ AUD_BaseIIRFilterReader(AUD_IReader* reader, int in, int out);
+
+public:
+ inline sample_t x(int pos)
+ {
+ return m_x[(m_xpos + pos + m_xlen) % m_xlen * m_channels + m_channel];
+ }
+
+ inline sample_t y(int pos)
+ {
+ return m_y[(m_ypos + pos + m_ylen) % m_ylen * m_channels + m_channel];
+ }
+
+ virtual ~AUD_BaseIIRFilterReader();
+
+ virtual void read(int & length, sample_t* & buffer);
+
+ virtual sample_t filter()=0;
+};
+
+#endif //AUD_BASEIIRFILTERREADER
diff --git a/intern/audaspace/FX/AUD_ButterworthFactory.cpp b/intern/audaspace/FX/AUD_ButterworthFactory.cpp
index fd0a53def7c..874ff0f6351 100644
--- a/intern/audaspace/FX/AUD_ButterworthFactory.cpp
+++ b/intern/audaspace/FX/AUD_ButterworthFactory.cpp
@@ -24,26 +24,49 @@
*/
#include "AUD_ButterworthFactory.h"
-#include "AUD_ButterworthReader.h"
+#include "AUD_IIRFilterReader.h"
+
+#include <cmath>
+
+#ifndef M_PI
+#define M_PI 3.14159265358979323846
+#endif
+
+#define BWPB41 0.76536686473
+#define BWPB42 1.84775906502
AUD_ButterworthFactory::AUD_ButterworthFactory(AUD_IFactory* factory,
float frequency) :
AUD_EffectFactory(factory),
- m_frequency(frequency) {}
-
-AUD_ButterworthFactory::AUD_ButterworthFactory(float frequency) :
- AUD_EffectFactory(0),
- m_frequency(frequency) {}
+ m_frequency(frequency)
+{
+}
-AUD_IReader* AUD_ButterworthFactory::createReader()
+AUD_IReader* AUD_ButterworthFactory::createReader() const
{
AUD_IReader* reader = getReader();
- if(reader != 0)
- {
- reader = new AUD_ButterworthReader(reader, m_frequency);
- AUD_NEW("reader")
- }
+ // calculate coefficients
+ float omega = 2 * tan(m_frequency * M_PI / reader->getSpecs().rate);
+ float o2 = omega * omega;
+ float o4 = o2 * o2;
+ float x1 = o2 + 2 * BWPB41 * omega + 4;
+ float x2 = o2 + 2 * BWPB42 * omega + 4;
+ float y1 = o2 - 2 * BWPB41 * omega + 4;
+ float y2 = o2 - 2 * BWPB42 * omega + 4;
+ float o228 = 2 * o2 - 8;
+ float norm = x1 * x2;
+ std::vector<float> a, b;
+ a.push_back(1);
+ a.push_back((x1 + x2) * o228 / norm);
+ a.push_back((x1 * y2 + x2 * y1 + o228 * o228) / norm);
+ a.push_back((y1 + y2) * o228 / norm);
+ a.push_back(y1 * y2 / norm);
+ b.push_back(o4 / norm);
+ b.push_back(4 * o4 / norm);
+ b.push_back(6 * o4 / norm);
+ b.push_back(b[1]);
+ b.push_back(b[0]);
- return reader;
+ return new AUD_IIRFilterReader(reader, b, a);
}
diff --git a/intern/audaspace/FX/AUD_ButterworthFactory.h b/intern/audaspace/FX/AUD_ButterworthFactory.h
index 69169531d70..30b7a402c57 100644
--- a/intern/audaspace/FX/AUD_ButterworthFactory.h
+++ b/intern/audaspace/FX/AUD_ButterworthFactory.h
@@ -37,7 +37,11 @@ private:
/**
* The attack value in seconds.
*/
- float m_frequency;
+ const float m_frequency;
+
+ // hide copy constructor and operator=
+ AUD_ButterworthFactory(const AUD_ButterworthFactory&);
+ AUD_ButterworthFactory& operator=(const AUD_ButterworthFactory&);
public:
/**
@@ -47,13 +51,7 @@ public:
*/
AUD_ButterworthFactory(AUD_IFactory* factory, float frequency);
- /**
- * Creates a new butterworth factory.
- * \param frequency The cutoff frequency.
- */
- AUD_ButterworthFactory(float frequency);
-
- virtual AUD_IReader* createReader();
+ virtual AUD_IReader* createReader() const;
};
#endif //AUD_BUTTERWORTHFACTORY
diff --git a/intern/audaspace/FX/AUD_ButterworthReader.cpp b/intern/audaspace/FX/AUD_ButterworthReader.cpp
deleted file mode 100644
index 2129dfef798..00000000000
--- a/intern/audaspace/FX/AUD_ButterworthReader.cpp
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * $Id$
- *
- * ***** BEGIN LGPL LICENSE BLOCK *****
- *
- * Copyright 2009 Jörg Hermann Müller
- *
- * This file is part of AudaSpace.
- *
- * AudaSpace is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * AudaSpace is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with AudaSpace. If not, see <http://www.gnu.org/licenses/>.
- *
- * ***** END LGPL LICENSE BLOCK *****
- */
-
-#include "AUD_ButterworthReader.h"
-#include "AUD_Buffer.h"
-
-#include <cstring>
-#include <cmath>
-
-#ifndef M_PI
-#define M_PI 3.14159265358979323846
-#endif
-
-#define BWPB41 0.76536686473
-#define BWPB42 1.84775906502
-#define CC channels + channel
-
-AUD_ButterworthReader::AUD_ButterworthReader(AUD_IReader* reader,
- float frequency) :
- AUD_EffectReader(reader)
-{
- AUD_Specs specs = reader->getSpecs();
- int samplesize = AUD_SAMPLE_SIZE(specs);
-
- m_buffer = new AUD_Buffer(); AUD_NEW("buffer")
-
- m_outvalues = new AUD_Buffer(samplesize * 5); AUD_NEW("buffer")
- memset(m_outvalues->getBuffer(), 0, samplesize * 5);
-
- m_invalues = new AUD_Buffer(samplesize * 5); AUD_NEW("buffer")
- memset(m_invalues->getBuffer(), 0, samplesize * 5);
-
- m_position = 0;
-
- // calculate coefficients
- float omega = 2 * tan(frequency * M_PI / specs.rate);
- float o2 = omega * omega;
- float o4 = o2 * o2;
- float x1 = o2 + 2 * BWPB41 * omega + 4;
- float x2 = o2 + 2 * BWPB42 * omega + 4;
- float y1 = o2 - 2 * BWPB41 * omega + 4;
- float y2 = o2 - 2 * BWPB42 * omega + 4;
- float o228 = 2 * o2 - 8;
- float norm = x1 * x2;
- m_coeff[0][0] = 0;
- m_coeff[0][1] = (x1 + x2) * o228 / norm;
- m_coeff[0][2] = (x1 * y2 + x2 * y1 + o228 * o228) / norm;
- m_coeff[0][3] = (y1 + y2) * o228 / norm;
- m_coeff[0][4] = y1 * y2 / norm;
- m_coeff[1][4] = m_coeff[1][0] = o4 / norm;
- m_coeff[1][3] = m_coeff[1][1] = 4 * o4 / norm;
- m_coeff[1][2] = 6 * o4 / norm;
-}
-
-AUD_ButterworthReader::~AUD_ButterworthReader()
-{
- delete m_buffer; AUD_DELETE("buffer")
-
- delete m_outvalues; AUD_DELETE("buffer")
- delete m_invalues; AUD_DELETE("buffer");
-}
-
-void AUD_ButterworthReader::read(int & length, sample_t* & buffer)
-{
- sample_t* buf;
- sample_t* outvalues;
- sample_t* invalues;
-
- outvalues = m_outvalues->getBuffer();
- invalues = m_invalues->getBuffer();
-
- AUD_Specs specs = m_reader->getSpecs();
-
- m_reader->read(length, buf);
-
- if(m_buffer->getSize() < length * AUD_SAMPLE_SIZE(specs))
- m_buffer->resize(length * AUD_SAMPLE_SIZE(specs));
-
- buffer = m_buffer->getBuffer();
- int channels = specs.channels;
-
- for(int channel = 0; channel < channels; channel++)
- {
- for(int i = 0; i < length; i++)
- {
- invalues[m_position * CC] = buf[i * CC];
- outvalues[m_position * CC] = 0;
-
- for(int j = 0; j < 4; j++)
- {
- outvalues[m_position * CC] += m_coeff[1][j] *
- invalues[((m_position + j) % 5) * CC] -
- m_coeff[0][j] *
- outvalues[((m_position + j) % 5) * CC];
- }
-
- buffer[i * CC] = outvalues[m_position * CC];
-
- m_position = (m_position + 4) % 5;
- }
- }
-}
diff --git a/intern/audaspace/FX/AUD_ButterworthReader.h b/intern/audaspace/FX/AUD_ButterworthReader.h
deleted file mode 100644
index b1cbd4e3820..00000000000
--- a/intern/audaspace/FX/AUD_ButterworthReader.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * $Id$
- *
- * ***** BEGIN LGPL LICENSE BLOCK *****
- *
- * Copyright 2009 Jörg Hermann Müller
- *
- * This file is part of AudaSpace.
- *
- * AudaSpace is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * AudaSpace is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with AudaSpace. If not, see <http://www.gnu.org/licenses/>.
- *
- * ***** END LGPL LICENSE BLOCK *****
- */
-
-#ifndef AUD_BUTTERWORTHREADER
-#define AUD_BUTTERWORTHREADER
-
-#include "AUD_EffectReader.h"
-class AUD_Buffer;
-
-/**
- * This class represents a butterworth filter.
- */
-class AUD_ButterworthReader : public AUD_EffectReader
-{
-private:
- /**
- * The playback buffer.
- */
- AUD_Buffer *m_buffer;
-
- /**
- * The last out values buffer.
- */
- AUD_Buffer *m_outvalues;
-
- /**
- * The last in values buffer.
- */
- AUD_Buffer *m_invalues;
-
- /**
- * The position for buffer cycling.
- */
- int m_position;
-
- /**
- * Filter coefficients.
- */
- float m_coeff[2][5];
-
-public:
- /**
- * Creates a new butterworth reader.
- * \param reader The reader to read from.
- * \param attack The attack value in seconds.
- * \param release The release value in seconds.
- * \param threshold The threshold value.
- * \param arthreshold The attack/release threshold value.
- * \exception AUD_Exception Thrown if the reader specified is NULL.
- */
- AUD_ButterworthReader(AUD_IReader* reader, float frequency);
-
- /**
- * Destroys the reader.
- */
- virtual ~AUD_ButterworthReader();
-
- virtual void read(int & length, sample_t* & buffer);
-};
-
-#endif //AUD_BUTTERWORTHREADER
diff --git a/intern/audaspace/FX/AUD_RectifyReader.cpp b/intern/audaspace/FX/AUD_CallbackIIRFilterReader.cpp
index 5d3ce80e811..02ab6e185fe 100644
--- a/intern/audaspace/FX/AUD_RectifyReader.cpp
+++ b/intern/audaspace/FX/AUD_CallbackIIRFilterReader.cpp
@@ -23,33 +23,25 @@
* ***** END LGPL LICENSE BLOCK *****
*/
-#include "AUD_RectifyReader.h"
-#include "AUD_Buffer.h"
-
-#include <cmath>
-
-AUD_RectifyReader::AUD_RectifyReader(AUD_IReader* reader) :
- AUD_EffectReader(reader)
+#include "AUD_CallbackIIRFilterReader.h"
+
+AUD_CallbackIIRFilterReader::AUD_CallbackIIRFilterReader(AUD_IReader* reader,
+ int in, int out,
+ doFilterIIR doFilter,
+ endFilterIIR endFilter,
+ void* data) :
+ AUD_BaseIIRFilterReader(reader, in, out),
+ m_filter(doFilter), m_endFilter(endFilter), m_data(data)
{
- m_buffer = new AUD_Buffer(); AUD_NEW("buffer")
}
-AUD_RectifyReader::~AUD_RectifyReader()
+AUD_CallbackIIRFilterReader::~AUD_CallbackIIRFilterReader()
{
- delete m_buffer; AUD_DELETE("buffer")
+ if(m_endFilter)
+ m_endFilter(m_data);
}
-void AUD_RectifyReader::read(int & length, sample_t* & buffer)
+sample_t AUD_CallbackIIRFilterReader::filter()
{
- sample_t* buf;
- AUD_Specs specs = m_reader->getSpecs();
-
- m_reader->read(length, buf);
- if(m_buffer->getSize() < length * AUD_SAMPLE_SIZE(specs))
- m_buffer->resize(length * AUD_SAMPLE_SIZE(specs));
-
- buffer = m_buffer->getBuffer();
-
- for(int i = 0; i < length * specs.channels; i++)
- buffer[i] = fabs(buf[i]);
+ return m_filter(this, m_data);
}
diff --git a/intern/audaspace/FX/AUD_CallbackIIRFilterReader.h b/intern/audaspace/FX/AUD_CallbackIIRFilterReader.h
new file mode 100644
index 00000000000..6472c7baad3
--- /dev/null
+++ b/intern/audaspace/FX/AUD_CallbackIIRFilterReader.h
@@ -0,0 +1,83 @@
+/*
+ * $Id$
+ *
+ * ***** BEGIN LGPL LICENSE BLOCK *****
+ *
+ * Copyright 2009 Jörg Hermann Müller
+ *
+ * This file is part of AudaSpace.
+ *
+ * AudaSpace is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * AudaSpace is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with AudaSpace. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * ***** END LGPL LICENSE BLOCK *****
+ */
+
+#ifndef AUD_CALLBACKIIRFILTERREADER
+#define AUD_CALLBACKIIRFILTERREADER
+
+#include "AUD_BaseIIRFilterReader.h"
+#include "AUD_Buffer.h"
+
+class AUD_CallbackIIRFilterReader;
+
+typedef sample_t (*doFilterIIR)(AUD_CallbackIIRFilterReader*, void*);
+typedef void (*endFilterIIR)(void*);
+
+/**
+ * This class provides an interface for infinite impulse response filters via a
+ * callback filter function.
+ */
+class AUD_CallbackIIRFilterReader : public AUD_BaseIIRFilterReader
+{
+private:
+ /**
+ * Filter function.
+ */
+ const doFilterIIR m_filter;
+
+ /**
+ * End filter function.
+ */
+ const endFilterIIR m_endFilter;
+
+ /**
+ * Data pointer.
+ */
+ void* m_data;
+
+ // hide copy constructor and operator=
+ AUD_CallbackIIRFilterReader(const AUD_CallbackIIRFilterReader&);
+ AUD_CallbackIIRFilterReader& operator=(const AUD_CallbackIIRFilterReader&);
+
+public:
+ /**
+ * Creates a new callback IIR filter reader.
+ * \param reader The reader to read from.
+ * \param in The count of past input samples needed.
+ * \param out The count of past output samples needed.
+ * \param doFilter The filter callback.
+ * \param endFilter The finishing callback.
+ * \param data Data pointer for the callbacks.
+ */
+ AUD_CallbackIIRFilterReader(AUD_IReader* reader, int in, int out,
+ doFilterIIR doFilter,
+ endFilterIIR endFilter = 0,
+ void* data = 0);
+
+ virtual ~AUD_CallbackIIRFilterReader();
+
+ virtual sample_t filter();
+};
+
+#endif //AUD_CALLBACKIIRFILTERREADER
diff --git a/intern/audaspace/FX/AUD_DelayFactory.cpp b/intern/audaspace/FX/AUD_DelayFactory.cpp
index 25ce4faed4c..f98743d6fb7 100644
--- a/intern/audaspace/FX/AUD_DelayFactory.cpp
+++ b/intern/audaspace/FX/AUD_DelayFactory.cpp
@@ -29,30 +29,16 @@
AUD_DelayFactory::AUD_DelayFactory(AUD_IFactory* factory, float delay) :
AUD_EffectFactory(factory),
- m_delay(delay) {}
-
-AUD_DelayFactory::AUD_DelayFactory(float delay) :
- AUD_EffectFactory(0),
- m_delay(delay) {}
-
-float AUD_DelayFactory::getDelay()
+ m_delay(delay)
{
- return m_delay;
}
-void AUD_DelayFactory::setDelay(float delay)
+float AUD_DelayFactory::getDelay() const
{
- m_delay = delay;
+ return m_delay;
}
-AUD_IReader* AUD_DelayFactory::createReader()
+AUD_IReader* AUD_DelayFactory::createReader() const
{
- AUD_IReader* reader = getReader();
-
- if(reader != 0)
- {
- reader = new AUD_DelayReader(reader, m_delay); AUD_NEW("reader")
- }
-
- return reader;
+ return new AUD_DelayReader(getReader(), m_delay);
}
diff --git a/intern/audaspace/FX/AUD_DelayFactory.h b/intern/audaspace/FX/AUD_DelayFactory.h
index 5ad4b9ab996..721262fb73f 100644
--- a/intern/audaspace/FX/AUD_DelayFactory.h
+++ b/intern/audaspace/FX/AUD_DelayFactory.h
@@ -37,7 +37,11 @@ private:
/**
* The delay in samples.
*/
- float m_delay;
+ const float m_delay;
+
+ // hide copy constructor and operator=
+ AUD_DelayFactory(const AUD_DelayFactory&);
+ AUD_DelayFactory& operator=(const AUD_DelayFactory&);
public:
/**
@@ -45,26 +49,14 @@ public:
* \param factory The input factory.
* \param delay The desired delay in seconds.
*/
- AUD_DelayFactory(AUD_IFactory* factory = 0, float delay = 0);
-
- /**
- * Creates a new delay factory.
- * \param delay The desired delay in seconds.
- */
- AUD_DelayFactory(float delay);
+ AUD_DelayFactory(AUD_IFactory* factory, float delay = 0);
/**
* Returns the delay in seconds.
*/
- float getDelay();
-
- /**
- * Sets the delay.
- * \param delay The new delay value in seconds.
- */
- void setDelay(float delay);
+ float getDelay() const;
- virtual AUD_IReader* createReader();
+ virtual AUD_IReader* createReader() const;
};
#endif //AUD_DELAYFACTORY
diff --git a/intern/audaspace/FX/AUD_DelayReader.cpp b/intern/audaspace/FX/AUD_DelayReader.cpp
index f2521f645aa..e9f0c15b9b4 100644
--- a/intern/audaspace/FX/AUD_DelayReader.cpp
+++ b/intern/audaspace/FX/AUD_DelayReader.cpp
@@ -24,28 +24,19 @@
*/
#include "AUD_DelayReader.h"
-#include "AUD_Buffer.h"
#include <cstring>
AUD_DelayReader::AUD_DelayReader(AUD_IReader* reader, float delay) :
- AUD_EffectReader(reader)
+ AUD_EffectReader(reader),
+ m_delay(int(delay * reader->getSpecs().rate)),
+ m_remdelay(int(delay * reader->getSpecs().rate)),
+ m_empty(true)
{
- m_delay = (int)(delay * reader->getSpecs().rate);
- m_remdelay = m_delay;
- m_buffer = new AUD_Buffer(); AUD_NEW("buffer")
-}
-
-AUD_DelayReader::~AUD_DelayReader()
-{
- delete m_buffer; AUD_DELETE("buffer")
}
void AUD_DelayReader::seek(int position)
{
- if(position < 0)
- return;
-
if(position < m_delay)
{
m_remdelay = m_delay - position;
@@ -58,18 +49,18 @@ void AUD_DelayReader::seek(int position)
}
}
-int AUD_DelayReader::getLength()
+int AUD_DelayReader::getLength() const
{
int len = m_reader->getLength();
if(len < 0)
return len;
- return len+m_delay;
+ return len + m_delay;
}
-int AUD_DelayReader::getPosition()
+int AUD_DelayReader::getPosition() const
{
if(m_remdelay > 0)
- return m_delay-m_remdelay;
+ return m_delay - m_remdelay;
return m_reader->getPosition() + m_delay;
}
@@ -80,26 +71,41 @@ void AUD_DelayReader::read(int & length, sample_t* & buffer)
AUD_Specs specs = m_reader->getSpecs();
int samplesize = AUD_SAMPLE_SIZE(specs);
- if(m_buffer->getSize() < length * samplesize)
- m_buffer->resize(length * samplesize);
+ if(m_buffer.getSize() < length * samplesize)
+ {
+ m_buffer.resize(length * samplesize);
+ m_empty = false;
+ }
+
+ buffer = m_buffer.getBuffer();
if(length > m_remdelay)
{
- memset(m_buffer->getBuffer(), 0, m_remdelay * samplesize);
+ if(!m_empty)
+ memset(buffer, 0, m_remdelay * samplesize);
+
int len = length - m_remdelay;
- m_reader->read(len, buffer);
- memcpy(m_buffer->getBuffer() + m_remdelay * specs.channels,
- buffer, len * samplesize);
+ sample_t* buf;
+ m_reader->read(len, buf);
+
+ memcpy(buffer + m_remdelay * specs.channels,
+ buf, len * samplesize);
+
if(len < length-m_remdelay)
length = m_remdelay + len;
+
m_remdelay = 0;
+ m_empty = false;
}
else
{
- memset(m_buffer->getBuffer(), 0, length * samplesize);
+ if(!m_empty)
+ {
+ memset(buffer, 0, length * samplesize);
+ m_empty = true;
+ }
m_remdelay -= length;
}
- buffer = m_buffer->getBuffer();
}
else
m_reader->read(length, buffer);
diff --git a/intern/audaspace/FX/AUD_DelayReader.h b/intern/audaspace/FX/AUD_DelayReader.h
index 4662b455dfc..121842b0c6b 100644
--- a/intern/audaspace/FX/AUD_DelayReader.h
+++ b/intern/audaspace/FX/AUD_DelayReader.h
@@ -27,7 +27,7 @@
#define AUD_DELAYREADER
#include "AUD_EffectReader.h"
-class AUD_Buffer;
+#include "AUD_Buffer.h"
/**
* This class reads another reader and changes it's delay.
@@ -38,35 +38,38 @@ private:
/**
* The playback buffer.
*/
- AUD_Buffer *m_buffer;
+ AUD_Buffer m_buffer;
/**
* The delay level.
*/
- int m_delay;
+ const int m_delay;
/**
* The remaining delay for playback.
*/
int m_remdelay;
+ /**
+ * Whether the buffer is currently filled with zeros.
+ */
+ bool m_empty;
+
+ // hide copy constructor and operator=
+ AUD_DelayReader(const AUD_DelayReader&);
+ AUD_DelayReader& operator=(const AUD_DelayReader&);
+
public:
/**
* Creates a new delay reader.
* \param reader The reader to read from.
* \param delay The delay in seconds.
- * \exception AUD_Exception Thrown if the reader specified is NULL.
*/
AUD_DelayReader(AUD_IReader* reader, float delay);
- /**
- * Destroys the reader.
- */
- virtual ~AUD_DelayReader();
-
virtual void seek(int position);
- virtual int getLength();
- virtual int getPosition();
+ virtual int getLength() const;
+ virtual int getPosition() const;
virtual void read(int & length, sample_t* & buffer);
};
diff --git a/intern/audaspace/FX/AUD_DoubleFactory.cpp b/intern/audaspace/FX/AUD_DoubleFactory.cpp
new file mode 100644
index 00000000000..9f625d0763f
--- /dev/null
+++ b/intern/audaspace/FX/AUD_DoubleFactory.cpp
@@ -0,0 +1,50 @@
+/*
+ * $Id$
+ *
+ * ***** BEGIN LGPL LICENSE BLOCK *****
+ *
+ * Copyright 2009 Jörg Hermann Müller
+ *
+ * This file is part of AudaSpace.
+ *
+ * AudaSpace is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * AudaSpace is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with AudaSpace. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * ***** END LGPL LICENSE BLOCK *****
+ */
+
+#include "AUD_DoubleFactory.h"
+#include "AUD_DoubleReader.h"
+
+AUD_DoubleFactory::AUD_DoubleFactory(AUD_IFactory* factory1, AUD_IFactory* factory2) :
+ m_factory1(factory1), m_factory2(factory2)
+{
+}
+
+AUD_IReader* AUD_DoubleFactory::createReader() const
+{
+ AUD_IReader* reader1 = m_factory1->createReader();
+ AUD_IReader* reader2;
+
+ try
+ {
+ reader2 = m_factory2->createReader();
+ }
+ catch(AUD_Exception&)
+ {
+ delete reader1;
+ throw;
+ }
+
+ return new AUD_DoubleReader(reader1, reader2);
+}
diff --git a/intern/audaspace/FX/AUD_SquareReader.h b/intern/audaspace/FX/AUD_DoubleFactory.h
index 63dda351445..f2e83b2e27a 100644
--- a/intern/audaspace/FX/AUD_SquareReader.h
+++ b/intern/audaspace/FX/AUD_DoubleFactory.h
@@ -23,43 +23,41 @@
* ***** END LGPL LICENSE BLOCK *****
*/
-#ifndef AUD_SQUAREREADER
-#define AUD_SQUAREREADER
+#ifndef AUD_DOUBLEFACTORY
+#define AUD_DOUBLEFACTORY
-#include "AUD_EffectReader.h"
-class AUD_Buffer;
+#include "AUD_IFactory.h"
/**
- * This class changes another signal into a square signal.
+ * This factory plays two other factories behind each other.
+ * \note Readers from the underlying factories must have the same sample rate and channel count.
*/
-class AUD_SquareReader : public AUD_EffectReader
+class AUD_DoubleFactory : public AUD_IFactory
{
private:
/**
- * The playback buffer.
+ * First played factory.
*/
- AUD_Buffer *m_buffer;
+ AUD_IFactory* m_factory1;
/**
- * The threshold level.
+ * Second played factory.
*/
- float m_threshold;
+ AUD_IFactory* m_factory2;
-public:
- /**
- * Creates a new square reader.
- * \param reader The reader to read from.
- * \param threshold The size of the buffer.
- * \exception AUD_Exception Thrown if the reader specified is NULL.
- */
- AUD_SquareReader(AUD_IReader* reader, float threshold);
+ // hide copy constructor and operator=
+ AUD_DoubleFactory(const AUD_DoubleFactory&);
+ AUD_DoubleFactory& operator=(const AUD_DoubleFactory&);
+public:
/**
- * Destroys the reader.
+ * Creates a new double factory.
+ * \param factory1 The first input factory.
+ * \param factory2 The second input factory.
*/
- virtual ~AUD_SquareReader();
+ AUD_DoubleFactory(AUD_IFactory* factory1, AUD_IFactory* factory2);
- virtual void read(int & length, sample_t* & buffer);
+ virtual AUD_IReader* createReader() const;
};
-#endif //AUD_SQUAREREADER
+#endif //AUD_DOUBLEFACTORY
diff --git a/intern/audaspace/FX/AUD_DoubleReader.cpp b/intern/audaspace/FX/AUD_DoubleReader.cpp
index 1e51a094427..5c6ca6a1fc5 100644
--- a/intern/audaspace/FX/AUD_DoubleReader.cpp
+++ b/intern/audaspace/FX/AUD_DoubleReader.cpp
@@ -24,80 +24,51 @@
*/
#include "AUD_DoubleReader.h"
-#include "AUD_Buffer.h"
#include <cstring>
+static const char* specs_error = "AUD_DoubleReader: Both readers have to have "
+ "the same specs.";
+
AUD_DoubleReader::AUD_DoubleReader(AUD_IReader* reader1,
AUD_IReader* reader2) :
- m_reader1(reader1), m_reader2(reader2)
+ m_reader1(reader1), m_reader2(reader2), m_finished1(false)
{
- try
- {
- if(!reader1)
- AUD_THROW(AUD_ERROR_READER);
-
- if(!reader2)
- AUD_THROW(AUD_ERROR_READER);
-
- AUD_Specs s1, s2;
- s1 = reader1->getSpecs();
- s2 = reader2->getSpecs();
- if(memcmp(&s1, &s2, sizeof(AUD_Specs)) != 0)
- AUD_THROW(AUD_ERROR_READER);
- }
-
- catch(AUD_Exception)
+ AUD_Specs s1, s2;
+ s1 = reader1->getSpecs();
+ s2 = reader2->getSpecs();
+ if(memcmp(&s1, &s2, sizeof(AUD_Specs)) != 0)
{
- if(reader1)
- {
- delete reader1; AUD_DELETE("reader")
- }
- if(reader2)
- {
- delete reader2; AUD_DELETE("reader")
- }
-
- throw;
+ delete reader1;
+ delete reader2;
+ AUD_THROW(AUD_ERROR_SPECS, specs_error);
}
-
- m_buffer = new AUD_Buffer(); AUD_NEW("buffer")
- m_finished1 = false;
}
AUD_DoubleReader::~AUD_DoubleReader()
{
- delete m_reader1; AUD_DELETE("reader")
- delete m_reader2; AUD_DELETE("reader")
- delete m_buffer; AUD_DELETE("buffer")
+ delete m_reader1;
+ delete m_reader2;
}
-bool AUD_DoubleReader::isSeekable()
+bool AUD_DoubleReader::isSeekable() const
{
- return false;
+ return m_reader1->isSeekable() && m_reader2->isSeekable();
}
void AUD_DoubleReader::seek(int position)
{
- int length1 = m_reader1->getLength();
+ m_reader1->seek(position);
- if(position < 0)
- position = 0;
+ int pos1 = m_reader1->getPosition();
- if(position < length1)
- {
- m_reader1->seek(position);
- m_reader2->seek(0);
- m_finished1 = false;
- }
+ if((m_finished1 = (pos1 < position)))
+ m_reader2->seek(position - pos1);
else
- {
- m_reader2->seek(position-length1);
- m_finished1 = true;
- }
+ m_reader2->seek(0);
}
-int AUD_DoubleReader::getLength()
+int AUD_DoubleReader::getLength() const
{
int len1 = m_reader1->getLength();
int len2 = m_reader2->getLength();
@@ -106,49 +77,45 @@ int AUD_DoubleReader::getLength()
return len1 + len2;
}
-int AUD_DoubleReader::getPosition()
+int AUD_DoubleReader::getPosition() const
{
return m_reader1->getPosition() + m_reader2->getPosition();
}
-AUD_Specs AUD_DoubleReader::getSpecs()
+AUD_Specs AUD_DoubleReader::getSpecs() const
{
return m_reader1->getSpecs();
}
-AUD_ReaderType AUD_DoubleReader::getType()
-{
- if(m_reader1->getType() == AUD_TYPE_BUFFER &&
- m_reader2->getType() == AUD_TYPE_BUFFER)
- return AUD_TYPE_BUFFER;
- return AUD_TYPE_STREAM;
-}
-
-bool AUD_DoubleReader::notify(AUD_Message &message)
-{
- return m_reader1->notify(message) | m_reader2->notify(message);
-}
-
void AUD_DoubleReader::read(int & length, sample_t* & buffer)
{
if(!m_finished1)
{
int len = length;
m_reader1->read(len, buffer);
+
if(len < length)
{
AUD_Specs specs = m_reader1->getSpecs();
int samplesize = AUD_SAMPLE_SIZE(specs);
- if(m_buffer->getSize() < length * samplesize)
- m_buffer->resize(length * samplesize);
- memcpy(m_buffer->getBuffer(), buffer, len * samplesize);
+
+ if(m_buffer.getSize() < length * samplesize)
+ m_buffer.resize(length * samplesize);
+
+ sample_t* buf = buffer;
+ buffer = m_buffer.getBuffer();
+
+ memcpy(buffer, buf, len * samplesize);
+
len = length - len;
length -= len;
- m_reader2->read(len, buffer);
- memcpy(m_buffer->getBuffer() + length * specs.channels, buffer,
+ m_reader2->read(len, buf);
+
+ memcpy(buffer + length * specs.channels, buf,
len * samplesize);
+
length += len;
- buffer = m_buffer->getBuffer();
+
m_finished1 = true;
}
}
diff --git a/intern/audaspace/FX/AUD_DoubleReader.h b/intern/audaspace/FX/AUD_DoubleReader.h
index d82b81ec0ba..d80ba33dfe3 100644
--- a/intern/audaspace/FX/AUD_DoubleReader.h
+++ b/intern/audaspace/FX/AUD_DoubleReader.h
@@ -27,7 +27,7 @@
#define AUD_DOUBLEREADER
#include "AUD_IReader.h"
-class AUD_Buffer;
+#include "AUD_Buffer.h"
/**
* This reader plays two readers with the same specs sequently.
@@ -53,15 +53,18 @@ private:
/**
* The playback buffer for the intersecting part.
*/
- AUD_Buffer* m_buffer;
+ AUD_Buffer m_buffer;
+
+ // hide copy constructor and operator=
+ AUD_DoubleReader(const AUD_DoubleReader&);
+ AUD_DoubleReader& operator=(const AUD_DoubleReader&);
public:
/**
* Creates a new ping pong reader.
* \param reader1 The first reader to read from.
* \param reader2 The second reader to read from.
- * \exception AUD_Exception Thrown if one of the reader specified is NULL
- * or the specs from the readers differ.
+ * \exception AUD_Exception Thrown if the specs from the readers differ.
*/
AUD_DoubleReader(AUD_IReader* reader1, AUD_IReader* reader2);
@@ -70,13 +73,11 @@ public:
*/
virtual ~AUD_DoubleReader();
- virtual bool isSeekable();
+ virtual bool isSeekable() const;
virtual void seek(int position);
- virtual int getLength();
- virtual int getPosition();
- virtual AUD_Specs getSpecs();
- virtual AUD_ReaderType getType();
- virtual bool notify(AUD_Message &message);
+ virtual int getLength() const;
+ virtual int getPosition() const;
+ virtual AUD_Specs getSpecs() const;
virtual void read(int & length, sample_t* & buffer);
};
diff --git a/intern/audaspace/FX/AUD_EffectFactory.cpp b/intern/audaspace/FX/AUD_EffectFactory.cpp
index 882499416b7..eda4e4e04b2 100644
--- a/intern/audaspace/FX/AUD_EffectFactory.cpp
+++ b/intern/audaspace/FX/AUD_EffectFactory.cpp
@@ -26,25 +26,16 @@
#include "AUD_EffectFactory.h"
#include "AUD_IReader.h"
-AUD_IReader* AUD_EffectFactory::getReader()
-{
- if(m_factory != 0)
- return m_factory->createReader();
-
- return 0;
-}
-
AUD_EffectFactory::AUD_EffectFactory(AUD_IFactory* factory)
{
m_factory = factory;
}
-void AUD_EffectFactory::setFactory(AUD_IFactory* factory)
+AUD_EffectFactory::~AUD_EffectFactory()
{
- m_factory = factory;
}
-AUD_IFactory* AUD_EffectFactory::getFactory()
+AUD_IFactory* AUD_EffectFactory::getFactory() const
{
return m_factory;
}
diff --git a/intern/audaspace/FX/AUD_EffectFactory.h b/intern/audaspace/FX/AUD_EffectFactory.h
index 67259b9e6c3..fd3746d0da3 100644
--- a/intern/audaspace/FX/AUD_EffectFactory.h
+++ b/intern/audaspace/FX/AUD_EffectFactory.h
@@ -34,6 +34,11 @@
*/
class AUD_EffectFactory : public AUD_IFactory
{
+private:
+ // hide copy constructor and operator=
+ AUD_EffectFactory(const AUD_EffectFactory&);
+ AUD_EffectFactory& operator=(const AUD_EffectFactory&);
+
protected:
/**
* If there is no reader it is created out of this factory.
@@ -44,9 +49,12 @@ protected:
* Returns the reader created out of the factory.
* This method can be used for the createReader function of the implementing
* classes.
- * \return The reader created out of the factory or NULL if there is none.
+ * \return The reader created out of the factory.
*/
- AUD_IReader* getReader();
+ inline AUD_IReader* getReader() const
+ {
+ return m_factory->createReader();
+ }
public:
/**
@@ -58,19 +66,13 @@ public:
/**
* Destroys the factory.
*/
- virtual ~AUD_EffectFactory() {}
-
- /**
- * Sets the input factory.
- * \param factory The input factory.
- */
- void setFactory(AUD_IFactory* factory);
+ virtual ~AUD_EffectFactory();
/**
* Returns the saved factory.
* \return The factory or NULL if there has no factory been saved.
*/
- AUD_IFactory* getFactory();
+ AUD_IFactory* getFactory() const;
};
#endif //AUD_EFFECTFACTORY
diff --git a/intern/audaspace/FX/AUD_EffectReader.cpp b/intern/audaspace/FX/AUD_EffectReader.cpp
index 47026b88440..b54ca279088 100644
--- a/intern/audaspace/FX/AUD_EffectReader.cpp
+++ b/intern/audaspace/FX/AUD_EffectReader.cpp
@@ -27,17 +27,15 @@
AUD_EffectReader::AUD_EffectReader(AUD_IReader* reader)
{
- if(!reader)
- AUD_THROW(AUD_ERROR_READER);
m_reader = reader;
}
AUD_EffectReader::~AUD_EffectReader()
{
- delete m_reader; AUD_DELETE("reader")
+ delete m_reader;
}
-bool AUD_EffectReader::isSeekable()
+bool AUD_EffectReader::isSeekable() const
{
return m_reader->isSeekable();
}
@@ -47,31 +45,21 @@ void AUD_EffectReader::seek(int position)
m_reader->seek(position);
}
-int AUD_EffectReader::getLength()
+int AUD_EffectReader::getLength() const
{
return m_reader->getLength();
}
-int AUD_EffectReader::getPosition()
+int AUD_EffectReader::getPosition() const
{
return m_reader->getPosition();
}
-AUD_Specs AUD_EffectReader::getSpecs()
+AUD_Specs AUD_EffectReader::getSpecs() const
{
return m_reader->getSpecs();
}
-AUD_ReaderType AUD_EffectReader::getType()
-{
- return m_reader->getType();
-}
-
-bool AUD_EffectReader::notify(AUD_Message &message)
-{
- return m_reader->notify(message);
-}
-
void AUD_EffectReader::read(int & length, sample_t* & buffer)
{
m_reader->read(length, buffer);
diff --git a/intern/audaspace/FX/AUD_EffectReader.h b/intern/audaspace/FX/AUD_EffectReader.h
index f64bf34077d..c447f79bc6e 100644
--- a/intern/audaspace/FX/AUD_EffectReader.h
+++ b/intern/audaspace/FX/AUD_EffectReader.h
@@ -34,6 +34,11 @@
*/
class AUD_EffectReader : public AUD_IReader
{
+private:
+ // hide copy constructor and operator=
+ AUD_EffectReader(const AUD_EffectReader&);
+ AUD_EffectReader& operator=(const AUD_EffectReader&);
+
protected:
/**
* The reader to read from.
@@ -44,7 +49,6 @@ public:
/**
* Creates a new effect reader.
* \param reader The reader to read from.
- * \exception AUD_Exception Thrown if the reader specified is NULL.
*/
AUD_EffectReader(AUD_IReader* reader);
@@ -53,13 +57,11 @@ public:
*/
virtual ~AUD_EffectReader();
- virtual bool isSeekable();
+ virtual bool isSeekable() const;
virtual void seek(int position);
- virtual int getLength();
- virtual int getPosition();
- virtual AUD_Specs getSpecs();
- virtual AUD_ReaderType getType();
- virtual bool notify(AUD_Message &message);
+ virtual int getLength() const;
+ virtual int getPosition() const;
+ virtual AUD_Specs getSpecs() const;
virtual void read(int & length, sample_t* & buffer);
};
diff --git a/intern/audaspace/FX/AUD_EnvelopeFactory.cpp b/intern/audaspace/FX/AUD_EnvelopeFactory.cpp
index c3b2c3f24fe..4777da70404 100644
--- a/intern/audaspace/FX/AUD_EnvelopeFactory.cpp
+++ b/intern/audaspace/FX/AUD_EnvelopeFactory.cpp
@@ -24,7 +24,31 @@
*/
#include "AUD_EnvelopeFactory.h"
-#include "AUD_EnvelopeReader.h"
+#include "AUD_CallbackIIRFilterReader.h"
+
+#include <cmath>
+
+struct EnvelopeParameters
+{
+ float attack;
+ float release;
+ float threshold;
+ float arthreshold;
+};
+
+sample_t envelopeFilter(AUD_CallbackIIRFilterReader* reader, EnvelopeParameters* param)
+{
+ float in = fabs(reader->x(0));
+ float out = reader->y(-1);
+ if(in < param->threshold)
+ in = 0.0f;
+ return (in > out ? param->attack : param->release) * (out - in) + in;
+}
+
+void endEnvelopeFilter(EnvelopeParameters* param)
+{
+ delete param;
+}
AUD_EnvelopeFactory::AUD_EnvelopeFactory(AUD_IFactory* factory, float attack,
float release, float threshold,
@@ -33,26 +57,22 @@ AUD_EnvelopeFactory::AUD_EnvelopeFactory(AUD_IFactory* factory, float attack,
m_attack(attack),
m_release(release),
m_threshold(threshold),
- m_arthreshold(arthreshold) {}
-
-AUD_EnvelopeFactory::AUD_EnvelopeFactory(float attack, float release,
- float threshold, float arthreshold) :
- AUD_EffectFactory(0),
- m_attack(attack),
- m_release(release),
- m_threshold(threshold),
- m_arthreshold(arthreshold) {}
+ m_arthreshold(arthreshold)
+{
+}
-AUD_IReader* AUD_EnvelopeFactory::createReader()
+AUD_IReader* AUD_EnvelopeFactory::createReader() const
{
AUD_IReader* reader = getReader();
- if(reader != 0)
- {
- reader = new AUD_EnvelopeReader(reader, m_attack, m_release,
- m_threshold, m_arthreshold);
- AUD_NEW("reader")
- }
+ EnvelopeParameters* param = new EnvelopeParameters();
+ param->arthreshold = m_arthreshold;
+ param->attack = pow(m_arthreshold, 1.0f/(reader->getSpecs().rate * m_attack));
+ param->release = pow(m_arthreshold, 1.0f/(reader->getSpecs().rate * m_release));
+ param->threshold = m_threshold;
- return reader;
+ return new AUD_CallbackIIRFilterReader(reader, 1, 2,
+ (doFilterIIR) envelopeFilter,
+ (endFilterIIR) endEnvelopeFilter,
+ param);
}
diff --git a/intern/audaspace/FX/AUD_EnvelopeFactory.h b/intern/audaspace/FX/AUD_EnvelopeFactory.h
index c79e5472e30..c31c6727d03 100644
--- a/intern/audaspace/FX/AUD_EnvelopeFactory.h
+++ b/intern/audaspace/FX/AUD_EnvelopeFactory.h
@@ -37,22 +37,26 @@ private:
/**
* The attack value in seconds.
*/
- float m_attack;
+ const float m_attack;
/**
* The release value in seconds.
*/
- float m_release;
+ const float m_release;
/**
* The threshold value.
*/
- float m_threshold;
+ const float m_threshold;
/**
* The attack/release threshold value.
*/
- float m_arthreshold;
+ const float m_arthreshold;
+
+ // hide copy constructor and operator=
+ AUD_EnvelopeFactory(const AUD_EnvelopeFactory&);
+ AUD_EnvelopeFactory& operator=(const AUD_EnvelopeFactory&);
public:
/**
@@ -66,17 +70,7 @@ public:
AUD_EnvelopeFactory(AUD_IFactory* factory, float attack, float release,
float threshold, float arthreshold);
- /**
- * Creates a new envelope factory.
- * \param attack The attack value in seconds.
- * \param release The release value in seconds.
- * \param threshold The threshold value.
- * \param arthreshold The attack/release threshold value.
- */
- AUD_EnvelopeFactory(float attack, float release, float threshold,
- float arthreshold);
-
- virtual AUD_IReader* createReader();
+ virtual AUD_IReader* createReader() const;
};
#endif //AUD_ENVELOPEFACTORY
diff --git a/intern/audaspace/FX/AUD_EnvelopeReader.cpp b/intern/audaspace/FX/AUD_EnvelopeReader.cpp
deleted file mode 100644
index 71ccbfd6503..00000000000
--- a/intern/audaspace/FX/AUD_EnvelopeReader.cpp
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * $Id$
- *
- * ***** BEGIN LGPL LICENSE BLOCK *****
- *
- * Copyright 2009 Jörg Hermann Müller
- *
- * This file is part of AudaSpace.
- *
- * AudaSpace is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * AudaSpace is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with AudaSpace. If not, see <http://www.gnu.org/licenses/>.
- *
- * ***** END LGPL LICENSE BLOCK *****
- */
-
-#include "AUD_EnvelopeReader.h"
-#include "AUD_Buffer.h"
-
-#include <cstring>
-#include <cmath>
-
-AUD_EnvelopeReader::AUD_EnvelopeReader(AUD_IReader* reader, float attack,
- float release, float threshold,
- float arthreshold) :
- AUD_EffectReader(reader),
- m_threshold(threshold)
-{
- AUD_Specs specs = reader->getSpecs();
- int samplesize = AUD_SAMPLE_SIZE(specs);
-
- m_buffer = new AUD_Buffer(); AUD_NEW("buffer")
-
- m_envelopes = new AUD_Buffer(samplesize);
- AUD_NEW("buffer")
- memset(m_envelopes->getBuffer(), 0, samplesize);
-
- m_bAttack = pow(arthreshold, 1.0f/(specs.rate * attack));
- m_bRelease = pow(arthreshold, 1.0f/(specs.rate * release));
-}
-
-AUD_EnvelopeReader::~AUD_EnvelopeReader()
-{
- delete m_buffer; AUD_DELETE("buffer")
- delete m_envelopes; AUD_DELETE("buffer")
-}
-
-void AUD_EnvelopeReader::read(int & length, sample_t* & buffer)
-{
- sample_t* buf;
- sample_t* envelopes;
- envelopes = m_envelopes->getBuffer();
-
- AUD_Specs specs = m_reader->getSpecs();
-
- m_reader->read(length, buf);
- if(m_buffer->getSize() < length * AUD_SAMPLE_SIZE(specs))
- m_buffer->resize(length * AUD_SAMPLE_SIZE(specs));
-
- buffer = m_buffer->getBuffer();
-
- sample_t value;
-
- for(int channel = 0; channel < specs.channels; channel++)
- {
- for(int i = 0; i < length; i++)
- {
- value = fabs(buf[i * specs.channels + channel]);
- if(value < m_threshold)
- value = 0.0f;
-
- buffer[i * specs.channels + channel] = envelopes[channel] =
- ((value > envelopes[channel]) ? m_bAttack : m_bRelease) *
- (envelopes[channel] - value) + value;
- }
- }
-}
diff --git a/intern/audaspace/FX/AUD_EnvelopeReader.h b/intern/audaspace/FX/AUD_EnvelopeReader.h
deleted file mode 100644
index ff9dd23d34c..00000000000
--- a/intern/audaspace/FX/AUD_EnvelopeReader.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * $Id$
- *
- * ***** BEGIN LGPL LICENSE BLOCK *****
- *
- * Copyright 2009 Jörg Hermann Müller
- *
- * This file is part of AudaSpace.
- *
- * AudaSpace is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * AudaSpace is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with AudaSpace. If not, see <http://www.gnu.org/licenses/>.
- *
- * ***** END LGPL LICENSE BLOCK *****
- */
-
-#ifndef AUD_ENVELOPEREADER
-#define AUD_ENVELOPEREADER
-
-#include "AUD_EffectReader.h"
-class AUD_Buffer;
-
-/**
- * This class represents an envelope follower.
- */
-class AUD_EnvelopeReader : public AUD_EffectReader
-{
-private:
- /**
- * The playback buffer.
- */
- AUD_Buffer *m_buffer;
-
- /**
- * The last envelopes buffer.
- */
- AUD_Buffer *m_envelopes;
-
- /**
- * Attack b value.
- */
- float m_bAttack;
-
- /**
- * Release b value.
- */
- float m_bRelease;
-
- /**
- * Threshold value.
- */
- float m_threshold;
-
-public:
- /**
- * Creates a new envelope reader.
- * \param reader The reader to read from.
- * \param attack The attack value in seconds.
- * \param release The release value in seconds.
- * \param threshold The threshold value.
- * \param arthreshold The attack/release threshold value.
- * \exception AUD_Exception Thrown if the reader specified is NULL.
- */
- AUD_EnvelopeReader(AUD_IReader* reader, float attack, float release,
- float threshold, float arthreshold);
-
- /**
- * Destroys the reader.
- */
- virtual ~AUD_EnvelopeReader();
-
- virtual void read(int & length, sample_t* & buffer);
-};
-
-#endif //AUD_ENVELOPEREADER
diff --git a/intern/audaspace/FX/AUD_FaderFactory.cpp b/intern/audaspace/FX/AUD_FaderFactory.cpp
index 4357e11bd43..bbe9319c928 100644
--- a/intern/audaspace/FX/AUD_FaderFactory.cpp
+++ b/intern/audaspace/FX/AUD_FaderFactory.cpp
@@ -31,54 +31,26 @@ AUD_FaderFactory::AUD_FaderFactory(AUD_IFactory* factory, AUD_FadeType type,
AUD_EffectFactory(factory),
m_type(type),
m_start(start),
- m_length(length) {}
-
-AUD_FaderFactory::AUD_FaderFactory(AUD_FadeType type,
- float start, float length) :
- AUD_EffectFactory(0),
- m_type(type),
- m_start(start),
- m_length(length) {}
-
-AUD_FadeType AUD_FaderFactory::getType()
+ m_length(length)
{
- return m_type;
}
-void AUD_FaderFactory::setType(AUD_FadeType type)
+AUD_FadeType AUD_FaderFactory::getType() const
{
- m_type = type;
+ return m_type;
}
-float AUD_FaderFactory::getStart()
+float AUD_FaderFactory::getStart() const
{
return m_start;
}
-void AUD_FaderFactory::setStart(float start)
-{
- m_start = start;
-}
-
-float AUD_FaderFactory::getLength()
+float AUD_FaderFactory::getLength() const
{
return m_length;
}
-void AUD_FaderFactory::setLength(float length)
+AUD_IReader* AUD_FaderFactory::createReader() const
{
- m_length = length;
-}
-
-AUD_IReader* AUD_FaderFactory::createReader()
-{
- AUD_IReader* reader = getReader();
-
- if(reader != 0)
- {
- reader = new AUD_FaderReader(reader, m_type, m_start, m_length);
- AUD_NEW("reader")
- }
-
- return reader;
+ return new AUD_FaderReader(getReader(), m_type, m_start, m_length);
}
diff --git a/intern/audaspace/FX/AUD_FaderFactory.h b/intern/audaspace/FX/AUD_FaderFactory.h
index 4999ccac8f1..af5d18538ea 100644
--- a/intern/audaspace/FX/AUD_FaderFactory.h
+++ b/intern/audaspace/FX/AUD_FaderFactory.h
@@ -39,17 +39,21 @@ private:
/**
* The fading type.
*/
- AUD_FadeType m_type;
+ const AUD_FadeType m_type;
/**
* The fading start.
*/
- float m_start;
+ const float m_start;
/**
* The fading length.
*/
- float m_length;
+ const float m_length;
+
+ // hide copy constructor and operator=
+ AUD_FaderFactory(const AUD_FaderFactory&);
+ AUD_FaderFactory& operator=(const AUD_FaderFactory&);
public:
/**
@@ -59,53 +63,26 @@ public:
* \param start The time where fading should start in seconds.
* \param length How long fading should last in seconds.
*/
- AUD_FaderFactory(AUD_IFactory* factory = 0,
+ AUD_FaderFactory(AUD_IFactory* factory,
AUD_FadeType type = AUD_FADE_IN,
float start = 0.0f, float length = 1.0f);
/**
- * Creates a new fader factory.
- * \param type The fading type.
- * \param start The time where fading should start in seconds.
- * \param length How long fading should last in seconds.
- */
- AUD_FaderFactory(AUD_FadeType type = AUD_FADE_IN,
- float start = 0.0f, float length = 1.0f);
-
- /**
* Returns the fading type.
*/
- AUD_FadeType getType();
-
- /**
- * Sets the fading type.
- * \param type The new fading type: AUD_FADE_IN or AUD_FADE_OUT.
- */
- void setType(AUD_FadeType type);
+ AUD_FadeType getType() const;
/**
* Returns the fading start.
*/
- float getStart();
-
- /**
- * Sets the fading start.
- * \param start The new fading start.
- */
- void setStart(float start);
+ float getStart() const;
/**
* Returns the fading length.
*/
- float getLength();
-
- /**
- * Sets the fading length.
- * \param start The new fading length.
- */
- void setLength(float length);
+ float getLength() const;
- virtual AUD_IReader* createReader();
+ virtual AUD_IReader* createReader() const;
};
#endif //AUD_FADERFACTORY
diff --git a/intern/audaspace/FX/AUD_FaderReader.cpp b/intern/audaspace/FX/AUD_FaderReader.cpp
index 4e919fff323..2292fa06102 100644
--- a/intern/audaspace/FX/AUD_FaderReader.cpp
+++ b/intern/audaspace/FX/AUD_FaderReader.cpp
@@ -24,7 +24,6 @@
*/
#include "AUD_FaderReader.h"
-#include "AUD_Buffer.h"
#include <cstring>
@@ -33,19 +32,9 @@ AUD_FaderReader::AUD_FaderReader(AUD_IReader* reader, AUD_FadeType type,
AUD_EffectReader(reader),
m_type(type),
m_start(start),
- m_length(length)
+ m_length(length),
+ m_empty(true)
{
- m_buffer = new AUD_Buffer(); AUD_NEW("buffer")
-}
-
-AUD_FaderReader::~AUD_FaderReader()
-{
- delete m_buffer; AUD_DELETE("buffer")
-}
-
-bool AUD_FaderReader::notify(AUD_Message &message)
-{
- return m_reader->notify(message);
}
void AUD_FaderReader::read(int & length, sample_t* & buffer)
@@ -56,28 +45,50 @@ void AUD_FaderReader::read(int & length, sample_t* & buffer)
m_reader->read(length, buffer);
- if(m_buffer->getSize() < length * samplesize)
- m_buffer->resize(length * samplesize);
-
if((position + length) / (float)specs.rate <= m_start)
{
if(m_type != AUD_FADE_OUT)
{
- buffer = m_buffer->getBuffer();
- memset(buffer, 0, length * samplesize);
+ if(m_buffer.getSize() < length * samplesize)
+ {
+ m_buffer.resize(length * samplesize);
+ m_empty = false;
+ }
+
+ buffer = m_buffer.getBuffer();
+
+ if(!m_empty)
+ {
+ memset(buffer, 0, length * samplesize);
+ m_empty = true;
+ }
}
}
else if(position / (float)specs.rate >= m_start+m_length)
{
if(m_type == AUD_FADE_OUT)
{
- buffer = m_buffer->getBuffer();
- memset(buffer, 0, length * samplesize);
+ if(m_buffer.getSize() < length * samplesize)
+ {
+ m_buffer.resize(length * samplesize);
+ m_empty = false;
+ }
+
+ buffer = m_buffer.getBuffer();
+
+ if(!m_empty)
+ {
+ memset(buffer, 0, length * samplesize);
+ m_empty = true;
+ }
}
}
else
{
- sample_t* buf = m_buffer->getBuffer();
+ if(m_buffer.getSize() < length * samplesize)
+ m_buffer.resize(length * samplesize);
+
+ sample_t* buf = m_buffer.getBuffer();
float volume = 1.0f;
for(int i = 0; i < length * specs.channels; i++)
@@ -98,5 +109,6 @@ void AUD_FaderReader::read(int & length, sample_t* & buffer)
}
buffer = buf;
+ m_empty = false;
}
}
diff --git a/intern/audaspace/FX/AUD_FaderReader.h b/intern/audaspace/FX/AUD_FaderReader.h
index a75ac6e7a47..d9d685af956 100644
--- a/intern/audaspace/FX/AUD_FaderReader.h
+++ b/intern/audaspace/FX/AUD_FaderReader.h
@@ -27,7 +27,7 @@
#define AUD_FADERREADER
#include "AUD_EffectReader.h"
-class AUD_Buffer;
+#include "AUD_Buffer.h"
/**
* This class fades another reader.
@@ -38,24 +38,33 @@ class AUD_FaderReader : public AUD_EffectReader
{
private:
/**
- * The playback buffer.
- */
- AUD_Buffer *m_buffer;
-
- /**
* The fading type.
*/
- AUD_FadeType m_type;
+ const AUD_FadeType m_type;
/**
* The fading start.
*/
- float m_start;
+ const float m_start;
/**
* The fading length.
*/
- float m_length;
+ const float m_length;
+
+ /**
+ * The playback buffer.
+ */
+ AUD_Buffer m_buffer;
+
+ /**
+ * Whether the buffer is empty.
+ */
+ bool m_empty;
+
+ // hide copy constructor and operator=
+ AUD_FaderReader(const AUD_FaderReader&);
+ AUD_FaderReader& operator=(const AUD_FaderReader&);
public:
/**
@@ -63,17 +72,10 @@ public:
* \param type The fading type.
* \param start The time where fading should start in seconds.
* \param length How long fading should last in seconds.
- * \exception AUD_Exception Thrown if the reader specified is NULL.
*/
AUD_FaderReader(AUD_IReader* reader, AUD_FadeType type,
float start,float length);
- /**
- * Destroys the reader.
- */
- virtual ~AUD_FaderReader();
-
- virtual bool notify(AUD_Message &message);
virtual void read(int & length, sample_t* & buffer);
};
diff --git a/intern/audaspace/FX/AUD_HighpassFactory.cpp b/intern/audaspace/FX/AUD_HighpassFactory.cpp
index 384d36beab7..d222e7f615e 100644
--- a/intern/audaspace/FX/AUD_HighpassFactory.cpp
+++ b/intern/audaspace/FX/AUD_HighpassFactory.cpp
@@ -24,28 +24,38 @@
*/
#include "AUD_HighpassFactory.h"
-#include "AUD_HighpassReader.h"
+#include "AUD_IIRFilterReader.h"
+
+#include <cmath>
+
+#ifndef M_PI
+#define M_PI 3.14159265358979323846
+#endif
AUD_HighpassFactory::AUD_HighpassFactory(AUD_IFactory* factory, float frequency,
float Q) :
AUD_EffectFactory(factory),
m_frequency(frequency),
- m_Q(Q) {}
-
-AUD_HighpassFactory::AUD_HighpassFactory(float frequency, float Q) :
- AUD_EffectFactory(0),
- m_frequency(frequency),
- m_Q(Q) {}
+ m_Q(Q)
+{
+}
-AUD_IReader* AUD_HighpassFactory::createReader()
+AUD_IReader* AUD_HighpassFactory::createReader() const
{
AUD_IReader* reader = getReader();
- if(reader != 0)
- {
- reader = new AUD_HighpassReader(reader, m_frequency, m_Q);
- AUD_NEW("reader")
- }
+ // calculate coefficients
+ float w0 = 2 * M_PI * m_frequency / reader->getSpecs().rate;
+ float alpha = sin(w0) / (2 * m_Q);
+ float norm = 1 + alpha;
+ float c = cos(w0);
+ std::vector<float> a, b;
+ a.push_back(1);
+ a.push_back(-2 * c / norm);
+ a.push_back((1 - alpha) / norm);
+ b.push_back((1 + c) / (2 * norm));
+ b.push_back((-1 - c) / norm);
+ b.push_back(b[0]);
- return reader;
+ return new AUD_IIRFilterReader(reader, b, a);
}
diff --git a/intern/audaspace/FX/AUD_HighpassFactory.h b/intern/audaspace/FX/AUD_HighpassFactory.h
index 5e31053ed6c..1220157a776 100644
--- a/intern/audaspace/FX/AUD_HighpassFactory.h
+++ b/intern/audaspace/FX/AUD_HighpassFactory.h
@@ -37,12 +37,16 @@ private:
/**
* The attack value in seconds.
*/
- float m_frequency;
+ const float m_frequency;
/**
* The Q factor.
*/
- float m_Q;
+ const float m_Q;
+
+ // hide copy constructor and operator=
+ AUD_HighpassFactory(const AUD_HighpassFactory&);
+ AUD_HighpassFactory& operator=(const AUD_HighpassFactory&);
public:
/**
@@ -53,14 +57,7 @@ public:
*/
AUD_HighpassFactory(AUD_IFactory* factory, float frequency, float Q = 1.0f);
- /**
- * Creates a new highpass factory.
- * \param frequency The cutoff frequency.
- * \param Q The Q factor.
- */
- AUD_HighpassFactory(float frequency, float Q = 1.0f);
-
- virtual AUD_IReader* createReader();
+ virtual AUD_IReader* createReader() const;
};
#endif //AUD_HIGHPASSFACTORY
diff --git a/intern/audaspace/FX/AUD_HighpassReader.cpp b/intern/audaspace/FX/AUD_HighpassReader.cpp
deleted file mode 100644
index 36b1bb8082e..00000000000
--- a/intern/audaspace/FX/AUD_HighpassReader.cpp
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * $Id$
- *
- * ***** BEGIN LGPL LICENSE BLOCK *****
- *
- * Copyright 2009 Jörg Hermann Müller
- *
- * This file is part of AudaSpace.
- *
- * AudaSpace is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * AudaSpace is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with AudaSpace. If not, see <http://www.gnu.org/licenses/>.
- *
- * ***** END LGPL LICENSE BLOCK *****
- */
-
-#include "AUD_HighpassReader.h"
-#include "AUD_Buffer.h"
-
-#include <cstring>
-#include <cmath>
-
-#ifndef M_PI
-#define M_PI 3.14159265358979323846
-#endif
-
-#define CC channels + channel
-
-AUD_HighpassReader::AUD_HighpassReader(AUD_IReader* reader, float frequency,
- float Q) :
- AUD_EffectReader(reader)
-{
- AUD_Specs specs = reader->getSpecs();
- int samplesize = AUD_SAMPLE_SIZE(specs);
-
- m_buffer = new AUD_Buffer(); AUD_NEW("buffer")
-
- m_outvalues = new AUD_Buffer(samplesize * AUD_HIGHPASS_ORDER);
- AUD_NEW("buffer")
- memset(m_outvalues->getBuffer(), 0, samplesize * AUD_HIGHPASS_ORDER);
-
- m_invalues = new AUD_Buffer(samplesize * AUD_HIGHPASS_ORDER);
- AUD_NEW("buffer")
- memset(m_invalues->getBuffer(), 0, samplesize * AUD_HIGHPASS_ORDER);
-
- m_position = 0;
-
- // calculate coefficients
- float w0 = 2 * M_PI * frequency / specs.rate;
- float alpha = sin(w0) / (2 * Q);
- float norm = 1 + alpha;
- m_coeff[0][0] = 0;
- m_coeff[0][1] = -2 * cos(w0) / norm;
- m_coeff[0][2] = (1 - alpha) / norm;
- m_coeff[1][2] = m_coeff[1][0] = (1 + cos(w0)) / (2 * norm);
- m_coeff[1][1] = (-1 - cos(w0)) / norm;
-}
-
-AUD_HighpassReader::~AUD_HighpassReader()
-{
- delete m_buffer; AUD_DELETE("buffer")
-
- delete m_outvalues; AUD_DELETE("buffer")
- delete m_invalues; AUD_DELETE("buffer");
-}
-
-void AUD_HighpassReader::read(int & length, sample_t* & buffer)
-{
- sample_t* buf;
- sample_t* outvalues;
- sample_t* invalues;
-
- outvalues = m_outvalues->getBuffer();
- invalues = m_invalues->getBuffer();
-
- AUD_Specs specs = m_reader->getSpecs();
-
- m_reader->read(length, buf);
-
- if(m_buffer->getSize() < length * AUD_SAMPLE_SIZE(specs))
- m_buffer->resize(length * AUD_SAMPLE_SIZE(specs));
-
- buffer = m_buffer->getBuffer();
- int channels = specs.channels;
-
- for(int channel = 0; channel < channels; channel++)
- {
- for(int i = 0; i < length; i++)
- {
- invalues[m_position * CC] = buf[i * CC];
- outvalues[m_position * CC] = 0;
-
- for(int j = 0; j < AUD_HIGHPASS_ORDER; j++)
- {
- outvalues[m_position * CC] += m_coeff[1][j] *
- invalues[((m_position + j) % AUD_HIGHPASS_ORDER) * CC] -
- m_coeff[0][j] *
- outvalues[((m_position + j) % AUD_HIGHPASS_ORDER) * CC];
- }
-
- buffer[i * CC] = outvalues[m_position * CC];
-
- m_position = (m_position + AUD_HIGHPASS_ORDER-1) %
- AUD_HIGHPASS_ORDER;
- }
- }
-}
diff --git a/intern/audaspace/FX/AUD_HighpassReader.h b/intern/audaspace/FX/AUD_HighpassReader.h
deleted file mode 100644
index dc28a62e45b..00000000000
--- a/intern/audaspace/FX/AUD_HighpassReader.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * $Id$
- *
- * ***** BEGIN LGPL LICENSE BLOCK *****
- *
- * Copyright 2009 Jörg Hermann Müller
- *
- * This file is part of AudaSpace.
- *
- * AudaSpace is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * AudaSpace is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with AudaSpace. If not, see <http://www.gnu.org/licenses/>.
- *
- * ***** END LGPL LICENSE BLOCK *****
- */
-
-#ifndef AUD_HIGHPASSREADER
-#define AUD_HIGHPASSREADER
-
-#include "AUD_EffectReader.h"
-class AUD_Buffer;
-
-#define AUD_HIGHPASS_ORDER 3
-
-/**
- * This class represents a highpass filter.
- */
-class AUD_HighpassReader : public AUD_EffectReader
-{
-private:
- /**
- * The playback buffer.
- */
- AUD_Buffer *m_buffer;
-
- /**
- * The last out values buffer.
- */
- AUD_Buffer *m_outvalues;
-
- /**
- * The last in values buffer.
- */
- AUD_Buffer *m_invalues;
-
- /**
- * The position for buffer cycling.
- */
- int m_position;
-
- /**
- * Filter coefficients.
- */
- float m_coeff[2][AUD_HIGHPASS_ORDER];
-
-public:
- /**
- * Creates a new highpass reader.
- * \param reader The reader to read from.
- * \param frequency The cutoff frequency.
- * \param Q The Q factor.
- * \exception AUD_Exception Thrown if the reader specified is NULL.
- */
- AUD_HighpassReader(AUD_IReader* reader, float frequency, float Q);
-
- /**
- * Destroys the reader.
- */
- virtual ~AUD_HighpassReader();
-
- virtual void read(int & length, sample_t* & buffer);
-};
-
-#endif //AUD_HIGHPASSREADER
diff --git a/intern/audaspace/FX/AUD_IIRFilterFactory.cpp b/intern/audaspace/FX/AUD_IIRFilterFactory.cpp
new file mode 100644
index 00000000000..8cd49a03708
--- /dev/null
+++ b/intern/audaspace/FX/AUD_IIRFilterFactory.cpp
@@ -0,0 +1,39 @@
+/*
+ * $Id$
+ *
+ * ***** BEGIN LGPL LICENSE BLOCK *****
+ *
+ * Copyright 2009 Jörg Hermann Müller
+ *
+ * This file is part of AudaSpace.
+ *
+ * AudaSpace is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * AudaSpace is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with AudaSpace. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * ***** END LGPL LICENSE BLOCK *****
+ */
+
+#include "AUD_IIRFilterFactory.h"
+#include "AUD_IIRFilterReader.h"
+
+AUD_IIRFilterFactory::AUD_IIRFilterFactory(AUD_IFactory* factory,
+ std::vector<float> b,
+ std::vector<float> a) :
+ AUD_EffectFactory(factory), m_a(a), m_b(b)
+{
+}
+
+AUD_IReader* AUD_IIRFilterFactory::createReader() const
+{
+ return new AUD_IIRFilterReader(getReader(), m_b, m_a);
+}
diff --git a/intern/audaspace/FX/AUD_IIRFilterFactory.h b/intern/audaspace/FX/AUD_IIRFilterFactory.h
new file mode 100644
index 00000000000..567d4f354fe
--- /dev/null
+++ b/intern/audaspace/FX/AUD_IIRFilterFactory.h
@@ -0,0 +1,66 @@
+/*
+ * $Id$
+ *
+ * ***** BEGIN LGPL LICENSE BLOCK *****
+ *
+ * Copyright 2009 Jörg Hermann Müller
+ *
+ * This file is part of AudaSpace.
+ *
+ * AudaSpace is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * AudaSpace is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with AudaSpace. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * ***** END LGPL LICENSE BLOCK *****
+ */
+
+#ifndef AUD_IIRFILTERFACTORY
+#define AUD_IIRFILTERFACTORY
+
+#include "AUD_EffectFactory.h"
+
+#include <vector>
+
+/**
+ * This factory creates a IIR filter reader.
+ */
+class AUD_IIRFilterFactory : public AUD_EffectFactory
+{
+private:
+ /**
+ * Output filter coefficients.
+ */
+ std::vector<float> m_a;
+
+ /**
+ * Input filter coefficients.
+ */
+ std::vector<float> m_b;
+
+ // hide copy constructor and operator=
+ AUD_IIRFilterFactory(const AUD_IIRFilterFactory&);
+ AUD_IIRFilterFactory& operator=(const AUD_IIRFilterFactory&);
+
+public:
+ /**
+ * Creates a new IIR filter factory.
+ * \param factory The input factory.
+ * \param b The input filter coefficients.
+ * \param a The output filter coefficients.
+ */
+ AUD_IIRFilterFactory(AUD_IFactory* factory, std::vector<float> b,
+ std::vector<float> a);
+
+ virtual AUD_IReader* createReader() const;
+};
+
+#endif //AUD_IIRFILTERFACTORY
diff --git a/intern/audaspace/FX/AUD_IIRFilterReader.cpp b/intern/audaspace/FX/AUD_IIRFilterReader.cpp
new file mode 100644
index 00000000000..120c9f8d0ae
--- /dev/null
+++ b/intern/audaspace/FX/AUD_IIRFilterReader.cpp
@@ -0,0 +1,50 @@
+/*
+ * $Id$
+ *
+ * ***** BEGIN LGPL LICENSE BLOCK *****
+ *
+ * Copyright 2009 Jörg Hermann Müller
+ *
+ * This file is part of AudaSpace.
+ *
+ * AudaSpace is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * AudaSpace is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with AudaSpace. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * ***** END LGPL LICENSE BLOCK *****
+ */
+
+#include "AUD_IIRFilterReader.h"
+
+AUD_IIRFilterReader::AUD_IIRFilterReader(AUD_IReader* reader,
+ std::vector<float> b,
+ std::vector<float> a) :
+ AUD_BaseIIRFilterReader(reader, b.size(), a.size()), m_a(a), m_b(b)
+{
+ for(int i = 1; i < m_a.size(); i++)
+ m_a[i] /= m_a[0];
+ for(int i = 0; i < m_b.size(); i++)
+ m_b[i] /= m_a[0];
+ m_a[0] = 1;
+}
+
+sample_t AUD_IIRFilterReader::filter()
+{
+ sample_t out = 0;
+
+ for(int i = 1; i < m_a.size(); i++)
+ out -= y(-i) * m_a[i];
+ for(int i = 0; i < m_b.size(); i++)
+ out += x(-i) * m_b[i];
+
+ return out;
+}
diff --git a/intern/audaspace/FX/AUD_VolumeReader.h b/intern/audaspace/FX/AUD_IIRFilterReader.h
index 489f85b10f2..303bc6d92df 100644
--- a/intern/audaspace/FX/AUD_VolumeReader.h
+++ b/intern/audaspace/FX/AUD_IIRFilterReader.h
@@ -23,44 +23,44 @@
* ***** END LGPL LICENSE BLOCK *****
*/
-#ifndef AUD_VOLUMEREADER
-#define AUD_VOLUMEREADER
+#ifndef AUD_IIRFILTERREADER
+#define AUD_IIRFILTERREADER
-#include "AUD_EffectReader.h"
-class AUD_Buffer;
+#include "AUD_BaseIIRFilterReader.h"
+
+#include <vector>
/**
- * This class reads another reader and changes it's volume.
+ * This class is for infinite impulse response filters with simple coefficients.
*/
-class AUD_VolumeReader : public AUD_EffectReader
+class AUD_IIRFilterReader : public AUD_BaseIIRFilterReader
{
private:
/**
- * The playback buffer.
+ * Output filter coefficients.
*/
- AUD_Buffer *m_buffer;
+ std::vector<float> m_a;
/**
- * The volume level.
+ * Input filter coefficients.
*/
- float m_volume;
+ std::vector<float> m_b;
+
+ // hide copy constructor and operator=
+ AUD_IIRFilterReader(const AUD_IIRFilterReader&);
+ AUD_IIRFilterReader& operator=(const AUD_IIRFilterReader&);
public:
/**
- * Creates a new volume reader.
+ * Creates a new IIR filter reader.
* \param reader The reader to read from.
- * \param volume The size of the buffer.
- * \exception AUD_Exception Thrown if the reader specified is NULL.
- */
- AUD_VolumeReader(AUD_IReader* reader, float volume);
-
- /**
- * Destroys the reader.
+ * \param b The input filter coefficients.
+ * \param a The output filter coefficients.
*/
- virtual ~AUD_VolumeReader();
+ AUD_IIRFilterReader(AUD_IReader* reader, std::vector<float> b,
+ std::vector<float> a);
- virtual bool notify(AUD_Message &message);
- virtual void read(int & length, sample_t* & buffer);
+ virtual sample_t filter();
};
-#endif //AUD_VOLUMEREADER
+#endif //AUD_IIRFILTERREADER
diff --git a/intern/audaspace/FX/AUD_LimiterFactory.cpp b/intern/audaspace/FX/AUD_LimiterFactory.cpp
index 6f19575240a..75501afcec3 100644
--- a/intern/audaspace/FX/AUD_LimiterFactory.cpp
+++ b/intern/audaspace/FX/AUD_LimiterFactory.cpp
@@ -31,37 +31,21 @@ AUD_LimiterFactory::AUD_LimiterFactory(AUD_IFactory* factory,
float start, float end) :
AUD_EffectFactory(factory),
m_start(start),
- m_end(end) {}
-
-float AUD_LimiterFactory::getStart()
+ m_end(end)
{
- return m_start;
}
-void AUD_LimiterFactory::setStart(float start)
+float AUD_LimiterFactory::getStart() const
{
- m_start = start;
+ return m_start;
}
-float AUD_LimiterFactory::getEnd()
+float AUD_LimiterFactory::getEnd() const
{
return m_end;
}
-void AUD_LimiterFactory::setEnd(float end)
-{
- m_end = end;
-}
-
-AUD_IReader* AUD_LimiterFactory::createReader()
+AUD_IReader* AUD_LimiterFactory::createReader() const
{
- AUD_IReader* reader = getReader();
-
- if(reader != 0)
- {
- reader = new AUD_LimiterReader(reader, m_start, m_end);
- AUD_NEW("reader")
- }
-
- return reader;
+ return new AUD_LimiterReader(getReader(), m_start, m_end);
}
diff --git a/intern/audaspace/FX/AUD_LimiterFactory.h b/intern/audaspace/FX/AUD_LimiterFactory.h
index 588fea6eb4b..5d9491f60aa 100644
--- a/intern/audaspace/FX/AUD_LimiterFactory.h
+++ b/intern/audaspace/FX/AUD_LimiterFactory.h
@@ -37,12 +37,16 @@ private:
/**
* The start time.
*/
- float m_start;
+ const float m_start;
/**
* The end time.
*/
- float m_end;
+ const float m_end;
+
+ // hide copy constructor and operator=
+ AUD_LimiterFactory(const AUD_LimiterFactory&);
+ AUD_LimiterFactory& operator=(const AUD_LimiterFactory&);
public:
/**
@@ -52,33 +56,20 @@ public:
* \param end The desired end time, a negative value signals that it should
* play to the end.
*/
- AUD_LimiterFactory(AUD_IFactory* factory = 0,
+ AUD_LimiterFactory(AUD_IFactory* factory,
float start = 0, float end = -1);
/**
* Returns the start time.
*/
- float getStart();
-
- /**
- * Sets the start time.
- * \param start The new start time.
- */
- void setStart(float start);
+ float getStart() const;
/**
* Returns the end time.
*/
- float getEnd();
-
- /**
- * Sets the end time.
- * \param end The new end time, a negative value signals that it should play
- * to the end.
- */
- void setEnd(float end);
+ float getEnd() const;
- virtual AUD_IReader* createReader();
+ virtual AUD_IReader* createReader() const;
};
#endif //AUD_LIMITERFACTORY
diff --git a/intern/audaspace/FX/AUD_LimiterReader.cpp b/intern/audaspace/FX/AUD_LimiterReader.cpp
index 05882369001..dd7301213c9 100644
--- a/intern/audaspace/FX/AUD_LimiterReader.cpp
+++ b/intern/audaspace/FX/AUD_LimiterReader.cpp
@@ -30,31 +30,27 @@
AUD_LimiterReader::AUD_LimiterReader(AUD_IReader* reader,
float start, float end) :
- AUD_EffectReader(reader)
+ AUD_EffectReader(reader),
+ m_start(int(start * reader->getSpecs().rate)),
+ m_end(int(end * reader->getSpecs().rate))
{
- m_end = (int)(end * reader->getSpecs().rate);
-
- if(start <= 0)
- m_start = 0;
- else
+ if(m_start > 0)
{
- m_start = (int)(start * reader->getSpecs().rate);
if(m_reader->isSeekable())
m_reader->seek(m_start);
else
{
// skip first m_start samples by reading them
- int length;
+ int length = AUD_DEFAULT_BUFFER_SIZE;
sample_t* buffer;
- for(int i = m_start;
- i >= AUD_DEFAULT_BUFFER_SIZE;
- i -= AUD_DEFAULT_BUFFER_SIZE)
+ for(int len = m_start;
+ length == AUD_DEFAULT_BUFFER_SIZE;
+ len -= AUD_DEFAULT_BUFFER_SIZE)
{
- length = AUD_DEFAULT_BUFFER_SIZE;
+ if(len < AUD_DEFAULT_BUFFER_SIZE)
+ length = len;
m_reader->read(length, buffer);
- length = i;
}
- m_reader->read(length, buffer);
}
}
}
@@ -64,18 +60,18 @@ void AUD_LimiterReader::seek(int position)
m_reader->seek(position + m_start);
}
-int AUD_LimiterReader::getLength()
+int AUD_LimiterReader::getLength() const
{
int len = m_reader->getLength();
- if(m_reader->getType() != AUD_TYPE_BUFFER || len < 0 ||
- (len > m_end && m_end >= 0))
+ if(len < 0 || (len > m_end && m_end >= 0))
len = m_end;
return len - m_start;
}
-int AUD_LimiterReader::getPosition()
+int AUD_LimiterReader::getPosition() const
{
- return m_reader->getPosition() - m_start;
+ int pos = m_reader->getPosition();
+ return AUD_MIN(pos, m_end) - m_start;
}
void AUD_LimiterReader::read(int & length, sample_t* & buffer)
@@ -83,7 +79,7 @@ void AUD_LimiterReader::read(int & length, sample_t* & buffer)
if(m_end >= 0)
{
int position = m_reader->getPosition();
- if(position+length > m_end)
+ if(position + length > m_end)
length = m_end - position;
if(length < 0)
{
diff --git a/intern/audaspace/FX/AUD_LimiterReader.h b/intern/audaspace/FX/AUD_LimiterReader.h
index 9921f5ee1b0..59d6096dcba 100644
--- a/intern/audaspace/FX/AUD_LimiterReader.h
+++ b/intern/audaspace/FX/AUD_LimiterReader.h
@@ -37,12 +37,16 @@ private:
/**
* The start sample: inclusive.
*/
- int m_start;
+ const int m_start;
/**
* The end sample: exlusive.
*/
- int m_end;
+ const int m_end;
+
+ // hide copy constructor and operator=
+ AUD_LimiterReader(const AUD_LimiterReader&);
+ AUD_LimiterReader& operator=(const AUD_LimiterReader&);
public:
/**
@@ -51,13 +55,12 @@ public:
* \param start The desired start sample (inclusive).
* \param end The desired end sample (exklusive), a negative value signals
* that it should play to the end.
- * \exception AUD_Exception Thrown if the reader specified is NULL.
*/
AUD_LimiterReader(AUD_IReader* reader, float start = 0, float end = -1);
virtual void seek(int position);
- virtual int getLength();
- virtual int getPosition();
+ virtual int getLength() const;
+ virtual int getPosition() const;
virtual void read(int & length, sample_t* & buffer);
};
diff --git a/intern/audaspace/FX/AUD_LoopFactory.cpp b/intern/audaspace/FX/AUD_LoopFactory.cpp
index 90186f623ff..6805a8e4b42 100644
--- a/intern/audaspace/FX/AUD_LoopFactory.cpp
+++ b/intern/audaspace/FX/AUD_LoopFactory.cpp
@@ -28,30 +28,16 @@
AUD_LoopFactory::AUD_LoopFactory(AUD_IFactory* factory, int loop) :
AUD_EffectFactory(factory),
- m_loop(loop) {}
-
-AUD_LoopFactory::AUD_LoopFactory(int loop) :
- AUD_EffectFactory(0),
- m_loop(loop) {}
-
-int AUD_LoopFactory::getLoop()
+ m_loop(loop)
{
- return m_loop;
}
-void AUD_LoopFactory::setLoop(int loop)
+int AUD_LoopFactory::getLoop() const
{
- m_loop = loop;
+ return m_loop;
}
-AUD_IReader* AUD_LoopFactory::createReader()
+AUD_IReader* AUD_LoopFactory::createReader() const
{
- AUD_IReader* reader = getReader();
-
- if(reader != 0)
- {
- reader = new AUD_LoopReader(reader, m_loop); AUD_NEW("reader")
- }
-
- return reader;
+ return new AUD_LoopReader(getReader(), m_loop);
}
diff --git a/intern/audaspace/FX/AUD_LoopFactory.h b/intern/audaspace/FX/AUD_LoopFactory.h
index c81d906b82e..f9e358af52d 100644
--- a/intern/audaspace/FX/AUD_LoopFactory.h
+++ b/intern/audaspace/FX/AUD_LoopFactory.h
@@ -38,7 +38,11 @@ private:
/**
* The loop count.
*/
- int m_loop;
+ const int m_loop;
+
+ // hide copy constructor and operator=
+ AUD_LoopFactory(const AUD_LoopFactory&);
+ AUD_LoopFactory& operator=(const AUD_LoopFactory&);
public:
/**
@@ -47,28 +51,14 @@ public:
* \param loop The desired loop count, negative values result in endless
* looping.
*/
- AUD_LoopFactory(AUD_IFactory* factory = 0, int loop = -1);
-
- /**
- * Creates a new loop factory.
- * \param loop The desired loop count, negative values result in endless
- * looping.
- */
- AUD_LoopFactory(int loop);
+ AUD_LoopFactory(AUD_IFactory* factory, int loop = -1);
/**
* Returns the loop count.
*/
- int getLoop();
-
- /**
- * Sets the loop count.
- * \param loop The desired loop count, negative values result in endless
- * looping.
- */
- void setLoop(int loop);
+ int getLoop() const;
- virtual AUD_IReader* createReader();
+ virtual AUD_IReader* createReader() const;
};
#endif //AUD_LOOPFACTORY
diff --git a/intern/audaspace/FX/AUD_LoopReader.cpp b/intern/audaspace/FX/AUD_LoopReader.cpp
index 3bcd8c2f9d3..7521f914a5c 100644
--- a/intern/audaspace/FX/AUD_LoopReader.cpp
+++ b/intern/audaspace/FX/AUD_LoopReader.cpp
@@ -29,36 +29,37 @@
#include <cstring>
AUD_LoopReader::AUD_LoopReader(AUD_IReader* reader, int loop) :
- AUD_EffectReader(reader), m_loop(loop)
+ AUD_EffectReader(reader), m_count(loop), m_left(loop)
{
- m_samples = -1;
- m_buffer = new AUD_Buffer(); AUD_NEW("buffer")
}
-AUD_LoopReader::~AUD_LoopReader()
+void AUD_LoopReader::seek(int position)
{
- delete m_buffer; AUD_DELETE("buffer")
+ int len = m_reader->getLength();
+ if(len < 0)
+ m_reader->seek(position);
+ else
+ {
+ if(m_count >= 0)
+ {
+ m_left = m_count - (position / len);
+ if(m_left < 0)
+ m_left = 0;
+ }
+ m_reader->seek(position % len);
+ }
}
-AUD_ReaderType AUD_LoopReader::getType()
+int AUD_LoopReader::getLength() const
{
- if(m_loop < 0)
- return AUD_TYPE_STREAM;
- return m_reader->getType();
+ if(m_count < 0)
+ return -1;
+ return m_reader->getLength() * m_count;
}
-bool AUD_LoopReader::notify(AUD_Message &message)
+int AUD_LoopReader::getPosition() const
{
- if(message.type == AUD_MSG_LOOP)
- {
- m_loop = message.loopcount;
- m_samples = message.time * m_reader->getSpecs().rate;
-
- m_reader->notify(message);
-
- return true;
- }
- return m_reader->notify(message);
+ return m_reader->getPosition() * (m_count < 0 ? 1 : m_count);
}
void AUD_LoopReader::read(int & length, sample_t* & buffer)
@@ -66,50 +67,44 @@ void AUD_LoopReader::read(int & length, sample_t* & buffer)
AUD_Specs specs = m_reader->getSpecs();
int samplesize = AUD_SAMPLE_SIZE(specs);
- if(m_samples >= 0)
- {
- if(length > m_samples)
- length = m_samples;
- m_samples -= length;
- }
-
int len = length;
m_reader->read(len, buffer);
- if(len < length && m_loop != 0)
+ if(len < length && m_left)
{
int pos = 0;
- if(m_buffer->getSize() < length * samplesize)
- m_buffer->resize(length * samplesize);
+ if(m_buffer.getSize() < length * samplesize)
+ m_buffer.resize(length * samplesize);
+
+ sample_t* buf = m_buffer.getBuffer();
- memcpy(m_buffer->getBuffer() + pos * specs.channels,
- buffer, len * samplesize);
+ memcpy(buf + pos * specs.channels, buffer, len * samplesize);
pos += len;
- while(pos < length && m_loop != 0)
+ while(pos < length && m_left)
{
- if(m_loop > 0)
- m_loop--;
+ if(m_left > 0)
+ m_left--;
m_reader->seek(0);
len = length - pos;
m_reader->read(len, buffer);
+
// prevent endless loop
if(!len)
break;
- memcpy(m_buffer->getBuffer() + pos * specs.channels,
- buffer, len * samplesize);
+ memcpy(buf + pos * specs.channels, buffer, len * samplesize);
pos += len;
}
length = pos;
- buffer = m_buffer->getBuffer();
+ buffer = buf;
}
else
length = len;
diff --git a/intern/audaspace/FX/AUD_LoopReader.h b/intern/audaspace/FX/AUD_LoopReader.h
index e61a49cb0db..e0ed4cb6bf3 100644
--- a/intern/audaspace/FX/AUD_LoopReader.h
+++ b/intern/audaspace/FX/AUD_LoopReader.h
@@ -27,7 +27,7 @@
#define AUD_LOOPREADER
#include "AUD_EffectReader.h"
-class AUD_Buffer;
+#include "AUD_Buffer.h"
/**
* This class reads another reader and loops it.
@@ -39,17 +39,21 @@ private:
/**
* The playback buffer.
*/
- AUD_Buffer *m_buffer;
+ AUD_Buffer m_buffer;
/**
- * The left loop count.
+ * The loop count.
*/
- int m_loop;
+ const int m_count;
/**
- * The left samples.
+ * The left loop count.
*/
- int m_samples;
+ int m_left;
+
+ // hide copy constructor and operator=
+ AUD_LoopReader(const AUD_LoopReader&);
+ AUD_LoopReader& operator=(const AUD_LoopReader&);
public:
/**
@@ -57,17 +61,12 @@ public:
* \param reader The reader to read from.
* \param loop The desired loop count, negative values result in endless
* looping.
- * \exception AUD_Exception Thrown if the reader specified is NULL.
*/
AUD_LoopReader(AUD_IReader* reader, int loop);
- /**
- * Destroys the reader.
- */
- virtual ~AUD_LoopReader();
-
- virtual AUD_ReaderType getType();
- virtual bool notify(AUD_Message &message);
+ virtual void seek(int position);
+ virtual int getLength() const;
+ virtual int getPosition() const;
virtual void read(int & length, sample_t* & buffer);
};
diff --git a/intern/audaspace/FX/AUD_LowpassFactory.cpp b/intern/audaspace/FX/AUD_LowpassFactory.cpp
index 05dc5ff3994..9244e07631b 100644
--- a/intern/audaspace/FX/AUD_LowpassFactory.cpp
+++ b/intern/audaspace/FX/AUD_LowpassFactory.cpp
@@ -24,28 +24,38 @@
*/
#include "AUD_LowpassFactory.h"
-#include "AUD_LowpassReader.h"
+#include "AUD_IIRFilterReader.h"
+
+#include <cmath>
+
+#ifndef M_PI
+#define M_PI 3.14159265358979323846
+#endif
AUD_LowpassFactory::AUD_LowpassFactory(AUD_IFactory* factory, float frequency,
float Q) :
AUD_EffectFactory(factory),
m_frequency(frequency),
- m_Q(Q) {}
-
-AUD_LowpassFactory::AUD_LowpassFactory(float frequency, float Q) :
- AUD_EffectFactory(0),
- m_frequency(frequency),
- m_Q(Q) {}
+ m_Q(Q)
+{
+}
-AUD_IReader* AUD_LowpassFactory::createReader()
+AUD_IReader* AUD_LowpassFactory::createReader() const
{
AUD_IReader* reader = getReader();
- if(reader != 0)
- {
- reader = new AUD_LowpassReader(reader, m_frequency, m_Q);
- AUD_NEW("reader")
- }
+ // calculate coefficients
+ float w0 = 2 * M_PI * m_frequency / reader->getSpecs().rate;
+ float alpha = sin(w0) / (2 * m_Q);
+ float norm = 1 + alpha;
+ float c = cos(w0);
+ std::vector<float> a, b;
+ a.push_back(1);
+ a.push_back(-2 * c / norm);
+ a.push_back((1 - alpha) / norm);
+ b.push_back((1 - c) / (2 * norm));
+ b.push_back((1 - c) / norm);
+ b.push_back(b[0]);
- return reader;
+ return new AUD_IIRFilterReader(reader, b, a);
}
diff --git a/intern/audaspace/FX/AUD_LowpassFactory.h b/intern/audaspace/FX/AUD_LowpassFactory.h
index 8a419823de0..61b76510a9e 100644
--- a/intern/audaspace/FX/AUD_LowpassFactory.h
+++ b/intern/audaspace/FX/AUD_LowpassFactory.h
@@ -37,12 +37,16 @@ private:
/**
* The attack value in seconds.
*/
- float m_frequency;
+ const float m_frequency;
/**
* The Q factor.
*/
- float m_Q;
+ const float m_Q;
+
+ // hide copy constructor and operator=
+ AUD_LowpassFactory(const AUD_LowpassFactory&);
+ AUD_LowpassFactory& operator=(const AUD_LowpassFactory&);
public:
/**
@@ -53,14 +57,7 @@ public:
*/
AUD_LowpassFactory(AUD_IFactory* factory, float frequency, float Q = 1.0f);
- /**
- * Creates a new lowpass factory.
- * \param frequency The cutoff frequency.
- * \param Q The Q factor.
- */
- AUD_LowpassFactory(float frequency, float Q = 1.0f);
-
- virtual AUD_IReader* createReader();
+ virtual AUD_IReader* createReader() const;
};
#endif //AUD_LOWPASSFACTORY
diff --git a/intern/audaspace/FX/AUD_LowpassReader.cpp b/intern/audaspace/FX/AUD_LowpassReader.cpp
deleted file mode 100644
index 6dc0bf66a96..00000000000
--- a/intern/audaspace/FX/AUD_LowpassReader.cpp
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * $Id$
- *
- * ***** BEGIN LGPL LICENSE BLOCK *****
- *
- * Copyright 2009 Jörg Hermann Müller
- *
- * This file is part of AudaSpace.
- *
- * AudaSpace is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * AudaSpace is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with AudaSpace. If not, see <http://www.gnu.org/licenses/>.
- *
- * ***** END LGPL LICENSE BLOCK *****
- */
-
-#include "AUD_LowpassReader.h"
-#include "AUD_Buffer.h"
-
-#include <cstring>
-#include <cmath>
-
-#ifndef M_PI
-#define M_PI 3.14159265358979323846
-#endif
-
-#define CC channels + channel
-
-AUD_LowpassReader::AUD_LowpassReader(AUD_IReader* reader, float frequency,
- float Q) :
- AUD_EffectReader(reader)
-{
- AUD_Specs specs = reader->getSpecs();
- int samplesize = AUD_SAMPLE_SIZE(specs);
-
- m_buffer = new AUD_Buffer(); AUD_NEW("buffer")
-
- m_outvalues = new AUD_Buffer(samplesize * AUD_LOWPASS_ORDER);
- AUD_NEW("buffer")
- memset(m_outvalues->getBuffer(), 0, samplesize * AUD_LOWPASS_ORDER);
-
- m_invalues = new AUD_Buffer(samplesize * AUD_LOWPASS_ORDER);
- AUD_NEW("buffer")
- memset(m_invalues->getBuffer(), 0, samplesize * AUD_LOWPASS_ORDER);
-
- m_position = 0;
-
- // calculate coefficients
- float w0 = 2 * M_PI * frequency / specs.rate;
- float alpha = sin(w0) / (2 * Q);
- float norm = 1 + alpha;
- m_coeff[0][0] = 0;
- m_coeff[0][1] = -2 * cos(w0) / norm;
- m_coeff[0][2] = (1 - alpha) / norm;
- m_coeff[1][2] = m_coeff[1][0] = (1 - cos(w0)) / (2 * norm);
- m_coeff[1][1] = (1 - cos(w0)) / norm;
-}
-
-AUD_LowpassReader::~AUD_LowpassReader()
-{
- delete m_buffer; AUD_DELETE("buffer")
-
- delete m_outvalues; AUD_DELETE("buffer")
- delete m_invalues; AUD_DELETE("buffer");
-}
-
-void AUD_LowpassReader::read(int & length, sample_t* & buffer)
-{
- sample_t* buf;
- sample_t* outvalues;
- sample_t* invalues;
-
- outvalues = m_outvalues->getBuffer();
- invalues = m_invalues->getBuffer();
-
- AUD_Specs specs = m_reader->getSpecs();
-
- m_reader->read(length, buf);
-
- if(m_buffer->getSize() < length * AUD_SAMPLE_SIZE(specs))
- m_buffer->resize(length * AUD_SAMPLE_SIZE(specs));
-
- buffer = m_buffer->getBuffer();
- int channels = specs.channels;
-
- for(int channel = 0; channel < channels; channel++)
- {
- for(int i = 0; i < length; i++)
- {
- invalues[m_position * CC] = buf[i * CC];
- outvalues[m_position * CC] = 0;
-
- for(int j = 0; j < AUD_LOWPASS_ORDER; j++)
- {
- outvalues[m_position * CC] += m_coeff[1][j] *
- invalues[((m_position + j) % AUD_LOWPASS_ORDER) * CC] -
- m_coeff[0][j] *
- outvalues[((m_position + j) % AUD_LOWPASS_ORDER) * CC];
- }
-
- buffer[i * CC] = outvalues[m_position * CC];
-
- m_position = (m_position + AUD_LOWPASS_ORDER-1) % AUD_LOWPASS_ORDER;
- }
- }
-}
diff --git a/intern/audaspace/FX/AUD_PingPongFactory.cpp b/intern/audaspace/FX/AUD_PingPongFactory.cpp
index 8b72afe05e7..b3aaa9e80a4 100644
--- a/intern/audaspace/FX/AUD_PingPongFactory.cpp
+++ b/intern/audaspace/FX/AUD_PingPongFactory.cpp
@@ -28,40 +28,25 @@
#include "AUD_ReverseFactory.h"
AUD_PingPongFactory::AUD_PingPongFactory(AUD_IFactory* factory) :
- AUD_EffectFactory(factory) {}
-
-AUD_IReader* AUD_PingPongFactory::createReader()
+ AUD_EffectFactory(factory)
{
- if(m_factory == 0)
- return 0;
+}
- AUD_IReader* reader = m_factory->createReader();
+AUD_IReader* AUD_PingPongFactory::createReader() const
+{
+ AUD_IReader* reader = getReader();
+ AUD_IReader* reader2;
+ AUD_ReverseFactory factory(m_factory);
- if(reader != 0)
+ try
{
- AUD_IReader* reader2;
- AUD_ReverseFactory factory(m_factory);
-
- try
- {
- reader2 = factory.createReader();
- }
- catch(AUD_Exception)
- {
- reader2 = 0;
- }
-
- if(reader2 != 0)
- {
- reader = new AUD_DoubleReader(reader, reader2);
- AUD_NEW("reader")
- }
- else
- {
- delete reader; AUD_DELETE("reader")
- reader = 0;
- }
+ reader2 = factory.createReader();
+ }
+ catch(AUD_Exception&)
+ {
+ delete reader;
+ throw;
}
- return reader;
+ return new AUD_DoubleReader(reader, reader2);
}
diff --git a/intern/audaspace/FX/AUD_PingPongFactory.h b/intern/audaspace/FX/AUD_PingPongFactory.h
index b8854da550a..82aedca8f7f 100644
--- a/intern/audaspace/FX/AUD_PingPongFactory.h
+++ b/intern/audaspace/FX/AUD_PingPongFactory.h
@@ -34,18 +34,19 @@
*/
class AUD_PingPongFactory : public AUD_EffectFactory
{
+private:
+ // hide copy constructor and operator=
+ AUD_PingPongFactory(const AUD_PingPongFactory&);
+ AUD_PingPongFactory& operator=(const AUD_PingPongFactory&);
+
public:
/**
* Creates a new ping pong factory.
* \param factory The input factory.
*/
- AUD_PingPongFactory(AUD_IFactory* factory = 0);
-
- /**
- * Destroys the factory.
- */
+ AUD_PingPongFactory(AUD_IFactory* factory);
- virtual AUD_IReader* createReader();
+ virtual AUD_IReader* createReader() const;
};
#endif //AUD_PINGPONGFACTORY
diff --git a/intern/audaspace/FX/AUD_PitchFactory.cpp b/intern/audaspace/FX/AUD_PitchFactory.cpp
index 5f814283c12..be285562db3 100644
--- a/intern/audaspace/FX/AUD_PitchFactory.cpp
+++ b/intern/audaspace/FX/AUD_PitchFactory.cpp
@@ -29,20 +29,11 @@
AUD_PitchFactory::AUD_PitchFactory(AUD_IFactory* factory, float pitch) :
AUD_EffectFactory(factory),
- m_pitch(pitch) {}
-
-AUD_PitchFactory::AUD_PitchFactory(float pitch) :
- AUD_EffectFactory(0),
- m_pitch(pitch) {}
-
-AUD_IReader* AUD_PitchFactory::createReader()
+ m_pitch(pitch)
{
- AUD_IReader* reader = getReader();
-
- if(reader != 0)
- {
- reader = new AUD_PitchReader(reader, m_pitch); AUD_NEW("reader")
- }
+}
- return reader;
+AUD_IReader* AUD_PitchFactory::createReader() const
+{
+ return new AUD_PitchReader(getReader(), m_pitch);
}
diff --git a/intern/audaspace/FX/AUD_PitchFactory.h b/intern/audaspace/FX/AUD_PitchFactory.h
index 96c4d0d7e92..52b9b7d99e5 100644
--- a/intern/audaspace/FX/AUD_PitchFactory.h
+++ b/intern/audaspace/FX/AUD_PitchFactory.h
@@ -37,7 +37,11 @@ private:
/**
* The pitch.
*/
- float m_pitch;
+ const float m_pitch;
+
+ // hide copy constructor and operator=
+ AUD_PitchFactory(const AUD_PitchFactory&);
+ AUD_PitchFactory& operator=(const AUD_PitchFactory&);
public:
/**
@@ -45,26 +49,9 @@ public:
* \param factory The input factory.
* \param pitch The desired pitch.
*/
- AUD_PitchFactory(AUD_IFactory* factory = 0, float pitch = 1.0f);
-
- /**
- * Creates a new pitch factory.
- * \param pitch The desired pitch.
- */
- AUD_PitchFactory(float pitch);
-
- /**
- * Returns the pitch.
- */
- float getPitch();
-
- /**
- * Sets the pitch.
- * \param pitch The new pitch value. Should be between 0.0 and 1.0.
- */
- void setPitch(float pitch);
+ AUD_PitchFactory(AUD_IFactory* factory, float pitch);
- virtual AUD_IReader* createReader();
+ virtual AUD_IReader* createReader() const;
};
#endif //AUD_PITCHFACTORY
diff --git a/intern/audaspace/FX/AUD_PitchReader.cpp b/intern/audaspace/FX/AUD_PitchReader.cpp
index c53264e1350..19c3be31968 100644
--- a/intern/audaspace/FX/AUD_PitchReader.cpp
+++ b/intern/audaspace/FX/AUD_PitchReader.cpp
@@ -26,12 +26,11 @@
#include "AUD_PitchReader.h"
AUD_PitchReader::AUD_PitchReader(AUD_IReader* reader, float pitch) :
- AUD_EffectReader(reader)
+ AUD_EffectReader(reader), m_pitch(pitch)
{
- m_pitch = pitch;
}
-AUD_Specs AUD_PitchReader::getSpecs()
+AUD_Specs AUD_PitchReader::getSpecs() const
{
AUD_Specs specs = m_reader->getSpecs();
specs.rate = (AUD_SampleRate)((int)(specs.rate * m_pitch));
diff --git a/intern/audaspace/FX/AUD_PitchReader.h b/intern/audaspace/FX/AUD_PitchReader.h
index 440e9cc843c..cc188cf0ee4 100644
--- a/intern/audaspace/FX/AUD_PitchReader.h
+++ b/intern/audaspace/FX/AUD_PitchReader.h
@@ -37,18 +37,21 @@ private:
/**
* The pitch level.
*/
- float m_pitch;
+ const float m_pitch;
+
+ // hide copy constructor and operator=
+ AUD_PitchReader(const AUD_PitchReader&);
+ AUD_PitchReader& operator=(const AUD_PitchReader&);
public:
/**
* Creates a new pitch reader.
* \param reader The reader to read from.
* \param pitch The size of the buffer.
- * \exception AUD_Exception Thrown if the reader specified is NULL.
*/
AUD_PitchReader(AUD_IReader* reader, float pitch);
- virtual AUD_Specs getSpecs();
+ virtual AUD_Specs getSpecs() const;
};
#endif //AUD_PITCHREADER
diff --git a/intern/audaspace/FX/AUD_RectifyFactory.cpp b/intern/audaspace/FX/AUD_RectifyFactory.cpp
index f97defd793b..2228f949dfe 100644
--- a/intern/audaspace/FX/AUD_RectifyFactory.cpp
+++ b/intern/audaspace/FX/AUD_RectifyFactory.cpp
@@ -24,22 +24,21 @@
*/
#include "AUD_RectifyFactory.h"
-#include "AUD_RectifyReader.h"
+#include "AUD_CallbackIIRFilterReader.h"
-AUD_RectifyFactory::AUD_RectifyFactory(AUD_IFactory* factory) :
- AUD_EffectFactory(factory) {}
-
-AUD_RectifyFactory::AUD_RectifyFactory() :
- AUD_EffectFactory(0) {}
+#include <cmath>
-AUD_IReader* AUD_RectifyFactory::createReader()
+sample_t rectifyFilter(AUD_CallbackIIRFilterReader* reader, void* useless)
{
- AUD_IReader* reader = getReader();
+ return fabs(reader->x(0));
+}
- if(reader != 0)
- {
- reader = new AUD_RectifyReader(reader); AUD_NEW("reader")
- }
+AUD_RectifyFactory::AUD_RectifyFactory(AUD_IFactory* factory) :
+ AUD_EffectFactory(factory)
+{
+}
- return reader;
+AUD_IReader* AUD_RectifyFactory::createReader() const
+{
+ return new AUD_CallbackIIRFilterReader(getReader(), 1, 1, rectifyFilter);
}
diff --git a/intern/audaspace/FX/AUD_RectifyFactory.h b/intern/audaspace/FX/AUD_RectifyFactory.h
index ed00620d318..d8b39e83fdf 100644
--- a/intern/audaspace/FX/AUD_RectifyFactory.h
+++ b/intern/audaspace/FX/AUD_RectifyFactory.h
@@ -33,19 +33,19 @@
*/
class AUD_RectifyFactory : public AUD_EffectFactory
{
+private:
+ // hide copy constructor and operator=
+ AUD_RectifyFactory(const AUD_RectifyFactory&);
+ AUD_RectifyFactory& operator=(const AUD_RectifyFactory&);
+
public:
/**
* Creates a new rectify factory.
* \param factory The input factory.
*/
- AUD_RectifyFactory(AUD_IFactory* factory = 0);
-
- /**
- * Creates a new rectify factory.
- */
- AUD_RectifyFactory();
+ AUD_RectifyFactory(AUD_IFactory* factory);
- virtual AUD_IReader* createReader();
+ virtual AUD_IReader* createReader() const;
};
#endif //AUD_RECTIFYFACTORY
diff --git a/intern/audaspace/FX/AUD_ReverseFactory.cpp b/intern/audaspace/FX/AUD_ReverseFactory.cpp
index 1242641c350..1002e2de87e 100644
--- a/intern/audaspace/FX/AUD_ReverseFactory.cpp
+++ b/intern/audaspace/FX/AUD_ReverseFactory.cpp
@@ -28,16 +28,11 @@
#include "AUD_Space.h"
AUD_ReverseFactory::AUD_ReverseFactory(AUD_IFactory* factory) :
- AUD_EffectFactory(factory) {}
-
-AUD_IReader* AUD_ReverseFactory::createReader()
+ AUD_EffectFactory(factory)
{
- AUD_IReader* reader = getReader();
-
- if(reader != 0)
- {
- reader = new AUD_ReverseReader(reader); AUD_NEW("reader")
- }
+}
- return reader;
+AUD_IReader* AUD_ReverseFactory::createReader() const
+{
+ return new AUD_ReverseReader(getReader());
}
diff --git a/intern/audaspace/FX/AUD_ReverseFactory.h b/intern/audaspace/FX/AUD_ReverseFactory.h
index 4b664c47281..a1995ee68f9 100644
--- a/intern/audaspace/FX/AUD_ReverseFactory.h
+++ b/intern/audaspace/FX/AUD_ReverseFactory.h
@@ -34,17 +34,19 @@
*/
class AUD_ReverseFactory : public AUD_EffectFactory
{
+private:
+ // hide copy constructor and operator=
+ AUD_ReverseFactory(const AUD_ReverseFactory&);
+ AUD_ReverseFactory& operator=(const AUD_ReverseFactory&);
+
public:
/**
* Creates a new reverse factory.
* \param factory The input factory.
*/
- AUD_ReverseFactory(AUD_IFactory* factory = 0);
+ AUD_ReverseFactory(AUD_IFactory* factory);
- /**
- * Destroys the factory.
- */
- virtual AUD_IReader* createReader();
+ virtual AUD_IReader* createReader() const;
};
#endif //AUD_REVERSEFACTORY
diff --git a/intern/audaspace/FX/AUD_ReverseReader.cpp b/intern/audaspace/FX/AUD_ReverseReader.cpp
index 82d6c70ce53..c651ea79577 100644
--- a/intern/audaspace/FX/AUD_ReverseReader.cpp
+++ b/intern/audaspace/FX/AUD_ReverseReader.cpp
@@ -24,27 +24,19 @@
*/
#include "AUD_ReverseReader.h"
-#include "AUD_Buffer.h"
#include <cstring>
-AUD_ReverseReader::AUD_ReverseReader(AUD_IReader* reader) :
- AUD_EffectReader(reader)
-{
- if(reader->getType() != AUD_TYPE_BUFFER)
- AUD_THROW(AUD_ERROR_READER);
-
- m_length = reader->getLength();
- if(m_length < 0)
- AUD_THROW(AUD_ERROR_READER);
+static const char* props_error = "AUD_ReverseReader: The reader has to be "
+ "seekable and a finite length.";
- m_position = 0;
- m_buffer = new AUD_Buffer(); AUD_NEW("buffer")
-}
-
-AUD_ReverseReader::~AUD_ReverseReader()
+AUD_ReverseReader::AUD_ReverseReader(AUD_IReader* reader) :
+ AUD_EffectReader(reader),
+ m_length(reader->getLength()),
+ m_position(0)
{
- delete m_buffer; AUD_DELETE("buffer")
+ if(m_length < 0 || !reader->isSeekable())
+ AUD_THROW(AUD_ERROR_PROPS, props_error);
}
void AUD_ReverseReader::seek(int position)
@@ -52,12 +44,12 @@ void AUD_ReverseReader::seek(int position)
m_position = position;
}
-int AUD_ReverseReader::getLength()
+int AUD_ReverseReader::getLength() const
{
return m_length;
}
-int AUD_ReverseReader::getPosition()
+int AUD_ReverseReader::getPosition() const
{
return m_position;
}
@@ -66,7 +58,7 @@ void AUD_ReverseReader::read(int & length, sample_t* & buffer)
{
// first correct the length
if(m_position + length > m_length)
- length = m_length-m_position;
+ length = m_length - m_position;
if(length <= 0)
{
@@ -78,10 +70,10 @@ void AUD_ReverseReader::read(int & length, sample_t* & buffer)
int samplesize = AUD_SAMPLE_SIZE(specs);
// resize buffer if needed
- if(m_buffer->getSize() < length * samplesize)
- m_buffer->resize(length * samplesize);
+ if(m_buffer.getSize() < length * samplesize)
+ m_buffer.resize(length * samplesize);
- buffer = m_buffer->getBuffer();
+ buffer = m_buffer.getBuffer();
sample_t* buf;
int len = length;
@@ -105,5 +97,5 @@ void AUD_ReverseReader::read(int & length, sample_t* & buffer)
m_position += length;
- buffer = m_buffer->getBuffer();
+ buffer = m_buffer.getBuffer();
}
diff --git a/intern/audaspace/FX/AUD_ReverseReader.h b/intern/audaspace/FX/AUD_ReverseReader.h
index 045d2ac5a8e..8eb960a5dee 100644
--- a/intern/audaspace/FX/AUD_ReverseReader.h
+++ b/intern/audaspace/FX/AUD_ReverseReader.h
@@ -27,7 +27,7 @@
#define AUD_REVERSEREADER
#include "AUD_EffectReader.h"
-class AUD_Buffer;
+#include "AUD_Buffer.h"
/**
* This class reads another reader from back to front.
@@ -37,37 +37,36 @@ class AUD_ReverseReader : public AUD_EffectReader
{
private:
/**
- * The current position.
+ * The sample count.
*/
- int m_position;
+ const int m_length;
/**
- * The sample count.
+ * The current position.
*/
- int m_length;
+ int m_position;
/**
* The playback buffer.
*/
- AUD_Buffer* m_buffer;
+ AUD_Buffer m_buffer;
+
+ // hide copy constructor and operator=
+ AUD_ReverseReader(const AUD_ReverseReader&);
+ AUD_ReverseReader& operator=(const AUD_ReverseReader&);
public:
/**
* Creates a new reverse reader.
* \param reader The reader to read from.
- * \exception AUD_Exception Thrown if the reader specified is NULL or not
- * a buffer.
+ * \exception AUD_Exception Thrown if the reader specified has an
+ * undeterminable/infinite length or is not seekable.
*/
AUD_ReverseReader(AUD_IReader* reader);
- /**
- * Destroys the reader.
- */
- virtual ~AUD_ReverseReader();
-
virtual void seek(int position);
- virtual int getLength();
- virtual int getPosition();
+ virtual int getLength() const;
+ virtual int getPosition() const;
virtual void read(int & length, sample_t* & buffer);
};
diff --git a/intern/audaspace/FX/AUD_SquareFactory.cpp b/intern/audaspace/FX/AUD_SquareFactory.cpp
index 638acaa9a32..c321a13d79a 100644
--- a/intern/audaspace/FX/AUD_SquareFactory.cpp
+++ b/intern/audaspace/FX/AUD_SquareFactory.cpp
@@ -24,34 +24,39 @@
*/
#include "AUD_SquareFactory.h"
-#include "AUD_SquareReader.h"
+#include "AUD_CallbackIIRFilterReader.h"
-AUD_SquareFactory::AUD_SquareFactory(AUD_IFactory* factory, float threshold) :
- AUD_EffectFactory(factory),
- m_threshold(threshold) {}
-
-AUD_SquareFactory::AUD_SquareFactory(float threshold) :
- AUD_EffectFactory(0),
- m_threshold(threshold) {}
-
-float AUD_SquareFactory::getThreshold()
+sample_t squareFilter(AUD_CallbackIIRFilterReader* reader, float* threshold)
{
- return m_threshold;
+ float in = reader->x(0);
+ if(in >= *threshold)
+ return 1;
+ else if(in <= -*threshold)
+ return -1;
+ else
+ return 0;
}
-void AUD_SquareFactory::setThreshold(float threshold)
+void endSquareFilter(float* threshold)
{
- m_threshold = threshold;
+ delete threshold;
}
-AUD_IReader* AUD_SquareFactory::createReader()
+AUD_SquareFactory::AUD_SquareFactory(AUD_IFactory* factory, float threshold) :
+ AUD_EffectFactory(factory),
+ m_threshold(threshold)
{
- AUD_IReader* reader = getReader();
+}
- if(reader != 0)
- {
- reader = new AUD_SquareReader(reader, m_threshold); AUD_NEW("reader")
- }
+float AUD_SquareFactory::getThreshold() const
+{
+ return m_threshold;
+}
- return reader;
+AUD_IReader* AUD_SquareFactory::createReader() const
+{
+ return new AUD_CallbackIIRFilterReader(getReader(), 1, 1,
+ (doFilterIIR) squareFilter,
+ (endFilterIIR) endSquareFilter,
+ new float(m_threshold));
}
diff --git a/intern/audaspace/FX/AUD_SquareFactory.h b/intern/audaspace/FX/AUD_SquareFactory.h
index dfbe5ae2887..da87dc6f888 100644
--- a/intern/audaspace/FX/AUD_SquareFactory.h
+++ b/intern/audaspace/FX/AUD_SquareFactory.h
@@ -37,7 +37,11 @@ private:
/**
* The threshold.
*/
- float m_threshold;
+ const float m_threshold;
+
+ // hide copy constructor and operator=
+ AUD_SquareFactory(const AUD_SquareFactory&);
+ AUD_SquareFactory& operator=(const AUD_SquareFactory&);
public:
/**
@@ -45,26 +49,14 @@ public:
* \param factory The input factory.
* \param threshold The threshold.
*/
- AUD_SquareFactory(AUD_IFactory* factory = 0, float threshold = 0.0f);
-
- /**
- * Creates a new square factory.
- * \param threshold The threshold.
- */
- AUD_SquareFactory(float threshold);
+ AUD_SquareFactory(AUD_IFactory* factory, float threshold = 0.0f);
/**
* Returns the threshold.
*/
- float getThreshold();
-
- /**
- * Sets the threshold.
- * \param threshold The new threshold value. Should be between 0.0 and 1.0.
- */
- void setThreshold(float threshold);
+ float getThreshold() const;
- virtual AUD_IReader* createReader();
+ virtual AUD_IReader* createReader() const;
};
#endif //AUD_SQUAREFACTORY
diff --git a/intern/audaspace/FX/AUD_SumFactory.cpp b/intern/audaspace/FX/AUD_SumFactory.cpp
index f7990aab8a1..a128e50504c 100644
--- a/intern/audaspace/FX/AUD_SumFactory.cpp
+++ b/intern/audaspace/FX/AUD_SumFactory.cpp
@@ -24,20 +24,18 @@
*/
#include "AUD_SumFactory.h"
-#include "AUD_SumReader.h"
+#include "AUD_IIRFilterReader.h"
AUD_SumFactory::AUD_SumFactory(AUD_IFactory* factory) :
- AUD_EffectFactory(factory) {}
-
-AUD_IReader* AUD_SumFactory::createReader()
+ AUD_EffectFactory(factory)
{
- AUD_IReader* reader = getReader();
-
- if(reader != 0)
- {
- reader = new AUD_SumReader(reader);
- AUD_NEW("reader")
- }
+}
- return reader;
+AUD_IReader* AUD_SumFactory::createReader() const
+{
+ std::vector<float> a, b;
+ a.push_back(1);
+ a.push_back(-1);
+ b.push_back(1);
+ return new AUD_IIRFilterReader(getReader(), b, a);
}
diff --git a/intern/audaspace/FX/AUD_SumFactory.h b/intern/audaspace/FX/AUD_SumFactory.h
index 5cb48e26b10..045a0a3a625 100644
--- a/intern/audaspace/FX/AUD_SumFactory.h
+++ b/intern/audaspace/FX/AUD_SumFactory.h
@@ -33,14 +33,19 @@
*/
class AUD_SumFactory : public AUD_EffectFactory
{
+private:
+ // hide copy constructor and operator=
+ AUD_SumFactory(const AUD_SumFactory&);
+ AUD_SumFactory& operator=(const AUD_SumFactory&);
+
public:
/**
* Creates a new sum factory.
* \param factory The input factory.
*/
- AUD_SumFactory(AUD_IFactory* factory = 0);
+ AUD_SumFactory(AUD_IFactory* factory);
- virtual AUD_IReader* createReader();
+ virtual AUD_IReader* createReader() const;
};
#endif //AUD_SUMFACTORY
diff --git a/intern/audaspace/FX/AUD_SumReader.cpp b/intern/audaspace/FX/AUD_SumReader.cpp
deleted file mode 100644
index 08747790fc9..00000000000
--- a/intern/audaspace/FX/AUD_SumReader.cpp
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * $Id$
- *
- * ***** BEGIN LGPL LICENSE BLOCK *****
- *
- * Copyright 2009 Jörg Hermann Müller
- *
- * This file is part of AudaSpace.
- *
- * AudaSpace is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * AudaSpace is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with AudaSpace. If not, see <http://www.gnu.org/licenses/>.
- *
- * ***** END LGPL LICENSE BLOCK *****
- */
-
-#include "AUD_SumReader.h"
-#include "AUD_Buffer.h"
-
-#include <cstring>
-
-#define CC specs.channels + channel
-
-AUD_SumReader::AUD_SumReader(AUD_IReader* reader) :
- AUD_EffectReader(reader)
-{
- AUD_Specs specs = reader->getSpecs();
- int samplesize = AUD_SAMPLE_SIZE(specs);
-
- m_buffer = new AUD_Buffer(); AUD_NEW("buffer")
-
- m_sums = new AUD_Buffer(samplesize); AUD_NEW("buffer")
- memset(m_sums->getBuffer(), 0, samplesize);
-}
-
-AUD_SumReader::~AUD_SumReader()
-{
- delete m_buffer; AUD_DELETE("buffer")
- delete m_sums; AUD_DELETE("buffer")
-}
-
-void AUD_SumReader::read(int & length, sample_t* & buffer)
-{
- sample_t* buf;
- sample_t* sums;
- sums = m_sums->getBuffer();
-
- AUD_Specs specs = m_reader->getSpecs();
-
- m_reader->read(length, buf);
- if(m_buffer->getSize() < length * AUD_SAMPLE_SIZE(specs))
- m_buffer->resize(length * AUD_SAMPLE_SIZE(specs));
-
- buffer = m_buffer->getBuffer();
-
- for(int channel = 0; channel < specs.channels; channel++)
- for(int i = 0; i < length * specs.channels; i++)
- buffer[i * CC] = sums[channel] = sums[channel] + buf[i * CC];
-}
diff --git a/intern/audaspace/FX/AUD_SuperposeFactory.cpp b/intern/audaspace/FX/AUD_SuperposeFactory.cpp
new file mode 100644
index 00000000000..6bfc1125ca6
--- /dev/null
+++ b/intern/audaspace/FX/AUD_SuperposeFactory.cpp
@@ -0,0 +1,49 @@
+/*
+ * $Id$
+ *
+ * ***** BEGIN LGPL LICENSE BLOCK *****
+ *
+ * Copyright 2009 Jörg Hermann Müller
+ *
+ * This file is part of AudaSpace.
+ *
+ * AudaSpace is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * AudaSpace is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with AudaSpace. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * ***** END LGPL LICENSE BLOCK *****
+ */
+
+#include "AUD_SuperposeFactory.h"
+#include "AUD_SuperposeReader.h"
+
+AUD_SuperposeFactory::AUD_SuperposeFactory(AUD_IFactory* factory1, AUD_IFactory* factory2) :
+ m_factory1(factory1), m_factory2(factory2)
+{
+}
+
+AUD_IReader* AUD_SuperposeFactory::createReader() const
+{
+ AUD_IReader* reader1 = m_factory1->createReader();
+ AUD_IReader* reader2;
+ try
+ {
+ reader2 = m_factory2->createReader();
+ }
+ catch(AUD_Exception&)
+ {
+ delete reader1;
+ throw;
+ }
+
+ return new AUD_SuperposeReader(reader1, reader2);
+}
diff --git a/intern/audaspace/FX/AUD_SuperposeFactory.h b/intern/audaspace/FX/AUD_SuperposeFactory.h
new file mode 100644
index 00000000000..a7fde2c182f
--- /dev/null
+++ b/intern/audaspace/FX/AUD_SuperposeFactory.h
@@ -0,0 +1,63 @@
+/*
+ * $Id$
+ *
+ * ***** BEGIN LGPL LICENSE BLOCK *****
+ *
+ * Copyright 2009 Jörg Hermann Müller
+ *
+ * This file is part of AudaSpace.
+ *
+ * AudaSpace is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * AudaSpace is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with AudaSpace. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * ***** END LGPL LICENSE BLOCK *****
+ */
+
+#ifndef AUD_SUPERPOSEFACTORY
+#define AUD_SUPERPOSEFACTORY
+
+#include "AUD_IFactory.h"
+
+/**
+ * This factory plays two other factories behind each other.
+ * \note Readers from the underlying factories must have the same sample rate and channel count.
+ */
+class AUD_SuperposeFactory : public AUD_IFactory
+{
+private:
+ /**
+ * First played factory.
+ */
+ AUD_IFactory* m_factory1;
+
+ /**
+ * Second played factory.
+ */
+ AUD_IFactory* m_factory2;
+
+ // hide copy constructor and operator=
+ AUD_SuperposeFactory(const AUD_SuperposeFactory&);
+ AUD_SuperposeFactory& operator=(const AUD_SuperposeFactory&);
+
+public:
+ /**
+ * Creates a new superpose factory.
+ * \param factory1 The first input factory.
+ * \param factory2 The second input factory.
+ */
+ AUD_SuperposeFactory(AUD_IFactory* factory1, AUD_IFactory* factory2);
+
+ virtual AUD_IReader* createReader() const;
+};
+
+#endif //AUD_SUPERPOSEFACTORY
diff --git a/intern/audaspace/FX/AUD_SuperposeReader.cpp b/intern/audaspace/FX/AUD_SuperposeReader.cpp
new file mode 100644
index 00000000000..546b79a3a77
--- /dev/null
+++ b/intern/audaspace/FX/AUD_SuperposeReader.cpp
@@ -0,0 +1,115 @@
+/*
+ * $Id$
+ *
+ * ***** BEGIN LGPL LICENSE BLOCK *****
+ *
+ * Copyright 2009 Jörg Hermann Müller
+ *
+ * This file is part of AudaSpace.
+ *
+ * AudaSpace is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * AudaSpace is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with AudaSpace. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * ***** END LGPL LICENSE BLOCK *****
+ */
+
+#include "AUD_SuperposeReader.h"
+
+#include <cstring>
+
+static const char* specs_error = "AUD_SuperposeReader: Both readers have to "
+ "have the same specs.";
+
+AUD_SuperposeReader::AUD_SuperposeReader(AUD_IReader* reader1, AUD_IReader* reader2) :
+ m_reader1(reader1), m_reader2(reader2)
+{
+ try
+ {
+ AUD_Specs s1, s2;
+ s1 = reader1->getSpecs();
+ s2 = reader2->getSpecs();
+ if(memcmp(&s1, &s2, sizeof(AUD_Specs)))
+ AUD_THROW(AUD_ERROR_SPECS, specs_error);
+ }
+ catch(AUD_Exception&)
+ {
+ delete reader1;
+ delete reader2;
+
+ throw;
+ }
+}
+
+AUD_SuperposeReader::~AUD_SuperposeReader()
+{
+ delete m_reader1;
+ delete m_reader2;
+}
+
+bool AUD_SuperposeReader::isSeekable() const
+{
+ return m_reader1->isSeekable() && m_reader2->isSeekable();
+}
+
+void AUD_SuperposeReader::seek(int position)
+{
+ m_reader1->seek(position);
+ m_reader2->seek(position);
+}
+
+int AUD_SuperposeReader::getLength() const
+{
+ int len1 = m_reader1->getLength();
+ int len2 = m_reader2->getLength();
+ if((len1 < 0) || (len2 < 0))
+ return -1;
+ return AUD_MIN(len1, len2);
+}
+
+int AUD_SuperposeReader::getPosition() const
+{
+ int pos1 = m_reader1->getPosition();
+ int pos2 = m_reader2->getPosition();
+ return AUD_MAX(pos1, pos2);
+}
+
+AUD_Specs AUD_SuperposeReader::getSpecs() const
+{
+ return m_reader1->getSpecs();
+}
+
+void AUD_SuperposeReader::read(int & length, sample_t* & buffer)
+{
+ AUD_Specs specs = m_reader1->getSpecs();
+ int samplesize = AUD_SAMPLE_SIZE(specs);
+
+ if(m_buffer.getSize() < length * samplesize)
+ m_buffer.resize(length * samplesize);
+ buffer = m_buffer.getBuffer();
+
+ int len1 = length;
+ sample_t* buf;
+ m_reader1->read(len1, buf);
+ memcpy(buffer, buf, len1 * samplesize);
+
+ if(len1 < length)
+ memset(buffer + len1 * specs.channels, 0, (length - len1) * samplesize);
+
+ int len2 = length;
+ m_reader2->read(len2, buf);
+
+ for(int i = 0; i < len2 * specs.channels; i++)
+ buffer[i] += buf[i];
+
+ length = AUD_MAX(len1, len2);
+}
diff --git a/intern/audaspace/FX/AUD_SuperposeReader.h b/intern/audaspace/FX/AUD_SuperposeReader.h
new file mode 100644
index 00000000000..eeceb9adfeb
--- /dev/null
+++ b/intern/audaspace/FX/AUD_SuperposeReader.h
@@ -0,0 +1,79 @@
+/*
+ * $Id$
+ *
+ * ***** BEGIN LGPL LICENSE BLOCK *****
+ *
+ * Copyright 2009 Jörg Hermann Müller
+ *
+ * This file is part of AudaSpace.
+ *
+ * AudaSpace is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * AudaSpace is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with AudaSpace. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * ***** END LGPL LICENSE BLOCK *****
+ */
+
+#ifndef AUD_SUPERPOSEREADER
+#define AUD_SUPERPOSEREADER
+
+#include "AUD_IReader.h"
+#include "AUD_Buffer.h"
+
+/**
+ * This reader plays two readers with the same specs sequently.
+ */
+class AUD_SuperposeReader : public AUD_IReader
+{
+private:
+ /**
+ * The first reader.
+ */
+ AUD_IReader* m_reader1;
+
+ /**
+ * The second reader.
+ */
+ AUD_IReader* m_reader2;
+
+ /**
+ * The playback buffer for the intersecting part.
+ */
+ AUD_Buffer m_buffer;
+
+ // hide copy constructor and operator=
+ AUD_SuperposeReader(const AUD_SuperposeReader&);
+ AUD_SuperposeReader& operator=(const AUD_SuperposeReader&);
+
+public:
+ /**
+ * Creates a new superpose reader.
+ * \param reader1 The first reader to read from.
+ * \param reader2 The second reader to read from.
+ * \exception AUD_Exception Thrown if the specs from the readers differ.
+ */
+ AUD_SuperposeReader(AUD_IReader* reader1, AUD_IReader* reader2);
+
+ /**
+ * Destroys the reader.
+ */
+ virtual ~AUD_SuperposeReader();
+
+ virtual bool isSeekable() const;
+ virtual void seek(int position);
+ virtual int getLength() const;
+ virtual int getPosition() const;
+ virtual AUD_Specs getSpecs() const;
+ virtual void read(int & length, sample_t* & buffer);
+};
+
+#endif //AUD_SUPERPOSEREADER
diff --git a/intern/audaspace/FX/AUD_VolumeFactory.cpp b/intern/audaspace/FX/AUD_VolumeFactory.cpp
index fbde608aa12..1b341a5a51a 100644
--- a/intern/audaspace/FX/AUD_VolumeFactory.cpp
+++ b/intern/audaspace/FX/AUD_VolumeFactory.cpp
@@ -24,34 +24,23 @@
*/
#include "AUD_VolumeFactory.h"
-#include "AUD_VolumeReader.h"
+#include "AUD_IIRFilterReader.h"
AUD_VolumeFactory::AUD_VolumeFactory(AUD_IFactory* factory, float volume) :
AUD_EffectFactory(factory),
- m_volume(volume) {}
-
-AUD_VolumeFactory::AUD_VolumeFactory(float volume) :
- AUD_EffectFactory(0),
- m_volume(volume) {}
-
-float AUD_VolumeFactory::getVolume()
+ m_volume(volume)
{
- return m_volume;
}
-void AUD_VolumeFactory::setVolume(float volume)
+float AUD_VolumeFactory::getVolume() const
{
- m_volume = volume;
+ return m_volume;
}
-AUD_IReader* AUD_VolumeFactory::createReader()
+AUD_IReader* AUD_VolumeFactory::createReader() const
{
- AUD_IReader* reader = getReader();
-
- if(reader != 0)
- {
- reader = new AUD_VolumeReader(reader, m_volume); AUD_NEW("reader")
- }
-
- return reader;
+ std::vector<float> a, b;
+ a.push_back(1);
+ b.push_back(m_volume);
+ return new AUD_IIRFilterReader(getReader(), b, a);
}
diff --git a/intern/audaspace/FX/AUD_VolumeFactory.h b/intern/audaspace/FX/AUD_VolumeFactory.h
index 09f91241b47..a086aab4640 100644
--- a/intern/audaspace/FX/AUD_VolumeFactory.h
+++ b/intern/audaspace/FX/AUD_VolumeFactory.h
@@ -39,7 +39,11 @@ private:
/**
* The volume.
*/
- float m_volume;
+ const float m_volume;
+
+ // hide copy constructor and operator=
+ AUD_VolumeFactory(const AUD_VolumeFactory&);
+ AUD_VolumeFactory& operator=(const AUD_VolumeFactory&);
public:
/**
@@ -47,26 +51,14 @@ public:
* \param factory The input factory.
* \param volume The desired volume.
*/
- AUD_VolumeFactory(AUD_IFactory* factory = 0, float volume = 1.0f);
-
- /**
- * Creates a new volume factory.
- * \param volume The desired volume.
- */
- AUD_VolumeFactory(float volume);
+ AUD_VolumeFactory(AUD_IFactory* factory, float volume);
/**
* Returns the volume.
*/
- float getVolume();
-
- /**
- * Sets the volume.
- * \param volume The new volume value. Should be between 0.0 and 1.0.
- */
- void setVolume(float volume);
+ float getVolume() const;
- virtual AUD_IReader* createReader();
+ virtual AUD_IReader* createReader() const;
};
#endif //AUD_VOLUMEFACTORY
diff --git a/intern/audaspace/FX/AUD_VolumeReader.cpp b/intern/audaspace/FX/AUD_VolumeReader.cpp
deleted file mode 100644
index f094c1e4ea3..00000000000
--- a/intern/audaspace/FX/AUD_VolumeReader.cpp
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * $Id$
- *
- * ***** BEGIN LGPL LICENSE BLOCK *****
- *
- * Copyright 2009 Jörg Hermann Müller
- *
- * This file is part of AudaSpace.
- *
- * AudaSpace is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * AudaSpace is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License
- * along with AudaSpace. If not, see <http://www.gnu.org/licenses/>.
- *
- * ***** END LGPL LICENSE BLOCK *****
- */
-
-#include "AUD_VolumeReader.h"
-#include "AUD_Buffer.h"
-
-#include <cstring>
-
-AUD_VolumeReader::AUD_VolumeReader(AUD_IReader* reader, float volume) :
- AUD_EffectReader(reader),
- m_volume(volume)
-{
- m_buffer = new AUD_Buffer(); AUD_NEW("buffer")
-}
-
-AUD_VolumeReader::~AUD_VolumeReader()
-{
- delete m_buffer; AUD_DELETE("buffer")
-}
-
-bool AUD_VolumeReader::notify(AUD_Message &message)
-{
- if(message.type == AUD_MSG_VOLUME)
- {
- m_volume = message.volume;
-
- m_reader->notify(message);
-
- return true;
- }
- return m_reader->notify(message);
-}
-
-void AUD_VolumeReader::read(int & length, sample_t* & buffer)
-{
- sample_t* buf;
- AUD_Specs specs = m_reader->getSpecs();
-
- m_reader->read(length, buf);
- if(m_buffer->getSize() < length*AUD_SAMPLE_SIZE(specs))
- m_buffer->resize(length*AUD_SAMPLE_SIZE(specs));
-
- buffer = m_buffer->getBuffer();
-
- for(int i = 0; i < length * specs.channels; i++)
- buffer[i] = buf[i] * m_volume;
-}
diff --git a/intern/audaspace/Makefile b/intern/audaspace/Makefile
index 4cd15e5d9fb..c1a613af1ae 100644
--- a/intern/audaspace/Makefile
+++ b/intern/audaspace/Makefile
@@ -39,6 +39,7 @@ DIRS = intern
DIRS += FX
DIRS += SDL
DIRS += SRC
+DIRS += Python
ifeq ($(WITH_FFMPEG),true)
DIRS += ffmpeg
@@ -56,9 +57,9 @@ ifeq ($(WITH_SNDFILE),true)
DIRS += sndfile
endif
-ifeq ($(WITH_FFTW3),true)
- DIRS += fftw
-endif
+#ifeq ($(WITH_FFTW3),true)
+# DIRS += fftw
+#endif
include nan_subdirs.mk
@@ -66,7 +67,7 @@ install: $(ALL_OR_DEBUG)
@[ -d $(NAN_AUDASPACE) ] || mkdir $(NAN_AUDASPACE)
@[ -d $(NAN_AUDASPACE)/include ] || mkdir $(NAN_AUDASPACE)/include
@[ -d $(NAN_AUDASPACE)/lib/$(DEBUG_DIR) ] || mkdir $(NAN_AUDASPACE)/lib/$(DEBUG_DIR)
- @../tools/cpifdiff.sh $(DIR)/$(DEBUG_DIR)libaudaspace.a $(DIR)/$(DEBUG_DIR)libaud_sdl.a $(DIR)/$(DEBUG_DIR)libaud_fx.a $(DIR)/$(DEBUG_DIR)libaud_src.a $(NAN_AUDASPACE)/lib/$(DEBUG_DIR)
+ @../tools/cpifdiff.sh $(DIR)/$(DEBUG_DIR)libaudaspace.a $(DIR)/$(DEBUG_DIR)libaud_sdl.a $(DIR)/$(DEBUG_DIR)libaud_python.a $(DIR)/$(DEBUG_DIR)libaud_fx.a $(DIR)/$(DEBUG_DIR)libaud_src.a $(NAN_AUDASPACE)/lib/$(DEBUG_DIR)
ifeq ($(WITH_FFMPEG),true)
@../tools/cpifdiff.sh $(DIR)/$(DEBUG_DIR)libaud_ffmpeg.a $(NAN_AUDASPACE)/lib/$(DEBUG_DIR)
@@ -84,9 +85,9 @@ ifeq ($(WITH_SNDFILE),true)
@../tools/cpifdiff.sh $(DIR)/$(DEBUG_DIR)libaud_sndfile.a $(NAN_AUDASPACE)/lib/$(DEBUG_DIR)
endif
-ifeq ($(WITH_FFTW3),true)
- @../tools/cpifdiff.sh $(DIR)/$(DEBUG_DIR)libaud_fftw.a $(NAN_AUDASPACE)/lib/$(DEBUG_DIR)
-endif
+#ifeq ($(WITH_FFTW3),true)
+# @../tools/cpifdiff.sh $(DIR)/$(DEBUG_DIR)libaud_fftw.a $(NAN_AUDASPACE)/lib/$(DEBUG_DIR)
+#endif
ifeq ($(OS),darwin)
ranlib $(NAN_AUDASPACE)/lib/$(DEBUG_DIR)libaudaspace.a
@@ -110,9 +111,9 @@ ifeq ($(WITH_SNDFILE),true)
ranlib $(NAN_AUDASPACE)/lib/$(DEBUG_DIR)libaud_sndfile.a
endif
-ifeq ($(WITH_FFTW3),true)
- ranlib $(NAN_AUDASPACE)/lib/$(DEBUG_DIR)libaud_fftw.a
-endif
+#ifeq ($(WITH_FFTW3),true)
+# ranlib $(NAN_AUDASPACE)/lib/$(DEBUG_DIR)libaud_fftw.a
+#endif
endif
@../tools/cpifdiff.sh intern/*.h $(NAN_AUDASPACE)/include/
diff --git a/intern/audaspace/OpenAL/AUD_OpenALDevice.cpp b/intern/audaspace/OpenAL/AUD_OpenALDevice.cpp
index 796764989ba..aa7cfcfd880 100644
--- a/intern/audaspace/OpenAL/AUD_OpenALDevice.cpp
+++ b/intern/audaspace/OpenAL/AUD_OpenALDevice.cpp
@@ -24,9 +24,9 @@
*/
#include "AUD_OpenALDevice.h"
+#include "AUD_IFactory.h"
#include "AUD_IReader.h"
-#include "AUD_ConverterFactory.h"
-#include "AUD_SourceCaps.h"
+#include "AUD_ConverterReader.h"
#include <cstring>
#include <limits>
@@ -65,6 +65,15 @@ struct AUD_OpenALHandle : AUD_Handle
/// Whether the stream doesn't return any more data.
bool data_end;
+
+ /// The loop count of the source.
+ int loopcount;
+
+ /// The stop callback.
+ stopCallback stop;
+
+ /// Stop callback data.
+ void* stop_data;
};
struct AUD_OpenALBufferedFactory
@@ -128,13 +137,9 @@ void AUD_OpenALDevice::updateStreams()
{
// for all sounds
- AUD_HandleIterator it = m_playingSounds->begin();
- while(it != m_playingSounds->end())
+ for(AUD_HandleIterator it = m_playingSounds->begin(); it != m_playingSounds->end(); it++)
{
sound = *it;
- // increment the iterator to make sure it's valid,
- // in case the sound gets deleted after stopping
- ++it;
// is it a streamed sound?
if(!sound->isBuffered)
@@ -156,6 +161,18 @@ void AUD_OpenALDevice::updateStreams()
length = m_buffersize;
sound->reader->read(length, buffer);
+ // looping necessary?
+ if(length == 0 && sound->loopcount)
+ {
+ if(sound->loopcount > 0)
+ sound->loopcount--;
+
+ sound->reader->seek(0);
+
+ length = m_buffersize;
+ sound->reader->read(length, buffer);
+ }
+
// read nothing?
if(length == 0)
{
@@ -212,12 +229,21 @@ void AUD_OpenALDevice::updateStreams()
// if it really stopped
if(sound->data_end)
{
+ if(sound->stop)
+ sound->stop(sound->stop_data);
+
+ // increment the iterator to the next value,
+ // because the sound gets deleted in the list here.
+ ++it;
// pause or
if(sound->keep)
pause(sound);
// stop
else
stop(sound);
+ // decrement again, so that we get the next sound in the
+ // next loop run
+ --it;
}
// continue playing
else
@@ -263,6 +289,8 @@ bool AUD_OpenALDevice::isValid(AUD_Handle* handle)
return false;
}
+static const char* open_error = "AUD_OpenALDevice: Device couldn't be opened.";
+
AUD_OpenALDevice::AUD_OpenALDevice(AUD_DeviceSpecs specs, int buffersize)
{
// cannot determine how many channels or which format OpenAL uses, but
@@ -287,7 +315,7 @@ AUD_OpenALDevice::AUD_OpenALDevice(AUD_DeviceSpecs specs, int buffersize)
m_device = alcOpenDevice(NULL);
if(!m_device)
- AUD_THROW(AUD_ERROR_OPENAL);
+ AUD_THROW(AUD_ERROR_OPENAL, open_error);
// at least try to set the frequency
ALCint attribs[] = { ALC_FREQUENCY, specs.rate, 0 };
@@ -302,12 +330,7 @@ AUD_OpenALDevice::AUD_OpenALDevice(AUD_DeviceSpecs specs, int buffersize)
// check for specific formats and channel counts to be played back
if(alIsExtensionPresent("AL_EXT_FLOAT32") == AL_TRUE)
- {
specs.format = AUD_FORMAT_FLOAT32;
- m_converter = NULL;
- }
- else
- m_converter = new AUD_ConverterFactory(specs); AUD_NEW("factory")
m_useMC = alIsExtensionPresent("AL_EXT_MCFORMATS") == AL_TRUE;
@@ -317,10 +340,9 @@ AUD_OpenALDevice::AUD_OpenALDevice(AUD_DeviceSpecs specs, int buffersize)
m_buffersize = buffersize;
m_playing = false;
- m_playingSounds = new std::list<AUD_OpenALHandle*>(); AUD_NEW("list")
- m_pausedSounds = new std::list<AUD_OpenALHandle*>(); AUD_NEW("list")
+ m_playingSounds = new std::list<AUD_OpenALHandle*>();
+ m_pausedSounds = new std::list<AUD_OpenALHandle*>();
m_bufferedFactories = new std::list<AUD_OpenALBufferedFactory*>();
- AUD_NEW("list")
pthread_mutexattr_t attr;
pthread_mutexattr_init(&attr);
@@ -345,10 +367,10 @@ AUD_OpenALDevice::~AUD_OpenALDevice()
alDeleteSources(1, &sound->source);
if(!sound->isBuffered)
{
- delete sound->reader; AUD_DELETE("reader")
+ delete sound->reader;
alDeleteBuffers(AUD_OPENAL_CYCLE_BUFFERS, sound->buffers);
}
- delete sound; AUD_DELETE("handle")
+ delete sound;
m_playingSounds->erase(m_playingSounds->begin());
}
@@ -359,10 +381,10 @@ AUD_OpenALDevice::~AUD_OpenALDevice()
alDeleteSources(1, &sound->source);
if(!sound->isBuffered)
{
- delete sound->reader; AUD_DELETE("reader")
+ delete sound->reader;
alDeleteBuffers(AUD_OPENAL_CYCLE_BUFFERS, sound->buffers);
}
- delete sound; AUD_DELETE("handle")
+ delete sound;
m_pausedSounds->erase(m_pausedSounds->begin());
}
@@ -370,7 +392,7 @@ AUD_OpenALDevice::~AUD_OpenALDevice()
while(!m_bufferedFactories->empty())
{
alDeleteBuffers(1, &(*(m_bufferedFactories->begin()))->buffer);
- delete *m_bufferedFactories->begin(); AUD_DELETE("bufferedfactory");
+ delete *m_bufferedFactories->begin();
m_bufferedFactories->erase(m_bufferedFactories->begin());
}
@@ -385,22 +407,19 @@ AUD_OpenALDevice::~AUD_OpenALDevice()
else
unlock();
- delete m_playingSounds; AUD_DELETE("list")
- delete m_pausedSounds; AUD_DELETE("list")
- delete m_bufferedFactories; AUD_DELETE("list")
+ delete m_playingSounds;
+ delete m_pausedSounds;
+ delete m_bufferedFactories;
// quit OpenAL
alcMakeContextCurrent(NULL);
alcDestroyContext(m_context);
alcCloseDevice(m_device);
- if(m_converter)
- delete m_converter; AUD_DELETE("factory")
-
pthread_mutex_destroy(&m_mutex);
}
-AUD_DeviceSpecs AUD_OpenALDevice::getSpecs()
+AUD_DeviceSpecs AUD_OpenALDevice::getSpecs() const
{
return m_specs;
}
@@ -496,6 +515,15 @@ bool AUD_OpenALDevice::getFormat(ALenum &format, AUD_Specs specs)
return valid;
}
+static const char* genbuffer_error = "AUD_OpenALDevice: Buffer couldn't be "
+ "generated.";
+static const char* gensource_error = "AUD_OpenALDevice: Source couldn't be "
+ "generated.";
+static const char* queue_error = "AUD_OpenALDevice: Buffer couldn't be "
+ "queued to the source.";
+static const char* bufferdata_error = "AUD_OpenALDevice: Buffer couldn't be "
+ "filled with data.";
+
AUD_Handle* AUD_OpenALDevice::play(AUD_IFactory* factory, bool keep)
{
lock();
@@ -511,11 +539,14 @@ AUD_Handle* AUD_OpenALDevice::play(AUD_IFactory* factory, bool keep)
if((*i)->factory == factory)
{
// create the handle
- sound = new AUD_OpenALHandle; AUD_NEW("handle")
+ sound = new AUD_OpenALHandle;
sound->keep = keep;
sound->current = -1;
sound->isBuffered = true;
sound->data_end = true;
+ sound->loopcount = 0;
+ sound->stop = NULL;
+ sound->stop_data = NULL;
alcSuspendContext(m_context);
@@ -524,23 +555,23 @@ AUD_Handle* AUD_OpenALDevice::play(AUD_IFactory* factory, bool keep)
{
alGenSources(1, &sound->source);
if(alGetError() != AL_NO_ERROR)
- AUD_THROW(AUD_ERROR_OPENAL);
+ AUD_THROW(AUD_ERROR_OPENAL, gensource_error);
try
{
alSourcei(sound->source, AL_BUFFER, (*i)->buffer);
if(alGetError() != AL_NO_ERROR)
- AUD_THROW(AUD_ERROR_OPENAL);
+ AUD_THROW(AUD_ERROR_OPENAL, queue_error);
}
- catch(AUD_Exception)
+ catch(AUD_Exception&)
{
alDeleteSources(1, &sound->source);
throw;
}
}
- catch(AUD_Exception)
+ catch(AUD_Exception&)
{
- delete sound; AUD_DELETE("handle")
+ delete sound;
alcProcessContext(m_context);
throw;
}
@@ -555,7 +586,7 @@ AUD_Handle* AUD_OpenALDevice::play(AUD_IFactory* factory, bool keep)
}
}
}
- catch(AUD_Exception)
+ catch(AUD_Exception&)
{
unlock();
throw;
@@ -568,35 +599,32 @@ AUD_Handle* AUD_OpenALDevice::play(AUD_IFactory* factory, bool keep)
AUD_IReader* reader = factory->createReader();
- if(reader == NULL)
- AUD_THROW(AUD_ERROR_READER);
-
AUD_DeviceSpecs specs = m_specs;
specs.specs = reader->getSpecs();
// check format
bool valid = specs.channels != AUD_CHANNELS_INVALID;
- if(m_converter)
- {
- m_converter->setReader(reader);
- reader = m_converter->createReader();
- }
+ if(m_specs.format != AUD_FORMAT_FLOAT32)
+ reader = new AUD_ConverterReader(reader, m_specs);
// create the handle
- sound = new AUD_OpenALHandle; AUD_NEW("handle")
+ sound = new AUD_OpenALHandle;
sound->keep = keep;
sound->reader = reader;
sound->current = 0;
sound->isBuffered = false;
sound->data_end = false;
+ sound->loopcount = 0;
+ sound->stop = NULL;
+ sound->stop_data = NULL;
valid &= getFormat(sound->format, specs.specs);
if(!valid)
{
- delete sound; AUD_DELETE("handle")
- delete reader; AUD_DELETE("reader")
+ delete sound;
+ delete reader;
return NULL;
}
@@ -608,7 +636,7 @@ AUD_Handle* AUD_OpenALDevice::play(AUD_IFactory* factory, bool keep)
{
alGenBuffers(AUD_OPENAL_CYCLE_BUFFERS, sound->buffers);
if(alGetError() != AL_NO_ERROR)
- AUD_THROW(AUD_ERROR_OPENAL);
+ AUD_THROW(AUD_ERROR_OPENAL, genbuffer_error);
try
{
@@ -623,36 +651,36 @@ AUD_Handle* AUD_OpenALDevice::play(AUD_IFactory* factory, bool keep)
length * AUD_DEVICE_SAMPLE_SIZE(specs),
specs.rate);
if(alGetError() != AL_NO_ERROR)
- AUD_THROW(AUD_ERROR_OPENAL);
+ AUD_THROW(AUD_ERROR_OPENAL, bufferdata_error);
}
alGenSources(1, &sound->source);
if(alGetError() != AL_NO_ERROR)
- AUD_THROW(AUD_ERROR_OPENAL);
+ AUD_THROW(AUD_ERROR_OPENAL, gensource_error);
try
{
alSourceQueueBuffers(sound->source, AUD_OPENAL_CYCLE_BUFFERS,
sound->buffers);
if(alGetError() != AL_NO_ERROR)
- AUD_THROW(AUD_ERROR_OPENAL);
+ AUD_THROW(AUD_ERROR_OPENAL, queue_error);
}
- catch(AUD_Exception)
+ catch(AUD_Exception&)
{
alDeleteSources(1, &sound->source);
throw;
}
}
- catch(AUD_Exception)
+ catch(AUD_Exception&)
{
alDeleteBuffers(AUD_OPENAL_CYCLE_BUFFERS, sound->buffers);
throw;
}
}
- catch(AUD_Exception)
+ catch(AUD_Exception&)
{
- delete sound; AUD_DELETE("handle")
- delete reader; AUD_DELETE("reader")
+ delete sound;
+ delete reader;
alcProcessContext(m_context);
unlock();
throw;
@@ -737,10 +765,10 @@ bool AUD_OpenALDevice::stop(AUD_Handle* handle)
alDeleteSources(1, &sound->source);
if(!sound->isBuffered)
{
- delete sound->reader; AUD_DELETE("reader")
+ delete sound->reader;
alDeleteBuffers(AUD_OPENAL_CYCLE_BUFFERS, sound->buffers);
}
- delete *i; AUD_DELETE("handle")
+ delete *i;
m_playingSounds->erase(i);
result = true;
break;
@@ -757,10 +785,10 @@ bool AUD_OpenALDevice::stop(AUD_Handle* handle)
alDeleteSources(1, &sound->source);
if(!sound->isBuffered)
{
- delete sound->reader; AUD_DELETE("reader")
+ delete sound->reader;
alDeleteBuffers(AUD_OPENAL_CYCLE_BUFFERS, sound->buffers);
}
- delete *i; AUD_DELETE("handle")
+ delete *i;
m_pausedSounds->erase(i);
result = true;
break;
@@ -773,43 +801,31 @@ bool AUD_OpenALDevice::stop(AUD_Handle* handle)
return result;
}
-bool AUD_OpenALDevice::setKeep(AUD_Handle* handle, bool keep)
+bool AUD_OpenALDevice::getKeep(AUD_Handle* handle)
{
bool result = false;
lock();
if(isValid(handle))
- {
- ((AUD_OpenALHandle*)handle)->keep = keep;
- result = true;
- }
+ result = ((AUD_OpenALHandle*)handle)->keep;
unlock();
return result;
}
-bool AUD_OpenALDevice::sendMessage(AUD_Handle* handle, AUD_Message &message)
+bool AUD_OpenALDevice::setKeep(AUD_Handle* handle, bool keep)
{
bool result = false;
lock();
- if(handle == 0)
+ if(isValid(handle))
{
- for(AUD_HandleIterator i = m_playingSounds->begin();
- i != m_playingSounds->end(); i++)
- if(!(*i)->isBuffered)
- result |= (*i)->reader->notify(message);
- for(AUD_HandleIterator i = m_pausedSounds->begin();
- i != m_pausedSounds->end(); i++)
- if(!(*i)->isBuffered)
- result |= (*i)->reader->notify(message);
+ ((AUD_OpenALHandle*)handle)->keep = keep;
+ result = true;
}
- else if(isValid(handle))
- if(!((AUD_OpenALHandle*)handle)->isBuffered)
- result = ((AUD_OpenALHandle*)handle)->reader->notify(message);
unlock();
@@ -947,440 +963,657 @@ void AUD_OpenALDevice::unlock()
pthread_mutex_unlock(&m_mutex);
}
-/******************************************************************************/
-/**************************** Capabilities Code *******************************/
-/******************************************************************************/
+float AUD_OpenALDevice::getVolume() const
+{
+ float result;
+ alGetListenerf(AL_GAIN, &result);
+ return result;
+}
-bool AUD_OpenALDevice::checkCapability(int capability)
+void AUD_OpenALDevice::setVolume(float volume)
{
- return capability == AUD_CAPS_3D_DEVICE ||
- capability == AUD_CAPS_VOLUME ||
- capability == AUD_CAPS_SOURCE_VOLUME ||
- capability == AUD_CAPS_SOURCE_PITCH ||
- capability == AUD_CAPS_BUFFERED_FACTORY;
+ alListenerf(AL_GAIN, volume);
+}
+
+float AUD_OpenALDevice::getVolume(AUD_Handle* handle)
+{
+ lock();
+ float result = std::numeric_limits<float>::quiet_NaN();
+ if(isValid(handle))
+ alGetSourcef(((AUD_OpenALHandle*)handle)->source,AL_GAIN, &result);
+ unlock();
+ return result;
}
-bool AUD_OpenALDevice::setCapability(int capability, void *value)
+bool AUD_OpenALDevice::setVolume(AUD_Handle* handle, float volume)
+{
+ lock();
+ bool result = isValid(handle);
+ if(result)
+ alSourcef(((AUD_OpenALHandle*)handle)->source, AL_GAIN, volume);
+ unlock();
+ return result;
+}
+
+float AUD_OpenALDevice::getPitch(AUD_Handle* handle)
+{
+ lock();
+ float result = std::numeric_limits<float>::quiet_NaN();
+ if(isValid(handle))
+ alGetSourcef(((AUD_OpenALHandle*)handle)->source,AL_PITCH, &result);
+ unlock();
+ return result;
+}
+
+bool AUD_OpenALDevice::setPitch(AUD_Handle* handle, float pitch)
+{
+ lock();
+ bool result = isValid(handle);
+ if(result)
+ alSourcef(((AUD_OpenALHandle*)handle)->source, AL_PITCH, pitch);
+ unlock();
+ return result;
+}
+
+int AUD_OpenALDevice::getLoopCount(AUD_Handle* handle)
+{
+ lock();
+ int result = 0;
+ if(isValid(handle))
+ result = ((AUD_OpenALHandle*)handle)->loopcount;
+ unlock();
+ return result;
+}
+
+bool AUD_OpenALDevice::setLoopCount(AUD_Handle* handle, int count)
+{
+ lock();
+ bool result = isValid(handle);
+ if(result)
+ ((AUD_OpenALHandle*)handle)->loopcount = count;
+ unlock();
+ return result;
+}
+
+bool AUD_OpenALDevice::setStopCallback(AUD_Handle* handle, stopCallback callback, void* data)
+{
+ lock();
+ bool result = isValid(handle);
+ if(result)
+ {
+ AUD_OpenALHandle* h = (AUD_OpenALHandle*)handle;
+ h->stop = callback;
+ h->stop_data = data;
+ }
+ unlock();
+ return result;
+}
+
+/* AUD_XXX Temorary disabled
+
+bool AUD_OpenALDevice::bufferFactory(void *value)
{
bool result = false;
- switch(capability)
+ AUD_IFactory* factory = (AUD_IFactory*) value;
+
+ // load the factory into an OpenAL buffer
+ if(factory)
{
- case AUD_CAPS_VOLUME:
- alListenerf(AL_GAIN, *((float*)value));
- return true;
- case AUD_CAPS_SOURCE_VOLUME:
+ // check if the factory is already buffered
+ lock();
+ for(AUD_BFIterator i = m_bufferedFactories->begin();
+ i != m_bufferedFactories->end(); i++)
{
- AUD_SourceCaps* caps = (AUD_SourceCaps*) value;
- lock();
- if(isValid(caps->handle))
+ if((*i)->factory == factory)
{
- alSourcef(((AUD_OpenALHandle*)caps->handle)->source,
- AL_GAIN, caps->value);
result = true;
+ break;
}
- unlock();
}
- break;
- case AUD_CAPS_SOURCE_PITCH:
+ unlock();
+ if(result)
+ return result;
+
+ AUD_IReader* reader = factory->createReader();
+
+ if(reader == NULL)
+ return false;
+
+ AUD_DeviceSpecs specs = m_specs;
+ specs.specs = reader->getSpecs();
+
+ if(m_specs.format != AUD_FORMAT_FLOAT32)
+ reader = new AUD_ConverterReader(reader, m_specs);
+
+ ALenum format;
+
+ if(!getFormat(format, specs.specs))
{
- AUD_SourceCaps* caps = (AUD_SourceCaps*) value;
- lock();
- if(isValid(caps->handle))
- {
- alSourcef(((AUD_OpenALHandle*)caps->handle)->source,
- AL_PITCH, caps->value);
- result = true;
- }
- unlock();
+ delete reader;
+ return false;
}
- break;
- case AUD_CAPS_BUFFERED_FACTORY:
+
+ // load into a buffer
+ lock();
+ alcSuspendContext(m_context);
+
+ AUD_OpenALBufferedFactory* bf = new AUD_OpenALBufferedFactory;
+ bf->factory = factory;
+
+ try
{
- AUD_IFactory* factory = (AUD_IFactory*) value;
+ alGenBuffers(1, &bf->buffer);
+ if(alGetError() != AL_NO_ERROR)
+ AUD_THROW(AUD_ERROR_OPENAL);
- // load the factory into an OpenAL buffer
- if(factory)
+ try
{
- // check if the factory is already buffered
- lock();
- for(AUD_BFIterator i = m_bufferedFactories->begin();
- i != m_bufferedFactories->end(); i++)
- {
- if((*i)->factory == factory)
- {
- result = true;
- break;
- }
- }
- unlock();
- if(result)
- return result;
+ sample_t* buf;
+ int length = reader->getLength();
- AUD_IReader* reader = factory->createReader();
+ reader->read(length, buf);
+ alBufferData(bf->buffer, format, buf,
+ length * AUD_DEVICE_SAMPLE_SIZE(specs),
+ specs.rate);
+ if(alGetError() != AL_NO_ERROR)
+ AUD_THROW(AUD_ERROR_OPENAL);
+ }
+ catch(AUD_Exception&)
+ {
+ alDeleteBuffers(1, &bf->buffer);
+ throw;
+ }
+ }
+ catch(AUD_Exception&)
+ {
+ delete bf;
+ delete reader;
+ alcProcessContext(m_context);
+ unlock();
+ return false;
+ }
- if(reader == NULL)
- return false;
+ m_bufferedFactories->push_back(bf);
- AUD_DeviceSpecs specs = m_specs;
- specs.specs = reader->getSpecs();
+ alcProcessContext(m_context);
+ unlock();
+ }
+ else
+ {
+ // stop all playing and paused buffered sources
+ lock();
+ alcSuspendContext(m_context);
- // determine format
- bool valid = reader->getType() == AUD_TYPE_BUFFER;
+ AUD_OpenALHandle* sound;
+ AUD_HandleIterator it = m_playingSounds->begin();
+ while(it != m_playingSounds->end())
+ {
+ sound = *it;
+ ++it;
- if(valid)
- {
- if(m_converter)
- {
- m_converter->setReader(reader);
- reader = m_converter->createReader();
- }
- }
+ if(sound->isBuffered)
+ stop(sound);
+ }
+ alcProcessContext(m_context);
- ALenum format;
+ while(!m_bufferedFactories->empty())
+ {
+ alDeleteBuffers(1,
+ &(*(m_bufferedFactories->begin()))->buffer);
+ delete *m_bufferedFactories->begin();
+ m_bufferedFactories->erase(m_bufferedFactories->begin());
+ }
+ unlock();
+ }
- if(valid)
- valid = getFormat(format, specs.specs);
+ return true;
+}*/
- if(!valid)
- {
- delete reader; AUD_DELETE("reader")
- return false;
- }
+/******************************************************************************/
+/**************************** 3D Device Code **********************************/
+/******************************************************************************/
- // load into a buffer
- lock();
- alcSuspendContext(m_context);
+AUD_Vector3 AUD_OpenALDevice::getListenerLocation() const
+{
+ ALfloat p[3];
+ alGetListenerfv(AL_POSITION, p);
+ return AUD_Vector3(p[0], p[1], p[2]);
+}
- AUD_OpenALBufferedFactory* bf = new AUD_OpenALBufferedFactory;
- AUD_NEW("bufferedfactory");
- bf->factory = factory;
+void AUD_OpenALDevice::setListenerLocation(const AUD_Vector3& location)
+{
+ alListenerfv(AL_POSITION, (ALfloat*)location.get());
+}
- try
- {
- alGenBuffers(1, &bf->buffer);
- if(alGetError() != AL_NO_ERROR)
- AUD_THROW(AUD_ERROR_OPENAL);
+AUD_Vector3 AUD_OpenALDevice::getListenerVelocity() const
+{
+ ALfloat v[3];
+ alGetListenerfv(AL_VELOCITY, v);
+ return AUD_Vector3(v[0], v[1], v[2]);
+}
- try
- {
- sample_t* buf;
- int length = reader->getLength();
+void AUD_OpenALDevice::setListenerVelocity(const AUD_Vector3& velocity)
+{
+ alListenerfv(AL_VELOCITY, (ALfloat*)velocity.get());
+}
- reader->read(length, buf);
- alBufferData(bf->buffer, format, buf,
- length * AUD_DEVICE_SAMPLE_SIZE(specs),
- specs.rate);
- if(alGetError() != AL_NO_ERROR)
- AUD_THROW(AUD_ERROR_OPENAL);
- }
- catch(AUD_Exception)
- {
- alDeleteBuffers(1, &bf->buffer);
- throw;
- }
- }
- catch(AUD_Exception)
- {
- delete bf; AUD_DELETE("bufferedfactory")
- delete reader; AUD_DELETE("reader")
- alcProcessContext(m_context);
- unlock();
- return false;
- }
+AUD_Quaternion AUD_OpenALDevice::getListenerOrientation() const
+{
+ // AUD_XXX not implemented yet
+ return AUD_Quaternion(0, 0, 0, 0);
+}
- m_bufferedFactories->push_back(bf);
+void AUD_OpenALDevice::setListenerOrientation(const AUD_Quaternion& orientation)
+{
+ ALfloat direction[6];
+ direction[0] = -2 * (orientation.w() * orientation.y() +
+ orientation.x() * orientation.z());
+ direction[1] = 2 * (orientation.x() * orientation.w() -
+ orientation.z() * orientation.y());
+ direction[2] = 2 * (orientation.x() * orientation.x() +
+ orientation.y() * orientation.y()) - 1;
+ direction[3] = 2 * (orientation.x() * orientation.y() -
+ orientation.w() * orientation.z());
+ direction[4] = 1 - 2 * (orientation.x() * orientation.x() +
+ orientation.z() * orientation.z());
+ direction[5] = 2 * (orientation.w() * orientation.x() +
+ orientation.y() * orientation.z());
+ alListenerfv(AL_ORIENTATION, direction);
+}
- alcProcessContext(m_context);
- unlock();
- }
- else
- {
- // stop all playing and paused buffered sources
- lock();
- alcSuspendContext(m_context);
+float AUD_OpenALDevice::getSpeedOfSound() const
+{
+ return alGetFloat(AL_SPEED_OF_SOUND);
+}
- AUD_OpenALHandle* sound;
- AUD_HandleIterator it = m_playingSounds->begin();
- while(it != m_playingSounds->end())
- {
- sound = *it;
- ++it;
+void AUD_OpenALDevice::setSpeedOfSound(float speed)
+{
+ alSpeedOfSound(speed);
+}
- if(sound->isBuffered)
- stop(sound);
- }
- alcProcessContext(m_context);
+float AUD_OpenALDevice::getDopplerFactor() const
+{
+ return alGetFloat(AL_DOPPLER_FACTOR);
+}
- while(!m_bufferedFactories->empty())
- {
- alDeleteBuffers(1,
- &(*(m_bufferedFactories->begin()))->buffer);
- delete *m_bufferedFactories->begin();
- AUD_DELETE("bufferedfactory");
- m_bufferedFactories->erase(m_bufferedFactories->begin());
- }
- unlock();
- }
+void AUD_OpenALDevice::setDopplerFactor(float factor)
+{
+ alDopplerFactor(factor);
+}
- return true;
- }
- break;
+AUD_DistanceModel AUD_OpenALDevice::getDistanceModel() const
+{
+ switch(alGetInteger(AL_DISTANCE_MODEL))
+ {
+ case AL_INVERSE_DISTANCE:
+ return AUD_DISTANCE_MODEL_INVERSE;
+ case AL_INVERSE_DISTANCE_CLAMPED:
+ return AUD_DISTANCE_MODEL_INVERSE_CLAMPED;
+ case AL_LINEAR_DISTANCE:
+ return AUD_DISTANCE_MODEL_LINEAR;
+ case AL_LINEAR_DISTANCE_CLAMPED:
+ return AUD_DISTANCE_MODEL_LINEAR_CLAMPED;
+ case AL_EXPONENT_DISTANCE:
+ return AUD_DISTANCE_MODEL_EXPONENT;
+ case AL_EXPONENT_DISTANCE_CLAMPED:
+ return AUD_DISTANCE_MODEL_EXPONENT_CLAMPED;
+ default:
+ return AUD_DISTANCE_MODEL_INVALID;
}
- return result;
}
-bool AUD_OpenALDevice::getCapability(int capability, void *value)
+void AUD_OpenALDevice::setDistanceModel(AUD_DistanceModel model)
{
- bool result = false;
-
- switch(capability)
+ switch(model)
{
- case AUD_CAPS_VOLUME:
- alGetListenerf(AL_GAIN, (float*)value);
- return true;
- case AUD_CAPS_SOURCE_VOLUME:
- {
- AUD_SourceCaps* caps = (AUD_SourceCaps*) value;
- lock();
- if(isValid(caps->handle))
- {
- alGetSourcef(((AUD_OpenALHandle*)caps->handle)->source,
- AL_GAIN, &caps->value);
- result = true;
- }
- unlock();
- }
+ case AUD_DISTANCE_MODEL_INVERSE:
+ alDistanceModel(AL_INVERSE_DISTANCE);
break;
- case AUD_CAPS_SOURCE_PITCH:
- {
- AUD_SourceCaps* caps = (AUD_SourceCaps*) value;
- lock();
- if(isValid(caps->handle))
- {
- alGetSourcef(((AUD_OpenALHandle*)caps->handle)->source,
- AL_PITCH, &caps->value);
- result = true;
- }
- unlock();
- }
+ case AUD_DISTANCE_MODEL_INVERSE_CLAMPED:
+ alDistanceModel(AL_INVERSE_DISTANCE_CLAMPED);
+ break;
+ case AUD_DISTANCE_MODEL_LINEAR:
+ alDistanceModel(AL_LINEAR_DISTANCE);
+ break;
+ case AUD_DISTANCE_MODEL_LINEAR_CLAMPED:
+ alDistanceModel(AL_LINEAR_DISTANCE_CLAMPED);
+ break;
+ case AUD_DISTANCE_MODEL_EXPONENT:
+ alDistanceModel(AL_EXPONENT_DISTANCE);
break;
+ case AUD_DISTANCE_MODEL_EXPONENT_CLAMPED:
+ alDistanceModel(AL_EXPONENT_DISTANCE_CLAMPED);
+ break;
+ default:
+ alDistanceModel(AL_NONE);
}
+}
+
+AUD_Vector3 AUD_OpenALDevice::getSourceLocation(AUD_Handle* handle)
+{
+ AUD_Vector3 result = AUD_Vector3(0, 0, 0);
+ ALfloat p[3];
+ lock();
+ if(isValid(handle))
+ {
+ alGetSourcefv(((AUD_OpenALHandle*)handle)->source, AL_POSITION, p);
+ result = AUD_Vector3(p[0], p[1], p[2]);
+ }
+
+ unlock();
return result;
}
-/******************************************************************************/
-/**************************** 3D Device Code **********************************/
-/******************************************************************************/
+bool AUD_OpenALDevice::setSourceLocation(AUD_Handle* handle, const AUD_Vector3& location)
+{
+ lock();
+ bool result = isValid(handle);
+
+ if(result)
+ alSourcefv(((AUD_OpenALHandle*)handle)->source, AL_POSITION,
+ (ALfloat*)location.get());
-AUD_Handle* AUD_OpenALDevice::play3D(AUD_IFactory* factory, bool keep)
+ unlock();
+ return result;
+}
+
+AUD_Vector3 AUD_OpenALDevice::getSourceVelocity(AUD_Handle* handle)
{
- AUD_OpenALHandle* handle = (AUD_OpenALHandle*)play(factory, keep);
- if(handle)
- alSourcei(handle->source, AL_SOURCE_RELATIVE, 0);
- return handle;
+ AUD_Vector3 result = AUD_Vector3(0, 0, 0);
+ ALfloat v[3];
+ lock();
+
+ if(isValid(handle))
+ {
+ alGetSourcefv(((AUD_OpenALHandle*)handle)->source, AL_VELOCITY, v);
+ result = AUD_Vector3(v[0], v[1], v[2]);
+ }
+
+ unlock();
+ return result;
}
-bool AUD_OpenALDevice::updateListener(AUD_3DData &data)
+bool AUD_OpenALDevice::setSourceVelocity(AUD_Handle* handle, const AUD_Vector3& velocity)
{
- alListenerfv(AL_POSITION, (ALfloat*)data.position);
- alListenerfv(AL_VELOCITY, (ALfloat*)data.velocity);
- alListenerfv(AL_ORIENTATION, (ALfloat*)&(data.orientation[3]));
+ lock();
+ bool result = isValid(handle);
- return true;
+ if(result)
+ alSourcefv(((AUD_OpenALHandle*)handle)->source, AL_VELOCITY,
+ (ALfloat*)velocity.get());
+
+ unlock();
+ return result;
}
-bool AUD_OpenALDevice::setSetting(AUD_3DSetting setting, float value)
+AUD_Quaternion AUD_OpenALDevice::getSourceOrientation(AUD_Handle* handle)
{
- switch(setting)
- {
- case AUD_3DS_DISTANCE_MODEL:
- if(value == AUD_DISTANCE_MODEL_NONE)
- alDistanceModel(AL_NONE);
- else if(value == AUD_DISTANCE_MODEL_INVERSE)
- alDistanceModel(AL_INVERSE_DISTANCE);
- else if(value == AUD_DISTANCE_MODEL_INVERSE_CLAMPED)
- alDistanceModel(AL_INVERSE_DISTANCE_CLAMPED);
- else if(value == AUD_DISTANCE_MODEL_LINEAR)
- alDistanceModel(AL_LINEAR_DISTANCE);
- else if(value == AUD_DISTANCE_MODEL_LINEAR_CLAMPED)
- alDistanceModel(AL_LINEAR_DISTANCE_CLAMPED);
- else if(value == AUD_DISTANCE_MODEL_EXPONENT)
- alDistanceModel(AL_EXPONENT_DISTANCE);
- else if(value == AUD_DISTANCE_MODEL_EXPONENT_CLAMPED)
- alDistanceModel(AL_EXPONENT_DISTANCE_CLAMPED);
- else
- return false;
- return true;
- case AUD_3DS_DOPPLER_FACTOR:
- alDopplerFactor(value);
- return true;
- case AUD_3DS_SPEED_OF_SOUND:
- alSpeedOfSound(value);
- return true;
- default:
- return false;
- }
+ // AUD_XXX not implemented yet
+ return AUD_Quaternion(0, 0, 0, 0);
}
-float AUD_OpenALDevice::getSetting(AUD_3DSetting setting)
+bool AUD_OpenALDevice::setSourceOrientation(AUD_Handle* handle, const AUD_Quaternion& orientation)
{
- switch(setting)
+ lock();
+ bool result = isValid(handle);
+
+ if(result)
{
- case AUD_3DS_DISTANCE_MODEL:
- switch(alGetInteger(AL_DISTANCE_MODEL))
- {
- case AL_NONE:
- return AUD_DISTANCE_MODEL_NONE;
- case AL_INVERSE_DISTANCE:
- return AUD_DISTANCE_MODEL_INVERSE;
- case AL_INVERSE_DISTANCE_CLAMPED:
- return AUD_DISTANCE_MODEL_INVERSE_CLAMPED;
- case AL_LINEAR_DISTANCE:
- return AUD_DISTANCE_MODEL_LINEAR;
- case AL_LINEAR_DISTANCE_CLAMPED:
- return AUD_DISTANCE_MODEL_LINEAR_CLAMPED;
- case AL_EXPONENT_DISTANCE:
- return AUD_DISTANCE_MODEL_EXPONENT;
- case AL_EXPONENT_DISTANCE_CLAMPED:
- return AUD_DISTANCE_MODEL_EXPONENT_CLAMPED;
- }
- case AUD_3DS_DOPPLER_FACTOR:
- return alGetFloat(AL_DOPPLER_FACTOR);
- case AUD_3DS_SPEED_OF_SOUND:
- return alGetFloat(AL_SPEED_OF_SOUND);
- default:
- return std::numeric_limits<float>::quiet_NaN();
+ ALfloat direction[3];
+ direction[0] = -2 * (orientation.w() * orientation.y() +
+ orientation.x() * orientation.z());
+ direction[1] = 2 * (orientation.x() * orientation.w() -
+ orientation.z() * orientation.y());
+ direction[2] = 2 * (orientation.x() * orientation.x() +
+ orientation.y() * orientation.y()) - 1;
+ alSourcefv(((AUD_OpenALHandle*)handle)->source, AL_DIRECTION,
+ direction);
}
+
+ unlock();
+ return result;
}
-bool AUD_OpenALDevice::updateSource(AUD_Handle* handle, AUD_3DData &data)
+bool AUD_OpenALDevice::isRelative(AUD_Handle* handle)
{
- bool result = false;
+ int result = std::numeric_limits<float>::quiet_NaN();;
lock();
if(isValid(handle))
- {
- int source = ((AUD_OpenALHandle*)handle)->source;
- alSourcefv(source, AL_POSITION, (ALfloat*)data.position);
- alSourcefv(source, AL_VELOCITY, (ALfloat*)data.velocity);
- alSourcefv(source, AL_DIRECTION, (ALfloat*)&(data.orientation[3]));
- result = true;
- }
+ alGetSourcei(((AUD_OpenALHandle*)handle)->source, AL_SOURCE_RELATIVE,
+ &result);
unlock();
+ return result;
+}
+bool AUD_OpenALDevice::setRelative(AUD_Handle* handle, bool relative)
+{
+ lock();
+ bool result = isValid(handle);
+
+ if(result)
+ alSourcei(((AUD_OpenALHandle*)handle)->source, AL_SOURCE_RELATIVE,
+ relative);
+
+ unlock();
return result;
}
-bool AUD_OpenALDevice::setSourceSetting(AUD_Handle* handle,
- AUD_3DSourceSetting setting,
- float value)
+float AUD_OpenALDevice::getVolumeMaximum(AUD_Handle* handle)
{
+ float result = std::numeric_limits<float>::quiet_NaN();;
+
lock();
- bool result = false;
+ if(isValid(handle))
+ alGetSourcef(((AUD_OpenALHandle*)handle)->source, AL_MAX_GAIN,
+ &result);
+
+ unlock();
+ return result;
+}
+
+bool AUD_OpenALDevice::setVolumeMaximum(AUD_Handle* handle, float volume)
+{
+ lock();
+ bool result = isValid(handle);
+
+ if(result)
+
+ alSourcef(((AUD_OpenALHandle*)handle)->source, AL_MAX_GAIN,
+ volume);
+
+ unlock();
+ return result;
+}
+
+float AUD_OpenALDevice::getVolumeMinimum(AUD_Handle* handle)
+{
+ float result = std::numeric_limits<float>::quiet_NaN();;
+
+ lock();
if(isValid(handle))
- {
- int source = ((AUD_OpenALHandle*)handle)->source;
+ alGetSourcef(((AUD_OpenALHandle*)handle)->source, AL_MIN_GAIN,
+ &result);
- switch(setting)
- {
- case AUD_3DSS_CONE_INNER_ANGLE:
- alSourcef(source, AL_CONE_INNER_ANGLE, value);
- result = true;
- break;
- case AUD_3DSS_CONE_OUTER_ANGLE:
- alSourcef(source, AL_CONE_OUTER_ANGLE, value);
- result = true;
- break;
- case AUD_3DSS_CONE_OUTER_GAIN:
- alSourcef(source, AL_CONE_OUTER_GAIN, value);
- result = true;
- break;
- case AUD_3DSS_IS_RELATIVE:
- alSourcei(source, AL_SOURCE_RELATIVE, value > 0.0f);
- result = true;
- break;
- case AUD_3DSS_MAX_DISTANCE:
- alSourcef(source, AL_MAX_DISTANCE, value);
- result = true;
- break;
- case AUD_3DSS_MAX_GAIN:
- alSourcef(source, AL_MAX_GAIN, value);
- result = true;
- break;
- case AUD_3DSS_MIN_GAIN:
- alSourcef(source, AL_MIN_GAIN, value);
- result = true;
- break;
- case AUD_3DSS_REFERENCE_DISTANCE:
- alSourcef(source, AL_REFERENCE_DISTANCE, value);
- result = true;
- break;
- case AUD_3DSS_ROLLOFF_FACTOR:
- alSourcef(source, AL_ROLLOFF_FACTOR, value);
- result = true;
- break;
- default:
- break;
- }
- }
+ unlock();
+ return result;
+}
+
+bool AUD_OpenALDevice::setVolumeMinimum(AUD_Handle* handle, float volume)
+{
+ lock();
+ bool result = isValid(handle);
+
+ if(result)
+ alSourcef(((AUD_OpenALHandle*)handle)->source, AL_MIN_GAIN,
+ volume);
unlock();
return result;
}
-float AUD_OpenALDevice::getSourceSetting(AUD_Handle* handle,
- AUD_3DSourceSetting setting)
+float AUD_OpenALDevice::getDistanceMaximum(AUD_Handle* handle)
{
float result = std::numeric_limits<float>::quiet_NaN();;
lock();
if(isValid(handle))
- {
- int source = ((AUD_OpenALHandle*)handle)->source;
+ alGetSourcef(((AUD_OpenALHandle*)handle)->source, AL_MAX_DISTANCE,
+ &result);
- switch(setting)
- {
- case AUD_3DSS_CONE_INNER_ANGLE:
- alGetSourcef(source, AL_CONE_INNER_ANGLE, &result);
- break;
- case AUD_3DSS_CONE_OUTER_ANGLE:
- alGetSourcef(source, AL_CONE_OUTER_ANGLE, &result);
- break;
- case AUD_3DSS_CONE_OUTER_GAIN:
- alGetSourcef(source, AL_CONE_OUTER_GAIN, &result);
- break;
- case AUD_3DSS_IS_RELATIVE:
- {
- ALint i;
- alGetSourcei(source, AL_SOURCE_RELATIVE, &i);
- result = i ? 1.0f : 0.0f;
- break;
- }
- case AUD_3DSS_MAX_DISTANCE:
- alGetSourcef(source, AL_MAX_DISTANCE, &result);
- break;
- case AUD_3DSS_MAX_GAIN:
- alGetSourcef(source, AL_MAX_GAIN, &result);
- break;
- case AUD_3DSS_MIN_GAIN:
- alGetSourcef(source, AL_MIN_GAIN, &result);
- break;
- case AUD_3DSS_REFERENCE_DISTANCE:
- alGetSourcef(source, AL_REFERENCE_DISTANCE, &result);
- break;
- case AUD_3DSS_ROLLOFF_FACTOR:
- alGetSourcef(source, AL_ROLLOFF_FACTOR, &result);
- break;
- default:
- break;
- }
- }
+ unlock();
+ return result;
+}
+
+bool AUD_OpenALDevice::setDistanceMaximum(AUD_Handle* handle, float distance)
+{
+ lock();
+ bool result = isValid(handle);
+
+ if(result)
+ alSourcef(((AUD_OpenALHandle*)handle)->source, AL_MAX_DISTANCE,
+ distance);
+
+ unlock();
+ return result;
+}
+
+float AUD_OpenALDevice::getDistanceReference(AUD_Handle* handle)
+{
+ float result = std::numeric_limits<float>::quiet_NaN();;
+
+ lock();
+
+ if(isValid(handle))
+ alGetSourcef(((AUD_OpenALHandle*)handle)->source, AL_REFERENCE_DISTANCE,
+ &result);
+
+ unlock();
+ return result;
+}
+
+bool AUD_OpenALDevice::setDistanceReference(AUD_Handle* handle, float distance)
+{
+ lock();
+ bool result = isValid(handle);
+
+ if(result)
+ alSourcef(((AUD_OpenALHandle*)handle)->source, AL_REFERENCE_DISTANCE,
+ distance);
+
+ unlock();
+ return result;
+}
+
+float AUD_OpenALDevice::getAttenuation(AUD_Handle* handle)
+{
+ float result = std::numeric_limits<float>::quiet_NaN();;
+
+ lock();
+
+ if(isValid(handle))
+ alGetSourcef(((AUD_OpenALHandle*)handle)->source, AL_ROLLOFF_FACTOR,
+ &result);
+
+ unlock();
+ return result;
+}
+
+bool AUD_OpenALDevice::setAttenuation(AUD_Handle* handle, float factor)
+{
+ lock();
+ bool result = isValid(handle);
+
+ if(result)
+ alSourcef(((AUD_OpenALHandle*)handle)->source, AL_ROLLOFF_FACTOR,
+ factor);
+
+ unlock();
+ return result;
+}
+
+float AUD_OpenALDevice::getConeAngleOuter(AUD_Handle* handle)
+{
+ float result = std::numeric_limits<float>::quiet_NaN();;
+
+ lock();
+
+ if(isValid(handle))
+ alGetSourcef(((AUD_OpenALHandle*)handle)->source, AL_CONE_OUTER_ANGLE,
+ &result);
+
+ unlock();
+ return result;
+}
+
+bool AUD_OpenALDevice::setConeAngleOuter(AUD_Handle* handle, float angle)
+{
+ lock();
+ bool result = isValid(handle);
+
+ if(result)
+ alSourcef(((AUD_OpenALHandle*)handle)->source, AL_CONE_OUTER_ANGLE,
+ angle);
+
+ unlock();
+ return result;
+}
+
+float AUD_OpenALDevice::getConeAngleInner(AUD_Handle* handle)
+{
+ float result = std::numeric_limits<float>::quiet_NaN();;
+
+ lock();
+
+ if(isValid(handle))
+ alGetSourcef(((AUD_OpenALHandle*)handle)->source, AL_CONE_INNER_ANGLE,
+ &result);
+
+ unlock();
+ return result;
+}
+
+bool AUD_OpenALDevice::setConeAngleInner(AUD_Handle* handle, float angle)
+{
+ lock();
+ bool result = isValid(handle);
+
+ if(result)
+ alSourcef(((AUD_OpenALHandle*)handle)->source, AL_CONE_INNER_ANGLE,
+ angle);
+
+ unlock();
+ return result;
+}
+
+float AUD_OpenALDevice::getConeVolumeOuter(AUD_Handle* handle)
+{
+ float result = std::numeric_limits<float>::quiet_NaN();;
+
+ lock();
+
+ if(isValid(handle))
+ alGetSourcef(((AUD_OpenALHandle*)handle)->source, AL_CONE_OUTER_GAIN,
+ &result);
+
+ unlock();
+ return result;
+}
+
+bool AUD_OpenALDevice::setConeVolumeOuter(AUD_Handle* handle, float volume)
+{
+ lock();
+ bool result = isValid(handle);
+
+ if(result)
+ alSourcef(((AUD_OpenALHandle*)handle)->source, AL_CONE_OUTER_GAIN,
+ volume);
unlock();
return result;
diff --git a/intern/audaspace/OpenAL/AUD_OpenALDevice.h b/intern/audaspace/OpenAL/AUD_OpenALDevice.h
index cb8c83ab810..985954fc20b 100644
--- a/intern/audaspace/OpenAL/AUD_OpenALDevice.h
+++ b/intern/audaspace/OpenAL/AUD_OpenALDevice.h
@@ -30,7 +30,6 @@
#include "AUD_I3DDevice.h"
struct AUD_OpenALHandle;
struct AUD_OpenALBufferedFactory;
-class AUD_ConverterFactory;
#include <AL/al.h>
#include <AL/alc.h>
@@ -64,11 +63,6 @@ private:
bool m_useMC;
/**
- * The converter factory for readers with wrong input format.
- */
- AUD_ConverterFactory* m_converter;
-
- /**
* The list of sounds that are currently playing.
*/
std::list<AUD_OpenALHandle*>* m_playingSounds;
@@ -123,6 +117,10 @@ private:
*/
bool getFormat(ALenum &format, AUD_Specs specs);
+ // hide copy constructor and operator=
+ AUD_OpenALDevice(const AUD_OpenALDevice&);
+ AUD_OpenALDevice& operator=(const AUD_OpenALDevice&);
+
public:
/**
* Opens the OpenAL audio device for playback.
@@ -142,31 +140,64 @@ public:
virtual ~AUD_OpenALDevice();
- virtual AUD_DeviceSpecs getSpecs();
+ virtual AUD_DeviceSpecs getSpecs() const;
virtual AUD_Handle* play(AUD_IFactory* factory, bool keep = false);
virtual bool pause(AUD_Handle* handle);
virtual bool resume(AUD_Handle* handle);
virtual bool stop(AUD_Handle* handle);
+ virtual bool getKeep(AUD_Handle* handle);
virtual bool setKeep(AUD_Handle* handle, bool keep);
- virtual bool sendMessage(AUD_Handle* handle, AUD_Message &message);
virtual bool seek(AUD_Handle* handle, float position);
virtual float getPosition(AUD_Handle* handle);
virtual AUD_Status getStatus(AUD_Handle* handle);
virtual void lock();
virtual void unlock();
- virtual bool checkCapability(int capability);
- virtual bool setCapability(int capability, void *value);
- virtual bool getCapability(int capability, void *value);
-
- virtual AUD_Handle* play3D(AUD_IFactory* factory, bool keep = false);
- virtual bool updateListener(AUD_3DData &data);
- virtual bool setSetting(AUD_3DSetting setting, float value);
- virtual float getSetting(AUD_3DSetting setting);
- virtual bool updateSource(AUD_Handle* handle, AUD_3DData &data);
- virtual bool setSourceSetting(AUD_Handle* handle,
- AUD_3DSourceSetting setting, float value);
- virtual float getSourceSetting(AUD_Handle* handle,
- AUD_3DSourceSetting setting);
+ virtual float getVolume() const;
+ virtual void setVolume(float volume);
+ virtual float getVolume(AUD_Handle* handle);
+ virtual bool setVolume(AUD_Handle* handle, float volume);
+ virtual float getPitch(AUD_Handle* handle);
+ virtual bool setPitch(AUD_Handle* handle, float pitch);
+ virtual int getLoopCount(AUD_Handle* handle);
+ virtual bool setLoopCount(AUD_Handle* handle, int count);
+ virtual bool setStopCallback(AUD_Handle* handle, stopCallback callback = NULL, void* data = NULL);
+
+ virtual AUD_Vector3 getListenerLocation() const;
+ virtual void setListenerLocation(const AUD_Vector3& location);
+ virtual AUD_Vector3 getListenerVelocity() const;
+ virtual void setListenerVelocity(const AUD_Vector3& velocity);
+ virtual AUD_Quaternion getListenerOrientation() const;
+ virtual void setListenerOrientation(const AUD_Quaternion& orientation);
+ virtual float getSpeedOfSound() const;
+ virtual void setSpeedOfSound(float speed);
+ virtual float getDopplerFactor() const;
+ virtual void setDopplerFactor(float factor);
+ virtual AUD_DistanceModel getDistanceModel() const;
+ virtual void setDistanceModel(AUD_DistanceModel model);
+ virtual AUD_Vector3 getSourceLocation(AUD_Handle* handle);
+ virtual bool setSourceLocation(AUD_Handle* handle, const AUD_Vector3& location);
+ virtual AUD_Vector3 getSourceVelocity(AUD_Handle* handle);
+ virtual bool setSourceVelocity(AUD_Handle* handle, const AUD_Vector3& velocity);
+ virtual AUD_Quaternion getSourceOrientation(AUD_Handle* handle);
+ virtual bool setSourceOrientation(AUD_Handle* handle, const AUD_Quaternion& orientation);
+ virtual bool isRelative(AUD_Handle* handle);
+ virtual bool setRelative(AUD_Handle* handle, bool relative);
+ virtual float getVolumeMaximum(AUD_Handle* handle);
+ virtual bool setVolumeMaximum(AUD_Handle* handle, float volume);
+ virtual float getVolumeMinimum(AUD_Handle* handle);
+ virtual bool setVolumeMinimum(AUD_Handle* handle, float volume);
+ virtual float getDistanceMaximum(AUD_Handle* handle);
+ virtual bool setDistanceMaximum(AUD_Handle* handle, float distance);
+ virtual float getDistanceReference(AUD_Handle* handle);
+ virtual bool setDistanceReference(AUD_Handle* handle, float distance);
+ virtual float getAttenuation(AUD_Handle* handle);
+ virtual bool setAttenuation(AUD_Handle* handle, float factor);
+ virtual float getConeAngleOuter(AUD_Handle* handle);
+ virtual bool setConeAngleOuter(AUD_Handle* handle, float angle);
+ virtual float getConeAngleInner(AUD_Handle* handle);
+ virtual bool setConeAngleInner(AUD_Handle* handle, float angle);
+ virtual float getConeVolumeOuter(AUD_Handle* handle);
+ virtual bool setConeVolumeOuter(AUD_Handle* handle, float volume);
};
#endif //AUD_OPENALDEVICE
diff --git a/intern/audaspace/Python/AUD_PyAPI.cpp b/intern/audaspace/Python/AUD_PyAPI.cpp
new file mode 100644
index 00000000000..b0c55d5856e
--- /dev/null
+++ b/intern/audaspace/Python/AUD_PyAPI.cpp
@@ -0,0 +1,2973 @@
+/*
+ * $Id$
+ *
+ * ***** BEGIN LGPL LICENSE BLOCK *****
+ *
+ * Copyright 2009 Jörg Hermann Müller
+ *
+ * This file is part of AudaSpace.
+ *
+ * AudaSpace is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * AudaSpace is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with AudaSpace. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * ***** END LGPL LICENSE BLOCK *****
+ */
+
+#include "AUD_PyAPI.h"
+#include "structmember.h"
+
+#include "AUD_I3DDevice.h"
+#include "AUD_NULLDevice.h"
+#include "AUD_DelayFactory.h"
+#include "AUD_DoubleFactory.h"
+#include "AUD_FaderFactory.h"
+#include "AUD_HighpassFactory.h"
+#include "AUD_LimiterFactory.h"
+#include "AUD_LoopFactory.h"
+#include "AUD_LowpassFactory.h"
+#include "AUD_PingPongFactory.h"
+#include "AUD_PitchFactory.h"
+#include "AUD_ReverseFactory.h"
+#include "AUD_SinusFactory.h"
+#include "AUD_FileFactory.h"
+#include "AUD_SquareFactory.h"
+#include "AUD_StreamBufferFactory.h"
+#include "AUD_SuperposeFactory.h"
+#include "AUD_VolumeFactory.h"
+#include "AUD_IIRFilterFactory.h"
+
+#ifdef WITH_SDL
+#include "AUD_SDLDevice.h"
+#endif
+
+#ifdef WITH_OPENAL
+#include "AUD_OpenALDevice.h"
+#endif
+
+#ifdef WITH_JACK
+#include "AUD_JackDevice.h"
+#endif
+
+// ====================================================================
+
+typedef enum
+{
+ AUD_DEVICE_NULL = 0,
+ AUD_DEVICE_OPENAL,
+ AUD_DEVICE_SDL,
+ AUD_DEVICE_JACK,
+ AUD_DEVICE_READ,
+} AUD_DeviceTypes;
+
+// ====================================================================
+
+#define PY_MODULE_ADD_CONSTANT(module, name) PyModule_AddIntConstant(module, #name, name)
+
+// ====================================================================
+
+static PyObject* AUDError;
+
+static const char* device_not_3d_error = "Device is not a 3D device!";
+
+// ====================================================================
+
+static void
+Factory_dealloc(Factory* self)
+{
+ if(self->factory)
+ delete self->factory;
+ Py_XDECREF(self->child_list);
+ Py_TYPE(self)->tp_free((PyObject*)self);
+}
+
+static PyObject *
+Factory_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
+{
+ Factory *self;
+
+ self = (Factory*)type->tp_alloc(type, 0);
+ if(self != NULL)
+ {
+ static const char *kwlist[] = {"filename", NULL};
+ const char* filename = NULL;
+
+ if(!PyArg_ParseTupleAndKeywords(args, kwds, "s:Factory", const_cast<char**>(kwlist), &filename))
+ {
+ Py_DECREF(self);
+ return NULL;
+ }
+
+ try
+ {
+ self->factory = new AUD_FileFactory(filename);
+ }
+ catch(AUD_Exception& e)
+ {
+ Py_DECREF(self);
+ PyErr_SetString(AUDError, e.str);
+ return NULL;
+ }
+ }
+
+ return (PyObject *)self;
+}
+
+PyDoc_STRVAR(M_aud_Factory_sine_doc,
+ "sine(frequency, rate=44100)\n\n"
+ "Creates a sine factory which plays a sine wave.\n\n"
+ ":arg frequency: The frequency of the sine wave in Hz.\n"
+ ":type frequency: float\n"
+ ":arg rate: The sampling rate in Hz. It's recommended to set this "
+ "value to the playback device's samling rate to avoid resamping.\n"
+ ":type rate: int\n"
+ ":return: The created :class:`Factory` object.\n"
+ ":rtype: :class:`Factory`");
+
+static PyObject *
+Factory_sine(PyTypeObject* type, PyObject* args)
+{
+ float frequency;
+ int rate = 44100;
+
+ if(!PyArg_ParseTuple(args, "f|i:sine", &frequency, &rate))
+ return NULL;
+
+ Factory *self;
+
+ self = (Factory*)type->tp_alloc(type, 0);
+ if(self != NULL)
+ {
+ try
+ {
+ self->factory = new AUD_SinusFactory(frequency, (AUD_SampleRate)rate);
+ }
+ catch(AUD_Exception& e)
+ {
+ Py_DECREF(self);
+ PyErr_SetString(AUDError, e.str);
+ return NULL;
+ }
+ }
+
+ return (PyObject *)self;
+}
+
+PyDoc_STRVAR(M_aud_Factory_file_doc,
+ "file(filename)\n\n"
+ "Creates a factory object of a sound file.\n\n"
+ ":arg filename: Path of the file.\n"
+ ":type filename: string\n"
+ ":return: The created :class:`Factory` object.\n"
+ ":rtype: :class:`Factory`\n\n"
+ ".. warning:: If the file doesn't exist or can't be read you will "
+ "not get an exception immediately, but when you try to start "
+ "playback of that factory.");
+
+static PyObject *
+Factory_file(PyTypeObject* type, PyObject* args)
+{
+ const char* filename = NULL;
+
+ if(!PyArg_ParseTuple(args, "s:file", &filename))
+ return NULL;
+
+ Factory *self;
+
+ self = (Factory*)type->tp_alloc(type, 0);
+ if(self != NULL)
+ {
+ try
+ {
+ self->factory = new AUD_FileFactory(filename);
+ }
+ catch(AUD_Exception& e)
+ {
+ Py_DECREF(self);
+ PyErr_SetString(AUDError, e.str);
+ return NULL;
+ }
+ }
+
+ return (PyObject *)self;
+}
+
+PyDoc_STRVAR(M_aud_Factory_lowpass_doc,
+ "lowpass(frequency, Q=0.5)\n\n"
+ "Creates a second order lowpass filter based on the transfer "
+ "function H(s) = 1 / (s^2 + s/Q + 1)\n\n"
+ ":arg frequency: The cut off trequency of the lowpass.\n"
+ ":type frequency: float\n"
+ ":arg Q: Q factor of the lowpass.\n"
+ ":type Q: float\n"
+ ":return: The created :class:`Factory` object.\n"
+ ":rtype: :class:`Factory`");
+
+static PyObject *
+Factory_lowpass(Factory* self, PyObject* args)
+{
+ float frequency;
+ float Q = 0.5;
+
+ if(!PyArg_ParseTuple(args, "f|f:lowpass", &frequency, &Q))
+ return NULL;
+
+ PyTypeObject* type = ((PyObject*)self)->ob_type;
+ Factory *parent = (Factory*)type->tp_alloc(type, 0);
+
+ if(parent != NULL)
+ {
+ Py_INCREF(self);
+ parent->child_list = (PyObject*)self;
+
+ try
+ {
+ parent->factory = new AUD_LowpassFactory(self->factory, frequency, Q);
+ }
+ catch(AUD_Exception& e)
+ {
+ Py_DECREF(parent);
+ PyErr_SetString(AUDError, e.str);
+ return NULL;
+ }
+ }
+
+ return (PyObject *)parent;
+}
+
+PyDoc_STRVAR(M_aud_Factory_delay_doc,
+ "delay(time)\n\n"
+ "Delays by playing adding silence in front of the other factory's "
+ "data.\n\n"
+ ":arg time: How many seconds of silence should be added before "
+ "the factory.\n"
+ ":type time: float\n"
+ ":return: The created :class:`Factory` object.\n"
+ ":rtype: :class:`Factory`");
+
+static PyObject *
+Factory_delay(Factory* self, PyObject* args)
+{
+ float delay;
+
+ if(!PyArg_ParseTuple(args, "f:delay", &delay))
+ return NULL;
+
+ PyTypeObject* type = ((PyObject*)self)->ob_type;
+ Factory *parent = (Factory*)type->tp_alloc(type, 0);
+
+ if(parent != NULL)
+ {
+ Py_INCREF(self);
+ parent->child_list = (PyObject*)self;
+
+ try
+ {
+ parent->factory = new AUD_DelayFactory(self->factory, delay);
+ }
+ catch(AUD_Exception& e)
+ {
+ Py_DECREF(parent);
+ PyErr_SetString(AUDError, e.str);
+ return NULL;
+ }
+ }
+
+ return (PyObject *)parent;
+}
+
+PyDoc_STRVAR(M_aud_Factory_join_doc,
+ "join(factory)\n\n"
+ "Plays two factories in sequence.\n\n"
+ ":arg factory: The factory to play second.\n"
+ ":type factory: :class:`Factory`\n"
+ ":return: The created :class:`Factory` object.\n"
+ ":rtype: :class:`Factory`\n\n"
+ ".. note:: The two factories have to have the same specifications "
+ "(channels and samplerate).");
+
+static PyObject *
+Factory_join(Factory* self, PyObject* object)
+{
+ PyTypeObject* type = ((PyObject*)self)->ob_type;
+
+ if(!PyObject_TypeCheck(object, type))
+ {
+ PyErr_SetString(PyExc_TypeError, "Object has to be of type Factory!");
+ return NULL;
+ }
+
+ Factory *parent;
+ Factory *child = (Factory*)object;
+
+ parent = (Factory*)type->tp_alloc(type, 0);
+ if(parent != NULL)
+ {
+ parent->child_list = Py_BuildValue("(OO)", self, object);
+
+ try
+ {
+ parent->factory = new AUD_DoubleFactory(self->factory, child->factory);
+ }
+ catch(AUD_Exception& e)
+ {
+ Py_DECREF(parent);
+ PyErr_SetString(AUDError, e.str);
+ return NULL;
+ }
+ }
+
+ return (PyObject *)parent;
+}
+
+PyDoc_STRVAR(M_aud_Factory_highpass_doc,
+ "highpass(frequency, Q=0.5)\n\n"
+ "Creates a second order highpass filter based on the transfer "
+ "function H(s) = s^2 / (s^2 + s/Q + 1)\n\n"
+ ":arg frequency: The cut off trequency of the highpass.\n"
+ ":type frequency: float\n"
+ ":arg Q: Q factor of the lowpass.\n"
+ ":type Q: float\n"
+ ":return: The created :class:`Factory` object.\n"
+ ":rtype: :class:`Factory`");
+
+static PyObject *
+Factory_highpass(Factory* self, PyObject* args)
+{
+ float frequency;
+ float Q = 0.5;
+
+ if(!PyArg_ParseTuple(args, "f|f:highpass", &frequency, &Q))
+ return NULL;
+
+ PyTypeObject* type = ((PyObject*)self)->ob_type;
+ Factory *parent = (Factory*)type->tp_alloc(type, 0);
+
+ if(parent != NULL)
+ {
+ Py_INCREF(self);
+ parent->child_list = (PyObject*)self;
+
+ try
+ {
+ parent->factory = new AUD_HighpassFactory(self->factory, frequency, Q);
+ }
+ catch(AUD_Exception& e)
+ {
+ Py_DECREF(parent);
+ PyErr_SetString(AUDError, e.str);
+ return NULL;
+ }
+ }
+
+ return (PyObject *)parent;
+}
+
+PyDoc_STRVAR(M_aud_Factory_limit_doc,
+ "limit(start, end)\n\n"
+ "Limits a factory within a specific start and end time.\n\n"
+ ":arg start: Start time in seconds.\n"
+ ":type start: float\n"
+ ":arg end: End time in seconds.\n"
+ ":type end: float\n"
+ ":return: The created :class:`Factory` object.\n"
+ ":rtype: :class:`Factory`");
+
+static PyObject *
+Factory_limit(Factory* self, PyObject* args)
+{
+ float start, end;
+
+ if(!PyArg_ParseTuple(args, "ff:limit", &start, &end))
+ return NULL;
+
+ PyTypeObject* type = ((PyObject*)self)->ob_type;
+ Factory *parent = (Factory*)type->tp_alloc(type, 0);
+
+ if(parent != NULL)
+ {
+ Py_INCREF(self);
+ parent->child_list = (PyObject*)self;
+
+ try
+ {
+ parent->factory = new AUD_LimiterFactory(self->factory, start, end);
+ }
+ catch(AUD_Exception& e)
+ {
+ Py_DECREF(parent);
+ PyErr_SetString(AUDError, e.str);
+ return NULL;
+ }
+ }
+
+ return (PyObject *)parent;
+}
+
+PyDoc_STRVAR(M_aud_Factory_pitch_doc,
+ "pitch(factor)\n\n"
+ "Changes the pitch of a factory with a specific factor.\n\n"
+ ":arg factor: The factor to change the pitch with.\n"
+ ":type factor: float\n"
+ ":return: The created :class:`Factory` object.\n"
+ ":rtype: :class:`Factory`\n\n"
+ ".. note:: This is done by changing the sample rate of the "
+ "underlying factory, which has to be an integer, so the factor "
+ "value rounded and the factor may not be 100 % accurate.\n\n"
+ ".. note:: This is a filter function, you might consider using "
+ ":attr:`Handle.pitch` instead.");
+
+static PyObject *
+Factory_pitch(Factory* self, PyObject* args)
+{
+ float factor;
+
+ if(!PyArg_ParseTuple(args, "f:pitch", &factor))
+ return NULL;
+
+ PyTypeObject* type = ((PyObject*)self)->ob_type;
+ Factory *parent = (Factory*)type->tp_alloc(type, 0);
+
+ if(parent != NULL)
+ {
+ Py_INCREF(self);
+ parent->child_list = (PyObject*)self;
+
+ try
+ {
+ parent->factory = new AUD_PitchFactory(self->factory, factor);
+ }
+ catch(AUD_Exception& e)
+ {
+ Py_DECREF(parent);
+ PyErr_SetString(AUDError, e.str);
+ return NULL;
+ }
+ }
+
+ return (PyObject *)parent;
+}
+
+PyDoc_STRVAR(M_aud_Factory_volume_doc,
+ "volume(volume)\n\n"
+ "Changes the volume of a factory.\n\n"
+ ":arg volume: The new volume..\n"
+ ":type volume: float\n"
+ ":return: The created :class:`Factory` object.\n"
+ ":rtype: :class:`Factory`\n\n"
+ ".. note:: Should be in the range [0, 1] to avoid clipping.\n\n"
+ ".. note:: This is a filter function, you might consider using "
+ ":attr:`Handle.volume` instead.");
+
+static PyObject *
+Factory_volume(Factory* self, PyObject* args)
+{
+ float volume;
+
+ if(!PyArg_ParseTuple(args, "f:volume", &volume))
+ return NULL;
+
+ PyTypeObject* type = ((PyObject*)self)->ob_type;
+ Factory *parent = (Factory*)type->tp_alloc(type, 0);
+
+ if(parent != NULL)
+ {
+ Py_INCREF(self);
+ parent->child_list = (PyObject*)self;
+
+ try
+ {
+ parent->factory = new AUD_VolumeFactory(self->factory, volume);
+ }
+ catch(AUD_Exception& e)
+ {
+ Py_DECREF(parent);
+ PyErr_SetString(AUDError, e.str);
+ return NULL;
+ }
+ }
+
+ return (PyObject *)parent;
+}
+
+PyDoc_STRVAR(M_aud_Factory_fadein_doc,
+ "fadein(start, length)\n\n"
+ "Fades a factory in by raising the volume linearly in the given "
+ "time interval.\n\n"
+ ":arg start: Time in seconds when the fading should start.\n"
+ ":type start: float\n"
+ ":arg length: Time in seconds how long the fading should last.\n"
+ ":type length: float\n"
+ ":return: The created :class:`Factory` object.\n"
+ ":rtype: :class:`Factory`\n\n"
+ ".. note:: Before the fade starts it plays silence.");
+
+static PyObject *
+Factory_fadein(Factory* self, PyObject* args)
+{
+ float start, length;
+
+ if(!PyArg_ParseTuple(args, "ff:fadein", &start, &length))
+ return NULL;
+
+ PyTypeObject* type = ((PyObject*)self)->ob_type;
+ Factory *parent = (Factory*)type->tp_alloc(type, 0);
+
+ if(parent != NULL)
+ {
+ Py_INCREF(self);
+ parent->child_list = (PyObject*)self;
+
+ try
+ {
+ parent->factory = new AUD_FaderFactory(self->factory, AUD_FADE_IN, start, length);
+ }
+ catch(AUD_Exception& e)
+ {
+ Py_DECREF(parent);
+ PyErr_SetString(AUDError, e.str);
+ return NULL;
+ }
+ }
+
+ return (PyObject *)parent;
+}
+
+PyDoc_STRVAR(M_aud_Factory_fadeout_doc,
+ "fadeout(start, length)\n\n"
+ "Fades a factory in by lowering the volume linearly in the given "
+ "time interval.\n\n"
+ ":arg start: Time in seconds when the fading should start.\n"
+ ":type start: float\n"
+ ":arg length: Time in seconds how long the fading should last.\n"
+ ":type length: float\n"
+ ":return: The created :class:`Factory` object.\n"
+ ":rtype: :class:`Factory`\n\n"
+ ".. note:: After the fade this factory plays silence, so that "
+ "the length of the factory is not altered.");
+
+static PyObject *
+Factory_fadeout(Factory* self, PyObject* args)
+{
+ float start, length;
+
+ if(!PyArg_ParseTuple(args, "ff:fadeout", &start, &length))
+ return NULL;
+
+ PyTypeObject* type = ((PyObject*)self)->ob_type;
+ Factory *parent = (Factory*)type->tp_alloc(type, 0);
+
+ if(parent != NULL)
+ {
+ Py_INCREF(self);
+ parent->child_list = (PyObject*)self;
+
+ try
+ {
+ parent->factory = new AUD_FaderFactory(self->factory, AUD_FADE_OUT, start, length);
+ }
+ catch(AUD_Exception& e)
+ {
+ Py_DECREF(parent);
+ PyErr_SetString(AUDError, e.str);
+ return NULL;
+ }
+ }
+
+ return (PyObject *)parent;
+}
+
+PyDoc_STRVAR(M_aud_Factory_loop_doc,
+ "loop(count)\n\n"
+ "Loops a factory.\n\n"
+ ":arg count: How often the factory should be looped. "
+ "Negative values mean endlessly.\n"
+ ":type count: integer\n"
+ ":return: The created :class:`Factory` object.\n"
+ ":rtype: :class:`Factory`\n\n"
+ ".. note:: This is a filter function, you might consider using "
+ ":attr:`Handle.loop_count` instead.");
+
+static PyObject *
+Factory_loop(Factory* self, PyObject* args)
+{
+ int loop;
+
+ if(!PyArg_ParseTuple(args, "i:loop", &loop))
+ return NULL;
+
+ PyTypeObject* type = ((PyObject*)self)->ob_type;
+ Factory *parent = (Factory*)type->tp_alloc(type, 0);
+
+ if(parent != NULL)
+ {
+ Py_INCREF(self);
+ parent->child_list = (PyObject*)self;
+
+ try
+ {
+ parent->factory = new AUD_LoopFactory(self->factory, loop);
+ }
+ catch(AUD_Exception& e)
+ {
+ Py_DECREF(parent);
+ PyErr_SetString(AUDError, e.str);
+ return NULL;
+ }
+ }
+
+ return (PyObject *)parent;
+}
+
+PyDoc_STRVAR(M_aud_Factory_mix_doc,
+ "mix(factory)\n\n"
+ "Mixes two factories.\n\n"
+ ":arg factory: The factory to mix over the other.\n"
+ ":type factory: :class:`Factory`\n"
+ ":return: The created :class:`Factory` object.\n"
+ ":rtype: :class:`Factory`\n\n"
+ ".. note:: The two factories have to have the same specifications "
+ "(channels and samplerate).");
+
+static PyObject *
+Factory_mix(Factory* self, PyObject* object)
+{
+ PyTypeObject* type = ((PyObject*)self)->ob_type;
+
+ if(!PyObject_TypeCheck(object, type))
+ {
+ PyErr_SetString(PyExc_TypeError, "Object is not of type Factory!");
+ return NULL;
+ }
+
+ Factory *parent = (Factory*)type->tp_alloc(type, 0);
+ Factory *child = (Factory*)object;
+
+ if(parent != NULL)
+ {
+ parent->child_list = Py_BuildValue("(OO)", self, object);
+
+ try
+ {
+ parent->factory = new AUD_SuperposeFactory(self->factory, child->factory);
+ }
+ catch(AUD_Exception& e)
+ {
+ Py_DECREF(parent);
+ PyErr_SetString(AUDError, e.str);
+ return NULL;
+ }
+ }
+
+ return (PyObject *)parent;
+}
+
+PyDoc_STRVAR(M_aud_Factory_pingpong_doc,
+ "pingpong()\n\n"
+ "Plays a factory forward and then backward.\n"
+ "This is like joining a factory with its reverse.\n\n"
+ ":return: The created :class:`Factory` object.\n"
+ ":rtype: :class:`Factory`");
+
+static PyObject *
+Factory_pingpong(Factory* self)
+{
+ PyTypeObject* type = ((PyObject*)self)->ob_type;
+ Factory *parent = (Factory*)type->tp_alloc(type, 0);
+
+ if(parent != NULL)
+ {
+ Py_INCREF(self);
+ parent->child_list = (PyObject*)self;
+
+ try
+ {
+ parent->factory = new AUD_PingPongFactory(self->factory);
+ }
+ catch(AUD_Exception& e)
+ {
+ Py_DECREF(parent);
+ PyErr_SetString(AUDError, e.str);
+ return NULL;
+ }
+ }
+
+ return (PyObject *)parent;
+}
+
+PyDoc_STRVAR(M_aud_Factory_reverse_doc,
+ "reverse()\n\n"
+ "Plays a factory reversed.\n\n"
+ ":return: The created :class:`Factory` object.\n"
+ ":rtype: :class:`Factory`\n\n"
+ ".. note:: The factory has to have a finite length and has to be "
+ "seekable. It's recommended to use this only with factories with "
+ "fast and accurate seeking, which is not true for encoded audio "
+ "files, such ones should be buffered using :meth:`buffer` before "
+ "being played reversed.\n\n"
+ ".. warning:: If seeking is not accurate in the underlying factory "
+ "you'll likely hear skips/jumps/cracks.");
+
+static PyObject *
+Factory_reverse(Factory* self)
+{
+ PyTypeObject* type = ((PyObject*)self)->ob_type;
+ Factory *parent = (Factory*)type->tp_alloc(type, 0);
+
+ if(parent != NULL)
+ {
+ Py_INCREF(self);
+ parent->child_list = (PyObject*)self;
+
+ try
+ {
+ parent->factory = new AUD_ReverseFactory(self->factory);
+ }
+ catch(AUD_Exception& e)
+ {
+ Py_DECREF(parent);
+ PyErr_SetString(AUDError, e.str);
+ return NULL;
+ }
+ }
+
+ return (PyObject *)parent;
+}
+
+PyDoc_STRVAR(M_aud_Factory_buffer_doc,
+ "buffer()\n\n"
+ "Buffers a factory into RAM.\n"
+ "This saves CPU usage needed for decoding and file access if the "
+ "underlying factory reads from a file on the harddisk, but it "
+ "consumes a lot of memory.\n\n"
+ ":return: The created :class:`Factory` object.\n"
+ ":rtype: :class:`Factory`\n\n"
+ ".. note:: Only known-length factories can be buffered.\n\n"
+ ".. warning:: Raw PCM data needs a lot of space, only buffer "
+ "short factories.");
+
+static PyObject *
+Factory_buffer(Factory* self)
+{
+ PyTypeObject* type = ((PyObject*)self)->ob_type;
+ Factory *parent = (Factory*)type->tp_alloc(type, 0);
+
+ if(parent != NULL)
+ {
+ try
+ {
+ parent->factory = new AUD_StreamBufferFactory(self->factory);
+ }
+ catch(AUD_Exception& e)
+ {
+ Py_DECREF(parent);
+ PyErr_SetString(AUDError, e.str);
+ return NULL;
+ }
+ }
+
+ return (PyObject *)parent;
+}
+
+PyDoc_STRVAR(M_aud_Factory_square_doc,
+ "square(threshold = 0)\n\n"
+ "Makes a square wave out of an audio wave by setting all samples "
+ "with a amplitude >= threshold to 1, all <= -threshold to -1 and "
+ "all between to 0.\n\n"
+ ":arg threshold: Threshold value over which an amplitude counts "
+ "non-zero.\n"
+ ":type threshold: float\n"
+ ":return: The created :class:`Factory` object.\n"
+ ":rtype: :class:`Factory`");
+
+static PyObject *
+Factory_square(Factory* self, PyObject* args)
+{
+ float threshold = 0;
+
+ if(!PyArg_ParseTuple(args, "|f:square", &threshold))
+ return NULL;
+
+ PyTypeObject* type = ((PyObject*)self)->ob_type;
+ Factory *parent = (Factory*)type->tp_alloc(type, 0);
+
+ if(parent != NULL)
+ {
+ Py_INCREF(self);
+ parent->child_list = (PyObject*)self;
+
+ try
+ {
+ parent->factory = new AUD_SquareFactory(self->factory, threshold);
+ }
+ catch(AUD_Exception& e)
+ {
+ Py_DECREF(parent);
+ PyErr_SetString(AUDError, e.str);
+ return NULL;
+ }
+ }
+
+ return (PyObject *)parent;
+}
+
+PyDoc_STRVAR(M_aud_Factory_filter_doc,
+ "filter(b, a = (1))\n\n"
+ "Filters a factory with the supplied IIR filter coefficients.\n"
+ "Without the second parameter you'll get a FIR filter.\n"
+ "If the first value of the a sequence is 0 it will be set to 1 "
+ "automatically.\n"
+ "If the first value of the a sequence is neither 0 nor 1, all "
+ "filter coefficients will be scaled by this value so that it is 1 "
+ "in the end, you don't have to scale yourself.\n\n"
+ ":arg b: The nominator filter coefficients.\n"
+ ":type b: sequence of float\n"
+ ":arg a: The denominator filter coefficients.\n"
+ ":type a: sequence of float\n"
+ ":return: The created :class:`Factory` object.\n"
+ ":rtype: :class:`Factory`");
+
+static PyObject *
+Factory_filter(Factory* self, PyObject* args)
+{
+ PyObject* py_b;
+ PyObject* py_a = NULL;
+
+ if(!PyArg_ParseTuple(args, "O|O:filter", &py_b, &py_a))
+ return NULL;
+
+ if(!PySequence_Check(py_b) || (py_a != NULL && !PySequence_Check(py_a)))
+ {
+ PyErr_SetString(PyExc_TypeError, "Parameter is not a sequence!");
+ return NULL;
+ }
+
+ if(!PySequence_Length(py_b) || (py_a != NULL && !PySequence_Length(py_a)))
+ {
+ PyErr_SetString(PyExc_ValueError, "The sequence has to contain at least one value!");
+ return NULL;
+ }
+
+ std::vector<float> a, b;
+ PyObject* py_value;
+ float value;
+ int result;
+
+ for(int i = 0; i < PySequence_Length(py_b); i++)
+ {
+ py_value = PySequence_GetItem(py_b, i);
+ result = PyArg_Parse(py_value, "f:filter", &value);
+ Py_DECREF(py_value);
+
+ if(!result)
+ return NULL;
+
+ b.push_back(value);
+ }
+
+ if(py_a)
+ {
+ for(int i = 0; i < PySequence_Length(py_a); i++)
+ {
+ py_value = PySequence_GetItem(py_a, i);
+ result = PyArg_Parse(py_value, "f:filter", &value);
+ Py_DECREF(py_value);
+
+ if(!result)
+ return NULL;
+
+ a.push_back(value);
+ }
+
+ if(a[0] == 0)
+ a[0] = 1;
+ }
+ else
+ a.push_back(1);
+
+ PyTypeObject* type = ((PyObject*)self)->ob_type;
+ Factory *parent = (Factory*)type->tp_alloc(type, 0);
+
+ if(parent != NULL)
+ {
+ Py_INCREF(self);
+ parent->child_list = (PyObject*)self;
+
+ try
+ {
+ parent->factory = new AUD_IIRFilterFactory(self->factory, b, a);
+ }
+ catch(AUD_Exception& e)
+ {
+ Py_DECREF(parent);
+ PyErr_SetString(AUDError, e.str);
+ return NULL;
+ }
+ }
+
+ return (PyObject *)parent;
+}
+
+static PyMethodDef Factory_methods[] = {
+ {"sine", (PyCFunction)Factory_sine, METH_VARARGS | METH_CLASS,
+ M_aud_Factory_sine_doc
+ },
+ {"file", (PyCFunction)Factory_file, METH_VARARGS | METH_CLASS,
+ M_aud_Factory_file_doc
+ },
+ {"lowpass", (PyCFunction)Factory_lowpass, METH_VARARGS,
+ M_aud_Factory_lowpass_doc
+ },
+ {"delay", (PyCFunction)Factory_delay, METH_VARARGS,
+ M_aud_Factory_delay_doc
+ },
+ {"join", (PyCFunction)Factory_join, METH_O,
+ M_aud_Factory_join_doc
+ },
+ {"highpass", (PyCFunction)Factory_highpass, METH_VARARGS,
+ M_aud_Factory_highpass_doc
+ },
+ {"limit", (PyCFunction)Factory_limit, METH_VARARGS,
+ M_aud_Factory_limit_doc
+ },
+ {"pitch", (PyCFunction)Factory_pitch, METH_VARARGS,
+ M_aud_Factory_pitch_doc
+ },
+ {"volume", (PyCFunction)Factory_volume, METH_VARARGS,
+ M_aud_Factory_volume_doc
+ },
+ {"fadein", (PyCFunction)Factory_fadein, METH_VARARGS,
+ M_aud_Factory_fadein_doc
+ },
+ {"fadeout", (PyCFunction)Factory_fadeout, METH_VARARGS,
+ M_aud_Factory_fadeout_doc
+ },
+ {"loop", (PyCFunction)Factory_loop, METH_VARARGS,
+ M_aud_Factory_loop_doc
+ },
+ {"mix", (PyCFunction)Factory_mix, METH_O,
+ M_aud_Factory_mix_doc
+ },
+ {"pingpong", (PyCFunction)Factory_pingpong, METH_NOARGS,
+ M_aud_Factory_pingpong_doc
+ },
+ {"reverse", (PyCFunction)Factory_reverse, METH_NOARGS,
+ M_aud_Factory_reverse_doc
+ },
+ {"buffer", (PyCFunction)Factory_buffer, METH_NOARGS,
+ M_aud_Factory_buffer_doc
+ },
+ {"square", (PyCFunction)Factory_square, METH_VARARGS,
+ M_aud_Factory_square_doc
+ },
+ {"filter", (PyCFunction)Factory_filter, METH_VARARGS,
+ M_aud_Factory_filter_doc
+ },
+ {NULL} /* Sentinel */
+};
+
+PyDoc_STRVAR(M_aud_Factory_doc,
+ "Factory objects are immutable and represent a sound that can be "
+ "played simultaneously multiple times. They are called factories "
+ "because they create reader objects internally that are used for "
+ "playback.");
+
+static PyTypeObject FactoryType = {
+ PyVarObject_HEAD_INIT(NULL, 0)
+ "aud.Factory", /* tp_name */
+ sizeof(Factory), /* tp_basicsize */
+ 0, /* tp_itemsize */
+ (destructor)Factory_dealloc, /* tp_dealloc */
+ 0, /* tp_print */
+ 0, /* tp_getattr */
+ 0, /* tp_setattr */
+ 0, /* tp_reserved */
+ 0, /* tp_repr */
+ 0, /* tp_as_number */
+ 0, /* tp_as_sequence */
+ 0, /* tp_as_mapping */
+ 0, /* tp_hash */
+ 0, /* tp_call */
+ 0, /* tp_str */
+ 0, /* tp_getattro */
+ 0, /* tp_setattro */
+ 0, /* tp_as_buffer */
+ Py_TPFLAGS_DEFAULT, /* tp_flags */
+ M_aud_Factory_doc, /* tp_doc */
+ 0, /* tp_traverse */
+ 0, /* tp_clear */
+ 0, /* tp_richcompare */
+ 0, /* tp_weaklistoffset */
+ 0, /* tp_iter */
+ 0, /* tp_iternext */
+ Factory_methods, /* tp_methods */
+ 0, /* tp_members */
+ 0, /* tp_getset */
+ 0, /* tp_base */
+ 0, /* tp_dict */
+ 0, /* tp_descr_get */
+ 0, /* tp_descr_set */
+ 0, /* tp_dictoffset */
+ 0, /* tp_init */
+ 0, /* tp_alloc */
+ Factory_new, /* tp_new */
+};
+
+// ========== Handle ==================================================
+
+static void
+Handle_dealloc(Handle* self)
+{
+ Py_XDECREF(self->device);
+ Py_TYPE(self)->tp_free((PyObject*)self);
+}
+
+PyDoc_STRVAR(M_aud_Handle_pause_doc,
+ "pause()\n\n"
+ "Pauses playback.\n\n"
+ ":return: Whether the action succeeded.\n"
+ ":rtype: bool");
+
+static PyObject *
+Handle_pause(Handle *self)
+{
+ Device* device = (Device*)self->device;
+
+ try
+ {
+ if(device->device->pause(self->handle))
+ {
+ Py_RETURN_TRUE;
+ }
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ return NULL;
+ }
+
+ Py_RETURN_FALSE;
+}
+
+PyDoc_STRVAR(M_aud_Handle_resume_doc,
+ "resume()\n\n"
+ "Resumes playback.\n\n"
+ ":return: Whether the action succeeded.\n"
+ ":rtype: bool");
+
+static PyObject *
+Handle_resume(Handle *self)
+{
+ Device* device = (Device*)self->device;
+
+ try
+ {
+ if(device->device->resume(self->handle))
+ {
+ Py_RETURN_TRUE;
+ }
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ return NULL;
+ }
+
+ Py_RETURN_FALSE;
+}
+
+PyDoc_STRVAR(M_aud_Handle_stop_doc,
+ "stop()\n\n"
+ "Stops playback.\n\n"
+ ":return: Whether the action succeeded.\n"
+ ":rtype: bool\n\n"
+ ".. note:: This makes the handle invalid.");
+
+static PyObject *
+Handle_stop(Handle *self)
+{
+ Device* device = (Device*)self->device;
+
+ try
+ {
+ if(device->device->stop(self->handle))
+ {
+ Py_RETURN_TRUE;
+ }
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ return NULL;
+ }
+
+ Py_RETURN_FALSE;
+}
+
+static PyMethodDef Handle_methods[] = {
+ {"pause", (PyCFunction)Handle_pause, METH_NOARGS,
+ M_aud_Handle_pause_doc
+ },
+ {"resume", (PyCFunction)Handle_resume, METH_NOARGS,
+ M_aud_Handle_resume_doc
+ },
+ {"stop", (PyCFunction)Handle_stop, METH_NOARGS,
+ M_aud_Handle_stop_doc
+ },
+ {NULL} /* Sentinel */
+};
+
+PyDoc_STRVAR(M_aud_Handle_position_doc,
+ "The playback position of the sound in seconds.");
+
+static PyObject *
+Handle_get_position(Handle *self, void* nothing)
+{
+ Device* device = (Device*)self->device;
+
+ try
+ {
+ return Py_BuildValue("f", device->device->getPosition(self->handle));
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ return NULL;
+ }
+}
+
+static int
+Handle_set_position(Handle *self, PyObject* args, void* nothing)
+{
+ float position;
+
+ if(!PyArg_Parse(args, "f:position", &position))
+ return -1;
+
+ Device* device = (Device*)self->device;
+
+ try
+ {
+ if(device->device->seek(self->handle, position))
+ return 0;
+ PyErr_SetString(AUDError, "Couldn't seek the sound!");
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ }
+
+ return -1;
+}
+
+PyDoc_STRVAR(M_aud_Handle_keep_doc,
+ "Whether the sound should be kept paused in the device when its "
+ "end is reached.\n"
+ "This can be used to seek the sound to some position and start "
+ "playback again.\n\n"
+ ".. warning:: If this is set to true and you forget stopping this "
+ "equals a memory leak as the handle exists until the device is "
+ "destroyed.");
+
+static PyObject *
+Handle_get_keep(Handle *self, void* nothing)
+{
+ Device* device = (Device*)self->device;
+
+ try
+ {
+ if(device->device->getKeep(self->handle))
+ {
+ Py_RETURN_TRUE;
+ }
+ else
+ {
+ Py_RETURN_FALSE;
+ }
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ return NULL;
+ }
+}
+
+static int
+Handle_set_keep(Handle *self, PyObject* args, void* nothing)
+{
+ if(!PyBool_Check(args))
+ {
+ PyErr_SetString(PyExc_TypeError, "keep is not a boolean!");
+ return -1;
+ }
+
+ bool keep = args == Py_True;
+ Device* device = (Device*)self->device;
+
+ try
+ {
+ if(device->device->setKeep(self->handle, keep))
+ return 0;
+ PyErr_SetString(AUDError, "Couldn't set keep of the sound!");
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ }
+
+ return -1;
+}
+
+PyDoc_STRVAR(M_aud_Handle_status_doc,
+ "Whether the sound is playing, paused or stopped (=invalid).");
+
+static PyObject *
+Handle_get_status(Handle *self, void* nothing)
+{
+ Device* device = (Device*)self->device;
+
+ try
+ {
+ return Py_BuildValue("i", device->device->getStatus(self->handle));
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ return NULL;
+ }
+}
+
+PyDoc_STRVAR(M_aud_Handle_volume_doc,
+ "The volume of the sound.");
+
+static PyObject *
+Handle_get_volume(Handle *self, void* nothing)
+{
+ Device* device = (Device*)self->device;
+
+ try
+ {
+ return Py_BuildValue("f", device->device->getVolume(self->handle));
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ return NULL;
+ }
+}
+
+static int
+Handle_set_volume(Handle *self, PyObject* args, void* nothing)
+{
+ float volume;
+
+ if(!PyArg_Parse(args, "f:volume", &volume))
+ return -1;
+
+ Device* device = (Device*)self->device;
+
+ try
+ {
+ if(device->device->setVolume(self->handle, volume))
+ return 0;
+ PyErr_SetString(AUDError, "Couldn't set the sound volume!");
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ }
+
+ return -1;
+}
+
+PyDoc_STRVAR(M_aud_Handle_pitch_doc,
+ "The pitch of the sound.");
+
+static PyObject *
+Handle_get_pitch(Handle *self, void* nothing)
+{
+ Device* device = (Device*)self->device;
+
+ try
+ {
+ return Py_BuildValue("f", device->device->getPitch(self->handle));
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ return NULL;
+ }
+}
+
+static int
+Handle_set_pitch(Handle *self, PyObject* args, void* nothing)
+{
+ float pitch;
+
+ if(!PyArg_Parse(args, "f:pitch", &pitch))
+ return -1;
+
+ Device* device = (Device*)self->device;
+
+ try
+ {
+ if(device->device->setPitch(self->handle, pitch))
+ return 0;
+ PyErr_SetString(AUDError, "Couldn't set the sound pitch!");
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ }
+
+ return -1;
+}
+
+PyDoc_STRVAR(M_aud_Handle_loop_count_doc,
+ "The (remaining) loop count of the sound. A negative value indicates infinity.");
+
+static PyObject *
+Handle_get_loop_count(Handle *self, void* nothing)
+{
+ Device* device = (Device*)self->device;
+
+ try
+ {
+ return Py_BuildValue("i", device->device->getLoopCount(self->handle));
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ return NULL;
+ }
+}
+
+static int
+Handle_set_loop_count(Handle *self, PyObject* args, void* nothing)
+{
+ int loops;
+
+ if(!PyArg_Parse(args, "i:loop_count", &loops))
+ return -1;
+
+ Device* device = (Device*)self->device;
+
+ try
+ {
+ if(device->device->setLoopCount(self->handle, loops))
+ return 0;
+ PyErr_SetString(AUDError, "Couldn't set the loop count!");
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ }
+
+ return -1;
+}
+
+PyDoc_STRVAR(M_aud_Handle_location_doc,
+ "The source's location in 3D space, a 3D tuple of floats.");
+
+static PyObject *
+Handle_get_location(Handle *self, void* nothing)
+{
+ Device* dev = (Device*)self->device;
+
+ try
+ {
+ AUD_I3DDevice* device = dynamic_cast<AUD_I3DDevice*>(dev->device);
+ if(device)
+ {
+ AUD_Vector3 v = device->getSourceLocation(self->handle);
+ return Py_BuildValue("(fff)", v.x(), v.y(), v.z());
+ }
+ else
+ {
+ PyErr_SetString(AUDError, device_not_3d_error);
+ }
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ }
+
+ return NULL;
+}
+
+static int
+Handle_set_location(Handle *self, PyObject* args, void* nothing)
+{
+ float x, y, z;
+
+ if(!PyArg_Parse(args, "(fff):location", &x, &y, &z))
+ return -1;
+
+ Device* dev = (Device*)self->device;
+
+ try
+ {
+ AUD_I3DDevice* device = dynamic_cast<AUD_I3DDevice*>(dev->device);
+ if(device)
+ {
+ AUD_Vector3 location(x, y, z);
+ if(device->setSourceLocation(self->handle, location))
+ return 0;
+ PyErr_SetString(AUDError, "Location couldn't be set!");
+ }
+ else
+ PyErr_SetString(AUDError, device_not_3d_error);
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ }
+
+ return -1;
+}
+
+PyDoc_STRVAR(M_aud_Handle_velocity_doc,
+ "The source's velocity in 3D space, a 3D tuple of floats.");
+
+static PyObject *
+Handle_get_velocity(Handle *self, void* nothing)
+{
+ Device* dev = (Device*)self->device;
+
+ try
+ {
+ AUD_I3DDevice* device = dynamic_cast<AUD_I3DDevice*>(dev->device);
+ if(device)
+ {
+ AUD_Vector3 v = device->getSourceVelocity(self->handle);
+ return Py_BuildValue("(fff)", v.x(), v.y(), v.z());
+ }
+ else
+ {
+ PyErr_SetString(AUDError, device_not_3d_error);
+ }
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ }
+
+ return NULL;
+}
+
+static int
+Handle_set_velocity(Handle *self, PyObject* args, void* nothing)
+{
+ float x, y, z;
+
+ if(!PyArg_Parse(args, "(fff):velocity", &x, &y, &z))
+ return -1;
+
+ Device* dev = (Device*)self->device;
+
+ try
+ {
+ AUD_I3DDevice* device = dynamic_cast<AUD_I3DDevice*>(dev->device);
+ if(device)
+ {
+ AUD_Vector3 velocity(x, y, z);
+ if(device->setSourceVelocity(self->handle, velocity))
+ return 0;
+ PyErr_SetString(AUDError, "Couldn't set the velocity!");
+ }
+ else
+ PyErr_SetString(AUDError, device_not_3d_error);
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ }
+
+ return -1;
+}
+
+PyDoc_STRVAR(M_aud_Handle_orientation_doc,
+ "The source's orientation in 3D space as quaternion, a 4 float tuple.");
+
+static PyObject *
+Handle_get_orientation(Handle *self, void* nothing)
+{
+ Device* dev = (Device*)self->device;
+
+ try
+ {
+ AUD_I3DDevice* device = dynamic_cast<AUD_I3DDevice*>(dev->device);
+ if(device)
+ {
+ AUD_Quaternion o = device->getSourceOrientation(self->handle);
+ return Py_BuildValue("(ffff)", o.w(), o.x(), o.y(), o.z());
+ }
+ else
+ {
+ PyErr_SetString(AUDError, device_not_3d_error);
+ }
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ }
+
+ return NULL;
+}
+
+static int
+Handle_set_orientation(Handle *self, PyObject* args, void* nothing)
+{
+ float w, x, y, z;
+
+ if(!PyArg_Parse(args, "(ffff):orientation", &w, &x, &y, &z))
+ return -1;
+
+ Device* dev = (Device*)self->device;
+
+ try
+ {
+ AUD_I3DDevice* device = dynamic_cast<AUD_I3DDevice*>(dev->device);
+ if(device)
+ {
+ AUD_Quaternion orientation(w, x, y, z);
+ if(device->setSourceOrientation(self->handle, orientation))
+ return 0;
+ PyErr_SetString(AUDError, "Couldn't set the orientation!");
+ }
+ else
+ PyErr_SetString(AUDError, device_not_3d_error);
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ }
+
+ return -1;
+}
+
+PyDoc_STRVAR(M_aud_Handle_relative_doc,
+ "Whether the source's location, velocity and orientation is relative or absolute to the listener.");
+
+static PyObject *
+Handle_get_relative(Handle *self, void* nothing)
+{
+ Device* dev = (Device*)self->device;
+
+ try
+ {
+ AUD_I3DDevice* device = dynamic_cast<AUD_I3DDevice*>(dev->device);
+ if(device)
+ {
+ if(device->isRelative(self->handle))
+ {
+ Py_RETURN_TRUE;
+ }
+ else
+ {
+ Py_RETURN_FALSE;
+ }
+ }
+ else
+ {
+ PyErr_SetString(AUDError, device_not_3d_error);
+ }
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ }
+
+ return NULL;
+}
+
+static int
+Handle_set_relative(Handle *self, PyObject* args, void* nothing)
+{
+ if(!PyBool_Check(args))
+ {
+ PyErr_SetString(PyExc_TypeError, "Value is not a boolean!");
+ return -1;
+ }
+
+ bool relative = (args == Py_True);
+ Device* dev = (Device*)self->device;
+
+ try
+ {
+ AUD_I3DDevice* device = dynamic_cast<AUD_I3DDevice*>(dev->device);
+ if(device)
+ {
+ if(device->setRelative(self->handle, relative))
+ return 0;
+ PyErr_SetString(AUDError, "Couldn't set the relativeness!");
+ }
+ else
+ PyErr_SetString(AUDError, device_not_3d_error);
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ }
+
+ return -1;
+}
+
+PyDoc_STRVAR(M_aud_Handle_volume_minimum_doc,
+ "The minimum volume of the source.\n\n"
+ ".. seealso:: :attr:`Device.distance_model`");
+
+static PyObject *
+Handle_get_volume_minimum(Handle *self, void* nothing)
+{
+ Device* dev = (Device*)self->device;
+
+ try
+ {
+ AUD_I3DDevice* device = dynamic_cast<AUD_I3DDevice*>(dev->device);
+ if(device)
+ {
+ return Py_BuildValue("f", device->getVolumeMinimum(self->handle));
+ }
+ else
+ {
+ PyErr_SetString(AUDError, device_not_3d_error);
+ return NULL;
+ }
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ return NULL;
+ }
+}
+
+static int
+Handle_set_volume_minimum(Handle *self, PyObject* args, void* nothing)
+{
+ float volume;
+
+ if(!PyArg_Parse(args, "f:volume_minimum", &volume))
+ return -1;
+
+ Device* dev = (Device*)self->device;
+
+ try
+ {
+ AUD_I3DDevice* device = dynamic_cast<AUD_I3DDevice*>(dev->device);
+ if(device)
+ {
+ if(device->setVolumeMinimum(self->handle, volume))
+ return 0;
+ PyErr_SetString(AUDError, "Couldn't set the minimum volume!");
+ }
+ else
+ PyErr_SetString(AUDError, device_not_3d_error);
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ }
+
+ return -1;
+}
+
+PyDoc_STRVAR(M_aud_Handle_volume_maximum_doc,
+ "The maximum volume of the source.\n\n"
+ ".. seealso:: :attr:`Device.distance_model`");
+
+static PyObject *
+Handle_get_volume_maximum(Handle *self, void* nothing)
+{
+ Device* dev = (Device*)self->device;
+
+ try
+ {
+ AUD_I3DDevice* device = dynamic_cast<AUD_I3DDevice*>(dev->device);
+ if(device)
+ {
+ return Py_BuildValue("f", device->getVolumeMaximum(self->handle));
+ }
+ else
+ {
+ PyErr_SetString(AUDError, device_not_3d_error);
+ return NULL;
+ }
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ return NULL;
+ }
+}
+
+static int
+Handle_set_volume_maximum(Handle *self, PyObject* args, void* nothing)
+{
+ float volume;
+
+ if(!PyArg_Parse(args, "f:volume_maximum", &volume))
+ return -1;
+
+ Device* dev = (Device*)self->device;
+
+ try
+ {
+ AUD_I3DDevice* device = dynamic_cast<AUD_I3DDevice*>(dev->device);
+ if(device)
+ {
+ if(device->setVolumeMaximum(self->handle, volume))
+ return 0;
+ PyErr_SetString(AUDError, "Couldn't set the maximum volume!");
+ }
+ else
+ PyErr_SetString(AUDError, device_not_3d_error);
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ }
+
+ return -1;
+}
+
+PyDoc_STRVAR(M_aud_Handle_distance_reference_doc,
+ "The reference distance of the source.\n"
+ "At this distance the volume will be exactly :attr:`volume`.\n\n"
+ ".. seealso:: :attr:`Device.distance_model`");
+
+static PyObject *
+Handle_get_distance_reference(Handle *self, void* nothing)
+{
+ Device* dev = (Device*)self->device;
+
+ try
+ {
+ AUD_I3DDevice* device = dynamic_cast<AUD_I3DDevice*>(dev->device);
+ if(device)
+ {
+ return Py_BuildValue("f", device->getDistanceReference(self->handle));
+ }
+ else
+ {
+ PyErr_SetString(AUDError, device_not_3d_error);
+ return NULL;
+ }
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ return NULL;
+ }
+}
+
+static int
+Handle_set_distance_reference(Handle *self, PyObject* args, void* nothing)
+{
+ float distance;
+
+ if(!PyArg_Parse(args, "f:distance_reference", &distance))
+ return -1;
+
+ Device* dev = (Device*)self->device;
+
+ try
+ {
+ AUD_I3DDevice* device = dynamic_cast<AUD_I3DDevice*>(dev->device);
+ if(device)
+ {
+ if(device->setDistanceReference(self->handle, distance))
+ return 0;
+ PyErr_SetString(AUDError, "Couldn't set the reference distance!");
+ }
+ else
+ PyErr_SetString(AUDError, device_not_3d_error);
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ }
+
+ return -1;
+}
+
+PyDoc_STRVAR(M_aud_Handle_distance_maximum_doc,
+ "The maximum distance of the source.\n"
+ "If the listener is further away the source volume will be 0.\n\n"
+ ".. seealso:: :attr:`Device.distance_model`");
+
+static PyObject *
+Handle_get_distance_maximum(Handle *self, void* nothing)
+{
+ Device* dev = (Device*)self->device;
+
+ try
+ {
+ AUD_I3DDevice* device = dynamic_cast<AUD_I3DDevice*>(dev->device);
+ if(device)
+ {
+ return Py_BuildValue("f", device->getDistanceMaximum(self->handle));
+ }
+ else
+ {
+ PyErr_SetString(AUDError, device_not_3d_error);
+ return NULL;
+ }
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ return NULL;
+ }
+}
+
+static int
+Handle_set_distance_maximum(Handle *self, PyObject* args, void* nothing)
+{
+ float distance;
+
+ if(!PyArg_Parse(args, "f:distance_maximum", &distance))
+ return -1;
+
+ Device* dev = (Device*)self->device;
+
+ try
+ {
+ AUD_I3DDevice* device = dynamic_cast<AUD_I3DDevice*>(dev->device);
+ if(device)
+ {
+ if(device->setDistanceMaximum(self->handle, distance))
+ return 0;
+ PyErr_SetString(AUDError, "Couldn't set the maximum distance!");
+ }
+ else
+ PyErr_SetString(AUDError, device_not_3d_error);
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ }
+
+ return -1;
+}
+
+PyDoc_STRVAR(M_aud_Handle_attenuation_doc,
+ "This factor is used for distance based attenuation of the "
+ "source.\n\n"
+ ".. seealso:: :attr:`Device.distance_model`");
+
+static PyObject *
+Handle_get_attenuation(Handle *self, void* nothing)
+{
+ Device* dev = (Device*)self->device;
+
+ try
+ {
+ AUD_I3DDevice* device = dynamic_cast<AUD_I3DDevice*>(dev->device);
+ if(device)
+ {
+ return Py_BuildValue("f", device->getAttenuation(self->handle));
+ }
+ else
+ {
+ PyErr_SetString(AUDError, device_not_3d_error);
+ return NULL;
+ }
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ return NULL;
+ }
+}
+
+static int
+Handle_set_attenuation(Handle *self, PyObject* args, void* nothing)
+{
+ float factor;
+
+ if(!PyArg_Parse(args, "f:attenuation", &factor))
+ return -1;
+
+ Device* dev = (Device*)self->device;
+
+ try
+ {
+ AUD_I3DDevice* device = dynamic_cast<AUD_I3DDevice*>(dev->device);
+ if(device)
+ {
+ if(device->setAttenuation(self->handle, factor))
+ return 0;
+ PyErr_SetString(AUDError, "Couldn't set the attenuation!");
+ }
+ else
+ PyErr_SetString(AUDError, device_not_3d_error);
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ }
+
+ return -1;
+}
+
+PyDoc_STRVAR(M_aud_Handle_cone_angle_inner_doc,
+ "The opening angle of the inner cone of the source. If the cone "
+ "values of a source are set there are two (audible) cones with "
+ "the apex at the :attr:`location` of the source and with infinite "
+ "height, heading in the direction of the source's "
+ ":attr:`orientation`.\n"
+ "In the inner cone the volume is normal. Outside the outer cone "
+ "the volume will be :attr:`cone_volume_outer` and in the area "
+ "between the volume will be interpolated linearly.");
+
+static PyObject *
+Handle_get_cone_angle_inner(Handle *self, void* nothing)
+{
+ Device* dev = (Device*)self->device;
+
+ try
+ {
+ AUD_I3DDevice* device = dynamic_cast<AUD_I3DDevice*>(dev->device);
+ if(device)
+ {
+ return Py_BuildValue("f", device->getConeAngleInner(self->handle));
+ }
+ else
+ {
+ PyErr_SetString(AUDError, device_not_3d_error);
+ return NULL;
+ }
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ return NULL;
+ }
+}
+
+static int
+Handle_set_cone_angle_inner(Handle *self, PyObject* args, void* nothing)
+{
+ float angle;
+
+ if(!PyArg_Parse(args, "f:cone_angle_inner", &angle))
+ return -1;
+
+ Device* dev = (Device*)self->device;
+
+ try
+ {
+ AUD_I3DDevice* device = dynamic_cast<AUD_I3DDevice*>(dev->device);
+ if(device)
+ {
+ if(device->setConeAngleInner(self->handle, angle))
+ return 0;
+ PyErr_SetString(AUDError, "Couldn't set the cone inner angle!");
+ }
+ else
+ PyErr_SetString(AUDError, device_not_3d_error);
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ }
+
+ return -1;
+}
+
+PyDoc_STRVAR(M_aud_Handle_cone_angle_outer_doc,
+ "The opening angle of the outer cone of the source.\n\n"
+ ".. seealso:: :attr:`cone_angle_inner`");
+
+static PyObject *
+Handle_get_cone_angle_outer(Handle *self, void* nothing)
+{
+ Device* dev = (Device*)self->device;
+
+ try
+ {
+ AUD_I3DDevice* device = dynamic_cast<AUD_I3DDevice*>(dev->device);
+ if(device)
+ {
+ return Py_BuildValue("f", device->getConeAngleOuter(self->handle));
+ }
+ else
+ {
+ PyErr_SetString(AUDError, device_not_3d_error);
+ return NULL;
+ }
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ return NULL;
+ }
+}
+
+static int
+Handle_set_cone_angle_outer(Handle *self, PyObject* args, void* nothing)
+{
+ float angle;
+
+ if(!PyArg_Parse(args, "f:cone_angle_outer", &angle))
+ return -1;
+
+ Device* dev = (Device*)self->device;
+
+ try
+ {
+ AUD_I3DDevice* device = dynamic_cast<AUD_I3DDevice*>(dev->device);
+ if(device)
+ {
+ if(device->setConeAngleOuter(self->handle, angle))
+ return 0;
+ PyErr_SetString(AUDError, "Couldn't set the cone outer angle!");
+ }
+ else
+ PyErr_SetString(AUDError, device_not_3d_error);
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ }
+
+ return -1;
+}
+
+PyDoc_STRVAR(M_aud_Handle_cone_volume_outer_doc,
+ "The volume outside the outer cone of the source.\n\n"
+ ".. seealso:: :attr:`cone_angle_inner`");
+
+static PyObject *
+Handle_get_cone_volume_outer(Handle *self, void* nothing)
+{
+ Device* dev = (Device*)self->device;
+
+ try
+ {
+ AUD_I3DDevice* device = dynamic_cast<AUD_I3DDevice*>(dev->device);
+ if(device)
+ {
+ return Py_BuildValue("f", device->getConeVolumeOuter(self->handle));
+ }
+ else
+ {
+ PyErr_SetString(AUDError, device_not_3d_error);
+ return NULL;
+ }
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ return NULL;
+ }
+}
+
+static int
+Handle_set_cone_volume_outer(Handle *self, PyObject* args, void* nothing)
+{
+ float volume;
+
+ if(!PyArg_Parse(args, "f:cone_volume_outer", &volume))
+ return -1;
+
+ Device* dev = (Device*)self->device;
+
+ try
+ {
+ AUD_I3DDevice* device = dynamic_cast<AUD_I3DDevice*>(dev->device);
+ if(device)
+ {
+ if(device->setConeVolumeOuter(self->handle, volume))
+ return 0;
+ PyErr_SetString(AUDError, "Couldn't set the cone outer volume!");
+ }
+ else
+ PyErr_SetString(AUDError, device_not_3d_error);
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ }
+
+ return -1;
+}
+
+static PyGetSetDef Handle_properties[] = {
+ {(char*)"position", (getter)Handle_get_position, (setter)Handle_set_position,
+ M_aud_Handle_position_doc, NULL },
+ {(char*)"keep", (getter)Handle_get_keep, (setter)Handle_set_keep,
+ M_aud_Handle_keep_doc, NULL },
+ {(char*)"status", (getter)Handle_get_status, NULL,
+ M_aud_Handle_status_doc, NULL },
+ {(char*)"volume", (getter)Handle_get_volume, (setter)Handle_set_volume,
+ M_aud_Handle_volume_doc, NULL },
+ {(char*)"pitch", (getter)Handle_get_pitch, (setter)Handle_set_pitch,
+ M_aud_Handle_pitch_doc, NULL },
+ {(char*)"loop_count", (getter)Handle_get_loop_count, (setter)Handle_set_loop_count,
+ M_aud_Handle_loop_count_doc, NULL },
+ {(char*)"location", (getter)Handle_get_location, (setter)Handle_set_location,
+ M_aud_Handle_location_doc, NULL },
+ {(char*)"velocity", (getter)Handle_get_velocity, (setter)Handle_set_velocity,
+ M_aud_Handle_velocity_doc, NULL },
+ {(char*)"orientation", (getter)Handle_get_orientation, (setter)Handle_set_orientation,
+ M_aud_Handle_orientation_doc, NULL },
+ {(char*)"relative", (getter)Handle_get_relative, (setter)Handle_set_relative,
+ M_aud_Handle_relative_doc, NULL },
+ {(char*)"volume_minimum", (getter)Handle_get_volume_minimum, (setter)Handle_set_volume_minimum,
+ M_aud_Handle_volume_minimum_doc, NULL },
+ {(char*)"volume_maximum", (getter)Handle_get_volume_maximum, (setter)Handle_set_volume_maximum,
+ M_aud_Handle_volume_maximum_doc, NULL },
+ {(char*)"distance_reference", (getter)Handle_get_distance_reference, (setter)Handle_set_distance_reference,
+ M_aud_Handle_distance_reference_doc, NULL },
+ {(char*)"distance_maximum", (getter)Handle_get_distance_maximum, (setter)Handle_set_distance_maximum,
+ M_aud_Handle_distance_maximum_doc, NULL },
+ {(char*)"attenuation", (getter)Handle_get_attenuation, (setter)Handle_set_attenuation,
+ M_aud_Handle_attenuation_doc, NULL },
+ {(char*)"cone_angle_inner", (getter)Handle_get_cone_angle_inner, (setter)Handle_set_cone_angle_inner,
+ M_aud_Handle_cone_angle_inner_doc, NULL },
+ {(char*)"cone_angle_outer", (getter)Handle_get_cone_angle_outer, (setter)Handle_set_cone_angle_outer,
+ M_aud_Handle_cone_angle_outer_doc, NULL },
+ {(char*)"cone_volume_outer", (getter)Handle_get_cone_volume_outer, (setter)Handle_set_cone_volume_outer,
+ M_aud_Handle_cone_volume_outer_doc, NULL },
+ {NULL} /* Sentinel */
+};
+
+PyDoc_STRVAR(M_aud_Handle_doc,
+ "Handle objects are playback handles that can be used to control "
+ "playback of a sound. If a sound is played back multiple times "
+ "then there are as many handles.");
+
+static PyTypeObject HandleType = {
+ PyVarObject_HEAD_INIT(NULL, 0)
+ "aud.Handle", /* tp_name */
+ sizeof(Handle), /* tp_basicsize */
+ 0, /* tp_itemsize */
+ (destructor)Handle_dealloc,/* tp_dealloc */
+ 0, /* tp_print */
+ 0, /* tp_getattr */
+ 0, /* tp_setattr */
+ 0, /* tp_reserved */
+ 0, /* tp_repr */
+ 0, /* tp_as_number */
+ 0, /* tp_as_sequence */
+ 0, /* tp_as_mapping */
+ 0, /* tp_hash */
+ 0, /* tp_call */
+ 0, /* tp_str */
+ 0, /* tp_getattro */
+ 0, /* tp_setattro */
+ 0, /* tp_as_buffer */
+ Py_TPFLAGS_DEFAULT, /* tp_flags */
+ M_aud_Handle_doc, /* tp_doc */
+ 0, /* tp_traverse */
+ 0, /* tp_clear */
+ 0, /* tp_richcompare */
+ 0, /* tp_weaklistoffset */
+ 0, /* tp_iter */
+ 0, /* tp_iternext */
+ Handle_methods, /* tp_methods */
+ 0, /* tp_members */
+ Handle_properties, /* tp_getset */
+ 0, /* tp_base */
+ 0, /* tp_dict */
+ 0, /* tp_descr_get */
+ 0, /* tp_descr_set */
+ 0, /* tp_dictoffset */
+ 0, /* tp_init */
+ 0, /* tp_alloc */
+ 0, /* tp_new */
+};
+
+// ========== Device ==================================================
+
+static void
+Device_dealloc(Device* self)
+{
+ if(self->device)
+ delete self->device;
+ Py_TYPE(self)->tp_free((PyObject*)self);
+}
+
+static PyObject *
+Device_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
+{
+ Device *self;
+
+ static const char *kwlist[] = {"type", "rate", "channels", "format", "buffer_size", "name", NULL};
+ int device;
+ int rate = AUD_RATE_44100;
+ int channels = AUD_CHANNELS_STEREO;
+ int format = AUD_FORMAT_FLOAT32;
+ int buffersize = AUD_DEFAULT_BUFFER_SIZE;
+ const char* name = "Audaspace";
+
+ if(!PyArg_ParseTupleAndKeywords(args, kwds, "i|iiiis:Device", const_cast<char**>(kwlist),
+ &device, &rate, &channels, &format, &buffersize, &name))
+ return NULL;
+
+ if(buffersize < 128)
+ {
+ PyErr_SetString(PyExc_ValueError, "buffer_size must be greater than 127!");
+ return NULL;
+ }
+
+ self = (Device*)type->tp_alloc(type, 0);
+ if(self != NULL)
+ {
+ AUD_DeviceSpecs specs;
+ specs.channels = (AUD_Channels)channels;
+ specs.format = (AUD_SampleFormat)format;
+ specs.rate = (AUD_SampleRate)rate;
+
+ self->device = NULL;
+
+ try
+ {
+ switch(device)
+ {
+ case AUD_DEVICE_NULL:
+ self->device = new AUD_NULLDevice();
+ break;
+ case AUD_DEVICE_OPENAL:
+#ifdef WITH_OPENAL
+ self->device = new AUD_OpenALDevice(specs, buffersize);
+#endif
+ break;
+ case AUD_DEVICE_SDL:
+#ifdef WITH_SDL
+ self->device = new AUD_SDLDevice(specs, buffersize);
+#endif
+ break;
+ case AUD_DEVICE_JACK:
+#ifdef WITH_JACK
+ self->device = new AUD_JackDevice(name, specs, buffersize);
+#endif
+ break;
+ case AUD_DEVICE_READ:
+ break;
+ }
+
+ }
+ catch(AUD_Exception& e)
+ {
+ Py_DECREF(self);
+ PyErr_SetString(AUDError, e.str);
+ return NULL;
+ }
+
+ if(!self->device)
+ {
+ Py_DECREF(self);
+ PyErr_SetString(AUDError, "Unsupported device type!");
+ return NULL;
+ }
+ }
+
+ return (PyObject *)self;
+}
+
+PyDoc_STRVAR(M_aud_Device_play_doc,
+ "play(factory, keep=False)\n\n"
+ "Plays a factory.\n\n"
+ ":arg factory: The factory to play.\n"
+ ":type factory: :class:`Factory`\n"
+ ":arg keep: See :attr:`Handle.keep`.\n"
+ ":type keep: bool\n"
+ ":return: The playback handle with which playback can be "
+ "controlled with.\n"
+ ":rtype: :class:`Handle`");
+
+static PyObject *
+Device_play(Device *self, PyObject *args, PyObject *kwds)
+{
+ PyObject* object;
+ PyObject* keepo = NULL;
+
+ bool keep = false;
+
+ static const char *kwlist[] = {"factory", "keep", NULL};
+
+ if(!PyArg_ParseTupleAndKeywords(args, kwds, "O|O:play", const_cast<char**>(kwlist), &object, &keepo))
+ return NULL;
+
+ if(!PyObject_TypeCheck(object, &FactoryType))
+ {
+ PyErr_SetString(PyExc_TypeError, "Object is not of type Factory!");
+ return NULL;
+ }
+
+ if(keepo != NULL)
+ {
+ if(!PyBool_Check(keepo))
+ {
+ PyErr_SetString(PyExc_TypeError, "keep is not a boolean!");
+ return NULL;
+ }
+
+ keep = keepo == Py_True;
+ }
+
+ Factory* sound = (Factory*)object;
+ Handle *handle;
+
+ handle = (Handle*)HandleType.tp_alloc(&HandleType, 0);
+ if(handle != NULL)
+ {
+ handle->device = (PyObject*)self;
+ Py_INCREF(self);
+
+ try
+ {
+ handle->handle = self->device->play(sound->factory, keep);
+ }
+ catch(AUD_Exception& e)
+ {
+ Py_DECREF(handle);
+ PyErr_SetString(AUDError, e.str);
+ return NULL;
+ }
+ }
+
+ return (PyObject *)handle;
+}
+
+PyDoc_STRVAR(M_aud_Device_lock_doc,
+ "lock()\n\n"
+ "Locks the device so that it's guaranteed, that no samples are "
+ "read from the streams until :meth:`unlock` is called.\n"
+ "This is useful if you want to do start/stop/pause/resume some "
+ "sounds at the same time.\n\n"
+ ".. note:: The device has to be unlocked as often as locked to be "
+ "able to continue playback.\n\n"
+ ".. warning:: Make sure the time between locking and unlocking is "
+ "as short as possible to avoid clicks.");
+
+static PyObject *
+Device_lock(Device *self)
+{
+ try
+ {
+ self->device->lock();
+ Py_RETURN_NONE;
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ return NULL;
+ }
+}
+
+PyDoc_STRVAR(M_aud_Device_unlock_doc,
+ "unlock()\n\n"
+ "Unlocks the device after a lock call, see :meth:`lock` for "
+ "details.");
+
+static PyObject *
+Device_unlock(Device *self)
+{
+ try
+ {
+ self->device->unlock();
+ Py_RETURN_NONE;
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ return NULL;
+ }
+}
+
+static PyMethodDef Device_methods[] = {
+ {"play", (PyCFunction)Device_play, METH_VARARGS | METH_KEYWORDS,
+ M_aud_Device_play_doc
+ },
+ {"lock", (PyCFunction)Device_lock, METH_NOARGS,
+ M_aud_Device_lock_doc
+ },
+ {"unlock", (PyCFunction)Device_unlock, METH_NOARGS,
+ M_aud_Device_unlock_doc
+ },
+ {NULL} /* Sentinel */
+};
+
+PyDoc_STRVAR(M_aud_Device_rate_doc,
+ "The sampling rate of the device in Hz.");
+
+static PyObject *
+Device_get_rate(Device *self, void* nothing)
+{
+ try
+ {
+ AUD_DeviceSpecs specs = self->device->getSpecs();
+ return Py_BuildValue("i", specs.rate);
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ return NULL;
+ }
+}
+
+PyDoc_STRVAR(M_aud_Device_format_doc,
+ "The native sample format of the device.");
+
+static PyObject *
+Device_get_format(Device *self, void* nothing)
+{
+ try
+ {
+ AUD_DeviceSpecs specs = self->device->getSpecs();
+ return Py_BuildValue("i", specs.format);
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ return NULL;
+ }
+}
+
+PyDoc_STRVAR(M_aud_Device_channels_doc,
+ "The channel count of the device.");
+
+static PyObject *
+Device_get_channels(Device *self, void* nothing)
+{
+ try
+ {
+ AUD_DeviceSpecs specs = self->device->getSpecs();
+ return Py_BuildValue("i", specs.channels);
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ return NULL;
+ }
+}
+
+PyDoc_STRVAR(M_aud_Device_volume_doc,
+ "The overall volume of the device.");
+
+static PyObject *
+Device_get_volume(Device *self, void* nothing)
+{
+ try
+ {
+ return Py_BuildValue("f", self->device->getVolume());
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ return NULL;
+ }
+}
+
+static int
+Device_set_volume(Device *self, PyObject* args, void* nothing)
+{
+ float volume;
+
+ if(!PyArg_Parse(args, "f:volume", &volume))
+ return -1;
+
+ try
+ {
+ self->device->setVolume(volume);
+ return 0;
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ return -1;
+ }
+}
+
+PyDoc_STRVAR(M_aud_Device_listener_location_doc,
+ "The listeners's location in 3D space, a 3D tuple of floats.");
+
+static PyObject *
+Device_get_listener_location(Device *self, void* nothing)
+{
+ try
+ {
+ AUD_I3DDevice* device = dynamic_cast<AUD_I3DDevice*>(self->device);
+ if(device)
+ {
+ AUD_Vector3 v = device->getListenerLocation();
+ return Py_BuildValue("(fff)", v.x(), v.y(), v.z());
+ }
+ else
+ {
+ PyErr_SetString(AUDError, device_not_3d_error);
+ }
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ }
+
+ return NULL;
+}
+
+static int
+Device_set_listener_location(Device *self, PyObject* args, void* nothing)
+{
+ float x, y, z;
+
+ if(!PyArg_Parse(args, "(fff):listener_location", &x, &y, &z))
+ return -1;
+
+ try
+ {
+ AUD_I3DDevice* device = dynamic_cast<AUD_I3DDevice*>(self->device);
+ if(device)
+ {
+ AUD_Vector3 location(x, y, z);
+ device->setListenerLocation(location);
+ return 0;
+ }
+ else
+ PyErr_SetString(AUDError, device_not_3d_error);
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ }
+
+ return -1;
+}
+
+PyDoc_STRVAR(M_aud_Device_listener_velocity_doc,
+ "The listener's velocity in 3D space, a 3D tuple of floats.");
+
+static PyObject *
+Device_get_listener_velocity(Device *self, void* nothing)
+{
+ try
+ {
+ AUD_I3DDevice* device = dynamic_cast<AUD_I3DDevice*>(self->device);
+ if(device)
+ {
+ AUD_Vector3 v = device->getListenerVelocity();
+ return Py_BuildValue("(fff)", v.x(), v.y(), v.z());
+ }
+ else
+ {
+ PyErr_SetString(AUDError, device_not_3d_error);
+ }
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ }
+
+ return NULL;
+}
+
+static int
+Device_set_listener_velocity(Device *self, PyObject* args, void* nothing)
+{
+ float x, y, z;
+
+ if(!PyArg_Parse(args, "(fff):listener_velocity", &x, &y, &z))
+ return -1;
+
+ try
+ {
+ AUD_I3DDevice* device = dynamic_cast<AUD_I3DDevice*>(self->device);
+ if(device)
+ {
+ AUD_Vector3 velocity(x, y, z);
+ device->setListenerVelocity(velocity);
+ return 0;
+ }
+ else
+ PyErr_SetString(AUDError, device_not_3d_error);
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ }
+
+ return -1;
+}
+
+PyDoc_STRVAR(M_aud_Device_listener_orientation_doc,
+ "The listener's orientation in 3D space as quaternion, a 4 float tuple.");
+
+static PyObject *
+Device_get_listener_orientation(Device *self, void* nothing)
+{
+ try
+ {
+ AUD_I3DDevice* device = dynamic_cast<AUD_I3DDevice*>(self->device);
+ if(device)
+ {
+ AUD_Quaternion o = device->getListenerOrientation();
+ return Py_BuildValue("(ffff)", o.w(), o.x(), o.y(), o.z());
+ }
+ else
+ {
+ PyErr_SetString(AUDError, device_not_3d_error);
+ }
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ }
+
+ return NULL;
+}
+
+static int
+Device_set_listener_orientation(Device *self, PyObject* args, void* nothing)
+{
+ float w, x, y, z;
+
+ if(!PyArg_Parse(args, "(ffff):listener_orientation", &w, &x, &y, &z))
+ return -1;
+
+ try
+ {
+ AUD_I3DDevice* device = dynamic_cast<AUD_I3DDevice*>(self->device);
+ if(device)
+ {
+ AUD_Quaternion orientation(w, x, y, z);
+ device->setListenerOrientation(orientation);
+ return 0;
+ }
+ else
+ PyErr_SetString(AUDError, device_not_3d_error);
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ }
+
+ return -1;
+}
+
+PyDoc_STRVAR(M_aud_Device_speed_of_sound_doc,
+ "The speed of sound of the device.\n"
+ "The speed of sound in air is typically 343 m/s.");
+
+static PyObject *
+Device_get_speed_of_sound(Device *self, void* nothing)
+{
+ try
+ {
+ AUD_I3DDevice* device = dynamic_cast<AUD_I3DDevice*>(self->device);
+ if(device)
+ {
+ return Py_BuildValue("f", device->getSpeedOfSound());
+ }
+ else
+ {
+ PyErr_SetString(AUDError, device_not_3d_error);
+ return NULL;
+ }
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ return NULL;
+ }
+}
+
+static int
+Device_set_speed_of_sound(Device *self, PyObject* args, void* nothing)
+{
+ float speed;
+
+ if(!PyArg_Parse(args, "f:speed_of_sound", &speed))
+ return -1;
+
+ try
+ {
+ AUD_I3DDevice* device = dynamic_cast<AUD_I3DDevice*>(self->device);
+ if(device)
+ {
+ device->setSpeedOfSound(speed);
+ return 0;
+ }
+ else
+ PyErr_SetString(AUDError, device_not_3d_error);
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ }
+
+ return -1;
+}
+
+PyDoc_STRVAR(M_aud_Device_doppler_factor_doc,
+ "The doppler factor of the device.\n"
+ "This factor is a scaling factor for the velocity vectors in "
+ "doppler calculation. So a value bigger than 1 will exaggerate "
+ "the effect as it raises the velocity.");
+
+static PyObject *
+Device_get_doppler_factor(Device *self, void* nothing)
+{
+ try
+ {
+ AUD_I3DDevice* device = dynamic_cast<AUD_I3DDevice*>(self->device);
+ if(device)
+ {
+ return Py_BuildValue("f", device->getDopplerFactor());
+ }
+ else
+ {
+ PyErr_SetString(AUDError, device_not_3d_error);
+ return NULL;
+ }
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ return NULL;
+ }
+}
+
+static int
+Device_set_doppler_factor(Device *self, PyObject* args, void* nothing)
+{
+ float factor;
+
+ if(!PyArg_Parse(args, "f:doppler_factor", &factor))
+ return -1;
+
+ try
+ {
+ AUD_I3DDevice* device = dynamic_cast<AUD_I3DDevice*>(self->device);
+ if(device)
+ {
+ device->setDopplerFactor(factor);
+ return 0;
+ }
+ else
+ PyErr_SetString(AUDError, device_not_3d_error);
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ }
+
+ return -1;
+}
+
+PyDoc_STRVAR(M_aud_Device_distance_model_doc,
+ "The distance model of the device.\n\n"
+ ".. seealso:: http://connect.creativelabs.com/openal/Documentation/OpenAL%201.1%20Specification.htm#_Toc199835864");
+
+static PyObject *
+Device_get_distance_model(Device *self, void* nothing)
+{
+ try
+ {
+ AUD_I3DDevice* device = dynamic_cast<AUD_I3DDevice*>(self->device);
+ if(device)
+ {
+ return Py_BuildValue("i", int(device->getDistanceModel()));
+ }
+ else
+ {
+ PyErr_SetString(AUDError, device_not_3d_error);
+ return NULL;
+ }
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ return NULL;
+ }
+}
+
+static int
+Device_set_distance_model(Device *self, PyObject* args, void* nothing)
+{
+ int model;
+
+ if(!PyArg_Parse(args, "i:distance_model", &model))
+ return -1;
+
+ try
+ {
+ AUD_I3DDevice* device = dynamic_cast<AUD_I3DDevice*>(self->device);
+ if(device)
+ {
+ device->setDistanceModel(AUD_DistanceModel(model));
+ return 0;
+ }
+ else
+ PyErr_SetString(AUDError, device_not_3d_error);
+ }
+ catch(AUD_Exception& e)
+ {
+ PyErr_SetString(AUDError, e.str);
+ }
+
+ return -1;
+}
+
+static PyGetSetDef Device_properties[] = {
+ {(char*)"rate", (getter)Device_get_rate, NULL,
+ M_aud_Device_rate_doc, NULL },
+ {(char*)"format", (getter)Device_get_format, NULL,
+ M_aud_Device_format_doc, NULL },
+ {(char*)"channels", (getter)Device_get_channels, NULL,
+ M_aud_Device_channels_doc, NULL },
+ {(char*)"volume", (getter)Device_get_volume, (setter)Device_set_volume,
+ M_aud_Device_volume_doc, NULL },
+ {(char*)"listener_location", (getter)Device_get_listener_location, (setter)Device_set_listener_location,
+ M_aud_Device_listener_location_doc, NULL },
+ {(char*)"listener_velocity", (getter)Device_get_listener_velocity, (setter)Device_set_listener_velocity,
+ M_aud_Device_listener_velocity_doc, NULL },
+ {(char*)"listener_orientation", (getter)Device_get_listener_orientation, (setter)Device_set_listener_orientation,
+ M_aud_Device_listener_orientation_doc, NULL },
+ {(char*)"speed_of_sound", (getter)Device_get_speed_of_sound, (setter)Device_set_speed_of_sound,
+ M_aud_Device_speed_of_sound_doc, NULL },
+ {(char*)"doppler_factor", (getter)Device_get_doppler_factor, (setter)Device_set_doppler_factor,
+ M_aud_Device_doppler_factor_doc, NULL },
+ {(char*)"distance_model", (getter)Device_get_distance_model, (setter)Device_set_distance_model,
+ M_aud_Device_distance_model_doc, NULL },
+ {NULL} /* Sentinel */
+};
+
+PyDoc_STRVAR(M_aud_Device_doc,
+ "Device objects represent an audio output backend like OpenAL or "
+ "SDL, but might also represent a file output or RAM buffer "
+ "output.");
+
+static PyTypeObject DeviceType = {
+ PyVarObject_HEAD_INIT(NULL, 0)
+ "aud.Device", /* tp_name */
+ sizeof(Device), /* tp_basicsize */
+ 0, /* tp_itemsize */
+ (destructor)Device_dealloc,/* tp_dealloc */
+ 0, /* tp_print */
+ 0, /* tp_getattr */
+ 0, /* tp_setattr */
+ 0, /* tp_reserved */
+ 0, /* tp_repr */
+ 0, /* tp_as_number */
+ 0, /* tp_as_sequence */
+ 0, /* tp_as_mapping */
+ 0, /* tp_hash */
+ 0, /* tp_call */
+ 0, /* tp_str */
+ 0, /* tp_getattro */
+ 0, /* tp_setattro */
+ 0, /* tp_as_buffer */
+ Py_TPFLAGS_DEFAULT, /* tp_flags */
+ M_aud_Device_doc, /* tp_doc */
+ 0, /* tp_traverse */
+ 0, /* tp_clear */
+ 0, /* tp_richcompare */
+ 0, /* tp_weaklistoffset */
+ 0, /* tp_iter */
+ 0, /* tp_iternext */
+ Device_methods, /* tp_methods */
+ 0, /* tp_members */
+ Device_properties, /* tp_getset */
+ 0, /* tp_base */
+ 0, /* tp_dict */
+ 0, /* tp_descr_get */
+ 0, /* tp_descr_set */
+ 0, /* tp_dictoffset */
+ 0, /* tp_init */
+ 0, /* tp_alloc */
+ Device_new, /* tp_new */
+};
+
+PyObject *
+Device_empty()
+{
+ return DeviceType.tp_alloc(&DeviceType, 0);
+}
+
+// ====================================================================
+
+PyDoc_STRVAR(M_aud_doc,
+ "This module provides access to the audaspace audio library.");
+
+static struct PyModuleDef audmodule = {
+ PyModuleDef_HEAD_INIT,
+ "aud", /* name of module */
+ M_aud_doc, /* module documentation */
+ -1, /* size of per-interpreter state of the module,
+ or -1 if the module keeps state in global variables. */
+ NULL, NULL, NULL, NULL, NULL
+};
+
+PyMODINIT_FUNC
+PyInit_aud(void)
+{
+ PyObject* m;
+
+ if(PyType_Ready(&FactoryType) < 0)
+ return NULL;
+
+ if(PyType_Ready(&DeviceType) < 0)
+ return NULL;
+
+ if(PyType_Ready(&HandleType) < 0)
+ return NULL;
+
+ m = PyModule_Create(&audmodule);
+ if(m == NULL)
+ return NULL;
+
+ Py_INCREF(&FactoryType);
+ PyModule_AddObject(m, "Factory", (PyObject*)&FactoryType);
+
+ Py_INCREF(&DeviceType);
+ PyModule_AddObject(m, "Device", (PyObject*)&DeviceType);
+
+ Py_INCREF(&HandleType);
+ PyModule_AddObject(m, "Handle", (PyObject*)&HandleType);
+
+ AUDError = PyErr_NewException("aud.error", NULL, NULL);
+ Py_INCREF(AUDError);
+ PyModule_AddObject(m, "error", AUDError);
+
+ // device constants
+ PY_MODULE_ADD_CONSTANT(m, AUD_DEVICE_NULL);
+ PY_MODULE_ADD_CONSTANT(m, AUD_DEVICE_OPENAL);
+ PY_MODULE_ADD_CONSTANT(m, AUD_DEVICE_SDL);
+ PY_MODULE_ADD_CONSTANT(m, AUD_DEVICE_JACK);
+ //PY_MODULE_ADD_CONSTANT(m, AUD_DEVICE_READ);
+ // format constants
+ PY_MODULE_ADD_CONSTANT(m, AUD_FORMAT_FLOAT32);
+ PY_MODULE_ADD_CONSTANT(m, AUD_FORMAT_FLOAT64);
+ PY_MODULE_ADD_CONSTANT(m, AUD_FORMAT_INVALID);
+ PY_MODULE_ADD_CONSTANT(m, AUD_FORMAT_S16);
+ PY_MODULE_ADD_CONSTANT(m, AUD_FORMAT_S24);
+ PY_MODULE_ADD_CONSTANT(m, AUD_FORMAT_S32);
+ PY_MODULE_ADD_CONSTANT(m, AUD_FORMAT_U8);
+ // status constants
+ PY_MODULE_ADD_CONSTANT(m, AUD_STATUS_INVALID);
+ PY_MODULE_ADD_CONSTANT(m, AUD_STATUS_PAUSED);
+ PY_MODULE_ADD_CONSTANT(m, AUD_STATUS_PLAYING);
+ // distance model constants
+ PY_MODULE_ADD_CONSTANT(m, AUD_DISTANCE_MODEL_EXPONENT);
+ PY_MODULE_ADD_CONSTANT(m, AUD_DISTANCE_MODEL_EXPONENT_CLAMPED);
+ PY_MODULE_ADD_CONSTANT(m, AUD_DISTANCE_MODEL_INVERSE);
+ PY_MODULE_ADD_CONSTANT(m, AUD_DISTANCE_MODEL_INVERSE_CLAMPED);
+ PY_MODULE_ADD_CONSTANT(m, AUD_DISTANCE_MODEL_LINEAR);
+ PY_MODULE_ADD_CONSTANT(m, AUD_DISTANCE_MODEL_LINEAR_CLAMPED);
+ PY_MODULE_ADD_CONSTANT(m, AUD_DISTANCE_MODEL_INVALID);
+
+ return m;
+}
diff --git a/intern/audaspace/Python/AUD_PyAPI.h b/intern/audaspace/Python/AUD_PyAPI.h
new file mode 100644
index 00000000000..aeeaf94af9d
--- /dev/null
+++ b/intern/audaspace/Python/AUD_PyAPI.h
@@ -0,0 +1,67 @@
+/*
+ * $Id$
+ *
+ * ***** BEGIN LGPL LICENSE BLOCK *****
+ *
+ * Copyright 2009 Jörg Hermann Müller
+ *
+ * This file is part of AudaSpace.
+ *
+ * AudaSpace is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * AudaSpace is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with AudaSpace. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * ***** END LGPL LICENSE BLOCK *****
+ */
+
+#ifndef AUD_PYAPI
+#define AUD_PYAPI
+
+#include "Python.h"
+
+#ifdef __cplusplus
+extern "C" {
+#include "AUD_IDevice.h"
+#else
+typedef void AUD_IFactory;
+typedef void AUD_IDevice;
+typedef void AUD_Handle;
+#endif
+
+typedef struct {
+ PyObject_HEAD
+ PyObject* child_list;
+ AUD_IFactory* factory;
+} Factory;
+
+typedef struct {
+ PyObject_HEAD
+ AUD_Handle* handle;
+ PyObject* device;
+} Handle;
+
+typedef struct {
+ PyObject_HEAD
+ AUD_IDevice* device;
+} Device;
+
+PyMODINIT_FUNC
+PyInit_aud(void);
+
+extern PyObject *
+Device_empty();
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif //AUD_PYAPI
diff --git a/intern/audaspace/Python/Makefile b/intern/audaspace/Python/Makefile
new file mode 100644
index 00000000000..a66f86549f5
--- /dev/null
+++ b/intern/audaspace/Python/Makefile
@@ -0,0 +1,76 @@
+# -*- mode: gnumakefile; tab-width: 8; indent-tabs-mode: t; -*-
+# vim: tabstop=8
+#
+# $Id$
+#
+# ***** BEGIN GPL LICENSE BLOCK *****
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# The Original Code is Copyright (C) 2010 by Blender Foundation
+# All rights reserved.
+#
+# The Original Code is: all of this file.
+#
+# Contributor(s): Ton
+#
+# ***** END GPL LICENSE BLOCK *****
+#
+#
+
+LIBNAME = aud_python
+DIR = $(OCGDIR)/intern/audaspace
+
+include nan_compile.mk
+
+CCFLAGS += $(LEVEL_1_CPP_WARNINGS)
+
+CPPFLAGS += -I$(NAN_PYTHON)/include/python$(NAN_PYTHON_VERSION)
+
+ifeq ($(WITH_SDL),true)
+ CPPFLAGS += -DWITH_SDL
+ CPPFLAGS += $(NAN_SDLCFLAGS)
+endif
+
+ifeq ($(WITH_OPENAL),true)
+ CPPFLAGS += -DWITH_OPENAL
+ CPPFLAGS += -I../OpenAL
+endif
+
+ifeq ($(WITH_JACK),true)
+ CPPFLAGS += -DWITH_JACK
+ CPPFLAGS += $(NAN_JACKCFLAGS)
+ CPPFLAGS += -I../jack
+endif
+
+ifeq ($(WITH_FFMPEG),true)
+ CPPFLAGS += -DWITH_FFMPEG
+ CPPFLAGS += $(NAN_FFMPEGCFLAGS)
+endif
+
+ifeq ($(WITH_SNDFILE),true)
+ CPPFLAGS += -DWITH_SNDFILE
+ CPPFLAGS += -I../sndfile
+ CPPFLAGS += -I$(NAN_SNDFILE)/include
+endif
+
+CPPFLAGS += -I$(NAN_SAMPLERATE)/include/
+CPPFLAGS += -I../ffmpeg
+CPPFLAGS += -I../FX
+CPPFLAGS += -I../SDL
+CPPFLAGS += -I../SRC
+CPPFLAGS += -I../intern
+CPPFLAGS += -I..
+CPPFLAGS += -I.
diff --git a/intern/audaspace/SConscript b/intern/audaspace/SConscript
index bbd2442c480..9b9862d15a2 100644
--- a/intern/audaspace/SConscript
+++ b/intern/audaspace/SConscript
@@ -31,10 +31,16 @@ if env['WITH_BF_SNDFILE']:
incs += ' sndfile ' + env['BF_SNDFILE_INC']
defs.append('WITH_SNDFILE')
-if env['WITH_BF_FFTW3']:
- sources += env.Glob('fftw/*.cpp')
- incs += ' fftw ' + env['BF_FFTW3_INC']
- defs.append('WITH_FFTW3')
+#if env['WITH_BF_FFTW3']:
+# sources += env.Glob('fftw/*.cpp')
+# incs += ' fftw ' + env['BF_FFTW3_INC']
+# defs.append('WITH_FFTW3')
+
+if env['WITH_BF_PYTHON']:
+ sources += env.Glob('Python/*.cpp')
+ incs += ' Python ' + env['BF_PYTHON_INC']
+else:
+ defs.append('DISABLE_PYTHON')
if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'):
incs += ' ' + env['BF_PTHREADS_INC']
diff --git a/intern/audaspace/SDL/AUD_SDLDevice.cpp b/intern/audaspace/SDL/AUD_SDLDevice.cpp
index 1a385af8a0c..c1eb7bdf61e 100644
--- a/intern/audaspace/SDL/AUD_SDLDevice.cpp
+++ b/intern/audaspace/SDL/AUD_SDLDevice.cpp
@@ -33,6 +33,10 @@ void AUD_SDLDevice::SDL_mix(void *data, Uint8* buffer, int length)
device->mix((data_t*)buffer,length/AUD_DEVICE_SAMPLE_SIZE(device->m_specs));
}
+static const char* open_error = "AUD_SDLDevice: Device couldn't be opened.";
+static const char* format_error = "AUD_SDLDevice: Obtained unsupported sample "
+ "format.";
+
AUD_SDLDevice::AUD_SDLDevice(AUD_DeviceSpecs specs, int buffersize)
{
if(specs.channels == AUD_CHANNELS_INVALID)
@@ -57,7 +61,7 @@ AUD_SDLDevice::AUD_SDLDevice(AUD_DeviceSpecs specs, int buffersize)
format.userdata = this;
if(SDL_OpenAudio(&format, &obtained) != 0)
- AUD_THROW(AUD_ERROR_SDL);
+ AUD_THROW(AUD_ERROR_SDL, open_error);
m_specs.rate = (AUD_SampleRate)obtained.freq;
m_specs.channels = (AUD_Channels)obtained.channels;
@@ -66,7 +70,10 @@ AUD_SDLDevice::AUD_SDLDevice(AUD_DeviceSpecs specs, int buffersize)
else if(obtained.format == AUDIO_S16LSB || obtained.format == AUDIO_S16MSB)
m_specs.format = AUD_FORMAT_S16;
else
- AUD_THROW(AUD_ERROR_SDL);
+ {
+ SDL_CloseAudio();
+ AUD_THROW(AUD_ERROR_SDL, format_error);
+ }
create();
}
diff --git a/intern/audaspace/SDL/AUD_SDLDevice.h b/intern/audaspace/SDL/AUD_SDLDevice.h
index 4b7de1996e8..af713b27480 100644
--- a/intern/audaspace/SDL/AUD_SDLDevice.h
+++ b/intern/audaspace/SDL/AUD_SDLDevice.h
@@ -44,6 +44,10 @@ private:
*/
static void SDL_mix(void *data, Uint8* buffer, int length);
+ // hide copy constructor and operator=
+ AUD_SDLDevice(const AUD_SDLDevice&);
+ AUD_SDLDevice& operator=(const AUD_SDLDevice&);
+
protected:
virtual void playing(bool playing);
diff --git a/intern/audaspace/SRC/AUD_SRCResampleFactory.cpp b/intern/audaspace/SRC/AUD_SRCResampleFactory.cpp
index caafbd14327..b421bb777e1 100644
--- a/intern/audaspace/SRC/AUD_SRCResampleFactory.cpp
+++ b/intern/audaspace/SRC/AUD_SRCResampleFactory.cpp
@@ -26,28 +26,18 @@
#include "AUD_SRCResampleFactory.h"
#include "AUD_SRCResampleReader.h"
-AUD_SRCResampleFactory::AUD_SRCResampleFactory(AUD_IReader* reader,
- AUD_DeviceSpecs specs) :
- AUD_ResampleFactory(reader, specs) {}
-
AUD_SRCResampleFactory::AUD_SRCResampleFactory(AUD_IFactory* factory,
AUD_DeviceSpecs specs) :
- AUD_ResampleFactory(factory, specs) {}
-
-AUD_SRCResampleFactory::AUD_SRCResampleFactory(AUD_DeviceSpecs specs) :
- AUD_ResampleFactory(specs) {}
+ AUD_ResampleFactory(factory, specs)
+{
+}
-AUD_IReader* AUD_SRCResampleFactory::createReader()
+AUD_IReader* AUD_SRCResampleFactory::createReader() const
{
AUD_IReader* reader = getReader();
- if(reader != 0)
- {
- if(reader->getSpecs().rate != m_specs.rate)
- {
- reader = new AUD_SRCResampleReader(reader, m_specs.specs);
- AUD_NEW("reader")
- }
- }
+ if(reader->getSpecs().rate != m_specs.rate)
+ reader = new AUD_SRCResampleReader(reader, m_specs.specs);
+
return reader;
}
diff --git a/intern/audaspace/SRC/AUD_SRCResampleFactory.h b/intern/audaspace/SRC/AUD_SRCResampleFactory.h
index 4b16c70169c..4edb0e76181 100644
--- a/intern/audaspace/SRC/AUD_SRCResampleFactory.h
+++ b/intern/audaspace/SRC/AUD_SRCResampleFactory.h
@@ -34,12 +34,15 @@
*/
class AUD_SRCResampleFactory : public AUD_ResampleFactory
{
+private:
+ // hide copy constructor and operator=
+ AUD_SRCResampleFactory(const AUD_SRCResampleFactory&);
+ AUD_SRCResampleFactory& operator=(const AUD_SRCResampleFactory&);
+
public:
- AUD_SRCResampleFactory(AUD_IReader* reader, AUD_DeviceSpecs specs);
AUD_SRCResampleFactory(AUD_IFactory* factory, AUD_DeviceSpecs specs);
- AUD_SRCResampleFactory(AUD_DeviceSpecs specs);
- virtual AUD_IReader* createReader();
+ virtual AUD_IReader* createReader() const;
};
#endif //AUD_SRCRESAMPLEFACTORY
diff --git a/intern/audaspace/SRC/AUD_SRCResampleReader.cpp b/intern/audaspace/SRC/AUD_SRCResampleReader.cpp
index e89857635de..91bf7002a49 100644
--- a/intern/audaspace/SRC/AUD_SRCResampleReader.cpp
+++ b/intern/audaspace/SRC/AUD_SRCResampleReader.cpp
@@ -24,7 +24,6 @@
*/
#include "AUD_SRCResampleReader.h"
-#include "AUD_Buffer.h"
#include <cmath>
#include <cstring>
@@ -35,16 +34,18 @@ static long src_callback(void *cb_data, float **data)
return ((AUD_SRCResampleReader*)cb_data)->doCallback(data);
}
+static const char* state_error = "AUD_SRCResampleReader: SRC State couldn't be "
+ "created.";
+
AUD_SRCResampleReader::AUD_SRCResampleReader(AUD_IReader* reader,
AUD_Specs specs) :
- AUD_EffectReader(reader)
+ AUD_EffectReader(reader),
+ m_sspecs(reader->getSpecs()),
+ m_factor(double(specs.rate) / double(m_sspecs.rate)),
+ m_tspecs(specs),
+ m_position(0)
{
- m_sspecs = reader->getSpecs();
-
- m_tspecs = specs;
m_tspecs.channels = m_sspecs.channels;
- m_factor = (double)m_tspecs.rate / (double)m_sspecs.rate;
- m_position = 0;
int error;
m_src = src_callback_new(src_callback,
@@ -56,23 +57,18 @@ AUD_SRCResampleReader::AUD_SRCResampleReader(AUD_IReader* reader,
if(!m_src)
{
// XXX printf("%s\n", src_strerror(error));
- delete m_reader; AUD_DELETE("reader")
- AUD_THROW(AUD_ERROR_READER);
+ AUD_THROW(AUD_ERROR_SRC, state_error);
}
-
- m_buffer = new AUD_Buffer(); AUD_NEW("buffer")
}
AUD_SRCResampleReader::~AUD_SRCResampleReader()
{
src_delete(m_src);
-
- delete m_buffer; AUD_DELETE("buffer")
}
long AUD_SRCResampleReader::doCallback(float** data)
{
- int length = m_buffer->getSize() / AUD_SAMPLE_SIZE(m_tspecs);
+ int length = m_buffer.getSize() / AUD_SAMPLE_SIZE(m_tspecs);
sample_t* buffer;
m_reader->read(length, buffer);
@@ -88,17 +84,17 @@ void AUD_SRCResampleReader::seek(int position)
m_position = position;
}
-int AUD_SRCResampleReader::getLength()
+int AUD_SRCResampleReader::getLength() const
{
return m_reader->getLength() * m_factor;
}
-int AUD_SRCResampleReader::getPosition()
+int AUD_SRCResampleReader::getPosition() const
{
return m_position;
}
-AUD_Specs AUD_SRCResampleReader::getSpecs()
+AUD_Specs AUD_SRCResampleReader::getSpecs() const
{
return m_tspecs;
}
@@ -107,10 +103,10 @@ void AUD_SRCResampleReader::read(int & length, sample_t* & buffer)
{
int size = length * AUD_SAMPLE_SIZE(m_tspecs);
- if(m_buffer->getSize() < size)
- m_buffer->resize(size);
+ if(m_buffer.getSize() < size)
+ m_buffer.resize(size);
- buffer = m_buffer->getBuffer();
+ buffer = m_buffer.getBuffer();
length = src_callback_read(m_src, m_factor, length, buffer);
diff --git a/intern/audaspace/SRC/AUD_SRCResampleReader.h b/intern/audaspace/SRC/AUD_SRCResampleReader.h
index e09d1b66f13..5e3dafb359b 100644
--- a/intern/audaspace/SRC/AUD_SRCResampleReader.h
+++ b/intern/audaspace/SRC/AUD_SRCResampleReader.h
@@ -27,7 +27,7 @@
#define AUD_SRCRESAMPLEREADER
#include "AUD_EffectReader.h"
-class AUD_Buffer;
+#include "AUD_Buffer.h"
#include <samplerate.h>
@@ -38,14 +38,19 @@ class AUD_SRCResampleReader : public AUD_EffectReader
{
private:
/**
+ * The sample specification of the source.
+ */
+ const AUD_Specs m_sspecs;
+
+ /**
* The resampling factor.
*/
- double m_factor;
+ const double m_factor;
/**
* The sound output buffer.
*/
- AUD_Buffer *m_buffer;
+ AUD_Buffer m_buffer;
/**
* The target specification.
@@ -53,11 +58,6 @@ private:
AUD_Specs m_tspecs;
/**
- * The sample specification of the source.
- */
- AUD_Specs m_sspecs;
-
- /**
* The src state structure.
*/
SRC_STATE* m_src;
@@ -67,14 +67,17 @@ private:
*/
int m_position;
+ // hide copy constructor and operator=
+ AUD_SRCResampleReader(const AUD_SRCResampleReader&);
+ AUD_SRCResampleReader& operator=(const AUD_SRCResampleReader&);
+
public:
/**
* Creates a resampling reader.
* \param reader The reader to mix.
* \param specs The target specification.
* \exception AUD_Exception Thrown if the source specification cannot be
- * mixed to the target specification or if the reader is
- * NULL.
+ * resampled to the target specification.
*/
AUD_SRCResampleReader(AUD_IReader* reader, AUD_Specs specs);
@@ -92,9 +95,9 @@ public:
long doCallback(float** data);
virtual void seek(int position);
- virtual int getLength();
- virtual int getPosition();
- virtual AUD_Specs getSpecs();
+ virtual int getLength() const;
+ virtual int getPosition() const;
+ virtual AUD_Specs getSpecs() const;
virtual void read(int & length, sample_t* & buffer);
};
diff --git a/intern/audaspace/ffmpeg/AUD_FFMPEGFactory.cpp b/intern/audaspace/ffmpeg/AUD_FFMPEGFactory.cpp
index 8e71c97baec..cad64d70790 100644
--- a/intern/audaspace/ffmpeg/AUD_FFMPEGFactory.cpp
+++ b/intern/audaspace/ffmpeg/AUD_FFMPEGFactory.cpp
@@ -24,45 +24,29 @@
*/
// needed for INT64_C
+#ifndef __STDC_CONSTANT_MACROS
#define __STDC_CONSTANT_MACROS
+#endif
#include "AUD_FFMPEGFactory.h"
#include "AUD_FFMPEGReader.h"
#include "AUD_Buffer.h"
-AUD_FFMPEGFactory::AUD_FFMPEGFactory(const char* filename)
+AUD_FFMPEGFactory::AUD_FFMPEGFactory(std::string filename) :
+ m_filename(filename)
{
- if(filename != NULL)
- {
- m_filename = new char[strlen(filename)+1]; AUD_NEW("string")
- strcpy(m_filename, filename);
- }
- else
- m_filename = NULL;
}
-AUD_FFMPEGFactory::AUD_FFMPEGFactory(unsigned char* buffer, int size)
+AUD_FFMPEGFactory::AUD_FFMPEGFactory(const data_t* buffer, int size) :
+ m_buffer(new AUD_Buffer(size))
{
- m_filename = NULL;
- m_buffer = AUD_Reference<AUD_Buffer>(new AUD_Buffer(size));
memcpy(m_buffer.get()->getBuffer(), buffer, size);
}
-AUD_FFMPEGFactory::~AUD_FFMPEGFactory()
-{
- if(m_filename)
- {
- delete[] m_filename; AUD_DELETE("string")
- }
-}
-
-AUD_IReader* AUD_FFMPEGFactory::createReader()
+AUD_IReader* AUD_FFMPEGFactory::createReader() const
{
- AUD_IReader* reader;
- if(m_filename)
- reader = new AUD_FFMPEGReader(m_filename);
+ if(m_buffer.get())
+ return new AUD_FFMPEGReader(m_buffer);
else
- reader = new AUD_FFMPEGReader(m_buffer);
- AUD_NEW("reader")
- return reader;
+ return new AUD_FFMPEGReader(m_filename);
}
diff --git a/intern/audaspace/ffmpeg/AUD_FFMPEGFactory.h b/intern/audaspace/ffmpeg/AUD_FFMPEGFactory.h
index 22560303a73..43a6ce68ca7 100644
--- a/intern/audaspace/ffmpeg/AUD_FFMPEGFactory.h
+++ b/intern/audaspace/ffmpeg/AUD_FFMPEGFactory.h
@@ -30,6 +30,8 @@
#include "AUD_Reference.h"
class AUD_Buffer;
+#include <string>
+
/**
* This factory reads a sound file via ffmpeg.
* \warning Notice that the needed formats and codecs have to be registered
@@ -41,33 +43,32 @@ private:
/**
* The filename of the sound source file.
*/
- char* m_filename;
+ const std::string m_filename;
/**
* The buffer to read from.
*/
AUD_Reference<AUD_Buffer> m_buffer;
+ // hide copy constructor and operator=
+ AUD_FFMPEGFactory(const AUD_FFMPEGFactory&);
+ AUD_FFMPEGFactory& operator=(const AUD_FFMPEGFactory&);
+
public:
/**
* Creates a new factory.
* \param filename The sound file path.
*/
- AUD_FFMPEGFactory(const char* filename);
+ AUD_FFMPEGFactory(std::string filename);
/**
* Creates a new factory.
* \param buffer The buffer to read from.
* \param size The size of the buffer.
*/
- AUD_FFMPEGFactory(unsigned char* buffer, int size);
-
- /**
- * Destroys the factory.
- */
- ~AUD_FFMPEGFactory();
+ AUD_FFMPEGFactory(const data_t* buffer, int size);
- virtual AUD_IReader* createReader();
+ virtual AUD_IReader* createReader() const;
};
#endif //AUD_FFMPEGFACTORY
diff --git a/intern/audaspace/ffmpeg/AUD_FFMPEGReader.cpp b/intern/audaspace/ffmpeg/AUD_FFMPEGReader.cpp
index 313ea52e892..623e99d5edc 100644
--- a/intern/audaspace/ffmpeg/AUD_FFMPEGReader.cpp
+++ b/intern/audaspace/ffmpeg/AUD_FFMPEGReader.cpp
@@ -24,23 +24,24 @@
*/
// needed for INT64_C
+#ifndef __STDC_CONSTANT_MACROS
#define __STDC_CONSTANT_MACROS
+#endif
#include "AUD_FFMPEGReader.h"
-#include "AUD_Buffer.h"
extern "C" {
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
}
-int AUD_FFMPEGReader::decode(AVPacket* packet, AUD_Buffer* buffer)
+int AUD_FFMPEGReader::decode(AVPacket* packet, AUD_Buffer& buffer)
{
// save packet parameters
uint8_t *audio_pkg_data = packet->data;
int audio_pkg_size = packet->size;
- int buf_size = buffer->getSize();
+ int buf_size = buffer.getSize();
int buf_pos = 0;
int read_length, data_size;
@@ -51,21 +52,21 @@ int AUD_FFMPEGReader::decode(AVPacket* packet, AUD_Buffer* buffer)
// resize buffer if needed
if(buf_size - buf_pos < AVCODEC_MAX_AUDIO_FRAME_SIZE)
{
- buffer->resize(buf_size + AVCODEC_MAX_AUDIO_FRAME_SIZE, true);
+ buffer.resize(buf_size + AVCODEC_MAX_AUDIO_FRAME_SIZE, true);
buf_size += AVCODEC_MAX_AUDIO_FRAME_SIZE;
}
// read samples from the packet
data_size = buf_size - buf_pos;
/*read_length = avcodec_decode_audio3(m_codecCtx,
- (int16_t*)(((data_t*)buffer->getBuffer())+buf_pos),
+ (int16_t*)(((data_t*)buffer.getBuffer())+buf_pos),
&data_size,
packet);*/
read_length = avcodec_decode_audio2(m_codecCtx,
- (int16_t*)(((data_t*)buffer->getBuffer())+buf_pos),
- &data_size,
- audio_pkg_data,
- audio_pkg_size);
+ (int16_t*)(((data_t*)buffer.getBuffer()) + buf_pos),
+ &data_size,
+ audio_pkg_data,
+ audio_pkg_size);
// read error, next packet!
if(read_length < 0)
@@ -81,36 +82,50 @@ int AUD_FFMPEGReader::decode(AVPacket* packet, AUD_Buffer* buffer)
return buf_pos;
}
+static const char* streaminfo_error = "AUD_FFMPEGReader: Stream info couldn't "
+ "be found.";
+static const char* noaudio_error = "AUD_FFMPEGReader: File doesn't include an "
+ "audio stream.";
+static const char* nodecoder_error = "AUD_FFMPEGReader: No decoder found for "
+ "the audio stream.";
+static const char* codecopen_error = "AUD_FFMPEGReader: Codec couldn't be "
+ "opened.";
+static const char* format_error = "AUD_FFMPEGReader: Unsupported sample "
+ "format.";
+
void AUD_FFMPEGReader::init()
{
m_position = 0;
m_pkgbuf_left = 0;
if(av_find_stream_info(m_formatCtx)<0)
- AUD_THROW(AUD_ERROR_FFMPEG);
+ AUD_THROW(AUD_ERROR_FFMPEG, streaminfo_error);
// find audio stream and codec
m_stream = -1;
for(unsigned int i = 0; i < m_formatCtx->nb_streams; i++)
+ {
if((m_formatCtx->streams[i]->codec->codec_type == CODEC_TYPE_AUDIO)
&& (m_stream < 0))
{
m_stream=i;
break;
}
+ }
+
if(m_stream == -1)
- AUD_THROW(AUD_ERROR_FFMPEG);
+ AUD_THROW(AUD_ERROR_FFMPEG, noaudio_error);
m_codecCtx = m_formatCtx->streams[m_stream]->codec;
// get a decoder and open it
AVCodec *aCodec = avcodec_find_decoder(m_codecCtx->codec_id);
if(!aCodec)
- AUD_THROW(AUD_ERROR_FFMPEG);
+ AUD_THROW(AUD_ERROR_FFMPEG, nodecoder_error);
if(avcodec_open(m_codecCtx, aCodec)<0)
- AUD_THROW(AUD_ERROR_FFMPEG);
+ AUD_THROW(AUD_ERROR_FFMPEG, codecopen_error);
// XXX this prints file information to stdout:
//dump_format(m_formatCtx, 0, NULL, 0);
@@ -140,45 +155,49 @@ void AUD_FFMPEGReader::init()
m_specs.format = AUD_FORMAT_FLOAT64;
break;
default:
- AUD_THROW(AUD_ERROR_FILE);
+ AUD_THROW(AUD_ERROR_FFMPEG, format_error);
}
m_specs.rate = (AUD_SampleRate) m_codecCtx->sample_rate;
-
- // last but not least if there hasn't been any error, create the buffers
- m_buffer = new AUD_Buffer(); AUD_NEW("buffer")
- m_pkgbuf = new AUD_Buffer(AVCODEC_MAX_AUDIO_FRAME_SIZE<<1);
- AUD_NEW("buffer")
}
-AUD_FFMPEGReader::AUD_FFMPEGReader(const char* filename)
-{
- m_byteiocontext = NULL;
+static const char* fileopen_error = "AUD_FFMPEGReader: File couldn't be "
+ "opened.";
+AUD_FFMPEGReader::AUD_FFMPEGReader(std::string filename) :
+ m_pkgbuf(AVCODEC_MAX_AUDIO_FRAME_SIZE<<1),
+ m_byteiocontext(NULL)
+{
// open file
- if(av_open_input_file(&m_formatCtx, filename, NULL, 0, NULL)!=0)
- AUD_THROW(AUD_ERROR_FILE);
+ if(av_open_input_file(&m_formatCtx, filename.c_str(), NULL, 0, NULL)!=0)
+ AUD_THROW(AUD_ERROR_FILE, fileopen_error);
try
{
init();
}
- catch(AUD_Exception)
+ catch(AUD_Exception&)
{
av_close_input_file(m_formatCtx);
throw;
}
}
-AUD_FFMPEGReader::AUD_FFMPEGReader(AUD_Reference<AUD_Buffer> buffer)
+static const char* streamopen_error = "AUD_FFMPEGReader: Stream couldn't be "
+ "opened.";
+
+AUD_FFMPEGReader::AUD_FFMPEGReader(AUD_Reference<AUD_Buffer> buffer) :
+ m_pkgbuf(AVCODEC_MAX_AUDIO_FRAME_SIZE<<1),
+ m_membuffer(buffer)
{
m_byteiocontext = (ByteIOContext*)av_mallocz(sizeof(ByteIOContext));
- AUD_NEW("byteiocontext")
- m_membuffer = buffer;
if(init_put_byte(m_byteiocontext, (data_t*)buffer.get()->getBuffer(),
buffer.get()->getSize(), 0, NULL, NULL, NULL, NULL) != 0)
- AUD_THROW(AUD_ERROR_FILE);
+ {
+ av_free(m_byteiocontext);
+ AUD_THROW(AUD_ERROR_FILE, fileopen_error);
+ }
AVProbeData probe_data;
probe_data.filename = "";
@@ -188,16 +207,19 @@ AUD_FFMPEGReader::AUD_FFMPEGReader(AUD_Reference<AUD_Buffer> buffer)
// open stream
if(av_open_input_stream(&m_formatCtx, m_byteiocontext, "", fmt, NULL)!=0)
- AUD_THROW(AUD_ERROR_FILE);
+ {
+ av_free(m_byteiocontext);
+ AUD_THROW(AUD_ERROR_FILE, streamopen_error);
+ }
try
{
init();
}
- catch(AUD_Exception)
+ catch(AUD_Exception&)
{
av_close_input_stream(m_formatCtx);
- av_free(m_byteiocontext); AUD_DELETE("byteiocontext")
+ av_free(m_byteiocontext);
throw;
}
}
@@ -209,16 +231,13 @@ AUD_FFMPEGReader::~AUD_FFMPEGReader()
if(m_byteiocontext)
{
av_close_input_stream(m_formatCtx);
- av_free(m_byteiocontext); AUD_DELETE("byteiocontext")
+ av_free(m_byteiocontext);
}
else
av_close_input_file(m_formatCtx);
-
- delete m_buffer; AUD_DELETE("buffer")
- delete m_pkgbuf; AUD_DELETE("buffer")
}
-bool AUD_FFMPEGReader::isSeekable()
+bool AUD_FFMPEGReader::isSeekable() const
{
return true;
}
@@ -260,9 +279,17 @@ void AUD_FFMPEGReader::seek(int position)
if(m_position < position)
{
- sample_t* buf;
- int length = position - m_position;
- read(length, buf);
+ // read until we're at the right position
+ int length = AUD_DEFAULT_BUFFER_SIZE;
+ sample_t* buffer;
+ for(int len = position - m_position;
+ length == AUD_DEFAULT_BUFFER_SIZE;
+ len -= AUD_DEFAULT_BUFFER_SIZE)
+ {
+ if(len < AUD_DEFAULT_BUFFER_SIZE)
+ length = len;
+ read(length, buffer);
+ }
}
}
}
@@ -276,33 +303,23 @@ void AUD_FFMPEGReader::seek(int position)
}
}
-int AUD_FFMPEGReader::getLength()
+int AUD_FFMPEGReader::getLength() const
{
// return approximated remaning size
return (int)((m_formatCtx->duration * m_codecCtx->sample_rate)
/ AV_TIME_BASE)-m_position;
}
-int AUD_FFMPEGReader::getPosition()
+int AUD_FFMPEGReader::getPosition() const
{
return m_position;
}
-AUD_Specs AUD_FFMPEGReader::getSpecs()
+AUD_Specs AUD_FFMPEGReader::getSpecs() const
{
return m_specs.specs;
}
-AUD_ReaderType AUD_FFMPEGReader::getType()
-{
- return AUD_TYPE_STREAM;
-}
-
-bool AUD_FFMPEGReader::notify(AUD_Message &message)
-{
- return false;
-}
-
void AUD_FFMPEGReader::read(int & length, sample_t* & buffer)
{
// read packages and decode them
@@ -313,10 +330,10 @@ void AUD_FFMPEGReader::read(int & length, sample_t* & buffer)
int sample_size = AUD_DEVICE_SAMPLE_SIZE(m_specs);
// resize output buffer if necessary
- if(m_buffer->getSize() < length * AUD_SAMPLE_SIZE(m_specs))
- m_buffer->resize(length * AUD_SAMPLE_SIZE(m_specs));
+ if(m_buffer.getSize() < length * AUD_SAMPLE_SIZE(m_specs))
+ m_buffer.resize(length * AUD_SAMPLE_SIZE(m_specs));
- buffer = m_buffer->getBuffer();
+ buffer = m_buffer.getBuffer();
pkgbuf_pos = m_pkgbuf_left;
m_pkgbuf_left = 0;
@@ -324,7 +341,7 @@ void AUD_FFMPEGReader::read(int & length, sample_t* & buffer)
if(pkgbuf_pos > 0)
{
data_size = AUD_MIN(pkgbuf_pos, left * sample_size);
- m_convert((data_t*) buffer, (data_t*) m_pkgbuf->getBuffer(),
+ m_convert((data_t*) buffer, (data_t*) m_pkgbuf.getBuffer(),
data_size / AUD_FORMAT_SIZE(m_specs.format));
buffer += data_size / AUD_FORMAT_SIZE(m_specs.format);
left -= data_size/sample_size;
@@ -341,7 +358,7 @@ void AUD_FFMPEGReader::read(int & length, sample_t* & buffer)
// copy to output buffer
data_size = AUD_MIN(pkgbuf_pos, left * sample_size);
- m_convert((data_t*) buffer, (data_t*) m_pkgbuf->getBuffer(),
+ m_convert((data_t*) buffer, (data_t*) m_pkgbuf.getBuffer(),
data_size / AUD_FORMAT_SIZE(m_specs.format));
buffer += data_size / AUD_FORMAT_SIZE(m_specs.format);
left -= data_size/sample_size;
@@ -352,12 +369,12 @@ void AUD_FFMPEGReader::read(int & length, sample_t* & buffer)
if(pkgbuf_pos > data_size)
{
m_pkgbuf_left = pkgbuf_pos-data_size;
- memmove(m_pkgbuf->getBuffer(),
- ((data_t*)m_pkgbuf->getBuffer())+data_size,
+ memmove(m_pkgbuf.getBuffer(),
+ ((data_t*)m_pkgbuf.getBuffer())+data_size,
pkgbuf_pos-data_size);
}
- buffer = m_buffer->getBuffer();
+ buffer = m_buffer.getBuffer();
if(left > 0)
length -= left;
diff --git a/intern/audaspace/ffmpeg/AUD_FFMPEGReader.h b/intern/audaspace/ffmpeg/AUD_FFMPEGReader.h
index f992fdf7a34..8ebf5b45cdc 100644
--- a/intern/audaspace/ffmpeg/AUD_FFMPEGReader.h
+++ b/intern/audaspace/ffmpeg/AUD_FFMPEGReader.h
@@ -29,7 +29,9 @@
#include "AUD_ConverterFunctions.h"
#include "AUD_IReader.h"
#include "AUD_Reference.h"
-class AUD_Buffer;
+#include "AUD_Buffer.h"
+
+#include <string>
struct AVCodecContext;
extern "C" {
@@ -55,7 +57,7 @@ private:
/**
* The playback buffer.
*/
- AUD_Buffer *m_buffer;
+ AUD_Buffer m_buffer;
/**
* The specification of the audio data.
@@ -65,7 +67,7 @@ private:
/**
* The buffer for package reading.
*/
- AUD_Buffer *m_pkgbuf;
+ AUD_Buffer m_pkgbuf;
/**
* The count of samples still available from the last read package.
@@ -108,13 +110,17 @@ private:
* \param buffer The target buffer.
* \return The count of read bytes.
*/
- int decode(AVPacket* packet, AUD_Buffer* buffer);
+ int decode(AVPacket* packet, AUD_Buffer& buffer);
/**
* Initializes the object.
*/
void init();
+ // hide copy constructor and operator=
+ AUD_FFMPEGReader(const AUD_FFMPEGReader&);
+ AUD_FFMPEGReader& operator=(const AUD_FFMPEGReader&);
+
public:
/**
* Creates a new reader.
@@ -122,7 +128,7 @@ public:
* \exception AUD_Exception Thrown if the file specified does not exist or
* cannot be read with ffmpeg.
*/
- AUD_FFMPEGReader(const char* filename);
+ AUD_FFMPEGReader(std::string filename);
/**
* Creates a new reader.
@@ -137,13 +143,11 @@ public:
*/
virtual ~AUD_FFMPEGReader();
- virtual bool isSeekable();
+ virtual bool isSeekable() const;
virtual void seek(int position);
- virtual int getLength();
- virtual int getPosition();
- virtual AUD_Specs getSpecs();
- virtual AUD_ReaderType getType();
- virtual bool notify(AUD_Message &message);
+ virtual int getLength() const;
+ virtual int getPosition() const;
+ virtual AUD_Specs getSpecs() const;
virtual void read(int & length, sample_t* & buffer);
};
diff --git a/intern/audaspace/fftw/AUD_BandPassReader.h b/intern/audaspace/fftw/AUD_BandPassReader.h
index 7a8fd3b94d5..bb63a3ec818 100644
--- a/intern/audaspace/fftw/AUD_BandPassReader.h
+++ b/intern/audaspace/fftw/AUD_BandPassReader.h
@@ -83,7 +83,6 @@ public:
* \param reader The reader to read from.
* \param low The lowest passed frequency.
* \param high The highest passed frequency.
- * \exception AUD_Exception Thrown if the reader specified is NULL.
*/
AUD_BandPassReader(AUD_IReader* reader, float low, float high);
diff --git a/intern/audaspace/intern/AUD_3DMath.h b/intern/audaspace/intern/AUD_3DMath.h
new file mode 100644
index 00000000000..390bb1b8467
--- /dev/null
+++ b/intern/audaspace/intern/AUD_3DMath.h
@@ -0,0 +1,189 @@
+/*
+ * $Id$
+ *
+ * ***** BEGIN LGPL LICENSE BLOCK *****
+ *
+ * Copyright 2009 Jörg Hermann Müller
+ *
+ * This file is part of AudaSpace.
+ *
+ * AudaSpace is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * AudaSpace is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with AudaSpace. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * ***** END LGPL LICENSE BLOCK *****
+ */
+
+#ifndef AUD_3DMATH
+#define AUD_3DMATH
+
+class AUD_Quaternion
+{
+private:
+ union
+ {
+ float m_v[4];
+ struct
+ {
+ float m_w;
+ float m_x;
+ float m_y;
+ float m_z;
+ };
+ };
+
+public:
+ /**
+ * Creates a new quaternion.
+ * \param w The w component.
+ * \param x The x component.
+ * \param y The y component.
+ * \param z The z component.
+ */
+ inline AUD_Quaternion(float w, float x, float y, float z) :
+ m_w(w), m_x(x), m_y(y), m_z(z)
+ {
+ }
+
+ /**
+ * Retrieves the w component of the quarternion.
+ * \return The w component.
+ */
+ inline const float& w() const
+ {
+ return m_w;
+ }
+
+ /**
+ * Retrieves the x component of the quarternion.
+ * \return The x component.
+ */
+ inline const float& x() const
+ {
+ return m_x;
+ }
+
+ /**
+ * Retrieves the y component of the quarternion.
+ * \return The y component.
+ */
+ inline const float& y() const
+ {
+ return m_y;
+ }
+
+ /**
+ * Retrieves the z component of the quarternion.
+ * \return The z component.
+ */
+ inline const float& z() const
+ {
+ return m_z;
+ }
+
+ /**
+ * Retrieves the components of the vector.
+ * \param destination Where the 4 float values should be saved to.
+ */
+ inline void get(float* destination) const
+ {
+ destination[0] = m_w;
+ destination[1] = m_x;
+ destination[2] = m_y;
+ destination[3] = m_z;
+ }
+
+ /**
+ * Retrieves the components of the vector.
+ * \return The components as float[4].
+ */
+ inline const float* get() const
+ {
+ return m_v;
+ }
+};
+
+class AUD_Vector3
+{
+private:
+ union
+ {
+ float m_v[3];
+ struct
+ {
+ float m_x;
+ float m_y;
+ float m_z;
+ };
+ };
+
+public:
+ /**
+ * Creates a new 3 dimensional vector.
+ * \param x The x component.
+ * \param y The y component.
+ * \param z The z component.
+ */
+ inline AUD_Vector3(float x, float y, float z) :
+ m_x(x), m_y(y), m_z(z)
+ {
+ }
+
+ /**
+ * Retrieves the x component of the vector.
+ * \return The x component.
+ */
+ inline const float& x() const
+ {
+ return m_x;
+ }
+
+ /**
+ * Retrieves the y component of the vector.
+ * \return The y component.
+ */
+ inline const float& y() const
+ {
+ return m_y;
+ }
+
+ /**
+ * Retrieves the z component of the vector.
+ * \return The z component.
+ */
+ inline const float& z() const
+ {
+ return m_z;
+ }
+
+ /**
+ * Retrieves the components of the vector.
+ * \param destination Where the 3 float values should be saved to.
+ */
+ inline void get(float* destination) const
+ {
+ destination[0] = m_x;
+ destination[1] = m_y;
+ destination[2] = m_z;
+ }
+
+ /**
+ * Retrieves the components of the vector.
+ * \return The components as float[3].
+ */
+ inline const float* get() const
+ {
+ return m_v;
+ }
+};
+
+#endif //AUD_3DMATH
diff --git a/intern/audaspace/intern/AUD_Buffer.cpp b/intern/audaspace/intern/AUD_Buffer.cpp
index a8e74a023bf..11eed399ca5 100644
--- a/intern/audaspace/intern/AUD_Buffer.cpp
+++ b/intern/audaspace/intern/AUD_Buffer.cpp
@@ -34,34 +34,37 @@
AUD_Buffer::AUD_Buffer(int size)
{
m_size = size;
- m_buffer = (data_t*) malloc(size+16); AUD_NEW("buffer")
+ m_buffer = (data_t*) malloc(size+16);
}
AUD_Buffer::~AUD_Buffer()
{
- free(m_buffer); AUD_DELETE("buffer")
+ free(m_buffer);
}
-sample_t* AUD_Buffer::getBuffer()
+sample_t* AUD_Buffer::getBuffer() const
{
return (sample_t*) AUD_ALIGN(m_buffer);
}
-int AUD_Buffer::getSize()
+int AUD_Buffer::getSize() const
{
return m_size;
}
void AUD_Buffer::resize(int size, bool keep)
{
- data_t* buffer = (data_t*) malloc(size+16); AUD_NEW("buffer")
-
- // copy old data over if wanted
if(keep)
+ {
+ data_t* buffer = (data_t*) malloc(size + 16);
+
memcpy(AUD_ALIGN(buffer), AUD_ALIGN(m_buffer), AUD_MIN(size, m_size));
- free(m_buffer); AUD_DELETE("buffer")
+ free(m_buffer);
+ m_buffer = buffer;
+ }
+ else
+ m_buffer = (data_t*) realloc(m_buffer, size + 16);
- m_buffer = buffer;
m_size = size;
}
diff --git a/intern/audaspace/intern/AUD_Buffer.h b/intern/audaspace/intern/AUD_Buffer.h
index f745ee6154b..b3889b35ffe 100644
--- a/intern/audaspace/intern/AUD_Buffer.h
+++ b/intern/audaspace/intern/AUD_Buffer.h
@@ -41,6 +41,10 @@ private:
/// The pointer to the buffer memory.
data_t* m_buffer;
+ // hide copy constructor and operator=
+ AUD_Buffer(const AUD_Buffer&);
+ AUD_Buffer& operator=(const AUD_Buffer&);
+
public:
/**
* Creates a new buffer.
@@ -56,12 +60,12 @@ public:
/**
* Returns the pointer to the buffer in memory.
*/
- sample_t* getBuffer();
+ sample_t* getBuffer() const;
/**
* Returns the size of the buffer in bytes.
*/
- int getSize();
+ int getSize() const;
/**
* Resizes the buffer.
diff --git a/intern/audaspace/intern/AUD_BufferReader.cpp b/intern/audaspace/intern/AUD_BufferReader.cpp
index 0101de338bd..d3af549a868 100644
--- a/intern/audaspace/intern/AUD_BufferReader.cpp
+++ b/intern/audaspace/intern/AUD_BufferReader.cpp
@@ -28,53 +28,36 @@
#include "AUD_Space.h"
AUD_BufferReader::AUD_BufferReader(AUD_Reference<AUD_Buffer> buffer,
- AUD_Specs specs)
+ AUD_Specs specs) :
+ m_position(0), m_buffer(buffer), m_specs(specs)
{
- m_position = 0;
- m_buffer = buffer;
- m_specs = specs;
}
-bool AUD_BufferReader::isSeekable()
+bool AUD_BufferReader::isSeekable() const
{
return true;
}
void AUD_BufferReader::seek(int position)
{
- if(position < 0)
- m_position = 0;
- else if(position > m_buffer.get()->getSize() / AUD_SAMPLE_SIZE(m_specs))
- m_position = m_buffer.get()->getSize() / AUD_SAMPLE_SIZE(m_specs);
- else
- m_position = position;
+ m_position = position;
}
-int AUD_BufferReader::getLength()
+int AUD_BufferReader::getLength() const
{
- return m_buffer.get()->getSize()/AUD_SAMPLE_SIZE(m_specs);
+ return m_buffer.get()->getSize() / AUD_SAMPLE_SIZE(m_specs);
}
-int AUD_BufferReader::getPosition()
+int AUD_BufferReader::getPosition() const
{
return m_position;
}
-AUD_Specs AUD_BufferReader::getSpecs()
+AUD_Specs AUD_BufferReader::getSpecs() const
{
return m_specs;
}
-AUD_ReaderType AUD_BufferReader::getType()
-{
- return AUD_TYPE_BUFFER;
-}
-
-bool AUD_BufferReader::notify(AUD_Message &message)
-{
- return false;
-}
-
void AUD_BufferReader::read(int & length, sample_t* & buffer)
{
int sample_size = AUD_SAMPLE_SIZE(m_specs);
diff --git a/intern/audaspace/intern/AUD_BufferReader.h b/intern/audaspace/intern/AUD_BufferReader.h
index f2d8ff6b57d..a8bd89060b0 100644
--- a/intern/audaspace/intern/AUD_BufferReader.h
+++ b/intern/audaspace/intern/AUD_BufferReader.h
@@ -53,6 +53,10 @@ private:
*/
AUD_Specs m_specs;
+ // hide copy constructor and operator=
+ AUD_BufferReader(const AUD_BufferReader&);
+ AUD_BufferReader& operator=(const AUD_BufferReader&);
+
public:
/**
* Creates a new buffer reader.
@@ -61,13 +65,11 @@ public:
*/
AUD_BufferReader(AUD_Reference<AUD_Buffer> buffer, AUD_Specs specs);
- virtual bool isSeekable();
+ virtual bool isSeekable() const;
virtual void seek(int position);
- virtual int getLength();
- virtual int getPosition();
- virtual AUD_Specs getSpecs();
- virtual AUD_ReaderType getType();
- virtual bool notify(AUD_Message &message);
+ virtual int getLength() const;
+ virtual int getPosition() const;
+ virtual AUD_Specs getSpecs() const;
virtual void read(int & length, sample_t* & buffer);
};
diff --git a/intern/audaspace/intern/AUD_C-API.cpp b/intern/audaspace/intern/AUD_C-API.cpp
index 8740f62c9a7..5ca0b0d60b4 100644
--- a/intern/audaspace/intern/AUD_C-API.cpp
+++ b/intern/audaspace/intern/AUD_C-API.cpp
@@ -23,15 +23,23 @@
* ***** END LGPL LICENSE BLOCK *****
*/
-#include <cstdlib>
-#include <cstring>
-#include <cmath>
-
-#ifdef WITH_FFMPEG
// needed for INT64_C
+#ifndef __STDC_CONSTANT_MACROS
#define __STDC_CONSTANT_MACROS
#endif
+#ifndef DISABLE_PYTHON
+#include "AUD_PyInit.h"
+#include "AUD_PyAPI.h"
+
+Device* g_device;
+bool g_pyinitialized = false;
+#endif
+
+#include <cstdlib>
+#include <cstring>
+#include <cmath>
+
#include "AUD_NULLDevice.h"
#include "AUD_I3DDevice.h"
#include "AUD_FileFactory.h"
@@ -51,9 +59,9 @@
#include "AUD_ChannelMapperFactory.h"
#include "AUD_Buffer.h"
#include "AUD_ReadDevice.h"
-#include "AUD_SourceCaps.h"
#include "AUD_IReader.h"
#include "AUD_SequencerFactory.h"
+#include "AUD_SilenceFactory.h"
#ifdef WITH_SDL
#include "AUD_SDLDevice.h"
@@ -78,6 +86,7 @@ extern "C" {
typedef AUD_IFactory AUD_Sound;
typedef AUD_ReadDevice AUD_Device;
+typedef AUD_Handle AUD_Channel;
#define AUD_CAPI_IMPLEMENTATION
#include "AUD_C-API.h"
@@ -123,7 +132,7 @@ int AUD_init(AUD_DeviceType device, AUD_DeviceSpecs specs, int buffersize)
#endif
#ifdef WITH_JACK
case AUD_JACK_DEVICE:
- dev = new AUD_JackDevice(specs, buffersize);
+ dev = new AUD_JackDevice("Blender", specs, buffersize);
break;
#endif
default:
@@ -131,12 +140,22 @@ int AUD_init(AUD_DeviceType device, AUD_DeviceSpecs specs, int buffersize)
}
AUD_device = dev;
- if(AUD_device->checkCapability(AUD_CAPS_3D_DEVICE))
- AUD_3ddevice = dynamic_cast<AUD_I3DDevice*>(AUD_device);
+ AUD_3ddevice = dynamic_cast<AUD_I3DDevice*>(AUD_device);
+
+#ifndef DISABLE_PYTHON
+ if(g_pyinitialized)
+ {
+ g_device = (Device*)Device_empty();
+ if(g_device != NULL)
+ {
+ g_device->device = dev;
+ }
+ }
+#endif
return true;
}
- catch(AUD_Exception)
+ catch(AUD_Exception&)
{
return false;
}
@@ -160,13 +179,55 @@ int* AUD_enumDevices()
void AUD_exit()
{
- if(AUD_device)
+#ifndef DISABLE_PYTHON
+ if(g_device)
{
+ Py_XDECREF(g_device);
+ g_device = NULL;
+ }
+ else
+#endif
+ if(AUD_device)
delete AUD_device;
- AUD_device = NULL;
- AUD_3ddevice = NULL;
+ AUD_device = NULL;
+ AUD_3ddevice = NULL;
+}
+
+#ifndef DISABLE_PYTHON
+static PyObject* AUD_getCDevice(PyObject* self)
+{
+ if(g_device)
+ {
+ Py_INCREF(g_device);
+ return (PyObject*)g_device;
+ }
+ Py_RETURN_NONE;
+}
+
+static PyMethodDef meth_getcdevice[] = {{ "device", (PyCFunction)AUD_getCDevice, METH_NOARGS,
+ "device()\n\n"
+ "Returns the application's :class:`Device`.\n\n"
+ ":return: The application's :class:`Device`.\n"
+ ":rtype: :class:`Device`"}};
+
+PyObject* AUD_initPython()
+{
+ PyObject* module = PyInit_aud();
+ PyModule_AddObject(module, "device", (PyObject *)PyCFunction_New(meth_getcdevice, NULL));
+ PyDict_SetItemString(PySys_GetObject("modules"), "aud", module);
+ if(AUD_device)
+ {
+ g_device = (Device*)Device_empty();
+ if(g_device != NULL)
+ {
+ g_device->device = AUD_device;
+ }
}
+ g_pyinitialized = true;
+
+ return module;
}
+#endif
void AUD_lock()
{
@@ -184,20 +245,23 @@ AUD_SoundInfo AUD_getInfo(AUD_Sound* sound)
{
assert(sound);
- AUD_IReader* reader = sound->createReader();
-
AUD_SoundInfo info;
+ info.specs.channels = AUD_CHANNELS_INVALID;
+ info.specs.rate = AUD_RATE_INVALID;
+ info.length = 0.0f;
- if(reader)
+ try
{
- info.specs = reader->getSpecs();
- info.length = reader->getLength() / (float) info.specs.rate;
+ AUD_IReader* reader = sound->createReader();
+
+ if(reader)
+ {
+ info.specs = reader->getSpecs();
+ info.length = reader->getLength() / (float) info.specs.rate;
+ }
}
- else
+ catch(AUD_Exception&)
{
- info.specs.channels = AUD_CHANNELS_INVALID;
- info.specs.rate = AUD_RATE_INVALID;
- info.length = 0.0f;
}
return info;
@@ -223,7 +287,7 @@ AUD_Sound* AUD_bufferSound(AUD_Sound* sound)
{
return new AUD_StreamBufferFactory(sound);
}
- catch(AUD_Exception)
+ catch(AUD_Exception&)
{
return NULL;
}
@@ -237,7 +301,7 @@ AUD_Sound* AUD_delaySound(AUD_Sound* sound, float delay)
{
return new AUD_DelayFactory(sound, delay);
}
- catch(AUD_Exception)
+ catch(AUD_Exception&)
{
return NULL;
}
@@ -251,7 +315,7 @@ AUD_Sound* AUD_limitSound(AUD_Sound* sound, float start, float end)
{
return new AUD_LimiterFactory(sound, start, end);
}
- catch(AUD_Exception)
+ catch(AUD_Exception&)
{
return NULL;
}
@@ -265,7 +329,7 @@ AUD_Sound* AUD_pingpongSound(AUD_Sound* sound)
{
return new AUD_PingPongFactory(sound);
}
- catch(AUD_Exception)
+ catch(AUD_Exception&)
{
return NULL;
}
@@ -279,26 +343,21 @@ AUD_Sound* AUD_loopSound(AUD_Sound* sound)
{
return new AUD_LoopFactory(sound);
}
- catch(AUD_Exception)
+ catch(AUD_Exception&)
{
return NULL;
}
}
-int AUD_setLoop(AUD_Handle* handle, int loops, float time)
+int AUD_setLoop(AUD_Channel* handle, int loops)
{
if(handle)
{
- AUD_Message message;
- message.type = AUD_MSG_LOOP;
- message.loopcount = loops;
- message.time = time;
-
try
{
- return AUD_device->sendMessage(handle, message);
+ return AUD_device->setLoopCount(handle, loops);
}
- catch(AUD_Exception)
+ catch(AUD_Exception&)
{
}
}
@@ -313,7 +372,7 @@ AUD_Sound* AUD_rectifySound(AUD_Sound* sound)
{
return new AUD_RectifyFactory(sound);
}
- catch(AUD_Exception)
+ catch(AUD_Exception&)
{
return NULL;
}
@@ -325,7 +384,7 @@ void AUD_unload(AUD_Sound* sound)
delete sound;
}
-AUD_Handle* AUD_play(AUD_Sound* sound, int keep)
+AUD_Channel* AUD_play(AUD_Sound* sound, int keep)
{
assert(AUD_device);
assert(sound);
@@ -333,207 +392,309 @@ AUD_Handle* AUD_play(AUD_Sound* sound, int keep)
{
return AUD_device->play(sound, keep);
}
- catch(AUD_Exception)
+ catch(AUD_Exception&)
{
return NULL;
}
}
-int AUD_pause(AUD_Handle* handle)
+int AUD_pause(AUD_Channel* handle)
{
assert(AUD_device);
return AUD_device->pause(handle);
}
-int AUD_resume(AUD_Handle* handle)
+int AUD_resume(AUD_Channel* handle)
{
assert(AUD_device);
return AUD_device->resume(handle);
}
-int AUD_stop(AUD_Handle* handle)
+int AUD_stop(AUD_Channel* handle)
{
if(AUD_device)
return AUD_device->stop(handle);
return false;
}
-int AUD_setKeep(AUD_Handle* handle, int keep)
+int AUD_setKeep(AUD_Channel* handle, int keep)
{
assert(AUD_device);
return AUD_device->setKeep(handle, keep);
}
-int AUD_seek(AUD_Handle* handle, float seekTo)
+int AUD_seek(AUD_Channel* handle, float seekTo)
{
assert(AUD_device);
return AUD_device->seek(handle, seekTo);
}
-float AUD_getPosition(AUD_Handle* handle)
+float AUD_getPosition(AUD_Channel* handle)
{
assert(AUD_device);
return AUD_device->getPosition(handle);
}
-AUD_Status AUD_getStatus(AUD_Handle* handle)
+AUD_Status AUD_getStatus(AUD_Channel* handle)
{
assert(AUD_device);
return AUD_device->getStatus(handle);
}
-AUD_Handle* AUD_play3D(AUD_Sound* sound, int keep)
+int AUD_setListenerLocation(const float* location)
{
assert(AUD_device);
- assert(sound);
- try
+ if(AUD_3ddevice)
{
- if(AUD_3ddevice)
- return AUD_3ddevice->play3D(sound, keep);
- else
- return AUD_device->play(sound, keep);
+ AUD_Vector3 v(location[0], location[1], location[2]);
+ AUD_3ddevice->setListenerLocation(v);
+ return true;
}
- catch(AUD_Exception)
+
+ return false;
+}
+
+int AUD_setListenerVelocity(const float* velocity)
+{
+ assert(AUD_device);
+
+ if(AUD_3ddevice)
{
- return NULL;
+ AUD_Vector3 v(velocity[0], velocity[1], velocity[2]);
+ AUD_3ddevice->setListenerVelocity(v);
+ return true;
}
+
+ return false;
}
-int AUD_updateListener(AUD_3DData* data)
+int AUD_setListenerOrientation(const float* orientation)
{
assert(AUD_device);
- assert(data);
- try
+ if(AUD_3ddevice)
{
- if(AUD_3ddevice)
- return AUD_3ddevice->updateListener(*data);
+ AUD_Quaternion q(orientation[3], orientation[0], orientation[1], orientation[2]);
+ AUD_3ddevice->setListenerOrientation(q);
+ return true;
}
- catch(AUD_Exception)
+
+ return false;
+}
+
+int AUD_setSpeedOfSound(float speed)
+{
+ assert(AUD_device);
+
+ if(AUD_3ddevice)
{
+ AUD_3ddevice->setSpeedOfSound(speed);
+ return true;
}
+
return false;
}
-int AUD_set3DSetting(AUD_3DSetting setting, float value)
+int AUD_setDopplerFactor(float factor)
{
assert(AUD_device);
- try
+ if(AUD_3ddevice)
{
- if(AUD_3ddevice)
- return AUD_3ddevice->setSetting(setting, value);
+ AUD_3ddevice->setDopplerFactor(factor);
+ return true;
}
- catch(AUD_Exception)
+
+ return false;
+}
+
+int AUD_setDistanceModel(AUD_DistanceModel model)
+{
+ assert(AUD_device);
+
+ if(AUD_3ddevice)
{
+ AUD_3ddevice->setDistanceModel(model);
+ return true;
}
+
return false;
}
-float AUD_get3DSetting(AUD_3DSetting setting)
+int AUD_setSourceLocation(AUD_Channel* handle, const float* location)
{
assert(AUD_device);
- try
+ if(AUD_3ddevice)
{
- if(AUD_3ddevice)
- return AUD_3ddevice->getSetting(setting);
+ AUD_Vector3 v(location[0], location[1], location[2]);
+ return AUD_3ddevice->setSourceLocation(handle, v);
}
- catch(AUD_Exception)
+
+ return false;
+}
+
+int AUD_setSourceVelocity(AUD_Channel* handle, const float* velocity)
+{
+ assert(AUD_device);
+
+ if(AUD_3ddevice)
{
+ AUD_Vector3 v(velocity[0], velocity[1], velocity[2]);
+ return AUD_3ddevice->setSourceVelocity(handle, v);
}
- return 0.0f;
+
+ return false;
}
-int AUD_update3DSource(AUD_Handle* handle, AUD_3DData* data)
+int AUD_setSourceOrientation(AUD_Channel* handle, const float* orientation)
{
- if(handle)
+ assert(AUD_device);
+
+ if(AUD_3ddevice)
{
- assert(AUD_device);
- assert(data);
+ AUD_Quaternion q(orientation[3], orientation[0], orientation[1], orientation[2]);
+ return AUD_3ddevice->setSourceOrientation(handle, q);
+ }
- try
- {
- if(AUD_3ddevice)
- return AUD_3ddevice->updateSource(handle, *data);
- }
- catch(AUD_Exception)
- {
- }
+ return false;
+}
+
+int AUD_setRelative(AUD_Channel* handle, int relative)
+{
+ assert(AUD_device);
+
+ if(AUD_3ddevice)
+ {
+ return AUD_3ddevice->setRelative(handle, relative);
}
+
return false;
}
-int AUD_set3DSourceSetting(AUD_Handle* handle,
- AUD_3DSourceSetting setting, float value)
+int AUD_setVolumeMaximum(AUD_Channel* handle, float volume)
{
- if(handle)
+ assert(AUD_device);
+
+ if(AUD_3ddevice)
{
- assert(AUD_device);
+ return AUD_3ddevice->setVolumeMaximum(handle, volume);
+ }
- try
- {
- if(AUD_3ddevice)
- return AUD_3ddevice->setSourceSetting(handle, setting, value);
- }
- catch(AUD_Exception)
- {
- }
+ return false;
+}
+
+int AUD_setVolumeMinimum(AUD_Channel* handle, float volume)
+{
+ assert(AUD_device);
+
+ if(AUD_3ddevice)
+ {
+ return AUD_3ddevice->setVolumeMinimum(handle, volume);
}
+
return false;
}
-float AUD_get3DSourceSetting(AUD_Handle* handle, AUD_3DSourceSetting setting)
+int AUD_setDistanceMaximum(AUD_Channel* handle, float distance)
{
- if(handle)
+ assert(AUD_device);
+
+ if(AUD_3ddevice)
{
- assert(AUD_device);
+ return AUD_3ddevice->setDistanceMaximum(handle, distance);
+ }
- try
- {
- if(AUD_3ddevice)
- return AUD_3ddevice->getSourceSetting(handle, setting);
- }
- catch(AUD_Exception)
- {
- }
+ return false;
+}
+
+int AUD_setDistanceReference(AUD_Channel* handle, float distance)
+{
+ assert(AUD_device);
+
+ if(AUD_3ddevice)
+ {
+ return AUD_3ddevice->setDistanceReference(handle, distance);
}
- return 0.0f;
+
+ return false;
}
-int AUD_setSoundVolume(AUD_Handle* handle, float volume)
+int AUD_setAttenuation(AUD_Channel* handle, float factor)
+{
+ assert(AUD_device);
+
+ if(AUD_3ddevice)
+ {
+ return AUD_3ddevice->setAttenuation(handle, factor);
+ }
+
+ return false;
+}
+
+int AUD_setConeAngleOuter(AUD_Channel* handle, float angle)
+{
+ assert(AUD_device);
+
+ if(AUD_3ddevice)
+ {
+ return AUD_3ddevice->setConeAngleOuter(handle, angle);
+ }
+
+ return false;
+}
+
+int AUD_setConeAngleInner(AUD_Channel* handle, float angle)
+{
+ assert(AUD_device);
+
+ if(AUD_3ddevice)
+ {
+ return AUD_3ddevice->setConeAngleInner(handle, angle);
+ }
+
+ return false;
+}
+
+int AUD_setConeVolumeOuter(AUD_Channel* handle, float volume)
+{
+ assert(AUD_device);
+
+ if(AUD_3ddevice)
+ {
+ return AUD_3ddevice->setConeVolumeOuter(handle, volume);
+ }
+
+ return false;
+}
+
+int AUD_setSoundVolume(AUD_Channel* handle, float volume)
{
if(handle)
{
assert(AUD_device);
- AUD_SourceCaps caps;
- caps.handle = handle;
- caps.value = volume;
try
{
- return AUD_device->setCapability(AUD_CAPS_SOURCE_VOLUME, &caps);
+ return AUD_device->setVolume(handle, volume);
}
- catch(AUD_Exception) {}
+ catch(AUD_Exception&) {}
}
return false;
}
-int AUD_setSoundPitch(AUD_Handle* handle, float pitch)
+int AUD_setSoundPitch(AUD_Channel* handle, float pitch)
{
if(handle)
{
assert(AUD_device);
- AUD_SourceCaps caps;
- caps.handle = handle;
- caps.value = pitch;
try
{
- return AUD_device->setCapability(AUD_CAPS_SOURCE_PITCH, &caps);
+ return AUD_device->setPitch(handle, pitch);
}
- catch(AUD_Exception) {}
+ catch(AUD_Exception&) {}
}
return false;
}
@@ -544,24 +705,24 @@ AUD_Device* AUD_openReadDevice(AUD_DeviceSpecs specs)
{
return new AUD_ReadDevice(specs);
}
- catch(AUD_Exception)
+ catch(AUD_Exception&)
{
return NULL;
}
}
-AUD_Handle* AUD_playDevice(AUD_Device* device, AUD_Sound* sound, float seek)
+AUD_Channel* AUD_playDevice(AUD_Device* device, AUD_Sound* sound, float seek)
{
assert(device);
assert(sound);
try
{
- AUD_Handle* handle = device->play(sound);
+ AUD_Channel* handle = device->play(sound);
device->seek(handle, seek);
return handle;
}
- catch(AUD_Exception)
+ catch(AUD_Exception&)
{
return NULL;
}
@@ -573,28 +734,26 @@ int AUD_setDeviceVolume(AUD_Device* device, float volume)
try
{
- return device->setCapability(AUD_CAPS_VOLUME, &volume);
+ device->setVolume(volume);
+ return true;
}
- catch(AUD_Exception) {}
+ catch(AUD_Exception&) {}
return false;
}
-int AUD_setDeviceSoundVolume(AUD_Device* device, AUD_Handle* handle,
+int AUD_setDeviceSoundVolume(AUD_Device* device, AUD_Channel* handle,
float volume)
{
if(handle)
{
assert(device);
- AUD_SourceCaps caps;
- caps.handle = handle;
- caps.value = volume;
try
{
- return device->setCapability(AUD_CAPS_SOURCE_VOLUME, &caps);
+ return device->setVolume(handle, volume);
}
- catch(AUD_Exception) {}
+ catch(AUD_Exception&) {}
}
return false;
}
@@ -608,7 +767,7 @@ int AUD_readDevice(AUD_Device* device, data_t* buffer, int length)
{
return device->read(buffer, length);
}
- catch(AUD_Exception)
+ catch(AUD_Exception&)
{
return false;
}
@@ -622,7 +781,7 @@ void AUD_closeReadDevice(AUD_Device* device)
{
delete device;
}
- catch(AUD_Exception)
+ catch(AUD_Exception&)
{
}
}
@@ -679,6 +838,32 @@ float* AUD_readSoundBuffer(const char* filename, float low, float high,
return result;
}
+static void pauseSound(AUD_Channel* handle)
+{
+ assert(AUD_device);
+
+ AUD_device->pause(handle);
+}
+
+AUD_Channel* AUD_pauseAfter(AUD_Channel* handle, float seconds)
+{
+ assert(AUD_device);
+
+ AUD_SilenceFactory silence;
+ AUD_LimiterFactory limiter(&silence, 0, seconds);
+
+ try
+ {
+ AUD_Channel* channel = AUD_device->play(&limiter);
+ AUD_device->setStopCallback(channel, (stopCallback)pauseSound, handle);
+ return channel;
+ }
+ catch(AUD_Exception&)
+ {
+ return NULL;
+ }
+}
+
AUD_Sound* AUD_createSequencer(void* data, AUD_volumeFunction volume)
{
/* AUD_XXX should be this: but AUD_createSequencer is called before the device
@@ -721,23 +906,16 @@ void AUD_muteSequencer(AUD_Sound* sequencer, AUD_SequencerEntry* entry, char mut
int AUD_readSound(AUD_Sound* sound, sample_t* buffer, int length)
{
- AUD_IReader* reader = sound->createReader();
AUD_DeviceSpecs specs;
sample_t* buf;
- specs.specs = reader->getSpecs();
+ specs.rate = AUD_RATE_INVALID;
specs.channels = AUD_CHANNELS_MONO;
- specs.format = AUD_FORMAT_FLOAT32;
-
- AUD_ChannelMapperFactory mapper(reader, specs);
+ specs.format = AUD_FORMAT_INVALID;
- if(!reader || reader->getType() != AUD_TYPE_BUFFER)
- return -1;
+ AUD_ChannelMapperFactory mapper(sound, specs);
- reader = mapper.createReader();
-
- if(!reader)
- return -1;
+ AUD_IReader* reader = mapper.createReader();
int len = reader->getLength();
float samplejump = (float)len / (float)length;
@@ -766,7 +944,7 @@ int AUD_readSound(AUD_Sound* sound, sample_t* buffer, int length)
}
}
- delete reader; AUD_DELETE("reader")
+ delete reader;
return length;
}
@@ -789,7 +967,7 @@ void AUD_stopPlayback()
#endif
}
-void AUD_seekSequencer(AUD_Handle* handle, float time)
+void AUD_seekSequencer(AUD_Channel* handle, float time)
{
#ifdef WITH_JACK
AUD_JackDevice* device = dynamic_cast<AUD_JackDevice*>(AUD_device);
@@ -802,7 +980,7 @@ void AUD_seekSequencer(AUD_Handle* handle, float time)
}
}
-float AUD_getSequencerPosition(AUD_Handle* handle)
+float AUD_getSequencerPosition(AUD_Channel* handle)
{
#ifdef WITH_JACK
AUD_JackDevice* device = dynamic_cast<AUD_JackDevice*>(AUD_device);
@@ -833,16 +1011,3 @@ int AUD_doesPlayback()
#endif
return -1;
}
-
-#ifdef AUD_DEBUG_MEMORY
-int AUD_References(int count, const char* text)
-{
- static int m_count = 0;
- m_count += count;
- if(count > 0)
- printf("+%s\n", text);
- if(count < 0)
- printf("-%s\n", text);
- return m_count;
-}
-#endif
diff --git a/intern/audaspace/intern/AUD_C-API.h b/intern/audaspace/intern/AUD_C-API.h
index 55aed02153f..4dc074b9288 100644
--- a/intern/audaspace/intern/AUD_C-API.h
+++ b/intern/audaspace/intern/AUD_C-API.h
@@ -48,7 +48,7 @@ typedef struct
#ifndef AUD_CAPI_IMPLEMENTATION
typedef void AUD_Sound;
- typedef void AUD_Handle;
+ typedef void AUD_Channel;
typedef void AUD_Device;
typedef void AUD_SequencerEntry;
typedef float (*AUD_volumeFunction)(void*, void*, float);
@@ -154,10 +154,9 @@ extern AUD_Sound* AUD_loopSound(AUD_Sound* sound);
* Sets a remaining loop count of a looping sound that currently plays.
* \param handle The playback handle.
* \param loops The count of remaining loops, -1 for infinity.
- * \param time The time after which playback should stop, -1 for infinity.
* \return Whether the handle is valid.
*/
-extern int AUD_setLoop(AUD_Handle* handle, int loops, float time);
+extern int AUD_setLoop(AUD_Channel* handle, int loops);
/**
* Rectifies a sound.
@@ -179,28 +178,28 @@ extern void AUD_unload(AUD_Sound* sound);
* paused when its end has been reached.
* \return A handle to the played back sound.
*/
-extern AUD_Handle* AUD_play(AUD_Sound* sound, int keep);
+extern AUD_Channel* AUD_play(AUD_Sound* sound, int keep);
/**
* Pauses a played back sound.
* \param handle The handle to the sound.
* \return Whether the handle has been playing or not.
*/
-extern int AUD_pause(AUD_Handle* handle);
+extern int AUD_pause(AUD_Channel* handle);
/**
* Resumes a paused sound.
* \param handle The handle to the sound.
* \return Whether the handle has been paused or not.
*/
-extern int AUD_resume(AUD_Handle* handle);
+extern int AUD_resume(AUD_Channel* handle);
/**
* Stops a playing or paused sound.
* \param handle The handle to the sound.
* \return Whether the handle has been valid or not.
*/
-extern int AUD_stop(AUD_Handle* handle);
+extern int AUD_stop(AUD_Channel* handle);
/**
* Sets the end behaviour of a playing or paused sound.
@@ -209,7 +208,7 @@ extern int AUD_stop(AUD_Handle* handle);
* paused when its end has been reached.
* \return Whether the handle has been valid or not.
*/
-extern int AUD_setKeep(AUD_Handle* handle, int keep);
+extern int AUD_setKeep(AUD_Channel* handle, int keep);
/**
* Seeks a playing or paused sound.
@@ -217,7 +216,7 @@ extern int AUD_setKeep(AUD_Handle* handle, int keep);
* \param seekTo From where the sound file should be played back in seconds.
* \return Whether the handle has been valid or not.
*/
-extern int AUD_seek(AUD_Handle* handle, float seekTo);
+extern int AUD_seek(AUD_Channel* handle, float seekTo);
/**
* Retrieves the playback position of a handle.
@@ -225,74 +224,155 @@ extern int AUD_seek(AUD_Handle* handle, float seekTo);
* \return The current playback position in seconds or 0.0 if the handle is
* invalid.
*/
-extern float AUD_getPosition(AUD_Handle* handle);
+extern float AUD_getPosition(AUD_Channel* handle);
/**
* Returns the status of a playing, paused or stopped sound.
* \param handle The handle to the sound.
* \return The status of the sound behind the handle.
*/
-extern AUD_Status AUD_getStatus(AUD_Handle* handle);
+extern AUD_Status AUD_getStatus(AUD_Channel* handle);
/**
- * Plays a 3D sound.
- * \param sound The handle of the sound file.
- * \param keep When keep is true the sound source will not be deleted but set to
- * paused when its end has been reached.
- * \return A handle to the played back sound.
- * \note The factory must provide a mono (single channel) source and the device
- * must support 3D audio, otherwise the sound is played back normally.
+ * Sets the listener location.
+ * \param location The new location.
+ */
+extern int AUD_setListenerLocation(const float* location);
+
+/**
+ * Sets the listener velocity.
+ * \param velocity The new velocity.
+ */
+extern int AUD_setListenerVelocity(const float* velocity);
+
+/**
+ * Sets the listener orientation.
+ * \param orientation The new orientation as quaternion.
+ */
+extern int AUD_setListenerOrientation(const float* orientation);
+
+/**
+ * Sets the speed of sound.
+ * This value is needed for doppler effect calculation.
+ * \param speed The new speed of sound.
*/
-extern AUD_Handle* AUD_play3D(AUD_Sound* sound, int keep);
+extern int AUD_setSpeedOfSound(float speed);
/**
- * Updates the listener 3D data.
- * \param data The 3D data.
+ * Sets the doppler factor.
+ * This value is a scaling factor for the velocity vectors of sources and
+ * listener which is used while calculating the doppler effect.
+ * \param factor The new doppler factor.
+ */
+extern int AUD_setDopplerFactor(float factor);
+
+/**
+ * Sets the distance model.
+ * \param model distance model.
+ */
+extern int AUD_setDistanceModel(AUD_DistanceModel model);
+
+/**
+ * Sets the location of a source.
+ * \param handle The handle of the source.
+ * \param location The new location.
* \return Whether the action succeeded.
*/
-extern int AUD_updateListener(AUD_3DData* data);
+extern int AUD_setSourceLocation(AUD_Channel* handle, const float* location);
/**
- * Sets a 3D device setting.
- * \param setting The setting type.
- * \param value The new setting value.
+ * Sets the velocity of a source.
+ * \param handle The handle of the source.
+ * \param velocity The new velocity.
* \return Whether the action succeeded.
*/
-extern int AUD_set3DSetting(AUD_3DSetting setting, float value);
+extern int AUD_setSourceVelocity(AUD_Channel* handle, const float* velocity);
/**
- * Retrieves a 3D device setting.
- * \param setting The setting type.
- * \return The setting value.
+ * Sets the orientation of a source.
+ * \param handle The handle of the source.
+ * \param orientation The new orientation as quaternion.
+ * \return Whether the action succeeded.
+ */
+extern int AUD_setSourceOrientation(AUD_Channel* handle, const float* orientation);
+
+/**
+ * Sets whether the source location, velocity and orientation are relative
+ * to the listener.
+ * \param handle The handle of the source.
+ * \param relative Whether the source is relative.
+ * \return Whether the action succeeded.
*/
-extern float AUD_get3DSetting(AUD_3DSetting setting);
+extern int AUD_setRelative(AUD_Channel* handle, int relative);
/**
- * Updates a listeners 3D data.
- * \param handle The source handle.
- * \param data The 3D data.
+ * Sets the maximum volume of a source.
+ * \param handle The handle of the source.
+ * \param volume The new maximum volume.
* \return Whether the action succeeded.
*/
-extern int AUD_update3DSource(AUD_Handle* handle, AUD_3DData* data);
+extern int AUD_setVolumeMaximum(AUD_Channel* handle, float volume);
/**
- * Sets a 3D source setting.
- * \param handle The source handle.
- * \param setting The setting type.
- * \param value The new setting value.
+ * Sets the minimum volume of a source.
+ * \param handle The handle of the source.
+ * \param volume The new minimum volume.
* \return Whether the action succeeded.
*/
-extern int AUD_set3DSourceSetting(AUD_Handle* handle,
- AUD_3DSourceSetting setting, float value);
+extern int AUD_setVolumeMinimum(AUD_Channel* handle, float volume);
/**
- * Retrieves a 3D source setting.
- * \param handle The source handle.
- * \param setting The setting type.
- * \return The setting value.
+ * Sets the maximum distance of a source.
+ * If a source is further away from the reader than this distance, the
+ * volume will automatically be set to 0.
+ * \param handle The handle of the source.
+ * \param distance The new maximum distance.
+ * \return Whether the action succeeded.
*/
-extern float AUD_get3DSourceSetting(AUD_Handle* handle,
- AUD_3DSourceSetting setting);
+extern int AUD_setDistanceMaximum(AUD_Channel* handle, float distance);
+
+/**
+ * Sets the reference distance of a source.
+ * \param handle The handle of the source.
+ * \param distance The new reference distance.
+ * \return Whether the action succeeded.
+ */
+extern int AUD_setDistanceReference(AUD_Channel* handle, float distance);
+
+/**
+ * Sets the attenuation of a source.
+ * This value is used for distance calculation.
+ * \param handle The handle of the source.
+ * \param factor The new attenuation.
+ * \return Whether the action succeeded.
+ */
+extern int AUD_setAttenuation(AUD_Channel* handle, float factor);
+
+/**
+ * Sets the outer angle of the cone of a source.
+ * \param handle The handle of the source.
+ * \param angle The new outer angle of the cone.
+ * \return Whether the action succeeded.
+ */
+extern int AUD_setConeAngleOuter(AUD_Channel* handle, float angle);
+
+/**
+ * Sets the inner angle of the cone of a source.
+ * \param handle The handle of the source.
+ * \param angle The new inner angle of the cone.
+ * \return Whether the action succeeded.
+ */
+extern int AUD_setConeAngleInner(AUD_Channel* handle, float angle);
+
+/**
+ * Sets the outer volume of the cone of a source.
+ * The volume between inner and outer angle is interpolated between inner
+ * volume and this value.
+ * \param handle The handle of the source.
+ * \param volume The new outer volume of the cone.
+ * \return Whether the action succeeded.
+ */
+extern int AUD_setConeVolumeOuter(AUD_Channel* handle, float volume);
/**
* Sets the volume of a played back sound.
@@ -300,7 +380,7 @@ extern float AUD_get3DSourceSetting(AUD_Handle* handle,
* \param volume The new volume, must be between 0.0 and 1.0.
* \return Whether the action succeeded.
*/
-extern int AUD_setSoundVolume(AUD_Handle* handle, float volume);
+extern int AUD_setSoundVolume(AUD_Channel* handle, float volume);
/**
* Sets the pitch of a played back sound.
@@ -308,7 +388,7 @@ extern int AUD_setSoundVolume(AUD_Handle* handle, float volume);
* \param pitch The new pitch.
* \return Whether the action succeeded.
*/
-extern int AUD_setSoundPitch(AUD_Handle* handle, float pitch);
+extern int AUD_setSoundPitch(AUD_Channel* handle, float pitch);
/**
* Opens a read device, with which audio data can be read.
@@ -332,7 +412,7 @@ extern int AUD_setDeviceVolume(AUD_Device* device, float volume);
* \param seek The position where the sound should be seeked to.
* \return A handle to the played back sound.
*/
-extern AUD_Handle* AUD_playDevice(AUD_Device* device, AUD_Sound* sound, float seek);
+extern AUD_Channel* AUD_playDevice(AUD_Device* device, AUD_Sound* sound, float seek);
/**
* Sets the volume of a played back sound of a read device.
@@ -342,7 +422,7 @@ extern AUD_Handle* AUD_playDevice(AUD_Device* device, AUD_Sound* sound, float se
* \return Whether the action succeeded.
*/
extern int AUD_setDeviceSoundVolume(AUD_Device* device,
- AUD_Handle* handle,
+ AUD_Channel* handle,
float volume);
/**
@@ -372,6 +452,14 @@ extern float* AUD_readSoundBuffer(const char* filename, float low, float high,
float sthreshold, int samplerate,
int* length);
+/**
+ * Pauses a playing sound after a specific amount of time.
+ * \param handle The handle to the sound.
+ * \param time The time in seconds.
+ * \return The silence handle.
+ */
+extern AUD_Channel* AUD_pauseAfter(AUD_Channel* handle, float seconds);
+
extern AUD_Sound* AUD_createSequencer(void* data, AUD_volumeFunction volume);
extern void AUD_destroySequencer(AUD_Sound* sequencer);
@@ -393,9 +481,9 @@ extern void AUD_startPlayback();
extern void AUD_stopPlayback();
-extern void AUD_seekSequencer(AUD_Handle* handle, float time);
+extern void AUD_seekSequencer(AUD_Channel* handle, float time);
-extern float AUD_getSequencerPosition(AUD_Handle* handle);
+extern float AUD_getSequencerPosition(AUD_Channel* handle);
#ifdef WITH_JACK
extern void AUD_setSyncCallback(AUD_syncFunction function, void* data);
diff --git a/intern/audaspace/intern/AUD_ChannelMapperFactory.cpp b/intern/audaspace/intern/AUD_ChannelMapperFactory.cpp
index 3420ed16649..b3d5434b1e3 100644
--- a/intern/audaspace/intern/AUD_ChannelMapperFactory.cpp
+++ b/intern/audaspace/intern/AUD_ChannelMapperFactory.cpp
@@ -28,13 +28,6 @@
#include <cstring>
-AUD_ChannelMapperFactory::AUD_ChannelMapperFactory(AUD_IReader* reader,
- AUD_DeviceSpecs specs) :
- AUD_MixerFactory(reader, specs)
-{
- memset(m_mapping, 0, sizeof(m_mapping));
-}
-
AUD_ChannelMapperFactory::AUD_ChannelMapperFactory(AUD_IFactory* factory,
AUD_DeviceSpecs specs) :
AUD_MixerFactory(factory, specs)
@@ -42,12 +35,6 @@ AUD_ChannelMapperFactory::AUD_ChannelMapperFactory(AUD_IFactory* factory,
memset(m_mapping, 0, sizeof(m_mapping));
}
-AUD_ChannelMapperFactory::AUD_ChannelMapperFactory(AUD_DeviceSpecs specs) :
- AUD_MixerFactory(specs)
-{
- memset(m_mapping, 0, sizeof(m_mapping));
-}
-
AUD_ChannelMapperFactory::~AUD_ChannelMapperFactory()
{
for(int i = 1; i < 10; i++)
@@ -72,12 +59,12 @@ float** AUD_ChannelMapperFactory::getMapping(int ic)
{
int channels = m_specs.channels;
- m_mapping[ic] = new float*[channels+1]; AUD_NEW("mapping")
+ m_mapping[ic] = new float*[channels+1];
m_mapping[ic][channels] = 0;
for(int i = 0; i < channels; i++)
{
- m_mapping[ic][i] = new float[ic+1]; AUD_NEW("mapping")
+ m_mapping[ic][i] = new float[ic+1];
for(int j = 0; j <= ic; j++)
m_mapping[ic][i][j] = ((i == j) || (channels == 1) ||
(ic == 0)) ? 1.0f : 0.0f;
@@ -99,27 +86,21 @@ void AUD_ChannelMapperFactory::deleteMapping(int ic)
{
if(m_mapping[ic][i] != 0)
{
- delete[] m_mapping[ic][i]; AUD_DELETE("mapping")
+ delete[] m_mapping[ic][i];
}
else
break;
}
- delete[] m_mapping[ic]; AUD_DELETE("mapping")
+ delete[] m_mapping[ic];
m_mapping[ic] = 0;
}
}
-AUD_IReader* AUD_ChannelMapperFactory::createReader()
+AUD_IReader* AUD_ChannelMapperFactory::createReader() const
{
AUD_IReader* reader = getReader();
+ int ic = reader->getSpecs().channels;
- if(reader != 0)
- {
- int ic = reader->getSpecs().channels;
-
- reader = new AUD_ChannelMapperReader(reader, getMapping(ic));
- AUD_NEW("reader")
- }
-
- return reader;
+ return new AUD_ChannelMapperReader(reader,
+ const_cast<AUD_ChannelMapperFactory*>(this)->getMapping(ic));
}
diff --git a/intern/audaspace/intern/AUD_ChannelMapperFactory.h b/intern/audaspace/intern/AUD_ChannelMapperFactory.h
index a67bfa12123..2f315874421 100644
--- a/intern/audaspace/intern/AUD_ChannelMapperFactory.h
+++ b/intern/audaspace/intern/AUD_ChannelMapperFactory.h
@@ -40,10 +40,12 @@ private:
*/
float **m_mapping[9];
+ // hide copy constructor and operator=
+ AUD_ChannelMapperFactory(const AUD_ChannelMapperFactory&);
+ AUD_ChannelMapperFactory& operator=(const AUD_ChannelMapperFactory&);
+
public:
- AUD_ChannelMapperFactory(AUD_IReader* reader, AUD_DeviceSpecs specs);
AUD_ChannelMapperFactory(AUD_IFactory* factory, AUD_DeviceSpecs specs);
- AUD_ChannelMapperFactory(AUD_DeviceSpecs specs);
virtual ~AUD_ChannelMapperFactory();
@@ -59,7 +61,7 @@ public:
*/
void deleteMapping(int ic);
- virtual AUD_IReader* createReader();
+ virtual AUD_IReader* createReader() const;
};
#endif //AUD_CHANNELMAPPERFACTORY
diff --git a/intern/audaspace/intern/AUD_ChannelMapperReader.cpp b/intern/audaspace/intern/AUD_ChannelMapperReader.cpp
index d78278219e8..71b9f35b3a4 100644
--- a/intern/audaspace/intern/AUD_ChannelMapperReader.cpp
+++ b/intern/audaspace/intern/AUD_ChannelMapperReader.cpp
@@ -24,7 +24,6 @@
*/
#include "AUD_ChannelMapperReader.h"
-#include "AUD_Buffer.h"
AUD_ChannelMapperReader::AUD_ChannelMapperReader(AUD_IReader* reader,
float **mapping) :
@@ -36,7 +35,7 @@ AUD_ChannelMapperReader::AUD_ChannelMapperReader(AUD_IReader* reader,
m_rch = m_specs.channels;
while(mapping[++channels] != 0);
- m_mapping = new float*[channels]; AUD_NEW("mapping")
+ m_mapping = new float*[channels];
m_specs.channels = (AUD_Channels)channels;
float sum;
@@ -44,7 +43,7 @@ AUD_ChannelMapperReader::AUD_ChannelMapperReader(AUD_IReader* reader,
while(channels--)
{
- m_mapping[channels] = new float[m_rch]; AUD_NEW("mapping")
+ m_mapping[channels] = new float[m_rch];
sum = 0.0f;
for(i=0; i < m_rch; i++)
sum += mapping[channels][i];
@@ -52,8 +51,6 @@ AUD_ChannelMapperReader::AUD_ChannelMapperReader(AUD_IReader* reader,
m_mapping[channels][i] = sum > 0.0f ?
mapping[channels][i]/sum : 0.0f;
}
-
- m_buffer = new AUD_Buffer(); AUD_NEW("buffer")
}
AUD_ChannelMapperReader::~AUD_ChannelMapperReader()
@@ -62,42 +59,37 @@ AUD_ChannelMapperReader::~AUD_ChannelMapperReader()
while(channels--)
{
- delete[] m_mapping[channels]; AUD_DELETE("mapping")
+ delete[] m_mapping[channels];
}
- delete[] m_mapping; AUD_DELETE("mapping")
-
- delete m_buffer; AUD_DELETE("buffer")
+ delete[] m_mapping;
}
-AUD_Specs AUD_ChannelMapperReader::getSpecs()
+AUD_Specs AUD_ChannelMapperReader::getSpecs() const
{
return m_specs;
}
void AUD_ChannelMapperReader::read(int & length, sample_t* & buffer)
{
- m_reader->read(length, buffer);
+ sample_t* in = buffer;
- int channels = m_specs.channels;
+ m_reader->read(length, in);
- if(m_buffer->getSize() < length * 4 * channels)
- m_buffer->resize(length * 4 * channels);
+ if(m_buffer.getSize() < length * AUD_SAMPLE_SIZE(m_specs))
+ m_buffer.resize(length * AUD_SAMPLE_SIZE(m_specs));
- sample_t* in = buffer;
- sample_t* out = m_buffer->getBuffer();
+ buffer = m_buffer.getBuffer();
sample_t sum;
for(int i = 0; i < length; i++)
{
- for(int j = 0; j < channels; j++)
+ for(int j = 0; j < m_specs.channels; j++)
{
sum = 0;
for(int k = 0; k < m_rch; k++)
sum += m_mapping[j][k] * in[i * m_rch + k];
- out[i * channels + j] = sum;
+ buffer[i * m_specs.channels + j] = sum;
}
}
-
- buffer = m_buffer->getBuffer();
}
diff --git a/intern/audaspace/intern/AUD_ChannelMapperReader.h b/intern/audaspace/intern/AUD_ChannelMapperReader.h
index fe79ab6edd6..398e14da55d 100644
--- a/intern/audaspace/intern/AUD_ChannelMapperReader.h
+++ b/intern/audaspace/intern/AUD_ChannelMapperReader.h
@@ -27,7 +27,7 @@
#define AUD_CHANNELMAPPERREADER
#include "AUD_EffectReader.h"
-class AUD_Buffer;
+#include "AUD_Buffer.h"
/**
* This class maps a sound source's channels to a specific output channel count.
@@ -39,7 +39,7 @@ private:
/**
* The sound output buffer.
*/
- AUD_Buffer *m_buffer;
+ AUD_Buffer m_buffer;
/**
* The output specification.
@@ -56,20 +56,24 @@ private:
*/
float **m_mapping;
+ // hide copy constructor and operator=
+ AUD_ChannelMapperReader(const AUD_ChannelMapperReader&);
+ AUD_ChannelMapperReader& operator=(const AUD_ChannelMapperReader&);
+
public:
/**
* Creates a channel mapper reader.
* \param reader The reader to map.
* \param mapping The mapping specification as two dimensional float array.
- * \exception AUD_Exception Thrown if the reader is NULL.
*/
AUD_ChannelMapperReader(AUD_IReader* reader, float **mapping);
+
/**
* Destroys the reader.
*/
~AUD_ChannelMapperReader();
- virtual AUD_Specs getSpecs();
+ virtual AUD_Specs getSpecs() const;
virtual void read(int & length, sample_t* & buffer);
};
diff --git a/intern/audaspace/intern/AUD_ConverterFactory.cpp b/intern/audaspace/intern/AUD_ConverterFactory.cpp
index 1c6d5468251..057d97fe794 100644
--- a/intern/audaspace/intern/AUD_ConverterFactory.cpp
+++ b/intern/audaspace/intern/AUD_ConverterFactory.cpp
@@ -26,29 +26,18 @@
#include "AUD_ConverterFactory.h"
#include "AUD_ConverterReader.h"
-AUD_ConverterFactory::AUD_ConverterFactory(AUD_IReader* reader,
- AUD_DeviceSpecs specs) :
- AUD_MixerFactory(reader, specs) {}
-
AUD_ConverterFactory::AUD_ConverterFactory(AUD_IFactory* factory,
AUD_DeviceSpecs specs) :
- AUD_MixerFactory(factory, specs) {}
-
-AUD_ConverterFactory::AUD_ConverterFactory(AUD_DeviceSpecs specs) :
- AUD_MixerFactory(specs) {}
+ AUD_MixerFactory(factory, specs)
+{
+}
-AUD_IReader* AUD_ConverterFactory::createReader()
+AUD_IReader* AUD_ConverterFactory::createReader() const
{
AUD_IReader* reader = getReader();
- if(reader != 0)
- {
- if(m_specs.format != AUD_FORMAT_FLOAT32)
- {
- reader = new AUD_ConverterReader(reader, m_specs);
- AUD_NEW("reader")
- }
- }
+ if(m_specs.format != AUD_FORMAT_FLOAT32)
+ reader = new AUD_ConverterReader(reader, m_specs);
return reader;
}
diff --git a/intern/audaspace/intern/AUD_ConverterFactory.h b/intern/audaspace/intern/AUD_ConverterFactory.h
index 11ca6c9f0a8..3535616a4a6 100644
--- a/intern/audaspace/intern/AUD_ConverterFactory.h
+++ b/intern/audaspace/intern/AUD_ConverterFactory.h
@@ -34,12 +34,15 @@
*/
class AUD_ConverterFactory : public AUD_MixerFactory
{
+private:
+ // hide copy constructor and operator=
+ AUD_ConverterFactory(const AUD_ConverterFactory&);
+ AUD_ConverterFactory& operator=(const AUD_ConverterFactory&);
+
public:
- AUD_ConverterFactory(AUD_IReader* reader, AUD_DeviceSpecs specs);
AUD_ConverterFactory(AUD_IFactory* factory, AUD_DeviceSpecs specs);
- AUD_ConverterFactory(AUD_DeviceSpecs specs);
- virtual AUD_IReader* createReader();
+ virtual AUD_IReader* createReader() const;
};
#endif //AUD_CONVERTERFACTORY
diff --git a/intern/audaspace/intern/AUD_ConverterReader.cpp b/intern/audaspace/intern/AUD_ConverterReader.cpp
index 808144085bb..379a7c85851 100644
--- a/intern/audaspace/intern/AUD_ConverterReader.cpp
+++ b/intern/audaspace/intern/AUD_ConverterReader.cpp
@@ -24,7 +24,6 @@
*/
#include "AUD_ConverterReader.h"
-#include "AUD_Buffer.h"
AUD_ConverterReader::AUD_ConverterReader(AUD_IReader* reader,
AUD_DeviceSpecs specs) :
@@ -63,16 +62,9 @@ AUD_ConverterReader::AUD_ConverterReader(AUD_IReader* reader,
}
m_specs.format = specs.format;
-
- m_buffer = new AUD_Buffer(); AUD_NEW("buffer")
-}
-
-AUD_ConverterReader::~AUD_ConverterReader()
-{
- delete m_buffer; AUD_DELETE("buffer")
}
-AUD_Specs AUD_ConverterReader::getSpecs()
+AUD_Specs AUD_ConverterReader::getSpecs() const
{
return m_specs.specs;
}
@@ -83,11 +75,11 @@ void AUD_ConverterReader::read(int & length, sample_t* & buffer)
int samplesize = AUD_SAMPLE_SIZE(m_specs);
- if(m_buffer->getSize() < length*samplesize)
- m_buffer->resize(length*samplesize);
+ if(m_buffer.getSize() < length * samplesize)
+ m_buffer.resize(length * samplesize);
- m_convert((data_t*)m_buffer->getBuffer(), (data_t*)buffer,
+ m_convert((data_t*)m_buffer.getBuffer(), (data_t*)buffer,
length * m_specs.channels);
- buffer = m_buffer->getBuffer();
+ buffer = m_buffer.getBuffer();
}
diff --git a/intern/audaspace/intern/AUD_ConverterReader.h b/intern/audaspace/intern/AUD_ConverterReader.h
index ba49bbfd9ba..64a46fd63e6 100644
--- a/intern/audaspace/intern/AUD_ConverterReader.h
+++ b/intern/audaspace/intern/AUD_ConverterReader.h
@@ -28,7 +28,7 @@
#include "AUD_EffectReader.h"
#include "AUD_ConverterFunctions.h"
-class AUD_Buffer;
+#include "AUD_Buffer.h"
/**
* This class converts a sound source from one to another format.
@@ -39,7 +39,7 @@ private:
/**
* The sound output buffer.
*/
- AUD_Buffer *m_buffer;
+ AUD_Buffer m_buffer;
/**
* The target specification.
@@ -51,20 +51,19 @@ private:
*/
AUD_convert_f m_convert;
+ // hide copy constructor and operator=
+ AUD_ConverterReader(const AUD_ConverterReader&);
+ AUD_ConverterReader& operator=(const AUD_ConverterReader&);
+
public:
/**
* Creates a converter reader.
* \param reader The reader to convert.
* \param specs The target specification.
- * \exception AUD_Exception Thrown if the reader is NULL.
*/
AUD_ConverterReader(AUD_IReader* reader, AUD_DeviceSpecs specs);
- /**
- * Destroys the reader.
- */
- ~AUD_ConverterReader();
- virtual AUD_Specs getSpecs();
+ virtual AUD_Specs getSpecs() const;
virtual void read(int & length, sample_t* & buffer);
};
diff --git a/intern/audaspace/intern/AUD_DefaultMixer.cpp b/intern/audaspace/intern/AUD_DefaultMixer.cpp
new file mode 100644
index 00000000000..12faa10d866
--- /dev/null
+++ b/intern/audaspace/intern/AUD_DefaultMixer.cpp
@@ -0,0 +1,63 @@
+/*
+ * $Id$
+ *
+ * ***** BEGIN LGPL LICENSE BLOCK *****
+ *
+ * Copyright 2009 Jörg Hermann Müller
+ *
+ * This file is part of AudaSpace.
+ *
+ * AudaSpace is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * AudaSpace is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with AudaSpace. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * ***** END LGPL LICENSE BLOCK *****
+ */
+
+#include "AUD_DefaultMixer.h"
+#include "AUD_SRCResampleReader.h"
+#include "AUD_ChannelMapperReader.h"
+#include "AUD_ChannelMapperFactory.h"
+
+#include <cstring>
+
+AUD_DefaultMixer::AUD_DefaultMixer(AUD_DeviceSpecs specs) :
+ AUD_Mixer(specs)
+{
+}
+
+AUD_IReader* AUD_DefaultMixer::prepare(AUD_IReader* reader)
+{
+ // hacky for now, until a better channel mapper reader is available
+ AUD_ChannelMapperFactory cmf(NULL, m_specs);
+
+ AUD_Specs specs = reader->getSpecs();
+
+ // if channel count is lower in output, rechannel before resampling
+ if(specs.channels < m_specs.channels)
+ {
+ reader = new AUD_ChannelMapperReader(reader,
+ cmf.getMapping(specs.channels));
+ specs.channels = m_specs.channels;
+ }
+
+ // resample
+ if(specs.rate != m_specs.rate)
+ reader = new AUD_SRCResampleReader(reader, m_specs.specs);
+
+ // rechannel
+ if(specs.channels != m_specs.channels)
+ reader = new AUD_ChannelMapperReader(reader,
+ cmf.getMapping(specs.channels));
+
+ return reader;
+}
diff --git a/intern/audaspace/FX/AUD_SumReader.h b/intern/audaspace/intern/AUD_DefaultMixer.h
index 76ccf2f863a..c2f69629c88 100644
--- a/intern/audaspace/FX/AUD_SumReader.h
+++ b/intern/audaspace/intern/AUD_DefaultMixer.h
@@ -23,42 +23,31 @@
* ***** END LGPL LICENSE BLOCK *****
*/
-#ifndef AUD_SUMREADER
-#define AUD_SUMREADER
+#ifndef AUD_DEFAULTMIXER
+#define AUD_DEFAULTMIXER
-#include "AUD_EffectReader.h"
-class AUD_Buffer;
+#include "AUD_Mixer.h"
/**
- * This class represents an summer.
+ * This class is able to mix audiosignals of different channel count and sample
+ * rate and convert it to a specific output format.
+ * It uses a default ChannelMapperFactory and a SRCResampleFactory for
+ * the perparation.
*/
-class AUD_SumReader : public AUD_EffectReader
+class AUD_DefaultMixer : public AUD_Mixer
{
-private:
- /**
- * The playback buffer.
- */
- AUD_Buffer *m_buffer;
-
- /**
- * The sums of the specific channels.
- */
- AUD_Buffer *m_sums;
-
public:
/**
- * Creates a new sum reader.
- * \param reader The reader to read from.
- * \exception AUD_Exception Thrown if the reader specified is NULL.
+ * Creates the mixer.
*/
- AUD_SumReader(AUD_IReader* reader);
+ AUD_DefaultMixer(AUD_DeviceSpecs specs);
/**
- * Destroys the reader.
+ * This funuction prepares a reader for playback.
+ * \param reader The reader to prepare.
+ * \return The reader that should be used for playback.
*/
- virtual ~AUD_SumReader();
-
- virtual void read(int & length, sample_t* & buffer);
+ virtual AUD_IReader* prepare(AUD_IReader* reader);
};
-#endif //AUD_SUMREADER
+#endif //AUD_DEFAULTMIXER
diff --git a/intern/audaspace/intern/AUD_FileFactory.cpp b/intern/audaspace/intern/AUD_FileFactory.cpp
index 5888479a0ba..986fc6c109a 100644
--- a/intern/audaspace/intern/AUD_FileFactory.cpp
+++ b/intern/audaspace/intern/AUD_FileFactory.cpp
@@ -23,76 +23,59 @@
* ***** END LGPL LICENSE BLOCK *****
*/
-#include "AUD_FileFactory.h"
-#include "AUD_Buffer.h"
-
-#include <cstring>
-
#ifdef WITH_FFMPEG
// needed for INT64_C
+#ifndef __STDC_CONSTANT_MACROS
#define __STDC_CONSTANT_MACROS
-
+#endif
#include "AUD_FFMPEGReader.h"
#endif
+
+#include "AUD_FileFactory.h"
+#include "AUD_Buffer.h"
+
+#include <cstring>
+
#ifdef WITH_SNDFILE
#include "AUD_SndFileReader.h"
#endif
-AUD_FileFactory::AUD_FileFactory(const char* filename)
+AUD_FileFactory::AUD_FileFactory(std::string filename) :
+ m_filename(filename)
{
- if(filename != NULL)
- {
- m_filename = new char[strlen(filename)+1]; AUD_NEW("string")
- strcpy(m_filename, filename);
- }
- else
- m_filename = NULL;
}
-AUD_FileFactory::AUD_FileFactory(unsigned char* buffer, int size)
+AUD_FileFactory::AUD_FileFactory(const data_t* buffer, int size) :
+ m_buffer(new AUD_Buffer(size))
{
- m_filename = NULL;
- m_buffer = AUD_Reference<AUD_Buffer>(new AUD_Buffer(size));
memcpy(m_buffer.get()->getBuffer(), buffer, size);
}
-AUD_FileFactory::~AUD_FileFactory()
-{
- if(m_filename)
- {
- delete[] m_filename; AUD_DELETE("string")
- }
-}
+static const char* read_error = "AUD_FileFactory: File couldn't be read.";
-AUD_IReader* AUD_FileFactory::createReader()
+AUD_IReader* AUD_FileFactory::createReader() const
{
- AUD_IReader* reader = 0;
-
#ifdef WITH_SNDFILE
try
{
- if(m_filename)
- reader = new AUD_SndFileReader(m_filename);
+ if(m_buffer.get())
+ return new AUD_SndFileReader(m_buffer);
else
- reader = new AUD_SndFileReader(m_buffer);
- AUD_NEW("reader")
- return reader;
+ return new AUD_SndFileReader(m_filename);
}
- catch(AUD_Exception e) {}
+ catch(AUD_Exception&) {}
#endif
#ifdef WITH_FFMPEG
try
{
- if(m_filename)
- reader = new AUD_FFMPEGReader(m_filename);
+ if(m_buffer.get())
+ return new AUD_FFMPEGReader(m_buffer);
else
- reader = new AUD_FFMPEGReader(m_buffer);
- AUD_NEW("reader")
- return reader;
+ return new AUD_FFMPEGReader(m_filename);
}
- catch(AUD_Exception e) {}
+ catch(AUD_Exception&) {}
#endif
- return reader;
+ AUD_THROW(AUD_ERROR_FILE, read_error);
}
diff --git a/intern/audaspace/intern/AUD_FileFactory.h b/intern/audaspace/intern/AUD_FileFactory.h
index 6ab8f280534..9182667d72e 100644
--- a/intern/audaspace/intern/AUD_FileFactory.h
+++ b/intern/audaspace/intern/AUD_FileFactory.h
@@ -30,6 +30,8 @@
#include "AUD_Reference.h"
class AUD_Buffer;
+#include <string>
+
/**
* This factory tries to read a sound file via all available file readers.
*/
@@ -39,33 +41,32 @@ private:
/**
* The filename of the sound source file.
*/
- char* m_filename;
+ std::string m_filename;
/**
* The buffer to read from.
*/
AUD_Reference<AUD_Buffer> m_buffer;
+ // hide copy constructor and operator=
+ AUD_FileFactory(const AUD_FileFactory&);
+ AUD_FileFactory& operator=(const AUD_FileFactory&);
+
public:
/**
* Creates a new factory.
* \param filename The sound file path.
*/
- AUD_FileFactory(const char* filename);
+ AUD_FileFactory(std::string filename);
/**
* Creates a new factory.
* \param buffer The buffer to read from.
* \param size The size of the buffer.
*/
- AUD_FileFactory(unsigned char* buffer, int size);
-
- /**
- * Destroys the factory.
- */
- ~AUD_FileFactory();
+ AUD_FileFactory(const data_t* buffer, int size);
- virtual AUD_IReader* createReader();
+ virtual AUD_IReader* createReader() const;
};
#endif //AUD_FILEFACTORY
diff --git a/intern/audaspace/intern/AUD_I3DDevice.h b/intern/audaspace/intern/AUD_I3DDevice.h
index c36924160de..629b0997d4d 100644
--- a/intern/audaspace/intern/AUD_I3DDevice.h
+++ b/intern/audaspace/intern/AUD_I3DDevice.h
@@ -27,77 +27,288 @@
#define AUD_I3DDEVICE
#include "AUD_Space.h"
+#include "AUD_3DMath.h"
+
+struct AUD_Handle;
/**
* This class represents an output device for 3D sound.
- * Whether a normal device supports this or not can be checked with the
- * AUD_CAPS_3D_DEVICE capability.
*/
class AUD_I3DDevice
{
public:
/**
- * Plays a 3D sound source.
- * \param factory The factory to create the reader for the sound source.
- * \param keep When keep is true the sound source will not be deleted but
- * set to paused when its end has been reached.
- * \return Returns a handle with which the playback can be controlled.
- * This is NULL if the sound couldn't be played back.
- * \exception AUD_Exception Thrown if there's an unexpected (from the
- * device side) error during creation of the reader.
- * \note The factory must provide a mono (single channel) source otherwise
- * the sound is played back normally.
+ * Retrieves the listener location.
+ * \return The listener location.
+ */
+ virtual AUD_Vector3 getListenerLocation() const=0;
+
+ /**
+ * Sets the listener location.
+ * \param location The new location.
+ */
+ virtual void setListenerLocation(const AUD_Vector3& location)=0;
+
+ /**
+ * Retrieves the listener velocity.
+ * \return The listener velocity.
+ */
+ virtual AUD_Vector3 getListenerVelocity() const=0;
+
+ /**
+ * Sets the listener velocity.
+ * \param velocity The new velocity.
+ */
+ virtual void setListenerVelocity(const AUD_Vector3& velocity)=0;
+
+ /**
+ * Retrieves the listener orientation.
+ * \return The listener orientation as quaternion.
+ */
+ virtual AUD_Quaternion getListenerOrientation() const=0;
+
+ /**
+ * Sets the listener orientation.
+ * \param orientation The new orientation as quaternion.
+ */
+ virtual void setListenerOrientation(const AUD_Quaternion& orientation)=0;
+
+
+ /**
+ * Retrieves the speed of sound.
+ * This value is needed for doppler effect calculation.
+ * \return The speed of sound.
+ */
+ virtual float getSpeedOfSound() const=0;
+
+ /**
+ * Sets the speed of sound.
+ * This value is needed for doppler effect calculation.
+ * \param speed The new speed of sound.
+ */
+ virtual void setSpeedOfSound(float speed)=0;
+
+ /**
+ * Retrieves the doppler factor.
+ * This value is a scaling factor for the velocity vectors of sources and
+ * listener which is used while calculating the doppler effect.
+ * \return The doppler factor.
+ */
+ virtual float getDopplerFactor() const=0;
+
+ /**
+ * Sets the doppler factor.
+ * This value is a scaling factor for the velocity vectors of sources and
+ * listener which is used while calculating the doppler effect.
+ * \param factor The new doppler factor.
+ */
+ virtual void setDopplerFactor(float factor)=0;
+
+ /**
+ * Retrieves the distance model.
+ * \return The distance model.
+ */
+ virtual AUD_DistanceModel getDistanceModel() const=0;
+
+ /**
+ * Sets the distance model.
+ * \param model distance model.
+ */
+ virtual void setDistanceModel(AUD_DistanceModel model)=0;
+
+
+
+ /**
+ * Retrieves the location of a source.
+ * \param handle The handle of the source.
+ * \return The location.
+ */
+ virtual AUD_Vector3 getSourceLocation(AUD_Handle* handle)=0;
+
+ /**
+ * Sets the location of a source.
+ * \param handle The handle of the source.
+ * \param location The new location.
+ * \return Whether the action succeeded.
+ */
+ virtual bool setSourceLocation(AUD_Handle* handle, const AUD_Vector3& location)=0;
+
+ /**
+ * Retrieves the velocity of a source.
+ * \param handle The handle of the source.
+ * \return The velocity.
+ */
+ virtual AUD_Vector3 getSourceVelocity(AUD_Handle* handle)=0;
+
+ /**
+ * Sets the velocity of a source.
+ * \param handle The handle of the source.
+ * \param velocity The new velocity.
+ * \return Whether the action succeeded.
+ */
+ virtual bool setSourceVelocity(AUD_Handle* handle, const AUD_Vector3& velocity)=0;
+
+ /**
+ * Retrieves the orientation of a source.
+ * \param handle The handle of the source.
+ * \return The orientation as quaternion.
+ */
+ virtual AUD_Quaternion getSourceOrientation(AUD_Handle* handle)=0;
+
+ /**
+ * Sets the orientation of a source.
+ * \param handle The handle of the source.
+ * \param orientation The new orientation as quaternion.
+ * \return Whether the action succeeded.
+ */
+ virtual bool setSourceOrientation(AUD_Handle* handle, const AUD_Quaternion& orientation)=0;
+
+
+ /**
+ * Checks whether the source location, velocity and orientation are relative
+ * to the listener.
+ * \param handle The handle of the source.
+ * \return Whether the source is relative.
+ */
+ virtual bool isRelative(AUD_Handle* handle)=0;
+
+ /**
+ * Sets whether the source location, velocity and orientation are relative
+ * to the listener.
+ * \param handle The handle of the source.
+ * \param relative Whether the source is relative.
+ * \return Whether the action succeeded.
+ */
+ virtual bool setRelative(AUD_Handle* handle, bool relative)=0;
+
+ /**
+ * Retrieves the maximum volume of a source.
+ * \param handle The handle of the source.
+ * \return The maximum volume.
+ */
+ virtual float getVolumeMaximum(AUD_Handle* handle)=0;
+
+ /**
+ * Sets the maximum volume of a source.
+ * \param handle The handle of the source.
+ * \param volume The new maximum volume.
+ * \return Whether the action succeeded.
+ */
+ virtual bool setVolumeMaximum(AUD_Handle* handle, float volume)=0;
+
+ /**
+ * Retrieves the minimum volume of a source.
+ * \param handle The handle of the source.
+ * \return The minimum volume.
*/
- virtual AUD_Handle* play3D(AUD_IFactory* factory, bool keep = false)=0;
+ virtual float getVolumeMinimum(AUD_Handle* handle)=0;
/**
- * Updates a listeners 3D data.
- * \param data The 3D data.
+ * Sets the minimum volume of a source.
+ * \param handle The handle of the source.
+ * \param volume The new minimum volume.
* \return Whether the action succeeded.
*/
- virtual bool updateListener(AUD_3DData &data)=0;
+ virtual bool setVolumeMinimum(AUD_Handle* handle, float volume)=0;
+
+ /**
+ * Retrieves the maximum distance of a source.
+ * If a source is further away from the reader than this distance, the
+ * volume will automatically be set to 0.
+ * \param handle The handle of the source.
+ * \return The maximum distance.
+ */
+ virtual float getDistanceMaximum(AUD_Handle* handle)=0;
/**
- * Sets a 3D device setting.
- * \param setting The setting type.
- * \param value The new setting value.
+ * Sets the maximum distance of a source.
+ * If a source is further away from the reader than this distance, the
+ * volume will automatically be set to 0.
+ * \param handle The handle of the source.
+ * \param distance The new maximum distance.
* \return Whether the action succeeded.
*/
- virtual bool setSetting(AUD_3DSetting setting, float value)=0;
+ virtual bool setDistanceMaximum(AUD_Handle* handle, float distance)=0;
/**
- * Retrieves a 3D device setting.
- * \param setting The setting type.
- * \return The setting value.
+ * Retrieves the reference distance of a source.
+ * \param handle The handle of the source.
+ * \return The reference distance.
*/
- virtual float getSetting(AUD_3DSetting setting)=0;
+ virtual float getDistanceReference(AUD_Handle* handle)=0;
/**
- * Updates a listeners 3D data.
- * \param handle The source handle.
- * \param data The 3D data.
+ * Sets the reference distance of a source.
+ * \param handle The handle of the source.
+ * \param distance The new reference distance.
* \return Whether the action succeeded.
*/
- virtual bool updateSource(AUD_Handle* handle, AUD_3DData &data)=0;
+ virtual bool setDistanceReference(AUD_Handle* handle, float distance)=0;
+
+ /**
+ * Retrieves the attenuation of a source.
+ * \param handle The handle of the source.
+ * \return The attenuation.
+ */
+ virtual float getAttenuation(AUD_Handle* handle)=0;
/**
- * Sets a 3D source setting.
- * \param handle The source handle.
- * \param setting The setting type.
- * \param value The new setting value.
+ * Sets the attenuation of a source.
+ * This value is used for distance calculation.
+ * \param handle The handle of the source.
+ * \param factor The new attenuation.
* \return Whether the action succeeded.
*/
- virtual bool setSourceSetting(AUD_Handle* handle,
- AUD_3DSourceSetting setting, float value)=0;
+ virtual bool setAttenuation(AUD_Handle* handle, float factor)=0;
/**
- * Retrieves a 3D source setting.
- * \param handle The source handle.
- * \param setting The setting type.
- * \return The setting value.
+ * Retrieves the outer angle of the cone of a source.
+ * \param handle The handle of the source.
+ * \return The outer angle of the cone.
+ */
+ virtual float getConeAngleOuter(AUD_Handle* handle)=0;
+
+ /**
+ * Sets the outer angle of the cone of a source.
+ * \param handle The handle of the source.
+ * \param angle The new outer angle of the cone.
+ * \return Whether the action succeeded.
+ */
+ virtual bool setConeAngleOuter(AUD_Handle* handle, float angle)=0;
+
+ /**
+ * Retrieves the inner angle of the cone of a source.
+ * \param handle The handle of the source.
+ * \return The inner angle of the cone.
+ */
+ virtual float getConeAngleInner(AUD_Handle* handle)=0;
+
+ /**
+ * Sets the inner angle of the cone of a source.
+ * \param handle The handle of the source.
+ * \param angle The new inner angle of the cone.
+ * \return Whether the action succeeded.
+ */
+ virtual bool setConeAngleInner(AUD_Handle* handle, float angle)=0;
+
+ /**
+ * Retrieves the outer volume of the cone of a source.
+ * The volume between inner and outer angle is interpolated between inner
+ * volume and this value.
+ * \param handle The handle of the source.
+ * \return The outer volume of the cone.
+ */
+ virtual float getConeVolumeOuter(AUD_Handle* handle)=0;
+
+ /**
+ * Sets the outer volume of the cone of a source.
+ * The volume between inner and outer angle is interpolated between inner
+ * volume and this value.
+ * \param handle The handle of the source.
+ * \param volume The new outer volume of the cone.
+ * \return Whether the action succeeded.
*/
- virtual float getSourceSetting(AUD_Handle* handle,
- AUD_3DSourceSetting setting)=0;
+ virtual bool setConeVolumeOuter(AUD_Handle* handle, float volume)=0;
};
#endif //AUD_I3DDEVICE
diff --git a/intern/audaspace/intern/AUD_IDevice.h b/intern/audaspace/intern/AUD_IDevice.h
index e924f57cefc..d0925f6f647 100644
--- a/intern/audaspace/intern/AUD_IDevice.h
+++ b/intern/audaspace/intern/AUD_IDevice.h
@@ -30,9 +30,11 @@
class AUD_IFactory;
/// Handle structure, for inherition.
-typedef struct
+struct AUD_Handle
{
-} AUD_Handle;
+};
+
+typedef void (*stopCallback)(void*);
/**
* This class represents an output device for sound sources.
@@ -53,7 +55,7 @@ public:
/**
* Returns the specification of the device.
*/
- virtual AUD_DeviceSpecs getSpecs()=0;
+ virtual AUD_DeviceSpecs getSpecs() const=0;
/**
* Plays a sound source.
@@ -96,6 +98,16 @@ public:
virtual bool stop(AUD_Handle* handle)=0;
/**
+ * Gets the behaviour of the device for a played back sound when the sound
+ * doesn't return any more samples.
+ * \param handle The handle returned by the play function.
+ * \return
+ * - true if the source will be paused when it's end is reached
+ * - false if the handle won't kept or is invalid.
+ */
+ virtual bool getKeep(AUD_Handle* handle)=0;
+
+ /**
* Sets the behaviour of the device for a played back sound when the sound
* doesn't return any more samples.
* \param handle The handle returned by the play function.
@@ -107,16 +119,6 @@ public:
virtual bool setKeep(AUD_Handle* handle, bool keep)=0;
/**
- * Sends a message to a sound or all sounds that are currently played or
- * paused.
- * \param handle The sound that should receive the message or NULL if all
- * sounds should receive it.
- * \param message The message.
- * \return True if the message has been read by at least one sound.
- */
- virtual bool sendMessage(AUD_Handle* handle, AUD_Message &message)=0;
-
- /**
* Seeks in a played back sound.
* \param handle The handle returned by the play function.
* \param position The new position from where to play back, in seconds.
@@ -163,29 +165,80 @@ public:
virtual void unlock()=0;
/**
- * Checks if a specific capability as available on a device.
- * \param capability The capability.
- * \return Whether it is available or not.
+ * Retrieves the overall device volume.
+ * \return The overall device volume.
*/
- virtual bool checkCapability(int capability)=0;
+ virtual float getVolume() const=0;
/**
- * Set a value of a capability. The data behind the pointer depends on the
- * capability.
- * \param capability The capability.
- * \param value The value.
- * \return Whether the action succeeded or not.
+ * Sets the overall device volume.
+ * \param handle The sound handle.
+ * \param volume The overall device volume.
*/
- virtual bool setCapability(int capability, void *value)=0;
+ virtual void setVolume(float volume)=0;
/**
- * Retrieves a value of a capability. The data behind the pointer depends on
- * the capability.
- * \param capability The capability.
- * \param value The value.
- * \return Whether the action succeeded or not.
+ * Retrieves the volume of a playing sound.
+ * \param handle The sound handle.
+ * \return The volume.
+ */
+ virtual float getVolume(AUD_Handle* handle)=0;
+
+ /**
+ * Sets the volume of a playing sound.
+ * \param handle The sound handle.
+ * \param volume The volume.
+ * \return
+ * - true if the handle is valid.
+ * - false if the handle is invalid.
+ */
+ virtual bool setVolume(AUD_Handle* handle, float volume)=0;
+
+ /**
+ * Retrieves the pitch of a playing sound.
+ * \return The pitch.
+ */
+ virtual float getPitch(AUD_Handle* handle)=0;
+
+ /**
+ * Sets the pitch of a playing sound.
+ * \param handle The sound handle.
+ * \param pitch The pitch.
+ * \return
+ * - true if the handle is valid.
+ * - false if the handle is invalid.
+ */
+ virtual bool setPitch(AUD_Handle* handle, float pitch)=0;
+
+ /**
+ * Retrieves the loop count of a playing sound.
+ * A negative value indicates infinity.
+ * \return The remaining loop count.
+ */
+ virtual int getLoopCount(AUD_Handle* handle)=0;
+
+ /**
+ * Sets the loop count of a playing sound.
+ * A negative value indicates infinity.
+ * \param handle The sound handle.
+ * \param count The new loop count.
+ * \return
+ * - true if the handle is valid.
+ * - false if the handle is invalid.
+ */
+ virtual bool setLoopCount(AUD_Handle* handle, int count)=0;
+
+ /**
+ * Sets the callback function that's called when the end of a playing sound
+ * is reached.
+ * \param handle The sound handle.
+ * \param callback The callback function.
+ * \param data The data that should be passed to the callback function.
+ * \return
+ * - true if the handle is valid.
+ * - false if the handle is invalid.
*/
- virtual bool getCapability(int capability, void *value)=0;
+ virtual bool setStopCallback(AUD_Handle* handle, stopCallback callback = 0, void* data = 0)=0;
};
#endif //AUD_IDevice
diff --git a/intern/audaspace/intern/AUD_IFactory.h b/intern/audaspace/intern/AUD_IFactory.h
index f7f29c9e842..aed53cef749 100644
--- a/intern/audaspace/intern/AUD_IFactory.h
+++ b/intern/audaspace/intern/AUD_IFactory.h
@@ -49,7 +49,7 @@ public:
* \exception AUD_Exception An exception may be thrown if there has been
* a more unexpected error during reader creation.
*/
- virtual AUD_IReader* createReader()=0;
+ virtual AUD_IReader* createReader() const=0;
};
#endif //AUD_IFACTORY
diff --git a/intern/audaspace/intern/AUD_IReader.h b/intern/audaspace/intern/AUD_IReader.h
index 02a46098d32..816abfea7f3 100644
--- a/intern/audaspace/intern/AUD_IReader.h
+++ b/intern/audaspace/intern/AUD_IReader.h
@@ -46,7 +46,7 @@ public:
* \return Always returns true for readers of the buffer type.
* \see getType
*/
- virtual bool isSeekable()=0;
+ virtual bool isSeekable() const=0;
/**
* Seeks to a specific position in the source.
@@ -65,7 +65,7 @@ public:
* \return The length as sample count. May be negative if unknown.
* \see getType
*/
- virtual int getLength()=0;
+ virtual int getLength() const=0;
/**
* Returns the position of the source as a sample count value.
@@ -76,30 +76,13 @@ public:
* the buffer ones.
* \see getType
*/
- virtual int getPosition()=0;
+ virtual int getPosition() const=0;
/**
* Returns the specification of the reader.
* \return The AUD_Specs structure.
*/
- virtual AUD_Specs getSpecs()=0;
-
- /**
- * Returns the type of the reader. There are special conditions for the
- * readers of the buffer type. Those have to return correct position and
- * length values as well as they must be seekable.
- * \return AUD_TYPE_BUFFER or AUD_TYPE_STREAM.
- */
- virtual AUD_ReaderType getType()=0;
-
- /**
- * Sends a message to this reader and if it has subreaders it broadcasts
- * the message to them.
- * \param message The message.
- * \return Whether the message has been read by the reader or one of his
- * subreaders.
- */
- virtual bool notify(AUD_Message &message)=0;
+ virtual AUD_Specs getSpecs() const=0;
/**
* Request to read the next length samples out of the source.
diff --git a/intern/audaspace/intern/AUD_LinearResampleFactory.cpp b/intern/audaspace/intern/AUD_LinearResampleFactory.cpp
index e738fc17693..91414c6a392 100644
--- a/intern/audaspace/intern/AUD_LinearResampleFactory.cpp
+++ b/intern/audaspace/intern/AUD_LinearResampleFactory.cpp
@@ -26,28 +26,18 @@
#include "AUD_LinearResampleFactory.h"
#include "AUD_LinearResampleReader.h"
-AUD_LinearResampleFactory::AUD_LinearResampleFactory(AUD_IReader* reader,
- AUD_DeviceSpecs specs) :
- AUD_ResampleFactory(reader, specs) {}
-
AUD_LinearResampleFactory::AUD_LinearResampleFactory(AUD_IFactory* factory,
AUD_DeviceSpecs specs) :
- AUD_ResampleFactory(factory, specs) {}
-
-AUD_LinearResampleFactory::AUD_LinearResampleFactory(AUD_DeviceSpecs specs) :
- AUD_ResampleFactory(specs) {}
+ AUD_ResampleFactory(factory, specs)
+{
+}
-AUD_IReader* AUD_LinearResampleFactory::createReader()
+AUD_IReader* AUD_LinearResampleFactory::createReader() const
{
AUD_IReader* reader = getReader();
- if(reader != 0)
- {
- if(reader->getSpecs().rate != m_specs.rate)
- {
- reader = new AUD_LinearResampleReader(reader, m_specs.specs);
- AUD_NEW("reader")
- }
- }
+ if(reader->getSpecs().rate != m_specs.rate)
+ reader = new AUD_LinearResampleReader(reader, m_specs.specs);
+
return reader;
}
diff --git a/intern/audaspace/intern/AUD_LinearResampleFactory.h b/intern/audaspace/intern/AUD_LinearResampleFactory.h
index 81a9d623815..426641f6099 100644
--- a/intern/audaspace/intern/AUD_LinearResampleFactory.h
+++ b/intern/audaspace/intern/AUD_LinearResampleFactory.h
@@ -33,12 +33,15 @@
*/
class AUD_LinearResampleFactory : public AUD_ResampleFactory
{
+private:
+ // hide copy constructor and operator=
+ AUD_LinearResampleFactory(const AUD_LinearResampleFactory&);
+ AUD_LinearResampleFactory& operator=(const AUD_LinearResampleFactory&);
+
public:
- AUD_LinearResampleFactory(AUD_IReader* reader, AUD_DeviceSpecs specs);
AUD_LinearResampleFactory(AUD_IFactory* factory, AUD_DeviceSpecs specs);
- AUD_LinearResampleFactory(AUD_DeviceSpecs specs);
- virtual AUD_IReader* createReader();
+ virtual AUD_IReader* createReader() const;
};
#endif //AUD_LINEARRESAMPLEFACTORY
diff --git a/intern/audaspace/intern/AUD_LinearResampleReader.cpp b/intern/audaspace/intern/AUD_LinearResampleReader.cpp
index dcd5310575d..cfe7561d336 100644
--- a/intern/audaspace/intern/AUD_LinearResampleReader.cpp
+++ b/intern/audaspace/intern/AUD_LinearResampleReader.cpp
@@ -24,7 +24,6 @@
*/
#include "AUD_LinearResampleReader.h"
-#include "AUD_Buffer.h"
#include <cmath>
#include <cstring>
@@ -33,25 +32,15 @@
AUD_LinearResampleReader::AUD_LinearResampleReader(AUD_IReader* reader,
AUD_Specs specs) :
- AUD_EffectReader(reader)
+ AUD_EffectReader(reader),
+ m_sspecs(reader->getSpecs()),
+ m_factor(float(specs.rate) / float(m_sspecs.rate)),
+ m_tspecs(specs),
+ m_position(0),
+ m_sposition(0)
{
- m_sspecs = reader->getSpecs();
-
- m_tspecs = specs;
m_tspecs.channels = m_sspecs.channels;
- m_factor = (float)m_tspecs.rate / (float)m_sspecs.rate;
-
- m_position = 0;
- m_sposition = 0;
-
- m_buffer = new AUD_Buffer(); AUD_NEW("buffer")
- m_cache = new AUD_Buffer(2 * AUD_SAMPLE_SIZE(specs)); AUD_NEW("buffer")
-}
-
-AUD_LinearResampleReader::~AUD_LinearResampleReader()
-{
- delete m_buffer; AUD_DELETE("buffer")
- delete m_cache; AUD_DELETE("buffer")
+ m_cache.resize(2 * AUD_SAMPLE_SIZE(m_tspecs));
}
void AUD_LinearResampleReader::seek(int position)
@@ -61,17 +50,17 @@ void AUD_LinearResampleReader::seek(int position)
m_reader->seek(m_sposition);
}
-int AUD_LinearResampleReader::getLength()
+int AUD_LinearResampleReader::getLength() const
{
return m_reader->getLength() * m_factor;
}
-int AUD_LinearResampleReader::getPosition()
+int AUD_LinearResampleReader::getPosition() const
{
return m_position;
}
-AUD_Specs AUD_LinearResampleReader::getSpecs()
+AUD_Specs AUD_LinearResampleReader::getSpecs() const
{
return m_tspecs;
}
@@ -81,13 +70,13 @@ void AUD_LinearResampleReader::read(int & length, sample_t* & buffer)
int samplesize = AUD_SAMPLE_SIZE(m_tspecs);
int size = length * samplesize;
- if(m_buffer->getSize() < size)
- m_buffer->resize(size);
+ if(m_buffer.getSize() < size)
+ m_buffer.resize(size);
int need = ceil((m_position + length) / m_factor) + 1 - m_sposition;
int len = need;
sample_t* buf;
- buffer = m_buffer->getBuffer();
+ buffer = m_buffer.getBuffer();
m_reader->read(len, buf);
@@ -106,9 +95,9 @@ void AUD_LinearResampleReader::read(int & length, sample_t* & buffer)
if(floor(spos) < 0)
{
- low = m_cache->getBuffer()[(int)(floor(spos) + 2) * CC];
+ low = m_cache.getBuffer()[(int)(floor(spos) + 2) * CC];
if(ceil(spos) < 0)
- high = m_cache->getBuffer()[(int)(ceil(spos) + 2) * CC];
+ high = m_cache.getBuffer()[(int)(ceil(spos) + 2) * CC];
else
high = buf[(int)ceil(spos) * CC];
}
@@ -122,11 +111,11 @@ void AUD_LinearResampleReader::read(int & length, sample_t* & buffer)
}
if(len > 1)
- memcpy(m_cache->getBuffer(),
+ memcpy(m_cache.getBuffer(),
buf + (len - 2) * channels,
2 * samplesize);
else if(len == 1)
- memcpy(m_cache->getBuffer() + 1 * channels, buf, samplesize);
+ memcpy(m_cache.getBuffer() + 1 * channels, buf, samplesize);
m_sposition += len;
m_position += length;
diff --git a/intern/audaspace/intern/AUD_LinearResampleReader.h b/intern/audaspace/intern/AUD_LinearResampleReader.h
index c86b8b76c59..fbf56286857 100644
--- a/intern/audaspace/intern/AUD_LinearResampleReader.h
+++ b/intern/audaspace/intern/AUD_LinearResampleReader.h
@@ -27,7 +27,7 @@
#define AUD_LINEARRESAMPLEREADER
#include "AUD_EffectReader.h"
-class AUD_Buffer;
+#include "AUD_Buffer.h"
/**
* This resampling reader uses libsamplerate for resampling.
@@ -36,9 +36,19 @@ class AUD_LinearResampleReader : public AUD_EffectReader
{
private:
/**
+ * The sample specification of the source.
+ */
+ const AUD_Specs m_sspecs;
+
+ /**
* The resampling factor.
*/
- float m_factor;
+ const float m_factor;
+
+ /**
+ * The target specification.
+ */
+ AUD_Specs m_tspecs;
/**
* The current position.
@@ -53,41 +63,29 @@ private:
/**
* The sound output buffer.
*/
- AUD_Buffer *m_buffer;
+ AUD_Buffer m_buffer;
/**
* The input caching buffer.
*/
- AUD_Buffer *m_cache;
-
- /**
- * The target specification.
- */
- AUD_Specs m_tspecs;
+ AUD_Buffer m_cache;
- /**
- * The sample specification of the source.
- */
- AUD_Specs m_sspecs;
+ // hide copy constructor and operator=
+ AUD_LinearResampleReader(const AUD_LinearResampleReader&);
+ AUD_LinearResampleReader& operator=(const AUD_LinearResampleReader&);
public:
/**
* Creates a resampling reader.
* \param reader The reader to mix.
* \param specs The target specification.
- * \exception AUD_Exception Thrown if the reader is NULL.
*/
AUD_LinearResampleReader(AUD_IReader* reader, AUD_Specs specs);
- /**
- * Destroys the reader.
- */
- ~AUD_LinearResampleReader();
-
virtual void seek(int position);
- virtual int getLength();
- virtual int getPosition();
- virtual AUD_Specs getSpecs();
+ virtual int getLength() const;
+ virtual int getPosition() const;
+ virtual AUD_Specs getSpecs() const;
virtual void read(int & length, sample_t* & buffer);
};
diff --git a/intern/audaspace/intern/AUD_Mixer.cpp b/intern/audaspace/intern/AUD_Mixer.cpp
index e77d40fdbca..419ac3af6ac 100644
--- a/intern/audaspace/intern/AUD_Mixer.cpp
+++ b/intern/audaspace/intern/AUD_Mixer.cpp
@@ -24,72 +24,13 @@
*/
#include "AUD_Mixer.h"
-#include "AUD_SRCResampleFactory.h"
-#include "AUD_LinearResampleFactory.h"
-#include "AUD_ChannelMapperFactory.h"
#include "AUD_IReader.h"
-#include "AUD_Buffer.h"
#include <cstring>
-AUD_Mixer::AUD_Mixer()
+AUD_Mixer::AUD_Mixer(AUD_DeviceSpecs specs) :
+ m_specs(specs)
{
- m_buffer = new AUD_Buffer(); AUD_NEW("buffer")
-
- m_resampler = NULL;
- m_mapper = NULL;
-}
-
-AUD_Mixer::~AUD_Mixer()
-{
- delete m_buffer; AUD_DELETE("buffer")
-
-
- if(m_resampler)
- {
- delete m_resampler; AUD_DELETE("factory")
- }
- if(m_mapper)
- {
- delete m_mapper; AUD_DELETE("factory")
- }
-}
-
-AUD_IReader* AUD_Mixer::prepare(AUD_IReader* reader)
-{
- m_resampler->setReader(reader);
- reader = m_resampler->createReader();
-
- if(reader != NULL && reader->getSpecs().channels != m_specs.channels)
- {
- m_mapper->setReader(reader);
- reader = m_mapper->createReader();
- }
-
- return reader;
-}
-
-AUD_DeviceSpecs AUD_Mixer::getSpecs()
-{
- return m_specs;
-}
-
-void AUD_Mixer::setSpecs(AUD_DeviceSpecs specs)
-{
- m_specs = specs;
-
- if(m_resampler)
- {
- delete m_resampler; AUD_DELETE("factory")
- }
- if(m_mapper)
- {
- delete m_mapper; AUD_DELETE("factory")
- }
-
- m_resampler = new AUD_MIXER_RESAMPLER(specs); AUD_NEW("factory")
- m_mapper = new AUD_ChannelMapperFactory(specs); AUD_NEW("factory")
-
int bigendian = 1;
bigendian = (((char*)&bigendian)[0]) ? 0: 1; // 1 if Big Endian
@@ -121,6 +62,11 @@ void AUD_Mixer::setSpecs(AUD_DeviceSpecs specs)
}
}
+AUD_DeviceSpecs AUD_Mixer::getSpecs() const
+{
+ return m_specs;
+}
+
void AUD_Mixer::add(sample_t* buffer, int start, int length, float volume)
{
AUD_MixerBuffer buf;
@@ -137,10 +83,10 @@ void AUD_Mixer::superpose(data_t* buffer, int length, float volume)
int channels = m_specs.channels;
- if(m_buffer->getSize() < length * channels * 4)
- m_buffer->resize(length * channels * 4);
+ if(m_buffer.getSize() < length * channels * 4)
+ m_buffer.resize(length * channels * 4);
- sample_t* out = m_buffer->getBuffer();
+ sample_t* out = m_buffer.getBuffer();
sample_t* in;
memset(out, 0, length * channels * 4);
diff --git a/intern/audaspace/intern/AUD_Mixer.h b/intern/audaspace/intern/AUD_Mixer.h
index 2e7ba743541..a7f5fb274f0 100644
--- a/intern/audaspace/intern/AUD_Mixer.h
+++ b/intern/audaspace/intern/AUD_Mixer.h
@@ -26,13 +26,8 @@
#ifndef AUD_MIXER
#define AUD_MIXER
-#define AUD_MIXER_RESAMPLER AUD_SRCResampleFactory
-
#include "AUD_ConverterFunctions.h"
-class AUD_ConverterFactory;
-class AUD_MIXER_RESAMPLER;
-class AUD_ChannelMapperFactory;
-class AUD_Buffer;
+#include "AUD_Buffer.h"
class AUD_IReader;
#include <list>
@@ -45,24 +40,12 @@ struct AUD_MixerBuffer
};
/**
- * This class is able to mix audiosignals of different channel count and sample
- * rate and convert it to a specific output format.
- * It uses a default ChannelMapperFactory and a SRCResampleFactory for
- * the perparation.
+ * This abstract class is able to mix audiosignals of different channel count
+ * and sample rate and convert it to a specific output format.
*/
class AUD_Mixer
{
-private:
- /**
- * The resampling factory that resamples all readers for superposition.
- */
- AUD_MIXER_RESAMPLER* m_resampler;
-
- /**
- * The channel mapper factory that maps all readers for superposition.
- */
- AUD_ChannelMapperFactory* m_mapper;
-
+protected:
/**
* The list of buffers to superpose.
*/
@@ -71,12 +54,12 @@ private:
/**
* The output specification.
*/
- AUD_DeviceSpecs m_specs;
+ const AUD_DeviceSpecs m_specs;
/**
* The temporary mixing buffer.
*/
- AUD_Buffer* m_buffer;
+ AUD_Buffer m_buffer;
/**
* Converter function.
@@ -87,31 +70,25 @@ public:
/**
* Creates the mixer.
*/
- AUD_Mixer();
+ AUD_Mixer(AUD_DeviceSpecs specs);
/**
* Destroys the mixer.
*/
- ~AUD_Mixer();
-
- /**
- * This funuction prepares a reader for playback.
- * \param reader The reader to prepare.
- * \return The reader that should be used for playback.
- */
- AUD_IReader* prepare(AUD_IReader* reader);
+ virtual ~AUD_Mixer() {}
/**
* Returns the target specification for superposing.
* \return The target specification.
*/
- AUD_DeviceSpecs getSpecs();
+ AUD_DeviceSpecs getSpecs() const;
/**
- * Sets the target specification for superposing.
- * \param specs The target specification.
+ * This funuction prepares a reader for playback.
+ * \param reader The reader to prepare.
+ * \return The reader that should be used for playback.
*/
- void setSpecs(AUD_DeviceSpecs specs);
+ virtual AUD_IReader* prepare(AUD_IReader* reader)=0;
/**
* Adds a buffer for superposition.
@@ -120,7 +97,7 @@ public:
* \param length The length of the buffer in samples.
* \param volume The mixing volume. Must be a value between 0.0 and 1.0.
*/
- void add(sample_t* buffer, int start, int length, float volume);
+ virtual void add(sample_t* buffer, int start, int length, float volume);
/**
* Superposes all added buffers into an output buffer.
@@ -128,7 +105,7 @@ public:
* \param length The length of the buffer in samples.
* \param volume The mixing volume. Must be a value between 0.0 and 1.0.
*/
- void superpose(data_t* buffer, int length, float volume);
+ virtual void superpose(data_t* buffer, int length, float volume);
};
#endif //AUD_MIXER
diff --git a/intern/audaspace/intern/AUD_MixerFactory.cpp b/intern/audaspace/intern/AUD_MixerFactory.cpp
index e78818301fa..4370bed6ca6 100644
--- a/intern/audaspace/intern/AUD_MixerFactory.cpp
+++ b/intern/audaspace/intern/AUD_MixerFactory.cpp
@@ -26,84 +26,23 @@
#include "AUD_MixerFactory.h"
#include "AUD_IReader.h"
-AUD_IReader* AUD_MixerFactory::getReader()
+AUD_IReader* AUD_MixerFactory::getReader() const
{
- AUD_IReader* reader;
-
- // first check for an existing reader
- if(m_reader != 0)
- {
- reader = m_reader;
- m_reader = 0;
- return reader;
- }
-
- // otherwise create a reader if there is a factory
- if(m_factory != 0)
- {
- reader = m_factory->createReader();
- return reader;
- }
-
- return 0;
-}
-
-AUD_MixerFactory::AUD_MixerFactory(AUD_IReader* reader,
- AUD_DeviceSpecs specs)
-{
- m_specs = specs;
- m_reader = reader;
- m_factory = 0;
+ return m_factory->createReader();
}
AUD_MixerFactory::AUD_MixerFactory(AUD_IFactory* factory,
- AUD_DeviceSpecs specs)
+ AUD_DeviceSpecs specs) :
+ m_specs(specs), m_factory(factory)
{
- m_specs = specs;
- m_reader = 0;
- m_factory = factory;
}
-AUD_MixerFactory::AUD_MixerFactory(AUD_DeviceSpecs specs)
-{
- m_specs = specs;
- m_reader = 0;
- m_factory = 0;
-}
-
-AUD_MixerFactory::~AUD_MixerFactory()
-{
- if(m_reader != 0)
- {
- delete m_reader; AUD_DELETE("reader")
- }
-}
-
-AUD_DeviceSpecs AUD_MixerFactory::getSpecs()
+AUD_DeviceSpecs AUD_MixerFactory::getSpecs() const
{
return m_specs;
}
-void AUD_MixerFactory::setSpecs(AUD_DeviceSpecs specs)
-{
- m_specs = specs;
-}
-
-void AUD_MixerFactory::setReader(AUD_IReader* reader)
-{
- if(m_reader != 0)
- {
- delete m_reader; AUD_DELETE("reader")
- }
- m_reader = reader;
-}
-
-void AUD_MixerFactory::setFactory(AUD_IFactory* factory)
-{
- m_factory = factory;
-}
-
-AUD_IFactory* AUD_MixerFactory::getFactory()
+AUD_IFactory* AUD_MixerFactory::getFactory() const
{
return m_factory;
}
diff --git a/intern/audaspace/intern/AUD_MixerFactory.h b/intern/audaspace/intern/AUD_MixerFactory.h
index a2f4aa78d76..909eca8c148 100644
--- a/intern/audaspace/intern/AUD_MixerFactory.h
+++ b/intern/audaspace/intern/AUD_MixerFactory.h
@@ -35,9 +35,9 @@ class AUD_MixerFactory : public AUD_IFactory
{
protected:
/**
- * The reader that should be mixed later.
+ * The target specification for resampling.
*/
- AUD_IReader* m_reader;
+ const AUD_DeviceSpecs m_specs;
/**
* If there is no reader it is created out of this factory.
@@ -45,73 +45,31 @@ protected:
AUD_IFactory* m_factory;
/**
- * The target specification for resampling.
- */
- AUD_DeviceSpecs m_specs;
-
- /**
- * Returns the reader created out of the factory or taken from m_reader.
+ * Returns the reader created out of the factory.
* This method can be used for the createReader function of the implementing
* classes.
- * \return The reader to mix, or NULL if there is no reader or factory.
+ * \return The reader to mix.
*/
- AUD_IReader* getReader();
+ AUD_IReader* getReader() const;
public:
/**
* Creates a new factory.
- * \param reader The reader to mix.
- * \param specs The target specification.
- */
- AUD_MixerFactory(AUD_IReader* reader, AUD_DeviceSpecs specs);
-
- /**
- * Creates a new factory.
* \param factory The factory to create the readers to mix out of.
* \param specs The target specification.
*/
AUD_MixerFactory(AUD_IFactory* factory, AUD_DeviceSpecs specs);
/**
- * Creates a new factory.
- * \param specs The target specification.
- */
- AUD_MixerFactory(AUD_DeviceSpecs specs);
-
- /**
- * Destroys the resampling factory.
- */
- virtual ~AUD_MixerFactory();
-
- /**
* Returns the target specification for resampling.
*/
- AUD_DeviceSpecs getSpecs();
-
- /**
- * Sets the target specification for resampling.
- * \param specs The specification.
- */
- void setSpecs(AUD_DeviceSpecs specs);
-
- /**
- * Sets the reader for resampling.
- * If there has already been a reader, it will be deleted.
- * \param reader The reader that should be used as source for resampling.
- */
- void setReader(AUD_IReader* reader);
-
- /**
- * Sets the factory for resampling.
- * \param factory The factory that should be used as source for resampling.
- */
- void setFactory(AUD_IFactory* factory);
+ AUD_DeviceSpecs getSpecs() const;
/**
* Returns the saved factory.
- * \return The factory or NULL if there has no factory been saved.
+ * \return The factory.
*/
- AUD_IFactory* getFactory();
+ AUD_IFactory* getFactory() const;
};
#endif //AUD_MIXERFACTORY
diff --git a/intern/audaspace/intern/AUD_NULLDevice.cpp b/intern/audaspace/intern/AUD_NULLDevice.cpp
index c9dfadd1839..272e1e4b5b2 100644
--- a/intern/audaspace/intern/AUD_NULLDevice.cpp
+++ b/intern/audaspace/intern/AUD_NULLDevice.cpp
@@ -31,14 +31,15 @@
AUD_NULLDevice::AUD_NULLDevice()
{
- m_specs.channels = AUD_CHANNELS_INVALID;
- m_specs.format = AUD_FORMAT_INVALID;
- m_specs.rate = AUD_RATE_INVALID;
}
-AUD_DeviceSpecs AUD_NULLDevice::getSpecs()
+AUD_DeviceSpecs AUD_NULLDevice::getSpecs() const
{
- return m_specs;
+ AUD_DeviceSpecs specs;
+ specs.channels = AUD_CHANNELS_INVALID;
+ specs.format = AUD_FORMAT_INVALID;
+ specs.rate = AUD_RATE_INVALID;
+ return specs;
}
AUD_Handle* AUD_NULLDevice::play(AUD_IFactory* factory, bool keep)
@@ -61,12 +62,12 @@ bool AUD_NULLDevice::stop(AUD_Handle* handle)
return false;
}
-bool AUD_NULLDevice::setKeep(AUD_Handle* handle, bool keep)
+bool AUD_NULLDevice::getKeep(AUD_Handle* handle)
{
return false;
}
-bool AUD_NULLDevice::sendMessage(AUD_Handle* handle, AUD_Message &message)
+bool AUD_NULLDevice::setKeep(AUD_Handle* handle, bool keep)
{
return false;
}
@@ -94,17 +95,46 @@ void AUD_NULLDevice::unlock()
{
}
-bool AUD_NULLDevice::checkCapability(int capability)
+float AUD_NULLDevice::getVolume() const
+{
+ return 0;
+}
+
+void AUD_NULLDevice::setVolume(float volume)
+{
+}
+
+float AUD_NULLDevice::getVolume(AUD_Handle* handle)
+{
+ return std::numeric_limits<float>::quiet_NaN();
+}
+
+bool AUD_NULLDevice::setVolume(AUD_Handle* handle, float volume)
{
return false;
}
-bool AUD_NULLDevice::setCapability(int capability, void *value)
+float AUD_NULLDevice::getPitch(AUD_Handle* handle)
+{
+ return std::numeric_limits<float>::quiet_NaN();
+}
+
+bool AUD_NULLDevice::setPitch(AUD_Handle* handle, float pitch)
+{
+ return false;
+}
+
+int AUD_NULLDevice::getLoopCount(AUD_Handle* handle)
+{
+ return 0;
+}
+
+bool AUD_NULLDevice::setLoopCount(AUD_Handle* handle, int count)
{
return false;
}
-bool AUD_NULLDevice::getCapability(int capability, void *value)
+bool AUD_NULLDevice::setStopCallback(AUD_Handle* handle, stopCallback callback, void* data)
{
return false;
}
diff --git a/intern/audaspace/intern/AUD_NULLDevice.h b/intern/audaspace/intern/AUD_NULLDevice.h
index 91ddd23cf71..a1ffdba201a 100644
--- a/intern/audaspace/intern/AUD_NULLDevice.h
+++ b/intern/audaspace/intern/AUD_NULLDevice.h
@@ -33,33 +33,33 @@
*/
class AUD_NULLDevice : public AUD_IDevice
{
-private:
- /**
- * The specs of the device.
- */
- AUD_DeviceSpecs m_specs;
-
public:
/**
* Creates a new NULL device.
*/
AUD_NULLDevice();
- virtual AUD_DeviceSpecs getSpecs();
+ virtual AUD_DeviceSpecs getSpecs() const;
virtual AUD_Handle* play(AUD_IFactory* factory, bool keep = false);
virtual bool pause(AUD_Handle* handle);
virtual bool resume(AUD_Handle* handle);
virtual bool stop(AUD_Handle* handle);
+ virtual bool getKeep(AUD_Handle* handle);
virtual bool setKeep(AUD_Handle* handle, bool keep);
- virtual bool sendMessage(AUD_Handle* handle, AUD_Message &message);
virtual bool seek(AUD_Handle* handle, float position);
virtual float getPosition(AUD_Handle* handle);
virtual AUD_Status getStatus(AUD_Handle* handle);
virtual void lock();
virtual void unlock();
- virtual bool checkCapability(int capability);
- virtual bool setCapability(int capability, void *value);
- virtual bool getCapability(int capability, void *value);
+ virtual float getVolume() const;
+ virtual void setVolume(float volume);
+ virtual float getVolume(AUD_Handle* handle);
+ virtual bool setVolume(AUD_Handle* handle, float volume);
+ virtual float getPitch(AUD_Handle* handle);
+ virtual bool setPitch(AUD_Handle* handle, float pitch);
+ virtual int getLoopCount(AUD_Handle* handle);
+ virtual bool setLoopCount(AUD_Handle* handle, int count);
+ virtual bool setStopCallback(AUD_Handle* handle, stopCallback callback = 0, void* data = 0);
};
#endif //AUD_NULLDEVICE
diff --git a/intern/audaspace/intern/AUD_PyInit.h b/intern/audaspace/intern/AUD_PyInit.h
new file mode 100644
index 00000000000..bd67259449a
--- /dev/null
+++ b/intern/audaspace/intern/AUD_PyInit.h
@@ -0,0 +1,47 @@
+/*
+ * $Id$
+ *
+ * ***** BEGIN LGPL LICENSE BLOCK *****
+ *
+ * Copyright 2010 Jörg Hermann Müller
+ *
+ * This file is part of AudaSpace.
+ *
+ * AudaSpace is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * AudaSpace is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with AudaSpace. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * ***** END LGPL LICENSE BLOCK *****
+ */
+
+#ifndef AUD_PYINIT
+#define AUD_PYINIT
+
+#ifndef DISABLE_PYTHON
+#include "Python.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/**
+ * Initalizes the Python module.
+ */
+extern PyObject* AUD_initPython();
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+#endif //AUD_PYINIT
diff --git a/intern/audaspace/intern/AUD_ReadDevice.cpp b/intern/audaspace/intern/AUD_ReadDevice.cpp
index 37a7d1ae295..cde5694354e 100644
--- a/intern/audaspace/intern/AUD_ReadDevice.cpp
+++ b/intern/audaspace/intern/AUD_ReadDevice.cpp
@@ -23,21 +23,17 @@
* ***** END LGPL LICENSE BLOCK *****
*/
-#include "AUD_Mixer.h"
+#include "AUD_DefaultMixer.h"
#include "AUD_ReadDevice.h"
#include "AUD_IReader.h"
#include <cstring>
-AUD_ReadDevice::AUD_ReadDevice(AUD_DeviceSpecs specs)
+AUD_ReadDevice::AUD_ReadDevice(AUD_DeviceSpecs specs) :
+ m_playing(false)
{
m_specs = specs;
- m_mixer = new AUD_Mixer(); AUD_NEW("mixer")
- m_mixer->setSpecs(m_specs);
-
- m_playing = false;
-
create();
}
diff --git a/intern/audaspace/intern/AUD_ReadDevice.h b/intern/audaspace/intern/AUD_ReadDevice.h
index 3fd90df7755..121bcb8612b 100644
--- a/intern/audaspace/intern/AUD_ReadDevice.h
+++ b/intern/audaspace/intern/AUD_ReadDevice.h
@@ -33,15 +33,19 @@
*/
class AUD_ReadDevice : public AUD_SoftwareDevice
{
-protected:
- virtual void playing(bool playing);
-
private:
/**
* Whether the device currently.
*/
bool m_playing;
+ // hide copy constructor and operator=
+ AUD_ReadDevice(const AUD_ReadDevice&);
+ AUD_ReadDevice& operator=(const AUD_ReadDevice&);
+
+protected:
+ virtual void playing(bool playing);
+
public:
/**
* Creates a new read device.
diff --git a/intern/audaspace/intern/AUD_Reference.h b/intern/audaspace/intern/AUD_Reference.h
index 9bb9d7440b3..6b1001e2b01 100644
--- a/intern/audaspace/intern/AUD_Reference.h
+++ b/intern/audaspace/intern/AUD_Reference.h
@@ -45,12 +45,12 @@ public:
AUD_Reference(T* reference = 0)
{
m_reference = reference;
- m_refcount = new int; AUD_NEW("int")
+ m_refcount = new int;
*m_refcount = 1;
}
/**
- * Copies a AUD_Reference object.
+ * Copies an AUD_Reference object.
* \param ref The AUD_Reference object to copy.
*/
AUD_Reference(const AUD_Reference& ref)
@@ -69,17 +69,17 @@ public:
(*m_refcount)--;
if(*m_refcount == 0)
{
- if(m_reference != 0)
+ if(m_reference)
{
- delete m_reference; AUD_DELETE("buffer")
+ delete m_reference;
}
- delete m_refcount; AUD_DELETE("int")
+ delete m_refcount;
}
}
/**
- * Copies a AUD_Reference object.
- * \param ref The AUD_Reference object to copy.
+ * Assigns an AUD_Reference to this object.
+ * \param ref The AUD_Reference object to assign.
*/
AUD_Reference& operator=(const AUD_Reference& ref)
{
@@ -89,11 +89,11 @@ public:
(*m_refcount)--;
if(*m_refcount == 0)
{
- if(m_reference != 0)
+ if(m_reference)
{
- delete m_reference; AUD_DELETE("buffer")
+ delete m_reference;
}
- delete m_refcount; AUD_DELETE("int")
+ delete m_refcount;
}
m_reference = ref.m_reference;
@@ -106,7 +106,7 @@ public:
/**
* Returns the reference.
*/
- T* get()
+ T* get() const
{
return m_reference;
}
diff --git a/intern/audaspace/intern/AUD_SequencerFactory.cpp b/intern/audaspace/intern/AUD_SequencerFactory.cpp
index bb5cf27fb5f..05c7fefea4a 100644
--- a/intern/audaspace/intern/AUD_SequencerFactory.cpp
+++ b/intern/audaspace/intern/AUD_SequencerFactory.cpp
@@ -28,11 +28,12 @@
typedef std::list<AUD_SequencerReader*>::iterator AUD_ReaderIterator;
-AUD_SequencerFactory::AUD_SequencerFactory(AUD_Specs specs, void* data, AUD_volumeFunction volume)
+AUD_SequencerFactory::AUD_SequencerFactory(AUD_Specs specs, void* data,
+ AUD_volumeFunction volume) :
+ m_specs(specs),
+ m_data(data),
+ m_volume(volume)
{
- m_specs = specs;
- m_data = data;
- m_volume = volume;
}
AUD_SequencerFactory::~AUD_SequencerFactory()
@@ -51,13 +52,23 @@ AUD_SequencerFactory::~AUD_SequencerFactory()
{
entry = m_entries.front();
m_entries.pop_front();
- delete entry; AUD_DELETE("seqentry")
+ delete entry;
}
}
+AUD_IReader* AUD_SequencerFactory::newReader()
+{
+ AUD_SequencerReader* reader = new AUD_SequencerReader(this, m_entries,
+ m_specs, m_data,
+ m_volume);
+ m_readers.push_front(reader);
+
+ return reader;
+}
+
AUD_SequencerEntry* AUD_SequencerFactory::add(AUD_IFactory** sound, float begin, float end, float skip, void* data)
{
- AUD_SequencerEntry* entry = new AUD_SequencerEntry; AUD_NEW("seqentry")
+ AUD_SequencerEntry* entry = new AUD_SequencerEntry;
entry->sound = sound;
entry->begin = begin;
entry->skip = skip;
@@ -80,7 +91,7 @@ void AUD_SequencerFactory::remove(AUD_SequencerEntry* entry)
m_entries.remove(entry);
- delete entry; AUD_DELETE("seqentry")
+ delete entry;
}
void AUD_SequencerFactory::move(AUD_SequencerEntry* entry, float begin, float end, float skip)
@@ -95,12 +106,9 @@ void AUD_SequencerFactory::mute(AUD_SequencerEntry* entry, bool mute)
entry->muted = mute;
}
-AUD_IReader* AUD_SequencerFactory::createReader()
+AUD_IReader* AUD_SequencerFactory::createReader() const
{
- AUD_SequencerReader* reader = new AUD_SequencerReader(this, m_entries, m_specs, m_data, m_volume); AUD_NEW("reader")
- m_readers.push_front(reader);
-
- return reader;
+ return const_cast<AUD_SequencerFactory*>(this)->newReader();
}
void AUD_SequencerFactory::removeReader(AUD_SequencerReader* reader)
diff --git a/intern/audaspace/intern/AUD_SequencerFactory.h b/intern/audaspace/intern/AUD_SequencerFactory.h
index b564c888fc6..a2c8f48fa54 100644
--- a/intern/audaspace/intern/AUD_SequencerFactory.h
+++ b/intern/audaspace/intern/AUD_SequencerFactory.h
@@ -60,6 +60,12 @@ private:
void* m_data;
AUD_volumeFunction m_volume;
+ AUD_IReader* newReader();
+
+ // hide copy constructor and operator=
+ AUD_SequencerFactory(const AUD_SequencerFactory&);
+ AUD_SequencerFactory& operator=(const AUD_SequencerFactory&);
+
public:
AUD_SequencerFactory(AUD_Specs specs, void* data, AUD_volumeFunction volume);
~AUD_SequencerFactory();
@@ -69,7 +75,7 @@ public:
void move(AUD_SequencerEntry* entry, float begin, float end, float skip);
void mute(AUD_SequencerEntry* entry, bool mute);
- virtual AUD_IReader* createReader();
+ virtual AUD_IReader* createReader() const;
void removeReader(AUD_SequencerReader* reader);
};
diff --git a/intern/audaspace/intern/AUD_SequencerReader.cpp b/intern/audaspace/intern/AUD_SequencerReader.cpp
index 8869d8d54ca..69293205498 100644
--- a/intern/audaspace/intern/AUD_SequencerReader.cpp
+++ b/intern/audaspace/intern/AUD_SequencerReader.cpp
@@ -24,20 +24,22 @@
*/
#include "AUD_SequencerReader.h"
-#include "AUD_Buffer.h"
+#include "AUD_DefaultMixer.h"
#include <math.h>
typedef std::list<AUD_SequencerStrip*>::iterator AUD_StripIterator;
typedef std::list<AUD_SequencerEntry*>::iterator AUD_EntryIterator;
-AUD_SequencerReader::AUD_SequencerReader(AUD_SequencerFactory* factory, std::list<AUD_SequencerEntry*> &entries, AUD_Specs specs, void* data, AUD_volumeFunction volume)
+AUD_SequencerReader::AUD_SequencerReader(AUD_SequencerFactory* factory,
+ std::list<AUD_SequencerEntry*> &entries, AUD_Specs specs,
+ void* data, AUD_volumeFunction volume)
{
AUD_DeviceSpecs dspecs;
dspecs.specs = specs;
dspecs.format = AUD_FORMAT_FLOAT32;
- m_mixer.setSpecs(dspecs);
+ m_mixer = new AUD_DefaultMixer(dspecs);
m_factory = factory;
m_data = data;
m_volume = volume;
@@ -46,12 +48,12 @@ AUD_SequencerReader::AUD_SequencerReader(AUD_SequencerFactory* factory, std::lis
for(AUD_EntryIterator i = entries.begin(); i != entries.end(); i++)
{
- strip = new AUD_SequencerStrip; AUD_NEW("seqstrip")
+ strip = new AUD_SequencerStrip;
strip->entry = *i;
strip->old_sound = NULL;
if(strip->old_sound)
- strip->reader = m_mixer.prepare(strip->old_sound->createReader());
+ strip->reader = m_mixer->prepare(strip->old_sound->createReader());
else
strip->reader = NULL;
@@ -59,7 +61,6 @@ AUD_SequencerReader::AUD_SequencerReader(AUD_SequencerFactory* factory, std::lis
}
m_position = 0;
- m_buffer = new AUD_Buffer(); AUD_NEW("buffer")
}
AUD_SequencerReader::~AUD_SequencerReader()
@@ -75,12 +76,12 @@ AUD_SequencerReader::~AUD_SequencerReader()
m_strips.pop_front();
if(strip->reader)
{
- delete strip->reader; AUD_DELETE("reader")
+ delete strip->reader;
}
- delete strip; AUD_DELETE("seqstrip")
+ delete strip;
}
- delete m_buffer; AUD_DELETE("buffer")
+ delete m_mixer;
}
void AUD_SequencerReader::destroy()
@@ -92,19 +93,19 @@ void AUD_SequencerReader::destroy()
{
strip = m_strips.front();
m_strips.pop_front();
- delete strip; AUD_DELETE("seqstrip")
+ delete strip;
}
}
void AUD_SequencerReader::add(AUD_SequencerEntry* entry)
{
- AUD_SequencerStrip* strip = new AUD_SequencerStrip; AUD_NEW("seqstrip")
+ AUD_SequencerStrip* strip = new AUD_SequencerStrip;
strip->entry = entry;
if(*strip->entry->sound)
{
strip->old_sound = *strip->entry->sound;
- strip->reader = m_mixer.prepare(strip->old_sound->createReader());
+ strip->reader = m_mixer->prepare(strip->old_sound->createReader());
}
else
{
@@ -125,16 +126,16 @@ void AUD_SequencerReader::remove(AUD_SequencerEntry* entry)
i++;
if(strip->reader)
{
- delete strip->reader; AUD_DELETE("reader")
+ delete strip->reader;
}
m_strips.remove(strip);
- delete strip; AUD_DELETE("seqstrip")
+ delete strip;
return;
}
}
}
-bool AUD_SequencerReader::isSeekable()
+bool AUD_SequencerReader::isSeekable() const
{
return true;
}
@@ -144,44 +145,24 @@ void AUD_SequencerReader::seek(int position)
m_position = position;
}
-int AUD_SequencerReader::getLength()
+int AUD_SequencerReader::getLength() const
{
return -1;
}
-int AUD_SequencerReader::getPosition()
+int AUD_SequencerReader::getPosition() const
{
return m_position;
}
-AUD_Specs AUD_SequencerReader::getSpecs()
+AUD_Specs AUD_SequencerReader::getSpecs() const
{
- return m_mixer.getSpecs().specs;
-}
-
-AUD_ReaderType AUD_SequencerReader::getType()
-{
- return AUD_TYPE_STREAM;
-}
-
-bool AUD_SequencerReader::notify(AUD_Message &message)
-{
- bool result = false;
- AUD_SequencerStrip* strip;
-
- for(AUD_StripIterator i = m_strips.begin(); i != m_strips.end(); i++)
- {
- strip = *i;
- if(strip->reader)
- result |= (*i)->reader->notify(message);
- }
-
- return result;
+ return m_mixer->getSpecs().specs;
}
void AUD_SequencerReader::read(int & length, sample_t* & buffer)
{
- AUD_DeviceSpecs specs = m_mixer.getSpecs();
+ AUD_DeviceSpecs specs = m_mixer->getSpecs();
int samplesize = AUD_SAMPLE_SIZE(specs);
int rate = specs.rate;
@@ -191,9 +172,9 @@ void AUD_SequencerReader::read(int & length, sample_t* & buffer)
AUD_SequencerStrip* strip;
sample_t* buf;
- if(m_buffer->getSize() < size)
- m_buffer->resize(size);
- buffer = m_buffer->getBuffer();
+ if(m_buffer.getSize() < size)
+ m_buffer.resize(size);
+ buffer = m_buffer.getBuffer();
for(AUD_StripIterator i = m_strips.begin(); i != m_strips.end(); i++)
{
@@ -204,12 +185,10 @@ void AUD_SequencerReader::read(int & length, sample_t* & buffer)
{
strip->old_sound = *strip->entry->sound;
if(strip->reader)
- {
- delete strip->reader; AUD_DELETE("reader")
- }
+ delete strip->reader;
if(strip->old_sound)
- strip->reader = m_mixer.prepare(strip->old_sound->createReader());
+ strip->reader = m_mixer->prepare(strip->old_sound->createReader());
else
strip->reader = NULL;
}
@@ -236,14 +215,14 @@ void AUD_SequencerReader::read(int & length, sample_t* & buffer)
if(strip->reader->getPosition() != current)
strip->reader->seek(current);
strip->reader->read(len, buf);
- m_mixer.add(buf, skip, len, m_volume(m_data, strip->entry->data, (float)m_position / (float)rate));
+ m_mixer->add(buf, skip, len, m_volume(m_data, strip->entry->data, (float)m_position / (float)rate));
}
}
}
}
}
- m_mixer.superpose((data_t*)buffer, length, 1.0f);
+ m_mixer->superpose((data_t*)buffer, length, 1.0f);
m_position += length;
}
diff --git a/intern/audaspace/intern/AUD_SequencerReader.h b/intern/audaspace/intern/AUD_SequencerReader.h
index a50e1642260..fd7d94c7578 100644
--- a/intern/audaspace/intern/AUD_SequencerReader.h
+++ b/intern/audaspace/intern/AUD_SequencerReader.h
@@ -28,9 +28,8 @@
#include "AUD_IReader.h"
#include "AUD_SequencerFactory.h"
-#include "AUD_Mixer.h"
-
-class AUD_Buffer;
+#include "AUD_Buffer.h"
+class AUD_Mixer;
struct AUD_SequencerStrip
{
@@ -53,12 +52,12 @@ private:
/**
* The sound output buffer.
*/
- AUD_Buffer *m_buffer;
+ AUD_Buffer m_buffer;
/**
* The target specification.
*/
- AUD_Mixer m_mixer;
+ AUD_Mixer* m_mixer;
/**
* Saves the SequencerFactory the reader belongs to.
@@ -70,14 +69,17 @@ private:
void* m_data;
AUD_volumeFunction m_volume;
+ // hide copy constructor and operator=
+ AUD_SequencerReader(const AUD_SequencerReader&);
+ AUD_SequencerReader& operator=(const AUD_SequencerReader&);
+
public:
/**
* Creates a resampling reader.
* \param reader The reader to mix.
* \param specs The target specification.
- * \exception AUD_Exception Thrown if the reader is NULL.
*/
- AUD_SequencerReader(AUD_SequencerFactory* factory, std::list<AUD_SequencerEntry*> &entries, AUD_Specs specs, void* data, AUD_volumeFunction volume);
+ AUD_SequencerReader(AUD_SequencerFactory* factory, std::list<AUD_SequencerEntry*> &entries, const AUD_Specs specs, void* data, AUD_volumeFunction volume);
/**
* Destroys the reader.
@@ -89,13 +91,11 @@ public:
void add(AUD_SequencerEntry* entry);
void remove(AUD_SequencerEntry* entry);
- virtual bool isSeekable();
+ virtual bool isSeekable() const;
virtual void seek(int position);
- virtual int getLength();
- virtual int getPosition();
- virtual AUD_Specs getSpecs();
- virtual AUD_ReaderType getType();
- virtual bool notify(AUD_Message &message);
+ virtual int getLength() const;
+ virtual int getPosition() const;
+ virtual AUD_Specs getSpecs() const;
virtual void read(int & length, sample_t* & buffer);
};
diff --git a/intern/audaspace/intern/AUD_SourceCaps.h b/intern/audaspace/intern/AUD_SilenceFactory.cpp
index b1edd2b9b4e..4e59d7486d5 100644
--- a/intern/audaspace/intern/AUD_SourceCaps.h
+++ b/intern/audaspace/intern/AUD_SilenceFactory.cpp
@@ -23,19 +23,15 @@
* ***** END LGPL LICENSE BLOCK *****
*/
-#ifndef AUD_SOURCECAPS
-#define AUD_SOURCECAPS
+#include "AUD_SilenceFactory.h"
+#include "AUD_SilenceReader.h"
+#include "AUD_Space.h"
-#include "AUD_IDevice.h"
-
-/// The structure for source capabilities.
-typedef struct
+AUD_SilenceFactory::AUD_SilenceFactory()
{
- /// The source to apply the capability on.
- AUD_Handle* handle;
-
- /// The value for the capability.
- float value;
-} AUD_SourceCaps;
+}
-#endif //AUD_SOURCECAPS
+AUD_IReader* AUD_SilenceFactory::createReader() const
+{
+ return new AUD_SilenceReader();
+}
diff --git a/intern/audaspace/FX/AUD_RectifyReader.h b/intern/audaspace/intern/AUD_SilenceFactory.h
index afbe2e59cab..bc8a5b92727 100644
--- a/intern/audaspace/FX/AUD_RectifyReader.h
+++ b/intern/audaspace/intern/AUD_SilenceFactory.h
@@ -23,37 +23,28 @@
* ***** END LGPL LICENSE BLOCK *****
*/
-#ifndef AUD_RECTIFYREADER
-#define AUD_RECTIFYREADER
+#ifndef AUD_SILENCEFACTORY
+#define AUD_SILENCEFACTORY
-#include "AUD_EffectReader.h"
-class AUD_Buffer;
+#include "AUD_IFactory.h"
/**
- * This class reads another reader and rectifies it.
+ * This factory creates a reader that plays a sine tone.
*/
-class AUD_RectifyReader : public AUD_EffectReader
+class AUD_SilenceFactory : public AUD_IFactory
{
private:
- /**
- * The playback buffer.
- */
- AUD_Buffer *m_buffer;
+ // hide copy constructor and operator=
+ AUD_SilenceFactory(const AUD_SilenceFactory&);
+ AUD_SilenceFactory& operator=(const AUD_SilenceFactory&);
public:
/**
- * Creates a new rectify reader.
- * \param reader The reader to read from.
- * \exception AUD_Exception Thrown if the reader specified is NULL.
- */
- AUD_RectifyReader(AUD_IReader* reader);
-
- /**
- * Destroys the reader.
+ * Creates a new silence factory.
*/
- virtual ~AUD_RectifyReader();
+ AUD_SilenceFactory();
- virtual void read(int & length, sample_t* & buffer);
+ virtual AUD_IReader* createReader() const;
};
-#endif //AUD_RECTIFYREADER
+#endif //AUD_SILENCEFACTORY
diff --git a/intern/audaspace/FX/AUD_SquareReader.cpp b/intern/audaspace/intern/AUD_SilenceReader.cpp
index 2d4dc52fe27..5243286c5e4 100644
--- a/intern/audaspace/FX/AUD_SquareReader.cpp
+++ b/intern/audaspace/intern/AUD_SilenceReader.cpp
@@ -23,41 +23,52 @@
* ***** END LGPL LICENSE BLOCK *****
*/
-#include "AUD_SquareReader.h"
-#include "AUD_Buffer.h"
+#include "AUD_SilenceReader.h"
#include <cstring>
-AUD_SquareReader::AUD_SquareReader(AUD_IReader* reader, float threshold) :
- AUD_EffectReader(reader),
- m_threshold(threshold)
+AUD_SilenceReader::AUD_SilenceReader() :
+ m_position(0)
{
- m_buffer = new AUD_Buffer(); AUD_NEW("buffer")
}
-AUD_SquareReader::~AUD_SquareReader()
+bool AUD_SilenceReader::isSeekable() const
{
- delete m_buffer; AUD_DELETE("buffer")
+ return true;
}
-void AUD_SquareReader::read(int & length, sample_t* & buffer)
+void AUD_SilenceReader::seek(int position)
{
- sample_t* buf;
- AUD_Specs specs = m_reader->getSpecs();
+ m_position = position;
+}
- m_reader->read(length, buf);
- if(m_buffer->getSize() < length * AUD_SAMPLE_SIZE(specs))
- m_buffer->resize(length * AUD_SAMPLE_SIZE(specs));
+int AUD_SilenceReader::getLength() const
+{
+ return -1;
+}
+
+int AUD_SilenceReader::getPosition() const
+{
+ return m_position;
+}
- buffer = m_buffer->getBuffer();
+AUD_Specs AUD_SilenceReader::getSpecs() const
+{
+ AUD_Specs specs;
+ specs.rate = AUD_RATE_44100;
+ specs.channels = AUD_CHANNELS_MONO;
+ return specs;
+}
- for(int i = 0; i < length * specs.channels; i++)
+void AUD_SilenceReader::read(int & length, sample_t* & buffer)
+{
+ // resize if necessary
+ if(m_buffer.getSize() < length * sizeof(sample_t))
{
- if(buf[i] >= m_threshold)
- buffer[i] = 1.0f;
- else if(buf[i] <= -m_threshold)
- buffer[i] = -1.0f;
- else
- buffer[i] = 0.0f;
+ m_buffer.resize(length * sizeof(sample_t));
+ memset(m_buffer.getBuffer(), 0, m_buffer.getSize());
}
+
+ buffer = m_buffer.getBuffer();
+ m_position += length;
}
diff --git a/intern/audaspace/FX/AUD_LowpassReader.h b/intern/audaspace/intern/AUD_SilenceReader.h
index a490ba52c1c..a8b959b5309 100644
--- a/intern/audaspace/FX/AUD_LowpassReader.h
+++ b/intern/audaspace/intern/AUD_SilenceReader.h
@@ -23,61 +23,49 @@
* ***** END LGPL LICENSE BLOCK *****
*/
-#ifndef AUD_LOWPASSREADER
-#define AUD_LOWPASSREADER
+#ifndef AUD_SILENCEREADER
+#define AUD_SILENCEREADER
-#include "AUD_EffectReader.h"
-class AUD_Buffer;
-
-#define AUD_LOWPASS_ORDER 3
+#include "AUD_IReader.h"
+#include "AUD_Buffer.h"
/**
- * This class represents a lowpass filter.
+ * This class is used for sine tone playback.
+ * The output format is in the 16 bit format and stereo, the sample rate can be
+ * specified.
+ * As the two channels both play the same the output could also be mono, but
+ * in most cases this will result in having to resample for output, so stereo
+ * sound is created directly.
*/
-class AUD_LowpassReader : public AUD_EffectReader
+class AUD_SilenceReader : public AUD_IReader
{
private:
/**
- * The playback buffer.
- */
- AUD_Buffer *m_buffer;
-
- /**
- * The last out values buffer.
- */
- AUD_Buffer *m_outvalues;
-
- /**
- * The last in values buffer.
- */
- AUD_Buffer *m_invalues;
-
- /**
- * The position for buffer cycling.
+ * The current position in samples.
*/
int m_position;
/**
- * Filter coefficients.
+ * The playback buffer.
*/
- float m_coeff[2][AUD_LOWPASS_ORDER];
+ AUD_Buffer m_buffer;
-public:
- /**
- * Creates a new lowpass reader.
- * \param reader The reader to read from.
- * \param frequency The cutoff frequency.
- * \param Q The Q factor.
- * \exception AUD_Exception Thrown if the reader specified is NULL.
- */
- AUD_LowpassReader(AUD_IReader* reader, float frequency, float Q);
+ // hide copy constructor and operator=
+ AUD_SilenceReader(const AUD_SilenceReader&);
+ AUD_SilenceReader& operator=(const AUD_SilenceReader&);
+public:
/**
- * Destroys the reader.
+ * Creates a new reader.
*/
- virtual ~AUD_LowpassReader();
+ AUD_SilenceReader();
+ virtual bool isSeekable() const;
+ virtual void seek(int position);
+ virtual int getLength() const;
+ virtual int getPosition() const;
+ virtual AUD_Specs getSpecs() const;
virtual void read(int & length, sample_t* & buffer);
};
-#endif //AUD_LOWPASSREADER
+#endif //AUD_SILENCEREADER
diff --git a/intern/audaspace/intern/AUD_SinusFactory.cpp b/intern/audaspace/intern/AUD_SinusFactory.cpp
index ae878b9df60..3c8e5ccc567 100644
--- a/intern/audaspace/intern/AUD_SinusFactory.cpp
+++ b/intern/audaspace/intern/AUD_SinusFactory.cpp
@@ -27,25 +27,18 @@
#include "AUD_SinusReader.h"
#include "AUD_Space.h"
-AUD_SinusFactory::AUD_SinusFactory(double frequency, AUD_SampleRate sampleRate)
+AUD_SinusFactory::AUD_SinusFactory(float frequency, AUD_SampleRate sampleRate) :
+ m_frequency(frequency),
+ m_sampleRate(sampleRate)
{
- m_frequency = frequency;
- m_sampleRate = sampleRate;
}
-AUD_IReader* AUD_SinusFactory::createReader()
-{
- AUD_IReader* reader = new AUD_SinusReader(m_frequency, m_sampleRate);
- AUD_NEW("reader")
- return reader;
-}
-
-double AUD_SinusFactory::getFrequency()
+float AUD_SinusFactory::getFrequency() const
{
return m_frequency;
}
-void AUD_SinusFactory::setFrequency(double frequency)
+AUD_IReader* AUD_SinusFactory::createReader() const
{
- m_frequency = frequency;
+ return new AUD_SinusReader(m_frequency, m_sampleRate);
}
diff --git a/intern/audaspace/intern/AUD_SinusFactory.h b/intern/audaspace/intern/AUD_SinusFactory.h
index ffb36e741b9..2c5965e11f0 100644
--- a/intern/audaspace/intern/AUD_SinusFactory.h
+++ b/intern/audaspace/intern/AUD_SinusFactory.h
@@ -37,12 +37,16 @@ private:
/**
* The frequence of the sine wave.
*/
- double m_frequency;
+ const float m_frequency;
/**
* The target sample rate for output.
*/
- AUD_SampleRate m_sampleRate;
+ const AUD_SampleRate m_sampleRate;
+
+ // hide copy constructor and operator=
+ AUD_SinusFactory(const AUD_SinusFactory&);
+ AUD_SinusFactory& operator=(const AUD_SinusFactory&);
public:
/**
@@ -50,21 +54,15 @@ public:
* \param frequency The desired frequency.
* \param sampleRate The target sample rate for playback.
*/
- AUD_SinusFactory(double frequency,
+ AUD_SinusFactory(float frequency,
AUD_SampleRate sampleRate = AUD_RATE_44100);
/**
* Returns the frequency of the sine wave.
*/
- double getFrequency();
-
- /**
- * Sets the frequency.
- * \param frequency The new frequency.
- */
- void setFrequency(double frequency);
+ float getFrequency() const;
- virtual AUD_IReader* createReader();
+ virtual AUD_IReader* createReader() const;
};
#endif //AUD_SINUSFACTORY
diff --git a/intern/audaspace/intern/AUD_SinusReader.cpp b/intern/audaspace/intern/AUD_SinusReader.cpp
index c52513d5d2e..e810c576a5c 100644
--- a/intern/audaspace/intern/AUD_SinusReader.cpp
+++ b/intern/audaspace/intern/AUD_SinusReader.cpp
@@ -24,7 +24,6 @@
*/
#include "AUD_SinusReader.h"
-#include "AUD_Buffer.h"
#include <cmath>
@@ -32,20 +31,14 @@
#define M_PI 3.14159265358979323846
#endif
-AUD_SinusReader::AUD_SinusReader(double frequency, AUD_SampleRate sampleRate)
+AUD_SinusReader::AUD_SinusReader(float frequency, AUD_SampleRate sampleRate) :
+ m_frequency(frequency),
+ m_position(0),
+ m_sampleRate(sampleRate)
{
- m_frequency = frequency;
- m_position = 0;
- m_buffer = new AUD_Buffer(); AUD_NEW("buffer")
- m_sampleRate = sampleRate;
}
-AUD_SinusReader::~AUD_SinusReader()
-{
- delete m_buffer; AUD_DELETE("buffer")
-}
-
-bool AUD_SinusReader::isSeekable()
+bool AUD_SinusReader::isSeekable() const
{
return true;
}
@@ -55,17 +48,17 @@ void AUD_SinusReader::seek(int position)
m_position = position;
}
-int AUD_SinusReader::getLength()
+int AUD_SinusReader::getLength() const
{
return -1;
}
-int AUD_SinusReader::getPosition()
+int AUD_SinusReader::getPosition() const
{
return m_position;
}
-AUD_Specs AUD_SinusReader::getSpecs()
+AUD_Specs AUD_SinusReader::getSpecs() const
{
AUD_Specs specs;
specs.rate = m_sampleRate;
@@ -73,27 +66,17 @@ AUD_Specs AUD_SinusReader::getSpecs()
return specs;
}
-AUD_ReaderType AUD_SinusReader::getType()
-{
- return AUD_TYPE_STREAM;
-}
-
-bool AUD_SinusReader::notify(AUD_Message &message)
-{
- return false;
-}
-
void AUD_SinusReader::read(int & length, sample_t* & buffer)
{
// resize if necessary
- if(m_buffer->getSize() < length * sizeof(sample_t))
- m_buffer->resize(length * sizeof(sample_t));
+ if(m_buffer.getSize() < length * sizeof(sample_t))
+ m_buffer.resize(length * sizeof(sample_t));
// fill with sine data
- buffer = m_buffer->getBuffer();
+ buffer = m_buffer.getBuffer();
for(int i = 0; i < length; i++)
{
- buffer[i] = sin((m_position + i) * 2.0f * M_PI * m_frequency /
+ buffer[i] = sin((m_position + i) * 2 * M_PI * m_frequency /
(float)m_sampleRate);
}
diff --git a/intern/audaspace/intern/AUD_SinusReader.h b/intern/audaspace/intern/AUD_SinusReader.h
index cb060dd8a43..4b88ed15db1 100644
--- a/intern/audaspace/intern/AUD_SinusReader.h
+++ b/intern/audaspace/intern/AUD_SinusReader.h
@@ -27,7 +27,7 @@
#define AUD_SINUSREADER
#include "AUD_IReader.h"
-class AUD_Buffer;
+#include "AUD_Buffer.h"
/**
* This class is used for sine tone playback.
@@ -43,7 +43,7 @@ private:
/**
* The frequency of the sine wave.
*/
- double m_frequency;
+ const float m_frequency;
/**
* The current position in samples.
@@ -53,12 +53,16 @@ private:
/**
* The playback buffer.
*/
- AUD_Buffer* m_buffer;
+ AUD_Buffer m_buffer;
/**
* The sample rate for the output.
*/
- AUD_SampleRate m_sampleRate;
+ const AUD_SampleRate m_sampleRate;
+
+ // hide copy constructor and operator=
+ AUD_SinusReader(const AUD_SinusReader&);
+ AUD_SinusReader& operator=(const AUD_SinusReader&);
public:
/**
@@ -66,20 +70,13 @@ public:
* \param frequency The frequency of the sine wave.
* \param sampleRate The output sample rate.
*/
- AUD_SinusReader(double frequency, AUD_SampleRate sampleRate);
-
- /**
- * Destroys the reader.
- */
- virtual ~AUD_SinusReader();
+ AUD_SinusReader(float frequency, AUD_SampleRate sampleRate);
- virtual bool isSeekable();
+ virtual bool isSeekable() const;
virtual void seek(int position);
- virtual int getLength();
- virtual int getPosition();
- virtual AUD_Specs getSpecs();
- virtual AUD_ReaderType getType();
- virtual bool notify(AUD_Message &message);
+ virtual int getLength() const;
+ virtual int getPosition() const;
+ virtual AUD_Specs getSpecs() const;
virtual void read(int & length, sample_t* & buffer);
};
diff --git a/intern/audaspace/intern/AUD_SoftwareDevice.cpp b/intern/audaspace/intern/AUD_SoftwareDevice.cpp
index 5a3f25fba07..0c0206608e3 100644
--- a/intern/audaspace/intern/AUD_SoftwareDevice.cpp
+++ b/intern/audaspace/intern/AUD_SoftwareDevice.cpp
@@ -25,11 +25,11 @@
#include "AUD_SoftwareDevice.h"
#include "AUD_IReader.h"
-#include "AUD_Mixer.h"
+#include "AUD_DefaultMixer.h"
#include "AUD_IFactory.h"
-#include "AUD_SourceCaps.h"
#include <cstring>
+#include <limits>
/// Saves the data for playback.
struct AUD_SoftwareHandle : AUD_Handle
@@ -42,18 +42,24 @@ struct AUD_SoftwareHandle : AUD_Handle
/// The volume of the source.
float volume;
+
+ /// The loop count of the source.
+ int loopcount;
+
+ /// The stop callback.
+ stopCallback stop;
+
+ /// Stop callback data.
+ void* stop_data;
};
typedef std::list<AUD_SoftwareHandle*>::iterator AUD_HandleIterator;
void AUD_SoftwareDevice::create()
{
- m_playingSounds = new std::list<AUD_SoftwareHandle*>(); AUD_NEW("list")
- m_pausedSounds = new std::list<AUD_SoftwareHandle*>(); AUD_NEW("list")
m_playback = false;
m_volume = 1.0f;
- m_mixer = new AUD_Mixer(); AUD_NEW("mixer")
- m_mixer->setSpecs(m_specs);
+ m_mixer = new AUD_DefaultMixer(m_specs);
pthread_mutexattr_t attr;
pthread_mutexattr_init(&attr);
@@ -69,25 +75,27 @@ void AUD_SoftwareDevice::destroy()
if(m_playback)
playing(m_playback = false);
- delete m_mixer; AUD_DELETE("mixer")
+ delete m_mixer;
+
+ AUD_SoftwareHandle* handle;
// delete all playing sounds
- while(m_playingSounds->begin() != m_playingSounds->end())
+ while(!m_playingSounds.empty())
{
- delete (*(m_playingSounds->begin()))->reader; AUD_DELETE("reader")
- delete *(m_playingSounds->begin()); AUD_DELETE("handle")
- m_playingSounds->erase(m_playingSounds->begin());
+ handle = m_playingSounds.front();
+ m_playingSounds.pop_front();
+ delete handle->reader;
+ delete handle;
}
- delete m_playingSounds; AUD_DELETE("list")
// delete all paused sounds
- while(m_pausedSounds->begin() != m_pausedSounds->end())
+ while(!m_pausedSounds.empty())
{
- delete (*(m_pausedSounds->begin()))->reader; AUD_DELETE("reader")
- delete *(m_pausedSounds->begin()); AUD_DELETE("handle")
- m_pausedSounds->erase(m_pausedSounds->begin());
+ handle = m_pausedSounds.front();
+ m_pausedSounds.pop_front();
+ delete handle->reader;
+ delete handle;
}
- delete m_pausedSounds; AUD_DELETE("list")
pthread_mutex_destroy(&m_mutex);
}
@@ -99,12 +107,16 @@ void AUD_SoftwareDevice::mix(data_t* buffer, int length)
{
AUD_SoftwareHandle* sound;
int len;
+ int pos;
sample_t* buf;
std::list<AUD_SoftwareHandle*> stopSounds;
+ std::list<AUD_Buffer*> tempBufs;
+ AUD_Buffer* tempbuf;
+ int samplesize = AUD_SAMPLE_SIZE(m_specs);
// for all sounds
- AUD_HandleIterator it = m_playingSounds->begin();
- while(it != m_playingSounds->end())
+ AUD_HandleIterator it = m_playingSounds.begin();
+ while(it != m_playingSounds.end())
{
sound = *it;
// increment the iterator to make sure it's valid,
@@ -112,14 +124,42 @@ void AUD_SoftwareDevice::mix(data_t* buffer, int length)
++it;
// get the buffer from the source
+ pos = 0;
len = length;
sound->reader->read(len, buf);
- m_mixer->add(buf, 0, len, sound->volume);
+ // in case of looping
+ while(pos + len < length && sound->loopcount)
+ {
+ tempbuf = new AUD_Buffer(len * samplesize);
+ memcpy(tempbuf->getBuffer(), buf, len * samplesize);
+ tempBufs.push_back(tempbuf);
+ m_mixer->add(tempbuf->getBuffer(), pos, len, sound->volume);
+
+ pos += len;
+
+ if(sound->loopcount > 0)
+ sound->loopcount--;
+
+ sound->reader->seek(0);
+
+ len = length - pos;
+ sound->reader->read(len, buf);
+
+ // prevent endless loop
+ if(!len)
+ break;
+ }
+
+ m_mixer->add(buf, pos, len, sound->volume);
+ pos += len;
// in case the end of the sound is reached
- if(len < length)
+ if(pos < length)
{
+ if(sound->stop)
+ sound->stop(sound->stop_data);
+
if(sound->keep)
pause(sound);
else
@@ -130,12 +170,20 @@ void AUD_SoftwareDevice::mix(data_t* buffer, int length)
// superpose
m_mixer->superpose(buffer, length, m_volume);
+ // cleanup
while(!stopSounds.empty())
{
sound = stopSounds.front();
stopSounds.pop_front();
stop(sound);
}
+
+ while(!tempBufs.empty())
+ {
+ tempbuf = tempBufs.front();
+ tempBufs.pop_front();
+ delete tempbuf;
+ }
}
unlock();
@@ -143,18 +191,18 @@ void AUD_SoftwareDevice::mix(data_t* buffer, int length)
bool AUD_SoftwareDevice::isValid(AUD_Handle* handle)
{
- for(AUD_HandleIterator i = m_playingSounds->begin();
- i != m_playingSounds->end(); i++)
+ for(AUD_HandleIterator i = m_playingSounds.begin();
+ i != m_playingSounds.end(); i++)
if(*i == handle)
return true;
- for(AUD_HandleIterator i = m_pausedSounds->begin();
- i != m_pausedSounds->end(); i++)
+ for(AUD_HandleIterator i = m_pausedSounds.begin();
+ i != m_pausedSounds.end(); i++)
if(*i == handle)
return true;
return false;
}
-AUD_DeviceSpecs AUD_SoftwareDevice::getSpecs()
+AUD_DeviceSpecs AUD_SoftwareDevice::getSpecs() const
{
return m_specs;
}
@@ -163,24 +211,22 @@ AUD_Handle* AUD_SoftwareDevice::play(AUD_IFactory* factory, bool keep)
{
AUD_IReader* reader = factory->createReader();
- if(reader == NULL)
- AUD_THROW(AUD_ERROR_READER);
-
// prepare the reader
reader = m_mixer->prepare(reader);
if(reader == NULL)
return NULL;
- AUD_Specs rs = reader->getSpecs();
-
// play sound
- AUD_SoftwareHandle* sound = new AUD_SoftwareHandle; AUD_NEW("handle")
+ AUD_SoftwareHandle* sound = new AUD_SoftwareHandle;
sound->keep = keep;
sound->reader = reader;
sound->volume = 1.0f;
+ sound->loopcount = 0;
+ sound->stop = NULL;
+ sound->stop_data = NULL;
lock();
- m_playingSounds->push_back(sound);
+ m_playingSounds.push_back(sound);
if(!m_playback)
playing(m_playback = true);
@@ -196,14 +242,14 @@ bool AUD_SoftwareDevice::pause(AUD_Handle* handle)
lock();
// only songs that are played can be paused
- for(AUD_HandleIterator i = m_playingSounds->begin();
- i != m_playingSounds->end(); i++)
+ for(AUD_HandleIterator i = m_playingSounds.begin();
+ i != m_playingSounds.end(); i++)
{
if(*i == handle)
{
- m_pausedSounds->push_back(*i);
- m_playingSounds->erase(i);
- if(m_playingSounds->empty())
+ m_pausedSounds.push_back(*i);
+ m_playingSounds.erase(i);
+ if(m_playingSounds.empty())
playing(m_playback = false);
result = true;
break;
@@ -222,13 +268,13 @@ bool AUD_SoftwareDevice::resume(AUD_Handle* handle)
lock();
// only songs that are paused can be resumed
- for(AUD_HandleIterator i = m_pausedSounds->begin();
- i != m_pausedSounds->end(); i++)
+ for(AUD_HandleIterator i = m_pausedSounds.begin();
+ i != m_pausedSounds.end(); i++)
{
if(*i == handle)
{
- m_playingSounds->push_back(*i);
- m_pausedSounds->erase(i);
+ m_playingSounds.push_back(*i);
+ m_pausedSounds.erase(i);
if(!m_playback)
playing(m_playback = true);
result = true;
@@ -247,15 +293,15 @@ bool AUD_SoftwareDevice::stop(AUD_Handle* handle)
lock();
- for(AUD_HandleIterator i = m_playingSounds->begin();
- i != m_playingSounds->end(); i++)
+ for(AUD_HandleIterator i = m_playingSounds.begin();
+ i != m_playingSounds.end(); i++)
{
if(*i == handle)
{
- delete (*i)->reader; AUD_DELETE("reader")
- delete *i; AUD_DELETE("handle")
- m_playingSounds->erase(i);
- if(m_playingSounds->empty())
+ delete (*i)->reader;
+ delete *i;
+ m_playingSounds.erase(i);
+ if(m_playingSounds.empty())
playing(m_playback = false);
result = true;
break;
@@ -263,14 +309,14 @@ bool AUD_SoftwareDevice::stop(AUD_Handle* handle)
}
if(!result)
{
- for(AUD_HandleIterator i = m_pausedSounds->begin();
- i != m_pausedSounds->end(); i++)
+ for(AUD_HandleIterator i = m_pausedSounds.begin();
+ i != m_pausedSounds.end(); i++)
{
if(*i == handle)
{
- delete (*i)->reader; AUD_DELETE("reader")
- delete *i; AUD_DELETE("handle")
- m_pausedSounds->erase(i);
+ delete (*i)->reader;
+ delete *i;
+ m_pausedSounds.erase(i);
result = true;
break;
}
@@ -282,41 +328,34 @@ bool AUD_SoftwareDevice::stop(AUD_Handle* handle)
return result;
}
-bool AUD_SoftwareDevice::setKeep(AUD_Handle* handle, bool keep)
+bool AUD_SoftwareDevice::getKeep(AUD_Handle* handle)
{
bool result = false;
lock();
if(isValid(handle))
- {
- ((AUD_SoftwareHandle*)handle)->keep = keep;
- result = true;
- }
+ result = ((AUD_SoftwareHandle*)handle)->keep;
unlock();
return result;
}
-bool AUD_SoftwareDevice::sendMessage(AUD_Handle* handle, AUD_Message &message)
+bool AUD_SoftwareDevice::setKeep(AUD_Handle* handle, bool keep)
{
- lock();
-
bool result = false;
- if(handle == 0)
+ lock();
+
+ if(isValid(handle))
{
- for(AUD_HandleIterator i = m_playingSounds->begin();
- i != m_playingSounds->end(); i++)
- result |= (*i)->reader->notify(message);
- for(AUD_HandleIterator i = m_pausedSounds->begin();
- i != m_pausedSounds->end(); i++)
- result |= (*i)->reader->notify(message);
+ ((AUD_SoftwareHandle*)handle)->keep = keep;
+ result = true;
}
- else if(isValid(handle))
- result = ((AUD_SoftwareHandle*)handle)->reader->notify(message);
+
unlock();
+
return result;
}
@@ -361,8 +400,8 @@ AUD_Status AUD_SoftwareDevice::getStatus(AUD_Handle* handle)
lock();
- for(AUD_HandleIterator i = m_playingSounds->begin();
- i != m_playingSounds->end(); i++)
+ for(AUD_HandleIterator i = m_playingSounds.begin();
+ i != m_playingSounds.end(); i++)
{
if(*i == handle)
{
@@ -372,8 +411,8 @@ AUD_Status AUD_SoftwareDevice::getStatus(AUD_Handle* handle)
}
if(status == AUD_STATUS_INVALID)
{
- for(AUD_HandleIterator i = m_pausedSounds->begin();
- i != m_pausedSounds->end(); i++)
+ for(AUD_HandleIterator i = m_pausedSounds.begin();
+ i != m_pausedSounds.end(); i++)
{
if(*i == handle)
{
@@ -398,77 +437,76 @@ void AUD_SoftwareDevice::unlock()
pthread_mutex_unlock(&m_mutex);
}
-bool AUD_SoftwareDevice::checkCapability(int capability)
+float AUD_SoftwareDevice::getVolume() const
{
- return capability == AUD_CAPS_SOFTWARE_DEVICE ||
- capability == AUD_CAPS_VOLUME ||
- capability == AUD_CAPS_SOURCE_VOLUME;
+ return m_volume;
}
-bool AUD_SoftwareDevice::setCapability(int capability, void *value)
+void AUD_SoftwareDevice::setVolume(float volume)
{
- bool result = false;
+ m_volume = volume;
+}
- switch(capability)
- {
- case AUD_CAPS_VOLUME:
- lock();
- m_volume = *((float*)value);
- if(m_volume > 1.0f)
- m_volume = 1.0f;
- else if(m_volume < 0.0f)
- m_volume = 0.0f;
- unlock();
- return true;
- case AUD_CAPS_SOURCE_VOLUME:
- {
- AUD_SourceCaps* caps = (AUD_SourceCaps*) value;
- lock();
- if(isValid(caps->handle))
- {
- AUD_SoftwareHandle* handle = (AUD_SoftwareHandle*)caps->handle;
- handle->volume = caps->value;
- if(handle->volume > 1.0f)
- handle->volume = 1.0f;
- else if(handle->volume < 0.0f)
- handle->volume = 0.0f;
- result = true;
- }
- unlock();
- }
- break;
- }
+float AUD_SoftwareDevice::getVolume(AUD_Handle* handle)
+{
+ lock();
+ float result = std::numeric_limits<float>::quiet_NaN();
+ if(isValid(handle))
+ result = ((AUD_SoftwareHandle*)handle)->volume;
+ unlock();
+ return result;
+}
- return result;;
+bool AUD_SoftwareDevice::setVolume(AUD_Handle* handle, float volume)
+{
+ lock();
+ bool result = isValid(handle);
+ if(result)
+ ((AUD_SoftwareHandle*)handle)->volume = volume;
+ unlock();
+ return result;
}
-bool AUD_SoftwareDevice::getCapability(int capability, void *value)
+float AUD_SoftwareDevice::getPitch(AUD_Handle* handle)
{
- bool result = false;
+ return std::numeric_limits<float>::quiet_NaN();
+}
- switch(capability)
- {
- case AUD_CAPS_VOLUME:
- lock();
- *((float*)value) = m_volume;
- unlock();
- return true;
- case AUD_CAPS_SOURCE_VOLUME:
- {
- AUD_SourceCaps* caps = (AUD_SourceCaps*) value;
+bool AUD_SoftwareDevice::setPitch(AUD_Handle* handle, float pitch)
+{
+ return false;
+}
- lock();
+int AUD_SoftwareDevice::getLoopCount(AUD_Handle* handle)
+{
+ lock();
+ int result = 0;
+ if(isValid(handle))
+ result = ((AUD_SoftwareHandle*)handle)->loopcount;
+ unlock();
+ return result;
+}
- if(isValid(caps->handle))
- {
- caps->value = ((AUD_SoftwareHandle*)caps->handle)->volume;
- result = true;
- }
+bool AUD_SoftwareDevice::setLoopCount(AUD_Handle* handle, int count)
+{
+ lock();
+ bool result = isValid(handle);
+ if(result)
+ ((AUD_SoftwareHandle*)handle)->loopcount = count;
+ unlock();
+ return result;
+}
- unlock();
- }
- break;
+bool AUD_SoftwareDevice::setStopCallback(AUD_Handle* handle, stopCallback callback, void* data)
+{
+ lock();
+ bool result = isValid(handle);
+ if(result)
+ {
+ AUD_SoftwareHandle* h = (AUD_SoftwareHandle*)handle;
+ h->stop = callback;
+ h->stop_data = data;
}
-
+ unlock();
return result;
}
diff --git a/intern/audaspace/intern/AUD_SoftwareDevice.h b/intern/audaspace/intern/AUD_SoftwareDevice.h
index a12fddb1e00..93b0f165c7a 100644
--- a/intern/audaspace/intern/AUD_SoftwareDevice.h
+++ b/intern/audaspace/intern/AUD_SoftwareDevice.h
@@ -29,6 +29,7 @@
#include "AUD_IDevice.h"
struct AUD_SoftwareHandle;
class AUD_Mixer;
+class AUD_Buffer;
#include <list>
#include <pthread.h>
@@ -81,12 +82,12 @@ private:
/**
* The list of sounds that are currently playing.
*/
- std::list<AUD_SoftwareHandle*>* m_playingSounds;
+ std::list<AUD_SoftwareHandle*> m_playingSounds;
/**
* The list of sounds that are currently paused.
*/
- std::list<AUD_SoftwareHandle*>* m_pausedSounds;
+ std::list<AUD_SoftwareHandle*> m_pausedSounds;
/**
* Whether there is currently playback.
@@ -111,21 +112,27 @@ private:
bool isValid(AUD_Handle* handle);
public:
- virtual AUD_DeviceSpecs getSpecs();
+ virtual AUD_DeviceSpecs getSpecs() const;
virtual AUD_Handle* play(AUD_IFactory* factory, bool keep = false);
virtual bool pause(AUD_Handle* handle);
virtual bool resume(AUD_Handle* handle);
virtual bool stop(AUD_Handle* handle);
+ virtual bool getKeep(AUD_Handle* handle);
virtual bool setKeep(AUD_Handle* handle, bool keep);
- virtual bool sendMessage(AUD_Handle* handle, AUD_Message &message);
virtual bool seek(AUD_Handle* handle, float position);
virtual float getPosition(AUD_Handle* handle);
virtual AUD_Status getStatus(AUD_Handle* handle);
virtual void lock();
virtual void unlock();
- virtual bool checkCapability(int capability);
- virtual bool setCapability(int capability, void *value);
- virtual bool getCapability(int capability, void *value);
+ virtual float getVolume() const;
+ virtual void setVolume(float volume);
+ virtual float getVolume(AUD_Handle* handle);
+ virtual bool setVolume(AUD_Handle* handle, float volume);
+ virtual float getPitch(AUD_Handle* handle);
+ virtual bool setPitch(AUD_Handle* handle, float pitch);
+ virtual int getLoopCount(AUD_Handle* handle);
+ virtual bool setLoopCount(AUD_Handle* handle, int count);
+ virtual bool setStopCallback(AUD_Handle* handle, stopCallback callback = NULL, void* data = NULL);
};
#endif //AUD_SOFTWAREDEVICE
diff --git a/intern/audaspace/intern/AUD_Space.h b/intern/audaspace/intern/AUD_Space.h
index 9e857ce73b0..e411b831d52 100644
--- a/intern/audaspace/intern/AUD_Space.h
+++ b/intern/audaspace/intern/AUD_Space.h
@@ -33,7 +33,7 @@
/// The size of a sample in the specified format in bytes.
#define AUD_SAMPLE_SIZE(specs) (specs.channels * sizeof(sample_t))
/// Throws a AUD_Exception with the provided error code.
-#define AUD_THROW(exception) { AUD_Exception e; e.error = exception; throw e; }
+#define AUD_THROW(exception, errorstr) { AUD_Exception e; e.error = exception; e.str = errorstr; throw e; }
/// Returns the smaller of the two values.
#define AUD_MIN(a, b) (((a) < (b)) ? (a) : (b))
@@ -47,64 +47,6 @@
/// The default playback buffer size of a device.
#define AUD_DEFAULT_BUFFER_SIZE 1024
-// Capability defines
-
-/// This capability checks whether a device is a 3D device. See AUD_I3DDevice.h.
-#define AUD_CAPS_3D_DEVICE 0x0001
-
-/**
- * This capability checks whether a device is a software device. See
- * AUD_SoftwareDevice.
- */
-#define AUD_CAPS_SOFTWARE_DEVICE 0x0002
-
-/**
- * This capability enables the user to set the overall volume of the device.
- * You can set and get it with the pointer pointing to a float value between
- * 0.0 (muted) and 1.0 (maximum volume).
- */
-#define AUD_CAPS_VOLUME 0x0101
-
-/**
- * This capability enables the user to set the volume of a source.
- * You can set and get it with the pointer pointing to a AUD_SourceValue
- * structure defined in AUD_SourceCaps.h.
- */
-#define AUD_CAPS_SOURCE_VOLUME 0x1001
-
-/**
- * This capability enables the user to set the pitch of a source.
- * You can set and get it with the pointer pointing to a AUD_SourceValue
- * structure defined in AUD_SourceCaps.h.
- */
-#define AUD_CAPS_SOURCE_PITCH 0x1002
-
-/**
- * This capability enables the user to buffer a factory into the device.
- * Setting with the factory as pointer loads the factory into a device internal
- * buffer. Play function calls with the buffered factory as argument result in
- * the internal buffer being played back, so there's no reader created, what
- * also results in not being able to send messages to that handle.
- * A repeated call with the same factory doesn't do anything.
- * A set call with a NULL pointer results in all buffered factories being
- * deleted.
- * \note This is only possible with factories that create readers of the buffer
- * type.
- */
-#define AUD_CAPS_BUFFERED_FACTORY 0x2001
-
-// Used for debugging memory leaks.
-//#define AUD_DEBUG_MEMORY
-
-#ifdef AUD_DEBUG_MEMORY
-extern int AUD_References(int count, const char* text);
-#define AUD_NEW(text) AUD_References(1, text);
-#define AUD_DELETE(text) AUD_References(-1, text);
-#else
-#define AUD_NEW(text)
-#define AUD_DELETE(text)
-#endif
-
/**
* The format of a sample.
* The last 4 bit save the byte count of the format.
@@ -154,17 +96,6 @@ typedef enum
AUD_RATE_192000 = 192000 /// 192000 Hz.
} AUD_SampleRate;
-/**
- * Type of a reader.
- * @see AUD_IReader for details.
- */
-typedef enum
-{
- AUD_TYPE_INVALID = 0, /// Invalid reader type.
- AUD_TYPE_BUFFER, /// Reader reads from a buffer.
- AUD_TYPE_STREAM /// Reader reads from a stream.
-} AUD_ReaderType;
-
/// Status of a playback handle.
typedef enum
{
@@ -177,23 +108,16 @@ typedef enum
typedef enum
{
AUD_NO_ERROR = 0,
- AUD_ERROR_READER,
- AUD_ERROR_FACTORY,
+ AUD_ERROR_SPECS,
+ AUD_ERROR_PROPS,
AUD_ERROR_FILE,
+ AUD_ERROR_SRC,
AUD_ERROR_FFMPEG,
- AUD_ERROR_SDL,
AUD_ERROR_OPENAL,
- AUD_ERROR_JACK
+ AUD_ERROR_SDL,
+ AUD_ERROR_JACK,
} AUD_Error;
-/// Message codes.
-typedef enum
-{
- AUD_MSG_INVALID = 0, /// Invalid message.
- AUD_MSG_LOOP, /// Loop reader message.
- AUD_MSG_VOLUME /// Volume reader message.
-} AUD_MessageType;
-
/// Fading types.
typedef enum
{
@@ -201,39 +125,17 @@ typedef enum
AUD_FADE_OUT
} AUD_FadeType;
-/// 3D device settings.
-typedef enum
-{
- AUD_3DS_NONE, /// No setting.
- AUD_3DS_SPEED_OF_SOUND, /// Speed of sound.
- AUD_3DS_DOPPLER_FACTOR, /// Doppler factor.
- AUD_3DS_DISTANCE_MODEL /// Distance model.
-} AUD_3DSetting;
-
/// Possible distance models for the 3D device.
-#define AUD_DISTANCE_MODEL_NONE 0.0f
-#define AUD_DISTANCE_MODEL_INVERSE 1.0f
-#define AUD_DISTANCE_MODEL_INVERSE_CLAMPED 2.0f
-#define AUD_DISTANCE_MODEL_LINEAR 3.0f
-#define AUD_DISTANCE_MODEL_LINEAR_CLAMPED 4.0f
-#define AUD_DISTANCE_MODEL_EXPONENT 5.0f
-#define AUD_DISTANCE_MODEL_EXPONENT_CLAMPED 6.0f
-
-/// 3D source settings.
typedef enum
{
- AUD_3DSS_NONE, /// No setting.
- AUD_3DSS_IS_RELATIVE, /// > 0 tells that the sound source is
- /// relative to the listener
- AUD_3DSS_MIN_GAIN, /// Minimum gain.
- AUD_3DSS_MAX_GAIN, /// Maximum gain.
- AUD_3DSS_REFERENCE_DISTANCE, /// Reference distance.
- AUD_3DSS_MAX_DISTANCE, /// Maximum distance.
- AUD_3DSS_ROLLOFF_FACTOR, /// Rolloff factor.
- AUD_3DSS_CONE_INNER_ANGLE, /// Cone inner angle.
- AUD_3DSS_CONE_OUTER_ANGLE, /// Cone outer angle.
- AUD_3DSS_CONE_OUTER_GAIN /// Cone outer gain.
-} AUD_3DSourceSetting;
+ AUD_DISTANCE_MODEL_INVALID = 0,
+ AUD_DISTANCE_MODEL_INVERSE,
+ AUD_DISTANCE_MODEL_INVERSE_CLAMPED,
+ AUD_DISTANCE_MODEL_LINEAR,
+ AUD_DISTANCE_MODEL_LINEAR_CLAMPED,
+ AUD_DISTANCE_MODEL_EXPONENT,
+ AUD_DISTANCE_MODEL_EXPONENT_CLAMPED,
+} AUD_DistanceModel;
/// Sample type.(float samples)
typedef float sample_t;
@@ -280,42 +182,12 @@ typedef struct
*/
AUD_Error error;
- // void* userData; - for the case it is needed someday
-} AUD_Exception;
-
-/// Message structure.
-typedef struct
-{
/**
- * The message type.
+ * Error string.
*/
- AUD_MessageType type;
-
- union
- {
- // loop reader
- struct
- {
- int loopcount;
- float time;
- };
-
- // volume reader
- float volume;
- };
-} AUD_Message;
+ const char* str;
-/// Handle structure, for inherition.
-typedef struct
-{
- /// x, y and z coordinates of the object.
- float position[3];
-
- /// x, y and z coordinates telling the velocity and direction of the object.
- float velocity[3];
-
- /// 3x3 matrix telling the orientation of the object.
- float orientation[9];
-} AUD_3DData;
+ // void* userData; - for the case it is needed someday
+} AUD_Exception;
#endif //AUD_SPACE
diff --git a/intern/audaspace/intern/AUD_StreamBufferFactory.cpp b/intern/audaspace/intern/AUD_StreamBufferFactory.cpp
index cb97e6125fb..c1eb8161e30 100644
--- a/intern/audaspace/intern/AUD_StreamBufferFactory.cpp
+++ b/intern/audaspace/intern/AUD_StreamBufferFactory.cpp
@@ -29,15 +29,12 @@
#include <cstring>
-AUD_StreamBufferFactory::AUD_StreamBufferFactory(AUD_IFactory* factory)
+AUD_StreamBufferFactory::AUD_StreamBufferFactory(AUD_IFactory* factory) :
+ m_buffer(new AUD_Buffer())
{
AUD_IReader* reader = factory->createReader();
- if(reader == NULL)
- AUD_THROW(AUD_ERROR_READER);
-
m_specs = reader->getSpecs();
- m_buffer = AUD_Reference<AUD_Buffer>(new AUD_Buffer()); AUD_NEW("buffer")
int sample_size = AUD_SAMPLE_SIZE(m_specs);
int length;
@@ -68,13 +65,11 @@ AUD_StreamBufferFactory::AUD_StreamBufferFactory(AUD_IFactory* factory)
index += length;
}
- m_buffer.get()->resize(index*sample_size, true);
- delete reader; AUD_DELETE("reader")
+ m_buffer.get()->resize(index * sample_size, true);
+ delete reader;
}
-AUD_IReader* AUD_StreamBufferFactory::createReader()
+AUD_IReader* AUD_StreamBufferFactory::createReader() const
{
- AUD_IReader* reader = new AUD_BufferReader(m_buffer, m_specs);
- AUD_NEW("reader")
- return reader;
+ return new AUD_BufferReader(m_buffer, m_specs);
}
diff --git a/intern/audaspace/intern/AUD_StreamBufferFactory.h b/intern/audaspace/intern/AUD_StreamBufferFactory.h
index eda06f6c10c..d0cf1001e5c 100644
--- a/intern/audaspace/intern/AUD_StreamBufferFactory.h
+++ b/intern/audaspace/intern/AUD_StreamBufferFactory.h
@@ -47,6 +47,10 @@ private:
*/
AUD_Specs m_specs;
+ // hide copy constructor and operator=
+ AUD_StreamBufferFactory(const AUD_StreamBufferFactory&);
+ AUD_StreamBufferFactory& operator=(const AUD_StreamBufferFactory&);
+
public:
/**
* Creates the factory and reads the reader created by the factory supplied
@@ -56,7 +60,7 @@ public:
*/
AUD_StreamBufferFactory(AUD_IFactory* factory);
- virtual AUD_IReader* createReader();
+ virtual AUD_IReader* createReader() const;
};
#endif //AUD_STREAMBUFFERFACTORY
diff --git a/intern/audaspace/intern/Makefile b/intern/audaspace/intern/Makefile
index 8b159f4a639..b89a8bcd397 100644
--- a/intern/audaspace/intern/Makefile
+++ b/intern/audaspace/intern/Makefile
@@ -35,6 +35,8 @@ include nan_compile.mk
CCFLAGS += $(LEVEL_1_CPP_WARNINGS)
+CPPFLAGS += -I$(NAN_PYTHON)/include/python$(NAN_PYTHON_VERSION)
+
ifeq ($(WITH_SDL),true)
CPPFLAGS += -DWITH_SDL
CPPFLAGS += $(NAN_SDLCFLAGS)
@@ -67,5 +69,6 @@ CPPFLAGS += -I../ffmpeg
CPPFLAGS += -I../FX
CPPFLAGS += -I../SDL
CPPFLAGS += -I../SRC
+CPPFLAGS += -I../Python
CPPFLAGS += -I..
CPPFLAGS += -I.
diff --git a/intern/audaspace/jack/AUD_JackDevice.cpp b/intern/audaspace/jack/AUD_JackDevice.cpp
index ae7725be81c..5aa3f7b3fc1 100644
--- a/intern/audaspace/jack/AUD_JackDevice.cpp
+++ b/intern/audaspace/jack/AUD_JackDevice.cpp
@@ -26,7 +26,6 @@
#include "AUD_Mixer.h"
#include "AUD_JackDevice.h"
#include "AUD_IReader.h"
-#include "AUD_Buffer.h"
#include <stdio.h>
#include <stdlib.h>
@@ -43,8 +42,8 @@ void AUD_JackDevice::updateRingBuffers()
unsigned int samplesize = AUD_SAMPLE_SIZE(m_specs);
unsigned int i, j;
unsigned int channels = m_specs.channels;
- sample_t* buffer = m_buffer->getBuffer();
- float* deinterleave = m_deinterleavebuf->getBuffer();
+ sample_t* buffer = m_buffer.getBuffer();
+ float* deinterleave = m_deinterleavebuf.getBuffer();
jack_transport_state_t state;
jack_position_t position;
@@ -173,7 +172,13 @@ void AUD_JackDevice::jack_shutdown(void *data)
device->m_valid = false;
}
-AUD_JackDevice::AUD_JackDevice(AUD_DeviceSpecs specs, int buffersize)
+static const char* clientopen_error = "AUD_JackDevice: Couldn't connect to "
+ "jack server.";
+static const char* port_error = "AUD_JackDevice: Couldn't create output port.";
+static const char* activate_error = "AUD_JackDevice: Couldn't activate the "
+ "client.";
+
+AUD_JackDevice::AUD_JackDevice(std::string name, AUD_DeviceSpecs specs, int buffersize)
{
if(specs.channels == AUD_CHANNELS_INVALID)
specs.channels = AUD_CHANNELS_STEREO;
@@ -186,9 +191,9 @@ AUD_JackDevice::AUD_JackDevice(AUD_DeviceSpecs specs, int buffersize)
jack_status_t status;
// open client
- m_client = jack_client_open("Blender", options, &status);
+ m_client = jack_client_open(name.c_str(), options, &status);
if(m_client == NULL)
- AUD_THROW(AUD_ERROR_JACK);
+ AUD_THROW(AUD_ERROR_JACK, clientopen_error);
// set callbacks
jack_set_process_callback(m_client, AUD_JackDevice::jack_mix, this);
@@ -196,7 +201,7 @@ AUD_JackDevice::AUD_JackDevice(AUD_DeviceSpecs specs, int buffersize)
jack_set_sync_callback(m_client, AUD_JackDevice::jack_sync, this);
// register our output channels which are called ports in jack
- m_ports = new jack_port_t*[m_specs.channels]; AUD_NEW("jack_port")
+ m_ports = new jack_port_t*[m_specs.channels];
try
{
@@ -208,25 +213,25 @@ AUD_JackDevice::AUD_JackDevice(AUD_DeviceSpecs specs, int buffersize)
JACK_DEFAULT_AUDIO_TYPE,
JackPortIsOutput, 0);
if(m_ports[i] == NULL)
- AUD_THROW(AUD_ERROR_JACK);
+ AUD_THROW(AUD_ERROR_JACK, port_error);
}
}
- catch(AUD_Exception)
+ catch(AUD_Exception&)
{
jack_client_close(m_client);
- delete[] m_ports; AUD_DELETE("jack_port")
+ delete[] m_ports;
throw;
}
m_specs.rate = (AUD_SampleRate)jack_get_sample_rate(m_client);
buffersize *= sizeof(sample_t);
- m_ringbuffers = new jack_ringbuffer_t*[specs.channels]; AUD_NEW("jack_buffers")
+ m_ringbuffers = new jack_ringbuffer_t*[specs.channels];
for(unsigned int i = 0; i < specs.channels; i++)
m_ringbuffers[i] = jack_ringbuffer_create(buffersize);
buffersize *= specs.channels;
- m_buffer = new AUD_Buffer(buffersize); AUD_NEW("buffer");
- m_deinterleavebuf = new AUD_Buffer(buffersize); AUD_NEW("buffer");
+ m_deinterleavebuf.resize(buffersize);
+ m_buffer.resize(buffersize);
create();
@@ -238,25 +243,19 @@ AUD_JackDevice::AUD_JackDevice(AUD_DeviceSpecs specs, int buffersize)
pthread_mutex_init(&m_mixingLock, NULL);
pthread_cond_init(&m_mixingCondition, NULL);
- try
- {
- // activate the client
- if(jack_activate(m_client))
- AUD_THROW(AUD_ERROR_JACK);
- }
- catch(AUD_Exception)
+ // activate the client
+ if(jack_activate(m_client))
{
jack_client_close(m_client);
- delete[] m_ports; AUD_DELETE("jack_port")
- delete m_buffer; AUD_DELETE("buffer");
- delete m_deinterleavebuf; AUD_DELETE("buffer");
+ delete[] m_ports;
for(unsigned int i = 0; i < specs.channels; i++)
jack_ringbuffer_free(m_ringbuffers[i]);
- delete[] m_ringbuffers; AUD_DELETE("jack_buffers")
+ delete[] m_ringbuffers;
pthread_mutex_destroy(&m_mixingLock);
pthread_cond_destroy(&m_mixingCondition);
destroy();
- throw;
+
+ AUD_THROW(AUD_ERROR_JACK, activate_error);
}
const char** ports = jack_get_ports(m_client, NULL, NULL,
@@ -284,7 +283,7 @@ AUD_JackDevice::~AUD_JackDevice()
jack_client_close(m_client);
m_valid = false;
- delete[] m_ports; AUD_DELETE("jack_port")
+ delete[] m_ports;
pthread_mutex_lock(&m_mixingLock);
pthread_cond_signal(&m_mixingCondition);
@@ -293,11 +292,9 @@ AUD_JackDevice::~AUD_JackDevice()
pthread_cond_destroy(&m_mixingCondition);
pthread_mutex_destroy(&m_mixingLock);
- delete m_buffer; AUD_DELETE("buffer");
- delete m_deinterleavebuf; AUD_DELETE("buffer");
for(unsigned int i = 0; i < m_specs.channels; i++)
jack_ringbuffer_free(m_ringbuffers[i]);
- delete[] m_ringbuffers; AUD_DELETE("jack_buffers")
+ delete[] m_ringbuffers;
destroy();
}
diff --git a/intern/audaspace/jack/AUD_JackDevice.h b/intern/audaspace/jack/AUD_JackDevice.h
index 58e34978c1f..418992e0db1 100644
--- a/intern/audaspace/jack/AUD_JackDevice.h
+++ b/intern/audaspace/jack/AUD_JackDevice.h
@@ -28,7 +28,9 @@
#include "AUD_SoftwareDevice.h"
-class AUD_Buffer;
+#include "AUD_Buffer.h"
+
+#include <string>
#include <jack.h>
#include <ringbuffer.h>
@@ -54,9 +56,12 @@ private:
/**
* The output buffer.
*/
- AUD_Buffer* m_buffer;
+ AUD_Buffer m_buffer;
- AUD_Buffer* m_deinterleavebuf;
+ /**
+ * The deinterleaving buffer.
+ */
+ AUD_Buffer m_deinterleavebuf;
jack_ringbuffer_t** m_ringbuffers;
@@ -114,16 +119,23 @@ private:
void updateRingBuffers();
+ // hide copy constructor and operator=
+ AUD_JackDevice(const AUD_JackDevice&);
+ AUD_JackDevice& operator=(const AUD_JackDevice&);
+
protected:
virtual void playing(bool playing);
public:
/**
* Creates a Jack client for audio output.
- * \param specs The wanted audio specification, where only the channel count is important.
+ * \param name The client name.
+ * \param specs The wanted audio specification, where only the channel count
+ * is important.
+ * \param buffersize The size of the internal buffer.
* \exception AUD_Exception Thrown if the audio device cannot be opened.
*/
- AUD_JackDevice(AUD_DeviceSpecs specs, int buffersize = AUD_DEFAULT_BUFFER_SIZE);
+ AUD_JackDevice(std::string name, AUD_DeviceSpecs specs, int buffersize = AUD_DEFAULT_BUFFER_SIZE);
/**
* Closes the Jack client.
diff --git a/intern/audaspace/make/msvc_9_0/audaspace.vcproj b/intern/audaspace/make/msvc_9_0/audaspace.vcproj
index 379f435e3b8..e6d83f18b01 100644
--- a/intern/audaspace/make/msvc_9_0/audaspace.vcproj
+++ b/intern/audaspace/make/msvc_9_0/audaspace.vcproj
@@ -44,7 +44,7 @@
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="2"
- AdditionalIncludeDirectories="..\..;..\..\ffmpeg;..\..\FX;..\..\intern;..\..\OpenAL;..\..\SDL;..\..\SRC;..\..\sndfile;..\..\..\..\..\lib\windows\pthreads\include;..\..\..\..\..\lib\windows\samplerate\include;..\..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\..\lib\windows\ffmpeg\include\msvc;..\..\..\..\..\lib\windows\sdl\include;..\..\..\..\..\lib\windows\openal\include;..\..\..\..\..\lib\windows\jack\include;..\..\..\..\..\lib\windows\sndfile\include;..\..\..\..\..\lib\windows\fftw3\include"
+ AdditionalIncludeDirectories="..\..;..\..\ffmpeg;..\..\FX;..\..\intern;..\..\OpenAL;..\..\SDL;..\..\SRC;..\..\sndfile;..\..\Python;..\..\..\..\..\lib\windows\pthreads\include;..\..\..\..\..\lib\windows\samplerate\include;..\..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\..\lib\windows\ffmpeg\include\msvc;..\..\..\..\..\lib\windows\sdl\include;..\..\..\..\..\lib\windows\openal\include;..\..\..\..\..\lib\windows\jack\include;..\..\..\..\..\lib\windows\sndfile\include;..\..\..\..\..\lib\windows\fftw3\include;..\..\..\..\..\lib\windows\python\include\python3.1"
PreprocessorDefinitions="WIN32,NDEBUG,_LIB,WITH_FFMPEG,WITH_SDL,WITH_OPENAL"
StringPooling="true"
RuntimeLibrary="0"
@@ -118,7 +118,7 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories="..\..;..\..\ffmpeg;..\..\FX;..\..\intern;..\..\OpenAL;..\..\SDL;..\..\SRC;..\..\sndfile;..\..\..\..\..\lib\windows\pthreads\include;..\..\..\..\..\lib\windows\samplerate\include;..\..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\..\lib\windows\ffmpeg\include\msvc;..\..\..\..\..\lib\windows\sdl\include;..\..\..\..\..\lib\windows\openal\include;..\..\..\..\..\lib\windows\jack\include;..\..\..\..\..\lib\windows\sndfile\include;..\..\..\..\..\lib\windows\fftw3\include"
+ AdditionalIncludeDirectories="..\..;..\..\ffmpeg;..\..\FX;..\..\intern;..\..\OpenAL;..\..\SDL;..\..\SRC;..\..\sndfile;..\..\Python;..\..\..\..\..\lib\windows\pthreads\include;..\..\..\..\..\lib\windows\samplerate\include;..\..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\..\lib\windows\ffmpeg\include\msvc;..\..\..\..\..\lib\windows\sdl\include;..\..\..\..\..\lib\windows\openal\include;..\..\..\..\..\lib\windows\jack\include;..\..\..\..\..\lib\windows\sndfile\include;..\..\..\..\..\lib\windows\fftw3\include;..\..\..\..\..\lib\windows\python\include\python3.1"
PreprocessorDefinitions="WIN32,_DEBUG,_LIB,WITH_FFMPEG,WITH_SDL,WITH_OPENAL"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
@@ -193,7 +193,7 @@
<Tool
Name="VCCLCompilerTool"
InlineFunctionExpansion="2"
- AdditionalIncludeDirectories="..\..;..\..\ffmpeg;..\..\FX;..\..\intern;..\..\OpenAL;..\..\SDL;..\..\SRC;..\..\sndfile;..\..\..\..\..\lib\windows\pthreads\include;..\..\..\..\..\lib\windows\samplerate\include;..\..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\..\lib\windows\ffmpeg\include\msvc;..\..\..\..\..\lib\windows\sdl\include;..\..\..\..\..\lib\windows\openal\include;..\..\..\..\..\lib\windows\jack\include;..\..\..\..\..\lib\windows\sndfile\include;..\..\..\..\..\lib\windows\fftw3\include"
+ AdditionalIncludeDirectories="..\..;..\..\ffmpeg;..\..\FX;..\..\intern;..\..\OpenAL;..\..\SDL;..\..\SRC;..\..\sndfile;..\..\Python;..\..\..\..\..\lib\windows\pthreads\include;..\..\..\..\..\lib\windows\samplerate\include;..\..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\..\lib\windows\ffmpeg\include\msvc;..\..\..\..\..\lib\windows\sdl\include;..\..\..\..\..\lib\windows\openal\include;..\..\..\..\..\lib\windows\jack\include;..\..\..\..\..\lib\windows\sndfile\include;..\..\..\..\..\lib\windows\fftw3\include;..\..\..\..\..\lib\windows\python\include\python3.1"
PreprocessorDefinitions="WIN32,NDEBUG,_LIB,WITH_FFMPEG,WITH_SDL,WITH_OPENAL"
StringPooling="true"
RuntimeLibrary="2"
@@ -267,7 +267,7 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories="..\..;..\..\ffmpeg;..\..\FX;..\..\intern;..\..\OpenAL;..\..\SDL;..\..\SRC;..\..\sndfile;..\..\..\..\..\lib\windows\pthreads\include;..\..\..\..\..\lib\windows\samplerate\include;..\..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\..\lib\windows\ffmpeg\include\msvc;..\..\..\..\..\lib\windows\sdl\include;..\..\..\..\..\lib\windows\openal\include;..\..\..\..\..\lib\windows\jack\include;..\..\..\..\..\lib\windows\sndfile\include;..\..\..\..\..\lib\windows\fftw3\include"
+ AdditionalIncludeDirectories="..\..;..\..\ffmpeg;..\..\FX;..\..\intern;..\..\OpenAL;..\..\SDL;..\..\SRC;..\..\sndfile;..\..\Python;..\..\..\..\..\lib\windows\pthreads\include;..\..\..\..\..\lib\windows\samplerate\include;..\..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\..\lib\windows\ffmpeg\include\msvc;..\..\..\..\..\lib\windows\sdl\include;..\..\..\..\..\lib\windows\openal\include;..\..\..\..\..\lib\windows\jack\include;..\..\..\..\..\lib\windows\sndfile\include;..\..\..\..\..\lib\windows\fftw3\include;..\..\..\..\..\lib\windows\python\include\python3.1"
PreprocessorDefinitions="WIN32,_DEBUG,_LIB,WITH_FFMPEG,WITH_SDL,WITH_OPENAL"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
@@ -322,6 +322,10 @@
Name="intern"
>
<File
+ RelativePath="..\..\intern\AUD_3DMath.h"
+ >
+ </File>
+ <File
RelativePath="..\..\intern\AUD_Buffer.cpp"
>
</File>
@@ -386,6 +390,14 @@
>
</File>
<File
+ RelativePath="..\..\intern\AUD_DefaultMixer.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\intern\AUD_DefaultMixer.h"
+ >
+ </File>
+ <File
RelativePath="..\..\intern\AUD_FileFactory.cpp"
>
</File>
@@ -450,6 +462,10 @@
>
</File>
<File
+ RelativePath="..\..\intern\AUD_PyInit.h"
+ >
+ </File>
+ <File
RelativePath="..\..\intern\AUD_ReadDevice.cpp"
>
</File>
@@ -482,6 +498,22 @@
>
</File>
<File
+ RelativePath="..\..\intern\AUD_SilenceFactory.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\intern\AUD_SilenceFactory.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\intern\AUD_SilenceReader.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\intern\AUD_SilenceReader.h"
+ >
+ </File>
+ <File
RelativePath="..\..\intern\AUD_SinusFactory.cpp"
>
</File>
@@ -506,10 +538,6 @@
>
</File>
<File
- RelativePath="..\..\intern\AUD_SourceCaps.h"
- >
- </File>
- <File
RelativePath="..\..\intern\AUD_Space.h"
>
</File>
@@ -554,11 +582,11 @@
>
</File>
<File
- RelativePath="..\..\FX\AUD_AccumulatorReader.cpp"
+ RelativePath="..\..\FX\AUD_BaseIIRFilterReader.cpp"
>
</File>
<File
- RelativePath="..\..\FX\AUD_AccumulatorReader.h"
+ RelativePath="..\..\FX\AUD_BaseIIRFilterReader.h"
>
</File>
<File
@@ -570,11 +598,11 @@
>
</File>
<File
- RelativePath="..\..\FX\AUD_ButterworthReader.cpp"
+ RelativePath="..\..\FX\AUD_CallbackIIRFilterReader.cpp"
>
</File>
<File
- RelativePath="..\..\FX\AUD_ButterworthReader.h"
+ RelativePath="..\..\FX\AUD_CallbackIIRFilterReader.h"
>
</File>
<File
@@ -594,6 +622,14 @@
>
</File>
<File
+ RelativePath="..\..\FX\AUD_DoubleFactory.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\FX\AUD_DoubleFactory.h"
+ >
+ </File>
+ <File
RelativePath="..\..\FX\AUD_DoubleReader.cpp"
>
</File>
@@ -626,14 +662,6 @@
>
</File>
<File
- RelativePath="..\..\FX\AUD_EnvelopeReader.cpp"
- >
- </File>
- <File
- RelativePath="..\..\FX\AUD_EnvelopeReader.h"
- >
- </File>
- <File
RelativePath="..\..\FX\AUD_FaderFactory.cpp"
>
</File>
@@ -658,11 +686,19 @@
>
</File>
<File
- RelativePath="..\..\FX\AUD_HighpassReader.cpp"
+ RelativePath="..\..\FX\AUD_IIRFilterFactory.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\FX\AUD_IIRFilterFactory.h"
>
</File>
<File
- RelativePath="..\..\FX\AUD_HighpassReader.h"
+ RelativePath="..\..\FX\AUD_IIRFilterReader.cpp"
+ >
+ </File>
+ <File
+ RelativePath="..\..\FX\AUD_IIRFilterReader.h"
>
</File>
<File
@@ -706,14 +742,6 @@
>
</File>
<File
- RelativePath="..\..\FX\AUD_LowpassReader.cpp"
- >
- </File>
- <File
- RelativePath="..\..\FX\AUD_LowpassReader.h"
- >
- </File>
- <File
RelativePath="..\..\FX\AUD_PingPongFactory.cpp"
>
</File>
@@ -746,14 +774,6 @@
>
</File>
<File
- RelativePath="..\..\FX\AUD_RectifyReader.cpp"
- >
- </File>
- <File
- RelativePath="..\..\FX\AUD_RectifyReader.h"
- >
- </File>
- <File
RelativePath="..\..\FX\AUD_ReverseFactory.cpp"
>
</File>
@@ -778,14 +798,6 @@
>
</File>
<File
- RelativePath="..\..\FX\AUD_SquareReader.cpp"
- >
- </File>
- <File
- RelativePath="..\..\FX\AUD_SquareReader.h"
- >
- </File>
- <File
RelativePath="..\..\FX\AUD_SumFactory.cpp"
>
</File>
@@ -794,27 +806,27 @@
>
</File>
<File
- RelativePath="..\..\FX\AUD_SumReader.cpp"
+ RelativePath="..\..\FX\AUD_SuperposeFactory.cpp"
>
</File>
<File
- RelativePath="..\..\FX\AUD_SumReader.h"
+ RelativePath="..\..\FX\AUD_SuperposeFactory.h"
>
</File>
<File
- RelativePath="..\..\FX\AUD_VolumeFactory.cpp"
+ RelativePath="..\..\FX\AUD_SuperposeReader.cpp"
>
</File>
<File
- RelativePath="..\..\FX\AUD_VolumeFactory.h"
+ RelativePath="..\..\FX\AUD_SuperposeReader.h"
>
</File>
<File
- RelativePath="..\..\FX\AUD_VolumeReader.cpp"
+ RelativePath="..\..\FX\AUD_VolumeFactory.cpp"
>
</File>
<File
- RelativePath="..\..\FX\AUD_VolumeReader.h"
+ RelativePath="..\..\FX\AUD_VolumeFactory.h"
>
</File>
</Filter>
@@ -895,22 +907,14 @@
</File>
</Filter>
<Filter
- Name="fftw"
+ Name="Python"
>
<File
- RelativePath="..\..\fftw\AUD_BandPassFactory.cpp"
- >
- </File>
- <File
- RelativePath="..\..\fftw\AUD_BandPassFactory.h"
- >
- </File>
- <File
- RelativePath="..\..\fftw\AUD_BandPassReader.cpp"
+ RelativePath="..\..\Python\AUD_PyAPI.cpp"
>
</File>
<File
- RelativePath="..\..\fftw\AUD_BandPassReader.h"
+ RelativePath="..\..\Python\AUD_PyAPI.h"
>
</File>
</Filter>
diff --git a/intern/audaspace/sndfile/AUD_SndFileFactory.cpp b/intern/audaspace/sndfile/AUD_SndFileFactory.cpp
index bac6dc321f4..d8ea7006073 100644
--- a/intern/audaspace/sndfile/AUD_SndFileFactory.cpp
+++ b/intern/audaspace/sndfile/AUD_SndFileFactory.cpp
@@ -29,39 +29,21 @@
#include <cstring>
-AUD_SndFileFactory::AUD_SndFileFactory(const char* filename)
+AUD_SndFileFactory::AUD_SndFileFactory(std::string filename) :
+ m_filename(filename)
{
- if(filename != NULL)
- {
- m_filename = new char[strlen(filename)+1]; AUD_NEW("string")
- strcpy(m_filename, filename);
- }
- else
- m_filename = NULL;
}
-AUD_SndFileFactory::AUD_SndFileFactory(unsigned char* buffer, int size)
+AUD_SndFileFactory::AUD_SndFileFactory(const data_t* buffer, int size) :
+ m_buffer(new AUD_Buffer(size))
{
- m_filename = NULL;
- m_buffer = AUD_Reference<AUD_Buffer>(new AUD_Buffer(size));
memcpy(m_buffer.get()->getBuffer(), buffer, size);
}
-AUD_SndFileFactory::~AUD_SndFileFactory()
-{
- if(m_filename)
- {
- delete[] m_filename; AUD_DELETE("string")
- }
-}
-
-AUD_IReader* AUD_SndFileFactory::createReader()
+AUD_IReader* AUD_SndFileFactory::createReader() const
{
- AUD_IReader* reader;
- if(m_filename)
- reader = new AUD_SndFileReader(m_filename);
+ if(m_buffer.get())
+ return new AUD_SndFileReader(m_buffer);
else
- reader = new AUD_SndFileReader(m_buffer);
- AUD_NEW("reader")
- return reader;
+ return new AUD_SndFileReader(m_filename);
}
diff --git a/intern/audaspace/sndfile/AUD_SndFileFactory.h b/intern/audaspace/sndfile/AUD_SndFileFactory.h
index 98187ff1590..350e48abef8 100644
--- a/intern/audaspace/sndfile/AUD_SndFileFactory.h
+++ b/intern/audaspace/sndfile/AUD_SndFileFactory.h
@@ -30,6 +30,8 @@
#include "AUD_Reference.h"
class AUD_Buffer;
+#include <string>
+
/**
* This factory reads a sound file via libsndfile.
*/
@@ -39,33 +41,32 @@ private:
/**
* The filename of the sound source file.
*/
- char* m_filename;
+ std::string m_filename;
/**
* The buffer to read from.
*/
AUD_Reference<AUD_Buffer> m_buffer;
+ // hide copy constructor and operator=
+ AUD_SndFileFactory(const AUD_SndFileFactory&);
+ AUD_SndFileFactory& operator=(const AUD_SndFileFactory&);
+
public:
/**
* Creates a new factory.
* \param filename The sound file path.
*/
- AUD_SndFileFactory(const char* filename);
+ AUD_SndFileFactory(std::string filename);
/**
* Creates a new factory.
* \param buffer The buffer to read from.
* \param size The size of the buffer.
*/
- AUD_SndFileFactory(unsigned char* buffer, int size);
-
- /**
- * Destroys the factory.
- */
- ~AUD_SndFileFactory();
+ AUD_SndFileFactory(const data_t* buffer, int size);
- virtual AUD_IReader* createReader();
+ virtual AUD_IReader* createReader() const;
};
#endif //AUD_SNDFILEFACTORY
diff --git a/intern/audaspace/sndfile/AUD_SndFileReader.cpp b/intern/audaspace/sndfile/AUD_SndFileReader.cpp
index f9ed8d6388e..488a06d8728 100644
--- a/intern/audaspace/sndfile/AUD_SndFileReader.cpp
+++ b/intern/audaspace/sndfile/AUD_SndFileReader.cpp
@@ -24,7 +24,6 @@
*/
#include "AUD_SndFileReader.h"
-#include "AUD_Buffer.h"
#include <cstring>
@@ -77,30 +76,31 @@ sf_count_t AUD_SndFileReader::vio_tell(void *user_data)
return reader->m_memoffset;
}
-AUD_SndFileReader::AUD_SndFileReader(const char* filename)
+static const char* fileopen_error = "AUD_SndFileReader: File couldn't be "
+ "read.";
+
+AUD_SndFileReader::AUD_SndFileReader(std::string filename) :
+ m_position(0)
{
SF_INFO sfinfo;
sfinfo.format = 0;
- m_sndfile = sf_open(filename, SFM_READ, &sfinfo);
+ m_sndfile = sf_open(filename.c_str(), SFM_READ, &sfinfo);
if(!m_sndfile)
- AUD_THROW(AUD_ERROR_FILE);
+ AUD_THROW(AUD_ERROR_FILE, fileopen_error);
m_specs.channels = (AUD_Channels) sfinfo.channels;
m_specs.rate = (AUD_SampleRate) sfinfo.samplerate;
m_length = sfinfo.frames;
m_seekable = sfinfo.seekable;
- m_position = 0;
-
- m_buffer = new AUD_Buffer(); AUD_NEW("buffer")
}
-AUD_SndFileReader::AUD_SndFileReader(AUD_Reference<AUD_Buffer> buffer)
+AUD_SndFileReader::AUD_SndFileReader(AUD_Reference<AUD_Buffer> buffer) :
+ m_position(0),
+ m_membuffer(buffer),
+ m_memoffset(0)
{
- m_membuffer = buffer;
- m_memoffset = 0;
-
m_vio.get_filelen = vio_get_filelen;
m_vio.read = vio_read;
m_vio.seek = vio_seek;
@@ -113,25 +113,20 @@ AUD_SndFileReader::AUD_SndFileReader(AUD_Reference<AUD_Buffer> buffer)
m_sndfile = sf_open_virtual(&m_vio, SFM_READ, &sfinfo, this);
if(!m_sndfile)
- AUD_THROW(AUD_ERROR_FILE);
+ AUD_THROW(AUD_ERROR_FILE, fileopen_error);
m_specs.channels = (AUD_Channels) sfinfo.channels;
m_specs.rate = (AUD_SampleRate) sfinfo.samplerate;
m_length = sfinfo.frames;
m_seekable = sfinfo.seekable;
- m_position = 0;
-
- m_buffer = new AUD_Buffer(); AUD_NEW("buffer")
}
AUD_SndFileReader::~AUD_SndFileReader()
{
sf_close(m_sndfile);
-
- delete m_buffer; AUD_DELETE("buffer")
}
-bool AUD_SndFileReader::isSeekable()
+bool AUD_SndFileReader::isSeekable() const
{
return m_seekable;
}
@@ -145,40 +140,30 @@ void AUD_SndFileReader::seek(int position)
}
}
-int AUD_SndFileReader::getLength()
+int AUD_SndFileReader::getLength() const
{
return m_length;
}
-int AUD_SndFileReader::getPosition()
+int AUD_SndFileReader::getPosition() const
{
return m_position;
}
-AUD_Specs AUD_SndFileReader::getSpecs()
+AUD_Specs AUD_SndFileReader::getSpecs() const
{
return m_specs;
}
-AUD_ReaderType AUD_SndFileReader::getType()
-{
- return AUD_TYPE_STREAM;
-}
-
-bool AUD_SndFileReader::notify(AUD_Message &message)
-{
- return false;
-}
-
void AUD_SndFileReader::read(int & length, sample_t* & buffer)
{
int sample_size = AUD_SAMPLE_SIZE(m_specs);
// resize output buffer if necessary
- if(m_buffer->getSize() < length*sample_size)
- m_buffer->resize(length*sample_size);
+ if(m_buffer.getSize() < length*sample_size)
+ m_buffer.resize(length*sample_size);
- buffer = m_buffer->getBuffer();
+ buffer = m_buffer.getBuffer();
length = sf_readf_float(m_sndfile, buffer, length);
diff --git a/intern/audaspace/sndfile/AUD_SndFileReader.h b/intern/audaspace/sndfile/AUD_SndFileReader.h
index 8886b6e9efc..a53189fdecd 100644
--- a/intern/audaspace/sndfile/AUD_SndFileReader.h
+++ b/intern/audaspace/sndfile/AUD_SndFileReader.h
@@ -28,8 +28,9 @@
#include "AUD_IReader.h"
#include "AUD_Reference.h"
-class AUD_Buffer;
+#include "AUD_Buffer.h"
+#include <string>
#include <sndfile.h>
typedef sf_count_t (*sf_read_f)(SNDFILE *sndfile, void *ptr, sf_count_t frames);
@@ -63,7 +64,7 @@ private:
/**
* The playback buffer.
*/
- AUD_Buffer* m_buffer;
+ AUD_Buffer m_buffer;
/**
* The sndfile.
@@ -91,6 +92,10 @@ private:
static sf_count_t vio_read(void *ptr, sf_count_t count, void *user_data);
static sf_count_t vio_tell(void *user_data);
+ // hide copy constructor and operator=
+ AUD_SndFileReader(const AUD_SndFileReader&);
+ AUD_SndFileReader& operator=(const AUD_SndFileReader&);
+
public:
/**
* Creates a new reader.
@@ -98,7 +103,7 @@ public:
* \exception AUD_Exception Thrown if the file specified does not exist or
* cannot be read with libsndfile.
*/
- AUD_SndFileReader(const char* filename);
+ AUD_SndFileReader(std::string filename);
/**
* Creates a new reader.
@@ -113,13 +118,11 @@ public:
*/
virtual ~AUD_SndFileReader();
- virtual bool isSeekable();
+ virtual bool isSeekable() const;
virtual void seek(int position);
- virtual int getLength();
- virtual int getPosition();
- virtual AUD_Specs getSpecs();
- virtual AUD_ReaderType getType();
- virtual bool notify(AUD_Message &message);
+ virtual int getLength() const;
+ virtual int getPosition() const;
+ virtual AUD_Specs getSpecs() const;
virtual void read(int & length, sample_t* & buffer);
};
diff --git a/intern/ghost/SConscript b/intern/ghost/SConscript
index 65c00b16373..9ecd61857ce 100644
--- a/intern/ghost/SConscript
+++ b/intern/ghost/SConscript
@@ -14,7 +14,7 @@ if window_system == 'darwin':
pf = ['GHOST_DisplayManager', 'GHOST_System', 'GHOST_Window', 'GHOST_DropTarget']
defs=['_USE_MATH_DEFINES']
-if window_system in ('linux2', 'openbsd3', 'sunos5', 'freebsd6', 'irix6', 'aix4', 'aix5'):
+if window_system in ('linux2', 'openbsd3', 'sunos5', 'freebsd7', 'freebsd8', 'freebsd9', 'irix6', 'aix4', 'aix5'):
for f in pf:
try:
sources.remove('intern' + os.sep + f + 'Win32.cpp')
@@ -60,4 +60,4 @@ if env['BF_GHOST_DEBUG']:
incs = '. ../string #extern/glew/include #source/blender/imbuf #source/blender/makesdna ' + env['BF_OPENGL_INC']
if window_system in ('win32-vc', 'win32-mingw', 'cygwin', 'linuxcross', 'win64-vc'):
incs = env['BF_WINTAB_INC'] + ' ' + incs
-env.BlenderLib ('bf_ghost', sources, Split(incs), defines=defs, libtype=['intern','player'], priority = [40,15] )
+env.BlenderLib ('bf_ghost', sources, Split(incs), defines=defs, libtype=['intern','player'], priority = [40,15] ) \ No newline at end of file
diff --git a/intern/smoke/intern/WTURBULENCE.cpp b/intern/smoke/intern/WTURBULENCE.cpp
index 6d43bc95471..917c510348a 100644
--- a/intern/smoke/intern/WTURBULENCE.cpp
+++ b/intern/smoke/intern/WTURBULENCE.cpp
@@ -825,13 +825,18 @@ void WTURBULENCE::stepTurbulenceFull(float dtOrg, float* xvel, float* yvel, floa
// get LU factorization of texture jacobian and apply
// it to unit vectors
sLU LU = computeLU(jacobian);
- float xUnwarped[] = {1.0f, 0.0f, 0.0f};
- float yUnwarped[] = {0.0f, 1.0f, 0.0f};
- float zUnwarped[] = {0.0f, 0.0f, 1.0f};
- float xWarped[] = {1.0f, 0.0f, 0.0f};
- float yWarped[] = {0.0f, 1.0f, 0.0f};
- float zWarped[] = {0.0f, 0.0f, 1.0f};
+ float xUnwarped[3], yUnwarped[3], zUnwarped[3];
+ float xWarped[3], yWarped[3], zWarped[3];
bool nonSingular = isNonsingular(LU);
+
+ xUnwarped[0] = 1.0f; xUnwarped[1] = 0.0f; xUnwarped[2] = 0.0f;
+ yUnwarped[0] = 0.0f; yUnwarped[1] = 1.0f; yUnwarped[2] = 0.0f;
+ zUnwarped[0] = 0.0f; zUnwarped[1] = 0.0f; zUnwarped[2] = 1.0f;
+
+ xWarped[0] = 1.0f; xWarped[1] = 0.0f; xWarped[2] = 0.0f;
+ yWarped[0] = 0.0f; yWarped[1] = 1.0f; yWarped[2] = 0.0f;
+ zWarped[0] = 0.0f; zWarped[1] = 0.0f; zWarped[2] = 1.0f;
+
#if 0
// UNUSED
float eigMax = 10.0f;
diff --git a/projectfiles_vc9/blender/BPY_python/BPY_python.vcproj b/projectfiles_vc9/blender/BPY_python/BPY_python.vcproj
index 5271b7ffe35..d416f9e3be8 100644
--- a/projectfiles_vc9/blender/BPY_python/BPY_python.vcproj
+++ b/projectfiles_vc9/blender/BPY_python/BPY_python.vcproj
@@ -43,7 +43,7 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\bsp\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\source\blender;..\..\..\source\blender\avi;..\..\..\source\blender\img;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\python;..\..\..\source\blender\include;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesrna;..\..\..\source\blender\makesdna;..\..\..\source\blender\blenloader;..\..\..\source\blender\renderconverter;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\radiosity\extern\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\SoundSystem;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\blender\gpu;..\..\..\source\blender\windowmanager;..\..\..\source\blender\editors\include"
+ AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\bsp\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\source\blender;..\..\..\source\blender\avi;..\..\..\source\blender\img;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\python;..\..\..\source\blender\include;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesrna;..\..\..\source\blender\makesdna;..\..\..\source\blender\blenloader;..\..\..\source\blender\renderconverter;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\radiosity\extern\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\SoundSystem;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\blender\gpu;..\..\..\source\blender\windowmanager;..\..\..\source\blender\editors\include;..\..\..\intern\audaspace\intern"
PreprocessorDefinitions="_DEBUG,WIN32,_LIB;WITH_FFMPEG"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
@@ -121,7 +121,7 @@
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\bsp\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\source\blender;..\..\..\source\blender\avi;..\..\..\source\blender\img;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\python;..\..\..\source\blender\include;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesrna;..\..\..\source\blender\makesdna;..\..\..\source\blender\blenloader;..\..\..\source\blender\renderconverter;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\radiosity\extern\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\SoundSystem;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\blender\gpu;..\..\..\source\blender\windowmanager;..\..\..\source\blender\editors\include"
+ AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\bsp\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\source\blender;..\..\..\source\blender\avi;..\..\..\source\blender\img;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\python;..\..\..\source\blender\include;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesrna;..\..\..\source\blender\makesdna;..\..\..\source\blender\blenloader;..\..\..\source\blender\renderconverter;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\radiosity\extern\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\SoundSystem;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\blender\gpu;..\..\..\source\blender\windowmanager;..\..\..\source\blender\editors\include;..\..\..\intern\audaspace\intern"
PreprocessorDefinitions="WIN32,NDEBUG,_LIB"
StringPooling="true"
RuntimeLibrary="0"
@@ -198,7 +198,7 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\bsp\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\source\blender;..\..\..\source\blender\avi;..\..\..\source\blender\img;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\python;..\..\..\source\blender\include;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesrna;..\..\..\source\blender\makesdna;..\..\..\source\blender\blenloader;..\..\..\source\blender\renderconverter;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\radiosity\extern\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\SoundSystem;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\blender\gpu;..\..\..\source\blender\windowmanager;..\..\..\source\blender\editors\include"
+ AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\bsp\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\source\blender;..\..\..\source\blender\avi;..\..\..\source\blender\img;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\python;..\..\..\source\blender\include;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesrna;..\..\..\source\blender\makesdna;..\..\..\source\blender\blenloader;..\..\..\source\blender\renderconverter;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\radiosity\extern\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\SoundSystem;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\blender\gpu;..\..\..\source\blender\windowmanager;..\..\..\source\blender\editors\include;..\..\..\intern\audaspace\intern"
PreprocessorDefinitions="_DEBUG,WIN32,_LIB;WITH_FFMPEG"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
@@ -275,7 +275,7 @@
<Tool
Name="VCCLCompilerTool"
InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\bsp\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\source\blender;..\..\..\source\blender\avi;..\..\..\source\blender\img;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\python;..\..\..\source\blender\include;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesrna;..\..\..\source\blender\makesdna;..\..\..\source\blender\blenloader;..\..\..\source\blender\renderconverter;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\radiosity\extern\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\SoundSystem;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\blender\gpu;..\..\..\source\blender\windowmanager;..\..\..\source\blender\editors\include"
+ AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\bsp\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\source\blender;..\..\..\source\blender\avi;..\..\..\source\blender\img;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\python;..\..\..\source\blender\include;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesrna;..\..\..\source\blender\makesdna;..\..\..\source\blender\blenloader;..\..\..\source\blender\renderconverter;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\radiosity\extern\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\SoundSystem;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\blender\gpu;..\..\..\source\blender\windowmanager;..\..\..\source\blender\editors\include;..\..\..\intern\audaspace\intern"
PreprocessorDefinitions="WIN32,NDEBUG,_LIB"
StringPooling="true"
RuntimeLibrary="0"
@@ -431,6 +431,10 @@
RelativePath="..\..\..\source\blender\python\generic\mathutils_vector.c"
>
</File>
+ <File
+ RelativePath="..\..\..\source\blender\python\generic\noise.c"
+ >
+ </File>
</Filter>
</Filter>
<Filter
@@ -481,6 +485,10 @@
>
</File>
<File
+ RelativePath="..\..\..\source\blender\python\intern\bpy_rna_callback.h"
+ >
+ </File>
+ <File
RelativePath="..\..\..\source\blender\python\intern\bpy_util.h"
>
</File>
diff --git a/projectfiles_vc9/blender/blenkernel/BKE_blenkernel.vcproj b/projectfiles_vc9/blender/blenkernel/BKE_blenkernel.vcproj
index f1b92cde837..ba24f2185ab 100644
--- a/projectfiles_vc9/blender/blenkernel/BKE_blenkernel.vcproj
+++ b/projectfiles_vc9/blender/blenkernel/BKE_blenkernel.vcproj
@@ -635,6 +635,10 @@
>
</File>
<File
+ RelativePath="..\..\..\source\blender\blenkernel\intern\idcode.c"
+ >
+ </File>
+ <File
RelativePath="..\..\..\source\blender\blenkernel\intern\idprop.c"
>
</File>
@@ -743,6 +747,10 @@
>
</File>
<File
+ RelativePath="..\..\..\source\blender\blenkernel\intern\seqcache.c"
+ >
+ </File>
+ <File
RelativePath="..\..\..\source\blender\blenkernel\intern\seqeffects.c"
>
</File>
@@ -956,6 +964,10 @@
>
</File>
<File
+ RelativePath="..\..\..\source\blender\blenkernel\BKE_gpencil.h"
+ >
+ </File>
+ <File
RelativePath="..\..\..\source\blender\blenkernel\BKE_group.h"
>
</File>
@@ -964,6 +976,14 @@
>
</File>
<File
+ RelativePath="..\..\..\source\blender\blenkernel\BKE_idcode.h"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\source\blender\blenkernel\BKE_idprop.h"
+ >
+ </File>
+ <File
RelativePath="..\..\..\source\blender\blenkernel\BKE_image.h"
>
</File>
@@ -1152,10 +1172,6 @@
>
</File>
<File
- RelativePath="..\..\..\source\blender\blenkernel\Makefile"
- >
- </File>
- <File
RelativePath="..\..\..\source\blender\blenkernel\nla_private.h"
>
</File>
diff --git a/projectfiles_vc9/blender/editors/ED_editors.vcproj b/projectfiles_vc9/blender/editors/ED_editors.vcproj
index cda69b46f5e..12cb98c0a2a 100644
--- a/projectfiles_vc9/blender/editors/ED_editors.vcproj
+++ b/projectfiles_vc9/blender/editors/ED_editors.vcproj
@@ -356,6 +356,10 @@
Filter="c"
>
<File
+ RelativePath="..\..\..\source\blender\editors\datafiles\add.png.c"
+ >
+ </File>
+ <File
RelativePath="..\..\..\source\blender\editors\datafiles\Bfont.c"
>
</File>
@@ -368,10 +372,78 @@
>
</File>
<File
+ RelativePath="..\..\..\source\blender\editors\datafiles\blob.png.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\source\blender\editors\datafiles\blur.png.c"
+ >
+ </File>
+ <File
RelativePath="..\..\..\source\blender\editors\datafiles\bmonofont.ttf.c"
>
</File>
<File
+ RelativePath="..\..\..\source\blender\editors\datafiles\clay.png.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\source\blender\editors\datafiles\clone.png.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\source\blender\editors\datafiles\crease.png.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\source\blender\editors\datafiles\darken.png.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\source\blender\editors\datafiles\draw.png.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\source\blender\editors\datafiles\fill.png.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\source\blender\editors\datafiles\flatten.png.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\source\blender\editors\datafiles\grab.png.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\source\blender\editors\datafiles\inflate.png.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\source\blender\editors\datafiles\layer.png.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\source\blender\editors\datafiles\lighten.png.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\source\blender\editors\datafiles\mix.png.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\source\blender\editors\datafiles\multiply.png.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\source\blender\editors\datafiles\nudge.png.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\source\blender\editors\datafiles\pinch.png.c"
+ >
+ </File>
+ <File
RelativePath="..\..\..\source\blender\editors\datafiles\preview.blend.c"
>
</File>
@@ -380,6 +452,26 @@
>
</File>
<File
+ RelativePath="..\..\..\source\blender\editors\datafiles\scrape.png.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\source\blender\editors\datafiles\smear.png.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\source\blender\editors\datafiles\smooth.png.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\source\blender\editors\datafiles\snake_hook.png.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\source\blender\editors\datafiles\soften.png.c"
+ >
+ </File>
+ <File
RelativePath="..\..\..\source\blender\editors\datafiles\splash.png.c"
>
</File>
@@ -387,6 +479,26 @@
RelativePath="..\..\..\source\blender\editors\datafiles\startup.blend.c"
>
</File>
+ <File
+ RelativePath="..\..\..\source\blender\editors\datafiles\subtract.png.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\source\blender\editors\datafiles\texdraw.png.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\source\blender\editors\datafiles\thumb.png.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\source\blender\editors\datafiles\twist.png.c"
+ >
+ </File>
+ <File
+ RelativePath="..\..\..\source\blender\editors\datafiles\vertexdraw.png.c"
+ >
+ </File>
</Filter>
<Filter
Name="interface"
@@ -1476,10 +1588,6 @@
>
</File>
<File
- RelativePath="..\..\..\source\blender\editors\space_logic\logic_header.c"
- >
- </File>
- <File
RelativePath="..\..\..\source\blender\editors\space_logic\logic_intern.h"
>
</File>
diff --git a/projectfiles_vc9/blender/makesrna/RNA_makesrna.vcproj b/projectfiles_vc9/blender/makesrna/RNA_makesrna.vcproj
index 185410f16c9..74f798973d4 100644
--- a/projectfiles_vc9/blender/makesrna/RNA_makesrna.vcproj
+++ b/projectfiles_vc9/blender/makesrna/RNA_makesrna.vcproj
@@ -45,7 +45,7 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\source\blender;..\..\..\source\blender\blenlib;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\editors\include;..\..\..\source\blender\blenkernel;..\..\..\..\lib\windows\pthreads\include;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\gpu;..\..\..\source\blender\windowmanager;..\..\..\source\blender\imbuf;..\..\..\source\blender\makesrna\internal"
+ AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\memutil\include;..\..\..\source\blender;..\..\..\source\blender\blenlib;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\editors\include;..\..\..\source\blender\blenkernel;..\..\..\..\lib\windows\pthreads\include;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\gpu;..\..\..\source\blender\windowmanager;..\..\..\source\blender\imbuf;..\..\..\source\blender\makesrna\internal"
PreprocessorDefinitions="_DEBUG,WIN32,_CONSOLE"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
@@ -140,7 +140,7 @@
Name="VCCLCompilerTool"
Optimization="2"
InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\source\blender;..\..\..\source\blender\blenlib;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\editors\include;..\..\..\source\blender\blenkernel;..\..\..\..\lib\windows\pthreads\include;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\gpu;..\..\..\source\blender\windowmanager;..\..\..\source\blender\imbuf;..\..\..\source\blender\makesrna\internal"
+ AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\memutil\include;..\..\..\source\blender;..\..\..\source\blender\blenlib;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\editors\include;..\..\..\source\blender\blenkernel;..\..\..\..\lib\windows\pthreads\include;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\gpu;..\..\..\source\blender\windowmanager;..\..\..\source\blender\imbuf;..\..\..\source\blender\makesrna\internal"
PreprocessorDefinitions="NDEBUG,WIN32,_CONSOLE;GAMEBLENDER=1;WITH_SDL;WITH_OPENAL;WITH_JACK"
StringPooling="true"
RuntimeLibrary="0"
@@ -233,7 +233,7 @@
<Tool
Name="VCCLCompilerTool"
InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\source\blender;..\..\..\source\blender\blenlib;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\editors\include;..\..\..\source\blender\blenkernel;..\..\..\..\lib\windows\pthreads\include;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\gpu;..\..\..\source\blender\windowmanager;..\..\..\source\blender\imbuf;..\..\..\source\blender\makesrna\internal"
+ AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\memutil\include;..\..\..\source\blender;..\..\..\source\blender\blenlib;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\editors\include;..\..\..\source\blender\blenkernel;..\..\..\..\lib\windows\pthreads\include;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\gpu;..\..\..\source\blender\windowmanager;..\..\..\source\blender\imbuf;..\..\..\source\blender\makesrna\internal"
PreprocessorDefinitions="NDEBUG,WIN32,_CONSOLE"
StringPooling="true"
RuntimeLibrary="2"
@@ -326,7 +326,7 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\source\blender;..\..\..\source\blender\blenlib;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\editors\include;..\..\..\source\blender\blenkernel;..\..\..\..\lib\windows\pthreads\include;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\gpu;..\..\..\source\blender\windowmanager;..\..\..\source\blender\imbuf;..\..\..\source\blender\makesrna\internal"
+ AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\memutil\include;..\..\..\source\blender;..\..\..\source\blender\blenlib;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\editors\include;..\..\..\source\blender\blenkernel;..\..\..\..\lib\windows\pthreads\include;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\gpu;..\..\..\source\blender\windowmanager;..\..\..\source\blender\imbuf;..\..\..\source\blender\makesrna\internal"
PreprocessorDefinitions="_DEBUG;WIN32;_CONSOLE;GAMEBLENDER=1;WITH_SDL;WITH_OPENAL;WITH_JACK"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
@@ -422,7 +422,7 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\source\blender;..\..\..\source\blender\blenlib;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\editors\include;..\..\..\source\blender\blenkernel;..\..\..\..\lib\windows\pthreads\include;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\gpu;..\..\..\source\blender\windowmanager;..\..\..\source\blender\imbuf;..\..\..\source\blender\makesrna\internal"
+ AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\memutil\include;..\..\..\source\blender;..\..\..\source\blender\blenlib;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\editors\include;..\..\..\source\blender\blenkernel;..\..\..\..\lib\windows\pthreads\include;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\gpu;..\..\..\source\blender\windowmanager;..\..\..\source\blender\imbuf;..\..\..\source\blender\makesrna\internal"
PreprocessorDefinitions="_DEBUG,WIN32,_CONSOLE;GAMEBLENDER=1;WITH_SDL;WITH_OPENAL;WITH_JACK"
BasicRuntimeChecks="3"
RuntimeLibrary="1"
@@ -518,7 +518,7 @@
<Tool
Name="VCCLCompilerTool"
InlineFunctionExpansion="1"
- AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\source\blender;..\..\..\source\blender\blenlib;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\editors\include;..\..\..\source\blender\blenkernel;..\..\..\..\lib\windows\pthreads\include;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\gpu;..\..\..\source\blender\windowmanager;..\..\..\source\blender\imbuf;..\..\..\source\blender\makesrna\internal"
+ AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\memutil\include;..\..\..\source\blender;..\..\..\source\blender\blenlib;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\editors\include;..\..\..\source\blender\blenkernel;..\..\..\..\lib\windows\pthreads\include;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\gpu;..\..\..\source\blender\windowmanager;..\..\..\source\blender\imbuf;..\..\..\source\blender\makesrna\internal"
PreprocessorDefinitions="NDEBUG,WIN32,_CONSOLE;GAMEBLENDER=1;WITH_SDL;WITH_OPENAL;WITH_JACK"
StringPooling="true"
RuntimeLibrary="0"
diff --git a/projectfiles_vc9/blender/makesrna/RNA_rna.vcproj b/projectfiles_vc9/blender/makesrna/RNA_rna.vcproj
index 4fb2e780853..1fe05a11aec 100644
--- a/projectfiles_vc9/blender/makesrna/RNA_rna.vcproj
+++ b/projectfiles_vc9/blender/makesrna/RNA_rna.vcproj
@@ -43,7 +43,7 @@
<Tool
Name="VCCLCompilerTool"
Optimization="0"
- AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\lib\windows\pthreads\include;..\..\..\source\blender\imbuf;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\makesrna\intern;..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\ikplugin;..\..\..\source\blender\windowmanager;..\..\..\source\blender\editors\include;..\..\..\source\blender\gpu;..\..\..\source\blender\render\extern\include"
+ AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\memutil\include;..\..\..\..\lib\windows\pthreads\include;..\..\..\source\blender\imbuf;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\makesrna\intern;..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\ikplugin;..\..\..\source\blender\windowmanager;..\..\..\source\blender\editors\include;..\..\..\source\blender\gpu;..\..\..\source\blender\render\extern\include"
PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;GAMEBLENDER=1"
MinimalRebuild="true"
BasicRuntimeChecks="3"
@@ -114,7 +114,7 @@
Name="VCCLCompilerTool"
Optimization="2"
EnableIntrinsicFunctions="true"
- AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\lib\windows\pthreads\include;..\..\..\source\blender\imbuf;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\makesrna\intern;..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\ikplugin;..\..\..\source\blender\windowmanager;..\..\..\source\blender\editors\include;..\..\..\source\blender\gpu;..\..\..\source\blender\render\extern\include"
+ AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\memutil\include;..\..\..\..\lib\windows\pthreads\include;..\..\..\source\blender\imbuf;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\makesrna\intern;..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\ikplugin;..\..\..\source\blender\windowmanager;..\..\..\source\blender\editors\include;..\..\..\source\blender\gpu;..\..\..\source\blender\render\extern\include"
PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;GAMEBLENDER=1"
MinimalRebuild="true"
RuntimeLibrary="0"
diff --git a/release/scripts/io/export_3ds.py b/release/scripts/io/export_3ds.py
index 2a8b43c4e84..4a5521bd9e9 100644
--- a/release/scripts/io/export_3ds.py
+++ b/release/scripts/io/export_3ds.py
@@ -564,14 +564,14 @@ def extract_triangles(mesh):
img = None
for i, face in enumerate(mesh.faces):
- f_v = face.verts
+ f_v = face.vertices
# f_v = face.v
uf = mesh.active_uv_texture.data[i] if do_uv else None
if do_uv:
f_uv = uf.uv
- # f_uv = (uf.uv1, uf.uv2, uf.uv3, uf.uv4) if face.verts[3] else (uf.uv1, uf.uv2, uf.uv3)
+ # f_uv = (uf.uv1, uf.uv2, uf.uv3, uf.uv4) if face.vertices[3] else (uf.uv1, uf.uv2, uf.uv3)
# f_uv = face.uv
img = uf.image if uf else None
# img = face.image
@@ -761,18 +761,18 @@ def make_mesh_chunk(mesh, materialDict):
if len(mesh.uv_textures):
# if mesh.faceUV:
# Remove the face UVs and convert it to vertex UV:
- vert_array, uv_array, tri_list = remove_face_uv(mesh.verts, tri_list)
+ vert_array, uv_array, tri_list = remove_face_uv(mesh.vertices, tri_list)
else:
# Add the vertices to the vertex array:
vert_array = _3ds_array()
- for vert in mesh.verts:
+ for vert in mesh.vertices:
vert_array.add(_3ds_point_3d(vert.co))
# If the mesh has vertex UVs, create an array of UVs:
if len(mesh.sticky):
# if mesh.vertexUV:
uv_array = _3ds_array()
for uv in mesh.sticky:
-# for vert in mesh.verts:
+# for vert in mesh.vertices:
uv_array.add(_3ds_point_uv(uv.co))
# uv_array.add(_3ds_point_uv(vert.uvco))
else:
@@ -1065,7 +1065,7 @@ def write(filename, context):
'''
if not blender_mesh.users:
bpy.data.meshes.remove(blender_mesh)
-# blender_mesh.verts = None
+# blender_mesh.vertices = None
i+=i
@@ -1114,13 +1114,13 @@ class Export3DS(bpy.types.Operator):
bl_idname = "export.autodesk_3ds"
bl_label = 'Export 3DS'
- # List of operator properties, the attributes will be assigned
- # to the class instance from the operator settings before calling.
-
-
filepath = StringProperty(name="File Path", description="Filepath used for exporting the 3DS file", maxlen= 1024, default= "")
check_existing = BoolProperty(name="Check Existing", description="Check and warn on overwriting existing files", default=True, options={'HIDDEN'})
+ @classmethod
+ def poll(cls, context): # Poll isnt working yet
+ return context.active_object != None
+
def execute(self, context):
filepath = self.properties.filepath
filepath = bpy.path.ensure_ext(filepath, ".3ds")
@@ -1129,23 +1129,23 @@ class Export3DS(bpy.types.Operator):
return {'FINISHED'}
def invoke(self, context, event):
- wm = context.manager
- wm.add_fileselect(self)
+ import os
+ if not self.properties.is_property_set("filepath"):
+ self.properties.filepath = os.path.splitext(bpy.data.filepath)[0] + ".3ds"
+
+ context.manager.add_fileselect(self)
return {'RUNNING_MODAL'}
- @classmethod
- def poll(cls, context): # Poll isnt working yet
- return context.active_object != None
# Add to a menu
def menu_func(self, context):
- default_path = os.path.splitext(bpy.data.filepath)[0] + ".3ds"
- self.layout.operator(Export3DS.bl_idname, text="3D Studio (.3ds)").filepath = default_path
+ self.layout.operator(Export3DS.bl_idname, text="3D Studio (.3ds)")
def register():
bpy.types.INFO_MT_file_export.append(menu_func)
+
def unregister():
bpy.types.INFO_MT_file_export.remove(menu_func)
diff --git a/release/scripts/io/export_fbx.py b/release/scripts/io/export_fbx.py
index c040861941a..60e9e90e11b 100644
--- a/release/scripts/io/export_fbx.py
+++ b/release/scripts/io/export_fbx.py
@@ -221,7 +221,7 @@ def mat4x4str(mat):
def getVertsFromGroup(me, group_index):
ret = []
- for i, v in enumerate(me.verts):
+ for i, v in enumerate(me.vertices):
for g in v.groups:
if g.group == group_index:
ret.append((i, g.weight))
@@ -243,11 +243,11 @@ def BPyMesh_meshWeight2List(ob):
if not len_groupNames:
# no verts? return a vert aligned empty list
- return [[] for i in range(len(me.verts))], []
+ return [[] for i in range(len(me.vertices))], []
else:
- vWeightList= [[0.0]*len_groupNames for i in range(len(me.verts))]
+ vWeightList= [[0.0]*len_groupNames for i in range(len(me.vertices))]
- for i, v in enumerate(me.verts):
+ for i, v in enumerate(me.vertices):
for g in v.groups:
vWeightList[i][g.group] = g.weight
@@ -1082,7 +1082,7 @@ def write(filename, batch_objects = None, \
else:
do_shadow = 0
- if light.only_shadow or (not light.diffuse and not light.specular):
+ if light.use_only_shadow or (not light.diffuse and not light.specular):
# if mode & Blender.Lamp.Modes.OnlyShadow or (mode & Blender.Lamp.Modes.NoDiffuse and mode & Blender.Lamp.Modes.NoSpecular):
do_light = 0
else:
@@ -1190,7 +1190,7 @@ def write(filename, batch_objects = None, \
# mat_spec = mat.spec/2.0
mat_alpha = mat.alpha
mat_emit = mat.emit
- mat_shadeless = mat.shadeless
+ mat_shadeless = mat.use_shadeless
# mat_shadeless = mat.mode & Blender.Material.Modes.SHADELESS
if mat_shadeless:
mat_shader = 'Lambert'
@@ -1327,9 +1327,9 @@ def write(filename, batch_objects = None, \
Property: "CurrentMappingType", "enum", "",0
Property: "UVSwap", "bool", "",0''')
- file.write('\n\t\t\tProperty: "WrapModeU", "enum", "",%i' % tex.clamp_x)
+ file.write('\n\t\t\tProperty: "WrapModeU", "enum", "",%i' % tex.use_clamp_x)
# file.write('\n\t\t\tProperty: "WrapModeU", "enum", "",%i' % tex.clampX)
- file.write('\n\t\t\tProperty: "WrapModeV", "enum", "",%i' % tex.clamp_y)
+ file.write('\n\t\t\tProperty: "WrapModeV", "enum", "",%i' % tex.use_clamp_y)
# file.write('\n\t\t\tProperty: "WrapModeV", "enum", "",%i' % tex.clampY)
file.write('''
@@ -1398,7 +1398,7 @@ def write(filename, batch_objects = None, \
# TODO - this is a bit lazy, we could have a simple write loop
# for this case because all weights are 1.0 but for now this is ok
# Parent Bones arent used all that much anyway.
- vgroup_data = [(j, 1.0) for j in range(len(my_mesh.blenData.verts))]
+ vgroup_data = [(j, 1.0) for j in range(len(my_mesh.blenData.vertices))]
else:
# This bone is not a parent of this mesh object, no weights
vgroup_data = []
@@ -1487,7 +1487,7 @@ def write(filename, batch_objects = None, \
file.write('\n\t\tVertices: ')
i=-1
- for v in me.verts:
+ for v in me.vertices:
if i==-1:
file.write('%.6f,%.6f,%.6f' % tuple(v.co)); i=0
else:
@@ -1499,7 +1499,7 @@ def write(filename, batch_objects = None, \
file.write('\n\t\tPolygonVertexIndex: ')
i=-1
for f in me.faces:
- fi = f.verts[:]
+ fi = f.vertices[:]
# last index XORd w. -1 indicates end of face
fi[-1] = fi[-1] ^ -1
@@ -1519,8 +1519,8 @@ def write(filename, batch_objects = None, \
# write loose edges as faces.
for ed in me.edges:
- if ed.loose:
- ed_val = ed.verts[:]
+ if ed.is_loose:
+ ed_val = ed.vertices[:]
ed_val = ed_val[0], ed_val[-1] ^ -1
if i==-1:
@@ -1538,14 +1538,14 @@ def write(filename, batch_objects = None, \
i=-1
for ed in me.edges:
if i==-1:
- file.write('%i,%i' % (ed.verts[0], ed.verts[1]))
+ file.write('%i,%i' % (ed.vertices[0], ed.vertices[1]))
# file.write('%i,%i' % (ed.v1.index, ed.v2.index))
i=0
else:
if i==13:
file.write('\n\t\t')
i=0
- file.write(',%i,%i' % (ed.verts[0], ed.verts[1]))
+ file.write(',%i,%i' % (ed.vertices[0], ed.vertices[1]))
# file.write(',%i,%i' % (ed.v1.index, ed.v2.index))
i+=1
@@ -1560,7 +1560,7 @@ def write(filename, batch_objects = None, \
Normals: ''')
i=-1
- for v in me.verts:
+ for v in me.vertices:
if i==-1:
file.write('%.15f,%.15f,%.15f' % tuple(v.normal)); i=0
# file.write('%.15f,%.15f,%.15f' % tuple(v.no)); i=0
@@ -1584,11 +1584,11 @@ def write(filename, batch_objects = None, \
i=-1
for f in me.faces:
if i==-1:
- file.write('%i' % f.smooth); i=0
+ file.write('%i' % f.use_smooth); i=0
else:
if i==54:
file.write('\n '); i=0
- file.write(',%i' % f.smooth)
+ file.write(',%i' % f.use_smooth)
i+=1
file.write('\n\t\t}')
@@ -1602,27 +1602,23 @@ def write(filename, batch_objects = None, \
ReferenceInformationType: "Direct"
Smoothing: ''')
-# SHARP = Blender.Mesh.EdgeFlags.SHARP
i=-1
for ed in me.edges:
if i==-1:
- file.write('%i' % (ed.sharp)); i=0
-# file.write('%i' % ((ed.flag&SHARP)!=0)); i=0
+ file.write('%i' % (ed.use_edge_sharp)); i=0
else:
if i==54:
file.write('\n '); i=0
- file.write(',%i' % (ed.sharp))
-# file.write(',%i' % ((ed.flag&SHARP)!=0))
+ file.write(',%i' % (ed.use_edge_sharp))
i+=1
file.write('\n\t\t}')
-# del SHARP
# small utility function
# returns a slice of data depending on number of face verts
# data is either a MeshTextureFace or MeshColor
def face_data(data, face):
- totvert = len(f.verts)
+ totvert = len(f.vertices)
return data[:totvert]
@@ -2072,7 +2068,7 @@ def write(filename, batch_objects = None, \
# ob.copy().link(me)
# # If new mesh has no vgroups we can try add if verts are teh same
# if not me.getVertGroupNames(): # vgroups were not kept by the modifier
-# if len(me.verts) == len(orig_mesh.verts):
+# if len(me.vertices) == len(orig_mesh.vertices):
# groupNames, vWeightDict = BPyMesh.meshWeight2Dict(orig_mesh)
# BPyMesh.dict2MeshWeight(me, groupNames, vWeightDict)
@@ -2961,7 +2957,7 @@ Takes: {''')
# Clear mesh data Only when writing with modifiers applied
for me in meshes_to_clear:
bpy.data.meshes.remove(me)
-# me.verts = None
+# me.vertices = None
# --------------------------- Footer
if world:
@@ -3404,8 +3400,11 @@ class ExportFBX(bpy.types.Operator):
return {'FINISHED'}
def invoke(self, context, event):
- wm = context.manager
- wm.add_fileselect(self)
+ import os
+ if not self.properties.is_property_set("filepath"):
+ self.properties.filepath = os.path.splitext(bpy.data.filepath)[0] + ".fbx"
+
+ context.manager.add_fileselect(self)
return {'RUNNING_MODAL'}
@@ -3439,8 +3438,7 @@ class ExportFBX(bpy.types.Operator):
def menu_func(self, context):
- default_path = os.path.splitext(bpy.data.filepath)[0] + ".fbx"
- self.layout.operator(ExportFBX.bl_idname, text="Autodesk FBX (.fbx)").filepath = default_path
+ self.layout.operator(ExportFBX.bl_idname, text="Autodesk FBX (.fbx)")
def register():
diff --git a/release/scripts/io/export_mdd.py b/release/scripts/io/export_mdd.py
index 2d45e18ef77..b2eda13fc8f 100644
--- a/release/scripts/io/export_mdd.py
+++ b/release/scripts/io/export_mdd.py
@@ -65,7 +65,7 @@ def check_vertcount(mesh, vertcount):
'''
check and make sure the vertcount is consistent throughout the frame range
'''
- if len(mesh.verts) != vertcount:
+ if len(mesh.vertices) != vertcount:
raise Exception('Error, number of verts has changed during animation, cannot export')
f.close()
zero_file(filepath)
@@ -94,7 +94,7 @@ def write(filename, sce, ob, PREF_STARTFRAME, PREF_ENDFRAME, PREF_FPS):
[0.0, 0.0, 0.0, 1.0],\
)
- numverts = len(me.verts)
+ numverts = len(me.vertices)
numframes = PREF_ENDFRAME - PREF_STARTFRAME + 1
PREF_FPS = float(PREF_FPS)
@@ -114,7 +114,7 @@ def write(filename, sce, ob, PREF_STARTFRAME, PREF_ENDFRAME, PREF_FPS):
check_vertcount(me, numverts)
me.transform(mat_flip * ob.matrix_world)
- f.write(pack(">%df" % (numverts * 3), *[axis for v in me.verts for axis in v.co]))
+ f.write(pack(">%df" % (numverts * 3), *[axis for v in me.vertices for axis in v.co]))
for frame in range(PREF_STARTFRAME, PREF_ENDFRAME + 1):#in order to start at desired frame
"""
@@ -128,10 +128,10 @@ def write(filename, sce, ob, PREF_STARTFRAME, PREF_ENDFRAME, PREF_FPS):
me.transform(mat_flip * ob.matrix_world)
# Write the vertex data
- f.write(pack(">%df" % (numverts * 3), *[axis for v in me.verts for axis in v.co]))
+ f.write(pack(">%df" % (numverts * 3), *[axis for v in me.vertices for axis in v.co]))
"""
- me_tmp.verts= None
+ me_tmp.vertices= None
"""
f.close()
@@ -185,15 +185,16 @@ class ExportMDD(bpy.types.Operator):
return {'FINISHED'}
def invoke(self, context, event):
- wm = context.manager
- wm.add_fileselect(self)
+ import os
+ if not self.properties.is_property_set("filepath"):
+ self.properties.filepath = os.path.splitext(bpy.data.filepath)[0] + ".mdd"
+
+ context.manager.add_fileselect(self)
return {'RUNNING_MODAL'}
def menu_func(self, context):
- import os
- default_path = os.path.splitext(bpy.data.filepath)[0] + ".mdd"
- self.layout.operator(ExportMDD.bl_idname, text="Lightwave Point Cache (.mdd)").filepath = default_path
+ self.layout.operator(ExportMDD.bl_idname, text="Lightwave Point Cache (.mdd)")
def register():
diff --git a/release/scripts/io/export_obj.py b/release/scripts/io/export_obj.py
index 5e951f06406..53c4a324ed1 100644
--- a/release/scripts/io/export_obj.py
+++ b/release/scripts/io/export_obj.py
@@ -42,16 +42,6 @@ import shutil
import bpy
import mathutils
-
-# Returns a tuple - path,extension.
-# 'hello.obj' > ('hello', '.obj')
-def splitExt(path):
- dotidx = path.rfind('.')
- if dotidx == -1:
- return path, ''
- else:
- return path[:dotidx], path[dotidx:]
-
def fixName(name):
if name == None:
return 'None'
@@ -103,7 +93,7 @@ def write_mtl(scene, filepath, copy_images, mtl_dict):
file.write('d %.6f\n' % mat.alpha) # Alpha (obj uses 'd' for dissolve)
# 0 to disable lighting, 1 for ambient & diffuse only (specular color set to black), 2 for full lighting.
- if mat.shadeless:
+ if mat.use_shadeless:
file.write('illum 0\n') # ignore lighting
elif mat.specular_intensity == 0:
file.write('illum 1\n') # no specular.
@@ -318,7 +308,7 @@ def write_file(filepath, objects, scene,
of vertices is the face's group
"""
weightDict = {}
- for vert_index in face.verts:
+ for vert_index in face.vertices:
# for vert in face:
vWeights = vWeightMap[vert_index]
# vWeights = vWeightMap[vert]
@@ -336,7 +326,7 @@ def write_file(filepath, objects, scene,
def getVertsFromGroup(me, group_index):
ret = []
- for i, v in enumerate(me.verts):
+ for i, v in enumerate(me.vertices):
for g in v.groups:
if g.group == group_index:
ret.append((i, g.weight))
@@ -428,9 +418,12 @@ def write_file(filepath, objects, scene,
if EXPORT_UV:
faceuv = len(me.uv_textures) > 0
+ uv_layer = me.active_uv_texture.data[:]
else:
faceuv = False
+ me_verts = me.vertices[:]
+
# XXX - todo, find a better way to do triangulation
# ...removed convert_to_triface because it relies on editmesh
'''
@@ -439,7 +432,7 @@ def write_file(filepath, objects, scene,
# Add a dummy object to it.
has_quads = False
for f in me.faces:
- if f.verts[3] != 0:
+ if f.vertices[3] != 0:
has_quads = True
break
@@ -461,7 +454,7 @@ def write_file(filepath, objects, scene,
else:
edges = []
- if not (len(face_index_pairs)+len(edges)+len(me.verts)): # Make sure there is somthing to write
+ if not (len(face_index_pairs)+len(edges)+len(me.vertices)): # Make sure there is somthing to write
# clean up
bpy.data.meshes.remove(me)
@@ -503,29 +496,24 @@ def write_file(filepath, objects, scene,
if EXPORT_KEEP_VERT_ORDER:
pass
elif faceuv:
- # XXX update
- tface = me.active_uv_texture.data
-
- face_index_pairs.sort(key=lambda a: (a[0].material_index, hash(tface[a[1]].image), a[0].smooth))
+ face_index_pairs.sort(key=lambda a: (a[0].material_index, hash(uv_layer[a[1]].image), a[0].use_smooth))
elif len(materials) > 1:
- face_index_pairs.sort(key = lambda a: (a[0].material_index, a[0].smooth))
+ face_index_pairs.sort(key = lambda a: (a[0].material_index, a[0].use_smooth))
else:
# no materials
- face_index_pairs.sort(key = lambda a: a[0].smooth)
+ face_index_pairs.sort(key = lambda a: a[0].use_smooth)
# if EXPORT_KEEP_VERT_ORDER:
# pass
# elif faceuv:
-# try: faces.sort(key = lambda a: (a.mat, a.image, a.smooth))
-# except: faces.sort(lambda a,b: cmp((a.mat, a.image, a.smooth), (b.mat, b.image, b.smooth)))
+# try: faces.sort(key = lambda a: (a.mat, a.image, a.use_smooth))
+# except: faces.sort(lambda a,b: cmp((a.mat, a.image, a.use_smooth), (b.mat, b.image, b.use_smooth)))
# elif len(materials) > 1:
-# try: faces.sort(key = lambda a: (a.mat, a.smooth))
-# except: faces.sort(lambda a,b: cmp((a.mat, a.smooth), (b.mat, b.smooth)))
+# try: faces.sort(key = lambda a: (a.mat, a.use_smooth))
+# except: faces.sort(lambda a,b: cmp((a.mat, a.use_smooth), (b.mat, b.use_smooth)))
# else:
# # no materials
-# try: faces.sort(key = lambda a: a.smooth)
-# except: faces.sort(lambda a,b: cmp(a.smooth, b.smooth))
-
- faces = [pair[0] for pair in face_index_pairs]
+# try: faces.sort(key = lambda a: a.use_smooth)
+# except: faces.sort(lambda a,b: cmp(a.use_smooth, b.use_smooth))
# Set the default mat to no material and no image.
contextMat = (0, 0) # Can never be this, so we will label a new material teh first chance we get.
@@ -546,28 +534,17 @@ def write_file(filepath, objects, scene,
# Vert
- for v in me.verts:
+ for v in me_verts:
file.write('v %.6f %.6f %.6f\n' % tuple(v.co))
# UV
if faceuv:
- uv_face_mapping = [[0,0,0,0] for f in faces] # a bit of a waste for tri's :/
+ uv_face_mapping = [[0,0,0,0] for i in range(len(face_index_pairs))] # a bit of a waste for tri's :/
uv_dict = {} # could use a set() here
- uv_layer = me.active_uv_texture
+ uv_layer = me.active_uv_texture.data
for f, f_index in face_index_pairs:
-
- tface = uv_layer.data[f_index]
-
- # workaround, since tface.uv iteration is wrong atm
- uvs = tface.uv
- # uvs = [tface.uv1, tface.uv2, tface.uv3]
-
- # # add another UV if it's a quad
- # if len(f.verts) == 4:
- # uvs.append(tface.uv4)
-
- for uv_index, uv in enumerate(uvs):
+ for uv_index, uv in enumerate(uv_layer[f_index].uv):
uvkey = veckey2d(uv)
try:
uv_face_mapping[f_index][uv_index] = uv_dict[uvkey]
@@ -575,27 +552,16 @@ def write_file(filepath, objects, scene,
uv_face_mapping[f_index][uv_index] = uv_dict[uvkey] = len(uv_dict)
file.write('vt %.6f %.6f\n' % tuple(uv))
-# uv_dict = {} # could use a set() here
-# for f_index, f in enumerate(faces):
-
-# for uv_index, uv in enumerate(f.uv):
-# uvkey = veckey2d(uv)
-# try:
-# uv_face_mapping[f_index][uv_index] = uv_dict[uvkey]
-# except:
-# uv_face_mapping[f_index][uv_index] = uv_dict[uvkey] = len(uv_dict)
-# file.write('vt %.6f %.6f\n' % tuple(uv))
-
uv_unique_count = len(uv_dict)
# del uv, uvkey, uv_dict, f_index, uv_index
# Only need uv_unique_count and uv_face_mapping
# NORMAL, Smooth/Non smoothed.
if EXPORT_NORMALS:
- for f in faces:
- if f.smooth:
- for vIdx in f.verts:
- v = me.verts[vIdx]
+ for f, f_index in face_index_pairs:
+ if f.use_smooth:
+ for v_idx in f.vertices:
+ v = me_verts[v_idx]
noKey = veckey3d(v.normal)
if noKey not in globalNormals:
globalNormals[noKey] = totno
@@ -619,32 +585,32 @@ def write_file(filepath, objects, scene,
currentVGroup = ''
# Create a dictionary keyed by face id and listing, for each vertex, the vertex groups it belongs to
- vgroupsMap = [[] for _i in range(len(me.verts))]
-# vgroupsMap = [[] for _i in xrange(len(me.verts))]
+ vgroupsMap = [[] for _i in range(len(me_verts))]
+# vgroupsMap = [[] for _i in xrange(len(me_verts))]
for g in ob.vertex_groups:
# for vertexGroupName in vertGroupNames:
- for vIdx, vWeight in getVertsFromGroup(me, g.index):
-# for vIdx, vWeight in me.getVertsFromGroup(vertexGroupName, 1):
- vgroupsMap[vIdx].append((g.name, vWeight))
+ for v_idx, vWeight in getVertsFromGroup(me, g.index):
+# for v_idx, vWeight in me.getVertsFromGroup(vertexGroupName, 1):
+ vgroupsMap[v_idx].append((g.name, vWeight))
for f, f_index in face_index_pairs:
- f_v = [{"index": index, "vertex": me.verts[index]} for index in f.verts]
+ f_v = [me_verts[v_idx] for v_idx in f.vertices]
- # if f.verts[3] == 0:
+ # if f.vertices[3] == 0:
# f_v.pop()
# f_v= f.v
- f_smooth= f.smooth
+ f_smooth= f.use_smooth
f_mat = min(f.material_index, len(materialNames)-1)
# f_mat = min(f.mat, len(materialNames)-1)
if faceuv:
- tface = me.active_uv_texture.data[f_index]
+ tface = uv_layer[f_index]
f_image = tface.image
f_uv = tface.uv
# f_uv= [tface.uv1, tface.uv2, tface.uv3]
- # if len(f.verts) == 4:
+ # if len(f.vertices) == 4:
# f_uv.append(tface.uv4)
# f_image = f.image
# f_uv= f.uv
@@ -718,21 +684,21 @@ def write_file(filepath, objects, scene,
if f_smooth: # Smoothed, use vertex normals
for vi, v in enumerate(f_v):
file.write( ' %d/%d/%d' % \
- (v["index"] + totverts,
+ (v.index + totverts,
totuvco + uv_face_mapping[f_index][vi],
- globalNormals[ veckey3d(v["vertex"].normal) ]) ) # vert, uv, normal
+ globalNormals[ veckey3d(v.normal) ]) ) # vert, uv, normal
else: # No smoothing, face normals
no = globalNormals[ veckey3d(f.normal) ]
for vi, v in enumerate(f_v):
file.write( ' %d/%d/%d' % \
- (v["index"] + totverts,
+ (v.index + totverts,
totuvco + uv_face_mapping[f_index][vi],
no) ) # vert, uv, normal
else: # No Normals
for vi, v in enumerate(f_v):
file.write( ' %d/%d' % (\
- v["index"] + totverts,\
+ v.index + totverts,\
totuvco + uv_face_mapping[f_index][vi])) # vert, uv
face_vert_index += len(f_v)
@@ -742,25 +708,25 @@ def write_file(filepath, objects, scene,
if f_smooth: # Smoothed, use vertex normals
for v in f_v:
file.write( ' %d//%d' %
- (v["index"] + totverts, globalNormals[ veckey3d(v["vertex"].normal) ]) )
+ (v.index + totverts, globalNormals[ veckey3d(v.normal) ]) )
else: # No smoothing, face normals
no = globalNormals[ veckey3d(f.normal) ]
for v in f_v:
- file.write( ' %d//%d' % (v["index"] + totverts, no) )
+ file.write( ' %d//%d' % (v.index + totverts, no) )
else: # No Normals
for v in f_v:
- file.write( ' %d' % (v["index"] + totverts) )
+ file.write( ' %d' % (v.index + totverts) )
file.write('\n')
# Write edges.
if EXPORT_EDGES:
for ed in edges:
- if ed.loose:
- file.write('f %d %d\n' % (ed.verts[0] + totverts, ed.verts[1] + totverts))
+ if ed.is_loose:
+ file.write('f %d %d\n' % (ed.vertices[0] + totverts, ed.vertices[1] + totverts))
# Make the indicies global rather then per mesh
- totverts += len(me.verts)
+ totverts += len(me_verts)
if faceuv:
totuvco += uv_unique_count
@@ -809,7 +775,7 @@ def write(filepath, context,
EXPORT_ALL_SCENES, # XXX not working atm
EXPORT_ANIMATION): # Not used
- base_name, ext = splitExt(filepath)
+ base_name, ext = os.path.splitext(filepath)
context_name = [base_name, '', '', ext] # Base name, scene name, frame number, extension
orig_scene = context.scene
@@ -960,14 +926,16 @@ class ExportOBJ(bpy.types.Operator):
return {'FINISHED'}
def invoke(self, context, event):
- wm = context.manager
- wm.add_fileselect(self)
+ import os
+ if not self.properties.is_property_set("filepath"):
+ self.properties.filepath = os.path.splitext(bpy.data.filepath)[0] + ".obj"
+
+ context.manager.add_fileselect(self)
return {'RUNNING_MODAL'}
def menu_func(self, context):
- default_path = os.path.splitext(bpy.data.filepath)[0] + ".obj"
- self.layout.operator(ExportOBJ.bl_idname, text="Wavefront (.obj)").filepath = default_path
+ self.layout.operator(ExportOBJ.bl_idname, text="Wavefront (.obj)")
def register():
diff --git a/release/scripts/io/export_ply.py b/release/scripts/io/export_ply.py
index f4d7cae75a3..1a4fd7a6ff9 100644
--- a/release/scripts/io/export_ply.py
+++ b/release/scripts/io/export_ply.py
@@ -147,7 +147,7 @@ def write(filename, scene, ob, \
# incase
color = uvcoord = uvcoord_key = normal = normal_key = None
- mesh_verts = mesh.verts # save a lookup
+ mesh_verts = mesh.vertices # save a lookup
ply_verts = [] # list of dictionaries
# vdict = {} # (index, normal, uv) -> new index
vdict = [{} for i in range(len(mesh_verts))]
@@ -156,7 +156,7 @@ def write(filename, scene, ob, \
for i, f in enumerate(mesh.faces):
- smooth = f.smooth
+ smooth = f.use_smooth
if not smooth:
normal = tuple(f.normal)
normal_key = rvec3d(normal)
@@ -168,7 +168,7 @@ def write(filename, scene, ob, \
col = active_col_layer[i]
col = col.color1, col.color2, col.color3, col.color4
- f_verts = f.verts
+ f_verts = f.vertices
pf = ply_faces[i]
for j, vidx in enumerate(f_verts):
@@ -293,8 +293,11 @@ class ExportPLY(bpy.types.Operator):
return {'FINISHED'}
def invoke(self, context, event):
- wm = context.manager
- wm.add_fileselect(self)
+ import os
+ if not self.properties.is_property_set("filepath"):
+ self.properties.filepath = os.path.splitext(bpy.data.filepath)[0] + ".ply"
+
+ context.manager.add_fileselect(self)
return {'RUNNING_MODAL'}
def draw(self, context):
@@ -310,9 +313,7 @@ class ExportPLY(bpy.types.Operator):
def menu_func(self, context):
- import os
- default_path = os.path.splitext(bpy.data.filepath)[0] + ".ply"
- self.layout.operator(ExportPLY.bl_idname, text="Stanford (.ply)").filepath = default_path
+ self.layout.operator(ExportPLY.bl_idname, text="Stanford (.ply)")
def register():
diff --git a/release/scripts/io/export_x3d.py b/release/scripts/io/export_x3d.py
index 607f38be6f7..aafb7c922a1 100644
--- a/release/scripts/io/export_x3d.py
+++ b/release/scripts/io/export_x3d.py
@@ -406,13 +406,13 @@ class x3d_class:
# if mesh.faceUV:
for face in mesh.active_uv_texture.data:
# for face in mesh.faces:
- if face.halo and 'HALO' not in mode:
+ if face.use_halo and 'HALO' not in mode:
mode += ['HALO']
- if face.billboard and 'BILLBOARD' not in mode:
+ if face.use_billboard and 'BILLBOARD' not in mode:
mode += ['BILLBOARD']
- if face.object_color and 'OBJECT_COLOR' not in mode:
+ if face.use_object_color and 'OBJECT_COLOR' not in mode:
mode += ['OBJECT_COLOR']
- if face.collision and 'COLLISION' not in mode:
+ if face.use_collision and 'COLLISION' not in mode:
mode += ['COLLISION']
# mode |= face.mode
@@ -461,7 +461,7 @@ class x3d_class:
self.writeIndented("<Shape>\n",1)
maters=mesh.materials
hasImageTexture=0
- issmooth=0
+ is_smooth = False
if len(maters) > 0 or mesh.active_uv_texture:
# if len(maters) > 0 or mesh.faceUV:
@@ -470,7 +470,7 @@ class x3d_class:
if len(maters) >= 1:
mat=maters[0]
# matFlags = mat.getMode()
- if not mat.face_texture:
+ if not mat.use_face_texture:
# if not matFlags & Blender.Material.Modes['TEXFACE']:
self.writeMaterial(mat, self.cleanStr(mat.name,''), world)
# self.writeMaterial(mat, self.cleanStr(maters[0].name,''), world)
@@ -516,11 +516,11 @@ class x3d_class:
self.file.write("solid=\"true\" ")
for face in mesh.faces:
- if face.smooth:
- issmooth=1
- break
- if issmooth==1:
- creaseAngle=(mesh.autosmooth_angle)*(math.pi/180.0)
+ if face.use_smooth:
+ is_smooth = True
+ break
+ if is_smooth == True:
+ creaseAngle=(mesh.auto_smooth_angle)*(math.pi/180.0)
# creaseAngle=(mesh.degr)*(math.pi/180.0)
self.file.write("creaseAngle=\"%s\" " % (round(creaseAngle,self.cp)))
@@ -581,7 +581,7 @@ class x3d_class:
if self.writingcoords == 0:
self.file.write('coordIndex="')
for face in mesh.faces:
- fv = face.verts
+ fv = face.vertices
# fv = face.v
if len(fv)==3:
@@ -604,7 +604,7 @@ class x3d_class:
# mesh.transform(ob.matrix_world)
self.writeIndented("<Coordinate DEF=\"%s%s\" \n" % ("coord_",meshName), 1)
self.file.write("\t\t\t\tpoint=\"")
- for v in mesh.verts:
+ for v in mesh.vertices:
self.file.write("%.6f %.6f %.6f, " % tuple(v.co))
self.file.write("\" />")
self.writeIndented("\n", -1)
@@ -618,7 +618,7 @@ class x3d_class:
# for face in mesh.faces:
# workaround, since tface.uv iteration is wrong atm
uvs = face.uv
- # uvs = [face.uv1, face.uv2, face.uv3, face.uv4] if face.verts[3] else [face.uv1, face.uv2, face.uv3]
+ # uvs = [face.uv1, face.uv2, face.uv3, face.uv4] if face.vertices[3] else [face.uv1, face.uv2, face.uv3]
for uv in uvs:
# for uv in face.uv:
@@ -699,7 +699,7 @@ class x3d_class:
# specB = (mat.specCol[2]+0.001)/(1.25/(mat.spec+0.001))
transp = 1-mat.alpha
# matFlags = mat.getMode()
- if mat.shadeless:
+ if mat.use_shadeless:
# if matFlags & Blender.Material.Modes['SHADELESS']:
ambient = 1
shine = 1
@@ -731,7 +731,7 @@ class x3d_class:
def writeBackground(self, world, alltextures):
if world: worldname = world.name
else: return
- blending = (world.blend_sky, world.paper_sky, world.real_sky)
+ blending = (world.blend_sky, world.paper_sky, world.use_sky_real)
# blending = world.getSkytype()
grd = world.horizon_color
# grd = world.getHor()
@@ -912,7 +912,7 @@ class x3d_class:
# if EXPORT_APPLY_MODIFIERS:
# if containerMesh:
- # containerMesh.verts = None
+ # containerMesh.vertices = None
self.cleanup()
@@ -964,13 +964,8 @@ class x3d_class:
if mesh.active_uv_texture:
# if mesh.faceUV:
for face in mesh.active_uv_texture.data:
- # for face in mesh.faces:
- sidename='';
- if face.twoside:
- # if face.mode & Mesh.FaceModes.TWOSIDE:
- sidename='two'
- else:
- sidename='one'
+ # for face in mesh.faces
+ sidename = "two" if face.use_twoside else "one"
if sidename in sided:
sided[sidename]+=1
@@ -1003,8 +998,8 @@ class x3d_class:
if face.mode & Mesh.FaceModes.TWOSIDE:
print("Debug: face.mode twosided")
- print("Debug: face.transp=0x%x (enum)" % face.transp)
- if face.transp == Mesh.FaceTranspModes.SOLID:
+ print("Debug: face.transp=0x%x (enum)" % face.blend_type)
+ if face.blend_type == Mesh.FaceTranspModes.SOLID:
print("Debug: face.transp.SOLID")
if face.image:
@@ -1030,7 +1025,7 @@ class x3d_class:
# print("Debug: mesh.faceUV=%d" % mesh.faceUV)
print("Debug: mesh.hasVertexColours=%d" % (len(mesh.vertex_colors) > 0))
# print("Debug: mesh.hasVertexColours=%d" % mesh.hasVertexColours())
- print("Debug: mesh.verts=%d" % len(mesh.verts))
+ print("Debug: mesh.vertices=%d" % len(mesh.vertices))
print("Debug: mesh.faces=%d" % len(mesh.faces))
print("Debug: mesh.materials=%d" % len(mesh.materials))
@@ -1205,14 +1200,16 @@ class ExportX3D(bpy.types.Operator):
return {'FINISHED'}
def invoke(self, context, event):
- wm = context.manager
- wm.add_fileselect(self)
+ import os
+ if not self.properties.is_property_set("filepath"):
+ self.properties.filepath = os.path.splitext(bpy.data.filepath)[0] + ".x3d"
+
+ context.manager.add_fileselect(self)
return {'RUNNING_MODAL'}
def menu_func(self, context):
- default_path = os.path.splitext(bpy.data.filepath)[0] + ".x3d"
- self.layout.operator(ExportX3D.bl_idname, text="X3D Extensible 3D (.x3d)").filepath = default_path
+ self.layout.operator(ExportX3D.bl_idname, text="X3D Extensible 3D (.x3d)")
def register():
diff --git a/release/scripts/io/import_anim_bvh.py b/release/scripts/io/import_anim_bvh.py
index 3a807680700..04cae915a49 100644
--- a/release/scripts/io/import_anim_bvh.py
+++ b/release/scripts/io/import_anim_bvh.py
@@ -426,7 +426,7 @@ def bvh_node_dict2armature(context, bvh_nodes, ROT_MODE='XYZ', IMPORT_START_FRAM
bvh_node.parent and\
bvh_node.parent.temp.name not in ZERO_AREA_BONES and\
bvh_node.parent.rest_tail_local == bvh_node.rest_head_local:
- bvh_node.temp.connected = True
+ bvh_node.temp.use_connect = True
# Replace the editbone with the editbone name,
# to avoid memory errors accessing the editbone outside editmode
diff --git a/release/scripts/io/import_scene_3ds.py b/release/scripts/io/import_scene_3ds.py
index 0c30a8bd127..6378d93df62 100644
--- a/release/scripts/io/import_scene_3ds.py
+++ b/release/scripts/io/import_scene_3ds.py
@@ -338,12 +338,12 @@ def process_next_chunk(file, previous_chunk, importedObjects, IMAGE_SEARCH):
if myContextMesh_vertls:
bmesh.add_geometry(len(myContextMesh_vertls)//3, 0, len(myContextMesh_facels))
- bmesh.verts.foreach_set("co", myContextMesh_vertls)
+ bmesh.vertices.foreach_set("co", myContextMesh_vertls)
eekadoodle_faces = []
for v1, v2, v3 in myContextMesh_facels:
eekadoodle_faces.extend([v3, v1, v2, 0] if v3 == 0 else [v1, v2, v3, 0])
- bmesh.faces.foreach_set("verts_raw", eekadoodle_faces)
+ bmesh.faces.foreach_set("vertices_raw", eekadoodle_faces)
if bmesh.faces and contextMeshUV:
bmesh.add_uv_texture()
@@ -364,7 +364,7 @@ def process_next_chunk(file, previous_chunk, importedObjects, IMAGE_SEARCH):
bmesh.faces[fidx].material_index = mat_idx
uf = uv_faces[fidx]
uf.image = img
- uf.tex = True
+ uf.use_image = True
else:
for fidx in faces:
bmesh.faces[fidx].material_index = mat_idx
@@ -830,7 +830,7 @@ def load_3ds(filename, context, IMPORT_CONSTRAIN_BOUNDS=10.0, IMAGE_SEARCH=True,
for ob in importedObjects:
if ob.type == 'MESH':
me = ob.data
-# me.verts.delete([me.verts[0],]) # XXX, todo
+# me.vertices.delete([me.vertices[0],]) # XXX, todo
if not APPLY_MATRIX:
me.transform(ob.matrix_world.copy().invert())
diff --git a/release/scripts/io/import_scene_obj.py b/release/scripts/io/import_scene_obj.py
index c129ad7bde6..2b5a3f06832 100644
--- a/release/scripts/io/import_scene_obj.py
+++ b/release/scripts/io/import_scene_obj.py
@@ -137,7 +137,7 @@ def BPyMesh_ngon(from_data, indices, PREF_FIX_LOOPS= True):
if type(from_data) in (tuple, list):
verts= [Vector(from_data[i]) for ii, i in enumerate(indices)]
else:
- verts= [from_data.verts[i].co for ii, i in enumerate(indices)]
+ verts= [from_data.vertices[i].co for ii, i in enumerate(indices)]
for i in range(len(verts)-1, 0, -1): # same as reversed(xrange(1, len(verts))):
if verts[i][1]==verts[i-1][0]:
@@ -154,7 +154,7 @@ def BPyMesh_ngon(from_data, indices, PREF_FIX_LOOPS= True):
if type(from_data) in (tuple, list):
verts= [vert_treplet(Vector(from_data[i]), ii) for ii, i in enumerate(indices)]
else:
- verts= [vert_treplet(from_data.verts[i].co, ii) for ii, i in enumerate(indices)]
+ verts= [vert_treplet(from_data.vertices[i].co, ii) for ii, i in enumerate(indices)]
edges= [(i, i-1) for i in range(len(verts))]
if edges:
@@ -310,18 +310,21 @@ def load_image(imagepath, dirname):
if os.path.exists(nfilepath):
return bpy.data.images.load(nfilepath)
- print(filepath, "doesn't exist")
-
# TODO comprehensiveImageLoad also searched in bpy.config.textureDir
return None
def obj_image_load(imagepath, DIR, IMAGE_SEARCH):
-
if '_' in imagepath:
image= load_image(imagepath.replace('_', ' '), DIR)
- if image: return image
+ if image:
+ return image
- return load_image(imagepath, DIR)
+ image = load_image(imagepath, DIR)
+ if image:
+ return image
+
+ print("failed to load '%s' doesn't exist", imagepath)
+ return None
# def obj_image_load(imagepath, DIR, IMAGE_SEARCH):
# '''
@@ -372,38 +375,32 @@ def create_materials(filepath, material_libs, unique_materials, unique_material_
# Image has alpha
# XXX bitmask won't work?
- blender_material.add_texture(texture, "UV", ("COLOR", "ALPHA"))
+ blender_material.add_texture(texture, 'UV', {'COLOR', 'ALPHA'})
texture.mipmap = True
texture.interpolation = True
texture.use_alpha = True
- blender_material.z_transparency = True
+ blender_material.use_transparency = True
blender_material.alpha = 0.0
-
-# blender_material.setTexture(0, texture, Texture.TexCo.UV, Texture.MapTo.COL | Texture.MapTo.ALPHA)
-# texture.setImageFlags('MipMap', 'InterPol', 'UseAlpha')
-# blender_material.mode |= Material.Modes.ZTRANSP
-# blender_material.alpha = 0.0
else:
- blender_material.add_texture(texture, "UV", "COLOR")
-# blender_material.setTexture(0, texture, Texture.TexCo.UV, Texture.MapTo.COL)
+ blender_material.add_texture(texture, 'UV', 'COLOR')
# adds textures to faces (Textured/Alt-Z mode)
# Only apply the diffuse texture to the face if the image has not been set with the inline usemat func.
unique_material_images[context_material_name]= image, has_data # set the texface image
elif type == 'Ka':
- blender_material.add_texture(texture, "UV", "AMBIENT")
+ blender_material.add_texture(texture, 'UV', 'AMBIENT')
# blender_material.setTexture(1, texture, Texture.TexCo.UV, Texture.MapTo.CMIR) # TODO- Add AMB to BPY API
elif type == 'Ks':
- blender_material.add_texture(texture, "UV", "SPECULARITY")
+ blender_material.add_texture(texture, 'UV', 'SPECULARITY')
# blender_material.setTexture(2, texture, Texture.TexCo.UV, Texture.MapTo.SPEC)
elif type == 'Bump':
- blender_material.add_texture(texture, "UV", "NORMAL")
+ blender_material.add_texture(texture, 'UV', 'NORMAL')
# blender_material.setTexture(3, texture, Texture.TexCo.UV, Texture.MapTo.NOR)
elif type == 'D':
- blender_material.add_texture(texture, "UV", "ALPHA")
+ blender_material.add_texture(texture, 'UV', 'ALPHA')
blender_material.z_transparency = True
blender_material.alpha = 0.0
# blender_material.setTexture(4, texture, Texture.TexCo.UV, Texture.MapTo.ALPHA)
@@ -412,7 +409,7 @@ def create_materials(filepath, material_libs, unique_materials, unique_material_
# Todo, unset deffuse material alpha if it has an alpha channel
elif type == 'refl':
- blender_material.add_texture(texture, "UV", "REFLECTION")
+ blender_material.add_texture(texture, 'UV', 'REFLECTION')
# blender_material.setTexture(5, texture, Texture.TexCo.UV, Texture.MapTo.REF)
@@ -500,7 +497,7 @@ def create_materials(filepath, material_libs, unique_materials, unique_material_
-def split_mesh(verts_loc, faces, unique_materials, filepath, SPLIT_OB_OR_GROUP, SPLIT_MATERIALS):
+def split_mesh(verts_loc, faces, unique_materials, filepath, SPLIT_OB_OR_GROUP):
'''
Takes vert_loc and faces, and separates into multiple sets of
(verts_loc, faces, unique_materials, dataname)
@@ -508,41 +505,24 @@ def split_mesh(verts_loc, faces, unique_materials, filepath, SPLIT_OB_OR_GROUP,
filename = os.path.splitext((os.path.basename(filepath)))[0]
- if not SPLIT_OB_OR_GROUP and not SPLIT_MATERIALS:
+ if not SPLIT_OB_OR_GROUP:
# use the filename for the object name since we arnt chopping up the mesh.
return [(verts_loc, faces, unique_materials, filename)]
-
def key_to_name(key):
# if the key is a tuple, join it to make a string
- if type(key) == tuple:
- return '%s_%s' % key
- elif not key:
+ if not key:
return filename # assume its a string. make sure this is true if the splitting code is changed
else:
return key
# Return a key that makes the faces unique.
- if SPLIT_OB_OR_GROUP and not SPLIT_MATERIALS:
- def face_key(face):
- return face[4] # object
-
- elif not SPLIT_OB_OR_GROUP and SPLIT_MATERIALS:
- def face_key(face):
- return face[2] # material
-
- else: # Both
- def face_key(face):
- return face[4], face[2] # object,material
-
-
face_split_dict= {}
oldkey= -1 # initialize to a value that will never match the key
for face in faces:
-
- key= face_key(face)
+ key= face[4]
if oldkey != key:
# Check the key has changed.
@@ -567,7 +547,6 @@ def split_mesh(verts_loc, faces, unique_materials, filepath, SPLIT_OB_OR_GROUP,
vert_remap[i]= new_index # set the new remapped index so we only add once and can reference next time.
face_vert_loc_indicies[enum] = new_index # remap to the local index
verts_split.append( verts_loc[i] ) # add the vert to the local verts
-
else:
face_vert_loc_indicies[enum] = vert_remap[i] # remap to the local index
@@ -577,12 +556,11 @@ def split_mesh(verts_loc, faces, unique_materials, filepath, SPLIT_OB_OR_GROUP,
faces_split.append(face)
-
# remove one of the itemas and reorder
return [(value[0], value[1], value[2], key_to_name(key)) for key, value in list(face_split_dict.items())]
-def create_mesh(scn, new_objects, has_ngons, CREATE_FGONS, CREATE_EDGES, verts_loc, verts_tex, faces, unique_materials, unique_material_images, unique_smooth_groups, vertex_groups, dataname):
+def create_mesh(new_objects, has_ngons, CREATE_FGONS, CREATE_EDGES, verts_loc, verts_tex, faces, unique_materials, unique_material_images, unique_smooth_groups, vertex_groups, dataname):
'''
Takes all the data gathered and generates a mesh, adding the new object to new_objects
deals with fgons, sharp edges and assigning materials
@@ -699,18 +677,18 @@ def create_mesh(scn, new_objects, has_ngons, CREATE_FGONS, CREATE_EDGES, verts_l
# make sure the list isnt too big
for material in materials:
me.add_material(material)
- #me.verts.extend([(0,0,0)]) # dummy vert
+ #me.vertices.extend([(0,0,0)]) # dummy vert
me.add_geometry(len(verts_loc), 0, len(faces))
# verts_loc is a list of (x, y, z) tuples
- me.verts.foreach_set("co", unpack_list(verts_loc))
-# me.verts.extend(verts_loc)
+ me.vertices.foreach_set("co", unpack_list(verts_loc))
+# me.vertices.extend(verts_loc)
# faces is a list of (vert_indices, texco_indices, ...) tuples
# XXX faces should contain either 3 or 4 verts
# XXX no check for valid face indices
- me.faces.foreach_set("verts_raw", unpack_face_list([f[0] for f in faces]))
+ me.faces.foreach_set("vertices_raw", unpack_face_list([f[0] for f in faces]))
# face_mapping= me.faces.extend([f[0] for f in faces], indexList=True)
if verts_tex and me.faces:
@@ -748,7 +726,7 @@ def create_mesh(scn, new_objects, has_ngons, CREATE_FGONS, CREATE_EDGES, verts_l
if context_smooth_group:
- blender_face.smooth= True
+ blender_face.use_smooth = True
if context_material:
if context_material_old is not context_material:
@@ -764,14 +742,12 @@ def create_mesh(scn, new_objects, has_ngons, CREATE_FGONS, CREATE_EDGES, verts_l
blender_tface= me.uv_textures[0].data[i]
if context_material:
- image, has_data= unique_material_images[context_material]
+ image, has_data = unique_material_images[context_material]
if image: # Can be none if the material dosnt have an image.
- blender_tface.image= image
-# blender_face.image= image
- if has_data:
-# if has_data and image.depth == 32:
- blender_tface.transp = 'ALPHA'
-# blender_face.transp |= ALPHA
+ blender_tface.image = image
+ blender_tface.tex = True
+ if has_data and image.depth == 32:
+ blender_tface.blend_type = 'ALPHA'
# BUG - Evil eekadoodle problem where faces that have vert index 0 location at 3 or 4 are shuffled.
if len(face_vert_loc_indicies)==4:
@@ -800,7 +776,7 @@ def create_mesh(scn, new_objects, has_ngons, CREATE_FGONS, CREATE_EDGES, verts_l
me.add_geometry(0, len(edges), 0)
# edges should be a list of (a, b) tuples
- me.edges.foreach_set("verts", unpack_list(edges))
+ me.edges.foreach_set("vertices", unpack_list(edges))
# me_edges.extend( edges )
# del me_edges
@@ -815,8 +791,8 @@ def create_mesh(scn, new_objects, has_ngons, CREATE_FGONS, CREATE_EDGES, verts_l
# if CREATE_FGONS and fgon_edges:
# for fgon_edge in fgon_edges.keys():
# for ed in me.edges:
-# if edges_match(fgon_edge, ed.verts):
-# ed.fgon = True
+# if edges_match(fgon_edge, ed.vertices):
+# ed.is_fgon = True
# if CREATE_FGONS and fgon_edges:
# FGON= Mesh.EdgeFlags.FGON
@@ -829,8 +805,8 @@ def create_mesh(scn, new_objects, has_ngons, CREATE_FGONS, CREATE_EDGES, verts_l
# if unique_smooth_groups and sharp_edges:
# for sharp_edge in sharp_edges.keys():
# for ed in me.edges:
-# if edges_match(sharp_edge, ed.verts):
-# ed.sharp = True
+# if edges_match(sharp_edge, ed.vertices):
+# ed.use_edge_sharp = True
# if unique_smooth_groups and sharp_edges:
# SHARP= Mesh.EdgeFlags.SHARP
@@ -843,7 +819,6 @@ def create_mesh(scn, new_objects, has_ngons, CREATE_FGONS, CREATE_EDGES, verts_l
# me.calcNormals()
ob= bpy.data.objects.new("Mesh", me)
- scn.objects.link(ob)
new_objects.append(ob)
# Create the vertex groups. No need to have the flag passed here since we test for the
@@ -857,7 +832,7 @@ def create_mesh(scn, new_objects, has_ngons, CREATE_FGONS, CREATE_EDGES, verts_l
# me.assignVertsToGroup(group_name, group_indicies, 1.00, Mesh.AssignModes.REPLACE)
-def create_nurbs(scn, context_nurbs, vert_loc, new_objects):
+def create_nurbs(context_nurbs, vert_loc, new_objects):
'''
Add nurbs object to blender, only support one type at the moment
'''
@@ -932,8 +907,9 @@ def create_nurbs(scn, context_nurbs, vert_loc, new_objects):
if do_closed:
nu.flagU |= 1
'''
+
+ ob= bpy.data.objects.new("Mesh", me)
- ob = scn.objects.new(cu)
new_objects.append(ob)
@@ -1258,7 +1234,6 @@ def load_obj(filepath,
# bpy.ops.OBJECT_OT_select_all()
scene = context.scene
-# scn = bpy.data.scenes.active
# scn.objects.selected = []
new_objects= [] # put new objects here
@@ -1267,14 +1242,20 @@ def load_obj(filepath,
if SPLIT_OBJECTS or SPLIT_GROUPS: SPLIT_OB_OR_GROUP = True
else: SPLIT_OB_OR_GROUP = False
- for verts_loc_split, faces_split, unique_materials_split, dataname in split_mesh(verts_loc, faces, unique_materials, filepath, SPLIT_OB_OR_GROUP, SPLIT_MATERIALS):
+ for verts_loc_split, faces_split, unique_materials_split, dataname in split_mesh(verts_loc, faces, unique_materials, filepath, SPLIT_OB_OR_GROUP):
# Create meshes from the data, warning 'vertex_groups' wont support splitting
- create_mesh(scene, new_objects, has_ngons, CREATE_FGONS, CREATE_EDGES, verts_loc_split, verts_tex, faces_split, unique_materials_split, unique_material_images, unique_smooth_groups, vertex_groups, dataname)
+ create_mesh(new_objects, has_ngons, CREATE_FGONS, CREATE_EDGES, verts_loc_split, verts_tex, faces_split, unique_materials_split, unique_material_images, unique_smooth_groups, vertex_groups, dataname)
# nurbs support
# for context_nurbs in nurbs:
# create_nurbs(scn, context_nurbs, verts_loc, new_objects)
+ # Create new obj
+ for obj in new_objects:
+ scene.objects.link(obj)
+
+ scene.update()
+
axis_min= [ 1000000000]*3
axis_max= [-1000000000]*3
@@ -1316,14 +1297,13 @@ def load_obj_ui(filepath, BATCH_LOAD= False):
if BPyMessages.Error_NoFile(filepath):
return
- global CREATE_SMOOTH_GROUPS, CREATE_FGONS, CREATE_EDGES, SPLIT_OBJECTS, SPLIT_GROUPS, SPLIT_MATERIALS, CLAMP_SIZE, IMAGE_SEARCH, POLYGROUPS, KEEP_VERT_ORDER, ROTATE_X90
+ global CREATE_SMOOTH_GROUPS, CREATE_FGONS, CREATE_EDGES, SPLIT_OBJECTS, SPLIT_GROUPS, CLAMP_SIZE, IMAGE_SEARCH, POLYGROUPS, KEEP_VERT_ORDER, ROTATE_X90
CREATE_SMOOTH_GROUPS= Draw.Create(0)
CREATE_FGONS= Draw.Create(1)
CREATE_EDGES= Draw.Create(1)
SPLIT_OBJECTS= Draw.Create(0)
SPLIT_GROUPS= Draw.Create(0)
- SPLIT_MATERIALS= Draw.Create(0)
CLAMP_SIZE= Draw.Create(10.0)
IMAGE_SEARCH= Draw.Create(1)
POLYGROUPS= Draw.Create(0)
@@ -1342,7 +1322,6 @@ def load_obj_ui(filepath, BATCH_LOAD= False):
'Separate objects from obj...',\
('Object', SPLIT_OBJECTS, 'Import OBJ Objects into Blender Objects'),\
('Group', SPLIT_GROUPS, 'Import OBJ Groups into Blender Objects'),\
- ('Split Materials', SPLIT_MATERIALS, 'Import each material into a separate mesh'),\
'Options...',\
('Keep Vert Order', KEEP_VERT_ORDER, 'Keep vert and face order, disables some other options.'),\
('Clamp Scale:', CLAMP_SIZE, 0.0, 1000.0, 'Clamp the size to this maximum (Zero to Disable)'),\
@@ -1355,7 +1334,6 @@ def load_obj_ui(filepath, BATCH_LOAD= False):
if KEEP_VERT_ORDER.val:
SPLIT_OBJECTS.val = False
SPLIT_GROUPS.val = False
- SPLIT_MATERIALS.val = False
'''
@@ -1377,25 +1355,25 @@ def load_obj_ui(filepath, BATCH_LOAD= False):
GLOBALS['EVENT'] = e
def do_split(e,v):
- global SPLIT_OBJECTS, SPLIT_GROUPS, SPLIT_MATERIALS, KEEP_VERT_ORDER, POLYGROUPS
- if SPLIT_OBJECTS.val or SPLIT_GROUPS.val or SPLIT_MATERIALS.val:
+ global SPLIT_OBJECTS, SPLIT_GROUPS, KEEP_VERT_ORDER, POLYGROUPS
+ if SPLIT_OBJECTS.val or SPLIT_GROUPS.val:
KEEP_VERT_ORDER.val = 0
POLYGROUPS.val = 0
else:
KEEP_VERT_ORDER.val = 1
def do_vertorder(e,v):
- global SPLIT_OBJECTS, SPLIT_GROUPS, SPLIT_MATERIALS, KEEP_VERT_ORDER
+ global SPLIT_OBJECTS, SPLIT_GROUPS, KEEP_VERT_ORDER
if KEEP_VERT_ORDER.val:
- SPLIT_OBJECTS.val = SPLIT_GROUPS.val = SPLIT_MATERIALS.val = 0
+ SPLIT_OBJECTS.val = SPLIT_GROUPS.val = 0
else:
- if not (SPLIT_OBJECTS.val or SPLIT_GROUPS.val or SPLIT_MATERIALS.val):
+ if not (SPLIT_OBJECTS.val or SPLIT_GROUPS.val):
KEEP_VERT_ORDER.val = 1
def do_polygroups(e,v):
- global SPLIT_OBJECTS, SPLIT_GROUPS, SPLIT_MATERIALS, KEEP_VERT_ORDER, POLYGROUPS
+ global SPLIT_OBJECTS, SPLIT_GROUPS, KEEP_VERT_ORDER, POLYGROUPS
if POLYGROUPS.val:
- SPLIT_OBJECTS.val = SPLIT_GROUPS.val = SPLIT_MATERIALS.val = 0
+ SPLIT_OBJECTS.val = SPLIT_GROUPS.val = 0
def do_help(e,v):
url = __url__[0]
@@ -1415,7 +1393,7 @@ def load_obj_ui(filepath, BATCH_LOAD= False):
ui_x -= 165
ui_y -= 90
- global CREATE_SMOOTH_GROUPS, CREATE_FGONS, CREATE_EDGES, SPLIT_OBJECTS, SPLIT_GROUPS, SPLIT_MATERIALS, CLAMP_SIZE, IMAGE_SEARCH, POLYGROUPS, KEEP_VERT_ORDER, ROTATE_X90
+ global CREATE_SMOOTH_GROUPS, CREATE_FGONS, CREATE_EDGES, SPLIT_OBJECTS, SPLIT_GROUPS, CLAMP_SIZE, IMAGE_SEARCH, POLYGROUPS, KEEP_VERT_ORDER, ROTATE_X90
Draw.Label('Import...', ui_x+9, ui_y+159, 220, 21)
Draw.BeginAlign()
@@ -1428,7 +1406,6 @@ def load_obj_ui(filepath, BATCH_LOAD= False):
Draw.BeginAlign()
SPLIT_OBJECTS = Draw.Toggle('Object', EVENT_REDRAW, ui_x+9, ui_y+89, 55, 21, SPLIT_OBJECTS.val, 'Import OBJ Objects into Blender Objects', do_split)
SPLIT_GROUPS = Draw.Toggle('Group', EVENT_REDRAW, ui_x+64, ui_y+89, 55, 21, SPLIT_GROUPS.val, 'Import OBJ Groups into Blender Objects', do_split)
- SPLIT_MATERIALS = Draw.Toggle('Split Materials', EVENT_REDRAW, ui_x+119, ui_y+89, 60, 21, SPLIT_MATERIALS.val, 'Import each material into a separate mesh', do_split)
Draw.EndAlign()
# Only used for user feedback
@@ -1488,7 +1465,6 @@ def load_obj_ui(filepath, BATCH_LOAD= False):
CREATE_EDGES.val,\
SPLIT_OBJECTS.val,\
SPLIT_GROUPS.val,\
- SPLIT_MATERIALS.val,\
ROTATE_X90.val,\
IMAGE_SEARCH.val,\
POLYGROUPS.val
@@ -1502,7 +1478,6 @@ def load_obj_ui(filepath, BATCH_LOAD= False):
CREATE_EDGES.val,\
SPLIT_OBJECTS.val,\
SPLIT_GROUPS.val,\
- SPLIT_MATERIALS.val,\
ROTATE_X90.val,\
IMAGE_SEARCH.val,\
POLYGROUPS.val
@@ -1566,7 +1541,6 @@ class IMPORT_OT_obj(bpy.types.Operator):
CREATE_EDGES = BoolProperty(name="Lines as Edges", description="Import lines and faces with 2 verts as edge", default= True)
SPLIT_OBJECTS = BoolProperty(name="Object", description="Import OBJ Objects into Blender Objects", default= True)
SPLIT_GROUPS = BoolProperty(name="Group", description="Import OBJ Groups into Blender Objects", default= True)
- SPLIT_MATERIALS = BoolProperty(name="Split Materials", description="Import each material into a separate mesh", default= False)
# old comment: only used for user feedback
# disabled this option because in old code a handler for it disabled SPLIT* params, it's not passed to load_obj
# KEEP_VERT_ORDER = BoolProperty(name="Keep Vert Order", description="Keep vert and face order, disables split options, enable for morph targets", default= True)
@@ -1587,7 +1561,6 @@ class IMPORT_OT_obj(bpy.types.Operator):
self.properties.CREATE_EDGES,
self.properties.SPLIT_OBJECTS,
self.properties.SPLIT_GROUPS,
- self.properties.SPLIT_MATERIALS,
self.properties.ROTATE_X90,
self.properties.IMAGE_SEARCH,
self.properties.POLYGROUPS)
@@ -1595,8 +1568,7 @@ class IMPORT_OT_obj(bpy.types.Operator):
return {'FINISHED'}
def invoke(self, context, event):
- wm = context.manager
- wm.add_fileselect(self)
+ context.manager.add_fileselect(self)
return {'RUNNING_MODAL'}
diff --git a/release/scripts/io/import_shape_mdd.py b/release/scripts/io/import_shape_mdd.py
index 522f860684f..c7b199918a2 100644
--- a/release/scripts/io/import_shape_mdd.py
+++ b/release/scripts/io/import_shape_mdd.py
@@ -66,7 +66,7 @@ def mdd_import(filepath, ob, scene, PREF_START_FRAME=0, PREF_JUMP=1):
ob.active_shape_key_index = len(ob.data.shape_keys.keys)-1
index = len(ob.data.shape_keys.keys)-1
- ob.shape_key_lock = True
+ ob.show_shape_key = True
verts = ob.data.shape_keys.keys[len(ob.data.shape_keys.keys)-1].data
@@ -74,7 +74,7 @@ def mdd_import(filepath, ob, scene, PREF_START_FRAME=0, PREF_JUMP=1):
for v in verts: # 12 is the size of 3 floats
v.co[:] = unpack('>3f', file.read(12))
#me.update()
- ob.shape_key_lock = False
+ ob.show_shape_key = False
# insert keyframes
diff --git a/release/scripts/io/netrender/client.py b/release/scripts/io/netrender/client.py
index 4a116bb982a..6f0f6460ae1 100644
--- a/release/scripts/io/netrender/client.py
+++ b/release/scripts/io/netrender/client.py
@@ -41,7 +41,7 @@ def addFluidFiles(job, path):
job.addFile(path + fluid_file, current_frame, current_frame)
def addPointCache(job, ob, point_cache, default_path):
- if not point_cache.disk_cache:
+ if not point_cache.use_disk_cache:
return
@@ -49,7 +49,7 @@ def addPointCache(job, ob, point_cache, default_path):
if name == "":
name = "".join(["%02X" % ord(c) for c in ob.name])
- cache_path = bpy.path.abspath(point_cache.filepath) if point_cache.external else default_path
+ cache_path = bpy.path.abspath(point_cache.filepath) if point_cache.use_external else default_path
index = "%02i" % point_cache.index
@@ -146,9 +146,9 @@ def clientSendJob(conn, scene, anim = False):
addPointCache(job, object, modifier.point_cache, default_path)
elif modifier.type == "SMOKE" and modifier.smoke_type == "TYPE_DOMAIN":
addPointCache(job, object, modifier.domain_settings.point_cache_low, default_path)
- if modifier.domain_settings.highres:
+ if modifier.domain_settings.use_high_resolution:
addPointCache(job, object, modifier.domain_settings.point_cache_high, default_path)
- elif modifier.type == "MULTIRES" and modifier.external:
+ elif modifier.type == "MULTIRES" and modifier.is_external:
file_path = bpy.path.abspath(modifier.filepath)
job.addFile(file_path)
@@ -171,6 +171,7 @@ def clientSendJob(conn, scene, anim = False):
# try to send path first
conn.request("POST", "/job", repr(job.serialize()))
response = conn.getresponse()
+ response.read()
job_id = response.getheader("job-id")
@@ -181,6 +182,7 @@ def clientSendJob(conn, scene, anim = False):
conn.request("PUT", fileURL(job_id, rfile.index), f)
f.close()
response = conn.getresponse()
+ response.read()
# server will reply with ACCEPTED until all files are found
@@ -208,7 +210,7 @@ class NetworkRenderEngine(bpy.types.RenderEngine):
address = "" if netsettings.server_address == "[default]" else netsettings.server_address
- master.runMaster((address, netsettings.server_port), netsettings.master_broadcast, netsettings.master_clear, netsettings.path, self.update_stats, self.test_break)
+ master.runMaster((address, netsettings.server_port), netsettings.master_broadcast, netsettings.use_master_clear, netsettings.path, self.update_stats, self.test_break)
def render_slave(self, scene):
@@ -236,6 +238,7 @@ class NetworkRenderEngine(bpy.types.RenderEngine):
requestResult(conn, job_id, scene.frame_current)
response = conn.getresponse()
+ response.read()
if response.status == http.client.NO_CONTENT:
new_job = True
@@ -244,16 +247,19 @@ class NetworkRenderEngine(bpy.types.RenderEngine):
requestResult(conn, job_id, scene.frame_current)
response = conn.getresponse()
+ response.read()
while response.status == http.client.ACCEPTED and not self.test_break():
time.sleep(1)
requestResult(conn, job_id, scene.frame_current)
response = conn.getresponse()
+ response.read()
# cancel new jobs (animate on network) on break
if self.test_break() and new_job:
conn.request("POST", cancelURL(job_id))
response = conn.getresponse()
+ response.read()
print( response.status, response.reason )
netsettings.job_id = 0
@@ -265,7 +271,7 @@ class NetworkRenderEngine(bpy.types.RenderEngine):
x= int(r.resolution_x*r.resolution_percentage*0.01)
y= int(r.resolution_y*r.resolution_percentage*0.01)
- f = open(netsettings.path + "output.exr", "wb")
+ f = open(os.path.join(netsettings.path, "output.exr"), "wb")
buf = response.read(1024)
while buf:
@@ -275,7 +281,7 @@ class NetworkRenderEngine(bpy.types.RenderEngine):
f.close()
result = self.begin_result(0, 0, x, y)
- result.load_from_file(netsettings.path + "output.exr")
+ result.load_from_file(os.path.join(netsettings.path, "output.exr"))
self.end_result(result)
conn.close()
diff --git a/release/scripts/io/netrender/master.py b/release/scripts/io/netrender/master.py
index f227f61a536..6deb925420b 100644
--- a/release/scripts/io/netrender/master.py
+++ b/release/scripts/io/netrender/master.py
@@ -89,7 +89,7 @@ class MRenderJob(netrender.model.RenderJob):
def save(self):
if self.save_path:
- f = open(self.save_path + "job.txt", "w")
+ f = open(os.path.join(self.save_path, "job.txt"), "w")
f.write(repr(self.serialize()))
f.close()
@@ -134,8 +134,8 @@ class MRenderJob(netrender.model.RenderJob):
self.status = JOB_QUEUED
def addLog(self, frames):
- log_name = "_".join(("%04d" % f for f in frames)) + ".log"
- log_path = self.save_path + log_name
+ log_name = "_".join(("%06d" % f for f in frames)) + ".log"
+ log_path = os.path.join(self.save_path, log_name)
for number in frames:
frame = self[number]
@@ -260,7 +260,7 @@ class RenderHandler(http.server.BaseHTTPRequestHandler):
elif frame.status == DONE:
self.server.stats("", "Sending result to client")
- filename = job.save_path + "%04d" % frame_number + ".exr"
+ filename = os.path.join(job.save_path, "%06d.exr" % frame_number)
f = open(filename, 'rb')
self.send_head(content = "image/x-exr")
@@ -294,7 +294,7 @@ class RenderHandler(http.server.BaseHTTPRequestHandler):
if frame.status in (QUEUED, DISPATCHED):
self.send_head(http.client.ACCEPTED)
elif frame.status == DONE:
- filename = job.save_path + "%04d" % frame_number + ".exr"
+ filename = os.path.join(job.save_path, "%06d.exr" % frame_number)
thumbname = thumbnail(filename)
@@ -716,7 +716,7 @@ class RenderHandler(http.server.BaseHTTPRequestHandler):
if file_index > 0:
file_path = prefixPath(job.save_path, render_file.filepath, main_path)
else:
- file_path = job.save_path + main_name
+ file_path = os.path.join(job.save_path, main_name)
buf = self.rfile.read(length)
@@ -772,7 +772,7 @@ class RenderHandler(http.server.BaseHTTPRequestHandler):
if job_result == DONE:
length = int(self.headers['content-length'])
buf = self.rfile.read(length)
- f = open(job.save_path + "%04d" % job_frame + ".exr", 'wb')
+ f = open(os.path.join(job.save_path, "%06d.exr" % job_frame), 'wb')
f.write(buf)
f.close()
@@ -822,13 +822,12 @@ class RenderHandler(http.server.BaseHTTPRequestHandler):
if job.type == netrender.model.JOB_BLENDER:
length = int(self.headers['content-length'])
buf = self.rfile.read(length)
- f = open(job.save_path + "%04d" % job_frame + ".jpg", 'wb')
+ f = open(os.path.join(job.save_path, "%06d.jpg" % job_frame), 'wb')
f.write(buf)
f.close()
del buf
- self.send_head()
else: # frame not found
self.send_head(http.client.NO_CONTENT)
else: # job not found
@@ -880,7 +879,7 @@ class RenderMasterServer(socketserver.ThreadingMixIn, http.server.HTTPServer):
self.job_id = 0
if subdir:
- self.path = path + "master_" + str(os.getpid()) + os.sep
+ self.path = os.path.join(path, "master_" + str(os.getpid()))
else:
self.path = path
@@ -1007,7 +1006,7 @@ class RenderMasterServer(socketserver.ThreadingMixIn, http.server.HTTPServer):
self.jobs_map[job.id] = job
# create job directory
- job.save_path = self.path + "job_" + job.id + os.sep
+ job.save_path = os.path.join(self.path, "job_" + job.id)
if not os.path.exists(job.save_path):
os.mkdir(job.save_path)
diff --git a/release/scripts/io/netrender/operators.py b/release/scripts/io/netrender/operators.py
index 55c2d11e28e..252b1146b67 100644
--- a/release/scripts/io/netrender/operators.py
+++ b/release/scripts/io/netrender/operators.py
@@ -52,27 +52,27 @@ class RENDER_OT_netslave_bake(bpy.types.Operator):
modifier.settings.path = relative_path
bpy.ops.fluid.bake({"active_object": object, "scene": scene})
elif modifier.type == "CLOTH":
- modifier.point_cache.step = 1
- modifier.point_cache.disk_cache = True
- modifier.point_cache.external = False
+ modifier.point_cache.frame_step = 1
+ modifier.point_cache.use_disk_cache = True
+ modifier.point_cache.use_external = False
elif modifier.type == "SOFT_BODY":
- modifier.point_cache.step = 1
- modifier.point_cache.disk_cache = True
- modifier.point_cache.external = False
+ modifier.point_cache.frame_step = 1
+ modifier.point_cache.use_disk_cache = True
+ modifier.point_cache.use_external = False
elif modifier.type == "SMOKE" and modifier.smoke_type == "TYPE_DOMAIN":
- modifier.domain_settings.point_cache_low.step = 1
- modifier.domain_settings.point_cache_low.disk_cache = True
- modifier.domain_settings.point_cache_low.external = False
- modifier.domain_settings.point_cache_high.step = 1
- modifier.domain_settings.point_cache_high.disk_cache = True
- modifier.domain_settings.point_cache_high.external = False
+ modifier.domain_settings.point_cache_low.use_step = 1
+ modifier.domain_settings.point_cache_low.use_disk_cache = True
+ modifier.domain_settings.point_cache_low.use_external = False
+ modifier.domain_settings.point_cache_high.use_step = 1
+ modifier.domain_settings.point_cache_high.use_disk_cache = True
+ modifier.domain_settings.point_cache_high.use_external = False
# particles modifier are stupid and don't contain data
# we have to go through the object property
for psys in object.particle_systems:
- psys.point_cache.step = 1
- psys.point_cache.disk_cache = True
- psys.point_cache.external = False
+ psys.point_cache.use_step = 1
+ psys.point_cache.use_disk_cache = True
+ psys.point_cache.use_external = False
psys.point_cache.filepath = relative_path
bpy.ops.ptcache.bake_all()
@@ -205,6 +205,7 @@ class RENDER_OT_netclientstatus(bpy.types.Operator):
conn.request("GET", "/status")
response = conn.getresponse()
+ response.read()
print( response.status, response.reason )
jobs = (netrender.model.RenderJob.materialize(j) for j in eval(str(response.read(), encoding='utf8')))
@@ -306,6 +307,7 @@ class RENDER_OT_netclientslaves(bpy.types.Operator):
conn.request("GET", "/slaves")
response = conn.getresponse()
+ response.read()
print( response.status, response.reason )
slaves = (netrender.model.RenderSlave.materialize(s) for s in eval(str(response.read(), encoding='utf8')))
@@ -354,6 +356,7 @@ class RENDER_OT_netclientcancel(bpy.types.Operator):
conn.request("POST", cancelURL(job.id))
response = conn.getresponse()
+ response.read()
print( response.status, response.reason )
netsettings.jobs.remove(netsettings.active_job_index)
@@ -380,6 +383,7 @@ class RENDER_OT_netclientcancelall(bpy.types.Operator):
conn.request("POST", "/clear")
response = conn.getresponse()
+ response.read()
print( response.status, response.reason )
while(len(netsettings.jobs) > 0):
@@ -412,6 +416,7 @@ class netclientdownload(bpy.types.Operator):
for frame in job.frames:
client.requestResult(conn, job.id, frame.number)
response = conn.getresponse()
+ response.read()
if response.status != http.client.OK:
print("missing", frame.number)
@@ -419,7 +424,7 @@ class netclientdownload(bpy.types.Operator):
print("got back", frame.number)
- f = open(netsettings.path + "%06d" % frame.number + ".exr", "wb")
+ f = open(os.path.join(netsettings.path, "%06d.exr" % frame.number), "wb")
buf = response.read(1024)
while buf:
diff --git a/release/scripts/io/netrender/repath.py b/release/scripts/io/netrender/repath.py
index 9243505bd3b..3ac9636b628 100644
--- a/release/scripts/io/netrender/repath.py
+++ b/release/scripts/io/netrender/repath.py
@@ -66,10 +66,10 @@ def update(job):
def process(paths):
def processPointCache(point_cache):
- point_cache.external = False
+ point_cache.use_external = False
def processFluid(fluid):
- new_path = path_map.get(fluid.path, None)
+ new_path = path_map.get(fluid.filepath, None)
if new_path:
fluid.path = new_path
@@ -121,9 +121,9 @@ def process(paths):
processPointCache(modifier.point_cache)
elif modifier.type == "SMOKE" and modifier.smoke_type == "TYPE_DOMAIN":
processPointCache(modifier.domain_settings.point_cache_low)
- if modifier.domain_settings.highres:
+ if modifier.domain_settings.use_high_resolution:
processPointCache(modifier.domain_settings.point_cache_high)
- elif modifier.type == "MULTIRES" and modifier.external:
+ elif modifier.type == "MULTIRES" and modifier.is_external:
file_path = bpy.path.abspath(modifier.filepath)
new_path = path_map.get(file_path, None)
if new_path:
diff --git a/release/scripts/io/netrender/slave.py b/release/scripts/io/netrender/slave.py
index fbaf2254504..a44309d5634 100644
--- a/release/scripts/io/netrender/slave.py
+++ b/release/scripts/io/netrender/slave.py
@@ -59,8 +59,8 @@ def slave_Info():
def testCancel(conn, job_id, frame_number):
conn.request("HEAD", "/status", headers={"job-id":job_id, "job-frame": str(frame_number)})
- # cancelled if job isn't found anymore
- if conn.getresponse().status == http.client.NO_CONTENT:
+ # canceled if job isn't found anymore
+ if responseStatus(conn) == http.client.NO_CONTENT:
return True
else:
return False
@@ -81,7 +81,7 @@ def testFile(conn, job_id, slave_id, rfile, JOB_PREFIX, main_path = None):
if not found:
# Force prefix path if not found
job_full_path = prefixPath(JOB_PREFIX, rfile.filepath, main_path, force = True)
- temp_path = JOB_PREFIX + "slave.temp"
+ temp_path = os.path.join(JOB_PREFIX, "slave.temp")
conn.request("GET", fileURL(job_id, rfile.index), headers={"slave-id":slave_id})
response = conn.getresponse()
@@ -113,10 +113,11 @@ def render_slave(engine, netsettings, threads):
if conn:
conn.request("POST", "/slave", repr(slave_Info().serialize()))
response = conn.getresponse()
+ response.read()
slave_id = response.getheader("slave-id")
- NODE_PREFIX = netsettings.path + "slave_" + slave_id + os.sep
+ NODE_PREFIX = os.path.join(netsettings.path, "slave_" + slave_id)
if not os.path.exists(NODE_PREFIX):
os.mkdir(NODE_PREFIX)
@@ -132,7 +133,7 @@ def render_slave(engine, netsettings, threads):
job = netrender.model.RenderJob.materialize(eval(str(response.read(), encoding='utf8')))
engine.update_stats("", "Network render processing job from master")
- JOB_PREFIX = NODE_PREFIX + "job_" + job.id + os.sep
+ JOB_PREFIX = os.path.join(NODE_PREFIX, "job_" + job.id)
if not os.path.exists(JOB_PREFIX):
os.mkdir(JOB_PREFIX)
@@ -157,6 +158,7 @@ def render_slave(engine, netsettings, threads):
logfile = netrender.model.LogFile(job.id, slave_id, [frame.number for frame in job.frames])
conn.request("POST", "/log", bytes(repr(logfile.serialize()), encoding='utf8'))
response = conn.getresponse()
+ response.read()
first_frame = job.frames[0].number
@@ -172,7 +174,7 @@ def render_slave(engine, netsettings, threads):
frame_args += ["-f", str(frame.number)]
val = SetErrorMode()
- process = subprocess.Popen([BLENDER_PATH, "-b", "-noaudio", job_full_path, "-t", str(threads), "-o", JOB_PREFIX + "######", "-E", "BLENDER_RENDER", "-F", "MULTILAYER"] + frame_args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
+ process = subprocess.Popen([BLENDER_PATH, "-b", "-noaudio", job_full_path, "-t", str(threads), "-o", os.path.join(JOB_PREFIX, "######"), "-E", "BLENDER_RENDER", "-F", "MULTILAYER"] + frame_args, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
RestoreErrorMode(val)
elif job.type == netrender.model.JOB_PROCESS:
command = job.frames[0].command
@@ -196,9 +198,10 @@ def render_slave(engine, netsettings, threads):
# (only need to update on one frame, they are linked
conn.request("PUT", logURL(job.id, first_frame), stdout, headers=headers)
response = conn.getresponse()
+ response.read()
# Also output on console
- if netsettings.slave_thumb:
+ if netsettings.use_slave_output_log:
print(str(stdout, encoding='utf8'), end="")
stdout = bytes()
@@ -222,12 +225,12 @@ def render_slave(engine, netsettings, threads):
# flush the rest of the logs
if stdout:
# Also output on console
- if netsettings.slave_thumb:
+ if netsettings.use_slave_thumb:
print(str(stdout, encoding='utf8'), end="")
# (only need to update on one frame, they are linked
conn.request("PUT", logURL(job.id, first_frame), stdout, headers=headers)
- if conn.getresponse().status == http.client.NO_CONTENT:
+ if responseStatus(conn) == http.client.NO_CONTENT:
continue
total_t = time.time() - start_t
@@ -248,26 +251,27 @@ def render_slave(engine, netsettings, threads):
if job.type == netrender.model.JOB_BLENDER:
# send image back to server
- filename = JOB_PREFIX + "%06d" % frame.number + ".exr"
+ filename = os.path.join(JOB_PREFIX, "%06d.exr" % frame.number)
# thumbnail first
- if netsettings.slave_thumb:
+ if netsettings.use_slave_thumb:
thumbname = thumbnail(filename)
f = open(thumbname, 'rb')
conn.request("PUT", "/thumb", f, headers=headers)
f.close()
- conn.getresponse()
+ responseStatus(conn)
+
f = open(filename, 'rb')
conn.request("PUT", "/render", f, headers=headers)
f.close()
- if conn.getresponse().status == http.client.NO_CONTENT:
+ if responseStatus(conn) == http.client.NO_CONTENT:
continue
elif job.type == netrender.model.JOB_PROCESS:
conn.request("PUT", "/render", headers=headers)
- if conn.getresponse().status == http.client.NO_CONTENT:
+ if responseStatus(conn) == http.client.NO_CONTENT:
continue
else:
headers["job-result"] = str(ERROR)
@@ -275,7 +279,7 @@ def render_slave(engine, netsettings, threads):
headers["job-frame"] = str(frame.number)
# send error result back to server
conn.request("PUT", "/render", headers=headers)
- if conn.getresponse().status == http.client.NO_CONTENT:
+ if responseStatus(conn) == http.client.NO_CONTENT:
continue
engine.update_stats("", "Network render connected to master, waiting for jobs")
@@ -290,7 +294,7 @@ def render_slave(engine, netsettings, threads):
conn.close()
- if netsettings.slave_clear:
+ if netsettings.use_slave_clear:
clearSlave(NODE_PREFIX)
if __name__ == "__main__":
diff --git a/release/scripts/io/netrender/ui.py b/release/scripts/io/netrender/ui.py
index cacc35ad48d..c2d943f63f8 100644
--- a/release/scripts/io/netrender/ui.py
+++ b/release/scripts/io/netrender/ui.py
@@ -147,9 +147,9 @@ class RENDER_PT_network_slave_settings(bpy.types.Panel, RenderButtonsPanel):
rd = scene.render
netsettings = scene.network_render
- layout.prop(netsettings, "slave_clear")
- layout.prop(netsettings, "slave_thumb")
- layout.prop(netsettings, "slave_outputlog")
+ layout.prop(netsettings, "use_slave_clear")
+ layout.prop(netsettings, "use_slave_thumb")
+ layout.prop(netsettings, "use_slave_output_log")
layout.label(text="Threads:")
layout.prop(rd, "threads_mode", expand=True)
sub = layout.column()
@@ -171,8 +171,8 @@ class RENDER_PT_network_master_settings(bpy.types.Panel, RenderButtonsPanel):
scene = context.scene
netsettings = scene.network_render
- layout.prop(netsettings, "master_broadcast")
- layout.prop(netsettings, "master_clear")
+ layout.prop(netsettings, "use_master_broadcast")
+ layout.prop(netsettings, "use_master_clear")
class RENDER_PT_network_job(bpy.types.Panel, RenderButtonsPanel):
bl_label = "Job Settings"
@@ -354,27 +354,27 @@ def addProperties():
min=1,
max=65535)
- NetRenderSettings.BoolProperty( attr="master_broadcast",
+ NetRenderSettings.BoolProperty( attr="use_master_broadcast",
name="Broadcast",
description="broadcast master server address on local network",
default = True)
- NetRenderSettings.BoolProperty( attr="slave_clear",
+ NetRenderSettings.BoolProperty( attr="use_slave_clear",
name="Clear on exit",
description="delete downloaded files on exit",
default = True)
- NetRenderSettings.BoolProperty( attr="slave_thumb",
+ NetRenderSettings.BoolProperty( attr="use_slave_thumb",
name="Generate thumbnails",
description="Generate thumbnails on slaves instead of master",
default = False)
- NetRenderSettings.BoolProperty( attr="slave_outputlog",
+ NetRenderSettings.BoolProperty( attr="use_slave_output_log",
name="Output render log on console",
description="Output render text log to console as well as sending it to the master",
default = True)
- NetRenderSettings.BoolProperty( attr="master_clear",
+ NetRenderSettings.BoolProperty( attr="use_master_clear",
name="Clear on exit",
description="delete saved files on exit",
default = False)
diff --git a/release/scripts/io/netrender/utils.py b/release/scripts/io/netrender/utils.py
index 31123ce26da..81617ac0d30 100644
--- a/release/scripts/io/netrender/utils.py
+++ b/release/scripts/io/netrender/utils.py
@@ -57,6 +57,11 @@ FRAME_STATUS_TEXT = {
ERROR: "Error"
}
+def responseStatus(conn):
+ response = conn.getresponse()
+ response.read()
+ return response.status
+
def reporting(report, message, errorType = None):
if errorType:
t = 'ERROR'
@@ -171,16 +176,16 @@ def prefixPath(prefix_directory, file_path, prefix_path, force = False):
if prefix_path and p.startswith(prefix_path):
if len(prefix_path) < len(p):
- directory = prefix_directory + p[len(prefix_path)+1:] + os.sep # +1 to remove separator
+ directory = os.path.join(prefix_directory, p[len(prefix_path)+1:]) # +1 to remove separator
if not os.path.exists(directory):
os.mkdir(directory)
else:
directory = prefix_directory
- full_path = directory + n
+ full_path = os.path.join(directory, n)
else:
- full_path = prefix_directory + n
+ full_path = os.path.join(prefix_directory, n)
else:
- full_path = prefix_directory + file_path
+ full_path = (prefix_directory, file_path)
return full_path
diff --git a/release/scripts/keyingsets/keyingsets_utils.py b/release/scripts/keyingsets/keyingsets_utils.py
index 77b0f3ebacd..a26483e57ce 100644
--- a/release/scripts/keyingsets/keyingsets_utils.py
+++ b/release/scripts/keyingsets/keyingsets_utils.py
@@ -96,14 +96,14 @@ def get_transform_generators_base_info(data):
# Location
def RKS_GEN_location(ksi, context, ks, data):
# get id-block and path info
- id_block, base_path, grouping= get_transform_generators_base_info(data)
+ id_block, base_path, grouping = get_transform_generators_base_info(data)
# add the property name to the base path
path = path_add_property(base_path, "location")
# add Keying Set entry for this...
if grouping:
- ks.paths.add(id_block, path, grouping_method='NAMED', group_name=grouping)
+ ks.paths.add(id_block, path, group_method='NAMED', group_name=grouping)
else:
ks.paths.add(id_block, path)
@@ -123,7 +123,7 @@ def RKS_GEN_rotation(ksi, context, ks, data):
# add Keying Set entry for this...
if grouping:
- ks.paths.add(id_block, path, grouping_method='NAMED', group_name=grouping)
+ ks.paths.add(id_block, path, group_method='NAMED', group_name=grouping)
else:
ks.paths.add(id_block, path)
@@ -137,7 +137,7 @@ def RKS_GEN_scaling(ksi, context, ks, data):
# add Keying Set entry for this...
if grouping:
- ks.paths.add(id_block, path, grouping_method='NAMED', group_name=grouping)
+ ks.paths.add(id_block, path, group_method='NAMED', group_name=grouping)
else:
ks.paths.add(id_block, path)
@@ -147,15 +147,11 @@ def RKS_GEN_scaling(ksi, context, ks, data):
classes = []
def register():
- register = bpy.types.register
- for cls in classes:
- register(cls)
+ pass
def unregister():
- unregister = bpy.types.unregister
- for cls in classes:
- unregister(cls)
+ pass
if __name__ == "__main__":
register()
diff --git a/release/scripts/modules/add_object_utils.py b/release/scripts/modules/add_object_utils.py
index 41c05ce9d8a..eaa97512f89 100644
--- a/release/scripts/modules/add_object_utils.py
+++ b/release/scripts/modules/add_object_utils.py
@@ -77,7 +77,7 @@ def add_object_data(context, obdata, operator=None):
bpy.ops.object.mode_set(mode='EDIT')
else:
scene.objects.active = obj_new
- if context.user_preferences.edit.enter_edit_mode:
+ if context.user_preferences.edit.use_enter_edit_mode:
bpy.ops.object.mode_set(mode='EDIT')
return base
diff --git a/release/scripts/modules/animsys_refactor.py b/release/scripts/modules/animsys_refactor.py
new file mode 100644
index 00000000000..8cc91873b0e
--- /dev/null
+++ b/release/scripts/modules/animsys_refactor.py
@@ -0,0 +1,201 @@
+# ##### BEGIN GPL LICENSE BLOCK #####
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# ##### END GPL LICENSE BLOCK #####
+
+# <pep8 compliant>
+
+"""
+This module has utility functions for renaming
+rna values in fcurves and drivers.
+
+The main function to use is: update_data_paths(...)
+"""
+
+IS_TESTING = False
+
+class DataPathBuilder(object):
+ __slots__ = ("data_path", )
+ """ Dummy class used to parse fcurve and driver data paths.
+ """
+ def __init__(self, attrs):
+ self.data_path = attrs
+
+ def __getattr__(self, attr):
+ str_value = ".%s" % attr
+ return DataPathBuilder(self.data_path + (str_value, ))
+
+ def __getitem__(self, key):
+ str_value = '["%s"]' % key
+ return DataPathBuilder(self.data_path + (str_value, ))
+
+ def resolve(self, real_base, rna_update_from_map=None):
+ """ Return (attribute, value) pairs.
+ """
+ pairs = []
+ base = real_base
+ for item in self.data_path:
+ if base is not Ellipsis:
+ try:
+ # this only works when running with an old blender
+ # where the old path will resolve
+ base = eval("base" + item)
+ except:
+ base_new = Ellipsis
+ # guess the new name
+ if item.startswith("."):
+ for item_new in rna_update_from_map.get(item[1:], ()):
+ try:
+ print("base." + item_new)
+ base_new = eval("base." + item_new)
+ break # found, dont keep looking
+ except:
+ pass
+
+ if base_new is Ellipsis:
+ print("Failed to resolve data path:", self.data_path)
+ base = base_new
+
+ pairs.append((item, base))
+ return pairs
+
+import bpy
+
+
+def id_iter():
+ type_iter = type(bpy.data.objects)
+
+ for attr in dir(bpy.data):
+ data_iter = getattr(bpy.data, attr, None)
+ if type(data_iter) == type_iter:
+ for id_data in data_iter:
+ if id_data.library is None:
+ yield id_data
+
+
+def anim_data_actions(anim_data):
+ actions = []
+ actions.append(anim_data.action)
+ for track in anim_data.nla_tracks:
+ for strip in track.strips:
+ actions.append(strip.action)
+
+ # filter out None
+ return [act for act in actions if act]
+
+
+def classes_recursive(base_type, clss=None):
+ if clss is None:
+ clss = [base_type]
+ else:
+ clss.append(base_type)
+
+ for base_type_iter in base_type.__bases__:
+ if base_type_iter is not object:
+ classes_recursive(base_type_iter, clss)
+
+ return clss
+
+
+def find_path_new(id_data, data_path, rna_update_dict, rna_update_from_map):
+ # ignore ID props for now
+ if data_path.startswith("["):
+ return data_path
+
+ # recursive path fixing, likely will be one in most cases.
+ data_path_builder = eval("DataPathBuilder(tuple())." + data_path)
+ data_resolve = data_path_builder.resolve(id_data, rna_update_from_map)
+
+ path_new = [pair[0] for pair in data_resolve]
+
+ # print(data_resolve)
+ data_base = id_data
+
+ for i, (attr, data) in enumerate(data_resolve):
+ if data is Ellipsis:
+ break
+
+ if attr.startswith("."):
+ # try all classes
+ for data_base_type in classes_recursive(type(data_base)):
+ attr_new = rna_update_dict.get(data_base_type.__name__, {}).get(attr[1:])
+ if attr_new:
+ path_new[i] = "." + attr_new
+
+ # set this as the base for further properties
+ data_base = data
+
+ data_path_new = "".join(path_new)[1:] # skip the first "."
+ return data_path_new
+
+
+def update_data_paths(rna_update):
+ ''' rna_update triple [(class_name, from, to), ...]
+ '''
+
+ # make a faster lookup dict
+ rna_update_dict = {}
+ for ren_class, ren_from, ren_to in rna_update:
+ rna_update_dict.setdefault(ren_class, {})[ren_from] = ren_to
+
+ rna_update_from_map = {}
+ for ren_class, ren_from, ren_to in rna_update:
+ rna_update_from_map.setdefault(ren_from, []).append(ren_to)
+
+ for id_data in id_iter():
+ anim_data = getattr(id_data, "animation_data", None)
+ if anim_data is None:
+ continue
+
+ for fcurve in anim_data.drivers:
+ for var in fcurve.driver.variables:
+ if var.type == 'SINGLE_PROP':
+ for tar in var.targets:
+ id_data_other = tar.id
+ data_path = tar.data_path
+
+ if id_data_other and data_path:
+ data_path_new = find_path_new(id_data_other, data_path, rna_update_dict, rna_update_from_map)
+ # print(data_path_new)
+ if data_path_new != data_path:
+ if not IS_TESTING:
+ tar.data_path = data_path_new
+ print("driver (%s): %s -> %s" % (id_data_other.name, data_path, data_path_new))
+
+
+
+ for action in anim_data_actions(anim_data):
+ for fcu in action.fcurves:
+ data_path = fcu.data_path
+ data_path_new = find_path_new(id_data, data_path, rna_update_dict, rna_update_from_map)
+ # print(data_path_new)
+ if data_path_new != data_path:
+ if not IS_TESTING:
+ fcu.data_path = data_path_new
+ print("fcurve (%s): %s -> %s" % (id_data.name, data_path, data_path_new))
+
+
+if __name__ == "__main__":
+
+ # Example, should be called externally
+ # (class, from, to)
+ replace_ls = [
+ ('AnimVizMotionPaths', 'frame_after', 'frame_after'),
+ ('AnimVizMotionPaths', 'frame_before', 'frame_before'),
+ ('AnimVizOnionSkinning', 'frame_after', 'frame_after'),
+ ]
+
+ update_data_paths(replace_ls)
diff --git a/release/scripts/modules/bpy/__init__.py b/release/scripts/modules/bpy/__init__.py
index 3431054413e..5b7d5a76336 100644
--- a/release/scripts/modules/bpy/__init__.py
+++ b/release/scripts/modules/bpy/__init__.py
@@ -48,7 +48,7 @@ def _main():
import pydoc
pydoc.getpager = lambda: pydoc.plainpager
pydoc.Helper.getline = lambda self, prompt: None
- pydoc.TextDoc.bold = lambda self, text: text
+ pydoc.TextDoc.use_bold = lambda self, text: text
# if "-d" in sys.argv: # Enable this to measure startup speed
diff --git a/release/scripts/modules/bpy/utils.py b/release/scripts/modules/bpy/utils.py
index 6c1c669d1f2..7cfe476c2e7 100644
--- a/release/scripts/modules/bpy/utils.py
+++ b/release/scripts/modules/bpy/utils.py
@@ -224,7 +224,7 @@ _scripts = (_os.path.normpath(_scripts), )
def user_script_path():
- path = _bpy.context.user_preferences.filepaths.python_scripts_directory
+ path = _bpy.context.user_preferences.filepaths.script_directory
if path:
path = _os.path.normpath(path)
@@ -243,7 +243,7 @@ def script_paths(subdir=None, user=True):
# add user scripts dir
if user:
- user_script_path = _bpy.context.user_preferences.filepaths.python_scripts_directory
+ user_script_path = _bpy.context.user_preferences.filepaths.script_directory
else:
user_script_path = None
diff --git a/release/scripts/modules/bpy_types.py b/release/scripts/modules/bpy_types.py
index 0a796793d01..5030e9f4868 100644
--- a/release/scripts/modules/bpy_types.py
+++ b/release/scripts/modules/bpy_types.py
@@ -52,7 +52,7 @@ class Library(bpy_types.ID):
# See: readblenentry.c, IDTYPE_FLAGS_ISLINKABLE, we could make this an attribute in rna.
attr_links = "actions", "armatures", "brushes", "cameras", \
- "curves", "gpencil", "groups", "images", \
+ "curves", "grease_pencil", "groups", "images", \
"lamps", "lattices", "materials", "metaballs", \
"meshes", "node_groups", "objects", "scenes", \
"sounds", "textures", "texts", "fonts", "worlds"
@@ -309,11 +309,11 @@ class Mesh(bpy_types.ID):
self.add_geometry(len(verts), len(edges), len(faces))
verts_flat = [f for v in verts for f in v]
- self.verts.foreach_set("co", verts_flat)
+ self.vertices.foreach_set("co", verts_flat)
del verts_flat
edges_flat = [i for e in edges for i in e]
- self.edges.foreach_set("verts", edges_flat)
+ self.edges.foreach_set("vertices", edges_flat)
del edges_flat
def treat_face(f):
@@ -324,7 +324,7 @@ class Mesh(bpy_types.ID):
return f
faces_flat = [v for f in faces for v in treat_face(f)]
- self.faces.foreach_set("verts_raw", faces_flat)
+ self.faces.foreach_set("vertices_raw", faces_flat)
del faces_flat
@property
@@ -372,7 +372,7 @@ class Mesh(bpy_types.ID):
for f in faces:
# if len(f) == 4:
- if f.verts_raw[3] != 0:
+ if f.vertices_raw[3] != 0:
edge_keys = f.edge_keys
for i, edkey in enumerate(f.edge_keys):
edges.setdefault(edkey, []).append(edge_keys[OTHER_INDEX[i]])
@@ -449,7 +449,7 @@ class Mesh(bpy_types.ID):
while edges:
current_edge = edges.pop()
- vert_end, vert_start = current_edge.verts[:]
+ vert_end, vert_start = current_edge.vertices[:]
line_poly = [vert_start, vert_end]
ok = True
@@ -460,7 +460,7 @@ class Mesh(bpy_types.ID):
while i:
i -= 1
ed = edges[i]
- v1, v2 = ed.verts
+ v1, v2 = ed.vertices
if v1 == vert_end:
line_poly.append(v2)
vert_end = line_poly[-1]
@@ -495,7 +495,7 @@ class MeshEdge(StructRNA):
@property
def key(self):
- return ord_ind(*tuple(self.verts))
+ return ord_ind(*tuple(self.vertices))
class MeshFace(StructRNA):
@@ -504,8 +504,8 @@ class MeshFace(StructRNA):
@property
def center(self):
"""The midpoint of the face."""
- face_verts = self.verts[:]
- mesh_verts = self.id_data.verts
+ face_verts = self.vertices[:]
+ mesh_verts = self.id_data.vertices
if len(face_verts) == 3:
return (mesh_verts[face_verts[0]].co + mesh_verts[face_verts[1]].co + mesh_verts[face_verts[2]].co) / 3.0
else:
@@ -513,7 +513,7 @@ class MeshFace(StructRNA):
@property
def edge_keys(self):
- verts = self.verts[:]
+ verts = self.vertices[:]
if len(verts) == 3:
return ord_ind(verts[0], verts[1]), ord_ind(verts[1], verts[2]), ord_ind(verts[2], verts[0])
diff --git a/release/scripts/modules/bpyml.py b/release/scripts/modules/bpyml.py
index f30a4b8d9ac..a2ba9ec8006 100644
--- a/release/scripts/modules/bpyml.py
+++ b/release/scripts/modules/bpyml.py
@@ -163,18 +163,18 @@ if __name__ == "__main__":
ui() [
split() [
column() [
- prop(data='context.scene.render', property='stamp_time', text='Time'),
- prop(data='context.scene.render', property='stamp_date', text='Date'),
- prop(data='context.scene.render', property='stamp_render_time', text='RenderTime'),
- prop(data='context.scene.render', property='stamp_frame', text='Frame'),
- prop(data='context.scene.render', property='stamp_scene', text='Scene'),
- prop(data='context.scene.render', property='stamp_camera', text='Camera'),
- prop(data='context.scene.render', property='stamp_filename', text='Filename'),
- prop(data='context.scene.render', property='stamp_marker', text='Marker'),
- prop(data='context.scene.render', property='stamp_sequencer_strip', text='Seq. Strip')
+ prop(data='context.scene.render', property='use_stamp_time', text='Time'),
+ prop(data='context.scene.render', property='use_stamp_date', text='Date'),
+ prop(data='context.scene.render', property='use_stamp_render_time', text='RenderTime'),
+ prop(data='context.scene.render', property='use_stamp_frame', text='Frame'),
+ prop(data='context.scene.render', property='use_stamp_scene', text='Scene'),
+ prop(data='context.scene.render', property='use_stamp_camera', text='Camera'),
+ prop(data='context.scene.render', property='use_stamp_filename', text='Filename'),
+ prop(data='context.scene.render', property='use_stamp_marker', text='Marker'),
+ prop(data='context.scene.render', property='use_stamp_sequencer_strip', text='Seq. Strip')
],
column() [
- active(expr='context.scene.render.render_stamp'),
+ active(expr='context.scene.render.use_stamp'),
prop(data='context.scene.render', property='stamp_foreground', slider=True),
prop(data='context.scene.render', property='stamp_background', slider=True),
separator(),
@@ -182,9 +182,9 @@ if __name__ == "__main__":
]
],
split(percentage=0.2) [
- prop(data='context.scene.render', property='stamp_note', text='Note'),
+ prop(data='context.scene.render', property='use_stamp_note', text='Note'),
row() [
- active(expr='context.scene.render.stamp_note'),
+ active(expr='context.scene.render.use_stamp_note'),
prop(data='context.scene.render', property='stamp_note_text', text='')
]
]
diff --git a/release/scripts/modules/graphviz_export.py b/release/scripts/modules/graphviz_export.py
index 900d69670d5..2389e1f9020 100644
--- a/release/scripts/modules/graphviz_export.py
+++ b/release/scripts/modules/graphviz_export.py
@@ -66,7 +66,7 @@ def graph_armature(obj, filepath, FAKE_PARENT=True, CONSTRAINTS=True, DRIVERS=Tr
print("")
for bone in bones:
b = arm.bones[bone]
- print(">>", bone, ["*>", "->"][b.connected], getattr(getattr(b, "parent", ""), "name", ""))
+ print(">>", bone, ["*>", "->"][b.use_connect], getattr(getattr(b, "parent", ""), "name", ""))
label = [bone]
bone = arm.bones[bone]
@@ -103,7 +103,7 @@ def graph_armature(obj, filepath, FAKE_PARENT=True, CONSTRAINTS=True, DRIVERS=Tr
parent = bone.parent
if parent:
parent_name = parent.name
- connected = bone.connected
+ connected = bone.use_connect
elif FAKE_PARENT:
parent_name = 'Object::%s' % obj.name
connected = False
diff --git a/release/scripts/modules/rigify/__init__.py b/release/scripts/modules/rigify/__init__.py
index f495406e8d8..98d9bb235a2 100644
--- a/release/scripts/modules/rigify/__init__.py
+++ b/release/scripts/modules/rigify/__init__.py
@@ -159,8 +159,8 @@ def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True):
# Not needed but catches any errors before duplicating
validate_rig(context, obj_orig)
- global_undo = context.user_preferences.edit.global_undo
- context.user_preferences.edit.global_undo = False
+ use_global_undo = context.user_preferences.edit.use_global_undo
+ context.user_preferences.edit.use_global_undo = False
mode_orig = context.mode
rest_backup = obj_orig.data.pose_position
obj_orig.data.pose_position = 'REST'
@@ -282,7 +282,7 @@ def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True):
edit_bone.head = (0.0, 0.0, 0.0)
edit_bone.tail = (0.0, 1.0, 0.0)
edit_bone.roll = 0.0
- edit_bone.layer = ROOT_LAYERS
+ edit_bone.layers = ROOT_LAYERS
bpy.ops.object.mode_set(mode='OBJECT')
# key: bone name
@@ -412,7 +412,7 @@ def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True):
else:
root_ebone_tmp = root_ebone
- ebone.connected = False
+ ebone.use_connect = False
ebone.parent = root_ebone_tmp
'''
@@ -429,7 +429,7 @@ def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True):
con.target = obj
con.subtarget = bone_name
- if not pbone.bone.connected:
+ if not pbone.bone.use_connect:
con = pbone.constraints.new('COPY_LOCATION')
con.target = obj
con.subtarget = bone_name
@@ -445,33 +445,33 @@ def generate_rig(context, obj_orig, prefix="ORG-", META_DEF=True):
layer_second_last[30] = True
for bone_name, bone in arm.bones.items():
- bone.deform = False # Non DEF bones shouldn't deform
+ bone.use_deform = False # Non DEF bones shouldn't deform
if bone_name.startswith(ORG_PREFIX):
- bone.layer = ORG_LAYERS
+ bone.layers = ORG_LAYERS
elif bone_name.startswith(MCH_PREFIX): # XXX fixme
- bone.layer = MCH_LAYERS
+ bone.layers = MCH_LAYERS
elif bone_name.startswith(DEF_PREFIX): # XXX fixme
- bone.layer = DEF_LAYERS
- bone.deform = True
+ bone.layers = DEF_LAYERS
+ bone.use_deform = True
else:
# Assign bone appearance if there is a widget for it
obj.pose.bones[bone_name].custom_shape = context.scene.objects.get(WGT_PREFIX + bone_name)
- layer_tot[:] = [max(lay) for lay in zip(layer_tot, bone.layer)]
+ layer_tot[:] = [max(lay) for lay in zip(layer_tot, bone.layers)]
# Only for demo'ing
layer_show = [a and not (b or c or d) for a, b, c, d in zip(layer_tot, ORG_LAYERS, MCH_LAYERS, DEF_LAYERS)]
- arm.layer = layer_show
+ arm.layers = layer_show
# obj.hide = True
- obj.data.draw_axes = False
+ obj.data.show_axes = False
bpy.ops.object.mode_set(mode=mode_orig)
obj_orig.data.pose_position = rest_backup
obj.data.pose_position = 'POSE'
obj_orig.data.pose_position = 'POSE'
- context.user_preferences.edit.global_undo = global_undo
+ context.user_preferences.edit.use_global_undo = use_global_undo
print("Done.\n")
@@ -548,7 +548,7 @@ def generate_test_all(context, GRAPH=False):
i = 0
for obj, obj_new in new_objects:
- obj.data.drawtype = 'STICK'
+ obj.data.draw_type = 'STICK'
obj.location[1] += i
obj_new.location[1] += i
obj_new.select = False
diff --git a/release/scripts/modules/rigify/arm_biped.py b/release/scripts/modules/rigify/arm_biped.py
index f80a617df47..ac878c3c076 100644
--- a/release/scripts/modules/rigify/arm_biped.py
+++ b/release/scripts/modules/rigify/arm_biped.py
@@ -37,24 +37,24 @@ def metarig_template():
bone.head[:] = 0.0000, -0.0425, 0.0000
bone.tail[:] = 0.0942, -0.0075, 0.0333
bone.roll = -0.2227
- bone.connected = False
+ bone.use_connect = False
bone = arm.edit_bones.new('upper_arm')
bone.head[:] = 0.1066, -0.0076, -0.0010
bone.tail[:] = 0.2855, 0.0206, -0.0104
bone.roll = 1.6152
- bone.connected = False
+ bone.use_connect = False
bone.parent = arm.edit_bones['shoulder']
bone = arm.edit_bones.new('forearm')
bone.head[:] = 0.2855, 0.0206, -0.0104
bone.tail[:] = 0.4550, -0.0076, -0.0023
bone.roll = 1.5153
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['upper_arm']
bone = arm.edit_bones.new('hand')
bone.head[:] = 0.4550, -0.0076, -0.0023
bone.tail[:] = 0.5423, -0.0146, -0.0131
bone.roll = -3.0083
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['forearm']
bpy.ops.object.mode_set(mode='OBJECT')
@@ -78,7 +78,7 @@ def metarig_definition(obj, orig_bone_name):
hands = []
for pbone in obj.pose.bones:
index = pbone.parent_index(mt.arm_p)
- if index == 2 and pbone.bone.connected and pbone.bone.parent.connected:
+ if index == 2 and pbone.bone.use_connect and pbone.bone.parent.use_connect:
hands.append(pbone)
if len(hands) != 1:
@@ -106,12 +106,12 @@ def ik(obj, definitions, base_names, options):
ik_chain = mt.copy(to_fmt="MCH-%s_ik", base_names=base_names, exclude_attrs=["shoulder"])
# IK needs no parent_index
- ik_chain.hand_e.connected = False
+ ik_chain.hand_e.use_connect = False
ik_chain.hand_e.parent = None
- ik_chain.hand_e.local_location = False
+ ik_chain.hand_e.use_local_location = False
ik_chain.rename("hand", get_base_name(base_names[mt.hand]) + "_ik" + get_side_name(mt.hand))
- ik_chain.arm_e.connected = False
+ ik_chain.arm_e.use_connect = False
ik_chain.arm_e.parent = mt.shoulder_e
# Add the bone used for the arms poll target
@@ -119,7 +119,7 @@ def ik(obj, definitions, base_names, options):
ik.pole = add_pole_target_bone(obj, mt.forearm, "elbow_target" + get_side_name(mt.forearm), mode='ZAVERAGE')
ik.update()
- ik.pole_e.local_location = False
+ ik.pole_e.use_local_location = False
# option: elbow_parent
elbow_parent_name = options.get("elbow_parent", "")
@@ -147,9 +147,9 @@ def ik(obj, definitions, base_names, options):
ik_chain.update()
# Set IK dof
- ik_chain.forearm_p.ik_dof_x = True
- ik_chain.forearm_p.ik_dof_y = False
- ik_chain.forearm_p.ik_dof_z = False
+ ik_chain.forearm_p.lock_ik_x = False
+ ik_chain.forearm_p.lock_ik_y = True
+ ik_chain.forearm_p.lock_ik_z = True
con = ik_chain.forearm_p.constraints.new('IK')
con.target = obj
@@ -161,18 +161,18 @@ def ik(obj, definitions, base_names, options):
con.use_stretch = True
con.use_target = True
con.use_rotation = False
- con.chain_length = 2
+ con.chain_count = 2
con.pole_angle = -pi/2
# last step setup layers
if "ik_layer" in options:
layer = [n==options["ik_layer"] for n in range(0,32)]
else:
- layer = list(mt.arm_b.layer)
- ik_chain.hand_b.layer = layer
- ik.hand_vis_b.layer = layer
- ik.pole_b.layer = layer
- ik.pole_vis_b.layer = layer
+ layer = list(mt.arm_b.layers)
+ ik_chain.hand_b.layers = layer
+ ik.hand_vis_b.layers = layer
+ ik.pole_b.layers = layer
+ ik.pole_vis_b.layers = layer
bpy.ops.object.mode_set(mode='EDIT')
# don't blend the shoulder
@@ -197,7 +197,7 @@ def fk(obj, definitions, base_names, options):
# upper arm constrains to this.
ex.socket_e = copy_bone_simple(arm, mt.arm, "MCH-%s_socket" % base_names[mt.arm])
ex.socket = ex.socket_e.name
- ex.socket_e.connected = False
+ ex.socket_e.use_connect = False
ex.socket_e.parent = mt.shoulder_e
ex.socket_e.length *= 0.5
@@ -206,11 +206,11 @@ def fk(obj, definitions, base_names, options):
ex.hand_delta_e = copy_bone_simple(arm, fk_chain.hand, "MCH-delta_%s" % base_names[mt.hand], parent=True)
ex.hand_delta = ex.hand_delta_e.name
ex.hand_delta_e.length *= 0.5
- ex.hand_delta_e.connected = False
+ ex.hand_delta_e.use_connect = False
if "hand_roll" in options:
ex.hand_delta_e.roll += radians(options["hand_roll"])
- fk_chain.hand_e.connected = False
+ fk_chain.hand_e.use_connect = False
fk_chain.hand_e.parent = ex.hand_delta_e
bpy.ops.object.mode_set(mode='OBJECT')
@@ -273,10 +273,10 @@ def fk(obj, definitions, base_names, options):
if "fk_layer" in options:
layer = [n==options["fk_layer"] for n in range(0,32)]
else:
- layer = list(mt.arm_b.layer)
- fk_chain.arm_b.layer = layer
- fk_chain.forearm_b.layer = layer
- fk_chain.hand_b.layer = layer
+ layer = list(mt.arm_b.layers)
+ fk_chain.arm_b.layers = layer
+ fk_chain.forearm_b.layers = layer
+ fk_chain.hand_b.layers = layer
# Forearm was getting wrong roll somehow. Hack to fix that.
bpy.ops.object.mode_set(mode='EDIT')
@@ -295,8 +295,8 @@ def deform(obj, definitions, base_names, options):
# Create upper arm bones: two bones, each half of the upper arm.
uarm1 = copy_bone_simple(obj.data, definitions[1], "DEF-%s.01" % base_names[definitions[1]], parent=True)
uarm2 = copy_bone_simple(obj.data, definitions[1], "DEF-%s.02" % base_names[definitions[1]], parent=True)
- uarm1.connected = False
- uarm2.connected = False
+ uarm1.use_connect = False
+ uarm2.use_connect = False
uarm2.parent = uarm1
center = uarm1.center
uarm1.tail = center
@@ -305,8 +305,8 @@ def deform(obj, definitions, base_names, options):
# Create forearm bones: two bones, each half of the forearm.
farm1 = copy_bone_simple(obj.data, definitions[2], "DEF-%s.01" % base_names[definitions[2]], parent=True)
farm2 = copy_bone_simple(obj.data, definitions[2], "DEF-%s.02" % base_names[definitions[2]], parent=True)
- farm1.connected = False
- farm2.connected = False
+ farm1.use_connect = False
+ farm2.use_connect = False
farm2.parent = farm1
center = farm1.center
farm1.tail = center
@@ -314,7 +314,7 @@ def deform(obj, definitions, base_names, options):
# Create twist bone
twist = copy_bone_simple(obj.data, definitions[2], "MCH-arm_twist")
- twist.connected = False
+ twist.use_connect = False
twist.parent = obj.data.edit_bones[definitions[3]]
twist.length /= 2
diff --git a/release/scripts/modules/rigify/copy.py b/release/scripts/modules/rigify/copy.py
index e0bff555a9b..c051e5bb7f6 100644
--- a/release/scripts/modules/rigify/copy.py
+++ b/release/scripts/modules/rigify/copy.py
@@ -33,7 +33,7 @@ def metarig_template():
bone.head[:] = 0.0000, 0.0000, 0.0000
bone.tail[:] = 0.0000, 0.0000, 1.0000
bone.roll = 0.0000
- bone.connected = False
+ bone.use_connect = False
bpy.ops.object.mode_set(mode='OBJECT')
pbone = obj.pose.bones['Bone']
@@ -98,7 +98,7 @@ def control(obj, definitions, base_names, options):
cp.cpy_p.lock_scale = tuple(mt.cpy_p.lock_scale)
# Layers
- cp.cpy_b.layer = list(mt.cpy_b.layer)
+ cp.cpy_b.layers = list(mt.cpy_b.layers)
return (mt.cpy,)
diff --git a/release/scripts/modules/rigify/delta.py b/release/scripts/modules/rigify/delta.py
index dce03b5f412..d0b4fbccce9 100644
--- a/release/scripts/modules/rigify/delta.py
+++ b/release/scripts/modules/rigify/delta.py
@@ -34,18 +34,18 @@ def metarig_template():
bone.head[:] = 0.0000, 0.0000, 0.0000
bone.tail[:] = -0.0000, 0.7382, 0.1895
bone.roll = -0.0000
- bone.connected = False
+ bone.use_connect = False
bone = arm.edit_bones.new('delta')
bone.head[:] = -0.0497, 0.8414, 0.3530
bone.tail[:] = -0.2511, 1.1588, 0.9653
bone.roll = 2.6044
- bone.connected = False
+ bone.use_connect = False
bone.parent = arm.edit_bones['bonesker']
bone = arm.edit_bones.new('boney')
bone.head[:] = 0.7940, 2.5592, 0.4134
bone.tail[:] = 0.7940, 3.3975, 0.4890
bone.roll = 3.1416
- bone.connected = False
+ bone.use_connect = False
bone.parent = arm.edit_bones['delta']
bpy.ops.object.mode_set(mode='OBJECT')
@@ -67,7 +67,7 @@ def metarig_definition(obj, orig_bone_name):
if len(children) != 1:
raise RigifyError("only 1 child supported for delta on bone '%s'" % delta.name)
- if delta.connected:
+ if delta.use_connect:
raise RigifyError("bone cannot be connected to its parent '%s'" % delta.name)
bone_definition = [delta.name, children[0].name]
diff --git a/release/scripts/modules/rigify/eye_balls.py b/release/scripts/modules/rigify/eye_balls.py
index 48f0448dfb3..f65d56b9f2b 100644
--- a/release/scripts/modules/rigify/eye_balls.py
+++ b/release/scripts/modules/rigify/eye_balls.py
@@ -134,7 +134,7 @@ def metarig_template():
bone.head[:] = 0.0000, 0.0000, 0.0000
bone.tail[:] = 0.0000, 0.0000, 1.0000
bone.roll = 0.0000
- bone.connected = False
+ bone.use_connect = False
bpy.ops.object.mode_set(mode='OBJECT')
pbone = obj.pose.bones['Bone']
@@ -328,8 +328,8 @@ def control(obj, definitions, base_names, options):
con.transform_channel = 'SCALE_X'
con.frame_start = -20
con.frame_end = 20
- con.minimum = 0.0
- con.maximum = 2.0
+ con.min = 0.0
+ con.max = 2.0
con.target_space = 'LOCAL'
@@ -379,15 +379,15 @@ def control(obj, definitions, base_names, options):
# Set layers
- #layer = list(bb[definitions[2]].layer)
- #bb[lid1].layer = layer
- #bb[lid2].layer = layer
- #bb[lid3].layer = layer
- #bb[lid4].layer = layer
- #bb[lid5].layer = layer
- #bb[lid6].layer = layer
- #bb[lid7].layer = layer
- #bb[lid8].layer = layer
+ #layer = list(bb[definitions[2]].layers)
+ #bb[lid1].layers = layer
+ #bb[lid2].layers = layer
+ #bb[lid3].layers = layer
+ #bb[lid4].layers = layer
+ #bb[lid5].layers = layer
+ #bb[lid6].layers = layer
+ #bb[lid7].layers = layer
+ #bb[lid8].layers = layer
return (None,)
diff --git a/release/scripts/modules/rigify/eye_lid.py b/release/scripts/modules/rigify/eye_lid.py
index bb9749011c2..3f336e268c6 100644
--- a/release/scripts/modules/rigify/eye_lid.py
+++ b/release/scripts/modules/rigify/eye_lid.py
@@ -56,7 +56,7 @@ def metarig_template():
bone.head[:] = 0.0000, 0.0000, 0.0000
bone.tail[:] = 0.0000, 0.0000, 1.0000
bone.roll = 0.0000
- bone.connected = False
+ bone.use_connect = False
bpy.ops.object.mode_set(mode='OBJECT')
pbone = obj.pose.bones['Bone']
@@ -148,10 +148,10 @@ def deform(obj, definitions, base_names, options):
eb[dlid3].parent = eb[dlid4]
eb[dlid33].parent = eb[dlid3]
- eb[dlid2].connected = True
- eb[dlid22].connected = True
- eb[dlid3].connected = True
- eb[dlid33].connected = True
+ eb[dlid2].use_connect = True
+ eb[dlid22].use_connect = True
+ eb[dlid3].use_connect = True
+ eb[dlid33].use_connect = True
eb[dlid1].bbone_segments = 8
eb[dlid2].bbone_segments = 8
@@ -170,10 +170,10 @@ def deform(obj, definitions, base_names, options):
eb[dlid7].parent = eb[dlid8]
eb[dlid77].parent = eb[dlid7]
- eb[dlid6].connected = True
- eb[dlid66].connected = True
- eb[dlid7].connected = True
- eb[dlid77].connected = True
+ eb[dlid6].use_connect = True
+ eb[dlid66].use_connect = True
+ eb[dlid7].use_connect = True
+ eb[dlid77].use_connect = True
eb[dlid5].bbone_segments = 8
eb[dlid6].bbone_segments = 8
@@ -436,8 +436,8 @@ def control(obj, definitions, base_names, options):
con.transform_channel = 'LOCATION_Y'
con.frame_start = -30
con.frame_end = 30
- con.minimum = -distance*2
- con.maximum = distance
+ con.min = -distance*2
+ con.max = distance
con.target_space = 'LOCAL'
fcurve = con.driver_add("influence")
driver = fcurve.driver
@@ -455,8 +455,8 @@ def control(obj, definitions, base_names, options):
con.transform_channel = 'LOCATION_Y'
con.frame_start = -30
con.frame_end = 30
- con.minimum = -distance*2
- con.maximum = distance
+ con.min = -distance*2
+ con.max = distance
con.target_space = 'LOCAL'
fcurve = con.driver_add("influence")
driver = fcurve.driver
@@ -473,8 +473,8 @@ def control(obj, definitions, base_names, options):
con.transform_channel = 'LOCATION_Y'
con.frame_start = -30
con.frame_end = 30
- con.minimum = -distance*2
- con.maximum = distance
+ con.min = -distance*2
+ con.max = distance
con.target_space = 'LOCAL'
fcurve = con.driver_add("influence")
driver = fcurve.driver
@@ -491,8 +491,8 @@ def control(obj, definitions, base_names, options):
con.transform_channel = 'LOCATION_Y'
con.frame_start = -30
con.frame_end = 30
- con.minimum = -distance*2
- con.maximum = distance
+ con.min = -distance*2
+ con.max = distance
con.target_space = 'LOCAL'
fcurve = con.driver_add("influence")
driver = fcurve.driver
@@ -509,8 +509,8 @@ def control(obj, definitions, base_names, options):
con.transform_channel = 'LOCATION_Y'
con.frame_start = -30
con.frame_end = 30
- con.minimum = -distance*2
- con.maximum = distance
+ con.min = -distance*2
+ con.max = distance
con.target_space = 'LOCAL'
fcurve = con.driver_add("influence")
driver = fcurve.driver
@@ -528,8 +528,8 @@ def control(obj, definitions, base_names, options):
con.transform_channel = 'LOCATION_Y'
con.frame_start = -30
con.frame_end = 30
- con.minimum = -distance
- con.maximum = distance*2
+ con.min = -distance
+ con.max = distance*2
con.target_space = 'LOCAL'
fcurve = con.driver_add("influence")
driver = fcurve.driver
@@ -546,8 +546,8 @@ def control(obj, definitions, base_names, options):
con.transform_channel = 'LOCATION_Y'
con.frame_start = -30
con.frame_end = 30
- con.minimum = -distance
- con.maximum = distance*2
+ con.min = -distance
+ con.max = distance*2
con.target_space = 'LOCAL'
fcurve = con.driver_add("influence")
driver = fcurve.driver
@@ -564,8 +564,8 @@ def control(obj, definitions, base_names, options):
con.transform_channel = 'LOCATION_Y'
con.frame_start = -30
con.frame_end = 30
- con.minimum = -distance
- con.maximum = distance*2
+ con.min = -distance
+ con.max = distance*2
con.target_space = 'LOCAL'
fcurve = con.driver_add("influence")
driver = fcurve.driver
@@ -582,8 +582,8 @@ def control(obj, definitions, base_names, options):
con.transform_channel = 'LOCATION_Y'
con.frame_start = -30
con.frame_end = 30
- con.minimum = -distance
- con.maximum = distance*2
+ con.min = -distance
+ con.max = distance*2
con.target_space = 'LOCAL'
fcurve = con.driver_add("influence")
driver = fcurve.driver
@@ -600,8 +600,8 @@ def control(obj, definitions, base_names, options):
con.transform_channel = 'LOCATION_Y'
con.frame_start = -30
con.frame_end = 30
- con.minimum = -distance
- con.maximum = distance*2
+ con.min = -distance
+ con.max = distance*2
con.target_space = 'LOCAL'
fcurve = con.driver_add("influence")
driver = fcurve.driver
@@ -615,15 +615,15 @@ def control(obj, definitions, base_names, options):
# Set layers
- layer = list(bb[definitions[2]].layer)
- bb[lid1].layer = layer
- bb[lid2].layer = layer
- bb[lid3].layer = layer
- bb[lid4].layer = layer
- bb[lid5].layer = layer
- bb[lid6].layer = layer
- bb[lid7].layer = layer
- bb[lid8].layer = layer
+ layer = list(bb[definitions[2]].layers)
+ bb[lid1].layers = layer
+ bb[lid2].layers = layer
+ bb[lid3].layers = layer
+ bb[lid4].layers = layer
+ bb[lid5].layers = layer
+ bb[lid6].layers = layer
+ bb[lid7].layers = layer
+ bb[lid8].layers = layer
return (None,)
@@ -648,7 +648,7 @@ def make_lid_stretch_bone(obj, name, bone1, bone2, roll_alpha):
# Create the bone, pointing from bone1 to bone2
bone_e = copy_bone_simple(obj.data, bone1, name, parent=True)
- bone_e.connected = False
+ bone_e.use_connect = False
bone_e.tail = eb[bone2].head
bone = bone_e.name
diff --git a/release/scripts/modules/rigify/finger_curl.py b/release/scripts/modules/rigify/finger_curl.py
index 63f1816012b..947ec75c9f8 100644
--- a/release/scripts/modules/rigify/finger_curl.py
+++ b/release/scripts/modules/rigify/finger_curl.py
@@ -35,18 +35,18 @@ def metarig_template():
bone.head[:] = 0.0000, 0.0000, 0.0000
bone.tail[:] = 0.0353, -0.0184, -0.0053
bone.roll = -2.8722
- bone.connected = False
+ bone.use_connect = False
bone = arm.edit_bones.new('finger.02')
bone.head[:] = 0.0353, -0.0184, -0.0053
bone.tail[:] = 0.0702, -0.0364, -0.0146
bone.roll = -2.7099
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['finger.01']
bone = arm.edit_bones.new('finger.03')
bone.head[:] = 0.0702, -0.0364, -0.0146
bone.tail[:] = 0.0903, -0.0461, -0.0298
bone.roll = -2.1709
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['finger.02']
bpy.ops.object.mode_set(mode='OBJECT')
@@ -84,8 +84,8 @@ def deform(obj, definitions, base_names, options):
# Create base digit bones: two bones, each half of the base digit.
f1a = copy_bone_simple(obj.data, definitions[0], "DEF-%s.01" % base_names[definitions[0]], parent=True)
f1b = copy_bone_simple(obj.data, definitions[0], "DEF-%s.02" % base_names[definitions[0]], parent=True)
- f1a.connected = False
- f1b.connected = False
+ f1a.use_connect = False
+ f1b.use_connect = False
f1b.parent = f1a
center = f1a.center
f1a.tail = center
@@ -182,7 +182,7 @@ def main(obj, bone_definition, base_names, options):
else:
tot_len = eb[org_f1].length + eb[org_f2].length
control = copy_bone_simple(arm, bone_definition[0], base_name + get_side_name(base_names[bone_definition[0]]), parent=True).name
- eb[control].connected = eb[org_f1].connected
+ eb[control].use_connect = eb[org_f1].use_connect
eb[control].parent = eb[org_f1].parent
eb[control].length = tot_len
@@ -203,12 +203,12 @@ def main(obj, bone_definition, base_names, options):
# Set parents of the bones, interleaving the driver bones with the secondary control bones
if three_digits:
- eb[f3].connected = False
- eb[df3].connected = False
- eb[f2].connected = False
- eb[df2].connected = False
- eb[f1].connected = False
- eb[df1].connected = eb[org_f1].connected
+ eb[f3].use_connect = False
+ eb[df3].use_connect = False
+ eb[f2].use_connect = False
+ eb[df2].use_connect = False
+ eb[f1].use_connect = False
+ eb[df1].use_connect = eb[org_f1].use_connect
if three_digits:
eb[f3].parent = eb[df3]
@@ -223,7 +223,7 @@ def main(obj, bone_definition, base_names, options):
socket = copy_bone_simple(arm, org_f1, "MCH-socket_"+control, parent=True).name
hinge = copy_bone_simple(arm, eb[org_f1].parent.name, "MCH-hinge_"+control).name
- eb[control].connected = False
+ eb[control].use_connect = False
eb[control].parent = eb[hinge]
# Create the deform rig while we're still in edit mode
@@ -362,16 +362,16 @@ def main(obj, bone_definition, base_names, options):
if "ex_layer" in options:
layer = [n==options["ex_layer"] for n in range(0,32)]
else:
- layer = list(arm.bones[bone_definition[0]].layer)
+ layer = list(arm.bones[bone_definition[0]].layers)
#for bone_name in [f1, f2, f3]:
- # arm.bones[bone_name].layer = layer
- arm.bones[f1].layer = layer
- arm.bones[f2].layer = layer
+ # arm.bones[bone_name].layers = layer
+ arm.bones[f1].layers = layer
+ arm.bones[f2].layers = layer
if three_digits:
- arm.bones[f3].layer = layer
+ arm.bones[f3].layers = layer
- layer = list(arm.bones[bone_definition[0]].layer)
- bb[control].layer = layer
+ layer = list(arm.bones[bone_definition[0]].layers)
+ bb[control].layers = layer
# no blending the result of this
return None
diff --git a/release/scripts/modules/rigify/leg_biped.py b/release/scripts/modules/rigify/leg_biped.py
index 53028986873..d2ddba9f549 100644
--- a/release/scripts/modules/rigify/leg_biped.py
+++ b/release/scripts/modules/rigify/leg_biped.py
@@ -36,36 +36,36 @@ def metarig_template():
bone.head[:] = 0.0000, 0.0000, 0.0000
bone.tail[:] = 0.0000, 0.0000, 0.2506
bone.roll = 0.0000
- bone.connected = False
+ bone.use_connect = False
bone = arm.edit_bones.new('thigh')
bone.head[:] = 0.1253, 0.0000, -0.0000
bone.tail[:] = 0.0752, -0.0251, -0.4260
bone.roll = 0.1171
- bone.connected = False
+ bone.use_connect = False
bone.parent = arm.edit_bones['hips']
bone = arm.edit_bones.new('shin')
bone.head[:] = 0.0752, -0.0251, -0.4260
bone.tail[:] = 0.0752, 0.0000, -0.8771
bone.roll = 0.0000
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['thigh']
bone = arm.edit_bones.new('foot')
bone.head[:] = 0.0752, 0.0000, -0.8771
bone.tail[:] = 0.1013, -0.1481, -0.9773
bone.roll = -0.4662
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['shin']
bone = arm.edit_bones.new('toe')
bone.head[:] = 0.1013, -0.1481, -0.9773
bone.tail[:] = 0.1100, -0.2479, -0.9773
bone.roll = 3.1416
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['foot']
bone = arm.edit_bones.new('heel')
bone.head[:] = 0.0652, 0.0501, -1.0024
bone.tail[:] = 0.0927, -0.1002, -1.0024
bone.roll = 0.0000
- bone.connected = False
+ bone.use_connect = False
bone.parent = arm.edit_bones['foot']
bpy.ops.object.mode_set(mode='OBJECT')
@@ -109,11 +109,11 @@ def metarig_definition(obj, orig_bone_name):
if len(children) != 2:
raise RigifyError("expected the foot bone:'%s' to have 2 children" % bone.name)
- if children[0].connected == children[1].connected:
+ if children[0].use_connect == children[1].use_connect:
raise RigifyError("expected one bone to be connected")
toe, heel = children
- if heel.connected:
+ if heel.use_connect:
toe, heel = heel, toe
@@ -154,7 +154,7 @@ def ik(obj, bone_definition, base_names, options):
ik.foot_e = copy_bone_simple(arm, mt.heel, base_foot_name + "_ik" + get_side_name(base_names[mt_chain.foot]))
ik.foot = ik.foot_e.name
ik.foot_e.translate(mt_chain.foot_e.head - ik.foot_e.head)
- ik.foot_e.local_location = False
+ ik.foot_e.use_local_location = False
# foot roll: heel pointing backwards, half length
ik.foot_roll_e = copy_bone_simple(arm, mt.heel, base_foot_name + "_roll" + get_side_name(base_names[mt_chain.foot]))
@@ -180,11 +180,11 @@ def ik(obj, bone_definition, base_names, options):
# rename 'MCH-toe' --> to 'toe_ik' and make the child of ik.foot_roll_01
# ------------------ FK or IK?
ik_chain.rename("toe", get_base_name(base_names[mt_chain.toe]) + "_ik" + get_side_name(base_names[mt_chain.toe]))
- ik_chain.toe_e.connected = False
+ ik_chain.toe_e.use_connect = False
ik_chain.toe_e.parent = ik.foot_roll_01_e
# re-parent ik_chain.foot to the
- ik_chain.foot_e.connected = False
+ ik_chain.foot_e.use_connect = False
ik_chain.foot_e.parent = ik.foot_roll_02_e
@@ -198,7 +198,7 @@ def ik(obj, bone_definition, base_names, options):
ik.knee_target_e.translate(offset)
ik.knee_target_e.length *= 0.5
ik.knee_target_e.parent = ik.foot_e
- ik.knee_target_e.local_location = False
+ ik.knee_target_e.use_local_location = False
# roll the bone to point up... could also point in the same direction as ik.foot_roll
# ik.foot_roll_02_e.matrix * Vector((0.0, 0.0, 1.0)) # ACK!, no rest matrix in editmode
@@ -211,9 +211,9 @@ def ik(obj, bone_definition, base_names, options):
ik_chain.update()
# Set IK dof
- ik_chain.shin_p.ik_dof_x = True
- ik_chain.shin_p.ik_dof_y = False
- ik_chain.shin_p.ik_dof_z = False
+ ik_chain.shin_p.lock_ik_x = False
+ ik_chain.shin_p.lock_ik_y = True
+ ik_chain.shin_p.lock_ik_z = True
# Set rotation modes and axis locks
ik.foot_roll_p.rotation_mode = 'XYZ'
@@ -225,7 +225,7 @@ def ik(obj, bone_definition, base_names, options):
# IK
con = ik_chain.shin_p.constraints.new('IK')
- con.chain_length = 2
+ con.chain_count = 2
con.iterations = 500
con.pole_angle = -pi / 2.0
con.use_tail = True
@@ -256,22 +256,22 @@ def ik(obj, bone_definition, base_names, options):
con.owner_space = 'LOCAL'
if con_l is cons[-1][-1]:
- con.minimum_x = 0.0
- con.maximum_x = 180.0 # XXX -deg
+ con.min_x = 0.0
+ con.max_x = 180.0 # XXX -deg
else:
- con.minimum_x = -180.0 # XXX -deg
- con.maximum_x = 0.0
+ con.min_x = -180.0 # XXX -deg
+ con.max_x = 0.0
# last step setup layers
if "ik_layer" in options:
layer = [n == options["ik_layer"] for n in range(0, 32)]
else:
- layer = list(mt_chain.thigh_b.layer)
+ layer = list(mt_chain.thigh_b.layers)
for attr in ik_chain.attr_names:
- getattr(ik_chain, attr + "_b").layer = layer
+ getattr(ik_chain, attr + "_b").layers = layer
for attr in ik.attr_names:
- getattr(ik, attr + "_b").layer = layer
+ getattr(ik, attr + "_b").layers = layer
bpy.ops.object.mode_set(mode='EDIT')
@@ -312,11 +312,11 @@ def fk(obj, bone_definition, base_names, options):
foot = foot_e.name
foot_e.translate(mt_chain.foot_e.head - foot_e.head)
foot_e.parent = fk_chain.shin_e
- foot_e.connected = fk_chain.foot_e.connected
- fk_chain.foot_e.connected = False
+ foot_e.use_connect = fk_chain.foot_e.use_connect
+ fk_chain.foot_e.use_connect = False
fk_chain.foot_e.parent = foot_e
- fk_chain.thigh_e.connected = False
+ fk_chain.thigh_e.use_connect = False
fk_chain.thigh_e.parent = ex.thigh_hinge_e
bpy.ops.object.mode_set(mode='OBJECT')
@@ -370,12 +370,12 @@ def fk(obj, bone_definition, base_names, options):
if "fk_layer" in options:
layer = [n == options["fk_layer"] for n in range(0, 32)]
else:
- layer = list(mt_chain.thigh_b.layer)
+ layer = list(mt_chain.thigh_b.layers)
for attr in fk_chain.attr_names:
- getattr(fk_chain, attr + "_b").layer = layer
+ getattr(fk_chain, attr + "_b").layers = layer
for attr in ex.attr_names:
- getattr(ex, attr + "_b").layer = layer
- arm.bones[foot].layer = layer
+ getattr(ex, attr + "_b").layers = layer
+ arm.bones[foot].layers = layer
bpy.ops.object.mode_set(mode='EDIT')
@@ -390,8 +390,8 @@ def deform(obj, definitions, base_names, options):
# Create upper leg bones: two bones, each half of the upper leg.
uleg1 = copy_bone_simple(obj.data, definitions[1], "DEF-%s.01" % base_names[definitions[1]], parent=True)
uleg2 = copy_bone_simple(obj.data, definitions[1], "DEF-%s.02" % base_names[definitions[1]], parent=True)
- uleg1.connected = False
- uleg2.connected = False
+ uleg1.use_connect = False
+ uleg2.use_connect = False
uleg2.parent = uleg1
center = uleg1.center
uleg1.tail = center
@@ -400,8 +400,8 @@ def deform(obj, definitions, base_names, options):
# Create lower leg bones: two bones, each half of the lower leg.
lleg1 = copy_bone_simple(obj.data, definitions[2], "DEF-%s.01" % base_names[definitions[2]], parent=True)
lleg2 = copy_bone_simple(obj.data, definitions[2], "DEF-%s.02" % base_names[definitions[2]], parent=True)
- lleg1.connected = False
- lleg2.connected = False
+ lleg1.use_connect = False
+ lleg2.use_connect = False
lleg2.parent = lleg1
center = lleg1.center
lleg1.tail = center
@@ -410,7 +410,7 @@ def deform(obj, definitions, base_names, options):
# Create a bone for the second lower leg deform bone to twist with
twist = copy_bone_simple(obj.data, lleg2.name, "MCH-leg_twist")
twist.length /= 4
- twist.connected = False
+ twist.use_connect = False
twist.parent = obj.data.edit_bones[definitions[3]]
# Create foot bone
diff --git a/release/scripts/modules/rigify/leg_quadruped.py b/release/scripts/modules/rigify/leg_quadruped.py
index 688387bbd53..739a6402c4b 100644
--- a/release/scripts/modules/rigify/leg_quadruped.py
+++ b/release/scripts/modules/rigify/leg_quadruped.py
@@ -37,30 +37,30 @@ def metarig_template():
bone.head[:] = -0.0728, -0.2427, 0.0000
bone.tail[:] = -0.0728, -0.2427, 0.2427
bone.roll = 0.0000
- bone.connected = False
+ bone.use_connect = False
bone = arm.edit_bones.new('thigh')
bone.head[:] = 0.0000, 0.0000, -0.0000
bone.tail[:] = 0.0813, -0.2109, -0.3374
bone.roll = -0.4656
- bone.connected = False
+ bone.use_connect = False
bone.parent = arm.edit_bones['body']
bone = arm.edit_bones.new('shin')
bone.head[:] = 0.0813, -0.2109, -0.3374
bone.tail[:] = 0.0714, -0.0043, -0.5830
bone.roll = -0.2024
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['thigh']
bone = arm.edit_bones.new('foot')
bone.head[:] = 0.0714, -0.0043, -0.5830
bone.tail[:] = 0.0929, -0.0484, -0.7652
bone.roll = -0.3766
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['shin']
bone = arm.edit_bones.new('toe')
bone.head[:] = 0.0929, -0.0484, -0.7652
bone.tail[:] = 0.1146, -0.1244, -0.7652
bone.roll = -0.0000
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['foot']
bpy.ops.object.mode_set(mode='OBJECT')
@@ -120,7 +120,7 @@ def ik(obj, bone_definition, base_names, options):
ik_chain = mt_chain.copy(to_fmt="MCH-%s.ik", base_names=base_names)
- ik_chain.thigh_e.connected = False
+ ik_chain.thigh_e.use_connect = False
ik_chain.thigh_e.parent = mt.hips_e
ik_chain.foot_e.parent = None
@@ -128,10 +128,10 @@ def ik(obj, bone_definition, base_names, options):
ik_chain.rename("toe", get_base_name(base_names[bone_definition[4]]) + "_ik" + get_side_name(base_names[bone_definition[4]]))
# keep the foot_ik as the parent
- ik_chain.toe_e.connected = False
+ ik_chain.toe_e.use_connect = False
# Foot uses pose space, not local space, for translation
- ik_chain.foot_e.local_location = False
+ ik_chain.foot_e.use_local_location = False
# must be after disconnecting the toe
ik_chain.foot_e.align_orientation(mt_chain.toe_e)
@@ -141,7 +141,7 @@ def ik(obj, bone_definition, base_names, options):
# knee rotator
knee_rotator = copy_bone_simple(arm, mt_chain.toe, "knee_rotator" + get_side_name(base_names[mt_chain.foot]), parent=True).name
- eb[knee_rotator].connected = False
+ eb[knee_rotator].use_connect = False
eb[knee_rotator].parent = eb[mt.hips]
eb[knee_rotator].head = eb[ik_chain.thigh].head
eb[knee_rotator].tail = eb[knee_rotator].head + eb[mt_chain.toe].vector
@@ -156,7 +156,7 @@ def ik(obj, bone_definition, base_names, options):
# then align it with the foot but reverse direction.
ik.foot_roll_e = copy_bone_simple(arm, mt_chain.toe, get_base_name(base_names[mt_chain.foot]) + "_roll" + get_side_name(base_names[mt_chain.foot]))
ik.foot_roll = ik.foot_roll_e.name
- ik.foot_roll_e.connected = False
+ ik.foot_roll_e.use_connect = False
ik.foot_roll_e.parent = ik_chain.foot_e
ik.foot_roll_e.head -= mt_chain.toe_e.vector.normalize() * mt_chain.foot_e.length
ik.foot_roll_e.tail = ik.foot_roll_e.head - (mt_chain.foot_e.vector.normalize() * mt_chain.toe_e.length)
@@ -175,7 +175,7 @@ def ik(obj, bone_definition, base_names, options):
ik.foot_target_e.parent = ik.foot_roll_01_e
ik.foot_target_e.align_orientation(ik_chain.foot_e)
ik.foot_target_e.length = ik_chain.foot_e.length / 2.0
- ik.foot_target_e.connected = True
+ ik.foot_target_e.use_connect = True
# MCH-foot.02 child of MCH-foot
ik.foot_roll_02_e = copy_bone_simple(arm, mt_chain.foot, "MCH-%s_02" % base_names[mt_chain.foot])
@@ -268,7 +268,7 @@ def ik(obj, bone_definition, base_names, options):
# IK
con = ik_chain.shin_p.constraints.new('IK')
- con.chain_length = 2
+ con.chain_count = 2
con.iterations = 500
con.pole_angle = -90.0 # XXX - in deg!
con.use_tail = True
@@ -289,12 +289,12 @@ def ik(obj, bone_definition, base_names, options):
if "ik_layer" in options:
layer = [n==options["ik_layer"] for n in range(0,32)]
else:
- layer = list(mt_chain.thigh_b.layer)
+ layer = list(mt_chain.thigh_b.layers)
for attr in ik_chain.attr_names:
- obj.data.bones[getattr(ik_chain, attr)].layer = layer
+ obj.data.bones[getattr(ik_chain, attr)].layers = layer
for attr in ik.attr_names:
- obj.data.bones[getattr(ik, attr)].layer = layer
- obj.data.bones[knee_rotator].layer = layer
+ obj.data.bones[getattr(ik, attr)].layers = layer
+ obj.data.bones[knee_rotator].layers = layer
return None, ik_chain.thigh, ik_chain.shin, ik_chain.foot, ik_chain.toe
@@ -325,7 +325,7 @@ def fk(obj, bone_definition, base_names, options):
eb[hinge].length = eb[mt.hips].length / 2
# Make leg child of hinge
- eb[fk_chain.thigh].connected = False
+ eb[fk_chain.thigh].use_connect = False
eb[fk_chain.thigh].parent = eb[hinge]
@@ -396,8 +396,8 @@ def deform(obj, definitions, base_names, options):
# Create upper leg bones: two bones, each half of the upper leg.
uleg1 = copy_bone_simple(obj.data, definitions[1], "DEF-%s.01" % base_names[definitions[1]], parent=True)
uleg2 = copy_bone_simple(obj.data, definitions[1], "DEF-%s.02" % base_names[definitions[1]], parent=True)
- uleg1.connected = False
- uleg2.connected = False
+ uleg1.use_connect = False
+ uleg2.use_connect = False
uleg2.parent = uleg1
center = uleg1.center
uleg1.tail = center
@@ -406,8 +406,8 @@ def deform(obj, definitions, base_names, options):
# Create lower leg bones: two bones, each half of the lower leg.
lleg1 = copy_bone_simple(obj.data, definitions[2], "DEF-%s.01" % base_names[definitions[2]], parent=True)
lleg2 = copy_bone_simple(obj.data, definitions[2], "DEF-%s.02" % base_names[definitions[2]], parent=True)
- lleg1.connected = False
- lleg2.connected = False
+ lleg1.use_connect = False
+ lleg2.use_connect = False
lleg2.parent = lleg1
center = lleg1.center
lleg1.tail = center
@@ -416,7 +416,7 @@ def deform(obj, definitions, base_names, options):
# Create a bone for the second lower leg deform bone to twist with
twist = copy_bone_simple(obj.data, lleg2.name, "MCH-leg_twist")
twist.length /= 4
- twist.connected = False
+ twist.use_connect = False
twist.parent = obj.data.edit_bones[definitions[3]]
# Create foot bone
diff --git a/release/scripts/modules/rigify/mouth.py b/release/scripts/modules/rigify/mouth.py
index d516a48ec95..ce232b91e7b 100644
--- a/release/scripts/modules/rigify/mouth.py
+++ b/release/scripts/modules/rigify/mouth.py
@@ -93,7 +93,7 @@ def metarig_template():
bone.head[:] = 0.0000, 0.0000, 0.0000
bone.tail[:] = 0.0000, 0.0000, 1.0000
bone.roll = 0.0000
- bone.connected = False
+ bone.use_connect = False
bpy.ops.object.mode_set(mode='OBJECT')
pbone = obj.pose.bones['Bone']
@@ -151,8 +151,8 @@ def deform(obj, definitions, base_names, options):
eb[spread_l_2].tail = eb[definitions[5]].head
eb[spread_l_1].roll = 0
eb[spread_l_2].roll = 0
- eb[spread_l_1].connected = False
- eb[spread_l_2].connected = False
+ eb[spread_l_1].use_connect = False
+ eb[spread_l_2].use_connect = False
eb[spread_l_1].parent = eb[definitions[6]]
eb[spread_l_2].parent = eb[definitions[6]]
@@ -162,8 +162,8 @@ def deform(obj, definitions, base_names, options):
eb[spread_r_2].tail = eb[definitions[3]].head
eb[spread_r_1].roll = 0
eb[spread_r_2].roll = 0
- eb[spread_r_1].connected = False
- eb[spread_r_2].connected = False
+ eb[spread_r_1].use_connect = False
+ eb[spread_r_2].use_connect = False
eb[spread_r_1].parent = eb[definitions[2]]
eb[spread_r_2].parent = eb[definitions[2]]
@@ -171,7 +171,7 @@ def deform(obj, definitions, base_names, options):
# Jaw open bones (for driving corrective shape keys)
jopen1 = copy_bone_simple(obj.data, jaw, "MCH-"+base_names[jaw]+".track1", parent=True).name
- eb[jopen1].connected = False
+ eb[jopen1].use_connect = False
eb[jopen1].head = eb[jaw].tail
eb[jopen1].tail = eb[jopen1].head + Vector((0, 0, eb[jaw].length/4))
@@ -426,7 +426,7 @@ def control(obj, definitions, base_names, options):
# Jaw open tracker
jopent = copy_bone_simple(obj.data, jaw_e.name, "MCH-"+base_names[jaw_e.name]+".track", parent=True).name
- eb[jopent].connected = False
+ eb[jopent].use_connect = False
eb[jopent].tail = jaw_e.tail + Vector((0.0, 0.0, jaw_e.length))
eb[jopent].head = jaw_e.tail
@@ -458,7 +458,7 @@ def control(obj, definitions, base_names, options):
con.target = obj
con.subtarget = jaw
con.head_tail = 1.0
- con.original_length = bb[jopent].length
+ con.rest_length = bb[jopent].length
con.volume = 'NO_VOLUME'
# Head lips to jaw lips
@@ -545,8 +545,8 @@ def control(obj, definitions, base_names, options):
con.transform_channel = 'SCALE_Y'
con.frame_start = 0
con.frame_end = 60
- con.minimum = 0.0
- con.maximum = 1.0
+ con.min = 0.0
+ con.max = 1.0
con.target_space = 'LOCAL'
fcurve = con.driver_add("influence")
driver = fcurve.driver
@@ -563,8 +563,8 @@ def control(obj, definitions, base_names, options):
con.transform_channel = 'SCALE_Y'
con.frame_start = 0
con.frame_end = 60
- con.minimum = 0.0
- con.maximum = 1.0
+ con.min = 0.0
+ con.max = 1.0
con.target_space = 'LOCAL'
fcurve = con.driver_add("influence")
driver = fcurve.driver
@@ -581,8 +581,8 @@ def control(obj, definitions, base_names, options):
con.transform_channel = 'SCALE_Y'
con.frame_start = 0
con.frame_end = 60
- con.minimum = 0.0
- con.maximum = 1.0
+ con.min = 0.0
+ con.max = 1.0
con.target_space = 'LOCAL'
fcurve = con.driver_add("influence")
driver = fcurve.driver
@@ -599,8 +599,8 @@ def control(obj, definitions, base_names, options):
con.transform_channel = 'SCALE_Y'
con.frame_start = 0
con.frame_end = 60
- con.minimum = 0.0
- con.maximum = 1.0
+ con.min = 0.0
+ con.max = 1.0
con.target_space = 'LOCAL'
fcurve = con.driver_add("influence")
driver = fcurve.driver
@@ -617,8 +617,8 @@ def control(obj, definitions, base_names, options):
con.transform_channel = 'SCALE_Y'
con.frame_start = 0
con.frame_end = 60
- con.minimum = 0.0
- con.maximum = 1.0
+ con.min = 0.0
+ con.max = 1.0
con.target_space = 'LOCAL'
fcurve = con.driver_add("influence")
driver = fcurve.driver
@@ -635,8 +635,8 @@ def control(obj, definitions, base_names, options):
con.transform_channel = 'SCALE_Y'
con.frame_start = 0
con.frame_end = 60
- con.minimum = 0.0
- con.maximum = 1.0
+ con.min = 0.0
+ con.max = 1.0
con.target_space = 'LOCAL'
fcurve = con.driver_add("influence")
driver = fcurve.driver
@@ -653,8 +653,8 @@ def control(obj, definitions, base_names, options):
con.transform_channel = 'SCALE_Y'
con.frame_start = 0
con.frame_end = 60
- con.minimum = 0.0
- con.maximum = 1.0
+ con.min = 0.0
+ con.max = 1.0
con.target_space = 'LOCAL'
fcurve = con.driver_add("influence")
driver = fcurve.driver
@@ -671,8 +671,8 @@ def control(obj, definitions, base_names, options):
con.transform_channel = 'SCALE_Y'
con.frame_start = 0
con.frame_end = 60
- con.minimum = 0.0
- con.maximum = 1.0
+ con.min = 0.0
+ con.max = 1.0
con.target_space = 'LOCAL'
fcurve = con.driver_add("influence")
driver = fcurve.driver
@@ -684,15 +684,15 @@ def control(obj, definitions, base_names, options):
# Set layers
- layer = list(bb[definitions[2]].layer)
- bb[lip1].layer = layer
- bb[lip2].layer = layer
- bb[lip3].layer = layer
- bb[lip4].layer = layer
- bb[lip5].layer = layer
- bb[lip6].layer = layer
- bb[lip7].layer = layer
- bb[lip8].layer = layer
+ layer = list(bb[definitions[2]].layers)
+ bb[lip1].layers = layer
+ bb[lip2].layers = layer
+ bb[lip3].layers = layer
+ bb[lip4].layers = layer
+ bb[lip5].layers = layer
+ bb[lip6].layers = layer
+ bb[lip7].layers = layer
+ bb[lip8].layers = layer
return (None,)
@@ -717,7 +717,7 @@ def make_lip_stretch_bone(obj, name, bone1, bone2, roll_alpha):
# Create the bone, pointing from bone1 to bone2
bone_e = copy_bone_simple(obj.data, bone1, name, parent=True)
- bone_e.connected = False
+ bone_e.use_connect = False
bone_e.tail = eb[bone2].head
bone = bone_e.name
diff --git a/release/scripts/modules/rigify/neck.py b/release/scripts/modules/rigify/neck.py
index 0d2ab25bcc9..56717f0ebb0 100644
--- a/release/scripts/modules/rigify/neck.py
+++ b/release/scripts/modules/rigify/neck.py
@@ -35,42 +35,42 @@ def metarig_template():
#bone.head[:] = 0.0000, -0.0276, -0.1328
#bone.tail[:] = 0.0000, -0.0170, -0.0197
#bone.roll = 0.0000
- #bone.connected = False
+ #bone.use_connect = False
#bone = arm.edit_bones.new('head')
#bone.head[:] = 0.0000, -0.0170, -0.0197
#bone.tail[:] = 0.0000, 0.0726, 0.1354
#bone.roll = 0.0000
- #bone.connected = True
+ #bone.use_connect = True
#bone.parent = arm.edit_bones['body']
#bone = arm.edit_bones.new('neck.01')
#bone.head[:] = 0.0000, -0.0170, -0.0197
#bone.tail[:] = 0.0000, -0.0099, 0.0146
#bone.roll = 0.0000
- #bone.connected = False
+ #bone.use_connect = False
#bone.parent = arm.edit_bones['head']
#bone = arm.edit_bones.new('neck.02')
#bone.head[:] = 0.0000, -0.0099, 0.0146
#bone.tail[:] = 0.0000, -0.0242, 0.0514
#bone.roll = 0.0000
- #bone.connected = True
+ #bone.use_connect = True
#bone.parent = arm.edit_bones['neck.01']
#bone = arm.edit_bones.new('neck.03')
#bone.head[:] = 0.0000, -0.0242, 0.0514
#bone.tail[:] = 0.0000, -0.0417, 0.0868
#bone.roll = 0.0000
- #bone.connected = True
+ #bone.use_connect = True
#bone.parent = arm.edit_bones['neck.02']
#bone = arm.edit_bones.new('neck.04')
#bone.head[:] = 0.0000, -0.0417, 0.0868
#bone.tail[:] = 0.0000, -0.0509, 0.1190
#bone.roll = 0.0000
- #bone.connected = True
+ #bone.use_connect = True
#bone.parent = arm.edit_bones['neck.03']
#bone = arm.edit_bones.new('neck.05')
#bone.head[:] = 0.0000, -0.0509, 0.1190
#bone.tail[:] = 0.0000, -0.0537, 0.1600
#bone.roll = 0.0000
- #bone.connected = True
+ #bone.use_connect = True
#bone.parent = arm.edit_bones['neck.04']
#
#bpy.ops.object.mode_set(mode='OBJECT')
@@ -330,13 +330,13 @@ def main(obj, bone_definition, base_names, options):
if "ex_layer" in options:
layer = [n==options["ex_layer"] for n in range(0,32)]
else:
- layer = list(arm.bones[bone_definition[1]].layer)
+ layer = list(arm.bones[bone_definition[1]].layers)
for bone in neck:
- bb[bone].layer = layer
+ bb[bone].layers = layer
- layer = list(arm.bones[bone_definition[1]].layer)
- bb[neck_ctrl].layer = layer
- bb[head_ctrl].layer = layer
+ layer = list(arm.bones[bone_definition[1]].layers)
+ bb[neck_ctrl].layers = layer
+ bb[head_ctrl].layers = layer
# no blending the result of this
diff --git a/release/scripts/modules/rigify/neck_flex.py b/release/scripts/modules/rigify/neck_flex.py
index 08f963434d1..1ab14e281b9 100644
--- a/release/scripts/modules/rigify/neck_flex.py
+++ b/release/scripts/modules/rigify/neck_flex.py
@@ -36,42 +36,42 @@ def metarig_template():
bone.head[:] = 0.0000, -0.0276, -0.1328
bone.tail[:] = 0.0000, -0.0170, -0.0197
bone.roll = 0.0000
- bone.connected = False
+ bone.use_connect = False
bone = arm.edit_bones.new('head')
bone.head[:] = 0.0000, -0.0170, -0.0197
bone.tail[:] = 0.0000, 0.0726, 0.1354
bone.roll = 0.0000
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['body']
bone = arm.edit_bones.new('neck.01')
bone.head[:] = 0.0000, -0.0170, -0.0197
bone.tail[:] = 0.0000, -0.0099, 0.0146
bone.roll = 0.0000
- bone.connected = False
+ bone.use_connect = False
bone.parent = arm.edit_bones['head']
bone = arm.edit_bones.new('neck.02')
bone.head[:] = 0.0000, -0.0099, 0.0146
bone.tail[:] = 0.0000, -0.0242, 0.0514
bone.roll = 0.0000
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['neck.01']
bone = arm.edit_bones.new('neck.03')
bone.head[:] = 0.0000, -0.0242, 0.0514
bone.tail[:] = 0.0000, -0.0417, 0.0868
bone.roll = 0.0000
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['neck.02']
bone = arm.edit_bones.new('neck.04')
bone.head[:] = 0.0000, -0.0417, 0.0868
bone.tail[:] = 0.0000, -0.0509, 0.1190
bone.roll = 0.0000
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['neck.03']
bone = arm.edit_bones.new('neck.05')
bone.head[:] = 0.0000, -0.0509, 0.1190
bone.tail[:] = 0.0000, -0.0537, 0.1600
bone.roll = 0.0000
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['neck.04']
bpy.ops.object.mode_set(mode='OBJECT')
@@ -156,7 +156,7 @@ def main(obj, bone_definition, base_names, options):
# Copy the head bone and offset
ex.head_e = copy_bone_simple(arm, mt.head, "MCH-%s" % base_names[mt.head], parent=True)
- ex.head_e.connected = False
+ ex.head_e.use_connect = False
ex.head = ex.head_e.name
# offset
head_length = ex.head_e.length
@@ -165,7 +165,7 @@ def main(obj, bone_definition, base_names, options):
# Yes, use the body bone but call it a head hinge
ex.head_hinge_e = copy_bone_simple(arm, mt.body, "MCH-%s_hinge" % base_names[mt.head], parent=False)
- ex.head_hinge_e.connected = False
+ ex.head_hinge_e.use_connect = False
ex.head_hinge = ex.head_hinge_e.name
ex.head_hinge_e.head.y += head_length / 4.0
ex.head_hinge_e.tail.y += head_length / 4.0
@@ -173,7 +173,7 @@ def main(obj, bone_definition, base_names, options):
# Insert the neck socket, the head copys this loation
ex.neck_socket_e = arm.edit_bones.new("MCH-%s_socked" % neck_chain_basename)
ex.neck_socket = ex.neck_socket_e.name
- ex.neck_socket_e.connected = False
+ ex.neck_socket_e.use_connect = False
ex.neck_socket_e.parent = mt.body_e
ex.neck_socket_e.head = mt.head_e.head
ex.neck_socket_e.tail = mt.head_e.head - Vector((0.0, neck_chain_segment_length / 2.0, 0.0))
@@ -195,9 +195,9 @@ def main(obj, bone_definition, base_names, options):
neck_e_parent.roll = mt.head_e.roll
orig_parent = neck_e.parent
- neck_e.connected = False
+ neck_e.use_connect = False
neck_e.parent = neck_e_parent
- neck_e_parent.connected = False
+ neck_e_parent.use_connect = False
if i == 0:
neck_e_parent.parent = mt.body_e
@@ -334,14 +334,14 @@ def main(obj, bone_definition, base_names, options):
if "ex_layer" in options:
layer = [n == options["ex_layer"] for n in range(0, 32)]
else:
- layer = list(arm.bones[bone_definition[1]].layer)
+ layer = list(arm.bones[bone_definition[1]].layers)
for attr in ex_chain.attr_names:
- getattr(ex_chain, attr + "_b").layer = layer
+ getattr(ex_chain, attr + "_b").layers = layer
for attr in ex.attr_names:
- getattr(ex, attr + "_b").layer = layer
+ getattr(ex, attr + "_b").layers = layer
- layer = list(arm.bones[bone_definition[1]].layer)
- ex.head_ctrl_b.layer = layer
+ layer = list(arm.bones[bone_definition[1]].layers)
+ ex.head_ctrl_b.layers = layer
# no blending the result of this
diff --git a/release/scripts/modules/rigify/palm_curl.py b/release/scripts/modules/rigify/palm_curl.py
index 2bdd28a348a..369d6928e45 100644
--- a/release/scripts/modules/rigify/palm_curl.py
+++ b/release/scripts/modules/rigify/palm_curl.py
@@ -35,42 +35,42 @@ def metarig_template():
bone.head[:] = 0.0004, -0.0629, 0.0000
bone.tail[:] = 0.0021, -0.0209, 0.0000
bone.roll = 0.0000
- bone.connected = False
+ bone.use_connect = False
bone = arm.edit_bones.new('palm.03')
bone.head[:] = -0.0000, 0.0000, 0.0000
bone.tail[:] = 0.0025, 0.0644, -0.0065
bone.roll = -3.1396
- bone.connected = False
+ bone.use_connect = False
bone.parent = arm.edit_bones['hand']
bone = arm.edit_bones.new('palm.02')
bone.head[:] = 0.0252, -0.0000, 0.0000
bone.tail[:] = 0.0324, 0.0627, -0.0065
bone.roll = -3.1357
- bone.connected = False
+ bone.use_connect = False
bone.parent = arm.edit_bones['hand']
bone = arm.edit_bones.new('palm.01')
bone.head[:] = 0.0504, 0.0000, 0.0000
bone.tail[:] = 0.0703, 0.0508, -0.0065
bone.roll = -3.1190
- bone.connected = False
+ bone.use_connect = False
bone.parent = arm.edit_bones['hand']
bone = arm.edit_bones.new('palm.04')
bone.head[:] = -0.0252, 0.0000, 0.0000
bone.tail[:] = -0.0286, 0.0606, -0.0065
bone.roll = 3.1386
- bone.connected = False
+ bone.use_connect = False
bone.parent = arm.edit_bones['hand']
bone = arm.edit_bones.new('palm.05')
bone.head[:] = -0.0504, 0.0000, 0.0000
bone.tail[:] = -0.0669, 0.0534, -0.0065
bone.roll = 3.1239
- bone.connected = False
+ bone.use_connect = False
bone.parent = arm.edit_bones['hand']
bone = arm.edit_bones.new('thumb')
bone.head[:] = 0.0682, -0.0148, 0.0000
bone.tail[:] = 0.1063, 0.0242, -0.0065
bone.roll = -3.0929
- bone.connected = False
+ bone.use_connect = False
bone.parent = arm.edit_bones['hand']
bpy.ops.object.mode_set(mode='OBJECT')
@@ -263,7 +263,7 @@ def main(obj, bone_definition, base_names, options):
# last step setup layers
- arm.bones[control_name].layer = list(arm.bones[bone_definition[1]].layer)
+ arm.bones[control_name].layers = list(arm.bones[bone_definition[1]].layers)
# no blending the result of this
diff --git a/release/scripts/modules/rigify/shape_key_control.py b/release/scripts/modules/rigify/shape_key_control.py
index ac3987ca7e1..1bfca60255d 100644
--- a/release/scripts/modules/rigify/shape_key_control.py
+++ b/release/scripts/modules/rigify/shape_key_control.py
@@ -74,7 +74,7 @@ def metarig_template():
#bone.head[:] = 0.0000, 0.0000, 0.0000
#bone.tail[:] = 0.0000, 0.0000, 1.0000
#bone.roll = 0.0000
- #bone.connected = False
+ #bone.use_connect = False
#
#bpy.ops.object.mode_set(mode='OBJECT')
#pbone = obj.pose.bones['Bone']
diff --git a/release/scripts/modules/rigify/shape_key_distance.py b/release/scripts/modules/rigify/shape_key_distance.py
index 06dd3d67d4b..7d69517216f 100644
--- a/release/scripts/modules/rigify/shape_key_distance.py
+++ b/release/scripts/modules/rigify/shape_key_distance.py
@@ -71,7 +71,7 @@ def metarig_template():
bone.head[:] = 0.0000, 0.0000, 0.0000
bone.tail[:] = 0.0000, 0.0000, 1.0000
bone.roll = 0.0000
- bone.connected = False
+ bone.use_connect = False
bpy.ops.object.mode_set(mode='OBJECT')
pbone = obj.pose.bones['Bone']
diff --git a/release/scripts/modules/rigify/shape_key_rotdiff.py b/release/scripts/modules/rigify/shape_key_rotdiff.py
index 7049bcf74bb..dfc3b914a6a 100644
--- a/release/scripts/modules/rigify/shape_key_rotdiff.py
+++ b/release/scripts/modules/rigify/shape_key_rotdiff.py
@@ -71,7 +71,7 @@ def metarig_template():
bone.head[:] = 0.0000, 0.0000, 0.0000
bone.tail[:] = 0.0000, 0.0000, 1.0000
bone.roll = 0.0000
- bone.connected = False
+ bone.use_connect = False
bpy.ops.object.mode_set(mode='OBJECT')
pbone = obj.pose.bones['Bone']
diff --git a/release/scripts/modules/rigify/spine_pivot_flex.py b/release/scripts/modules/rigify/spine_pivot_flex.py
index c4c9886e2e2..645ee4045cc 100644
--- a/release/scripts/modules/rigify/spine_pivot_flex.py
+++ b/release/scripts/modules/rigify/spine_pivot_flex.py
@@ -36,54 +36,54 @@ def metarig_template():
bone.head[:] = 0.0000, -0.0306, 0.1039
bone.tail[:] = 0.0000, -0.0306, -0.0159
bone.roll = 0.0000
- bone.connected = False
+ bone.use_connect = False
bone = arm.edit_bones.new('rib_cage')
bone.head[:] = 0.0000, -0.0306, 0.1039
bone.tail[:] = 0.0000, -0.0306, 0.2236
bone.roll = -0.0000
- bone.connected = False
+ bone.use_connect = False
bone.parent = arm.edit_bones['pelvis']
bone = arm.edit_bones.new('spine.01')
bone.head[:] = 0.0000, 0.0000, -0.0000
bone.tail[:] = 0.0000, -0.0306, 0.1039
bone.roll = -0.0000
- bone.connected = False
+ bone.use_connect = False
bone.parent = arm.edit_bones['rib_cage']
bone = arm.edit_bones.new('spine.02')
bone.head[:] = 0.0000, -0.0306, 0.1039
bone.tail[:] = -0.0000, -0.0398, 0.2045
bone.roll = -0.0000
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['spine.01']
bone = arm.edit_bones.new('spine.03')
bone.head[:] = -0.0000, -0.0398, 0.2045
bone.tail[:] = -0.0000, -0.0094, 0.2893
bone.roll = -0.0000
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['spine.02']
bone = arm.edit_bones.new('spine.04')
bone.head[:] = -0.0000, -0.0094, 0.2893
bone.tail[:] = -0.0000, 0.0335, 0.3595
bone.roll = -0.0000
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['spine.03']
bone = arm.edit_bones.new('spine.05')
bone.head[:] = -0.0000, 0.0335, 0.3595
bone.tail[:] = -0.0000, 0.0555, 0.4327
bone.roll = -0.0000
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['spine.04']
bone = arm.edit_bones.new('spine.06')
bone.head[:] = -0.0000, 0.0555, 0.4327
bone.tail[:] = -0.0000, 0.0440, 0.5207
bone.roll = -0.0000
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['spine.05']
bone = arm.edit_bones.new('spine.07')
bone.head[:] = -0.0000, 0.0440, 0.5207
bone.tail[:] = -0.0000, 0.0021, 0.5992
bone.roll = -0.0000
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['spine.06']
bpy.ops.object.mode_set(mode='OBJECT')
@@ -172,7 +172,7 @@ def main(obj, bone_definition, base_names, options):
ex.pelvis_copy_e = copy_bone_simple(arm, mt.pelvis, base_names[mt.pelvis]) # no parent
ex.pelvis_copy = ex.pelvis_copy_e.name
- ex.pelvis_copy_e.local_location = False
+ ex.pelvis_copy_e.use_local_location = False
# copy the pelvis, offset to make MCH-spine_rotate and MCH-ribcage_hinge
ex.ribcage_hinge_e = copy_bone_simple(arm, mt.pelvis, "MCH-%s_hinge" % base_names[mt.ribcage])
@@ -182,7 +182,7 @@ def main(obj, bone_definition, base_names, options):
ex.spine_rotate_e = copy_bone_simple(arm, mt.ribcage, "MCH-%s_rotate" % spine_chain_basename)
ex.spine_rotate = ex.spine_rotate_e.name
ex.spine_rotate_e.translate(Vector((0.0, spine_chain_segment_length / 2.0, 0.0)))
- ex.spine_rotate_e.connected = False
+ ex.spine_rotate_e.use_connect = False
ex.spine_rotate_e.parent = ex.pelvis_copy_e
@@ -191,7 +191,7 @@ def main(obj, bone_definition, base_names, options):
ex.ribcage_copy_e = copy_bone_simple(arm, mt.ribcage, base_names[mt.ribcage])
ex.ribcage_copy = ex.ribcage_copy_e.name
- ex.ribcage_copy_e.connected = False
+ ex.ribcage_copy_e.use_connect = False
ex.ribcage_copy_e.parent = ex.ribcage_hinge_e
spine_chain = [child.name for child in spine_chain]
@@ -219,7 +219,7 @@ def main(obj, bone_definition, base_names, options):
ebone = copy_bone_simple(arm, child_name, "MCH-rev_%s" % child_name_orig)
setattr(rv_chain, attr, ebone.name)
- ebone.connected = False
+ ebone.use_connect = False
mt_chain.update()
ex_chain.update()
@@ -230,7 +230,7 @@ def main(obj, bone_definition, base_names, options):
attr = ex_chain.attr_names[i] + "_e"
ebone = getattr(ex_chain, attr)
if i == 0:
- ebone.connected = False
+ ebone.use_connect = False
ebone.parent = ex.pelvis_copy_e
else:
attr_parent = ex_chain.attr_names[i - 1] + "_e"
@@ -255,9 +255,9 @@ def main(obj, bone_definition, base_names, options):
spine_e = getattr(ex_chain, ex_chain.attr_names[i] + "_e")
orig_parent = spine_e.parent
- spine_e.connected = False
+ spine_e.use_connect = False
spine_e.parent = spine_e_parent
- spine_e_parent.connected = False
+ spine_e_parent.use_connect = False
spine_e_parent.parent = orig_parent
@@ -465,17 +465,17 @@ def main(obj, bone_definition, base_names, options):
if "ex_layer" in options:
layer = [n == options["ex_layer"] for n in range(0, 32)]
else:
- layer = list(arm.bones[bone_definition[1]].layer)
+ layer = list(arm.bones[bone_definition[1]].layers)
for attr in ex.attr_names:
- getattr(ex, attr + "_b").layer = layer
+ getattr(ex, attr + "_b").layers = layer
for attr in ex_chain.attr_names:
- getattr(ex_chain, attr + "_b").layer = layer
+ getattr(ex_chain, attr + "_b").layers = layer
for attr in rv_chain.attr_names:
- getattr(rv_chain, attr + "_b").layer = layer
+ getattr(rv_chain, attr + "_b").layers = layer
- layer = list(arm.bones[bone_definition[1]].layer)
- arm.bones[ex.pelvis_copy].layer = layer
- arm.bones[ex.ribcage_copy].layer = layer
+ layer = list(arm.bones[bone_definition[1]].layers)
+ arm.bones[ex.pelvis_copy].layers = layer
+ arm.bones[ex.ribcage_copy].layers = layer
# no support for blending chains
return None
diff --git a/release/scripts/modules/rigify/stretch.py b/release/scripts/modules/rigify/stretch.py
index 1c3d317b4b1..6a498e5aa29 100644
--- a/release/scripts/modules/rigify/stretch.py
+++ b/release/scripts/modules/rigify/stretch.py
@@ -35,7 +35,7 @@ RIG_TYPE = "stretch"
# bone.head[:] = 0.0000, 0.0000, 0.0000
# bone.tail[:] = 0.0000, 0.0000, 1.0000
# bone.roll = 0.0000
-# bone.connected = False
+# bone.use_connect = False
#
# bpy.ops.object.mode_set(mode='OBJECT')
# pbone = obj.pose.bones['Bone']
@@ -84,7 +84,7 @@ def main(obj, bone_definition, base_names, options):
mbone2 = "ORG-" + options["to"]
bone_e = copy_bone_simple(obj.data, mbone1, "DEF-%s" % base_names[bone_definition[0]])
- bone_e.connected = False
+ bone_e.use_connect = False
bone_e.parent = eb[mbone1]
bone_e.tail = eb[mbone2].head
bone = bone_e.name
@@ -100,7 +100,7 @@ def main(obj, bone_definition, base_names, options):
con = pb[bone].constraints.new('STRETCH_TO')
con.target = obj
con.subtarget = mbone2
- con.original_length = bb[bone].length
+ con.rest_length = bb[bone].length
if preserve_volume:
con.volume = 'VOLUME_XZX'
else:
diff --git a/release/scripts/modules/rigify/stretch_twist.py b/release/scripts/modules/rigify/stretch_twist.py
index 66719d80d42..07ce031967f 100644
--- a/release/scripts/modules/rigify/stretch_twist.py
+++ b/release/scripts/modules/rigify/stretch_twist.py
@@ -35,7 +35,7 @@ RIG_TYPE = "stretch_twist"
# bone.head[:] = 0.0000, 0.0000, 0.0000
# bone.tail[:] = 0.0000, 0.0000, 1.0000
# bone.roll = 0.0000
-# bone.connected = False
+# bone.use_connect = False
#
# bpy.ops.object.mode_set(mode='OBJECT')
# pbone = obj.pose.bones['Bone']
@@ -86,20 +86,20 @@ def main(obj, bone_definition, base_names, options):
mbone2 = "ORG-" + options["to"]
bone_e = copy_bone_simple(obj.data, mbone1, "MCH-%s" % base_names[bone_definition[0]])
- bone_e.connected = False
+ bone_e.use_connect = False
bone_e.parent = None
bone_e.head = (eb[mbone1].head + eb[mbone2].head) / 2
bone_e.tail = (bone_e.head[0], bone_e.head[1], bone_e.head[2]+0.1)
mid_bone = bone_e.name
bone_e = copy_bone_simple(obj.data, mbone1, "DEF-%s.01" % base_names[bone_definition[0]])
- bone_e.connected = False
+ bone_e.use_connect = False
bone_e.parent = eb[mbone1]
bone_e.tail = eb[mid_bone].head
bone1 = bone_e.name
bone_e = copy_bone_simple(obj.data, mbone2, "DEF-%s.02" % base_names[bone_definition[0]])
- bone_e.connected = False
+ bone_e.use_connect = False
bone_e.parent = eb[mbone2]
bone_e.tail = eb[mid_bone].head
bone2 = bone_e.name
@@ -128,7 +128,7 @@ def main(obj, bone_definition, base_names, options):
con = pb[bone1].constraints.new('STRETCH_TO')
con.target = obj
con.subtarget = mid_bone
- con.original_length = bb[bone1].length
+ con.rest_length = bb[bone1].length
if preserve_volume:
con.volume = 'VOLUME_XZX'
else:
@@ -142,7 +142,7 @@ def main(obj, bone_definition, base_names, options):
con = pb[bone2].constraints.new('STRETCH_TO')
con.target = obj
con.subtarget = mid_bone
- con.original_length = bb[bone2].length
+ con.rest_length = bb[bone2].length
if preserve_volume:
con.volume = 'VOLUME_XZX'
else:
diff --git a/release/scripts/modules/rigify/tail_control.py b/release/scripts/modules/rigify/tail_control.py
index a629487c0c8..50a9bb236da 100644
--- a/release/scripts/modules/rigify/tail_control.py
+++ b/release/scripts/modules/rigify/tail_control.py
@@ -40,7 +40,7 @@ def metarig_template():
#bone.head[:] = 0.0000, -0.0306, 0.1039
#bone.tail[:] = 0.0000, -0.0306, -0.0159
#bone.roll = 0.0000
- #bone.connected = False
+ #bone.use_connect = False
#bpy.ops.object.mode_set(mode='OBJECT')
#pbone = obj.pose.bones['tail.01']
@@ -85,9 +85,9 @@ def main(obj, bone_definitions, base_names, options):
for bone_def in bone_definitions:
bone = copy_bone_simple(arm, bone_def, base_names[bone_def], parent=True).name
if i == 1: # Don't change parent of first tail bone
- eb[bone].connected = False
+ eb[bone].use_connect = False
eb[bone].parent = eb[hinge2]
- eb[bone].local_location = False
+ eb[bone].use_local_location = False
i = 1
bones += [bone]
diff --git a/release/scripts/modules/rigify/tongue.py b/release/scripts/modules/rigify/tongue.py
index b6dfe756b71..fd32f3d0556 100644
--- a/release/scripts/modules/rigify/tongue.py
+++ b/release/scripts/modules/rigify/tongue.py
@@ -37,42 +37,42 @@ def metarig_template():
#bone.head[:] = 0.0000, -0.0276, -0.1328
#bone.tail[:] = 0.0000, -0.0170, -0.0197
#bone.roll = 0.0000
- #bone.connected = False
+ #bone.use_connect = False
#bone = arm.edit_bones.new('head')
#bone.head[:] = 0.0000, -0.0170, -0.0197
#bone.tail[:] = 0.0000, 0.0726, 0.1354
#bone.roll = 0.0000
- #bone.connected = True
+ #bone.use_connect = True
#bone.parent = arm.edit_bones['body']
#bone = arm.edit_bones.new('neck.01')
#bone.head[:] = 0.0000, -0.0170, -0.0197
#bone.tail[:] = 0.0000, -0.0099, 0.0146
#bone.roll = 0.0000
- #bone.connected = False
+ #bone.use_connect = False
#bone.parent = arm.edit_bones['head']
#bone = arm.edit_bones.new('neck.02')
#bone.head[:] = 0.0000, -0.0099, 0.0146
#bone.tail[:] = 0.0000, -0.0242, 0.0514
#bone.roll = 0.0000
- #bone.connected = True
+ #bone.use_connect = True
#bone.parent = arm.edit_bones['neck.01']
#bone = arm.edit_bones.new('neck.03')
#bone.head[:] = 0.0000, -0.0242, 0.0514
#bone.tail[:] = 0.0000, -0.0417, 0.0868
#bone.roll = 0.0000
- #bone.connected = True
+ #bone.use_connect = True
#bone.parent = arm.edit_bones['neck.02']
#bone = arm.edit_bones.new('neck.04')
#bone.head[:] = 0.0000, -0.0417, 0.0868
#bone.tail[:] = 0.0000, -0.0509, 0.1190
#bone.roll = 0.0000
- #bone.connected = True
+ #bone.use_connect = True
#bone.parent = arm.edit_bones['neck.03']
#bone = arm.edit_bones.new('neck.05')
#bone.head[:] = 0.0000, -0.0509, 0.1190
#bone.tail[:] = 0.0000, -0.0537, 0.1600
#bone.roll = 0.0000
- #bone.connected = True
+ #bone.use_connect = True
#bone.parent = arm.edit_bones['neck.04']
#
#bpy.ops.object.mode_set(mode='OBJECT')
@@ -159,7 +159,7 @@ def main(obj, bone_definition, base_names, options):
# Copy the head bone and offset
ex.head_e = copy_bone_simple(arm, mt.head, "MCH-%s" % base_names[mt.head], parent=True)
- ex.head_e.connected = False
+ ex.head_e.use_connect = False
ex.head = ex.head_e.name
# offset
head_length = ex.head_e.length
@@ -168,7 +168,7 @@ def main(obj, bone_definition, base_names, options):
# Yes, use the body bone but call it a head hinge
ex.head_hinge_e = copy_bone_simple(arm, mt.body, "MCH-%s_hinge" % base_names[mt.head], parent=False)
- ex.head_hinge_e.connected = False
+ ex.head_hinge_e.use_connect = False
ex.head_hinge = ex.head_hinge_e.name
ex.head_hinge_e.head.y += head_length / 4.0
ex.head_hinge_e.tail.y += head_length / 4.0
@@ -176,7 +176,7 @@ def main(obj, bone_definition, base_names, options):
# Insert the neck socket, the head copys this loation
ex.neck_socket_e = arm.edit_bones.new("MCH-%s_socked" % neck_chain_basename)
ex.neck_socket = ex.neck_socket_e.name
- ex.neck_socket_e.connected = False
+ ex.neck_socket_e.use_connect = False
ex.neck_socket_e.parent = mt.body_e
ex.neck_socket_e.head = mt.head_e.head
ex.neck_socket_e.tail = mt.head_e.head - Vector((0.0, neck_chain_segment_length / 2.0, 0.0))
@@ -198,9 +198,9 @@ def main(obj, bone_definition, base_names, options):
neck_e_parent.roll = mt.head_e.roll
orig_parent = neck_e.parent
- neck_e.connected = False
+ neck_e.use_connect = False
neck_e.parent = neck_e_parent
- neck_e_parent.connected = False
+ neck_e_parent.use_connect = False
if i == 0:
neck_e_parent.parent = mt.body_e
@@ -346,14 +346,14 @@ def main(obj, bone_definition, base_names, options):
if "ex_layer" in options:
layer = [n==options["ex_layer"] for n in range(0,32)]
else:
- layer = list(arm.bones[bone_definition[1]].layer)
+ layer = list(arm.bones[bone_definition[1]].layers)
for attr in ex_chain.attr_names:
- getattr(ex_chain, attr + "_b").layer = layer
+ getattr(ex_chain, attr + "_b").layers = layer
for attr in ex.attr_names:
- getattr(ex, attr + "_b").layer = layer
+ getattr(ex, attr + "_b").layers = layer
- layer = list(arm.bones[bone_definition[1]].layer)
- ex.head_ctrl_b.layer = layer
+ layer = list(arm.bones[bone_definition[1]].layers)
+ ex.head_ctrl_b.layers = layer
# no blending the result of this
diff --git a/release/scripts/modules/rigify/track_dual.py b/release/scripts/modules/rigify/track_dual.py
index 38c2a86ab32..f9c48a3bfcb 100644
--- a/release/scripts/modules/rigify/track_dual.py
+++ b/release/scripts/modules/rigify/track_dual.py
@@ -35,7 +35,7 @@ RIG_TYPE = "track_dual"
# bone.head[:] = 0.0000, 0.0000, 0.0000
# bone.tail[:] = 0.0000, 0.0000, 1.0000
# bone.roll = 0.0000
-# bone.connected = False
+# bone.use_connect = False
#
# bpy.ops.object.mode_set(mode='OBJECT')
# pbone = obj.pose.bones['Bone']
@@ -76,13 +76,13 @@ def main(obj, bone_definition, base_names, options):
mbone2 = "ORG-" + options["to"]
bone_e = copy_bone_simple(obj.data, mbone1, "DEF-%s.01" % base_names[bone_definition[0]])
- bone_e.connected = False
+ bone_e.use_connect = False
bone_e.parent = eb[mbone1]
bone_e.tail = (eb[mbone1].head + eb[mbone2].head) / 2
bone1 = bone_e.name
bone_e = copy_bone_simple(obj.data, mbone2, "DEF-%s.02" % base_names[bone_definition[0]])
- bone_e.connected = False
+ bone_e.use_connect = False
bone_e.parent = eb[mbone1]
bone_e.tail = (eb[mbone1].head + eb[mbone2].head) / 2
bone2 = bone_e.name
diff --git a/release/scripts/modules/rigify/track_reverse.py b/release/scripts/modules/rigify/track_reverse.py
index 21d38c28920..a65ac0e9416 100644
--- a/release/scripts/modules/rigify/track_reverse.py
+++ b/release/scripts/modules/rigify/track_reverse.py
@@ -35,7 +35,7 @@ RIG_TYPE = "track_reverse"
# bone.head[:] = 0.0000, 0.0000, 0.0000
# bone.tail[:] = 0.0000, 0.0000, 1.0000
# bone.roll = 0.0000
-# bone.connected = False
+# bone.use_connect = False
#
# bpy.ops.object.mode_set(mode='OBJECT')
# pbone = obj.pose.bones['Bone']
@@ -78,7 +78,7 @@ def main(obj, bone_definition, base_names, options):
mbone2 = "ORG-" + options["to"]
bone_e = copy_bone_simple(obj.data, mbone2, "DEF-%s.02" % base_names[bone_definition[0]])
- bone_e.connected = False
+ bone_e.use_connect = False
bone_e.parent = eb[mbone1]
bone_e.tail = eb[mbone1].head
bone = bone_e.name
diff --git a/release/scripts/modules/rigify_utils.py b/release/scripts/modules/rigify_utils.py
index 25ab6bebf48..a270af949da 100644
--- a/release/scripts/modules/rigify_utils.py
+++ b/release/scripts/modules/rigify_utils.py
@@ -67,7 +67,7 @@ def add_stretch_to(obj, from_name, to_name, name):
con = stretch_pbone.constraints.new('STRETCH_TO')
con.target = obj
con.subtarget = to_name
- con.original_length = (head - tail).length
+ con.rest_length = (head - tail).length
con.keep_axis = 'PLANE_X'
con.volume = 'NO_VOLUME'
@@ -81,13 +81,13 @@ def copy_bone_simple(arm, from_bone, name, parent=False):
ebone_new = arm.edit_bones.new(name)
if parent:
- ebone_new.connected = ebone.connected
+ ebone_new.use_connect = ebone.use_connect
ebone_new.parent = ebone.parent
ebone_new.head = ebone.head
ebone_new.tail = ebone.tail
ebone_new.roll = ebone.roll
- ebone_new.layer = list(ebone.layer)
+ ebone_new.layers = list(ebone.layers)
return ebone_new
@@ -276,7 +276,7 @@ def write_meta_rig(obj, func_name="metarig_template"):
code.append(" bone.head[:] = %.4f, %.4f, %.4f" % bone.head.to_tuple(4))
code.append(" bone.tail[:] = %.4f, %.4f, %.4f" % bone.tail.to_tuple(4))
code.append(" bone.roll = %.4f" % bone.roll)
- code.append(" bone.connected = %s" % str(bone.connected))
+ code.append(" bone.use_connect = %s" % str(bone.use_connect))
if bone.parent:
code.append(" bone.parent = arm.edit_bones['%s']" % bone.parent.name)
diff --git a/release/scripts/modules/rna_info.py b/release/scripts/modules/rna_info.py
index 5d769d01641..0a93121c559 100644
--- a/release/scripts/modules/rna_info.py
+++ b/release/scripts/modules/rna_info.py
@@ -302,6 +302,7 @@ class InfoFunctionRNA:
self.identifier = rna_func.identifier
# self.name = rna_func.name # functions have no name!
self.description = rna_func.description.strip()
+ self.is_classmethod = not rna_func.use_self
self.args = []
self.return_values = ()
@@ -313,7 +314,7 @@ class InfoFunctionRNA:
for rna_prop in rna_func.parameters.values():
prop = GetInfoPropertyRNA(rna_prop, parent_id)
- if rna_prop.use_output:
+ if rna_prop.is_output:
self.return_values.append(prop)
else:
self.args.append(prop)
@@ -594,7 +595,7 @@ def BuildRNAInfo():
op_mods = dir(bpy.ops)
for op_mod_name in sorted(op_mods):
- if op_mod_name.startswith('__') or op_mod_name in ("add", "remove"):
+ if op_mod_name.startswith('__'):
continue
op_mod = getattr(bpy.ops, op_mod_name)
@@ -636,12 +637,17 @@ if __name__ == "__main__":
for prop_id, prop in sorted(props):
# if prop.type == 'boolean':
# continue
- data.append("%s.%s -> %s: %s%s %s" % (struct_id_str, prop.identifier, prop.identifier, prop.type, ", (read-only)" if prop.is_readonly else "", prop.description))
+ prop_type = prop.type
+ if prop.array_length > 0:
+ prop_type += "[%d]" % prop.array_length
+
+ data.append("%s.%s -> %s: %s%s %s" % (struct_id_str, prop.identifier, prop.identifier, prop_type, ", (read-only)" if prop.is_readonly else "", prop.description))
data.sort()
if bpy.app.background:
import sys
sys.stderr.write("\n".join(data))
+ sys.stderr.write("\n\nEOF\n")
else:
text = bpy.data.texts.new(name="api.py")
text.from_string(data)
diff --git a/release/scripts/op/add_armature_human.py b/release/scripts/op/add_armature_human.py
index 5d6ec1f559f..e0558e84315 100644
--- a/release/scripts/op/add_armature_human.py
+++ b/release/scripts/op/add_armature_human.py
@@ -33,426 +33,426 @@ def metarig_template():
bone.head[:] = -0.0000, -0.0145, 1.1263
bone.tail[:] = -0.0000, -0.0145, 0.9563
bone.roll = 3.1416
- bone.connected = False
+ bone.use_connect = False
bone = arm.edit_bones.new('torso')
bone.head[:] = -0.0000, -0.0145, 1.1263
bone.tail[:] = -0.0000, -0.0145, 1.2863
bone.roll = 3.1416
- bone.connected = False
+ bone.use_connect = False
bone.parent = arm.edit_bones['pelvis']
bone = arm.edit_bones.new('spine.01')
bone.head[:] = 0.0000, 0.0394, 0.9688
bone.tail[:] = -0.0000, -0.0145, 1.1263
bone.roll = 0.0000
- bone.connected = False
+ bone.use_connect = False
bone.parent = arm.edit_bones['torso']
bone = arm.edit_bones.new('spine.02')
bone.head[:] = -0.0000, -0.0145, 1.1263
bone.tail[:] = -0.0000, -0.0213, 1.2884
bone.roll = -0.0000
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['spine.01']
bone = arm.edit_bones.new('thigh.L')
bone.head[:] = 0.0933, -0.0421, 1.0434
bone.tail[:] = 0.0933, -0.0516, 0.5848
bone.roll = 0.0000
- bone.connected = False
+ bone.use_connect = False
bone.parent = arm.edit_bones['spine.01']
bone = arm.edit_bones.new('thigh.R')
bone.head[:] = -0.0933, -0.0421, 1.0434
bone.tail[:] = -0.0933, -0.0516, 0.5848
bone.roll = -0.0000
- bone.connected = False
+ bone.use_connect = False
bone.parent = arm.edit_bones['spine.01']
bone = arm.edit_bones.new('spine.03')
bone.head[:] = -0.0000, -0.0213, 1.2884
bone.tail[:] = -0.0000, 0.0160, 1.3705
bone.roll = -0.0000
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['spine.02']
bone = arm.edit_bones.new('shin.L')
bone.head[:] = 0.0933, -0.0516, 0.5848
bone.tail[:] = 0.0915, 0.0100, 0.1374
bone.roll = 0.0034
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['thigh.L']
bone = arm.edit_bones.new('shin.R')
bone.head[:] = -0.0933, -0.0516, 0.5848
bone.tail[:] = -0.0915, 0.0100, 0.1374
bone.roll = -0.0034
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['thigh.R']
bone = arm.edit_bones.new('spine.04')
bone.head[:] = -0.0000, 0.0160, 1.3705
bone.tail[:] = -0.0000, 0.0590, 1.4497
bone.roll = -0.0000
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['spine.03']
bone = arm.edit_bones.new('foot.L')
bone.head[:] = 0.0915, 0.0100, 0.1374
bone.tail[:] = 0.1033, -0.0968, 0.0510
bone.roll = 2.8964
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['shin.L']
bone = arm.edit_bones.new('foot.R')
bone.head[:] = -0.0915, 0.0100, 0.1374
bone.tail[:] = -0.1033, -0.0968, 0.0510
bone.roll = -2.8793
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['shin.R']
bone = arm.edit_bones.new('neck_base')
bone.head[:] = -0.0000, 0.0590, 1.4497
bone.tail[:] = -0.0000, 0.0401, 1.5389
bone.roll = -0.0000
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['spine.04']
bone = arm.edit_bones.new('toe.L')
bone.head[:] = 0.1033, -0.0968, 0.0510
bone.tail[:] = 0.1136, -0.1848, 0.0510
bone.roll = 0.0001
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['foot.L']
bone = arm.edit_bones.new('heel.L')
bone.head[:] = 0.0809, 0.0969, -0.0000
bone.tail[:] = 0.1020, -0.0846, -0.0000
bone.roll = -0.0001
- bone.connected = False
+ bone.use_connect = False
bone.parent = arm.edit_bones['foot.L']
bone = arm.edit_bones.new('toe.R')
bone.head[:] = -0.1033, -0.0968, 0.0510
bone.tail[:] = -0.1136, -0.1848, 0.0510
bone.roll = -0.0002
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['foot.R']
bone = arm.edit_bones.new('heel.R')
bone.head[:] = -0.0809, 0.0969, -0.0000
bone.tail[:] = -0.1020, -0.0846, -0.0000
bone.roll = -0.0000
- bone.connected = False
+ bone.use_connect = False
bone.parent = arm.edit_bones['foot.R']
bone = arm.edit_bones.new('head')
bone.head[:] = -0.0000, 0.0401, 1.5389
bone.tail[:] = -0.0000, 0.0401, 1.5979
bone.roll = 3.1416
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['neck_base']
bone = arm.edit_bones.new('DLT-shoulder.L')
bone.head[:] = 0.0141, -0.0346, 1.4991
bone.tail[:] = 0.1226, 0.0054, 1.4991
bone.roll = 0.0005
- bone.connected = False
+ bone.use_connect = False
bone.parent = arm.edit_bones['neck_base']
bone = arm.edit_bones.new('DLT-shoulder.R')
bone.head[:] = -0.0141, -0.0346, 1.4991
bone.tail[:] = -0.1226, 0.0054, 1.4991
bone.roll = -0.0005
- bone.connected = False
+ bone.use_connect = False
bone.parent = arm.edit_bones['neck_base']
bone = arm.edit_bones.new('neck.01')
bone.head[:] = -0.0000, 0.0401, 1.5389
bone.tail[:] = -0.0000, 0.0176, 1.5916
bone.roll = 0.0000
- bone.connected = False
+ bone.use_connect = False
bone.parent = arm.edit_bones['head']
bone = arm.edit_bones.new('shoulder.L')
bone.head[:] = 0.0141, -0.0346, 1.4991
bone.tail[:] = 0.1226, 0.0216, 1.5270
bone.roll = -0.1225
- bone.connected = False
+ bone.use_connect = False
bone.parent = arm.edit_bones['DLT-shoulder.L']
bone = arm.edit_bones.new('shoulder.R')
bone.head[:] = -0.0141, -0.0346, 1.4991
bone.tail[:] = -0.1226, 0.0216, 1.5270
bone.roll = 0.0849
- bone.connected = False
+ bone.use_connect = False
bone.parent = arm.edit_bones['DLT-shoulder.R']
bone = arm.edit_bones.new('neck.02')
bone.head[:] = -0.0000, 0.0176, 1.5916
bone.tail[:] = -0.0000, 0.0001, 1.6499
bone.roll = 0.0000
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['neck.01']
bone = arm.edit_bones.new('DLT-upper_arm.L')
bone.head[:] = 0.1482, 0.0483, 1.4943
bone.tail[:] = 0.2586, 0.1057, 1.5124
bone.roll = 1.4969
- bone.connected = False
+ bone.use_connect = False
bone.parent = arm.edit_bones['shoulder.L']
bone = arm.edit_bones.new('DLT-upper_arm.R')
bone.head[:] = -0.1482, 0.0483, 1.4943
bone.tail[:] = -0.2586, 0.1057, 1.5124
bone.roll = -1.4482
- bone.connected = False
+ bone.use_connect = False
bone.parent = arm.edit_bones['shoulder.R']
bone = arm.edit_bones.new('neck.03')
bone.head[:] = -0.0000, 0.0001, 1.6499
bone.tail[:] = -0.0000, 0.0001, 1.8522
bone.roll = 0.0000
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['neck.02']
bone = arm.edit_bones.new('upper_arm.L')
bone.head[:] = 0.1482, 0.0483, 1.4943
bone.tail[:] = 0.3929, 0.0522, 1.4801
bone.roll = 1.6281
- bone.connected = False
+ bone.use_connect = False
bone.parent = arm.edit_bones['DLT-upper_arm.L']
bone = arm.edit_bones.new('upper_arm.R')
bone.head[:] = -0.1482, 0.0483, 1.4943
bone.tail[:] = -0.3929, 0.0522, 1.4801
bone.roll = -1.6281
- bone.connected = False
+ bone.use_connect = False
bone.parent = arm.edit_bones['DLT-upper_arm.R']
bone = arm.edit_bones.new('forearm.L')
bone.head[:] = 0.3929, 0.0522, 1.4801
bone.tail[:] = 0.6198, 0.0364, 1.4906
bone.roll = 1.5240
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['upper_arm.L']
bone = arm.edit_bones.new('forearm.R')
bone.head[:] = -0.3929, 0.0522, 1.4801
bone.tail[:] = -0.6198, 0.0364, 1.4906
bone.roll = -1.5219
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['upper_arm.R']
bone = arm.edit_bones.new('hand.L')
bone.head[:] = 0.6198, 0.0364, 1.4906
bone.tail[:] = 0.6592, 0.0364, 1.4853
bone.roll = -3.0065
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['forearm.L']
bone = arm.edit_bones.new('hand.R')
bone.head[:] = -0.6198, 0.0364, 1.4906
bone.tail[:] = -0.6592, 0.0364, 1.4853
bone.roll = 3.0065
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['forearm.R']
bone = arm.edit_bones.new('palm.04.L')
bone.head[:] = 0.6514, 0.0658, 1.4906
bone.tail[:] = 0.7287, 0.0810, 1.4747
bone.roll = -3.0715
- bone.connected = False
+ bone.use_connect = False
bone.parent = arm.edit_bones['hand.L']
bone = arm.edit_bones.new('palm.03.L')
bone.head[:] = 0.6533, 0.0481, 1.4943
bone.tail[:] = 0.7386, 0.0553, 1.4781
bone.roll = -3.0290
- bone.connected = False
+ bone.use_connect = False
bone.parent = arm.edit_bones['hand.L']
bone = arm.edit_bones.new('palm.02.L')
bone.head[:] = 0.6539, 0.0305, 1.4967
bone.tail[:] = 0.7420, 0.0250, 1.4835
bone.roll = -3.0669
- bone.connected = False
+ bone.use_connect = False
bone.parent = arm.edit_bones['hand.L']
bone = arm.edit_bones.new('palm.01.L')
bone.head[:] = 0.6514, 0.0116, 1.4961
bone.tail[:] = 0.7361, -0.0074, 1.4823
bone.roll = -2.9422
- bone.connected = False
+ bone.use_connect = False
bone.parent = arm.edit_bones['hand.L']
bone = arm.edit_bones.new('thumb.01.L')
bone.head[:] = 0.6380, -0.0005, 1.4848
bone.tail[:] = 0.6757, -0.0408, 1.4538
bone.roll = -0.7041
- bone.connected = False
+ bone.use_connect = False
bone.parent = arm.edit_bones['hand.L']
bone = arm.edit_bones.new('palm.04.R')
bone.head[:] = -0.6514, 0.0658, 1.4906
bone.tail[:] = -0.7287, 0.0810, 1.4747
bone.roll = 3.0715
- bone.connected = False
+ bone.use_connect = False
bone.parent = arm.edit_bones['hand.R']
bone = arm.edit_bones.new('palm.03.R')
bone.head[:] = -0.6533, 0.0481, 1.4943
bone.tail[:] = -0.7386, 0.0553, 1.4781
bone.roll = 3.0290
- bone.connected = False
+ bone.use_connect = False
bone.parent = arm.edit_bones['hand.R']
bone = arm.edit_bones.new('palm.02.R')
bone.head[:] = -0.6539, 0.0305, 1.4967
bone.tail[:] = -0.7420, 0.0250, 1.4835
bone.roll = 3.0669
- bone.connected = False
+ bone.use_connect = False
bone.parent = arm.edit_bones['hand.R']
bone = arm.edit_bones.new('thumb.01.R')
bone.head[:] = -0.6380, -0.0005, 1.4848
bone.tail[:] = -0.6757, -0.0408, 1.4538
bone.roll = 0.7041
- bone.connected = False
+ bone.use_connect = False
bone.parent = arm.edit_bones['hand.R']
bone = arm.edit_bones.new('palm.01.R')
bone.head[:] = -0.6514, 0.0116, 1.4961
bone.tail[:] = -0.7361, -0.0074, 1.4823
bone.roll = 2.9332
- bone.connected = False
+ bone.use_connect = False
bone.parent = arm.edit_bones['hand.R']
bone = arm.edit_bones.new('finger_pinky.01.L')
bone.head[:] = 0.7287, 0.0810, 1.4747
bone.tail[:] = 0.7698, 0.0947, 1.4635
bone.roll = -3.0949
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['palm.04.L']
bone = arm.edit_bones.new('finger_ring.01.L')
bone.head[:] = 0.7386, 0.0553, 1.4781
bone.tail[:] = 0.7890, 0.0615, 1.4667
bone.roll = -3.0081
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['palm.03.L']
bone = arm.edit_bones.new('finger_middle.01.L')
bone.head[:] = 0.7420, 0.0250, 1.4835
bone.tail[:] = 0.7975, 0.0221, 1.4712
bone.roll = -2.9982
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['palm.02.L']
bone = arm.edit_bones.new('finger_index.01.L')
bone.head[:] = 0.7361, -0.0074, 1.4823
bone.tail[:] = 0.7843, -0.0204, 1.4718
bone.roll = -3.0021
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['palm.01.L']
bone = arm.edit_bones.new('thumb.02.L')
bone.head[:] = 0.6757, -0.0408, 1.4538
bone.tail[:] = 0.6958, -0.0568, 1.4376
bone.roll = -0.6963
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['thumb.01.L']
bone = arm.edit_bones.new('finger_pinky.01.R')
bone.head[:] = -0.7287, 0.0810, 1.4747
bone.tail[:] = -0.7698, 0.0947, 1.4635
bone.roll = 3.0949
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['palm.04.R']
bone = arm.edit_bones.new('finger_ring.01.R')
bone.head[:] = -0.7386, 0.0553, 1.4781
bone.tail[:] = -0.7890, 0.0615, 1.4667
bone.roll = 2.9892
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['palm.03.R']
bone = arm.edit_bones.new('finger_middle.01.R')
bone.head[:] = -0.7420, 0.0250, 1.4835
bone.tail[:] = -0.7975, 0.0221, 1.4712
bone.roll = 2.9816
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['palm.02.R']
bone = arm.edit_bones.new('thumb.02.R')
bone.head[:] = -0.6757, -0.0408, 1.4538
bone.tail[:] = -0.6958, -0.0568, 1.4376
bone.roll = 0.6963
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['thumb.01.R']
bone = arm.edit_bones.new('finger_index.01.R')
bone.head[:] = -0.7361, -0.0074, 1.4823
bone.tail[:] = -0.7843, -0.0204, 1.4718
bone.roll = 2.9498
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['palm.01.R']
bone = arm.edit_bones.new('finger_pinky.02.L')
bone.head[:] = 0.7698, 0.0947, 1.4635
bone.tail[:] = 0.7910, 0.1018, 1.4577
bone.roll = -3.0949
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['finger_pinky.01.L']
bone = arm.edit_bones.new('finger_ring.02.L')
bone.head[:] = 0.7890, 0.0615, 1.4667
bone.tail[:] = 0.8177, 0.0650, 1.4600
bone.roll = -3.0006
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['finger_ring.01.L']
bone = arm.edit_bones.new('finger_middle.02.L')
bone.head[:] = 0.7975, 0.0221, 1.4712
bone.tail[:] = 0.8289, 0.0206, 1.4643
bone.roll = -2.9995
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['finger_middle.01.L']
bone = arm.edit_bones.new('finger_index.02.L')
bone.head[:] = 0.7843, -0.0204, 1.4718
bone.tail[:] = 0.8117, -0.0275, 1.4660
bone.roll = -3.0064
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['finger_index.01.L']
bone = arm.edit_bones.new('thumb.03.L')
bone.head[:] = 0.6958, -0.0568, 1.4376
bone.tail[:] = 0.7196, -0.0671, 1.4210
bone.roll = -0.8072
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['thumb.02.L']
bone = arm.edit_bones.new('finger_pinky.02.R')
bone.head[:] = -0.7698, 0.0947, 1.4635
bone.tail[:] = -0.7910, 0.1018, 1.4577
bone.roll = 3.0949
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['finger_pinky.01.R']
bone = arm.edit_bones.new('finger_ring.02.R')
bone.head[:] = -0.7890, 0.0615, 1.4667
bone.tail[:] = -0.8177, 0.0650, 1.4600
bone.roll = 3.0341
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['finger_ring.01.R']
bone = arm.edit_bones.new('finger_middle.02.R')
bone.head[:] = -0.7975, 0.0221, 1.4712
bone.tail[:] = -0.8289, 0.0206, 1.4643
bone.roll = 3.0291
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['finger_middle.01.R']
bone = arm.edit_bones.new('thumb.03.R')
bone.head[:] = -0.6958, -0.0568, 1.4376
bone.tail[:] = -0.7196, -0.0671, 1.4210
bone.roll = 0.8072
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['thumb.02.R']
bone = arm.edit_bones.new('finger_index.02.R')
bone.head[:] = -0.7843, -0.0204, 1.4718
bone.tail[:] = -0.8117, -0.0275, 1.4660
bone.roll = 3.0705
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['finger_index.01.R']
bone = arm.edit_bones.new('finger_pinky.03.L')
bone.head[:] = 0.7910, 0.1018, 1.4577
bone.tail[:] = 0.8109, 0.1085, 1.4523
bone.roll = -3.0949
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['finger_pinky.02.L']
bone = arm.edit_bones.new('finger_ring.03.L')
bone.head[:] = 0.8177, 0.0650, 1.4600
bone.tail[:] = 0.8396, 0.0677, 1.4544
bone.roll = -2.9819
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['finger_ring.02.L']
bone = arm.edit_bones.new('finger_middle.03.L')
bone.head[:] = 0.8289, 0.0206, 1.4643
bone.tail[:] = 0.8534, 0.0193, 1.4589
bone.roll = -3.0004
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['finger_middle.02.L']
bone = arm.edit_bones.new('finger_index.03.L')
bone.head[:] = 0.8117, -0.0275, 1.4660
bone.tail[:] = 0.8331, -0.0333, 1.4615
bone.roll = -3.0103
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['finger_index.02.L']
bone = arm.edit_bones.new('finger_pinky.03.R')
bone.head[:] = -0.7910, 0.1018, 1.4577
bone.tail[:] = -0.8109, 0.1085, 1.4523
bone.roll = 3.0949
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['finger_pinky.02.R']
bone = arm.edit_bones.new('finger_ring.03.R')
bone.head[:] = -0.8177, 0.0650, 1.4600
bone.tail[:] = -0.8396, 0.0677, 1.4544
bone.roll = 2.9819
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['finger_ring.02.R']
bone = arm.edit_bones.new('finger_middle.03.R')
bone.head[:] = -0.8289, 0.0206, 1.4643
bone.tail[:] = -0.8534, 0.0193, 1.4589
bone.roll = 3.0004
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['finger_middle.02.R']
bone = arm.edit_bones.new('finger_index.03.R')
bone.head[:] = -0.8117, -0.0275, 1.4660
bone.tail[:] = -0.8331, -0.0333, 1.4615
bone.roll = 2.9917
- bone.connected = True
+ bone.use_connect = True
bone.parent = arm.edit_bones['finger_index.02.R']
bpy.ops.object.mode_set(mode='OBJECT')
@@ -487,11 +487,11 @@ def metarig_template():
pbone = obj.pose.bones['shoulder.L']
pbone['type'] = 'copy'
pbone = obj.pose.bones['shoulder.L']
- pbone['copy.layer'] = 1
+ pbone['copy.layers'] = 1
pbone = obj.pose.bones['shoulder.R']
pbone['type'] = 'copy'
pbone = obj.pose.bones['shoulder.R']
- pbone['copy.layer'] = 1
+ pbone['copy.layers'] = 1
pbone = obj.pose.bones['DLT-upper_arm.L']
pbone['type'] = 'delta'
pbone = obj.pose.bones['DLT-upper_arm.R']
@@ -515,7 +515,7 @@ def metarig_template():
pbone = obj.pose.bones['palm.01.L']
pbone['type'] = 'palm_curl'
pbone = obj.pose.bones['palm.01.L']
- pbone['palm_curl.layer'] = 5
+ pbone['palm_curl.layers'] = 5
pbone = obj.pose.bones['thumb.01.L']
pbone['type'] = 'finger_curl'
pbone = obj.pose.bones['thumb.01.L']
@@ -531,7 +531,7 @@ def metarig_template():
pbone = obj.pose.bones['palm.01.R']
pbone['type'] = 'palm_curl'
pbone = obj.pose.bones['palm.01.R']
- pbone['palm_curl.layer'] = 5
+ pbone['palm_curl.layers'] = 5
pbone = obj.pose.bones['finger_pinky.01.L']
pbone['type'] = 'finger_curl'
pbone = obj.pose.bones['finger_pinky.01.L']
diff --git a/release/scripts/op/add_mesh_torus.py b/release/scripts/op/add_mesh_torus.py
index d64b92a8b19..e19f2b4e18c 100644
--- a/release/scripts/op/add_mesh_torus.py
+++ b/release/scripts/op/add_mesh_torus.py
@@ -122,8 +122,8 @@ class AddTorus(bpy.types.Operator):
mesh = bpy.data.meshes.new("Torus")
mesh.add_geometry(int(len(verts_loc) / 3), 0, int(len(faces) / 4))
- mesh.verts.foreach_set("co", verts_loc)
- mesh.faces.foreach_set("verts_raw", faces)
+ mesh.vertices.foreach_set("co", verts_loc)
+ mesh.faces.foreach_set("vertices_raw", faces)
mesh.update()
import add_object_utils
diff --git a/release/scripts/op/animsys_update.py b/release/scripts/op/animsys_update.py
new file mode 100644
index 00000000000..0ea13b24776
--- /dev/null
+++ b/release/scripts/op/animsys_update.py
@@ -0,0 +1,580 @@
+# ##### BEGIN GPL LICENSE BLOCK #####
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software Foundation,
+# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+# ##### END GPL LICENSE BLOCK #####
+
+# <pep8 compliant>
+
+data_path_update = [
+ ("AnimVizMotionPaths", "after_current", "frame_after"),
+ ("AnimVizMotionPaths", "before_current", "frame_before"),
+ ("AnimVizOnionSkinning", "after_current", "frame_after"),
+ ("AnimVizOnionSkinning", "before_current", "frame_before"),
+ ("ClothCollisionSettings", "min_distance", "distance_min"),
+ ("ClothCollisionSettings", "self_min_distance", "self_distance_min"),
+ ("ClothCollisionSettings", "enable_collision", "use_collision"),
+ ("ClothCollisionSettings", "enable_self_collision", "use_self_collision"),
+ ("ClothSettings", "pin_cloth", "use_pin_cloth"),
+ ("ClothSettings", "stiffness_scaling", "use_stiffness_scale"),
+ ("CollisionSettings", "random_damping", "damping_random"),
+ ("CollisionSettings", "random_friction", "friction_random"),
+ ("CollisionSettings", "inner_thickness", "thickness_inner"),
+ ("CollisionSettings", "outer_thickness", "thickness_outer"),
+ ("CollisionSettings", "kill_particles", "use_particle_kill"),
+ ("Constraint", "proxy_local", "is_proxy_local"),
+ ("ActionConstraint", "maximum", "max"),
+ ("ActionConstraint", "minimum", "min"),
+ ("FollowPathConstraint", "use_fixed_position", "use_fixed_location"),
+ ("KinematicConstraint", "chain_length", "chain_count"),
+ ("KinematicConstraint", "pos_lock_x", "lock_location_x"),
+ ("KinematicConstraint", "pos_lock_y", "lock_location_y"),
+ ("KinematicConstraint", "pos_lock_z", "lock_location_z"),
+ ("KinematicConstraint", "rot_lock_x", "lock_rotation_x"),
+ ("KinematicConstraint", "rot_lock_y", "lock_rotation_y"),
+ ("KinematicConstraint", "rot_lock_z", "lock_rotation_z"),
+ ("KinematicConstraint", "axis_reference", "reference_axis"),
+ ("KinematicConstraint", "use_position", "use_location"),
+ ("LimitLocationConstraint", "maximum_x", "max_x"),
+ ("LimitLocationConstraint", "maximum_y", "max_y"),
+ ("LimitLocationConstraint", "maximum_z", "max_z"),
+ ("LimitLocationConstraint", "minimum_x", "min_x"),
+ ("LimitLocationConstraint", "minimum_y", "min_y"),
+ ("LimitLocationConstraint", "minimum_z", "min_z"),
+ ("LimitLocationConstraint", "use_maximum_x", "use_max_x"),
+ ("LimitLocationConstraint", "use_maximum_y", "use_max_y"),
+ ("LimitLocationConstraint", "use_maximum_z", "use_max_z"),
+ ("LimitLocationConstraint", "use_minimum_x", "use_min_x"),
+ ("LimitLocationConstraint", "use_minimum_y", "use_min_y"),
+ ("LimitLocationConstraint", "use_minimum_z", "use_min_z"),
+ ("LimitLocationConstraint", "limit_transform", "use_transform_limit"),
+ ("LimitRotationConstraint", "maximum_x", "max_x"),
+ ("LimitRotationConstraint", "maximum_y", "max_y"),
+ ("LimitRotationConstraint", "maximum_z", "max_z"),
+ ("LimitRotationConstraint", "minimum_x", "min_x"),
+ ("LimitRotationConstraint", "minimum_y", "min_y"),
+ ("LimitRotationConstraint", "minimum_z", "min_z"),
+ ("LimitRotationConstraint", "limit_transform", "use_transform_limit"),
+ ("LimitScaleConstraint", "maximum_x", "max_x"),
+ ("LimitScaleConstraint", "maximum_y", "max_y"),
+ ("LimitScaleConstraint", "maximum_z", "max_z"),
+ ("LimitScaleConstraint", "minimum_x", "min_x"),
+ ("LimitScaleConstraint", "minimum_y", "min_y"),
+ ("LimitScaleConstraint", "minimum_z", "min_z"),
+ ("LimitScaleConstraint", "use_maximum_x", "use_max_x"),
+ ("LimitScaleConstraint", "use_maximum_y", "use_max_y"),
+ ("LimitScaleConstraint", "use_maximum_z", "use_max_z"),
+ ("LimitScaleConstraint", "use_minimum_x", "use_min_x"),
+ ("LimitScaleConstraint", "use_minimum_y", "use_min_y"),
+ ("LimitScaleConstraint", "use_minimum_z", "use_min_z"),
+ ("LimitScaleConstraint", "limit_transform", "use_transform_limit"),
+ ("PivotConstraint", "enabled_rotation_range", "rotation_range"),
+ ("PivotConstraint", "use_relative_position", "use_relative_location"),
+ ("PythonConstraint", "number_of_targets", "target_count"),
+ ("SplineIKConstraint", "chain_length", "chain_count"),
+ ("SplineIKConstraint", "chain_offset", "use_chain_offset"),
+ ("SplineIKConstraint", "even_divisions", "use_even_divisions"),
+ ("SplineIKConstraint", "y_stretch", "use_y_stretch"),
+ ("SplineIKConstraint", "xz_scaling_mode", "xz_scale_mode"),
+ ("StretchToConstraint", "original_length", "rest_length"),
+ ("TrackToConstraint", "target_z", "use_target_z"),
+ ("TransformConstraint", "extrapolate_motion", "use_motion_extrapolate"),
+ ("FieldSettings", "do_location", "apply_to_location"),
+ ("FieldSettings", "do_rotation", "apply_to_rotation"),
+ ("FieldSettings", "maximum_distance", "distance_max"),
+ ("FieldSettings", "minimum_distance", "distance_min"),
+ ("FieldSettings", "radial_maximum", "radial_max"),
+ ("FieldSettings", "radial_minimum", "radial_min"),
+ ("FieldSettings", "force_2d", "use_2d_force"),
+ ("FieldSettings", "do_absorption", "use_absorption"),
+ ("FieldSettings", "global_coordinates", "use_global_coords"),
+ ("FieldSettings", "guide_path_add", "use_guide_path_add"),
+ ("FieldSettings", "multiple_springs", "use_multiple_springs"),
+ ("FieldSettings", "use_coordinates", "use_object_coords"),
+ ("FieldSettings", "root_coordinates", "use_root_coords"),
+ ("ControlFluidSettings", "reverse_frames", "use_reverse_frames"),
+ ("DomainFluidSettings", "real_world_size", "simulation_scale"),
+ ("DomainFluidSettings", "surface_smoothing", "surface_smooth"),
+ ("DomainFluidSettings", "reverse_frames", "use_reverse_frames"),
+ ("DomainFluidSettings", "generate_speed_vectors", "use_speed_vectors"),
+ ("DomainFluidSettings", "override_time", "use_time_override"),
+ ("FluidFluidSettings", "export_animated_mesh", "use_animated_mesh"),
+ ("InflowFluidSettings", "export_animated_mesh", "use_animated_mesh"),
+ ("InflowFluidSettings", "local_coordinates", "use_local_coords"),
+ ("ObstacleFluidSettings", "export_animated_mesh", "use_animated_mesh"),
+ ("OutflowFluidSettings", "export_animated_mesh", "use_animated_mesh"),
+ ("ParticleFluidSettings", "drops", "use_drops"),
+ ("ParticleFluidSettings", "floats", "use_floats"),
+ ("GameSoftBodySettings", "linstiff", "linear_stiffness"),
+ ("GameSoftBodySettings", "position_iterations", "location_iterations"),
+ ("GameSoftBodySettings", "bending_const", "use_bending_constraints"),
+ ("GameSoftBodySettings", "cluster_rigid_to_softbody", "use_cluster_rigid_to_softbody"),
+ ("GameSoftBodySettings", "cluster_soft_to_softbody", "use_cluster_soft_to_softbody"),
+ ("GameSoftBodySettings", "shape_match", "use_shape_match"),
+ ("NetRenderSettings", "master_broadcast", "use_master_broadcast"),
+ ("NetRenderSettings", "master_clear", "use_master_clear"),
+ ("NetRenderSettings", "slave_clear", "use_slave_clear"),
+ ("NetRenderSettings", "slave_outputlog", "use_slave_output_log"),
+ ("NetRenderSettings", "slave_thumb", "use_slave_thumb"),
+ ("PoseTemplateSettings", "generate_def_rig", "use_generate_deform_rig"),
+ ("Armature", "drawtype", "draw_type"),
+ ("Armature", "layer_protection", "layers_protected"),
+ ("Armature", "auto_ik", "use_auto_ik"),
+ ("Armature", "delay_deform", "use_deform_delay"),
+ ("Armature", "deform_envelope", "use_deform_envelopes"),
+ ("Armature", "deform_quaternion", "use_deform_preserve_volume"),
+ ("Armature", "deform_vertexgroups", "use_deform_vertex_groups"),
+ ("Armature", "x_axis_mirror", "use_mirror_x"),
+ ("Curve", "width", "offset"),
+ ("Image", "animation_speed", "fps"),
+ ("Image", "animation_end", "frame_end"),
+ ("Image", "animation_start", "frame_start"),
+ ("Image", "animated", "use_animation"),
+ ("Image", "clamp_x", "use_clamp_x"),
+ ("Image", "clamp_y", "use_clamp_y"),
+ ("Image", "premultiply", "use_premultiply"),
+ ("AreaLamp", "shadow_ray_sampling_method", "shadow_ray_sample_method"),
+ ("AreaLamp", "only_shadow", "use_only_shadow"),
+ ("AreaLamp", "shadow_layer", "use_shadow_layer"),
+ ("AreaLamp", "umbra", "use_umbra"),
+ ("PointLamp", "shadow_ray_sampling_method", "shadow_ray_sample_method"),
+ ("PointLamp", "only_shadow", "use_only_shadow"),
+ ("PointLamp", "shadow_layer", "use_shadow_layer"),
+ ("PointLamp", "sphere", "use_sphere"),
+ ("SpotLamp", "shadow_ray_sampling_method", "shadow_ray_sample_method"),
+ ("SpotLamp", "auto_clip_end", "use_auto_clip_end"),
+ ("SpotLamp", "auto_clip_start", "use_auto_clip_start"),
+ ("SpotLamp", "only_shadow", "use_only_shadow"),
+ ("SpotLamp", "shadow_layer", "use_shadow_layer"),
+ ("SpotLamp", "sphere", "use_sphere"),
+ ("SunLamp", "only_shadow", "use_only_shadow"),
+ ("SunLamp", "shadow_layer", "use_shadow_layer"),
+ ("Material", "z_offset", "offset_z"),
+ ("Material", "shadow_casting_alpha", "shadow_cast_alpha"),
+ ("Material", "cast_approximate", "use_cast_approximate"),
+ ("Material", "cast_buffer_shadows", "use_cast_buffer_shadows"),
+ ("Material", "cast_shadows_only", "use_cast_shadows_only"),
+ ("Material", "face_texture", "use_face_texture"),
+ ("Material", "face_texture_alpha", "use_face_texture_alpha"),
+ ("Material", "full_oversampling", "use_full_oversampling"),
+ ("Material", "light_group_exclusive", "use_light_group_exclusive"),
+ ("Material", "object_color", "use_object_color"),
+ ("Material", "only_shadow", "use_only_shadow"),
+ ("Material", "ray_shadow_bias", "use_ray_shadow_bias"),
+ ("Material", "traceable", "use_raytrace"),
+ ("Material", "shadeless", "use_shadeless"),
+ ("Material", "tangent_shading", "use_tangent_shading"),
+ ("Material", "transparency", "use_transparency"),
+ ("Material", "receive_transparent_shadows", "use_transparent_shadows"),
+ ("Material", "vertex_color_light", "use_vertex_color_light"),
+ ("Material", "vertex_color_paint", "use_vertex_color_paint"),
+ ("Mesh", "autosmooth_angle", "auto_smooth_angle"),
+ ("Mesh", "autosmooth", "use_auto_smooth"),
+ ("Object", "max_draw_type", "draw_type"),
+ ("Object", "use_dupli_verts_rotation", "use_dupli_vertices_rotation"),
+ ("Object", "shape_key_edit_mode", "use_shape_key_edit_mode"),
+ ("Object", "slow_parent", "use_slow_parent"),
+ ("Object", "time_offset_add_parent", "use_time_offset_add_parent"),
+ ("Object", "time_offset_edit", "use_time_offset_edit"),
+ ("Object", "time_offset_parent", "use_time_offset_parent"),
+ ("Object", "time_offset_particle", "use_time_offset_particle"),
+ ("ParticleSettings", "adaptive_pix", "adaptive_pixel"),
+ ("ParticleSettings", "child_effector", "apply_effector_to_children"),
+ ("ParticleSettings", "child_guide", "apply_guide_to_children"),
+ ("ParticleSettings", "billboard_split_offset", "billboard_offset_split"),
+ ("ParticleSettings", "billboard_random_tilt", "billboard_tilt_random"),
+ ("ParticleSettings", "child_length_thres", "child_length_threshold"),
+ ("ParticleSettings", "child_random_size", "child_size_random"),
+ ("ParticleSettings", "clumppow", "clump_shape"),
+ ("ParticleSettings", "damp_factor", "damping"),
+ ("ParticleSettings", "draw_as", "draw_method"),
+ ("ParticleSettings", "random_factor", "factor_random"),
+ ("ParticleSettings", "grid_invert", "invert_grid"),
+ ("ParticleSettings", "random_length", "length_random"),
+ ("ParticleSettings", "random_lifetime", "lifetime_random"),
+ ("ParticleSettings", "billboard_lock", "lock_billboard"),
+ ("ParticleSettings", "boids_2d", "lock_boids_to_surface"),
+ ("ParticleSettings", "object_aligned_factor", "object_align_factor"),
+ ("ParticleSettings", "random_phase_factor", "phase_factor_random"),
+ ("ParticleSettings", "ren_as", "render_type"),
+ ("ParticleSettings", "rendered_child_nbr", "rendered_child_count"),
+ ("ParticleSettings", "random_rotation_factor", "rotation_factor_random"),
+ ("ParticleSettings", "rough1", "roughness_1"),
+ ("ParticleSettings", "rough1_size", "roughness_1_size"),
+ ("ParticleSettings", "rough2", "roughness_2"),
+ ("ParticleSettings", "rough2_size", "roughness_2_size"),
+ ("ParticleSettings", "rough2_thres", "roughness_2_threshold"),
+ ("ParticleSettings", "rough_end_shape", "roughness_end_shape"),
+ ("ParticleSettings", "rough_endpoint", "roughness_endpoint"),
+ ("ParticleSettings", "random_size", "size_random"),
+ ("ParticleSettings", "abs_path_time", "use_absolute_path_time"),
+ ("ParticleSettings", "animate_branching", "use_animate_branching"),
+ ("ParticleSettings", "branching", "use_branching"),
+ ("ParticleSettings", "died", "use_dead"),
+ ("ParticleSettings", "die_on_collision", "use_die_on_collision"),
+ ("ParticleSettings", "rotation_dynamic", "use_dynamic_rotation"),
+ ("ParticleSettings", "even_distribution", "use_even_distribution"),
+ ("ParticleSettings", "rand_group", "use_group_pick_random"),
+ ("ParticleSettings", "hair_bspline", "use_hair_bspline"),
+ ("ParticleSettings", "sizemass", "use_multiply_size_mass"),
+ ("ParticleSettings", "react_multiple", "use_react_multiple"),
+ ("ParticleSettings", "react_start_end", "use_react_start_end"),
+ ("ParticleSettings", "render_adaptive", "use_render_adaptive"),
+ ("ParticleSettings", "self_effect", "use_self_effect"),
+ ("ParticleSettings", "enable_simplify", "use_simplify"),
+ ("ParticleSettings", "size_deflect", "use_size_deflect"),
+ ("ParticleSettings", "render_strand", "use_strand_primitive"),
+ ("ParticleSettings", "symmetric_branching", "use_symmetric_branching"),
+ ("ParticleSettings", "velocity_length", "use_velocity_length"),
+ ("ParticleSettings", "whole_group", "use_whole_group"),
+ ("CloudsTexture", "noise_size", "noise_scale"),
+ ("DistortedNoiseTexture", "noise_size", "noise_scale"),
+ ("EnvironmentMapTexture", "filter_size_minimum", "use_filter_size_min"),
+ ("EnvironmentMapTexture", "mipmap_gauss", "use_mipmap_gauss"),
+ ("ImageTexture", "calculate_alpha", "use_calculate_alpha"),
+ ("ImageTexture", "checker_even", "use_checker_even"),
+ ("ImageTexture", "checker_odd", "use_checker_odd"),
+ ("ImageTexture", "filter_size_minimum", "use_filter_size_min"),
+ ("ImageTexture", "flip_axis", "use_flip_axis"),
+ ("ImageTexture", "mipmap_gauss", "use_mipmap_gauss"),
+ ("ImageTexture", "mirror_x", "use_mirror_x"),
+ ("ImageTexture", "mirror_y", "use_mirror_y"),
+ ("ImageTexture", "normal_map", "use_normal_map"),
+ ("MarbleTexture", "noise_size", "noise_scale"),
+ ("MarbleTexture", "noisebasis2", "noisebasis_2"),
+ ("MusgraveTexture", "highest_dimension", "dimension_max"),
+ ("MusgraveTexture", "noise_size", "noise_scale"),
+ ("StucciTexture", "noise_size", "noise_scale"),
+ ("VoronoiTexture", "coloring", "color_mode"),
+ ("VoronoiTexture", "noise_size", "noise_scale"),
+ ("WoodTexture", "noise_size", "noise_scale"),
+ ("WoodTexture", "noisebasis2", "noisebasis_2"),
+ ("World", "blend_sky", "use_sky_blend"),
+ ("World", "paper_sky", "use_sky_paper"),
+ ("World", "real_sky", "use_sky_real"),
+ ("ImageUser", "auto_refresh", "use_auto_refresh"),
+ ("MaterialHalo", "flares_sub", "flare_subflare_count"),
+ ("MaterialHalo", "flare_subsize", "flare_subflare_size"),
+ ("MaterialHalo", "line_number", "line_count"),
+ ("MaterialHalo", "rings", "ring_count"),
+ ("MaterialHalo", "star_tips", "star_tip_count"),
+ ("MaterialHalo", "xalpha", "use_extreme_alpha"),
+ ("MaterialHalo", "flare_mode", "use_flare_mode"),
+ ("MaterialHalo", "vertex_normal", "use_vertex_normal"),
+ ("MaterialPhysics", "align_to_normal", "use_normal_align"),
+ ("MaterialStrand", "min_size", "size_min"),
+ ("MaterialStrand", "blender_units", "use_blender_units"),
+ ("MaterialStrand", "surface_diffuse", "use_surface_diffuse"),
+ ("MaterialStrand", "tangent_shading", "use_tangent_shading"),
+ ("MaterialSubsurfaceScattering", "error_tolerance", "error_threshold"),
+ ("MaterialVolume", "depth_cutoff", "depth_threshold"),
+ ("MaterialVolume", "lighting_mode", "light_method"),
+ ("MaterialVolume", "step_calculation", "step_method"),
+ ("MaterialVolume", "external_shadows", "use_external_shadows"),
+ ("MaterialVolume", "light_cache", "use_light_cache"),
+ ("ArmatureModifier", "multi_modifier", "use_multi_modifier"),
+ ("ArrayModifier", "constant_offset_displacement", "constant_offset_displace"),
+ ("ArrayModifier", "merge_distance", "merge_threshold"),
+ ("ArrayModifier", "relative_offset_displacement", "relative_offset_displace"),
+ ("ArrayModifier", "constant_offset", "use_constant_offset"),
+ ("ArrayModifier", "merge_adjacent_vertices", "use_merge_vertices"),
+ ("ArrayModifier", "merge_end_vertices", "use_merge_vertices_cap"),
+ ("ArrayModifier", "add_offset_object", "use_object_offset"),
+ ("ArrayModifier", "relative_offset", "use_relative_offset"),
+ ("BevelModifier", "only_vertices", "use_only_vertices"),
+ ("CastModifier", "from_radius", "use_radius_as_size"),
+ ("DisplaceModifier", "midlevel", "mid_level"),
+ ("DisplaceModifier", "texture_coordinates", "texture_coords"),
+ ("EdgeSplitModifier", "use_sharp", "use_edge_sharp"),
+ ("ExplodeModifier", "split_edges", "use_edge_split"),
+ ("MirrorModifier", "merge_limit", "merge_threshold"),
+ ("MirrorModifier", "mirror_u", "use_mirror_u"),
+ ("MirrorModifier", "mirror_v", "use_mirror_v"),
+ ("MirrorModifier", "mirror_vertex_groups", "use_mirror_vertex_groups"),
+ ("ParticleInstanceModifier", "particle_system_number", "particle_system_index"),
+ ("ParticleInstanceModifier", "keep_shape", "use_preserve_shape"),
+ ("ShrinkwrapModifier", "cull_back_faces", "use_cull_back_faces"),
+ ("ShrinkwrapModifier", "cull_front_faces", "use_cull_front_faces"),
+ ("ShrinkwrapModifier", "keep_above_surface", "use_keep_above_surface"),
+ ("SimpleDeformModifier", "lock_x_axis", "lock_x"),
+ ("SimpleDeformModifier", "lock_y_axis", "lock_y"),
+ ("SmokeModifier", "smoke_type", "type"),
+ ("SubsurfModifier", "subsurf_uv", "use_subsurf_uv"),
+ ("UVProjectModifier", "num_projectors", "projector_count"),
+ ("UVProjectModifier", "override_image", "use_image_override"),
+ ("WaveModifier", "texture_coordinates", "texture_coords"),
+ ("WaveModifier", "x_normal", "use_normal_x"),
+ ("WaveModifier", "y_normal", "use_normal_y"),
+ ("WaveModifier", "z_normal", "use_normal_z"),
+ ("NlaStrip", "blending", "blend_type"),
+ ("NlaStrip", "animated_influence", "use_animated_influence"),
+ ("NlaStrip", "animated_time", "use_animated_time"),
+ ("NlaStrip", "animated_time_cyclic", "use_animated_time_cyclic"),
+ ("NlaStrip", "auto_blending", "use_auto_blend"),
+ ("CompositorNodeAlphaOver", "convert_premul", "use_premultiply"),
+ ("CompositorNodeBlur", "sizex", "size_x"),
+ ("CompositorNodeBlur", "sizey", "size_y"),
+ ("CompositorNodeChannelMatte", "algorithm", "limit_method"),
+ ("CompositorNodeChromaMatte", "acceptance", "tolerance"),
+ ("CompositorNodeColorBalance", "correction_formula", "correction_method"),
+ ("CompositorNodeColorSpill", "algorithm", "limit_method"),
+ ("CompositorNodeColorSpill", "unspill", "use_unspill"),
+ ("CompositorNodeCrop", "x2", "max_x"),
+ ("CompositorNodeCrop", "y2", "max_y"),
+ ("CompositorNodeCrop", "x1", "min_x"),
+ ("CompositorNodeCrop", "y1", "min_y"),
+ ("CompositorNodeCrop", "crop_size", "use_crop_size"),
+ ("CompositorNodeDefocus", "max_blur", "blur_max"),
+ ("CompositorNodeDefocus", "gamma_correction", "use_gamma_correction"),
+ ("CompositorNodeGlare", "rotate_45", "use_rotate_45"),
+ ("CompositorNodeImage", "auto_refresh", "use_auto_refresh"),
+ ("CompositorNodeLensdist", "projector", "use_projector"),
+ ("CompositorNodeVecBlur", "max_speed", "speed_max"),
+ ("CompositorNodeVecBlur", "min_speed", "speed_min"),
+ ("ShaderNodeMapping", "maximum", "max"),
+ ("ShaderNodeMapping", "minimum", "min"),
+ ("ShaderNodeMapping", "clamp_maximum", "use_max"),
+ ("ShaderNodeMapping", "clamp_minimum", "use_min"),
+ ("VertexPaint", "all_faces", "use_all_faces"),
+ ("VertexPaint", "spray", "use_spray"),
+ ("ParticleEdit", "add_keys", "default_key_count"),
+ ("ParticleEdit", "selection_mode", "select_mode"),
+ ("ParticleEdit", "auto_velocity", "use_auto_velocity"),
+ ("ParticleEdit", "add_interpolate", "use_default_interpolate"),
+ ("ParticleEdit", "emitter_deflect", "use_emitter_deflect"),
+ ("ParticleEdit", "fade_time", "use_fade_time"),
+ ("ParticleEdit", "keep_lengths", "use_preserve_length"),
+ ("ParticleEdit", "keep_root", "use_preserve_root"),
+ ("ParticleSystem", "vertex_group_clump_negate", "invert_vertex_group_clump"),
+ ("ParticleSystem", "vertex_group_density_negate", "invert_vertex_group_density"),
+ ("ParticleSystem", "vertex_group_field_negate", "invert_vertex_group_field"),
+ ("ParticleSystem", "vertex_group_kink_negate", "invert_vertex_group_kink"),
+ ("ParticleSystem", "vertex_group_length_negate", "invert_vertex_group_length"),
+ ("ParticleSystem", "vertex_group_rotation_negate", "invert_vertex_group_rotation"),
+ ("ParticleSystem", "vertex_group_roughness1_negate", "invert_vertex_group_roughness_1"),
+ ("ParticleSystem", "vertex_group_roughness2_negate", "invert_vertex_group_roughness_2"),
+ ("ParticleSystem", "vertex_group_roughness_end_negate", "invert_vertex_group_roughness_end"),
+ ("ParticleSystem", "vertex_group_size_negate", "invert_vertex_group_size"),
+ ("ParticleSystem", "vertex_group_tangent_negate", "invert_vertex_group_tangent"),
+ ("ParticleSystem", "vertex_group_velocity_negate", "invert_vertex_group_velocity"),
+ ("ParticleSystem", "hair_dynamics", "use_hair_dynamics"),
+ ("ParticleSystem", "keyed_timing", "use_keyed_timing"),
+ ("PointDensity", "falloff_softness", "falloff_soft"),
+ ("PointDensity", "particle_cache", "particle_cache_space"),
+ ("PointDensity", "turbulence_size", "turbulence_scale"),
+ ("PointDensity", "turbulence", "use_turbulence"),
+ ("PointDensity", "vertices_cache", "vertex_cache_space"),
+ ("PoseBone", "ik_lin_weight", "ik_linear_weight"),
+ ("PoseBone", "ik_rot_weight", "ik_rotation_weight"),
+ ("PoseBone", "ik_limit_x", "use_ik_limit_x"),
+ ("PoseBone", "ik_limit_y", "use_ik_limit_y"),
+ ("PoseBone", "ik_limit_z", "use_ik_limit_z"),
+ ("PoseBone", "ik_lin_control", "use_ik_linear_control"),
+ ("PoseBone", "ik_rot_control", "use_ik_rotation_control"),
+ ("SPHFluidSettings", "spring_k", "spring_force"),
+ ("SPHFluidSettings", "stiffness_k", "stiffness"),
+ ("SPHFluidSettings", "stiffness_knear", "stiffness_near"),
+ ("SceneGameData", "framing_color", "frame_color"),
+ ("SceneGameData", "framing_type", "frame_type"),
+ ("SceneGameData", "eye_separation", "stereo_eye_separation"),
+ ("SceneGameData", "activity_culling", "use_activity_culling"),
+ ("SceneGameData", "auto_start", "use_auto_start"),
+ ("SceneGameData", "glsl_extra_textures", "use_glsl_extra_textures"),
+ ("SceneGameData", "glsl_lights", "use_glsl_lights"),
+ ("SceneGameData", "glsl_nodes", "use_glsl_nodes"),
+ ("SceneGameData", "glsl_ramps", "use_glsl_ramps"),
+ ("SceneGameData", "glsl_shaders", "use_glsl_shaders"),
+ ("SceneGameData", "glsl_shadows", "use_glsl_shadows"),
+ ("Sequence", "blend_opacity", "blend_alpha"),
+ ("Sequence", "blend_mode", "blend_type"),
+ ("Sequence", "frame_final_length", "frame_final_duration"),
+ ("Sequence", "use_effect_default_fade", "use_default_fade"),
+ ("SequenceColorBalance", "inverse_gain", "invert_gain"),
+ ("SequenceColorBalance", "inverse_gamma", "invert_gamma"),
+ ("SequenceColorBalance", "inverse_lift", "invert_lift"),
+ ("EffectSequence", "multiply_colors", "color_multiply"),
+ ("EffectSequence", "de_interlace", "use_deinterlace"),
+ ("EffectSequence", "flip_x", "use_flip_x"),
+ ("EffectSequence", "flip_y", "use_flip_y"),
+ ("EffectSequence", "convert_float", "use_float"),
+ ("EffectSequence", "premultiply", "use_premultiply"),
+ ("EffectSequence", "proxy_custom_directory", "use_proxy_custom_directory"),
+ ("EffectSequence", "proxy_custom_file", "use_proxy_custom_file"),
+ ("EffectSequence", "reverse_frames", "use_reverse_frames"),
+ ("GlowSequence", "blur_distance", "blur_radius"),
+ ("GlowSequence", "only_boost", "use_only_boost"),
+ ("SpeedControlSequence", "curve_compress_y", "use_curve_compress_y"),
+ ("SpeedControlSequence", "curve_velocity", "use_curve_velocity"),
+ ("SpeedControlSequence", "frame_blending", "use_frame_blend"),
+ ("TransformSequence", "uniform_scale", "use_uniform_scale"),
+ ("ImageSequence", "animation_end_offset", "animation_offset_end"),
+ ("ImageSequence", "animation_start_offset", "animation_offset_start"),
+ ("ImageSequence", "multiply_colors", "color_multiply"),
+ ("ImageSequence", "de_interlace", "use_deinterlace"),
+ ("ImageSequence", "flip_x", "use_flip_x"),
+ ("ImageSequence", "flip_y", "use_flip_y"),
+ ("ImageSequence", "convert_float", "use_float"),
+ ("ImageSequence", "premultiply", "use_premultiply"),
+ ("ImageSequence", "proxy_custom_directory", "use_proxy_custom_directory"),
+ ("ImageSequence", "proxy_custom_file", "use_proxy_custom_file"),
+ ("ImageSequence", "reverse_frames", "use_reverse_frames"),
+ ("MetaSequence", "animation_end_offset", "animation_offset_end"),
+ ("MetaSequence", "animation_start_offset", "animation_offset_start"),
+ ("MetaSequence", "multiply_colors", "color_multiply"),
+ ("MetaSequence", "de_interlace", "use_deinterlace"),
+ ("MetaSequence", "flip_x", "use_flip_x"),
+ ("MetaSequence", "flip_y", "use_flip_y"),
+ ("MetaSequence", "convert_float", "use_float"),
+ ("MetaSequence", "premultiply", "use_premultiply"),
+ ("MetaSequence", "proxy_custom_directory", "use_proxy_custom_directory"),
+ ("MetaSequence", "proxy_custom_file", "use_proxy_custom_file"),
+ ("MetaSequence", "reverse_frames", "use_reverse_frames"),
+ ("MovieSequence", "animation_end_offset", "animation_offset_end"),
+ ("MovieSequence", "animation_start_offset", "animation_offset_start"),
+ ("MovieSequence", "multiply_colors", "color_multiply"),
+ ("MovieSequence", "de_interlace", "use_deinterlace"),
+ ("MovieSequence", "flip_x", "use_flip_x"),
+ ("MovieSequence", "flip_y", "use_flip_y"),
+ ("MovieSequence", "convert_float", "use_float"),
+ ("MovieSequence", "premultiply", "use_premultiply"),
+ ("MovieSequence", "proxy_custom_directory", "use_proxy_custom_directory"),
+ ("MovieSequence", "proxy_custom_file", "use_proxy_custom_file"),
+ ("MovieSequence", "reverse_frames", "use_reverse_frames"),
+ ("MulticamSequence", "animation_end_offset", "animation_offset_end"),
+ ("MulticamSequence", "animation_start_offset", "animation_offset_start"),
+ ("MulticamSequence", "multiply_colors", "color_multiply"),
+ ("MulticamSequence", "de_interlace", "use_deinterlace"),
+ ("MulticamSequence", "flip_x", "use_flip_x"),
+ ("MulticamSequence", "flip_y", "use_flip_y"),
+ ("MulticamSequence", "convert_float", "use_float"),
+ ("MulticamSequence", "premultiply", "use_premultiply"),
+ ("MulticamSequence", "proxy_custom_directory", "use_proxy_custom_directory"),
+ ("MulticamSequence", "proxy_custom_file", "use_proxy_custom_file"),
+ ("MulticamSequence", "reverse_frames", "use_reverse_frames"),
+ ("SceneSequence", "animation_end_offset", "animation_offset_end"),
+ ("SceneSequence", "animation_start_offset", "animation_offset_start"),
+ ("SceneSequence", "multiply_colors", "color_multiply"),
+ ("SceneSequence", "de_interlace", "use_deinterlace"),
+ ("SceneSequence", "flip_x", "use_flip_x"),
+ ("SceneSequence", "flip_y", "use_flip_y"),
+ ("SceneSequence", "convert_float", "use_float"),
+ ("SceneSequence", "premultiply", "use_premultiply"),
+ ("SceneSequence", "proxy_custom_directory", "use_proxy_custom_directory"),
+ ("SceneSequence", "proxy_custom_file", "use_proxy_custom_file"),
+ ("SceneSequence", "reverse_frames", "use_reverse_frames"),
+ ("SoundSequence", "animation_end_offset", "animation_offset_end"),
+ ("SoundSequence", "animation_start_offset", "animation_offset_start"),
+ ("SmokeDomainSettings", "smoke_domain_colli", "collision_extents"),
+ ("SmokeDomainSettings", "smoke_cache_high_comp", "point_cache_compress_high_type"),
+ ("SmokeDomainSettings", "smoke_cache_comp", "point_cache_compress_type"),
+ ("SmokeDomainSettings", "maxres", "resolution_max"),
+ ("SmokeDomainSettings", "smoothemitter", "smooth_emitter"),
+ ("SmokeDomainSettings", "dissolve_smoke", "use_dissolve_smoke"),
+ ("SmokeDomainSettings", "dissolve_smoke_log", "use_dissolve_smoke_log"),
+ ("SmokeDomainSettings", "highres", "use_high_resolution"),
+ ("SoftBodySettings", "bending", "bend"),
+ ("SoftBodySettings", "error_limit", "error_threshold"),
+ ("SoftBodySettings", "lcom", "location_mass_center"),
+ ("SoftBodySettings", "lrot", "rotation_estimate"),
+ ("SoftBodySettings", "lscale", "scale_estimate"),
+ ("SoftBodySettings", "maxstep", "step_max"),
+ ("SoftBodySettings", "minstep", "step_min"),
+ ("SoftBodySettings", "diagnose", "use_diagnose"),
+ ("SoftBodySettings", "edge_collision", "use_edge_collision"),
+ ("SoftBodySettings", "estimate_matrix", "use_estimate_matrix"),
+ ("SoftBodySettings", "face_collision", "use_face_collision"),
+ ("SoftBodySettings", "self_collision", "use_self_collision"),
+ ("SoftBodySettings", "stiff_quads", "use_stiff_quads"),
+ ("TexMapping", "maximum", "max"),
+ ("TexMapping", "minimum", "min"),
+ ("TexMapping", "has_maximum", "use_max"),
+ ("TexMapping", "has_minimum", "use_min"),
+ ("TextCharacterFormat", "bold", "use_bold"),
+ ("TextCharacterFormat", "italic", "use_italic"),
+ ("TextCharacterFormat", "underline", "use_underline"),
+ ("TextureSlot", "rgb_to_intensity", "use_rgb_to_intensity"),
+ ("TextureSlot", "stencil", "use_stencil"),
+ ("LampTextureSlot", "texture_coordinates", "texture_coords"),
+ ("LampTextureSlot", "map_color", "use_map_color"),
+ ("LampTextureSlot", "map_shadow", "use_map_shadow"),
+ ("MaterialTextureSlot", "coloremission_factor", "color_emission_factor"),
+ ("MaterialTextureSlot", "colordiff_factor", "diffuse_color_factor"),
+ ("MaterialTextureSlot", "x_mapping", "mapping_x"),
+ ("MaterialTextureSlot", "y_mapping", "mapping_y"),
+ ("MaterialTextureSlot", "z_mapping", "mapping_z"),
+ ("MaterialTextureSlot", "colorreflection_factor", "reflection_color_factor"),
+ ("MaterialTextureSlot", "colorspec_factor", "specular_color_factor"),
+ ("MaterialTextureSlot", "texture_coordinates", "texture_coords"),
+ ("MaterialTextureSlot", "colortransmission_factor", "transmission_color_factor"),
+ ("MaterialTextureSlot", "from_dupli", "use_from_dupli"),
+ ("MaterialTextureSlot", "from_original", "use_from_original"),
+ ("MaterialTextureSlot", "map_alpha", "use_map_alpha"),
+ ("MaterialTextureSlot", "map_ambient", "use_map_ambient"),
+ ("MaterialTextureSlot", "map_colordiff", "use_map_color_diffuse"),
+ ("MaterialTextureSlot", "map_coloremission", "use_map_color_emission"),
+ ("MaterialTextureSlot", "map_colorreflection", "use_map_color_reflection"),
+ ("MaterialTextureSlot", "map_colorspec", "use_map_color_spec"),
+ ("MaterialTextureSlot", "map_colortransmission", "use_map_color_transmission"),
+ ("MaterialTextureSlot", "map_density", "use_map_density"),
+ ("MaterialTextureSlot", "map_diffuse", "use_map_diffuse"),
+ ("MaterialTextureSlot", "map_displacement", "use_map_displacement"),
+ ("MaterialTextureSlot", "map_emission", "use_map_emission"),
+ ("MaterialTextureSlot", "map_emit", "use_map_emit"),
+ ("MaterialTextureSlot", "map_hardness", "use_map_hardness"),
+ ("MaterialTextureSlot", "map_mirror", "use_map_mirror"),
+ ("MaterialTextureSlot", "map_normal", "use_map_normal"),
+ ("MaterialTextureSlot", "map_raymir", "use_map_raymir"),
+ ("MaterialTextureSlot", "map_reflection", "use_map_reflect"),
+ ("MaterialTextureSlot", "map_scattering", "use_map_scatter"),
+ ("MaterialTextureSlot", "map_specular", "use_map_specular"),
+ ("MaterialTextureSlot", "map_translucency", "use_map_translucency"),
+ ("MaterialTextureSlot", "map_warp", "use_map_warp"),
+ ("WorldTextureSlot", "texture_coordinates", "texture_coords"),
+ ("WorldTextureSlot", "map_blend", "use_map_blend"),
+ ("WorldTextureSlot", "map_horizon", "use_map_horizon"),
+ ("WorldTextureSlot", "map_zenith_down", "use_map_zenith_down"),
+ ("WorldTextureSlot", "map_zenith_up", "use_map_zenith_up"),
+ ("VoxelData", "still_frame_number", "still_frame"),
+ ("WorldLighting", "ao_blend_mode", "ao_blend_type"),
+ ("WorldLighting", "error_tolerance", "error_threshold"),
+ ("WorldLighting", "use_ambient_occlusion", "use_ambient_occlusian"),
+ ("WorldLighting", "pixel_cache", "use_cache"),
+ ("WorldLighting", "use_environment_lighting", "use_environment_light"),
+ ("WorldLighting", "use_indirect_lighting", "use_indirect_light"),
+ ("WorldStarsSettings", "color_randomization", "color_random"),
+ ("WorldStarsSettings", "min_distance", "distance_min"),
+ ]
+
+
+import bpy
+
+
+class UpdateAnimData(bpy.types.Operator):
+ ''''''
+ bl_idname = "anim.update_data_paths"
+ bl_label = "Update Animation Data"
+
+ def execute(self, context):
+ import animsys_refactor
+ reload(animsys_refactor)
+ animsys_refactor.update_data_paths(data_path_update)
+ return {'FINISHED'}
+
+
+if __name__ == "__main__":
+ bpy.ops.anim.update_data_paths()
+
+def register():
+ pass \ No newline at end of file
diff --git a/release/scripts/op/fcurve_euler_filter.py b/release/scripts/op/fcurve_euler_filter.py
index c6f5ddd12e4..a2730e16843 100644
--- a/release/scripts/op/fcurve_euler_filter.py
+++ b/release/scripts/op/fcurve_euler_filter.py
@@ -7,7 +7,7 @@ def main(context):
keys = []
for k in fcv.keyframe_points:
- keys.append([k.handle1.copy(), k.co.copy(), k.handle2.copy()])
+ keys.append([k.handle_left.copy(), k.co.copy(), k.handle_right.copy()])
print(keys)
for i in range(len(keys)):
@@ -34,9 +34,9 @@ def main(context):
for i in range(len(keys)):
for x in range(2):
- fcv.keyframe_points[i].handle1[x] = keys[i][0][x]
+ fcv.keyframe_points[i].handle_left[x] = keys[i][0][x]
fcv.keyframe_points[i].co[x] = keys[i][1][x]
- fcv.keyframe_points[i].handle2[x] = keys[i][2][x]
+ fcv.keyframe_points[i].handle_right[x] = keys[i][2][x]
flist = bpy.context.active_object.animation_data.action.fcurves
for f in flist:
diff --git a/release/scripts/op/image.py b/release/scripts/op/image.py
index c393041d22c..c8160ded9a4 100644
--- a/release/scripts/op/image.py
+++ b/release/scripts/op/image.py
@@ -92,7 +92,7 @@ class SaveDirty(bpy.types.Operator):
def execute(self, context):
unique_paths = set()
for image in bpy.data.images:
- if image.dirty:
+ if image.is_dirty:
filepath = bpy.path.abspath(image.filepath)
if "\\" not in filepath and "/" not in filepath:
self.report({'WARNING'}, "Invalid path: " + filepath)
diff --git a/release/scripts/op/mesh.py b/release/scripts/op/mesh.py
index 736ec41ba14..9e684cea9c2 100644
--- a/release/scripts/op/mesh.py
+++ b/release/scripts/op/mesh.py
@@ -91,7 +91,7 @@ class MeshMirrorUV(bpy.types.Operator):
mirror_gt = {}
mirror_lt = {}
- vcos = [v.co.to_tuple(5) for v in mesh.verts]
+ vcos = [v.co.to_tuple(5) for v in mesh.vertices]
for i, co in enumerate(vcos):
if co[0] > 0.0:
@@ -102,7 +102,7 @@ class MeshMirrorUV(bpy.types.Operator):
mirror_gt[co] = i
mirror_lt[co] = i
- #for i, v in enumerate(mesh.verts):
+ #for i, v in enumerate(mesh.vertices):
vmap = {}
for mirror_a, mirror_b in (mirror_gt, mirror_lt), (mirror_lt, mirror_gt):
for co, i in mirror_a.items():
@@ -130,14 +130,14 @@ class MeshMirrorUV(bpy.types.Operator):
# find mirror faces
mirror_fm = {}
for i, f in enumerate(faces):
- verts = f.verts[:]
+ verts = f.vertices[:]
verts.sort()
verts = tuple(verts)
mirror_fm[verts] = i
fmap = {}
for i, f in enumerate(faces):
- verts = [vmap.get(j) for j in f.verts]
+ verts = [vmap.get(j) for j in f.vertices]
if None not in verts:
verts.sort()
j = mirror_fm.get(tuple(verts))
@@ -159,8 +159,8 @@ class MeshMirrorUV(bpy.types.Operator):
uv2 = fuvs_cpy[j]
# get the correct rotation
- v1 = faces[j].verts[:]
- v2 = [vmap[k] for k in faces[i].verts[:]]
+ v1 = faces[j].vertices[:]
+ v2 = [vmap[k] for k in faces[i].vertices[:]]
for k in range(len(uv1)):
diff --git a/release/scripts/op/nla.py b/release/scripts/op/nla.py
index bec5f5b3909..44bd5d91e32 100644
--- a/release/scripts/op/nla.py
+++ b/release/scripts/op/nla.py
@@ -150,7 +150,7 @@ class BakeAction(bpy.types.Operator):
def execute(self, context):
props = self.properties
- action = bake(props.frame_start, props.frame_end, props.step, props.only_selected)
+ action = bake(props.frame_start, props.frame_end, props.step, props.show_only_selected)
# basic cleanup, could move elsewhere
for fcu in action.fcurves:
diff --git a/release/scripts/op/object.py b/release/scripts/op/object.py
index 476db76735e..56c43c0728c 100644
--- a/release/scripts/op/object.py
+++ b/release/scripts/op/object.py
@@ -256,7 +256,7 @@ class ShapeTransfer(bpy.types.Operator):
key = ob.add_shape_key(from_mix=False) # we need a rest
key.name = name
ob.active_shape_key_index = len(me.shape_keys.keys) - 1
- ob.shape_key_lock = True
+ ob.show_shape_key = True
from geometry import BarycentricTransform
from mathutils import Vector
@@ -269,28 +269,28 @@ class ShapeTransfer(bpy.types.Operator):
orig_shape_coords = me_cos(ob_act.active_shape_key.data)
- orig_normals = me_nos(me.verts)
- # orig_coords = me_cos(me.verts) # the actual mverts location isnt as relyable as the base shape :S
+ orig_normals = me_nos(me.vertices)
+ # orig_coords = me_cos(me.vertices) # the actual mverts location isnt as relyable as the base shape :S
orig_coords = me_cos(me.shape_keys.keys[0].data)
for ob_other in objects:
me_other = ob_other.data
- if len(me_other.verts) != len(me.verts):
+ if len(me_other.vertices) != len(me.vertices):
self.report({'WARNING'}, "Skipping '%s', vertex count differs" % ob_other.name)
continue
- target_normals = me_nos(me_other.verts)
+ target_normals = me_nos(me_other.vertices)
if me_other.shape_keys:
target_coords = me_cos(me_other.shape_keys.keys[0].data)
else:
- target_coords = me_cos(me_other.verts)
+ target_coords = me_cos(me_other.vertices)
ob_add_shape(ob_other, orig_key_name)
# editing the final coords, only list that stores wrapped coords
target_shape_coords = [v.co for v in ob_other.active_shape_key.data]
- median_coords = [[] for i in range(len(me.verts))]
+ median_coords = [[] for i in range(len(me.vertices))]
# Method 1, edge
if mode == 'OFFSET':
@@ -299,7 +299,7 @@ class ShapeTransfer(bpy.types.Operator):
elif mode == 'RELATIVE_FACE':
for face in me.faces:
- i1, i2, i3, i4 = face.verts_raw
+ i1, i2, i3, i4 = face.vertices_raw
if i4 != 0:
pt = BarycentricTransform(orig_shape_coords[i1],
orig_coords[i4], orig_coords[i1], orig_coords[i2],
@@ -339,7 +339,7 @@ class ShapeTransfer(bpy.types.Operator):
elif mode == 'RELATIVE_EDGE':
for ed in me.edges:
- i1, i2 = ed.verts
+ i1, i2 = ed.vertices
v1, v2 = orig_coords[i1], orig_coords[i2]
edge_length = (v1 - v2).length
n1loc = v1 + orig_normals[i1] * edge_length
@@ -505,8 +505,8 @@ class MakeDupliFace(bpy.types.Operator):
mesh = bpy.data.meshes.new(data.name + "_dupli")
mesh.add_geometry(int(len(face_verts) / 3), 0, int(len(face_verts) / (4 * 3)))
- mesh.verts.foreach_set("co", face_verts)
- mesh.faces.foreach_set("verts_raw", faces)
+ mesh.vertices.foreach_set("co", face_verts)
+ mesh.faces.foreach_set("vertices_raw", faces)
mesh.update() # generates edge data
# pick an object to use
diff --git a/release/scripts/op/presets.py b/release/scripts/op/presets.py
index 2012ba913fb..43e2cda5d53 100644
--- a/release/scripts/op/presets.py
+++ b/release/scripts/op/presets.py
@@ -98,16 +98,16 @@ class AddPresetRender(AddPresetBase, bpy.types.Operator):
name = AddPresetBase.name
preset_values = [
- "bpy.context.scene.render.resolution_x",
- "bpy.context.scene.render.resolution_y",
- "bpy.context.scene.render.pixel_aspect_x",
- "bpy.context.scene.render.pixel_aspect_y",
+ "bpy.context.scene.render.field_order",
"bpy.context.scene.render.fps",
"bpy.context.scene.render.fps_base",
+ "bpy.context.scene.render.pixel_aspect_x",
+ "bpy.context.scene.render.pixel_aspect_y",
"bpy.context.scene.render.resolution_percentage",
- "bpy.context.scene.render.fields",
- "bpy.context.scene.render.field_order",
- "bpy.context.scene.render.fields_still",
+ "bpy.context.scene.render.resolution_x",
+ "bpy.context.scene.render.resolution_y",
+ "bpy.context.scene.render.use_fields",
+ "bpy.context.scene.render.use_fields_still",
]
preset_subdir = "render"
@@ -125,7 +125,7 @@ class AddPresetSSS(AddPresetBase, bpy.types.Operator):
"bpy.context.material.subsurface_scattering.color[1]",
"bpy.context.material.subsurface_scattering.color[2]",
"bpy.context.material.subsurface_scattering.color_factor",
- "bpy.context.material.subsurface_scattering.error_tolerance",
+ "bpy.context.material.subsurface_scattering.error_threshold",
"bpy.context.material.subsurface_scattering.front",
"bpy.context.material.subsurface_scattering.ior",
"bpy.context.material.subsurface_scattering.radius[0]",
@@ -145,12 +145,12 @@ class AddPresetCloth(AddPresetBase, bpy.types.Operator):
name = AddPresetBase.name
preset_values = [
- "bpy.context.cloth.settings.quality",
- "bpy.context.cloth.settings.mass",
- "bpy.context.cloth.settings.structural_stiffness",
+ "bpy.context.cloth.settings.air_damping",
"bpy.context.cloth.settings.bending_stiffness",
+ "bpy.context.cloth.settings.mass",
+ "bpy.context.cloth.settings.quality",
"bpy.context.cloth.settings.spring_damping",
- "bpy.context.cloth.settings.air_damping",
+ "bpy.context.cloth.settings.structural_stiffness",
]
preset_subdir = "cloth"
@@ -163,19 +163,19 @@ class AddPresetSunSky(AddPresetBase, bpy.types.Operator):
name = AddPresetBase.name
preset_values = [
+ "bpy.context.object.data.sky.atmosphere_extinction",
+ "bpy.context.object.data.sky.atmosphere_inscattering",
"bpy.context.object.data.sky.atmosphere_turbidity",
- "bpy.context.object.data.sky.sky_blend_type",
- "bpy.context.object.data.sky.sky_blend",
+ "bpy.context.object.data.sky.backscattered_light",
"bpy.context.object.data.sky.horizon_brightness",
"bpy.context.object.data.sky.spread",
- "bpy.context.object.data.sky.sky_color_space",
- "bpy.context.object.data.sky.sky_exposure",
"bpy.context.object.data.sky.sun_brightness",
- "bpy.context.object.data.sky.sun_size",
- "bpy.context.object.data.sky.backscattered_light",
"bpy.context.object.data.sky.sun_intensity",
- "bpy.context.object.data.sky.atmosphere_inscattering",
- "bpy.context.object.data.sky.atmosphere_extinction",
+ "bpy.context.object.data.sky.sun_size",
+ "bpy.context.object.data.sky.use_sky_blend",
+ "bpy.context.object.data.sky.use_sky_blend_type",
+ "bpy.context.object.data.sky.use_sky_color_space",
+ "bpy.context.object.data.sky.use_sky_exposure",
]
preset_subdir = "sunsky"
@@ -189,16 +189,16 @@ class AddPresetInteraction(AddPresetBase, bpy.types.Operator):
save_keyconfig = True
preset_values = [
- "bpy.context.user_preferences.edit.drag_immediately",
- "bpy.context.user_preferences.edit.insertkey_xyz_to_rgb",
+ "bpy.context.user_preferences.edit.use_drag_immediately",
+ "bpy.context.user_preferences.edit.use_insertkey_xyz_to_rgb",
+ "bpy.context.user_preferences.inputs.invert_mouse_wheel_zoom",
"bpy.context.user_preferences.inputs.select_mouse",
- "bpy.context.user_preferences.inputs.zoom_style",
- "bpy.context.user_preferences.inputs.zoom_axis",
- "bpy.context.user_preferences.inputs.view_rotation",
- "bpy.context.user_preferences.inputs.invert_zoom_direction",
- "bpy.context.user_preferences.inputs.emulate_numpad",
- "bpy.context.user_preferences.inputs.emulate_3_button_mouse",
- "bpy.context.user_preferences.inputs.continuous_mouse",
+ "bpy.context.user_preferences.inputs.use_emulate_numpad",
+ "bpy.context.user_preferences.inputs.use_mouse_continuous",
+ "bpy.context.user_preferences.inputs.use_mouse_emulate_3_button",
+ "bpy.context.user_preferences.inputs.view_rotate_method",
+ "bpy.context.user_preferences.inputs.view_zoom_axis",
+ "bpy.context.user_preferences.inputs.view_zoom_method",
]
preset_subdir = "interaction"
diff --git a/release/scripts/op/screen_play_rendered_anim.py b/release/scripts/op/screen_play_rendered_anim.py
index 8775a144b2d..80260755714 100644
--- a/release/scripts/op/screen_play_rendered_anim.py
+++ b/release/scripts/op/screen_play_rendered_anim.py
@@ -79,7 +79,7 @@ class PlayRenderedAnim(bpy.types.Operator):
preset = prefs.filepaths.animation_player_preset
player_path = prefs.filepaths.animation_player
- file_path = bpy.path.abspath(rd.output_path)
+ file_path = bpy.path.abspath(rd.filepath)
is_movie = rd.is_movie_format
# try and guess a command line if it doesn't exist
diff --git a/release/scripts/op/sequencer.py b/release/scripts/op/sequencer.py
index cbb7d00e659..feedb5cb4a8 100644
--- a/release/scripts/op/sequencer.py
+++ b/release/scripts/op/sequencer.py
@@ -129,7 +129,7 @@ class SequencerDeinterlaceSelectedMovies(bpy.types.Operator):
def execute(self, context):
for s in context.scene.sequence_editor.sequences_all:
if s.select and s.type == 'MOVIE':
- s.de_interlace = True
+ s.use_deinterlace = True
return {'FINISHED'}
diff --git a/release/scripts/op/uv.py b/release/scripts/op/uv.py
index 7d677181858..cf3d68787c0 100644
--- a/release/scripts/op/uv.py
+++ b/release/scripts/op/uv.py
@@ -76,7 +76,7 @@ class ExportUVLayout(bpy.types.Operator):
local_image = Ellipsis
- if context.tool_settings.uv_local_view:
+ if context.tool_settings.show_uv_local_view:
space_data = self._space_image(context)
if space_data:
local_image = space_data.image
diff --git a/release/scripts/op/uvcalc_follow_active.py b/release/scripts/op/uvcalc_follow_active.py
index f02ee497999..1f80e704f93 100644
--- a/release/scripts/op/uvcalc_follow_active.py
+++ b/release/scripts/op/uvcalc_follow_active.py
@@ -26,7 +26,7 @@ import bpy
def extend(obj, operator, EXTEND_MODE):
me = obj.data
- me_verts = me.verts
+ me_verts = me.vertices
# script will fail without UVs
if not me.active_uv_texture:
me.add_uv_texture()
@@ -54,8 +54,8 @@ def extend(obj, operator, EXTEND_MODE):
# assume a quad
return [(vi[0], vi[1]), (vi[1], vi[2]), (vi[2], vi[3]), (vi[3], vi[0])]
- vidx_source = face_source.verts
- vidx_target = face_target.verts
+ vidx_source = face_source.vertices
+ vidx_target = face_target.vertices
faceUVsource = me.active_uv_texture.data[face_source.index]
uvs_source = [faceUVsource.uv1, faceUVsource.uv2, faceUVsource.uv3, faceUVsource.uv4]
@@ -146,7 +146,7 @@ def extend(obj, operator, EXTEND_MODE):
operator.report({'ERROR'}, "No active face.")
return
- face_sel = [f for f in me.faces if len(f.verts) == 4 and f.select]
+ face_sel = [f for f in me.faces if len(f.vertices) == 4 and f.select]
face_act_local_index = -1
for i, f in enumerate(face_sel):
@@ -177,11 +177,9 @@ def extend(obj, operator, EXTEND_MODE):
except:
edge_faces[edkey] = [i]
- #SEAM = me.edges.seam
-
if EXTEND_MODE == 'LENGTH':
- edge_loops = me.edge_loops_from_faces(face_sel, [ed.key for ed in me.edges if ed.seam])
- me_verts = me.verts
+ edge_loops = me.edge_loops_from_faces(face_sel, [ed.key for ed in me.edges if ed.use_seam])
+ me_verts = me.vertices
for loop in edge_loops:
looplen = [0.0]
for ed in loop:
@@ -192,7 +190,7 @@ def extend(obj, operator, EXTEND_MODE):
# remove seams, so we dont map accross seams.
for ed in me.edges:
- if ed.seam:
+ if ed.use_seam:
# remove the edge pair if we can
try:
del edge_faces[ed.key]
diff --git a/release/scripts/op/uvcalc_smart_project.py b/release/scripts/op/uvcalc_smart_project.py
index bbd0102fc61..0589b7e861a 100644
--- a/release/scripts/op/uvcalc_smart_project.py
+++ b/release/scripts/op/uvcalc_smart_project.py
@@ -604,7 +604,7 @@ def getUvIslands(faceGroups, me):
# Get seams so we dont cross over seams
edge_seams = {} # shoudl be a set
for ed in me.edges:
- if ed.seam:
+ if ed.use_seam:
edge_seams[ed.key] = None # dummy var- use sets!
# Done finding seams
@@ -792,7 +792,7 @@ def VectoMat(vec):
class thickface(object):
__slost__= 'v', 'uv', 'no', 'area', 'edge_keys'
def __init__(self, face, uvface, mesh_verts):
- self.v = [mesh_verts[i] for i in face.verts]
+ self.v = [mesh_verts[i] for i in face.vertices]
if len(self.v)==4:
self.uv = uvface.uv1, uvface.uv2, uvface.uv3, uvface.uv4
else:
@@ -896,7 +896,7 @@ def main(context, island_margin, projection_limit):
me.add_uv_texture()
uv_layer = me.active_uv_texture.data
- me_verts = list(me.verts)
+ me_verts = list(me.vertices)
if USER_ONLY_SELECTED_FACES:
meshFaces = [thickface(f, uv_layer[i], me_verts) for i, f in enumerate(me.faces) if f.select]
diff --git a/release/scripts/op/vertexpaint_dirt.py b/release/scripts/op/vertexpaint_dirt.py
index 21c19d528cc..72317cf8c11 100644
--- a/release/scripts/op/vertexpaint_dirt.py
+++ b/release/scripts/op/vertexpaint_dirt.py
@@ -43,7 +43,7 @@ def applyVertexDirt(me, blur_iterations, blur_strength, clamp_dirt, clamp_clean,
#BPyMesh.meshCalcNormals(me)
- vert_tone = [0.0] * len(me.verts)
+ vert_tone = [0.0] * len(me.vertices)
min_tone = 180.0
max_tone = 0.0
@@ -51,21 +51,21 @@ def applyVertexDirt(me, blur_iterations, blur_strength, clamp_dirt, clamp_clean,
# create lookup table for each vertex's connected vertices (via edges)
con = []
- con = [[] for i in range(len(me.verts))]
+ con = [[] for i in range(len(me.vertices))]
# add connected verts
for e in me.edges:
- con[e.verts[0]].append(e.verts[1])
- con[e.verts[1]].append(e.verts[0])
+ con[e.vertices[0]].append(e.vertices[1])
+ con[e.vertices[1]].append(e.vertices[0])
- for i, v in enumerate(me.verts):
+ for i, v in enumerate(me.vertices):
vec = Vector()
no = v.normal
co = v.co
# get the direction of the vectors between the vertex and it's connected vertices
for c in con[i]:
- vec += (me.verts[c].co - co).normalize()
+ vec += (me.vertices[c].co - co).normalize()
# normalize the vector by dividing by the number of connected verts
tot_con = len(con[i])
@@ -133,9 +133,9 @@ def applyVertexDirt(me, blur_iterations, blur_strength, clamp_dirt, clamp_clean,
f_col = [f_col.color1, f_col.color2, f_col.color3, f_col.color4]
- for j, v in enumerate(f.verts):
+ for j, v in enumerate(f.vertices):
col = f_col[j]
- tone = vert_tone[me.verts[v].index]
+ tone = vert_tone[me.vertices[v].index]
tone = (tone - min_tone) / tone_range
if dirt_only:
diff --git a/release/scripts/presets/interaction/blender.py b/release/scripts/presets/interaction/blender.py
index 63006b2008d..229aa657b2f 100644
--- a/release/scripts/presets/interaction/blender.py
+++ b/release/scripts/presets/interaction/blender.py
@@ -4,13 +4,13 @@ import bpy
wm = bpy.context.manager
wm.active_keyconfig = wm.keyconfigs['Blender']
-bpy.context.user_preferences.view.auto_depth = False
-bpy.context.user_preferences.view.zoom_to_mouse = False
-bpy.context.user_preferences.view.rotate_around_selection = False
-bpy.context.user_preferences.edit.drag_immediately = False
-bpy.context.user_preferences.edit.insertkey_xyz_to_rgb = False
+bpy.context.user_preferences.view.use_mouse_auto_depth = False
+bpy.context.user_preferences.view.use_zoom_to_mouse = False
+bpy.context.user_preferences.view.use_rotate_around_active = False
+bpy.context.user_preferences.edit.use_drag_immediately = False
+bpy.context.user_preferences.edit.use_insertkey_xyz_to_rgb = False
bpy.context.user_preferences.inputs.select_mouse = 'RIGHT'
-bpy.context.user_preferences.inputs.zoom_style = 'DOLLY'
-bpy.context.user_preferences.inputs.zoom_axis = 'VERTICAL'
-bpy.context.user_preferences.inputs.view_rotation = 'TRACKBALL'
-bpy.context.user_preferences.inputs.invert_zoom_direction = False
+bpy.context.user_preferences.inputs.view_zoom_method = 'DOLLY'
+bpy.context.user_preferences.inputs.view_zoom_axis = 'VERTICAL'
+bpy.context.user_preferences.inputs.view_rotate_method = 'TRACKBALL'
+bpy.context.user_preferences.inputs.invert_mouse_wheel_zoom = False
diff --git a/release/scripts/presets/interaction/maya.py b/release/scripts/presets/interaction/maya.py
index ba4eae89982..ccd95abf75e 100644
--- a/release/scripts/presets/interaction/maya.py
+++ b/release/scripts/presets/interaction/maya.py
@@ -7,7 +7,7 @@ kc = wm.add_keyconfig('Maya')
# Map 3D View
km = kc.add_keymap('3D View', space_type='VIEW_3D', region_type='WINDOW', modal=False)
-kmi = km.items.add('view3d.manipulator', 'LEFTMOUSE', 'PRESS', any=True)
+kmi = km.items.add('view3d.show_manipulator', 'LEFTMOUSE', 'PRESS', any=True)
kmi.properties.release_confirm = True
kmi = km.items.add('view3d.cursor3d', 'ACTIONMOUSE', 'PRESS')
kmi = km.items.add('view3d.rotate', 'LEFTMOUSE', 'PRESS', alt=True)
@@ -126,11 +126,11 @@ kmi.properties.nr = 9
kmi = km.items.add('view3d.layers', 'ZERO', 'PRESS', any=True)
kmi.properties.nr = 10
kmi = km.items.add('wm.context_toggle_enum', 'Z', 'PRESS')
-kmi.properties.data_path = 'space_data.viewport_shading'
+kmi.properties.data_path = 'space_data.viewport_shade'
kmi.properties.value_1 = 'SOLID'
kmi.properties.value_2 = 'WIREFRAME'
kmi = km.items.add('wm.context_toggle_enum', 'Z', 'PRESS', alt=True)
-kmi.properties.data_path = 'space_data.viewport_shading'
+kmi.properties.data_path = 'space_data.viewport_shade'
kmi.properties.value_1 = 'TEXTURED'
kmi.properties.value_2 = 'SOLID'
kmi = km.items.add('view3d.select', 'SELECTMOUSE', 'PRESS')
@@ -173,9 +173,9 @@ kmi = km.items.add('wm.context_set_enum', 'COMMA', 'PRESS', ctrl=True)
kmi.properties.data_path = 'space_data.pivot_point'
kmi.properties.value = 'MEDIAN_POINT'
kmi = km.items.add('wm.context_toggle', 'COMMA', 'PRESS', alt=True)
-kmi.properties.data_path = 'space_data.pivot_point_align'
+kmi.properties.data_path = 'space_data.use_pivot_point_align'
kmi = km.items.add('wm.context_toggle', 'Q', 'PRESS')
-kmi.properties.data_path = 'space_data.manipulator'
+kmi.properties.data_path = 'space_data.show_manipulator'
kmi = km.items.add('wm.context_set_enum', 'PERIOD', 'PRESS')
kmi.properties.data_path = 'space_data.pivot_point'
kmi.properties.value = 'CURSOR'
@@ -212,9 +212,9 @@ kmi.properties.extend = True
km = kc.add_keymap('Object Mode', space_type='EMPTY', region_type='WINDOW', modal=False)
kmi = km.items.add('wm.context_cycle_enum', 'O', 'PRESS', shift=True)
-kmi.properties.data_path = 'tool_settings.proportional_editing_falloff'
+kmi.properties.data_path = 'tool_settings.proportional_edit_falloff'
kmi = km.items.add('wm.context_toggle_enum', 'O', 'PRESS')
-kmi.properties.data_path = 'tool_settings.proportional_editing'
+kmi.properties.data_path = 'tool_settings.proportional_edit'
kmi.properties.value_1 = 'DISABLED'
kmi.properties.value_2 = 'ENABLED'
kmi = km.items.add('view3d.game_start', 'P', 'PRESS')
@@ -363,13 +363,13 @@ kmi.properties.name = 'VIEW3D_MT_uv_map'
kmi = km.items.add('wm.call_menu', 'G', 'PRESS', ctrl=True)
kmi.properties.name = 'VIEW3D_MT_vertex_group'
kmi = km.items.add('wm.context_cycle_enum', 'O', 'PRESS', shift=True)
-kmi.properties.data_path = 'tool_settings.proportional_editing_falloff'
+kmi.properties.data_path = 'tool_settings.proportional_edit_falloff'
kmi = km.items.add('wm.context_toggle_enum', 'O', 'PRESS')
-kmi.properties.data_path = 'tool_settings.proportional_editing'
+kmi.properties.data_path = 'tool_settings.proportional_edit'
kmi.properties.value_1 = 'DISABLED'
kmi.properties.value_2 = 'ENABLED'
kmi = km.items.add('wm.context_toggle_enum', 'O', 'PRESS', alt=True)
-kmi.properties.data_path = 'tool_settings.proportional_editing'
+kmi.properties.data_path = 'tool_settings.proportional_edit'
kmi.properties.value_1 = 'DISABLED'
kmi.properties.value_2 = 'CONNECTED'
kmi = km.items.add('mesh.select_all', 'SELECTMOUSE', 'CLICK')
@@ -377,10 +377,10 @@ kmi.properties.action = 'DESELECT'
wm.active_keyconfig = kc
-bpy.context.user_preferences.edit.drag_immediately = True
-bpy.context.user_preferences.edit.insertkey_xyz_to_rgb = False
+bpy.context.user_preferences.edit.use_drag_immediately = True
+bpy.context.user_preferences.edit.use_insertkey_xyz_to_rgb = False
bpy.context.user_preferences.inputs.select_mouse = 'LEFT'
-bpy.context.user_preferences.inputs.zoom_style = 'DOLLY'
-bpy.context.user_preferences.inputs.zoom_axis = 'HORIZONTAL'
-bpy.context.user_preferences.inputs.view_rotation = 'TURNTABLE'
-bpy.context.user_preferences.inputs.invert_zoom_direction = True
+bpy.context.user_preferences.inputs.view_zoom_method = 'DOLLY'
+bpy.context.user_preferences.inputs.view_zoom_axis = 'HORIZONTAL'
+bpy.context.user_preferences.inputs.view_rotate_method = 'TURNTABLE'
+bpy.context.user_preferences.inputs.invert_mouse_wheel_zoom = True
diff --git a/release/scripts/templates/operator_uv.py b/release/scripts/templates/operator_uv.py
index 46ce15f090d..a18aaf358c8 100644
--- a/release/scripts/templates/operator_uv.py
+++ b/release/scripts/templates/operator_uv.py
@@ -15,10 +15,10 @@ def main(context):
# adjust UVs
for i, uv in enumerate(mesh.active_uv_texture.data):
uvs = uv.uv1, uv.uv2, uv.uv3, uv.uv4
- for j, v_idx in enumerate(mesh.faces[i].verts):
+ for j, v_idx in enumerate(mesh.faces[i].vertices):
if uv.select_uv[j]:
# apply the location of the vertex as a UV
- uvs[j][:] = mesh.verts[v_idx].co.xy
+ uvs[j][:] = mesh.vertices[v_idx].co.xy
if is_editmode:
diff --git a/release/scripts/ui/properties_animviz.py b/release/scripts/ui/properties_animviz.py
index b337485ae10..9b605d02215 100644
--- a/release/scripts/ui/properties_animviz.py
+++ b/release/scripts/ui/properties_animviz.py
@@ -32,7 +32,7 @@ class MotionPathButtonsPanel():
def draw_settings(self, context, avs, bones=False):
layout = self.layout
- mps = avs.motion_paths
+ mps = avs.motion_path
layout.prop(mps, "type", expand=True)
@@ -41,8 +41,8 @@ class MotionPathButtonsPanel():
col = split.column()
sub = col.column(align=True)
if (mps.type == 'CURRENT_FRAME'):
- sub.prop(mps, "before_current", text="Before")
- sub.prop(mps, "after_current", text="After")
+ sub.prop(mps, "frame_before", text="Before")
+ sub.prop(mps, "frame_after", text="After")
elif (mps.type == 'RANGE'):
sub.prop(mps, "frame_start", text="Start")
sub.prop(mps, "frame_end", text="End")
@@ -54,9 +54,9 @@ class MotionPathButtonsPanel():
col = split.column()
col.label(text="Display:")
col.prop(mps, "show_frame_numbers", text="Frame Numbers")
- col.prop(mps, "highlight_keyframes", text="Keyframes")
+ col.prop(mps, "show_keyframe_highlight", text="Keyframes")
if bones:
- col.prop(mps, "search_all_action_keyframes", text="+ Non-Grouped Keyframes")
+ col.prop(mps, "show_keyframe_action_all", text="+ Non-Grouped Keyframes")
col.prop(mps, "show_keyframe_numbers", text="Keyframe Numbers")
@@ -89,7 +89,7 @@ class OnionSkinButtonsPanel():
col = split.column()
col.label(text="Display:")
- col.prop(arm, "ghost_only_selected", text="Selected Only")
+ col.prop(arm, "show_only_ghost_selected", text="Selected Only")
diff --git a/release/scripts/ui/properties_data_armature.py b/release/scripts/ui/properties_data_armature.py
index 3d8f2cdc092..7de06554751 100644
--- a/release/scripts/ui/properties_data_armature.py
+++ b/release/scripts/ui/properties_data_armature.py
@@ -51,11 +51,6 @@ class DATA_PT_context_arm(ArmatureButtonsPanel, bpy.types.Panel):
split.separator()
-class DATA_PT_custom_props_arm(ArmatureButtonsPanel, PropertyPanel, bpy.types.Panel):
- COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
- _context_path = "object.data"
-
-
class DATA_PT_skeleton(ArmatureButtonsPanel, bpy.types.Panel):
bl_label = "Skeleton"
@@ -70,20 +65,20 @@ class DATA_PT_skeleton(ArmatureButtonsPanel, bpy.types.Panel):
col = split.column()
col.label(text="Layers:")
- col.prop(arm, "layer", text="")
+ col.prop(arm, "layers", text="")
col.label(text="Protected Layers:")
- col.prop(arm, "layer_protection", text="")
+ col.prop(arm, "layers_protected", text="")
col.label(text="Deform:")
split = layout.split()
col = split.column()
- col.prop(arm, "deform_vertexgroups", text="Vertex Groups")
- col.prop(arm, "deform_envelope", text="Envelopes")
+ col.prop(arm, "use_deform_vertex_groups", text="Vertex Groups")
+ col.prop(arm, "use_deform_envelopes", text="Envelopes")
col = split.column()
- col.prop(arm, "deform_quaternion", text="Quaternion")
+ col.prop(arm, "use_deform_preserve_volume", text="Quaternion")
class DATA_PT_display(ArmatureButtonsPanel, bpy.types.Panel):
@@ -95,19 +90,19 @@ class DATA_PT_display(ArmatureButtonsPanel, bpy.types.Panel):
ob = context.object
arm = context.armature
- layout.row().prop(arm, "drawtype", expand=True)
+ layout.row().prop(arm, "draw_type", expand=True)
split = layout.split()
col = split.column()
- col.prop(arm, "draw_names", text="Names")
- col.prop(arm, "draw_axes", text="Axes")
- col.prop(arm, "draw_custom_bone_shapes", text="Shapes")
+ col.prop(arm, "show_names", text="Names")
+ col.prop(arm, "show_axes", text="Axes")
+ col.prop(arm, "show_bone_custom_shapes", text="Shapes")
col = split.column()
- col.prop(arm, "draw_group_colors", text="Colors")
- col.prop(ob, "x_ray", text="X-Ray")
- col.prop(arm, "delay_deform", text="Delay Refresh")
+ col.prop(arm, "show_group_colors", text="Colors")
+ col.prop(ob, "show_x_ray", text="X-Ray")
+ col.prop(arm, "use_deform_delay", text="Delay Refresh")
class DATA_PT_bone_groups(ArmatureButtonsPanel, bpy.types.Panel):
@@ -184,7 +179,7 @@ class DATA_PT_ghost(ArmatureButtonsPanel, bpy.types.Panel):
col = split.column()
col.label(text="Display:")
- col.prop(arm, "ghost_only_selected", text="Selected Only")
+ col.prop(arm, "show_only_ghost_selected", text="Selected Only")
class DATA_PT_iksolver_itasc(ArmatureButtonsPanel, bpy.types.Panel):
@@ -211,34 +206,34 @@ class DATA_PT_iksolver_itasc(ArmatureButtonsPanel, bpy.types.Panel):
simulation = (itasc.mode == 'SIMULATION')
if simulation:
layout.label(text="Reiteration:")
- layout.prop(itasc, "reiteration", expand=True)
+ layout.prop(itasc, "reiteration_method", expand=True)
split = layout.split()
- split.active = not simulation or itasc.reiteration != 'NEVER'
+ split.active = not simulation or itasc.reiteration_method != 'NEVER'
col = split.column()
col.prop(itasc, "precision")
col = split.column()
- col.prop(itasc, "num_iter")
+ col.prop(itasc, "iterations")
if simulation:
- layout.prop(itasc, "auto_step")
+ layout.prop(itasc, "use_auto_step")
row = layout.row()
- if itasc.auto_step:
- row.prop(itasc, "min_step", text="Min")
- row.prop(itasc, "max_step", text="Max")
+ if itasc.use_auto_step:
+ row.prop(itasc, "step_min", text="Min")
+ row.prop(itasc, "step_max", text="Max")
else:
- row.prop(itasc, "num_step")
+ row.prop(itasc, "step_count")
layout.prop(itasc, "solver")
if simulation:
layout.prop(itasc, "feedback")
- layout.prop(itasc, "max_velocity")
+ layout.prop(itasc, "velocity_max")
if itasc.solver == 'DLS':
row = layout.row()
- row.prop(itasc, "dampmax", text="Damp", slider=True)
- row.prop(itasc, "dampeps", text="Eps", slider=True)
+ row.prop(itasc, "damping_max", text="Damp", slider=True)
+ row.prop(itasc, "damping_epsilon", text="Eps", slider=True)
from properties_animviz import MotionPathButtonsPanel, OnionSkinButtonsPanel
@@ -285,6 +280,11 @@ class DATA_PT_onion_skinning(OnionSkinButtonsPanel): #, bpy.types.Panel): # inhe
self.draw_settings(context, ob.pose.animation_visualisation, bones=True)
+
+class DATA_PT_custom_props_arm(ArmatureButtonsPanel, PropertyPanel, bpy.types.Panel):
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
+ _context_path = "object.data"
+
def register():
pass
diff --git a/release/scripts/ui/properties_data_armature_rigify.py b/release/scripts/ui/properties_data_armature_rigify.py
index 0dbd964acb5..1c2370cbb28 100644
--- a/release/scripts/ui/properties_data_armature_rigify.py
+++ b/release/scripts/ui/properties_data_armature_rigify.py
@@ -84,7 +84,7 @@ class DATA_PT_template(bpy.types.Panel):
row.operator("pose.metarig_validate", text="Check")
row.operator("pose.metarig_graph", text="Graph")
row = layout.row()
- row.prop(pose_templates, "generate_def_rig")
+ row.prop(pose_templates, "use_generate_deform_rig")
row = layout.row()
col = row.column()
@@ -151,7 +151,7 @@ class Generate(bpy.types.Operator):
import rigify
reload(rigify)
- meta_def = context.scene.pose_templates.generate_def_rig
+ meta_def = context.scene.pose_templates.use_generate_deform_rig
try:
rigify.generate_rig(context, context.object, META_DEF=meta_def)
@@ -329,7 +329,7 @@ def register():
min=-1,
max=65535)
- PoseTemplateSettings.BoolProperty(attr="generate_def_rig",
+ PoseTemplateSettings.BoolProperty(attr="use_generate_deform_rig",
name="Create Deform Rig",
description="Create a copy of the metarig, constrainted by the generated rig",
default=False)
diff --git a/release/scripts/ui/properties_data_bone.py b/release/scripts/ui/properties_data_bone.py
index 1296ccd7e70..663d576a9c0 100644
--- a/release/scripts/ui/properties_data_bone.py
+++ b/release/scripts/ui/properties_data_bone.py
@@ -47,18 +47,6 @@ class BONE_PT_context_bone(BoneButtonsPanel, bpy.types.Panel):
row.prop(bone, "name", text="")
-class BONE_PT_custom_props(BoneButtonsPanel, PropertyPanel, bpy.types.Panel):
- COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
-
- @property
- def _context_path(self):
- obj = bpy.context.object
- if obj and obj.mode == 'POSE':
- return "active_pose_bone"
- else:
- return "active_bone"
-
-
class BONE_PT_transform(BoneButtonsPanel, bpy.types.Panel):
bl_label = "Transform"
@@ -87,7 +75,7 @@ class BONE_PT_transform(BoneButtonsPanel, bpy.types.Panel):
row = layout.row()
col = row.column()
col.prop(pchan, "location")
- col.active = not (bone.parent and bone.connected)
+ col.active = not (bone.parent and bone.use_connect)
col = row.column()
if pchan.rotation_mode == 'QUATERNION':
@@ -123,7 +111,7 @@ class BONE_PT_transform_locks(BoneButtonsPanel, bpy.types.Panel):
row = layout.row()
col = row.column()
col.prop(pchan, "lock_location")
- col.active = not (bone.parent and bone.connected)
+ col.active = not (bone.parent and bone.use_connect)
col = row.column()
if pchan.rotation_mode in ('QUATERNION', 'AXIS_ANGLE'):
@@ -157,7 +145,7 @@ class BONE_PT_relations(BoneButtonsPanel, bpy.types.Panel):
col = split.column()
col.label(text="Layers:")
- col.prop(bone, "layer", text="")
+ col.prop(bone, "layers", text="")
col.separator()
@@ -174,12 +162,12 @@ class BONE_PT_relations(BoneButtonsPanel, bpy.types.Panel):
sub = col.column()
sub.active = (bone.parent is not None)
- sub.prop(bone, "connected")
- sub.prop(bone, "hinge", text="Inherit Rotation")
- sub.prop(bone, "inherit_scale", text="Inherit Scale")
+ sub.prop(bone, "use_connect")
+ sub.prop(bone, "use_hinge", text="Inherit Rotation")
+ sub.prop(bone, "use_inherit_scale", text="Inherit Scale")
sub = col.column()
- sub.active = (not bone.parent or not bone.connected)
- sub.prop(bone, "local_location", text="Local Location")
+ sub.active = (not bone.parent or not bone.use_connect)
+ sub.prop(bone, "use_local_location", text="Local Location")
class BONE_PT_display(BoneButtonsPanel, bpy.types.Panel):
@@ -206,7 +194,7 @@ class BONE_PT_display(BoneButtonsPanel, bpy.types.Panel):
split = layout.split()
col = split.column()
- col.prop(bone, "draw_wire", text="Wireframe")
+ col.prop(bone, "show_wire", text="Wireframe")
col.prop(bone, "hide", text="Hide")
col = split.column()
@@ -236,73 +224,73 @@ class BONE_PT_inverse_kinematics(BoneButtonsPanel, bpy.types.Panel):
row.prop(ob.pose, "ik_solver")
split = layout.split(percentage=0.25)
- split.prop(pchan, "ik_dof_x", text="X")
- split.active = pchan.has_ik
+ split.prop(pchan, "lock_ik_x", text="Lock X")
+ split.active = pchan.is_in_ik_chain
row = split.row()
row.prop(pchan, "ik_stiffness_x", text="Stiffness", slider=True)
- row.active = pchan.ik_dof_x and pchan.has_ik
+ row.active = pchan.lock_ik_x == False and pchan.is_in_ik_chain
split = layout.split(percentage=0.25)
sub = split.row()
- sub.prop(pchan, "ik_limit_x", text="Limit")
- sub.active = pchan.ik_dof_x and pchan.has_ik
+ sub.prop(pchan, "use_ik_limit_x", text="Limit")
+ sub.active = pchan.lock_ik_x == False and pchan.is_in_ik_chain
sub = split.row(align=True)
sub.prop(pchan, "ik_min_x", text="")
sub.prop(pchan, "ik_max_x", text="")
- sub.active = pchan.ik_dof_x and pchan.ik_limit_x and pchan.has_ik
+ sub.active = pchan.lock_ik_x == False and pchan.use_ik_limit_x and pchan.is_in_ik_chain
split = layout.split(percentage=0.25)
- split.prop(pchan, "ik_dof_y", text="Y")
- split.active = pchan.has_ik and pchan.has_ik
+ split.prop(pchan, "lock_ik_y", text="Y")
+ split.active = pchan.is_in_ik_chain and pchan.is_in_ik_chain
row = split.row()
row.prop(pchan, "ik_stiffness_y", text="Stiffness", slider=True)
- row.active = pchan.ik_dof_y and pchan.has_ik
+ row.active = pchan.lock_ik_y == False and pchan.is_in_ik_chain
split = layout.split(percentage=0.25)
sub = split.row()
- sub.prop(pchan, "ik_limit_y", text="Limit")
- sub.active = pchan.ik_dof_y and pchan.has_ik
+ sub.prop(pchan, "use_ik_limit_y", text="Limit")
+ sub.active = pchan.lock_ik_y == False and pchan.is_in_ik_chain
sub = split.row(align=True)
sub.prop(pchan, "ik_min_y", text="")
sub.prop(pchan, "ik_max_y", text="")
- sub.active = pchan.ik_dof_y and pchan.ik_limit_y and pchan.has_ik
+ sub.active = pchan.lock_ik_y == False and pchan.use_ik_limit_y and pchan.is_in_ik_chain
split = layout.split(percentage=0.25)
- split.prop(pchan, "ik_dof_z", text="Z")
- split.active = pchan.has_ik and pchan.has_ik
+ split.prop(pchan, "lock_ik_z", text="Z")
+ split.active = pchan.is_in_ik_chain and pchan.is_in_ik_chain
sub = split.row()
sub.prop(pchan, "ik_stiffness_z", text="Stiffness", slider=True)
- sub.active = pchan.ik_dof_z and pchan.has_ik
+ sub.active = pchan.lock_ik_z == False and pchan.is_in_ik_chain
split = layout.split(percentage=0.25)
sub = split.row()
- sub.prop(pchan, "ik_limit_z", text="Limit")
- sub.active = pchan.ik_dof_z and pchan.has_ik
+ sub.prop(pchan, "use_ik_limit_z", text="Limit")
+ sub.active = pchan.lock_ik_z == False and pchan.is_in_ik_chain
sub = split.row(align=True)
sub.prop(pchan, "ik_min_z", text="")
sub.prop(pchan, "ik_max_z", text="")
- sub.active = pchan.ik_dof_z and pchan.ik_limit_z and pchan.has_ik
+ sub.active = pchan.lock_ik_z == False and pchan.use_ik_limit_z and pchan.is_in_ik_chain
split = layout.split()
split.prop(pchan, "ik_stretch", text="Stretch", slider=True)
split.label()
- split.active = pchan.has_ik
+ split.active = pchan.is_in_ik_chain
if ob.pose.ik_solver == 'ITASC':
split = layout.split()
col = split.column()
- col.prop(pchan, "ik_rot_control", text="Control Rotation")
- col.active = pchan.has_ik
+ col.prop(pchan, "use_ik_rotation_control", text="Control Rotation")
+ col.active = pchan.is_in_ik_chain
col = split.column()
- col.prop(pchan, "ik_rot_weight", text="Weight", slider=True)
- col.active = pchan.has_ik
+ col.prop(pchan, "ik_rotation_weight", text="Weight", slider=True)
+ col.active = pchan.is_in_ik_chain
# not supported yet
#row = layout.row()
- #row.prop(pchan, "ik_lin_control", text="Joint Size")
- #row.prop(pchan, "ik_lin_weight", text="Weight", slider=True)
+ #row.prop(pchan, "use_ik_linear_control", text="Joint Size")
+ #row.prop(pchan, "ik_linear_weight", text="Weight", slider=True)
class BONE_PT_deform(BoneButtonsPanel, bpy.types.Panel):
@@ -315,7 +303,7 @@ class BONE_PT_deform(BoneButtonsPanel, bpy.types.Panel):
if not bone:
bone = context.edit_bone
- self.layout.prop(bone, "deform", text="")
+ self.layout.prop(bone, "use_deform", text="")
def draw(self, context):
layout = self.layout
@@ -325,7 +313,7 @@ class BONE_PT_deform(BoneButtonsPanel, bpy.types.Panel):
if not bone:
bone = context.edit_bone
- layout.active = bone.deform
+ layout.active = bone.use_deform
split = layout.split()
@@ -335,7 +323,7 @@ class BONE_PT_deform(BoneButtonsPanel, bpy.types.Panel):
sub = col.column(align=True)
sub.prop(bone, "envelope_distance", text="Distance")
sub.prop(bone, "envelope_weight", text="Weight")
- col.prop(bone, "multiply_vertexgroup_with_envelope", text="Multiply")
+ col.prop(bone, "use_envelope_multiply", text="Multiply")
sub = col.column(align=True)
sub.label(text="Radius:")
@@ -351,7 +339,19 @@ class BONE_PT_deform(BoneButtonsPanel, bpy.types.Panel):
sub.prop(bone, "bbone_out", text="Ease Out")
col.label(text="Offset:")
- col.prop(bone, "cyclic_offset")
+ col.prop(bone, "use_cyclic_offset")
+
+
+class BONE_PT_custom_props(BoneButtonsPanel, PropertyPanel, bpy.types.Panel):
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
+
+ @property
+ def _context_path(self):
+ obj = bpy.context.object
+ if obj and obj.mode == 'POSE':
+ return "active_pose_bone"
+ else:
+ return "active_bone"
def register():
diff --git a/release/scripts/ui/properties_data_camera.py b/release/scripts/ui/properties_data_camera.py
index cda2b79c909..1e4ec6deb18 100644
--- a/release/scripts/ui/properties_data_camera.py
+++ b/release/scripts/ui/properties_data_camera.py
@@ -53,11 +53,6 @@ class DATA_PT_context_camera(CameraButtonsPanel, bpy.types.Panel):
split.separator()
-class DATA_PT_custom_props_camera(CameraButtonsPanel, PropertyPanel, bpy.types.Panel):
- COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
- _context_path = "object.data"
-
-
class DATA_PT_camera(CameraButtonsPanel, bpy.types.Panel):
bl_label = "Lens"
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -83,7 +78,7 @@ class DATA_PT_camera(CameraButtonsPanel, bpy.types.Panel):
elif cam.type == 'ORTHO':
col.prop(cam, "ortho_scale")
- layout.prop(cam, "panorama")
+ layout.prop(cam, "use_panorama")
split = layout.split()
@@ -137,6 +132,11 @@ class DATA_PT_camera_display(CameraButtonsPanel, bpy.types.Panel):
sub.prop(cam, "passepartout_alpha", text="Alpha", slider=True)
+class DATA_PT_custom_props_camera(CameraButtonsPanel, PropertyPanel, bpy.types.Panel):
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
+ _context_path = "object.data"
+
+
def register():
pass
diff --git a/release/scripts/ui/properties_data_curve.py b/release/scripts/ui/properties_data_curve.py
index 1262f6739b7..3008db11b36 100644
--- a/release/scripts/ui/properties_data_curve.py
+++ b/release/scripts/ui/properties_data_curve.py
@@ -69,11 +69,6 @@ class DATA_PT_context_curve(CurveButtonsPanel, bpy.types.Panel):
split.separator()
-class DATA_PT_custom_props_curve(CurveButtonsPanel, PropertyPanel, bpy.types.Panel):
- COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
- _context_path = "object.data"
-
-
class DATA_PT_shape_curve(CurveButtonsPanel, bpy.types.Panel):
bl_label = "Shape"
@@ -103,7 +98,7 @@ class DATA_PT_shape_curve(CurveButtonsPanel, bpy.types.Panel):
col.prop(curve, "twist_smooth", text="Smooth")
if is_text:
col.label(text="Display:")
- col.prop(curve, "fast", text="Fast Editing")
+ col.prop(curve, "use_fast_edit", text="Fast Editing")
col = split.column()
@@ -116,13 +111,13 @@ class DATA_PT_shape_curve(CurveButtonsPanel, bpy.types.Panel):
if is_curve or is_text:
sub = col.column()
sub.label(text="Caps:")
- sub.prop(curve, "front")
- sub.prop(curve, "back")
- sub.prop(curve, "use_deform_fill")
+ sub.prop(curve, "use_fill_front")
+ sub.prop(curve, "use_fill_back")
+ sub.prop(curve, "use_fill_deform")
col.label(text="Textures:")
- col.prop(curve, "map_along_length")
- col.prop(curve, "auto_texspace")
+ col.prop(curve, "use_map_on_length")
+ col.prop(curve, "use_auto_texspace")
class DATA_PT_geometry_curve(CurveButtonsPanel, bpy.types.Panel):
@@ -145,7 +140,7 @@ class DATA_PT_geometry_curve(CurveButtonsPanel, bpy.types.Panel):
col = split.column()
col.label(text="Modification:")
- col.prop(curve, "width")
+ col.prop(curve, "offset")
col.prop(curve, "extrude")
col.label(text="Taper Object:")
col.prop(curve, "taper_object", text="")
@@ -174,7 +169,7 @@ class DATA_PT_pathanim(CurveButtonsPanelCurve, bpy.types.Panel):
layout.active = curve.use_path
col = layout.column()
- layout.prop(curve, "path_length", text="Frames")
+ layout.prop(curve, "path_duration", text="Frames")
layout.prop(curve, "eval_time")
split = layout.split()
@@ -208,9 +203,9 @@ class DATA_PT_active_spline(CurveButtonsPanelActive, bpy.types.Panel):
# poly's set aside since they use so few settings
col = split.column()
col.label(text="Cyclic:")
- col.prop(act_spline, "smooth")
+ col.prop(act_spline, "use_smooth")
col = split.column()
- col.prop(act_spline, "cyclic_u", text="U")
+ col.prop(act_spline, "use_cyclic_u", text="U")
else:
col = split.column()
@@ -223,13 +218,13 @@ class DATA_PT_active_spline(CurveButtonsPanelActive, bpy.types.Panel):
col.label(text="Resolution:")
col = split.column()
- col.prop(act_spline, "cyclic_u", text="U")
+ col.prop(act_spline, "use_cyclic_u", text="U")
if act_spline.type == 'NURBS':
sub = col.column()
- # sub.active = (not act_spline.cyclic_u)
- sub.prop(act_spline, "bezier_u", text="U")
- sub.prop(act_spline, "endpoint_u", text="U")
+ # sub.active = (not act_spline.use_cyclic_u)
+ sub.prop(act_spline, "use_bezier_u", text="U")
+ sub.prop(act_spline, "use_endpoint_u", text="U")
sub = col.column()
sub.prop(act_spline, "order_u", text="U")
@@ -237,13 +232,13 @@ class DATA_PT_active_spline(CurveButtonsPanelActive, bpy.types.Panel):
if is_surf:
col = split.column()
- col.prop(act_spline, "cyclic_v", text="V")
+ col.prop(act_spline, "use_cyclic_v", text="V")
# its a surface, assume its a nurb.
sub = col.column()
- sub.active = (not act_spline.cyclic_v)
- sub.prop(act_spline, "bezier_v", text="V")
- sub.prop(act_spline, "endpoint_v", text="V")
+ sub.active = (not act_spline.use_cyclic_v)
+ sub.prop(act_spline, "use_bezier_v", text="V")
+ sub.prop(act_spline, "use_endpoint_v", text="V")
sub = col.column()
sub.prop(act_spline, "order_v", text="V")
sub.prop(act_spline, "resolution_v", text="V")
@@ -257,7 +252,7 @@ class DATA_PT_active_spline(CurveButtonsPanelActive, bpy.types.Panel):
col.prop(act_spline, "tilt_interpolation", text="Tilt")
col.prop(act_spline, "radius_interpolation", text="Radius")
- layout.prop(act_spline, "smooth")
+ layout.prop(act_spline, "use_smooth")
class DATA_PT_font(CurveButtonsPanel, bpy.types.Panel):
@@ -280,7 +275,7 @@ class DATA_PT_font(CurveButtonsPanel, bpy.types.Panel):
split = layout.split()
col = split.column()
- col.prop(text, "text_size", text="Size")
+ col.prop(text, "size", text="Size")
col = split.column()
col.prop(text, "shear")
@@ -292,21 +287,21 @@ class DATA_PT_font(CurveButtonsPanel, bpy.types.Panel):
col = split.column()
col.label(text="Text on Curve:")
- col.prop(text, "text_on_curve", text="")
+ col.prop(text, "follow_curve", text="")
split = layout.split()
col = split.column()
colsub = col.column(align=True)
colsub.label(text="Underline:")
- colsub.prop(text, "ul_position", text="Position")
- colsub.prop(text, "ul_height", text="Thickness")
+ colsub.prop(text, "underline_position", text="Position")
+ colsub.prop(text, "underline_height", text="Thickness")
col = split.column()
col.label(text="Character:")
- col.prop(char, "bold")
- col.prop(char, "italic")
- col.prop(char, "underline")
+ col.prop(char, "use_bold")
+ col.prop(char, "use_italic")
+ col.prop(char, "use_underline")
split = layout.split()
col = split.column()
@@ -329,15 +324,15 @@ class DATA_PT_paragraph(CurveButtonsPanel, bpy.types.Panel):
text = context.curve
layout.label(text="Align:")
- layout.prop(text, "spacemode", expand=True)
+ layout.prop(text, "align", expand=True)
split = layout.split()
col = split.column(align=True)
col.label(text="Spacing:")
- col.prop(text, "spacing", text="Character")
- col.prop(text, "word_spacing", text="Word")
- col.prop(text, "line_dist", text="Line")
+ col.prop(text, "space_character", text="Character")
+ col.prop(text, "space_word", text="Word")
+ col.prop(text, "space_line", text="Line")
col = split.column(align=True)
col.label(text="Offset:")
@@ -362,7 +357,7 @@ class DATA_PT_textboxes(CurveButtonsPanel, bpy.types.Panel):
col.operator("font.textbox_add", icon='ZOOMIN')
col = split.column()
- for i, box in enumerate(text.textboxes):
+ for i, box in enumerate(text.text_boxes):
boxy = layout.box()
@@ -385,6 +380,11 @@ class DATA_PT_textboxes(CurveButtonsPanel, bpy.types.Panel):
row.operator("font.textbox_remove", text='', icon='X', emboss=False).index = i
+class DATA_PT_custom_props_curve(CurveButtonsPanel, PropertyPanel, bpy.types.Panel):
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
+ _context_path = "object.data"
+
+
def register():
pass
diff --git a/release/scripts/ui/properties_data_lamp.py b/release/scripts/ui/properties_data_lamp.py
index 9a58622974e..8d82f5ef943 100644
--- a/release/scripts/ui/properties_data_lamp.py
+++ b/release/scripts/ui/properties_data_lamp.py
@@ -40,13 +40,6 @@ class DataButtonsPanel():
return context.lamp and (engine in cls.COMPAT_ENGINES)
-class DATA_PT_preview(DataButtonsPanel, bpy.types.Panel):
- bl_label = "Preview"
- COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
-
- def draw(self, context):
- self.layout.template_preview(context.lamp)
-
class DATA_PT_context_lamp(DataButtonsPanel, bpy.types.Panel):
bl_label = ""
bl_show_header = False
@@ -69,9 +62,12 @@ class DATA_PT_context_lamp(DataButtonsPanel, bpy.types.Panel):
split.separator()
-class DATA_PT_custom_props_lamp(DataButtonsPanel, PropertyPanel, bpy.types.Panel):
+class DATA_PT_preview(DataButtonsPanel, bpy.types.Panel):
+ bl_label = "Preview"
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
- _context_path = "object.data"
+
+ def draw(self, context):
+ self.layout.template_preview(context.lamp)
class DATA_PT_lamp(DataButtonsPanel, bpy.types.Panel):
@@ -103,7 +99,7 @@ class DATA_PT_lamp(DataButtonsPanel, bpy.types.Panel):
sub.prop(lamp, "linear_attenuation", slider=True, text="Linear")
sub.prop(lamp, "quadratic_attenuation", slider=True, text="Quadratic")
- col.prop(lamp, "sphere")
+ col.prop(lamp, "use_sphere")
if lamp.type == 'AREA':
col.prop(lamp, "distance")
@@ -225,8 +221,8 @@ class DATA_PT_shadow(DataButtonsPanel, bpy.types.Panel):
col.prop(lamp, "shadow_color", text="")
col = split.column()
- col.prop(lamp, "shadow_layer", text="This Layer Only")
- col.prop(lamp, "only_shadow")
+ col.prop(lamp, "use_shadow_layer", text="This Layer Only")
+ col.prop(lamp, "use_only_shadow")
if lamp.shadow_method == 'RAY_SHADOW':
split = layout.split()
@@ -249,19 +245,19 @@ class DATA_PT_shadow(DataButtonsPanel, bpy.types.Panel):
sub.prop(lamp, "shadow_ray_samples_x", text="Samples X")
sub.prop(lamp, "shadow_ray_samples_y", text="Samples Y")
- col.row().prop(lamp, "shadow_ray_sampling_method", expand=True)
+ col.row().prop(lamp, "shadow_ray_sample_method", expand=True)
split = layout.split()
col = split.column()
- if lamp.shadow_ray_sampling_method == 'ADAPTIVE_QMC':
+ if lamp.shadow_ray_sample_method == 'ADAPTIVE_QMC':
col.prop(lamp, "shadow_adaptive_threshold", text="Threshold")
col = split.column()
- if lamp.type == 'AREA' and lamp.shadow_ray_sampling_method == 'CONSTANT_JITTERED':
+ if lamp.type == 'AREA' and lamp.shadow_ray_sample_method == 'CONSTANT_JITTERED':
col = split.column()
col = split.column()
- col.prop(lamp, "umbra")
+ col.prop(lamp, "use_umbra")
col.prop(lamp, "dither")
col.prop(lamp, "jitter")
@@ -295,15 +291,15 @@ class DATA_PT_shadow(DataButtonsPanel, bpy.types.Panel):
split = layout.split()
col = split.column()
- col.prop(lamp, "auto_clip_start", text="Autoclip Start")
+ col.prop(lamp, "use_auto_clip_start", text="Autoclip Start")
sub = col.column()
- sub.active = not lamp.auto_clip_start
+ sub.active = not lamp.use_auto_clip_start
sub.prop(lamp, "shadow_buffer_clip_start", text="Clip Start")
col = split.column()
- col.prop(lamp, "auto_clip_end", text="Autoclip End")
+ col.prop(lamp, "use_auto_clip_end", text="Autoclip End")
sub = col.column()
- sub.active = not lamp.auto_clip_end
+ sub.active = not lamp.use_auto_clip_end
sub.prop(lamp, "shadow_buffer_clip_end", text=" Clip End")
@@ -361,9 +357,9 @@ class DATA_PT_spot(DataButtonsPanel, bpy.types.Panel):
col = split.column()
- col.prop(lamp, "halo")
+ col.prop(lamp, "use_halo")
sub = col.column(align=True)
- sub.active = lamp.halo
+ sub.active = lamp.use_halo
sub.prop(lamp, "halo_intensity", text="Intensity")
if lamp.shadow_method == 'BUFFER_SHADOW':
sub.prop(lamp, "halo_step", text="Step")
@@ -387,6 +383,11 @@ class DATA_PT_falloff_curve(DataButtonsPanel, bpy.types.Panel):
self.layout.template_curve_mapping(lamp, "falloff_curve")
+class DATA_PT_custom_props_lamp(DataButtonsPanel, PropertyPanel, bpy.types.Panel):
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
+ _context_path = "object.data"
+
+
def register():
pass
diff --git a/release/scripts/ui/properties_data_lattice.py b/release/scripts/ui/properties_data_lattice.py
index 5e313b79d85..9abdb23ea23 100644
--- a/release/scripts/ui/properties_data_lattice.py
+++ b/release/scripts/ui/properties_data_lattice.py
@@ -51,11 +51,6 @@ class DATA_PT_context_lattice(DataButtonsPanel, bpy.types.Panel):
split.separator()
-class DATA_PT_custom_props_lattice(DataButtonsPanel, PropertyPanel, bpy.types.Panel):
- COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
- _context_path = "object.data"
-
-
class DATA_PT_lattice(DataButtonsPanel, bpy.types.Panel):
bl_label = "Lattice"
@@ -83,8 +78,13 @@ class DATA_PT_lattice(DataButtonsPanel, bpy.types.Panel):
col.prop(lat, "interpolation_type_w", text="")
row = layout.row()
- row.prop(lat, "outside")
+ row.prop(lat, "use_outside")
row.prop_object(lat, "vertex_group", context.object, "vertex_groups", text="")
+
+
+class DATA_PT_custom_props_lattice(DataButtonsPanel, PropertyPanel, bpy.types.Panel):
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
+ _context_path = "object.data"
def register():
diff --git a/release/scripts/ui/properties_data_mesh.py b/release/scripts/ui/properties_data_mesh.py
index 82ebe218c83..1d5b5d95fb4 100644
--- a/release/scripts/ui/properties_data_mesh.py
+++ b/release/scripts/ui/properties_data_mesh.py
@@ -79,11 +79,6 @@ class DATA_PT_context_mesh(MeshButtonsPanel, bpy.types.Panel):
split.separator()
-class DATA_PT_custom_props_mesh(MeshButtonsPanel, PropertyPanel, bpy.types.Panel):
- COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
- _context_path = "object.data"
-
-
class DATA_PT_normals(MeshButtonsPanel, bpy.types.Panel):
bl_label = "Normals"
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
@@ -96,14 +91,14 @@ class DATA_PT_normals(MeshButtonsPanel, bpy.types.Panel):
split = layout.split()
col = split.column()
- col.prop(mesh, "autosmooth")
+ col.prop(mesh, "use_auto_smooth")
sub = col.column()
- sub.active = mesh.autosmooth
- sub.prop(mesh, "autosmooth_angle", text="Angle")
+ sub.active = mesh.use_auto_smooth
+ sub.prop(mesh, "auto_smooth_angle", text="Angle")
col = split.column()
- col.prop(mesh, "double_sided")
+ col.prop(mesh, "show_double_sided")
class DATA_PT_settings(MeshButtonsPanel, bpy.types.Panel):
@@ -187,8 +182,8 @@ class DATA_PT_shape_keys(MeshButtonsPanel, bpy.types.Panel):
enable_edit = ob.mode != 'EDIT'
enable_edit_value = False
- if ob.shape_key_lock is False:
- if enable_edit or (ob.type == 'MESH' and ob.shape_key_edit_mode):
+ if ob.show_shape_key is False:
+ if enable_edit or (ob.type == 'MESH' and ob.use_shape_key_edit_mode):
enable_edit_value = True
row = layout.row()
@@ -215,7 +210,7 @@ class DATA_PT_shape_keys(MeshButtonsPanel, bpy.types.Panel):
split = layout.split(percentage=0.4)
row = split.row()
row.enabled = enable_edit
- row.prop(key, "relative")
+ row.prop(key, "use_relative")
row = split.row()
row.alignment = 'RIGHT'
@@ -223,9 +218,9 @@ class DATA_PT_shape_keys(MeshButtonsPanel, bpy.types.Panel):
sub = row.row(align=True)
subsub = sub.row(align=True)
subsub.active = enable_edit_value
- subsub.prop(ob, "shape_key_lock", text="")
+ subsub.prop(ob, "show_shape_key", text="")
subsub.prop(kb, "mute", text="")
- sub.prop(ob, "shape_key_edit_mode", text="")
+ sub.prop(ob, "use_shape_key_edit_mode", text="")
sub = row.row()
sub.operator("object.shape_key_clear", icon='X', text="")
@@ -233,7 +228,7 @@ class DATA_PT_shape_keys(MeshButtonsPanel, bpy.types.Panel):
row = layout.row()
row.prop(kb, "name")
- if key.relative:
+ if key.use_relative:
if ob.active_shape_key_index != 0:
row = layout.row()
row.active = enable_edit_value
@@ -325,25 +320,25 @@ class DATA_PT_texface(MeshButtonsPanel, bpy.types.Panel):
split = layout.split()
col = split.column()
- col.prop(tf, "tex")
- col.prop(tf, "light")
- col.prop(tf, "invisible")
- col.prop(tf, "collision")
+ col.prop(tf, "use_bitmap_text")
+ col.prop(tf, "use_light")
+ col.prop(tf, "hide")
+ col.prop(tf, "use_collision")
- col.prop(tf, "shared")
- col.prop(tf, "twoside")
- col.prop(tf, "object_color")
+ col.prop(tf, "use_blend_shared")
+ col.prop(tf, "use_twoside")
+ col.prop(tf, "use_object_color")
col = split.column()
- col.prop(tf, "halo")
- col.prop(tf, "billboard")
- col.prop(tf, "shadow")
- col.prop(tf, "text")
- col.prop(tf, "alpha_sort")
+ col.prop(tf, "use_halo")
+ col.prop(tf, "use_billboard")
+ col.prop(tf, "use_shadow_cast")
+ col.prop(tf, "use_bitmap_text")
+ col.prop(tf, "use_alpha_sort")
col = layout.column()
- col.prop(tf, "transp")
+ col.prop(tf, "blend_type")
else:
col.label(text="No UV Texture")
@@ -375,6 +370,11 @@ class DATA_PT_vertex_colors(MeshButtonsPanel, bpy.types.Panel):
layout.operator("mesh.vertex_color_multiresolution_toggle", text="Add Multires")
+class DATA_PT_custom_props_mesh(MeshButtonsPanel, PropertyPanel, bpy.types.Panel):
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
+ _context_path = "object.data"
+
+
def register():
pass
diff --git a/release/scripts/ui/properties_data_metaball.py b/release/scripts/ui/properties_data_metaball.py
index a6b1bb75cbe..83e5e642d0e 100644
--- a/release/scripts/ui/properties_data_metaball.py
+++ b/release/scripts/ui/properties_data_metaball.py
@@ -51,11 +51,6 @@ class DATA_PT_context_metaball(DataButtonsPanel, bpy.types.Panel):
split.separator()
-class DATA_PT_custom_props_metaball(DataButtonsPanel, PropertyPanel, bpy.types.Panel):
- COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
- _context_path = "object.data"
-
-
class DATA_PT_metaball(DataButtonsPanel, bpy.types.Panel):
bl_label = "Metaball"
@@ -69,15 +64,15 @@ class DATA_PT_metaball(DataButtonsPanel, bpy.types.Panel):
col = split.column()
col.label(text="Resolution:")
sub = col.column(align=True)
- sub.prop(mball, "wire_size", text="View")
- sub.prop(mball, "render_size", text="Render")
+ sub.prop(mball, "resolution", text="View")
+ sub.prop(mball, "render_resolution", text="Render")
col = split.column()
col.label(text="Settings:")
col.prop(mball, "threshold", text="Threshold")
layout.label(text="Update:")
- layout.prop(mball, "flag", expand=True)
+ layout.prop(mball, "update_method", expand=True)
class DATA_PT_metaball_element(DataButtonsPanel, bpy.types.Panel):
@@ -99,7 +94,7 @@ class DATA_PT_metaball_element(DataButtonsPanel, bpy.types.Panel):
col = split.column(align=True)
col.label(text="Settings:")
col.prop(metaelem, "stiffness", text="Stiffness")
- col.prop(metaelem, "negative", text="Negative")
+ col.prop(metaelem, "use_negative", text="Negative")
col.prop(metaelem, "hide", text="Hide")
col = split.column(align=True)
@@ -120,6 +115,11 @@ class DATA_PT_metaball_element(DataButtonsPanel, bpy.types.Panel):
col.prop(metaelem, "size_y", text="Y")
+class DATA_PT_custom_props_metaball(DataButtonsPanel, PropertyPanel, bpy.types.Panel):
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
+ _context_path = "object.data"
+
+
def register():
pass
diff --git a/release/scripts/ui/properties_data_modifier.py b/release/scripts/ui/properties_data_modifier.py
index 5621f9baf8d..83456ba89f7 100644
--- a/release/scripts/ui/properties_data_modifier.py
+++ b/release/scripts/ui/properties_data_modifier.py
@@ -70,7 +70,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
col = split.column()
col.label(text="Deformation:")
col.prop(md, "quaternion")
- col.prop(md, "multi_modifier")
+ col.prop(md, "use_multi_modifier")
def ARRAY(self, layout, ob, md):
layout.prop(md, "fit_type")
@@ -87,30 +87,30 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
split = layout.split()
col = split.column()
- col.prop(md, "constant_offset")
+ col.prop(md, "use_constant_offset")
sub = col.column()
- sub.active = md.constant_offset
- sub.prop(md, "constant_offset_displacement", text="")
+ sub.active = md.use_constant_offset
+ sub.prop(md, "constant_offset_displace", text="")
col.separator()
- col.prop(md, "merge_adjacent_vertices", text="Merge")
+ col.prop(md, "use_merge_vertices", text="Merge")
sub = col.column()
- sub.active = md.merge_adjacent_vertices
- sub.prop(md, "merge_end_vertices", text="First Last")
- sub.prop(md, "merge_distance", text="Distance")
+ sub.active = md.use_merge_vertices
+ sub.prop(md, "use_merge_vertices_cap", text="First Last")
+ sub.prop(md, "merge_threshold", text="Distance")
col = split.column()
- col.prop(md, "relative_offset")
+ col.prop(md, "use_relative_offset")
sub = col.column()
- sub.active = md.relative_offset
- sub.prop(md, "relative_offset_displacement", text="")
+ sub.active = md.use_relative_offset
+ sub.prop(md, "relative_offset_displace", text="")
col.separator()
- col.prop(md, "add_offset_object")
+ col.prop(md, "use_object_offset")
sub = col.column()
- sub.active = md.add_offset_object
+ sub.active = md.use_object_offset
sub.prop(md, "offset_object", text="")
layout.separator()
@@ -126,7 +126,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
col.prop(md, "width")
col = split.column()
- col.prop(md, "only_vertices")
+ col.prop(md, "use_only_vertices")
layout.label(text="Limit Method:")
layout.row().prop(md, "limit_method", expand=True)
@@ -176,7 +176,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
col.prop(md, "factor")
col.prop(md, "radius")
col.prop(md, "size")
- col.prop(md, "from_radius")
+ col.prop(md, "use_radius_as_size")
split = layout.split()
@@ -224,10 +224,10 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
col.label(text="Direction:")
col.prop(md, "direction", text="")
col.label(text="Texture Coordinates:")
- col.prop(md, "texture_coordinates", text="")
- if md.texture_coordinates == 'OBJECT':
+ col.prop(md, "texture_coords", text="")
+ if md.texture_coords == 'OBJECT':
layout.prop(md, "texture_coordinate_object", text="Object")
- elif md.texture_coordinates == 'UV' and ob.type == 'MESH':
+ elif md.texture_coords == 'UV' and ob.type == 'MESH':
layout.prop_object(md, "uv_layer", ob.data, "uv_textures")
layout.separator()
@@ -235,7 +235,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
split = layout.split()
col = split.column()
- col.prop(md, "midlevel")
+ col.prop(md, "mid_level")
col = split.column()
col.prop(md, "strength")
@@ -250,7 +250,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
sub.prop(md, "split_angle")
col = split.column()
- col.prop(md, "use_sharp", text="Sharp Edges")
+ col.prop(md, "use_edge_sharp", text="Sharp Edges")
def EXPLODE(self, layout, ob, md):
split = layout.split()
@@ -263,10 +263,10 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
sub.prop(md, "protect")
col = split.column()
- col.prop(md, "split_edges")
- col.prop(md, "unborn")
- col.prop(md, "alive")
- col.prop(md, "dead")
+ col.prop(md, "use_edge_split")
+ col.prop(md, "show_unborn")
+ col.prop(md, "show_alive")
+ col.prop(md, "show_dead")
col.prop(md, "size")
layout.operator("object.explode_refresh", text="Refresh")
@@ -365,7 +365,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
col.prop(md, "dynamic")
def MIRROR(self, layout, ob, md):
- layout.prop(md, "merge_limit")
+ layout.prop(md, "merge_threshold")
split = layout.split(percentage=0.25)
col = split.column()
@@ -377,12 +377,12 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
col = split.column()
col.label(text="Options:")
col.prop(md, "clip", text="Clipping")
- col.prop(md, "mirror_vertex_groups", text="Vertex Groups")
+ col.prop(md, "use_mirror_vertex_groups", text="Vertex Groups")
col = split.column()
col.label(text="Textures:")
- col.prop(md, "mirror_u", text="U")
- col.prop(md, "mirror_v", text="V")
+ col.prop(md, "use_mirror_u", text="U")
+ col.prop(md, "use_mirror_v", text="V")
col = layout.column()
col.label(text="Mirror Object:")
@@ -405,12 +405,13 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
col.operator("object.multires_higher_levels_delete", text="Delete Higher")
col.operator("object.multires_reshape", text="Reshape")
col.operator("object.multires_base_apply", text="Apply Base")
+ col.prop(md, "show_only_control_edges")
layout.separator()
col = layout.column()
row = col.row()
- if md.external:
+ if md.is_external:
row.operator("object.multires_external_pack", text="Pack External")
row.label()
row = col.row()
@@ -421,7 +422,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
def PARTICLE_INSTANCE(self, layout, ob, md):
layout.prop(md, "object")
- layout.prop(md, "particle_system_number", text="Particle System")
+ layout.prop(md, "particle_system_index", text="Particle System")
split = layout.split()
col = split.column()
@@ -432,9 +433,9 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
col = split.column()
col.label(text="Show Particles When:")
- col.prop(md, "alive")
- col.prop(md, "unborn")
- col.prop(md, "dead")
+ col.prop(md, "show_alive")
+ col.prop(md, "show_unborn")
+ col.prop(md, "show_dead")
layout.separator()
@@ -444,7 +445,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
split.active = md.use_path
col = split.column()
col.row().prop(md, "axis", expand=True)
- col.prop(md, "keep_shape")
+ col.prop(md, "use_preserve_shape")
col = split.column()
col.prop(md, "position", slider=True)
@@ -511,14 +512,14 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
col = split.column()
col.label(text="Cull Faces:")
- col.prop(md, "cull_front_faces", text="Front")
- col.prop(md, "cull_back_faces", text="Back")
+ col.prop(md, "use_cull_front_faces", text="Front")
+ col.prop(md, "use_cull_back_faces", text="Back")
layout.label(text="Auxiliary Target:")
layout.prop(md, "auxiliary_target", text="")
elif md.mode == 'NEAREST_SURFACEPOINT':
- layout.prop(md, "keep_above_surface")
+ layout.prop(md, "use_keep_above_surface")
def SIMPLE_DEFORM(self, layout, ob, md):
split = layout.split()
@@ -545,8 +546,8 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
col.prop(md, "factor")
col.prop(md, "limits", slider=True)
if md.mode in ('TAPER', 'STRETCH'):
- col.prop(md, "lock_x_axis")
- col.prop(md, "lock_y_axis")
+ col.prop(md, "lock_x")
+ col.prop(md, "lock_y")
def SMOKE(self, layout, ob, md):
layout.label(text="See Smoke panel.")
@@ -612,8 +613,8 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
col = split.column()
col.label(text="Options:")
- col.prop(md, "subsurf_uv")
- col.prop(md, "optimal_display")
+ col.prop(md, "use_subsurf_uv")
+ col.prop(md, "show_only_control_edges")
def SURFACE(self, layout, ob, md):
layout.label(text="See Fields panel.")
@@ -632,8 +633,8 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
split = layout.split()
col = split.column()
- col.prop(md, "override_image")
- col.prop(md, "num_projectors", text="Projectors")
+ col.prop(md, "use_image_override")
+ col.prop(md, "projector_count", text="Projectors")
for proj in md.projectors:
col.prop(proj, "object", text="")
@@ -659,9 +660,9 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
col.prop(md, "normals")
sub = col.column()
sub.active = md.normals
- sub.prop(md, "x_normal", text="X")
- sub.prop(md, "y_normal", text="Y")
- sub.prop(md, "z_normal", text="Z")
+ sub.prop(md, "use_normal_x", text="X")
+ sub.prop(md, "use_normal_y", text="Y")
+ sub.prop(md, "use_normal_z", text="Z")
split = layout.split()
@@ -684,11 +685,11 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
layout.prop(md, "start_position_object")
layout.prop_object(md, "vertex_group", ob, "vertex_groups")
layout.prop(md, "texture")
- layout.prop(md, "texture_coordinates")
- if md.texture_coordinates == 'MAP_UV' and ob.type == 'MESH':
+ layout.prop(md, "texture_coords")
+ if md.texture_coords == 'MAP_UV' and ob.type == 'MESH':
layout.prop_object(md, "uv_layer", ob.data, "uv_textures")
- elif md.texture_coordinates == 'OBJECT':
- layout.prop(md, "texture_coordinates_object")
+ elif md.texture_coords == 'OBJECT':
+ layout.prop(md, "texture_coords_object")
layout.separator()
diff --git a/release/scripts/ui/properties_game.py b/release/scripts/ui/properties_game.py
index 608976f373c..f90a5446557 100644
--- a/release/scripts/ui/properties_game.py
+++ b/release/scripts/ui/properties_game.py
@@ -51,14 +51,14 @@ class PHYSICS_PT_game_physics(PhysicsButtonsPanel, bpy.types.Panel):
split = layout.split()
col = split.column()
- col.prop(game, "actor")
- col.prop(game, "ghost")
+ col.prop(game, "use_actor")
+ col.prop(game, "use_ghost")
col.prop(ob, "hide_render", text="Invisible") # out of place but useful
col = split.column()
- col.prop(game, "material_physics")
- col.prop(game, "rotate_from_normal")
- col.prop(game, "no_sleeping")
+ col.prop(game, "use_material_physics")
+ col.prop(game, "use_rotate_from_normal")
+ col.prop(game, "use_sleep")
layout.separator()
@@ -73,9 +73,9 @@ class PHYSICS_PT_game_physics(PhysicsButtonsPanel, bpy.types.Panel):
col = split.column()
sub = col.column()
sub.active = (game.physics_type == 'RIGID_BODY')
- sub.prop(game, "anisotropic_friction")
+ sub.prop(game, "use_anisotropic_friction")
subsub = sub.column()
- subsub.active = game.anisotropic_friction
+ subsub.active = game.use_anisotropic_friction
subsub.prop(game, "friction_coefficients", text="", slider=True)
split = layout.split()
@@ -83,8 +83,8 @@ class PHYSICS_PT_game_physics(PhysicsButtonsPanel, bpy.types.Panel):
col = split.column()
col.label(text="Velocity:")
sub = col.column(align=True)
- sub.prop(game, "minimum_velocity", text="Minimum")
- sub.prop(game, "maximum_velocity", text="Maximum")
+ sub.prop(game, "velocity_min", text="Minimum")
+ sub.prop(game, "velocity_max", text="Maximum")
col = split.column()
col.label(text="Damping:")
@@ -98,20 +98,20 @@ class PHYSICS_PT_game_physics(PhysicsButtonsPanel, bpy.types.Panel):
col = split.column()
col.label(text="Lock Translation:")
- col.prop(game, "lock_x_axis", text="X")
- col.prop(game, "lock_y_axis", text="Y")
- col.prop(game, "lock_z_axis", text="Z")
+ col.prop(game, "lock_location_x", text="X")
+ col.prop(game, "lock_location_y", text="Y")
+ col.prop(game, "lock_location_z", text="Z")
col = split.column()
col.label(text="Lock Rotation:")
- col.prop(game, "lock_x_rot_axis", text="X")
- col.prop(game, "lock_y_rot_axis", text="Y")
- col.prop(game, "lock_z_rot_axis", text="Z")
+ col.prop(game, "lock_rotation_x", text="X")
+ col.prop(game, "lock_rotation_y", text="Y")
+ col.prop(game, "lock_rotation_z", text="Z")
elif game.physics_type == 'SOFT_BODY':
col = layout.column()
- col.prop(game, "actor")
- col.prop(game, "ghost")
+ col.prop(game, "use_actor")
+ col.prop(game, "use_ghost")
col.prop(ob, "hide_render", text="Invisible")
layout.separator()
@@ -121,32 +121,32 @@ class PHYSICS_PT_game_physics(PhysicsButtonsPanel, bpy.types.Panel):
col = split.column()
col.label(text="Attributes:")
col.prop(game, "mass")
- col.prop(soft, "welding")
- col.prop(soft, "position_iterations")
- col.prop(soft, "linstiff", slider=True)
+ col.prop(soft, "weld_threshold")
+ col.prop(soft, "location_iterations")
+ col.prop(soft, "linear_stiffness", slider=True)
col.prop(soft, "dynamic_friction", slider=True)
- col.prop(soft, "margin", slider=True)
- col.prop(soft, "bending_const", text="Bending Constraints")
+ col.prop(soft, "collision_margin", slider=True)
+ col.prop(soft, "use_bending_constraints", text="Bending Constraints")
col = split.column()
- col.prop(soft, "shape_match")
+ col.prop(soft, "use_shape_match")
sub = col.column()
- sub.active = soft.shape_match
- sub.prop(soft, "threshold", slider=True)
+ sub.active = soft.use_shape_match
+ sub.prop(soft, "shape_threshold", slider=True)
col.separator()
col.label(text="Cluster Collision:")
- col.prop(soft, "cluster_rigid_to_softbody")
- col.prop(soft, "cluster_soft_to_softbody")
+ col.prop(soft, "use_cluster_rigid_to_softbody")
+ col.prop(soft, "use_cluster_soft_to_softbody")
sub = col.column()
- sub.active = (soft.cluster_rigid_to_softbody or soft.cluster_soft_to_softbody)
+ sub.active = (soft.cluster_rigid_to_softbody or soft.use_cluster_soft_to_softbody)
sub.prop(soft, "cluster_iterations", text="Iterations")
elif game.physics_type == 'STATIC':
col = layout.column()
- col.prop(game, "actor")
- col.prop(game, "ghost")
+ col.prop(game, "use_actor")
+ col.prop(game, "use_ghost")
col.prop(ob, "hide_render", text="Invisible")
elif game.physics_type in ('SENSOR', 'INVISIBLE', 'NO_COLLISION', 'OCCLUDE'):
@@ -174,7 +174,7 @@ class PHYSICS_PT_game_collision_bounds(PhysicsButtonsPanel, bpy.types.Panel):
game = context.active_object.game
layout.active = game.use_collision_bounds
- layout.prop(game, "collision_bounds", text="Bounds")
+ layout.prop(game, "collision_bounds_type", text="Bounds")
split = layout.split()
@@ -182,7 +182,7 @@ class PHYSICS_PT_game_collision_bounds(PhysicsButtonsPanel, bpy.types.Panel):
col.prop(game, "collision_margin", text="Margin", slider=True)
col = split.column()
- col.prop(game, "collision_compound", text="Compound")
+ col.prop(game, "use_collision_compound", text="Compound")
class RenderButtonsPanel():
@@ -215,9 +215,9 @@ class RENDER_PT_game_player(RenderButtonsPanel, bpy.types.Panel):
def draw(self, context):
layout = self.layout
- gs = context.scene.game_data
+ gs = context.scene.game_settings
- layout.prop(gs, "fullscreen")
+ layout.prop(gs, "show_fullscreen")
split = layout.split()
@@ -236,9 +236,9 @@ class RENDER_PT_game_player(RenderButtonsPanel, bpy.types.Panel):
# framing:
col = layout.column()
col.label(text="Framing:")
- col.row().prop(gs, "framing_type", expand=True)
- if gs.framing_type == 'LETTERBOX':
- col.prop(gs, "framing_color", text="")
+ col.row().prop(gs, "frame_type", expand=True)
+ if gs.frame_type == 'LETTERBOX':
+ col.prop(gs, "frame_color", text="")
class RENDER_PT_game_stereo(RenderButtonsPanel, bpy.types.Panel):
@@ -248,7 +248,7 @@ class RENDER_PT_game_stereo(RenderButtonsPanel, bpy.types.Panel):
def draw(self, context):
layout = self.layout
- gs = context.scene.game_data
+ gs = context.scene.game_settings
stereo_mode = gs.stereo
# stereo options:
@@ -257,7 +257,7 @@ class RENDER_PT_game_stereo(RenderButtonsPanel, bpy.types.Panel):
# stereo:
if stereo_mode == 'STEREO':
layout.prop(gs, "stereo_mode")
- layout.prop(gs, "eye_separation")
+ layout.prop(gs, "stereo_eye_separation")
# dome:
elif stereo_mode == 'DOME':
@@ -302,7 +302,7 @@ class RENDER_PT_game_shading(RenderButtonsPanel, bpy.types.Panel):
def draw(self, context):
layout = self.layout
- gs = context.scene.game_data
+ gs = context.scene.game_settings
layout.prop(gs, "material_mode", expand=True)
@@ -310,14 +310,14 @@ class RENDER_PT_game_shading(RenderButtonsPanel, bpy.types.Panel):
split = layout.split()
col = split.column()
- col.prop(gs, "glsl_lights", text="Lights")
- col.prop(gs, "glsl_shaders", text="Shaders")
- col.prop(gs, "glsl_shadows", text="Shadows")
+ col.prop(gs, "use_glsl_lights", text="Lights")
+ col.prop(gs, "use_glsl_shaders", text="Shaders")
+ col.prop(gs, "use_glsl_shadows", text="Shadows")
col = split.column()
- col.prop(gs, "glsl_ramps", text="Ramps")
- col.prop(gs, "glsl_nodes", text="Nodes")
- col.prop(gs, "glsl_extra_textures", text="Extra Textures")
+ col.prop(gs, "use_glsl_ramps", text="Ramps")
+ col.prop(gs, "use_glsl_nodes", text="Nodes")
+ col.prop(gs, "use_glsl_extra_textures", text="Extra Textures")
class RENDER_PT_game_performance(RenderButtonsPanel, bpy.types.Panel):
@@ -327,7 +327,7 @@ class RENDER_PT_game_performance(RenderButtonsPanel, bpy.types.Panel):
def draw(self, context):
layout = self.layout
- gs = context.scene.game_data
+ gs = context.scene.game_settings
split = layout.split()
@@ -354,10 +354,10 @@ class RENDER_PT_game_sound(RenderButtonsPanel, bpy.types.Panel):
scene = context.scene
- layout.prop(scene, "distance_model")
+ layout.prop(scene, "audio_distance_model")
- layout.prop(scene, "speed_of_sound", text="Speed")
- layout.prop(scene, "doppler_factor")
+ layout.prop(scene, "audio_doppler_speed", text="Speed")
+ layout.prop(scene, "audio_doppler_factor")
class WorldButtonsPanel():
@@ -454,7 +454,7 @@ class WORLD_PT_game_physics(WorldButtonsPanel, bpy.types.Panel):
def draw(self, context):
layout = self.layout
- gs = context.scene.game_data
+ gs = context.scene.game_settings
layout.prop(gs, "physics_engine")
if gs.physics_engine != 'NONE':
diff --git a/release/scripts/ui/properties_material.py b/release/scripts/ui/properties_material.py
index 5034f4f40ae..d4e07f8333b 100644
--- a/release/scripts/ui/properties_material.py
+++ b/release/scripts/ui/properties_material.py
@@ -63,14 +63,6 @@ class MaterialButtonsPanel():
return context.material and (context.scene.render.engine in cls.COMPAT_ENGINES)
-class MATERIAL_PT_preview(MaterialButtonsPanel, bpy.types.Panel):
- bl_label = "Preview"
- COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
-
- def draw(self, context):
- self.layout.template_preview(context.material)
-
-
class MATERIAL_PT_context_material(MaterialButtonsPanel, bpy.types.Panel):
bl_label = ""
bl_show_header = False
@@ -127,203 +119,15 @@ class MATERIAL_PT_context_material(MaterialButtonsPanel, bpy.types.Panel):
if mat:
layout.prop(mat, "type", expand=True)
+
-
-class MATERIAL_PT_custom_props(MaterialButtonsPanel, PropertyPanel, bpy.types.Panel):
- COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
- _context_path = "material"
-
-
-class MATERIAL_PT_shading(MaterialButtonsPanel, bpy.types.Panel):
- bl_label = "Shading"
- COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
-
- @classmethod
- def poll(cls, context):
- mat = active_node_mat(context.material)
- engine = context.scene.render.engine
- return mat and (mat.type in ('SURFACE', 'WIRE', 'HALO')) and (engine in cls.COMPAT_ENGINES)
-
- def draw(self, context):
- layout = self.layout
-
- mat = active_node_mat(context.material)
-
- if mat.type in ('SURFACE', 'WIRE'):
- split = layout.split()
-
- col = split.column()
- sub = col.column()
- sub.active = not mat.shadeless
- sub.prop(mat, "emit")
- sub.prop(mat, "ambient")
- sub = col.column()
- sub.prop(mat, "translucency")
-
- col = split.column()
- col.prop(mat, "shadeless")
- sub = col.column()
- sub.active = not mat.shadeless
- sub.prop(mat, "tangent_shading")
- sub.prop(mat, "cubic")
-
- elif mat.type == 'HALO':
- layout.prop(mat, "alpha")
-
-
-class MATERIAL_PT_strand(MaterialButtonsPanel, bpy.types.Panel):
- bl_label = "Strand"
- bl_default_closed = True
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- @classmethod
- def poll(cls, context):
- mat = context.material
- engine = context.scene.render.engine
- return mat and (mat.type in ('SURFACE', 'WIRE', 'HALO')) and (engine in cls.COMPAT_ENGINES)
-
- def draw(self, context):
- layout = self.layout
-
- mat = context.material # dont use node material
- tan = mat.strand
-
- split = layout.split()
-
- col = split.column()
- sub = col.column(align=True)
- sub.label(text="Size:")
- sub.prop(tan, "root_size", text="Root")
- sub.prop(tan, "tip_size", text="Tip")
- sub.prop(tan, "min_size", text="Minimum")
- sub.prop(tan, "blender_units")
- sub = col.column()
- sub.active = (not mat.shadeless)
- sub.prop(tan, "tangent_shading")
- col.prop(tan, "shape")
-
- col = split.column()
- col.label(text="Shading:")
- col.prop(tan, "width_fade")
- ob = context.object
- if ob and ob.type == 'MESH':
- col.prop_object(tan, "uv_layer", ob.data, "uv_textures", text="")
- else:
- col.prop(tan, "uv_layer", text="")
- col.separator()
- sub = col.column()
- sub.active = (not mat.shadeless)
- sub.prop(tan, "surface_diffuse")
- sub = col.column()
- sub.active = tan.surface_diffuse
- sub.prop(tan, "blend_distance", text="Distance")
-
-
-class MATERIAL_PT_physics(MaterialButtonsPanel, bpy.types.Panel):
- bl_label = "Physics"
- COMPAT_ENGINES = {'BLENDER_GAME'}
-
- @classmethod
- def poll(cls, context):
- return context.material and (context.scene.render.engine in cls.COMPAT_ENGINES)
-
- def draw(self, context):
- layout = self.layout
-
- phys = context.material.physics # dont use node material
-
- split = layout.split()
-
- col = split.column()
- col.prop(phys, "distance")
- col.prop(phys, "friction")
- col.prop(phys, "align_to_normal")
-
- col = split.column()
- col.prop(phys, "force", slider=True)
- col.prop(phys, "elasticity", slider=True)
- col.prop(phys, "damp", slider=True)
-
-
-class MATERIAL_PT_options(MaterialButtonsPanel, bpy.types.Panel):
- bl_label = "Options"
- COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
-
- @classmethod
- def poll(cls, context):
- mat = active_node_mat(context.material)
- engine = context.scene.render.engine
- return mat and (mat.type in ('SURFACE', 'WIRE')) and (engine in cls.COMPAT_ENGINES)
-
- def draw(self, context):
- layout = self.layout
-
- mat = active_node_mat(context.material)
-
- split = layout.split()
-
- col = split.column()
- col.prop(mat, "traceable")
- col.prop(mat, "full_oversampling")
- col.prop(mat, "use_sky")
- col.prop(mat, "exclude_mist")
- col.prop(mat, "invert_z")
- sub = col.row()
- sub.prop(mat, "z_offset")
- sub.active = mat.transparency and mat.transparency_method == 'Z_TRANSPARENCY'
- sub = col.column(align=True)
- sub.label(text="Light Group:")
- sub.prop(mat, "light_group", text="")
- row = sub.row()
- row.active = bool(mat.light_group)
- row.prop(mat, "light_group_exclusive", text="Exclusive")
-
- col = split.column()
- col.prop(mat, "face_texture")
- sub = col.column()
- sub.active = mat.face_texture
- sub.prop(mat, "face_texture_alpha")
- col.separator()
- col.prop(mat, "vertex_color_paint")
- col.prop(mat, "vertex_color_light")
- col.prop(mat, "object_color")
-
-
-class MATERIAL_PT_shadow(MaterialButtonsPanel, bpy.types.Panel):
- bl_label = "Shadow"
- bl_default_closed = True
+class MATERIAL_PT_preview(MaterialButtonsPanel, bpy.types.Panel):
+ bl_label = "Preview"
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
- @classmethod
- def poll(cls, context):
- mat = active_node_mat(context.material)
- engine = context.scene.render.engine
- return mat and (mat.type in ('SURFACE', 'WIRE')) and (engine in cls.COMPAT_ENGINES)
-
def draw(self, context):
- layout = self.layout
-
- mat = active_node_mat(context.material)
-
- split = layout.split()
-
- col = split.column()
- col.prop(mat, "shadows", text="Receive")
- col.prop(mat, "receive_transparent_shadows", text="Receive Transparent")
- col.prop(mat, "only_shadow", text="Shadows Only")
- col.prop(mat, "cast_shadows_only", text="Cast Only")
- col.prop(mat, "shadow_casting_alpha", text="Casting Alpha")
+ self.layout.template_preview(context.material)
- col = split.column()
- col.prop(mat, "cast_buffer_shadows")
- sub = col.column()
- sub.active = mat.cast_buffer_shadows
- sub.prop(mat, "shadow_buffer_bias", text="Buffer Bias")
- col.prop(mat, "ray_shadow_bias", text="Auto Ray Bias")
- sub = col.column()
- sub.active = (not mat.ray_shadow_bias)
- sub.prop(mat, "shadow_ray_bias", text="Ray Bias")
- col.prop(mat, "cast_approximate")
class MATERIAL_PT_diffuse(MaterialButtonsPanel, bpy.types.Panel):
bl_label = "Diffuse"
@@ -345,16 +149,16 @@ class MATERIAL_PT_diffuse(MaterialButtonsPanel, bpy.types.Panel):
col = split.column()
col.prop(mat, "diffuse_color", text="")
sub = col.column()
- sub.active = (not mat.shadeless)
+ sub.active = (not mat.use_shadeless)
sub.prop(mat, "diffuse_intensity", text="Intensity")
col = split.column()
- col.active = (not mat.shadeless)
+ col.active = (not mat.use_shadeless)
col.prop(mat, "diffuse_shader", text="")
col.prop(mat, "use_diffuse_ramp", text="Ramp")
col = layout.column()
- col.active = (not mat.shadeless)
+ col.active = (not mat.use_shadeless)
if mat.diffuse_shader == 'OREN_NAYAR':
col.prop(mat, "roughness")
elif mat.diffuse_shader == 'MINNAERT':
@@ -407,7 +211,7 @@ class MATERIAL_PT_specular(MaterialButtonsPanel, bpy.types.Panel):
mat = active_node_mat(context.material)
- layout.active = (not mat.shadeless)
+ layout.active = (not mat.use_shadeless)
split = layout.split()
@@ -457,8 +261,45 @@ class MATERIAL_PT_specular(MaterialButtonsPanel, bpy.types.Panel):
row.prop(mat, "specular_ramp_factor", text="Factor")
-class MATERIAL_PT_sss(MaterialButtonsPanel, bpy.types.Panel):
- bl_label = "Subsurface Scattering"
+class MATERIAL_PT_shading(MaterialButtonsPanel, bpy.types.Panel):
+ bl_label = "Shading"
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
+
+ @classmethod
+ def poll(cls, context):
+ mat = active_node_mat(context.material)
+ engine = context.scene.render.engine
+ return mat and (mat.type in ('SURFACE', 'WIRE', 'HALO')) and (engine in cls.COMPAT_ENGINES)
+
+ def draw(self, context):
+ layout = self.layout
+
+ mat = active_node_mat(context.material)
+
+ if mat.type in ('SURFACE', 'WIRE'):
+ split = layout.split()
+
+ col = split.column()
+ sub = col.column()
+ sub.active = not mat.use_shadeless
+ sub.prop(mat, "emit")
+ sub.prop(mat, "ambient")
+ sub = col.column()
+ sub.prop(mat, "translucency")
+
+ col = split.column()
+ col.prop(mat, "use_shadeless")
+ sub = col.column()
+ sub.active = not mat.use_shadeless
+ sub.prop(mat, "use_tangent_shading")
+ sub.prop(mat, "cubic")
+
+ elif mat.type == 'HALO':
+ layout.prop(mat, "alpha")
+
+
+class MATERIAL_PT_transp(MaterialButtonsPanel, bpy.types.Panel):
+ bl_label = "Transparency"
bl_default_closed = True
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -470,44 +311,55 @@ class MATERIAL_PT_sss(MaterialButtonsPanel, bpy.types.Panel):
def draw_header(self, context):
mat = active_node_mat(context.material)
- sss = mat.subsurface_scattering
- self.layout.active = (not mat.shadeless)
- self.layout.prop(sss, "enabled", text="")
+ self.layout.prop(mat, "use_transparency", text="")
def draw(self, context):
layout = self.layout
mat = active_node_mat(context.material)
- sss = mat.subsurface_scattering
-
- layout.active = (sss.enabled) and (not mat.shadeless)
+ rayt = mat.raytrace_transparency
- row = layout.row().split()
- sub = row.row(align=True).split(percentage=0.75)
- sub.menu("MATERIAL_MT_sss_presets", text=bpy.types.MATERIAL_MT_sss_presets.bl_label)
- sub.operator("material.sss_preset_add", text="", icon="ZOOMIN")
+ row = layout.row()
+ row.active = mat.use_transparency and (not mat.use_shadeless)
+ row.prop(mat, "transparency_method", expand=True)
split = layout.split()
col = split.column()
- col.prop(sss, "ior")
- col.prop(sss, "scale")
- col.prop(sss, "color", text="")
- col.prop(sss, "radius", text="RGB Radius", expand=True)
+ col.prop(mat, "alpha")
+ row = col.row()
+ row.active = mat.use_transparency and (not mat.use_shadeless)
+ row.prop(mat, "specular_alpha", text="Specular")
col = split.column()
- sub = col.column(align=True)
- sub.label(text="Blend:")
- sub.prop(sss, "color_factor", text="Color")
- sub.prop(sss, "texture_factor", text="Texture")
- sub.label(text="Scattering Weight:")
- sub.prop(sss, "front")
- sub.prop(sss, "back")
- col.separator()
- col.prop(sss, "error_tolerance", text="Error")
+ col.active = (not mat.use_shadeless)
+ col.prop(rayt, "fresnel")
+ sub = col.column()
+ sub.active = rayt.fresnel > 0
+ sub.prop(rayt, "fresnel_factor", text="Blend")
+ if mat.transparency_method == 'RAYTRACE':
+ layout.separator()
+ split = layout.split()
+ split.active = mat.use_transparency
+ col = split.column()
+ col.prop(rayt, "ior")
+ col.prop(rayt, "filter")
+ col.prop(rayt, "falloff")
+ col.prop(rayt, "limit")
+ col.prop(rayt, "depth")
+
+ col = split.column()
+ col.label(text="Gloss:")
+ col.prop(rayt, "gloss_factor", text="Amount")
+ sub = col.column()
+ sub.active = rayt.gloss_factor < 1.0
+ sub.prop(rayt, "gloss_threshold", text="Threshold")
+ sub.prop(rayt, "gloss_samples", text="Samples")
+
+
class MATERIAL_PT_mirror(MaterialButtonsPanel, bpy.types.Panel):
bl_label = "Mirror"
bl_default_closed = True
@@ -522,7 +374,7 @@ class MATERIAL_PT_mirror(MaterialButtonsPanel, bpy.types.Panel):
def draw_header(self, context):
raym = active_node_mat(context.material).raytrace_mirror
- self.layout.prop(raym, "enabled", text="")
+ self.layout.prop(raym, "use", text="")
def draw(self, context):
layout = self.layout
@@ -530,7 +382,7 @@ class MATERIAL_PT_mirror(MaterialButtonsPanel, bpy.types.Panel):
mat = active_node_mat(context.material)
raym = mat.raytrace_mirror
- layout.active = raym.enabled
+ layout.active = raym.use
split = layout.split()
@@ -566,8 +418,8 @@ class MATERIAL_PT_mirror(MaterialButtonsPanel, bpy.types.Panel):
sub.prop(raym, "gloss_anisotropic", text="Anisotropic")
-class MATERIAL_PT_transp(MaterialButtonsPanel, bpy.types.Panel):
- bl_label = "Transparency"
+class MATERIAL_PT_sss(MaterialButtonsPanel, bpy.types.Panel):
+ bl_label = "Subsurface Scattering"
bl_default_closed = True
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -579,85 +431,42 @@ class MATERIAL_PT_transp(MaterialButtonsPanel, bpy.types.Panel):
def draw_header(self, context):
mat = active_node_mat(context.material)
+ sss = mat.subsurface_scattering
- self.layout.prop(mat, "transparency", text="")
+ self.layout.active = (not mat.use_shadeless)
+ self.layout.prop(sss, "use", text="")
def draw(self, context):
layout = self.layout
mat = active_node_mat(context.material)
- rayt = mat.raytrace_transparency
+ sss = mat.subsurface_scattering
- row = layout.row()
- row.active = mat.transparency and (not mat.shadeless)
- row.prop(mat, "transparency_method", expand=True)
+ layout.active = (sss.use) and (not mat.use_shadeless)
- split = layout.split()
+ row = layout.row().split()
+ sub = row.row(align=True).split(percentage=0.75)
+ sub.menu("MATERIAL_MT_sss_presets", text=bpy.types.MATERIAL_MT_sss_presets.bl_label)
+ sub.operator("material.sss_preset_add", text="", icon="ZOOMIN")
- col = split.column()
- col.prop(mat, "alpha")
- row = col.row()
- row.active = mat.transparency and (not mat.shadeless)
- row.prop(mat, "specular_alpha", text="Specular")
+ split = layout.split()
col = split.column()
- col.active = (not mat.shadeless)
- col.prop(rayt, "fresnel")
- sub = col.column()
- sub.active = rayt.fresnel > 0
- sub.prop(rayt, "fresnel_factor", text="Blend")
-
- if mat.transparency_method == 'RAYTRACE':
- layout.separator()
- split = layout.split()
- split.active = mat.transparency
-
- col = split.column()
- col.prop(rayt, "ior")
- col.prop(rayt, "filter")
- col.prop(rayt, "falloff")
- col.prop(rayt, "limit")
- col.prop(rayt, "depth")
-
- col = split.column()
- col.label(text="Gloss:")
- col.prop(rayt, "gloss_factor", text="Amount")
- sub = col.column()
- sub.active = rayt.gloss_factor < 1.0
- sub.prop(rayt, "gloss_threshold", text="Threshold")
- sub.prop(rayt, "gloss_samples", text="Samples")
-
-
-class MATERIAL_PT_transp_game(MaterialButtonsPanel, bpy.types.Panel):
- bl_label = "Transparency"
- bl_default_closed = True
- COMPAT_ENGINES = {'BLENDER_GAME'}
-
- @classmethod
- def poll(cls, context):
- mat = active_node_mat(context.material)
- engine = context.scene.render.engine
- return mat and (engine in cls.COMPAT_ENGINES)
-
- def draw_header(self, context):
- mat = active_node_mat(context.material)
-
- self.layout.prop(mat, "transparency", text="")
-
- def draw(self, context):
- layout = self.layout
-
- mat = active_node_mat(context.material)
- rayt = mat.raytrace_transparency
-
- row = layout.row()
- row.active = mat.transparency and (not mat.shadeless)
- row.prop(mat, "transparency_method", expand=True)
-
- split = layout.split()
+ col.prop(sss, "ior")
+ col.prop(sss, "scale")
+ col.prop(sss, "color", text="")
+ col.prop(sss, "radius", text="RGB Radius", expand=True)
col = split.column()
- col.prop(mat, "alpha")
+ sub = col.column(align=True)
+ sub.label(text="Blend:")
+ sub.prop(sss, "color_factor", text="Color")
+ sub.prop(sss, "texture_factor", text="Texture")
+ sub.label(text="Scattering Weight:")
+ sub.prop(sss, "front")
+ sub.prop(sss, "back")
+ col.separator()
+ col.prop(sss, "error_threshold", text="Error")
class MATERIAL_PT_halo(MaterialButtonsPanel, bpy.types.Panel):
@@ -685,8 +494,8 @@ class MATERIAL_PT_halo(MaterialButtonsPanel, bpy.types.Panel):
col.prop(halo, "add")
col.label(text="Options:")
col.prop(halo, "texture")
- col.prop(halo, "vertex_normal")
- col.prop(halo, "xalpha")
+ col.prop(halo, "use_vertex_normal")
+ col.prop(halo, "use_extreme_alpha")
col.prop(halo, "shaded")
col.prop(halo, "soft")
@@ -694,19 +503,19 @@ class MATERIAL_PT_halo(MaterialButtonsPanel, bpy.types.Panel):
col.prop(halo, "ring")
sub = col.column()
sub.active = halo.ring
- sub.prop(halo, "rings")
+ sub.prop(halo, "ring_count")
sub.prop(mat, "mirror_color", text="")
col.separator()
col.prop(halo, "lines")
sub = col.column()
sub.active = halo.lines
- sub.prop(halo, "line_number", text="Lines")
+ sub.prop(halo, "line_count", text="Lines")
sub.prop(mat, "specular_color", text="")
col.separator()
col.prop(halo, "star")
sub = col.column()
sub.active = halo.star
- sub.prop(halo, "star_tips")
+ sub.prop(halo, "star_tip_count")
class MATERIAL_PT_flare(MaterialButtonsPanel, bpy.types.Panel):
@@ -722,7 +531,7 @@ class MATERIAL_PT_flare(MaterialButtonsPanel, bpy.types.Panel):
def draw_header(self, context):
halo = context.material.halo
- self.layout.prop(halo, "flare_mode", text="")
+ self.layout.prop(halo, "use_flare_mode", text="")
def draw(self, context):
layout = self.layout
@@ -730,7 +539,7 @@ class MATERIAL_PT_flare(MaterialButtonsPanel, bpy.types.Panel):
mat = context.material # dont use node material
halo = mat.halo
- layout.active = halo.flare_mode
+ layout.active = halo.use_flare_mode
split = layout.split()
@@ -740,8 +549,195 @@ class MATERIAL_PT_flare(MaterialButtonsPanel, bpy.types.Panel):
col.prop(halo, "flare_seed", text="Seed")
col = split.column()
- col.prop(halo, "flares_sub", text="Subflares")
- col.prop(halo, "flare_subsize", text="Subsize")
+ col.prop(halo, "flare_subflare_count", text="Subflares")
+ col.prop(halo, "flare_subflare_size", text="Subsize")
+
+
+class MATERIAL_PT_physics(MaterialButtonsPanel, bpy.types.Panel):
+ bl_label = "Physics"
+ COMPAT_ENGINES = {'BLENDER_GAME'}
+
+ @classmethod
+ def poll(cls, context):
+ return context.material and (context.scene.render.engine in cls.COMPAT_ENGINES)
+
+ def draw(self, context):
+ layout = self.layout
+
+ phys = context.material.physics # dont use node material
+
+ split = layout.split()
+
+ col = split.column()
+ col.prop(phys, "distance")
+ col.prop(phys, "friction")
+ col.prop(phys, "use_normal_align")
+
+ col = split.column()
+ col.prop(phys, "force", slider=True)
+ col.prop(phys, "elasticity", slider=True)
+ col.prop(phys, "damp", slider=True)
+
+
+class MATERIAL_PT_strand(MaterialButtonsPanel, bpy.types.Panel):
+ bl_label = "Strand"
+ bl_default_closed = True
+ COMPAT_ENGINES = {'BLENDER_RENDER'}
+
+ @classmethod
+ def poll(cls, context):
+ mat = context.material
+ engine = context.scene.render.engine
+ return mat and (mat.type in ('SURFACE', 'WIRE', 'HALO')) and (engine in cls.COMPAT_ENGINES)
+
+ def draw(self, context):
+ layout = self.layout
+
+ mat = context.material # dont use node material
+ tan = mat.strand
+
+ split = layout.split()
+
+ col = split.column()
+ sub = col.column(align=True)
+ sub.label(text="Size:")
+ sub.prop(tan, "root_size", text="Root")
+ sub.prop(tan, "tip_size", text="Tip")
+ sub.prop(tan, "size_min", text="Minimum")
+ sub.prop(tan, "use_blender_units")
+ sub = col.column()
+ sub.active = (not mat.use_shadeless)
+ sub.prop(tan, "use_tangent_shading")
+ col.prop(tan, "shape")
+
+ col = split.column()
+ col.label(text="Shading:")
+ col.prop(tan, "width_fade")
+ ob = context.object
+ if ob and ob.type == 'MESH':
+ col.prop_object(tan, "uv_layer", ob.data, "uv_textures", text="")
+ else:
+ col.prop(tan, "uv_layer", text="")
+ col.separator()
+ sub = col.column()
+ sub.active = (not mat.use_shadeless)
+ sub.prop(tan, "use_surface_diffuse")
+ sub = col.column()
+ sub.active = tan.use_surface_diffuse
+ sub.prop(tan, "blend_distance", text="Distance")
+
+
+class MATERIAL_PT_options(MaterialButtonsPanel, bpy.types.Panel):
+ bl_label = "Options"
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
+
+ @classmethod
+ def poll(cls, context):
+ mat = active_node_mat(context.material)
+ engine = context.scene.render.engine
+ return mat and (mat.type in ('SURFACE', 'WIRE')) and (engine in cls.COMPAT_ENGINES)
+
+ def draw(self, context):
+ layout = self.layout
+
+ mat = active_node_mat(context.material)
+
+ split = layout.split()
+
+ col = split.column()
+ col.prop(mat, "use_raytrace")
+ col.prop(mat, "use_full_oversampling")
+ col.prop(mat, "use_sky")
+ col.prop(mat, "use_mist")
+ col.prop(mat, "invert_z")
+ sub = col.row()
+ sub.prop(mat, "offset_z")
+ sub.active = mat.use_transparency and mat.transparency_method == 'Z_TRANSPARENCY'
+ sub = col.column(align=True)
+ sub.label(text="Light Group:")
+ sub.prop(mat, "light_group", text="")
+ row = sub.row()
+ row.active = bool(mat.light_group)
+ row.prop(mat, "use_light_group_exclusive", text="Exclusive")
+
+ col = split.column()
+ col.prop(mat, "use_face_texture")
+ sub = col.column()
+ sub.active = mat.use_face_texture
+ sub.prop(mat, "use_face_texture_alpha")
+ col.separator()
+ col.prop(mat, "use_vertex_color_paint")
+ col.prop(mat, "use_vertex_color_light")
+ col.prop(mat, "use_object_color")
+
+
+class MATERIAL_PT_shadow(MaterialButtonsPanel, bpy.types.Panel):
+ bl_label = "Shadow"
+ bl_default_closed = True
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
+
+ @classmethod
+ def poll(cls, context):
+ mat = active_node_mat(context.material)
+ engine = context.scene.render.engine
+ return mat and (mat.type in ('SURFACE', 'WIRE')) and (engine in cls.COMPAT_ENGINES)
+
+ def draw(self, context):
+ layout = self.layout
+
+ mat = active_node_mat(context.material)
+
+ split = layout.split()
+
+ col = split.column()
+ col.prop(mat, "shadows", text="Receive")
+ col.prop(mat, "use_transparent_shadows", text="Receive Transparent")
+ col.prop(mat, "use_only_shadow", text="Shadows Only")
+ col.prop(mat, "use_cast_shadows_only", text="Cast Only")
+ col.prop(mat, "shadow_cast_alpha", text="Casting Alpha")
+
+ col = split.column()
+ col.prop(mat, "use_cast_buffer_shadows")
+ sub = col.column()
+ sub.active = mat.use_cast_buffer_shadows
+ sub.prop(mat, "shadow_buffer_bias", text="Buffer Bias")
+ col.prop(mat, "use_ray_shadow_bias", text="Auto Ray Bias")
+ sub = col.column()
+ sub.active = (not mat.use_ray_shadow_bias)
+ sub.prop(mat, "shadow_ray_bias", text="Ray Bias")
+ col.prop(mat, "use_cast_approximate")
+
+
+class MATERIAL_PT_transp_game(MaterialButtonsPanel, bpy.types.Panel):
+ bl_label = "Transparency"
+ bl_default_closed = True
+ COMPAT_ENGINES = {'BLENDER_GAME'}
+
+ @classmethod
+ def poll(cls, context):
+ mat = active_node_mat(context.material)
+ engine = context.scene.render.engine
+ return mat and (engine in cls.COMPAT_ENGINES)
+
+ def draw_header(self, context):
+ mat = active_node_mat(context.material)
+
+ self.layout.prop(mat, "use_transparency", text="")
+
+ def draw(self, context):
+ layout = self.layout
+
+ mat = active_node_mat(context.material)
+ rayt = mat.raytrace_transparency
+
+ row = layout.row()
+ row.active = mat.use_transparency and (not mat.use_shadeless)
+ row.prop(mat, "transparency_method", expand=True)
+
+ split = layout.split()
+
+ col = split.column()
+ col.prop(mat, "alpha")
class VolumeButtonsPanel():
@@ -814,21 +810,21 @@ class MATERIAL_PT_volume_lighting(VolumeButtonsPanel, bpy.types.Panel):
split = layout.split()
col = split.column()
- col.prop(vol, "lighting_mode", text="")
+ col.prop(vol, "light_method", text="")
col = split.column()
- if vol.lighting_mode == 'SHADED':
- col.prop(vol, "external_shadows")
- col.prop(vol, "light_cache")
+ if vol.light_method == 'SHADED':
+ col.prop(vol, "use_external_shadows")
+ col.prop(vol, "use_light_cache")
sub = col.column()
- sub.active = vol.light_cache
+ sub.active = vol.use_light_cache
sub.prop(vol, "cache_resolution")
- elif vol.lighting_mode in ('MULTIPLE_SCATTERING', 'SHADED_PLUS_MULTIPLE_SCATTERING'):
+ elif vol.light_method in ('MULTIPLE_SCATTERING', 'SHADED_PLUS_MULTIPLE_SCATTERING'):
sub = col.column()
sub.enabled = True
sub.active = False
- sub.prop(vol, "light_cache")
+ sub.prop(vol, "use_light_cache")
col.prop(vol, "cache_resolution")
sub = col.column(align=True)
@@ -863,13 +859,13 @@ class MATERIAL_PT_volume_integration(VolumeButtonsPanel, bpy.types.Panel):
col = split.column()
col.label(text="Step Calculation:")
- col.prop(vol, "step_calculation", text="")
+ col.prop(vol, "step_method", text="")
col = col.column(align=True)
col.prop(vol, "step_size")
col = split.column()
col.label()
- col.prop(vol, "depth_cutoff")
+ col.prop(vol, "depth_threshold")
class MATERIAL_PT_volume_options(VolumeButtonsPanel, bpy.types.Panel):
@@ -885,16 +881,21 @@ class MATERIAL_PT_volume_options(VolumeButtonsPanel, bpy.types.Panel):
split = layout.split()
col = split.column()
- col.prop(mat, "traceable")
- col.prop(mat, "full_oversampling")
- col.prop(mat, "exclude_mist")
+ col.prop(mat, "use_raytrace")
+ col.prop(mat, "use_full_oversampling")
+ col.prop(mat, "use_mist")
col = split.column()
col.label(text="Light Group:")
col.prop(mat, "light_group", text="")
row = col.row()
row.active = bool(mat.light_group)
- row.prop(mat, "light_group_exclusive", text="Exclusive")
+ row.prop(mat, "use_light_group_exclusive", text="Exclusive")
+
+
+class MATERIAL_PT_custom_props(MaterialButtonsPanel, PropertyPanel, bpy.types.Panel):
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
+ _context_path = "material"
def register():
diff --git a/release/scripts/ui/properties_object.py b/release/scripts/ui/properties_object.py
index 3af0cdef1e4..a87a43a7998 100644
--- a/release/scripts/ui/properties_object.py
+++ b/release/scripts/ui/properties_object.py
@@ -151,7 +151,7 @@ class OBJECT_PT_groups(ObjectButtonsPanel, bpy.types.Panel):
split = col.box().split()
col = split.column()
- col.prop(group, "layer", text="Dupli")
+ col.prop(group, "layers", text="Dupli")
col = split.column()
col.prop(group, "dupli_offset", text="")
@@ -172,27 +172,27 @@ class OBJECT_PT_display(ObjectButtonsPanel, bpy.types.Panel):
split = layout.split()
col = split.column()
- col.prop(ob, "max_draw_type", text="Type")
+ col.prop(ob, "draw_type", text="Type")
col = split.column()
row = col.row()
- row.prop(ob, "draw_bounds", text="Bounds")
+ row.prop(ob, "show_bounds", text="Bounds")
sub = row.row()
- sub.active = ob.draw_bounds
+ sub.active = ob.show_bounds
sub.prop(ob, "draw_bounds_type", text="")
split = layout.split()
col = split.column()
- col.prop(ob, "draw_name", text="Name")
- col.prop(ob, "draw_axis", text="Axis")
- col.prop(ob, "draw_wire", text="Wire")
+ col.prop(ob, "show_name", text="Name")
+ col.prop(ob, "show_axis", text="Axis")
+ col.prop(ob, "show_wire", text="Wire")
col.prop(ob, "color", text="Object Color")
col = split.column()
- col.prop(ob, "draw_texture_space", text="Texture Space")
- col.prop(ob, "x_ray", text="X-Ray")
- col.prop(ob, "draw_transparent", text="Transparency")
+ col.prop(ob, "show_texture_space", text="Texture Space")
+ col.prop(ob, "show_x_ray", text="X-Ray")
+ col.prop(ob, "show_transparent", text="Transparency")
class OBJECT_PT_duplication(ObjectButtonsPanel, bpy.types.Panel):
@@ -219,7 +219,7 @@ class OBJECT_PT_duplication(ObjectButtonsPanel, bpy.types.Panel):
layout.prop(ob, "use_dupli_frames_speed", text="Speed")
elif ob.dupli_type == 'VERTS':
- layout.prop(ob, "use_dupli_verts_rotation", text="Rotation")
+ layout.prop(ob, "use_dupli_vertices_rotation", text="Rotation")
elif ob.dupli_type == 'FACES':
split = layout.split()
@@ -249,15 +249,15 @@ class OBJECT_PT_animation(ObjectButtonsPanel, bpy.types.Panel):
col = split.column()
col.label(text="Time Offset:")
- col.prop(ob, "time_offset_edit", text="Edit")
+ col.prop(ob, "use_time_offset_edit", text="Edit")
row = col.row()
- row.prop(ob, "time_offset_particle", text="Particle")
+ row.prop(ob, "use_time_offset_particle", text="Particle")
row.active = bool(ob.particle_systems)
row = col.row()
- row.prop(ob, "time_offset_parent", text="Parent")
+ row.prop(ob, "use_time_offset_parent", text="Parent")
row.active = (ob.parent is not None)
row = col.row()
- row.prop(ob, "slow_parent")
+ row.prop(ob, "use_slow_parent")
row.active = (ob.parent is not None)
col.prop(ob, "time_offset", text="Offset")
diff --git a/release/scripts/ui/properties_object_constraint.py b/release/scripts/ui/properties_object_constraint.py
index b3a96841d71..be102a17103 100644
--- a/release/scripts/ui/properties_object_constraint.py
+++ b/release/scripts/ui/properties_object_constraint.py
@@ -86,7 +86,7 @@ class ConstraintButtonsPanel():
col.prop(con, "use_stretch")
col = split.column()
- col.prop(con, "chain_length")
+ col.prop(con, "chain_count")
col.prop(con, "use_target")
def CHILD_OF(self, context, layout, con):
@@ -133,7 +133,7 @@ class ConstraintButtonsPanel():
col.prop(con, "up", text="Up")
col = split.column()
- col.prop(con, "target_z")
+ col.prop(con, "use_target_z")
self.space_template(layout, con)
@@ -157,7 +157,7 @@ class ConstraintButtonsPanel():
split = layout.split()
col = split.column()
col.prop(con, "iterations")
- col.prop(con, "chain_length")
+ col.prop(con, "chain_count")
col.label(text="Weight:")
col.prop(con, "weight", text="Position", slider=True)
@@ -178,20 +178,20 @@ class ConstraintButtonsPanel():
row = layout.row()
row.label(text="Axis Ref:")
- row.prop(con, "axis_reference", expand=True)
+ row.prop(con, "reference_axis", expand=True)
split = layout.split(percentage=0.33)
- split.row().prop(con, "use_position")
+ split.row().prop(con, "use_location")
row = split.row()
row.prop(con, "weight", text="Weight", slider=True)
- row.active = con.use_position
+ row.active = con.use_location
split = layout.split(percentage=0.33)
row = split.row()
row.label(text="Lock:")
row = split.row()
- row.prop(con, "pos_lock_x", text="X")
- row.prop(con, "pos_lock_y", text="Y")
- row.prop(con, "pos_lock_z", text="Z")
- split.active = con.use_position
+ row.prop(con, "lock_location_x", text="X")
+ row.prop(con, "lock_location_y", text="Y")
+ row.prop(con, "lock_location_z", text="Z")
+ split.active = con.use_location
split = layout.split(percentage=0.33)
split.row().prop(con, "use_rotation")
@@ -202,9 +202,9 @@ class ConstraintButtonsPanel():
row = split.row()
row.label(text="Lock:")
row = split.row()
- row.prop(con, "rot_lock_x", text="X")
- row.prop(con, "rot_lock_y", text="Y")
- row.prop(con, "rot_lock_z", text="Z")
+ row.prop(con, "lock_rotation_x", text="X")
+ row.prop(con, "lock_rotation_y", text="Y")
+ row.prop(con, "lock_rotation_z", text="Z")
split.active = con.use_rotation
def IK_DISTANCE(self, context, layout, con):
@@ -226,8 +226,8 @@ class ConstraintButtonsPanel():
col.prop(con, "use_curve_radius")
col = split.column()
- col.prop(con, "use_fixed_position")
- if con.use_fixed_position:
+ col.prop(con, "use_fixed_location")
+ if con.use_fixed_location:
col.prop(con, "offset_factor", text="Offset")
else:
col.prop(con, "offset")
@@ -248,25 +248,25 @@ class ConstraintButtonsPanel():
col.prop(con, "use_limit_x")
sub = col.column()
sub.active = con.use_limit_x
- sub.prop(con, "minimum_x", text="Min")
- sub.prop(con, "maximum_x", text="Max")
+ sub.prop(con, "min_x", text="Min")
+ sub.prop(con, "max_x", text="Max")
col = split.column(align=True)
col.prop(con, "use_limit_y")
sub = col.column()
sub.active = con.use_limit_y
- sub.prop(con, "minimum_y", text="Min")
- sub.prop(con, "maximum_y", text="Max")
+ sub.prop(con, "min_y", text="Min")
+ sub.prop(con, "max_y", text="Max")
col = split.column(align=True)
col.prop(con, "use_limit_z")
sub = col.column()
sub.active = con.use_limit_z
- sub.prop(con, "minimum_z", text="Min")
- sub.prop(con, "maximum_z", text="Max")
+ sub.prop(con, "min_z", text="Min")
+ sub.prop(con, "max_z", text="Max")
row = layout.row()
- row.prop(con, "limit_transform")
+ row.prop(con, "use_transform_limit")
row.label()
row = layout.row()
@@ -277,37 +277,37 @@ class ConstraintButtonsPanel():
split = layout.split()
col = split.column()
- col.prop(con, "use_minimum_x")
+ col.prop(con, "use_min_x")
sub = col.column()
- sub.active = con.use_minimum_x
- sub.prop(con, "minimum_x", text="")
- col.prop(con, "use_maximum_x")
+ sub.active = con.use_min_x
+ sub.prop(con, "min_x", text="")
+ col.prop(con, "use_max_x")
sub = col.column()
- sub.active = con.use_maximum_x
- sub.prop(con, "maximum_x", text="")
+ sub.active = con.use_max_x
+ sub.prop(con, "max_x", text="")
col = split.column()
- col.prop(con, "use_minimum_y")
+ col.prop(con, "use_min_y")
sub = col.column()
- sub.active = con.use_minimum_y
- sub.prop(con, "minimum_y", text="")
- col.prop(con, "use_maximum_y")
+ sub.active = con.use_min_y
+ sub.prop(con, "min_y", text="")
+ col.prop(con, "use_max_y")
sub = col.column()
- sub.active = con.use_maximum_y
- sub.prop(con, "maximum_y", text="")
+ sub.active = con.use_max_y
+ sub.prop(con, "max_y", text="")
col = split.column()
- col.prop(con, "use_minimum_z")
+ col.prop(con, "use_min_z")
sub = col.column()
- sub.active = con.use_minimum_z
- sub.prop(con, "minimum_z", text="")
- col.prop(con, "use_maximum_z")
+ sub.active = con.use_min_z
+ sub.prop(con, "min_z", text="")
+ col.prop(con, "use_max_z")
sub = col.column()
- sub.active = con.use_maximum_z
- sub.prop(con, "maximum_z", text="")
+ sub.active = con.use_max_z
+ sub.prop(con, "max_z", text="")
row = layout.row()
- row.prop(con, "limit_transform")
+ row.prop(con, "use_transform_limit")
row.label()
row = layout.row()
@@ -318,37 +318,37 @@ class ConstraintButtonsPanel():
split = layout.split()
col = split.column()
- col.prop(con, "use_minimum_x")
+ col.prop(con, "use_min_x")
sub = col.column()
- sub.active = con.use_minimum_x
- sub.prop(con, "minimum_x", text="")
- col.prop(con, "use_maximum_x")
+ sub.active = con.use_min_x
+ sub.prop(con, "min_x", text="")
+ col.prop(con, "use_max_x")
sub = col.column()
- sub.active = con.use_maximum_x
- sub.prop(con, "maximum_x", text="")
+ sub.active = con.use_max_x
+ sub.prop(con, "max_x", text="")
col = split.column()
- col.prop(con, "use_minimum_y")
+ col.prop(con, "use_min_y")
sub = col.column()
- sub.active = con.use_minimum_y
- sub.prop(con, "minimum_y", text="")
- col.prop(con, "use_maximum_y")
+ sub.active = con.use_min_y
+ sub.prop(con, "min_y", text="")
+ col.prop(con, "use_max_y")
sub = col.column()
- sub.active = con.use_maximum_y
- sub.prop(con, "maximum_y", text="")
+ sub.active = con.use_max_y
+ sub.prop(con, "max_y", text="")
col = split.column()
- col.prop(con, "use_minimum_z")
+ col.prop(con, "use_min_z")
sub = col.column()
- sub.active = con.use_minimum_z
- sub.prop(con, "minimum_z", text="")
- col.prop(con, "use_maximum_z")
+ sub.active = con.use_min_z
+ sub.prop(con, "min_z", text="")
+ col.prop(con, "use_max_z")
sub = col.column()
- sub.active = con.use_maximum_z
- sub.prop(con, "maximum_z", text="")
+ sub.active = con.use_max_z
+ sub.prop(con, "max_z", text="")
row = layout.row()
- row.prop(con, "limit_transform")
+ row.prop(con, "use_transform_limit")
row.label()
row = layout.row()
@@ -454,8 +454,8 @@ class ConstraintButtonsPanel():
col = split.column(align=True)
col.label(text="Target Range:")
- col.prop(con, "minimum", text="Min")
- col.prop(con, "maximum", text="Max")
+ col.prop(con, "min", text="Min")
+ col.prop(con, "max", text="Max")
row = layout.row()
row.label(text="Convert:")
@@ -489,7 +489,7 @@ class ConstraintButtonsPanel():
split = layout.split()
col = split.column()
- col.prop(con, "original_length", text="Rest Length")
+ col.prop(con, "rest_length", text="Rest Length")
col = split.column()
col.operator("constraint.stretchto_reset", text="Reset")
@@ -532,10 +532,10 @@ class ConstraintButtonsPanel():
split = layout.split()
col = split.column()
- col.prop(con, "disable_linked_collision", text="No Collision")
+ col.prop(con, "use_linked_collision", text="Linked Collision")
col = split.column()
- col.prop(con, "draw_pivot", text="Display Pivot")
+ col.prop(con, "show_pivot", text="Display Pivot")
split = layout.split()
@@ -566,7 +566,7 @@ class ConstraintButtonsPanel():
def TRANSFORM(self, context, layout, con):
self.target_template(layout, con)
- layout.prop(con, "extrapolate_motion", text="Extrapolate")
+ layout.prop(con, "use_motion_extrapolate", text="Extrapolate")
col = layout.column()
col.row().label(text="Source:")
@@ -647,14 +647,14 @@ class ConstraintButtonsPanel():
col = layout.column()
col.label(text="Spline Fitting:")
- col.prop(con, "chain_length")
- col.prop(con, "even_divisions")
- col.prop(con, "chain_offset")
+ col.prop(con, "chain_count")
+ col.prop(con, "use_even_divisions")
+ col.prop(con, "use_chain_offset")
col = layout.column()
col.label(text="Chain Scaling:")
- col.prop(con, "y_stretch")
- col.prop(con, "xz_scaling_mode")
+ col.prop(con, "use_y_stretch")
+ col.prop(con, "xz_scale_mode")
col.prop(con, "use_curve_radius")
def PIVOT(self, context, layout, con):
@@ -665,14 +665,14 @@ class ConstraintButtonsPanel():
col.prop(con, "offset", text="Pivot Offset")
else:
col = layout.column()
- col.prop(con, "use_relative_position")
- if con.use_relative_position:
+ col.prop(con, "use_relative_location")
+ if con.use_relative_location:
col.prop(con, "offset", text="Relative Pivot Point")
else:
col.prop(con, "offset", text="Absolute Pivot Point")
col = layout.column()
- col.prop(con, "enabled_rotation_range", text="Pivot When")
+ col.prop(con, "rotation_range", text="Pivot When")
class OBJECT_PT_constraints(ConstraintButtonsPanel, bpy.types.Panel):
bl_label = "Object Constraints"
diff --git a/release/scripts/ui/properties_particle.py b/release/scripts/ui/properties_particle.py
index 72e804a1cef..65070772d09 100644
--- a/release/scripts/ui/properties_particle.py
+++ b/release/scripts/ui/properties_particle.py
@@ -27,7 +27,7 @@ from properties_physics_common import basic_force_field_falloff_ui
def particle_panel_enabled(context, psys):
- return (psys.point_cache.baked is False) and (not psys.edited) and (not context.particle_system_editable)
+ return (psys.point_cache.is_baked is False) and (not psys.is_edited) and (not context.particle_system_editable)
def particle_panel_poll(cls, context):
@@ -116,15 +116,15 @@ class PARTICLE_PT_context_particles(ParticleButtonsPanel, bpy.types.Panel):
split = layout.split(percentage=0.65)
if part.type == 'HAIR':
- if psys.edited:
+ if psys.is_edited:
split.operator("particle.edited_clear", text="Free Edit")
else:
split.label(text="")
row = split.row()
row.enabled = particle_panel_enabled(context, psys)
row.prop(part, "hair_step")
- if psys.edited:
- if psys.global_hair:
+ if psys.is_edited:
+ if psys.is_global_hair:
layout.operator("particle.connect_hair")
layout.label(text="Hair is disconnected.")
else:
@@ -136,11 +136,6 @@ class PARTICLE_PT_context_particles(ParticleButtonsPanel, bpy.types.Panel):
split.prop(psys, "reactor_target_particle_system", text="Particle System")
-class PARTICLE_PT_custom_props(ParticleButtonsPanel, PropertyPanel, bpy.types.Panel):
- COMPAT_ENGINES = {'BLENDER_RENDER'}
- _context_path = "particle_system.settings"
-
-
class PARTICLE_PT_emission(ParticleButtonsPanel, bpy.types.Panel):
bl_label = "Emission"
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -148,7 +143,7 @@ class PARTICLE_PT_emission(ParticleButtonsPanel, bpy.types.Panel):
@classmethod
def poll(cls, context):
if particle_panel_poll(PARTICLE_PT_emission, context):
- return not context.particle_system.point_cache.external
+ return not context.particle_system.point_cache.use_external
else:
return False
@@ -158,7 +153,7 @@ class PARTICLE_PT_emission(ParticleButtonsPanel, bpy.types.Panel):
psys = context.particle_system
part = psys.settings
- layout.enabled = particle_panel_enabled(context, psys) and not psys.multiple_caches
+ layout.enabled = particle_panel_enabled(context, psys) and not psys.has_multiple_caches
row = layout.row()
row.active = part.distribution != 'GRID'
@@ -173,7 +168,7 @@ class PARTICLE_PT_emission(ParticleButtonsPanel, bpy.types.Panel):
col = split.column(align=True)
col.prop(part, "lifetime")
- col.prop(part, "random_lifetime", slider=True)
+ col.prop(part, "lifetime_random", slider=True)
layout.row().label(text="Emit From:")
@@ -183,7 +178,7 @@ class PARTICLE_PT_emission(ParticleButtonsPanel, bpy.types.Panel):
row = layout.row()
row.prop(part, "trand")
if part.distribution != 'GRID':
- row.prop(part, "even_distribution")
+ row.prop(part, "use_even_distribution")
if part.emit_from == 'FACE' or part.emit_from == 'VOLUME':
row = layout.row()
@@ -218,9 +213,9 @@ class PARTICLE_PT_hair_dynamics(ParticleButtonsPanel, bpy.types.Panel):
#cloth = context.cloth.collision_settings
#self.layout.active = cloth_panel_enabled(context.cloth)
- #self.layout.prop(cloth, "enable_collision", text="")
+ #self.layout.prop(cloth, "use_collision", text="")
psys = context.particle_system
- self.layout.prop(psys, "hair_dynamics", text="")
+ self.layout.prop(psys, "use_hair_dynamics", text="")
def draw(self, context):
layout = self.layout
@@ -233,7 +228,7 @@ class PARTICLE_PT_hair_dynamics(ParticleButtonsPanel, bpy.types.Panel):
#part = psys.settings
cloth = psys.cloth.settings
- layout.enabled = psys.hair_dynamics
+ layout.enabled = psys.use_hair_dynamics
split = layout.split()
@@ -273,12 +268,12 @@ class PARTICLE_PT_cache(ParticleButtonsPanel, bpy.types.Panel):
phystype = psys.settings.physics_type
if phystype == 'NO' or phystype == 'KEYED':
return False
- return (psys.settings.type in ('EMITTER', 'REACTOR') or (psys.settings.type == 'HAIR' and psys.hair_dynamics)) and engine in cls.COMPAT_ENGINES
+ return (psys.settings.type in ('EMITTER', 'REACTOR') or (psys.settings.type == 'HAIR' and psys.use_hair_dynamics)) and engine in cls.COMPAT_ENGINES
def draw(self, context):
psys = context.particle_system
- point_cache_ui(self, context, psys.point_cache, True, 'HAIR' if psys.hair_dynamics else 'PSYS')
+ point_cache_ui(self, context, psys.point_cache, True, 'HAIR' if psys.use_hair_dynamics else 'PSYS')
class PARTICLE_PT_velocity(ParticleButtonsPanel, bpy.types.Panel):
@@ -289,7 +284,7 @@ class PARTICLE_PT_velocity(ParticleButtonsPanel, bpy.types.Panel):
def poll(cls, context):
if particle_panel_poll(PARTICLE_PT_velocity, context):
psys = context.particle_system
- return psys.settings.physics_type != 'BOIDS' and not psys.point_cache.external
+ return psys.settings.physics_type != 'BOIDS' and not psys.point_cache.use_external
else:
return False
@@ -312,7 +307,7 @@ class PARTICLE_PT_velocity(ParticleButtonsPanel, bpy.types.Panel):
sub = split.column()
sub.label(text="Emitter Object")
- sub.prop(part, "object_aligned_factor", text="")
+ sub.prop(part, "object_align_factor", text="")
layout.row().label(text="Other:")
split = layout.split()
@@ -322,7 +317,7 @@ class PARTICLE_PT_velocity(ParticleButtonsPanel, bpy.types.Panel):
else:
sub.prop(part, "object_factor", slider=True)
sub = split.column()
- sub.prop(part, "random_factor")
+ sub.prop(part, "factor_random")
#if part.type=='REACTOR':
# sub.prop(part, "reactor_factor")
@@ -337,7 +332,7 @@ class PARTICLE_PT_rotation(ParticleButtonsPanel, bpy.types.Panel):
def poll(cls, context):
if particle_panel_poll(PARTICLE_PT_rotation, context):
psys = context.particle_system
- return psys.settings.physics_type != 'BOIDS' and not psys.point_cache.external
+ return psys.settings.physics_type != 'BOIDS' and not psys.point_cache.use_external
else:
return False
@@ -351,16 +346,16 @@ class PARTICLE_PT_rotation(ParticleButtonsPanel, bpy.types.Panel):
split = layout.split()
split.label(text="Initial Rotation:")
- split.prop(part, "rotation_dynamic")
+ split.prop(part, "use_dynamic_rotation")
split = layout.split()
sub = split.column(align=True)
sub.prop(part, "rotation_mode", text="")
- sub.prop(part, "random_rotation_factor", slider=True, text="Random")
+ sub.prop(part, "rotation_factor_random", slider=True, text="Random")
sub = split.column(align=True)
sub.prop(part, "phase_factor", slider=True)
- sub.prop(part, "random_phase_factor", text="Random", slider=True)
+ sub.prop(part, "phase_factor_random", text="Random", slider=True)
layout.row().label(text="Angular Velocity:")
layout.row().prop(part, "angular_velocity_mode", expand=True)
@@ -379,7 +374,7 @@ class PARTICLE_PT_physics(ParticleButtonsPanel, bpy.types.Panel):
@classmethod
def poll(cls, context):
if particle_panel_poll(PARTICLE_PT_physics, context):
- return not context.particle_system.point_cache.external
+ return not context.particle_system.point_cache.use_external
else:
return False
@@ -397,12 +392,12 @@ class PARTICLE_PT_physics(ParticleButtonsPanel, bpy.types.Panel):
row = layout.row()
col = row.column(align=True)
col.prop(part, "particle_size")
- col.prop(part, "random_size", slider=True)
+ col.prop(part, "size_random", slider=True)
if part.physics_type != 'NO':
col = row.column(align=True)
col.prop(part, "mass")
- col.prop(part, "sizemass", text="Multiply mass with size")
+ col.prop(part, "use_multiply_size_mass", text="Multiply mass with size")
if part.physics_type == 'NEWTON':
split = layout.split()
@@ -411,15 +406,15 @@ class PARTICLE_PT_physics(ParticleButtonsPanel, bpy.types.Panel):
sub.label(text="Forces:")
sub.prop(part, "brownian_factor")
sub.prop(part, "drag_factor", slider=True)
- sub.prop(part, "damp_factor", slider=True)
+ sub.prop(part, "damping", slider=True)
sub = split.column()
sub.label(text="Integration:")
sub.prop(part, "integrator", text="")
sub.prop(part, "time_tweak")
sub.prop(part, "subframes")
sub = layout.row()
- sub.prop(part, "size_deflect")
- sub.prop(part, "die_on_collision")
+ sub.prop(part, "use_size_deflect")
+ sub.prop(part, "use_die_on_collision")
elif part.physics_type == 'FLUID':
fluid = part.fluid
@@ -429,22 +424,22 @@ class PARTICLE_PT_physics(ParticleButtonsPanel, bpy.types.Panel):
sub.label(text="Forces:")
sub.prop(part, "brownian_factor")
sub.prop(part, "drag_factor", slider=True)
- sub.prop(part, "damp_factor", slider=True)
+ sub.prop(part, "damping", slider=True)
sub = split.column()
sub.label(text="Integration:")
sub.prop(part, "integrator", text="")
sub.prop(part, "time_tweak")
sub.prop(part, "subframes")
sub = layout.row()
- sub.prop(part, "size_deflect")
- sub.prop(part, "die_on_collision")
+ sub.prop(part, "use_size_deflect")
+ sub.prop(part, "use_die_on_collision")
split = layout.split()
sub = split.column()
sub.label(text="Fluid Interaction:")
sub.prop(fluid, "fluid_radius", slider=True)
- sub.prop(fluid, "stiffness_k")
- sub.prop(fluid, "stiffness_knear")
+ sub.prop(fluid, "stiffness")
+ sub.prop(fluid, "stiffness_near")
sub.prop(fluid, "rest_density")
sub.label(text="Viscosity:")
@@ -454,7 +449,7 @@ class PARTICLE_PT_physics(ParticleButtonsPanel, bpy.types.Panel):
sub = split.column()
sub.label(text="Springs:")
- sub.prop(fluid, "spring_k", text="Force", slider=True)
+ sub.prop(fluid, "spring_force", text="Force", slider=True)
sub.prop(fluid, "rest_length", slider=True)
layout.label(text="Multiple fluids interactions:")
@@ -467,9 +462,9 @@ class PARTICLE_PT_physics(ParticleButtonsPanel, bpy.types.Panel):
row = layout.row()
col = row.column()
- col.active = not psys.keyed_timing
+ col.active = not psys.use_keyed_timing
col.prop(part, "keyed_loops", text="Loops")
- row.prop(psys, "keyed_timing", text="Use Timing")
+ row.prop(psys, "use_keyed_timing", text="Use Timing")
layout.label(text="Keys:")
elif part.physics_type == 'BOIDS':
@@ -477,31 +472,31 @@ class PARTICLE_PT_physics(ParticleButtonsPanel, bpy.types.Panel):
row = layout.row()
- row.prop(boids, "allow_flight")
- row.prop(boids, "allow_land")
- row.prop(boids, "allow_climb")
+ row.prop(boids, "use_flight")
+ row.prop(boids, "use_land")
+ row.prop(boids, "use_climb")
split = layout.split()
sub = split.column()
col = sub.column(align=True)
- col.active = boids.allow_flight
- col.prop(boids, "air_max_speed")
- col.prop(boids, "air_min_speed", slider=True)
- col.prop(boids, "air_max_acc", slider=True)
- col.prop(boids, "air_max_ave", slider=True)
+ col.active = boids.use_flight
+ col.prop(boids, "air_speed_max")
+ col.prop(boids, "air_speed_min", slider=True)
+ col.prop(boids, "air_acc_max", slider=True)
+ col.prop(boids, "air_ave_max", slider=True)
col.prop(boids, "air_personal_space")
row = col.row()
- row.active = (boids.allow_land or boids.allow_climb) and boids.allow_flight
- row.prop(boids, "landing_smoothness")
+ row.active = (boids.use_land or boids.allow_climb) and boids.allow_flight
+ row.prop(boids, "land_smooth")
sub = split.column()
col = sub.column(align=True)
- col.active = boids.allow_land or boids.allow_climb
- col.prop(boids, "land_max_speed")
+ col.active = boids.use_land or boids.allow_climb
+ col.prop(boids, "land_speed_max")
col.prop(boids, "land_jump_speed")
- col.prop(boids, "land_max_acc", slider=True)
- col.prop(boids, "land_max_ave", slider=True)
+ col.prop(boids, "land_acc_max", slider=True)
+ col.prop(boids, "land_ave_max", slider=True)
col.prop(boids, "land_personal_space")
col.prop(boids, "land_stick_force")
@@ -517,7 +512,7 @@ class PARTICLE_PT_physics(ParticleButtonsPanel, bpy.types.Panel):
col = row.column()
col.label(text="Misc:")
- col.prop(boids, "banking", slider=True)
+ col.prop(boids, "bank", slider=True)
col.prop(boids, "height", slider=True)
if part.physics_type == 'KEYED' or part.physics_type == 'BOIDS' or part.physics_type == 'FLUID':
@@ -547,7 +542,7 @@ class PARTICLE_PT_physics(ParticleButtonsPanel, bpy.types.Panel):
col.prop(key, "object", text="")
col.prop(key, "system", text="System")
col = row.column()
- col.active = psys.keyed_timing
+ col.active = psys.use_keyed_timing
col.prop(key, "time")
col.prop(key, "duration")
elif part.physics_type == 'BOIDS':
@@ -557,7 +552,7 @@ class PARTICLE_PT_physics(ParticleButtonsPanel, bpy.types.Panel):
sub.prop(key, "object", text="")
sub.prop(key, "system", text="System")
- layout.prop(key, "mode", expand=True)
+ layout.prop(key, "alliance", expand=True)
elif part.physics_type == 'FLUID':
sub = row.row()
#doesn't work yet
@@ -578,7 +573,7 @@ class PARTICLE_PT_boidbrain(ParticleButtonsPanel, bpy.types.Panel):
return False
if psys.settings is None:
return False
- if psys.point_cache.external:
+ if psys.point_cache.use_external:
return False
return psys.settings.physics_type == 'BOIDS' and engine in cls.COMPAT_ENGINES
@@ -607,7 +602,7 @@ class PARTICLE_PT_boidbrain(ParticleButtonsPanel, bpy.types.Panel):
row = layout.row()
row.prop(state, "ruleset_type")
if state.ruleset_type == 'FUZZY':
- row.prop(state, "rule_fuzziness", slider=True)
+ row.prop(state, "rule_fuzzy", slider=True)
else:
row.label(text="")
@@ -630,34 +625,34 @@ class PARTICLE_PT_boidbrain(ParticleButtonsPanel, bpy.types.Panel):
row = layout.row()
row.prop(rule, "name", text="")
#somebody make nice icons for boids here please! -jahka
- row.prop(rule, "in_air", icon='MOVE_UP_VEC', text="")
- row.prop(rule, "on_land", icon='MOVE_DOWN_VEC', text="")
+ row.prop(rule, "use_in_air", icon='MOVE_UP_VEC', text="")
+ row.prop(rule, "use_on_land", icon='MOVE_DOWN_VEC', text="")
row = layout.row()
if rule.type == 'GOAL':
row.prop(rule, "object")
row = layout.row()
- row.prop(rule, "predict")
+ row.prop(rule, "use_predict")
elif rule.type == 'AVOID':
row.prop(rule, "object")
row = layout.row()
- row.prop(rule, "predict")
+ row.prop(rule, "use_predict")
row.prop(rule, "fear_factor")
elif rule.type == 'FOLLOW_PATH':
row.label(text="Not yet functional.")
elif rule.type == 'AVOID_COLLISION':
- row.prop(rule, "boids")
- row.prop(rule, "deflectors")
+ row.prop(rule, "use_avoid")
+ row.prop(rule, "use_avoid_collision")
row.prop(rule, "look_ahead")
elif rule.type == 'FOLLOW_LEADER':
row.prop(rule, "object", text="")
row.prop(rule, "distance")
row = layout.row()
- row.prop(rule, "line")
+ row.prop(rule, "use_line")
sub = row.row()
sub.active = rule.line
- sub.prop(rule, "queue_size")
+ sub.prop(rule, "queue_count")
elif rule.type == 'AVERAGE_SPEED':
row.prop(rule, "speed", slider=True)
row.prop(rule, "wander", slider=True)
@@ -697,48 +692,48 @@ class PARTICLE_PT_render(ParticleButtonsPanel, bpy.types.Panel):
sub.prop(part, "emitter")
sub.prop(part, "parent")
sub = split.column()
- sub.prop(part, "unborn")
- sub.prop(part, "died")
+ sub.prop(part, "show_unborn")
+ sub.prop(part, "use_dead")
row = layout.row()
- row.prop(part, "ren_as", expand=True)
+ row.prop(part, "render_type", expand=True)
split = layout.split()
sub = split.column()
- if part.ren_as == 'LINE':
+ if part.render_type == 'LINE':
sub.prop(part, "line_length_tail")
sub.prop(part, "line_length_head")
sub = split.column()
- sub.prop(part, "velocity_length")
- elif part.ren_as == 'PATH':
- sub.prop(part, "render_strand")
+ sub.prop(part, "use_velocity_length")
+ elif part.render_type == 'PATH':
+ sub.prop(part, "use_strand_primitive")
subsub = sub.column()
- subsub.active = (part.render_strand is False)
- subsub.prop(part, "render_adaptive")
+ subsub.active = (part.use_strand_primitive is False)
+ subsub.prop(part, "use_render_adaptive")
subsub = sub.column()
- subsub.active = part.render_adaptive or part.render_strand == True
+ subsub.active = part.render_adaptive or part.use_strand_primitive == True
subsub.prop(part, "adaptive_angle")
subsub = sub.column()
- subsub.active = (part.render_adaptive is True and part.render_strand is False)
- subsub.prop(part, "adaptive_pix")
- sub.prop(part, "hair_bspline")
+ subsub.active = (part.render_adaptive is True and part.use_strand_primitive is False)
+ subsub.prop(part, "adaptive_pixel")
+ sub.prop(part, "use_hair_bspline")
sub.prop(part, "render_step", text="Steps")
sub = split.column()
sub.label(text="Timing:")
- sub.prop(part, "abs_path_time")
- sub.prop(part, "path_start", text="Start", slider=not part.abs_path_time)
- sub.prop(part, "path_end", text="End", slider=not part.abs_path_time)
- sub.prop(part, "random_length", text="Random", slider=True)
+ sub.prop(part, "use_absolute_path_time")
+ sub.prop(part, "path_start", text="Start", slider=not part.use_absolute_path_time)
+ sub.prop(part, "path_end", text="End", slider=not part.use_absolute_path_time)
+ sub.prop(part, "length_random", text="Random", slider=True)
row = layout.row()
col = row.column()
- if part.type == 'HAIR' and part.render_strand == True and part.child_type == 'FACES':
- layout.prop(part, "enable_simplify")
- if part.enable_simplify == True:
+ if part.type == 'HAIR' and part.use_strand_primitive == True and part.child_type == 'FACES':
+ layout.prop(part, "use_simplify")
+ if part.use_simplify == True:
row = layout.row()
row.prop(part, "simplify_refsize")
row.prop(part, "simplify_rate")
@@ -749,27 +744,27 @@ class PARTICLE_PT_render(ParticleButtonsPanel, bpy.types.Panel):
sub.active = part.viewport == True
sub.prop(part, "simplify_viewport")
- elif part.ren_as == 'OBJECT':
+ elif part.render_type == 'OBJECT':
sub.prop(part, "dupli_object")
sub.prop(part, "use_global_dupli")
- elif part.ren_as == 'GROUP':
+ elif part.render_type == 'GROUP':
sub.prop(part, "dupli_group")
split = layout.split()
sub = split.column()
- sub.prop(part, "whole_group")
+ sub.prop(part, "use_whole_group")
subsub = sub.column()
- subsub.active = (part.whole_group is False)
+ subsub.active = (part.use_whole_group is False)
subsub.prop(part, "use_group_count")
sub = split.column()
subsub = sub.column()
- subsub.active = (part.whole_group is False)
+ subsub.active = (part.use_whole_group is False)
subsub.prop(part, "use_global_dupli")
- subsub.prop(part, "rand_group")
+ subsub.prop(part, "use_group_pick_random")
- if part.use_group_count and not part.whole_group:
+ if part.use_group_count and not part.use_whole_group:
row = layout.row()
- row.template_list(part, "dupliweights", part, "active_dupliweight_index")
+ row.template_list(part, "dupli_weights", part, "active_dupliweight_index")
col = row.column()
sub = col.row()
@@ -784,12 +779,12 @@ class PARTICLE_PT_render(ParticleButtonsPanel, bpy.types.Panel):
row = layout.row()
row.prop(weight, "count")
- elif part.ren_as == 'BILLBOARD':
+ elif part.render_type == 'BILLBOARD':
sub.label(text="Align:")
row = layout.row()
row.prop(part, "billboard_align", expand=True)
- row.prop(part, "billboard_lock", text="Lock")
+ row.prop(part, "lock_billboard", text="Lock")
row = layout.row()
row.prop(part, "billboard_object")
@@ -797,7 +792,7 @@ class PARTICLE_PT_render(ParticleButtonsPanel, bpy.types.Panel):
col = row.column(align=True)
col.label(text="Tilt:")
col.prop(part, "billboard_tilt", text="Angle", slider=True)
- col.prop(part, "billboard_random_tilt", slider=True)
+ col.prop(part, "billboard_tilt_random", slider=True)
col = row.column()
col.prop(part, "billboard_offset")
@@ -815,17 +810,17 @@ class PARTICLE_PT_render(ParticleButtonsPanel, bpy.types.Panel):
row.label(text="Animate:")
row.prop(part, "billboard_animation", text="")
row.label(text="Offset:")
- row.prop(part, "billboard_split_offset", text="")
+ row.prop(part, "billboard_offset_split", text="")
- if part.ren_as == 'HALO' or part.ren_as == 'LINE' or part.ren_as == 'BILLBOARD':
+ if part.render_type == 'HALO' or part.render_type == 'LINE' or part.render_type == 'BILLBOARD':
row = layout.row()
col = row.column()
col.prop(part, "trail_count")
if part.trail_count > 1:
- col.prop(part, "abs_path_time", text="Length in frames")
+ col.prop(part, "use_absolute_path_time", text="Length in frames")
col = row.column()
- col.prop(part, "path_end", text="Length", slider=not part.abs_path_time)
- col.prop(part, "random_length", text="Random", slider=True)
+ col.prop(part, "path_end", text="Length", slider=not part.use_absolute_path_time)
+ col.prop(part, "length_random", text="Random", slider=True)
else:
col = row.column()
col.label(text="")
@@ -853,16 +848,16 @@ class PARTICLE_PT_draw(ParticleButtonsPanel, bpy.types.Panel):
part = psys.settings
row = layout.row()
- row.prop(part, "draw_as", expand=True)
+ row.prop(part, "draw_method", expand=True)
- if part.draw_as == 'NONE' or (part.ren_as == 'NONE' and part.draw_as == 'RENDER'):
+ if part.draw_method == 'NONE' or (part.render_type == 'NONE' and part.draw_method == 'RENDER'):
return
- path = (part.ren_as == 'PATH' and part.draw_as == 'RENDER') or part.draw_as == 'PATH'
+ path = (part.render_type == 'PATH' and part.draw_method == 'RENDER') or part.draw_method == 'PATH'
row = layout.row()
row.prop(part, "display", slider=True)
- if part.draw_as != 'RENDER' or part.ren_as == 'HALO':
+ if part.draw_method != 'RENDER' or part.render_type == 'HALO':
row.prop(part, "draw_size")
else:
row.label(text="")
@@ -871,18 +866,18 @@ class PARTICLE_PT_draw(ParticleButtonsPanel, bpy.types.Panel):
col = row.column()
col.prop(part, "show_size")
col.prop(part, "velocity")
- col.prop(part, "num")
+ col.prop(part, "show_number")
if part.physics_type == 'BOIDS':
- col.prop(part, "draw_health")
+ col.prop(part, "show_health")
col = row.column()
- col.prop(part, "material_color", text="Use material color")
+ col.prop(part, "show_material_color", text="Use material color")
if (path):
col.prop(part, "draw_step")
else:
sub = col.column()
- sub.active = (part.material_color is False)
+ sub.active = (part.show_material_color is False)
#sub.label(text="color")
#sub.label(text="Override material color")
@@ -911,7 +906,7 @@ class PARTICLE_PT_children(ParticleButtonsPanel, bpy.types.Panel):
col = row.column(align=True)
col.prop(part, "child_nbr", text="Display")
- col.prop(part, "rendered_child_nbr", text="Render")
+ col.prop(part, "rendered_child_count", text="Render")
col = row.column(align=True)
@@ -923,7 +918,7 @@ class PARTICLE_PT_children(ParticleButtonsPanel, bpy.types.Panel):
col = row.column(align=True)
col.prop(part, "child_size", text="Size")
- col.prop(part, "child_random_size", text="Random")
+ col.prop(part, "child_size_random", text="Random")
layout.row().label(text="Effects:")
@@ -931,27 +926,27 @@ class PARTICLE_PT_children(ParticleButtonsPanel, bpy.types.Panel):
col = row.column(align=True)
col.prop(part, "clump_factor", slider=True)
- col.prop(part, "clumppow", slider=True)
+ col.prop(part, "clump_shape", slider=True)
col = row.column(align=True)
- col.prop(part, "rough_endpoint")
- col.prop(part, "rough_end_shape")
+ col.prop(part, "roughness_endpoint")
+ col.prop(part, "roughness_end_shape")
row = layout.row()
col = row.column(align=True)
- col.prop(part, "rough1")
- col.prop(part, "rough1_size")
+ col.prop(part, "roughness_1")
+ col.prop(part, "roughness_1_size")
col = row.column(align=True)
- col.prop(part, "rough2")
- col.prop(part, "rough2_size")
- col.prop(part, "rough2_thres", slider=True)
+ col.prop(part, "roughness_2")
+ col.prop(part, "roughness_2_size")
+ col.prop(part, "roughness_2_threshold", slider=True)
row = layout.row()
col = row.column(align=True)
col.prop(part, "child_length", slider=True)
- col.prop(part, "child_length_thres", slider=True)
+ col.prop(part, "child_length_threshold", slider=True)
col = row.column(align=True)
col.label(text="Space reserved for")
@@ -979,7 +974,7 @@ class PARTICLE_PT_field_weights(ParticleButtonsPanel, bpy.types.Panel):
effector_weights_ui(self, context, part.effector_weights)
if part.type == 'HAIR':
- self.layout.prop(part.effector_weights, "do_growing_hair")
+ self.layout.prop(part.effector_weights, "apply_to_hair_growing")
class PARTICLE_PT_force_fields(ParticleButtonsPanel, bpy.types.Panel):
@@ -992,7 +987,7 @@ class PARTICLE_PT_force_fields(ParticleButtonsPanel, bpy.types.Panel):
part = context.particle_system.settings
- layout.prop(part, "self_effect")
+ layout.prop(part, "use_self_effect")
split = layout.split(percentage=0.2)
split.label(text="Type 1:")
@@ -1031,51 +1026,56 @@ class PARTICLE_PT_vertexgroups(ParticleButtonsPanel, bpy.types.Panel):
row = layout.row()
row.prop_object(psys, "vertex_group_density", ob, "vertex_groups", text="Density")
- row.prop(psys, "vertex_group_density_negate", text="")
+ row.prop(psys, "invert_vertex_group_density", text="")
row = layout.row()
row.prop_object(psys, "vertex_group_velocity", ob, "vertex_groups", text="Velocity")
- row.prop(psys, "vertex_group_velocity_negate", text="")
+ row.prop(psys, "invert_vertex_group_velocity", text="")
row = layout.row()
row.prop_object(psys, "vertex_group_length", ob, "vertex_groups", text="Length")
- row.prop(psys, "vertex_group_length_negate", text="")
+ row.prop(psys, "invert_vertex_group_length", text="")
row = layout.row()
row.prop_object(psys, "vertex_group_clump", ob, "vertex_groups", text="Clump")
- row.prop(psys, "vertex_group_clump_negate", text="")
+ row.prop(psys, "invert_vertex_group_clump", text="")
row = layout.row()
row.prop_object(psys, "vertex_group_kink", ob, "vertex_groups", text="Kink")
- row.prop(psys, "vertex_group_kink_negate", text="")
+ row.prop(psys, "invert_vertex_group_kink", text="")
row = layout.row()
- row.prop_object(psys, "vertex_group_roughness1", ob, "vertex_groups", text="Roughness 1")
- row.prop(psys, "vertex_group_roughness1_negate", text="")
+ row.prop_object(psys, "vertex_group_roughness_1", ob, "vertex_groups", text="Roughness 1")
+ row.prop(psys, "invert_vertex_group_roughness_1", text="")
row = layout.row()
- row.prop_object(psys, "vertex_group_roughness2", ob, "vertex_groups", text="Roughness 2")
- row.prop(psys, "vertex_group_roughness2_negate", text="")
+ row.prop_object(psys, "vertex_group_roughness_2", ob, "vertex_groups", text="Roughness 2")
+ row.prop(psys, "invert_vertex_group_roughness_2", text="")
row = layout.row()
row.prop_object(psys, "vertex_group_roughness_end", ob, "vertex_groups", text="Roughness End")
- row.prop(psys, "vertex_group_roughness_end_negate", text="")
+ row.prop(psys, "invert_vertex_group_roughness_end", text="")
row = layout.row()
row.prop_object(psys, "vertex_group_size", ob, "vertex_groups", text="Size")
- row.prop(psys, "vertex_group_size_negate", text="")
+ row.prop(psys, "invert_vertex_group_size", text="")
row = layout.row()
row.prop_object(psys, "vertex_group_tangent", ob, "vertex_groups", text="Tangent")
- row.prop(psys, "vertex_group_tangent_negate", text="")
+ row.prop(psys, "invert_vertex_group_tangent", text="")
row = layout.row()
row.prop_object(psys, "vertex_group_rotation", ob, "vertex_groups", text="Rotation")
- row.prop(psys, "vertex_group_rotation_negate", text="")
+ row.prop(psys, "invert_vertex_group_rotation", text="")
row = layout.row()
row.prop_object(psys, "vertex_group_field", ob, "vertex_groups", text="Field")
- row.prop(psys, "vertex_group_field_negate", text="")
+ row.prop(psys, "invert_vertex_group_field", text="")
+
+
+class PARTICLE_PT_custom_props(ParticleButtonsPanel, PropertyPanel, bpy.types.Panel):
+ COMPAT_ENGINES = {'BLENDER_RENDER'}
+ _context_path = "particle_system.settings"
def register():
diff --git a/release/scripts/ui/properties_physics_cloth.py b/release/scripts/ui/properties_physics_cloth.py
index 0755b9be603..30619de5814 100644
--- a/release/scripts/ui/properties_physics_cloth.py
+++ b/release/scripts/ui/properties_physics_cloth.py
@@ -25,7 +25,7 @@ from properties_physics_common import effector_weights_ui
def cloth_panel_enabled(md):
- return md.point_cache.baked is False
+ return md.point_cache.is_baked is False
class CLOTH_MT_presets(bpy.types.Menu):
@@ -67,8 +67,8 @@ class PHYSICS_PT_cloth(PhysicButtonsPanel, bpy.types.Panel):
split.operator("object.modifier_remove", text="Remove")
row = split.row(align=True)
- row.prop(md, "render", text="")
- row.prop(md, "realtime", text="")
+ row.prop(md, "show_render", text="")
+ row.prop(md, "show_viewport", text="")
else:
# add modifier
split.operator("object.modifier_add", text="Add").type = 'CLOTH'
@@ -102,9 +102,9 @@ class PHYSICS_PT_cloth(PhysicButtonsPanel, bpy.types.Panel):
col.prop(cloth, "spring_damping", text="Spring")
col.prop(cloth, "air_damping", text="Air")
- col.prop(cloth, "pin_cloth", text="Pinning")
+ col.prop(cloth, "use_pin_cloth", text="Pinning")
sub = col.column()
- sub.active = cloth.pin_cloth
+ sub.active = cloth.use_pin_cloth
sub.prop_object(cloth, "mass_vertex_group", ob, "vertex_groups", text="")
sub.prop(cloth, "pin_stiffness", text="Stiffness")
@@ -154,7 +154,7 @@ class PHYSICS_PT_cloth_collision(PhysicButtonsPanel, bpy.types.Panel):
cloth = context.cloth.collision_settings
self.layout.active = cloth_panel_enabled(context.cloth)
- self.layout.prop(cloth, "enable_collision", text="")
+ self.layout.prop(cloth, "use_collision", text="")
def draw(self, context):
layout = self.layout
@@ -162,21 +162,21 @@ class PHYSICS_PT_cloth_collision(PhysicButtonsPanel, bpy.types.Panel):
cloth = context.cloth.collision_settings
md = context.cloth
- layout.active = cloth.enable_collision and cloth_panel_enabled(md)
+ layout.active = cloth.use_collision and cloth_panel_enabled(md)
split = layout.split()
col = split.column()
col.prop(cloth, "collision_quality", slider=True, text="Quality")
- col.prop(cloth, "min_distance", slider=True, text="Distance")
+ col.prop(cloth, "distance_min", slider=True, text="Distance")
col.prop(cloth, "friction")
col = split.column()
- col.prop(cloth, "enable_self_collision", text="Self Collision")
+ col.prop(cloth, "use_self_collision", text="Self Collision")
sub = col.column()
- sub.active = cloth.enable_self_collision
+ sub.active = cloth.use_self_collision
sub.prop(cloth, "self_collision_quality", slider=True, text="Quality")
- sub.prop(cloth, "self_min_distance", slider=True, text="Distance")
+ sub.prop(cloth, "self_distance_min", slider=True, text="Distance")
layout.prop(cloth, "group")
@@ -193,7 +193,7 @@ class PHYSICS_PT_cloth_stiffness(PhysicButtonsPanel, bpy.types.Panel):
cloth = context.cloth.settings
self.layout.active = cloth_panel_enabled(context.cloth)
- self.layout.prop(cloth, "stiffness_scaling", text="")
+ self.layout.prop(cloth, "use_stiffness_scale", text="")
def draw(self, context):
layout = self.layout
@@ -202,7 +202,7 @@ class PHYSICS_PT_cloth_stiffness(PhysicButtonsPanel, bpy.types.Panel):
ob = context.object
cloth = context.cloth.settings
- layout.active = cloth.stiffness_scaling and cloth_panel_enabled(md)
+ layout.active = cloth.use_stiffness_scale and cloth_panel_enabled(md)
split = layout.split()
diff --git a/release/scripts/ui/properties_physics_common.py b/release/scripts/ui/properties_physics_common.py
index 340cd88251c..fb9f2f981ae 100644
--- a/release/scripts/ui/properties_physics_common.py
+++ b/release/scripts/ui/properties_physics_common.py
@@ -29,16 +29,16 @@ def point_cache_ui(self, context, cache, enabled, cachetype):
layout.set_context_pointer("point_cache", cache)
row = layout.row()
- row.template_list(cache, "point_cache_list", cache, "active_point_cache_index", rows=2)
+ row.template_list(cache, "point_caches", cache, "active_point_cache_index", rows=2)
col = row.column(align=True)
col.operator("ptcache.add", icon='ZOOMIN', text="")
col.operator("ptcache.remove", icon='ZOOMOUT', text="")
row = layout.row()
if cachetype in ('PSYS', 'HAIR', 'SMOKE'):
- row.prop(cache, "external")
+ row.prop(cache, "use_external")
- if cache.external:
+ if cache.use_external:
split = layout.split(percentage=0.80)
split.prop(cache, "name", text="File Name")
split.prop(cache, "index", text="")
@@ -61,18 +61,18 @@ def point_cache_ui(self, context, cache, enabled, cachetype):
col.prop(cache, "frame_start")
col.prop(cache, "frame_end")
if cachetype != 'SMOKE':
- col.prop(cache, "step")
+ col.prop(cache, "frame_step")
col = split.column()
if cachetype != 'SMOKE':
sub = col.column()
sub.enabled = enabled
- sub.prop(cache, "quick_cache")
+ sub.prop(cache, "use_quick_cache")
sub = col.column()
- sub.enabled = bpy.data.file_is_saved
- sub.prop(cache, "disk_cache")
+ sub.enabled = (not bpy.data.is_dirty)
+ sub.prop(cache, "use_disk_cache")
col.label(text=cache.info)
sub = col.column()
@@ -84,13 +84,13 @@ def point_cache_ui(self, context, cache, enabled, cachetype):
col = split.column()
- if cache.baked == True:
+ if cache.is_baked == True:
col.operator("ptcache.free_bake", text="Free Bake")
else:
col.operator("ptcache.bake", text="Bake").bake = True
sub = col.row()
- sub.enabled = (cache.frames_skipped or cache.outdated) and enabled
+ sub.enabled = (cache.frames_skipped or cache.is_outdated) and enabled
sub.operator("ptcache.bake", text="Calculate To Frame").bake = False
sub = col.column()
@@ -127,7 +127,7 @@ def effector_weights_ui(self, context, weights):
col.prop(weights, "vortex", slider=True)
col.prop(weights, "magnetic", slider=True)
col.prop(weights, "wind", slider=True)
- col.prop(weights, "curveguide", slider=True)
+ col.prop(weights, "curve_guide", slider=True)
col.prop(weights, "texture", slider=True)
col = split.column()
@@ -172,20 +172,20 @@ def basic_force_field_settings_ui(self, context, field):
col.prop(field, "noise")
col.prop(field, "seed")
if field.type == 'TURBULENCE':
- col.prop(field, "global_coordinates", text="Global")
+ col.prop(field, "use_global_coords", text="Global")
elif field.type == 'HARMONIC':
- col.prop(field, "multiple_springs")
+ col.prop(field, "use_multiple_springs")
split = layout.split()
col = split.column()
col.label(text="Effect point:")
- col.prop(field, "do_location")
- col.prop(field, "do_rotation")
+ col.prop(field, "apply_to_location")
+ col.prop(field, "apply_to_rotation")
col = split.column()
col.label(text="Collision:")
- col.prop(field, "do_absorption")
+ col.prop(field, "use_absorption")
def basic_force_field_falloff_ui(self, context, field):
@@ -209,11 +209,11 @@ def basic_force_field_falloff_ui(self, context, field):
sub = col.column()
sub.active = field.use_min_distance
- sub.prop(field, "minimum_distance", text="Distance")
+ sub.prop(field, "distance_min", text="Distance")
sub = col.column()
sub.active = field.use_max_distance
- sub.prop(field, "maximum_distance", text="Distance")
+ sub.prop(field, "distance_max", text="Distance")
def register():
diff --git a/release/scripts/ui/properties_physics_field.py b/release/scripts/ui/properties_physics_field.py
index b67232f888d..80ea999eedb 100644
--- a/release/scripts/ui/properties_physics_field.py
+++ b/release/scripts/ui/properties_physics_field.py
@@ -63,7 +63,7 @@ class PHYSICS_PT_field(PhysicButtonsPanel, bpy.types.Panel):
col.prop(field, "guide_minimum")
col.prop(field, "guide_free")
col.prop(field, "falloff_power")
- col.prop(field, "guide_path_add")
+ col.prop(field, "use_guide_path_add")
col.prop(field, "use_guide_path_weight")
col = split.column()
@@ -75,7 +75,7 @@ class PHYSICS_PT_field(PhysicButtonsPanel, bpy.types.Panel):
row.prop(field, "use_max_distance")
sub = row.row()
sub.active = field.use_max_distance
- sub.prop(field, "maximum_distance")
+ sub.prop(field, "distance_max")
layout.separator()
@@ -100,9 +100,9 @@ class PHYSICS_PT_field(PhysicButtonsPanel, bpy.types.Panel):
col.prop(field, "texture_nabla")
col = split.column()
- col.prop(field, "use_coordinates")
- col.prop(field, "root_coordinates")
- col.prop(field, "force_2d")
+ col.prop(field, "use_object_coords")
+ col.prop(field, "use_root_coords")
+ col.prop(field, "use_2d_force")
else:
basic_force_field_settings_ui(self, context, field)
@@ -128,11 +128,11 @@ class PHYSICS_PT_field(PhysicButtonsPanel, bpy.types.Panel):
sub = col.column()
sub.active = field.use_radial_min
- sub.prop(field, "radial_minimum", text="Angle")
+ sub.prop(field, "radial_min", text="Angle")
sub = col.column()
sub.active = field.use_radial_max
- sub.prop(field, "radial_maximum", text="Angle")
+ sub.prop(field, "radial_max", text="Angle")
elif field.falloff_type == 'TUBE':
layout.separator()
@@ -149,11 +149,11 @@ class PHYSICS_PT_field(PhysicButtonsPanel, bpy.types.Panel):
sub = col.column()
sub.active = field.use_radial_min
- sub.prop(field, "radial_minimum", text="Distance")
+ sub.prop(field, "radial_min", text="Distance")
sub = col.column()
sub.active = field.use_radial_max
- sub.prop(field, "radial_maximum", text="Distance")
+ sub.prop(field, "radial_max", text="Distance")
class PHYSICS_PT_collision(PhysicButtonsPanel, bpy.types.Panel):
@@ -180,8 +180,8 @@ class PHYSICS_PT_collision(PhysicButtonsPanel, bpy.types.Panel):
col = split.column()
#row = split.row(align=True)
- #row.prop(md, "render", text="")
- #row.prop(md, "realtime", text="")
+ #row.prop(md, "show_render", text="")
+ #row.prop(md, "show_viewport", text="")
coll = md.settings
@@ -195,7 +195,7 @@ class PHYSICS_PT_collision(PhysicButtonsPanel, bpy.types.Panel):
if coll:
settings = context.object.collision
- layout.active = settings.enabled
+ layout.active = settings.use
split = layout.split()
@@ -203,22 +203,22 @@ class PHYSICS_PT_collision(PhysicButtonsPanel, bpy.types.Panel):
col.label(text="Particle:")
col.prop(settings, "permeability", slider=True)
col.prop(settings, "stickness")
- col.prop(settings, "kill_particles")
+ col.prop(settings, "use_particle_kill")
col.label(text="Particle Damping:")
sub = col.column(align=True)
sub.prop(settings, "damping_factor", text="Factor", slider=True)
- sub.prop(settings, "random_damping", text="Random", slider=True)
+ sub.prop(settings, "damping_random", text="Random", slider=True)
col.label(text="Particle Friction:")
sub = col.column(align=True)
sub.prop(settings, "friction_factor", text="Factor", slider=True)
- sub.prop(settings, "random_friction", text="Random", slider=True)
+ sub.prop(settings, "friction_random", text="Random", slider=True)
col = split.column()
col.label(text="Soft Body and Cloth:")
sub = col.column(align=True)
- sub.prop(settings, "outer_thickness", text="Outer", slider=True)
- sub.prop(settings, "inner_thickness", text="Inner", slider=True)
+ sub.prop(settings, "thickness_outer", text="Outer", slider=True)
+ sub.prop(settings, "thickness_inner", text="Inner", slider=True)
col.label(text="Soft Body Damping:")
col.prop(settings, "damping", text="Factor", slider=True)
diff --git a/release/scripts/ui/properties_physics_fluid.py b/release/scripts/ui/properties_physics_fluid.py
index 2c25270eb39..035eefe6c2a 100644
--- a/release/scripts/ui/properties_physics_fluid.py
+++ b/release/scripts/ui/properties_physics_fluid.py
@@ -48,8 +48,8 @@ class PHYSICS_PT_fluid(PhysicButtonsPanel, bpy.types.Panel):
split.operator("object.modifier_remove", text="Remove")
row = split.row(align=True)
- row.prop(md, "render", text="")
- row.prop(md, "realtime", text="")
+ row.prop(md, "show_render", text="")
+ row.prop(md, "show_viewport", text="")
fluid = md.settings
@@ -65,11 +65,11 @@ class PHYSICS_PT_fluid(PhysicButtonsPanel, bpy.types.Panel):
row = layout.row()
row.prop(fluid, "type")
if fluid.type not in ('NONE', 'DOMAIN', 'PARTICLE'):
- row.prop(fluid, "active", text="")
+ row.prop(fluid, "use", text="")
layout = layout.column()
if fluid.type not in ('NONE', 'DOMAIN', 'PARTICLE'):
- layout.active = fluid.active
+ layout.active = fluid.use
if fluid.type == 'DOMAIN':
layout.operator("fluid.bake", text="Bake Fluid Simulation", icon='MOD_FLUIDSIM')
@@ -97,10 +97,10 @@ class PHYSICS_PT_fluid(PhysicButtonsPanel, bpy.types.Panel):
col = split.column()
col.label()
- col.prop(fluid, "generate_speed_vectors")
- col.prop(fluid, "reverse_frames")
+ col.prop(fluid, "use_speed_vectors")
+ col.prop(fluid, "use_reverse_frames")
- layout.prop(fluid, "path", text="")
+ layout.prop(fluid, "filepath", text="")
elif fluid.type == 'FLUID':
split = layout.split()
@@ -108,7 +108,7 @@ class PHYSICS_PT_fluid(PhysicButtonsPanel, bpy.types.Panel):
col = split.column()
col.label(text="Volume Initialization:")
col.prop(fluid, "volume_initialization", text="")
- col.prop(fluid, "export_animated_mesh")
+ col.prop(fluid, "use_animated_mesh")
col = split.column()
col.label(text="Initial Velocity:")
@@ -120,7 +120,7 @@ class PHYSICS_PT_fluid(PhysicButtonsPanel, bpy.types.Panel):
col = split.column()
col.label(text="Volume Initialization:")
col.prop(fluid, "volume_initialization", text="")
- col.prop(fluid, "export_animated_mesh")
+ col.prop(fluid, "use_animated_mesh")
col = split.column()
col.label(text="Slip Type:")
@@ -137,8 +137,8 @@ class PHYSICS_PT_fluid(PhysicButtonsPanel, bpy.types.Panel):
col = split.column()
col.label(text="Volume Initialization:")
col.prop(fluid, "volume_initialization", text="")
- col.prop(fluid, "export_animated_mesh")
- col.prop(fluid, "local_coordinates")
+ col.prop(fluid, "use_animated_mesh")
+ col.prop(fluid, "use_local_coords")
col = split.column()
col.label(text="Inflow Velocity:")
@@ -150,7 +150,7 @@ class PHYSICS_PT_fluid(PhysicButtonsPanel, bpy.types.Panel):
col = split.column()
col.label(text="Volume Initialization:")
col.prop(fluid, "volume_initialization", text="")
- col.prop(fluid, "export_animated_mesh")
+ col.prop(fluid, "use_animated_mesh")
split.column()
@@ -164,11 +164,11 @@ class PHYSICS_PT_fluid(PhysicButtonsPanel, bpy.types.Panel):
col = split.column()
col.label(text="Type:")
- col.prop(fluid, "drops")
- col.prop(fluid, "floats")
- col.prop(fluid, "tracer")
+ col.prop(fluid, "use_drops")
+ col.prop(fluid, "use_floats")
+ col.prop(fluid, "show_tracer")
- layout.prop(fluid, "path", text="")
+ layout.prop(fluid, "filepath", text="")
elif fluid.type == 'CONTROL':
split = layout.split()
@@ -176,7 +176,7 @@ class PHYSICS_PT_fluid(PhysicButtonsPanel, bpy.types.Panel):
col = split.column()
col.label(text="")
col.prop(fluid, "quality", slider=True)
- col.prop(fluid, "reverse_frames")
+ col.prop(fluid, "use_reverse_frames")
col = split.column()
col.label(text="Time:")
@@ -230,10 +230,10 @@ class PHYSICS_PT_domain_gravity(PhysicButtonsPanel, bpy.types.Panel):
col.label(text="Using Scene Size Units", icon="SCENE_DATA")
sub = col.column()
sub.enabled = False
- sub.prop(fluid, "real_world_size", text="Metres")
+ sub.prop(fluid, "simulation_scale", text="Metres")
else:
col.label(text="Real World Size:")
- col.prop(fluid, "real_world_size", text="Metres")
+ col.prop(fluid, "simulation_scale", text="Metres")
col = split.column()
col.label(text="Viscosity Presets:")
@@ -273,7 +273,7 @@ class PHYSICS_PT_domain_boundary(PhysicButtonsPanel, bpy.types.Panel):
col = split.column()
col.label(text="Surface:")
- col.prop(fluid, "surface_smoothing", text="Smoothing")
+ col.prop(fluid, "surface_smooth", text="Smoothing")
col.prop(fluid, "surface_subdivisions", text="Subdivisions")
diff --git a/release/scripts/ui/properties_physics_smoke.py b/release/scripts/ui/properties_physics_smoke.py
index 3538b88afcf..f924c1df301 100644
--- a/release/scripts/ui/properties_physics_smoke.py
+++ b/release/scripts/ui/properties_physics_smoke.py
@@ -53,8 +53,8 @@ class PHYSICS_PT_smoke(PhysicButtonsPanel, bpy.types.Panel):
split.operator("object.modifier_remove", text="Remove")
row = split.row(align=True)
- row.prop(md, "render", text="")
- row.prop(md, "realtime", text="")
+ row.prop(md, "show_render", text="")
+ row.prop(md, "show_viewport", text="")
else:
# add modifier
@@ -71,22 +71,22 @@ class PHYSICS_PT_smoke(PhysicButtonsPanel, bpy.types.Panel):
col = split.column()
col.label(text="Resolution:")
- col.prop(domain, "maxres", text="Divisions")
+ col.prop(domain, "resolution_max", text="Divisions")
col.label(text="Time:")
col.prop(domain, "time_scale", text="Scale")
col.label(text="Border Collisions:")
- col.prop(domain, "smoke_domain_colli", text="")
+ col.prop(domain, "collision_extents", text="")
col = split.column()
col.label(text="Behavior:")
col.prop(domain, "alpha")
col.prop(domain, "beta")
col.prop(domain, "vorticity")
- col.prop(domain, "dissolve_smoke", text="Dissolve")
+ col.prop(domain, "use_dissolve_smoke", text="Dissolve")
sub = col.column()
- sub.active = domain.dissolve_smoke
+ sub.active = domain.use_dissolve_smoke
sub.prop(domain, "dissolve_speed", text="Time")
- sub.prop(domain, "dissolve_smoke_log", text="Slow")
+ sub.prop(domain, "use_dissolve_smoke_log", text="Slow")
elif md.smoke_type == 'FLOW':
@@ -95,7 +95,7 @@ class PHYSICS_PT_smoke(PhysicButtonsPanel, bpy.types.Panel):
split = layout.split()
col = split.column()
- col.prop(flow, "outflow")
+ col.prop(flow, "use_outflow")
col.label(text="Particle System:")
col.prop_object(flow, "psys", ob, "particle_systems", text="")
@@ -105,7 +105,7 @@ class PHYSICS_PT_smoke(PhysicButtonsPanel, bpy.types.Panel):
sub.prop(flow, "initial_velocity", text="Initial Velocity")
sub = sub.column()
sub.active = flow.initial_velocity
- sub.prop(flow, "velocity_multiplier", text="Multiplier")
+ sub.prop(flow, "velocity_factor", text="Multiplier")
sub = split.column()
@@ -113,7 +113,7 @@ class PHYSICS_PT_smoke(PhysicButtonsPanel, bpy.types.Panel):
sub.label(text="Behavior:")
sub.prop(flow, "temperature")
sub.prop(flow, "density")
- sub.prop(flow, "absolute")
+ sub.prop(flow, "use_absolute")
#elif md.smoke_type == 'COLLISION':
# layout.separator()
@@ -144,7 +144,7 @@ class PHYSICS_PT_smoke_groups(PhysicButtonsPanel, bpy.types.Panel):
col = split.column()
col.label(text="Collision Group:")
- col.prop(group, "coll_group", text="")
+ col.prop(group, "collision_group", text="")
class PHYSICS_PT_smoke_cache(PhysicButtonsPanel, bpy.types.Panel):
@@ -163,9 +163,9 @@ class PHYSICS_PT_smoke_cache(PhysicButtonsPanel, bpy.types.Panel):
cache = md.point_cache_low
layout.label(text="Compression:")
- layout.prop(md, "smoke_cache_comp", expand=True)
+ layout.prop(md, "point_cache_compress_type", expand=True)
- point_cache_ui(self, context, cache, (cache.baked is False), 'SMOKE')
+ point_cache_ui(self, context, cache, (cache.is_baked is False), 'SMOKE')
class PHYSICS_PT_smoke_highres(PhysicButtonsPanel, bpy.types.Panel):
@@ -180,22 +180,22 @@ class PHYSICS_PT_smoke_highres(PhysicButtonsPanel, bpy.types.Panel):
def draw_header(self, context):
md = context.smoke.domain_settings
- self.layout.prop(md, "highres", text="")
+ self.layout.prop(md, "use_high_resolution", text="")
def draw(self, context):
layout = self.layout
md = context.smoke.domain_settings
- layout.active = md.highres
+ layout.active = md.use_high_resolution
split = layout.split()
col = split.column()
col.label(text="Resolution:")
col.prop(md, "amplify", text="Divisions")
- col.prop(md, "smoothemitter")
- col.prop(md, "viewhighres")
+ col.prop(md, "smooth_emitter")
+ col.prop(md, "show_high_resolution")
col = split.column()
col.label(text="Noise Method:")
@@ -210,7 +210,7 @@ class PHYSICS_PT_smoke_cache_highres(PhysicButtonsPanel, bpy.types.Panel):
@classmethod
def poll(cls, context):
md = context.smoke
- return md and (md.smoke_type == 'DOMAIN') and md.domain_settings.highres
+ return md and (md.smoke_type == 'DOMAIN') and md.domain_settings.use_high_resolution
def draw(self, context):
layout = self.layout
@@ -219,9 +219,9 @@ class PHYSICS_PT_smoke_cache_highres(PhysicButtonsPanel, bpy.types.Panel):
cache = md.point_cache_high
layout.label(text="Compression:")
- layout.prop(md, "smoke_cache_high_comp", expand=True)
+ layout.prop(md, "point_cache_compress_high_type", expand=True)
- point_cache_ui(self, context, cache, (cache.baked is False), 'SMOKE')
+ point_cache_ui(self, context, cache, (cache.is_baked is False), 'SMOKE')
class PHYSICS_PT_smoke_field_weights(PhysicButtonsPanel, bpy.types.Panel):
diff --git a/release/scripts/ui/properties_physics_softbody.py b/release/scripts/ui/properties_physics_softbody.py
index 5240e6477d8..865003531db 100644
--- a/release/scripts/ui/properties_physics_softbody.py
+++ b/release/scripts/ui/properties_physics_softbody.py
@@ -25,7 +25,7 @@ from properties_physics_common import effector_weights_ui
def softbody_panel_enabled(md):
- return (md.point_cache.baked is False)
+ return (md.point_cache.is_baked is False)
class PhysicButtonsPanel():
@@ -59,8 +59,8 @@ class PHYSICS_PT_softbody(PhysicButtonsPanel, bpy.types.Panel):
split.operator("object.modifier_remove", text="Remove")
row = split.row(align=True)
- row.prop(md, "render", text="")
- row.prop(md, "realtime", text="")
+ row.prop(md, "show_render", text="")
+ row.prop(md, "show_viewport", text="")
else:
# add modifier
split.operator("object.modifier_add", text="Add").type = 'SOFT_BODY'
@@ -171,14 +171,14 @@ class PHYSICS_PT_softbody_edge(PhysicButtonsPanel, bpy.types.Panel):
col.prop(softbody, "push")
col.prop(softbody, "damp")
col.prop(softbody, "plastic")
- col.prop(softbody, "bending")
+ col.prop(softbody, "bend")
col.prop(softbody, "spring_length", text="Length")
col.prop_object(softbody, "spring_vertex_group", ob, "vertex_groups", text="Springs:")
col = split.column()
- col.prop(softbody, "stiff_quads")
+ col.prop(softbody, "use_stiff_quads")
sub = col.column()
- sub.active = softbody.stiff_quads
+ sub.active = softbody.use_stiff_quads
sub.prop(softbody, "shear")
col.label(text="Aerodynamics:")
@@ -190,8 +190,8 @@ class PHYSICS_PT_softbody_edge(PhysicButtonsPanel, bpy.types.Panel):
col.label(text="Collision:")
- col.prop(softbody, "edge_collision", text="Edge")
- col.prop(softbody, "face_collision", text="Face")
+ col.prop(softbody, "use_edge_collision", text="Edge")
+ col.prop(softbody, "use_face_collision", text="Face")
class PHYSICS_PT_softbody_collision(PhysicButtonsPanel, bpy.types.Panel):
@@ -206,7 +206,7 @@ class PHYSICS_PT_softbody_collision(PhysicButtonsPanel, bpy.types.Panel):
softbody = context.soft_body.settings
self.layout.active = softbody_panel_enabled(context.soft_body)
- self.layout.prop(softbody, "self_collision", text="")
+ self.layout.prop(softbody, "use_self_collision", text="")
def draw(self, context):
layout = self.layout
@@ -214,7 +214,7 @@ class PHYSICS_PT_softbody_collision(PhysicButtonsPanel, bpy.types.Panel):
md = context.soft_body
softbody = md.settings
- layout.active = softbody.self_collision and softbody_panel_enabled(md)
+ layout.active = softbody.use_self_collision and softbody_panel_enabled(md)
layout.label(text="Collision Ball Size Calculation:")
layout.prop(softbody, "collision_type", expand=True)
@@ -247,19 +247,19 @@ class PHYSICS_PT_softbody_solver(PhysicButtonsPanel, bpy.types.Panel):
col = split.column(align=True)
col.label(text="Step Size:")
- col.prop(softbody, "minstep")
- col.prop(softbody, "maxstep")
- col.prop(softbody, "auto_step", text="Auto-Step")
+ col.prop(softbody, "step_min")
+ col.prop(softbody, "step_max")
+ col.prop(softbody, "use_auto_step", text="Auto-Step")
col = split.column()
- col.prop(softbody, "error_limit")
+ col.prop(softbody, "error_threshold")
col.label(text="Helpers:")
col.prop(softbody, "choke")
col.prop(softbody, "fuzzy")
layout.label(text="Diagnostics:")
- layout.prop(softbody, "diagnose")
- layout.prop(softbody, "estimate_matrix")
+ layout.prop(softbody, "use_diagnose")
+ layout.prop(softbody, "use_estimate_matrix")
class PHYSICS_PT_softbody_field_weights(PhysicButtonsPanel, bpy.types.Panel):
diff --git a/release/scripts/ui/properties_render.py b/release/scripts/ui/properties_render.py
index 6e8ebb10691..2072aa00b76 100644
--- a/release/scripts/ui/properties_render.py
+++ b/release/scripts/ui/properties_render.py
@@ -98,9 +98,9 @@ class RENDER_PT_layers(RenderButtonsPanel, bpy.types.Panel):
col.prop(rl, "material_override", text="Material")
col = split.column()
- col.prop(rl, "visible_layers", text="Layer")
+ col.prop(rl, "layers", text="Layer")
col.label(text="Mask Layers:")
- col.prop(rl, "zmask_layers", text="")
+ col.prop(rl, "layers_zmask", text="")
layout.separator()
@@ -109,21 +109,21 @@ class RENDER_PT_layers(RenderButtonsPanel, bpy.types.Panel):
split = layout.split()
col = split.column()
- col.prop(rl, "zmask")
+ col.prop(rl, "use_zmask")
row = col.row()
- row.prop(rl, "zmask_negate", text="Negate")
- row.active = rl.zmask
- col.prop(rl, "all_z")
+ row.prop(rl, "invert_zmask", text="Negate")
+ row.active = rl.use_zmask
+ col.prop(rl, "use_all_z")
col = split.column()
- col.prop(rl, "solid")
- col.prop(rl, "halo")
- col.prop(rl, "ztransp")
+ col.prop(rl, "use_solid")
+ col.prop(rl, "use_halo")
+ col.prop(rl, "use_ztransp")
col = split.column()
- col.prop(rl, "sky")
- col.prop(rl, "edge")
- col.prop(rl, "strand")
+ col.prop(rl, "use_sky")
+ col.prop(rl, "use_edge_enhance")
+ col.prop(rl, "use_strand")
layout.separator()
@@ -131,42 +131,42 @@ class RENDER_PT_layers(RenderButtonsPanel, bpy.types.Panel):
col = split.column()
col.label(text="Passes:")
- col.prop(rl, "pass_combined")
- col.prop(rl, "pass_z")
- col.prop(rl, "pass_vector")
- col.prop(rl, "pass_normal")
- col.prop(rl, "pass_uv")
- col.prop(rl, "pass_mist")
- col.prop(rl, "pass_object_index")
- col.prop(rl, "pass_color")
+ col.prop(rl, "use_pass_combined")
+ col.prop(rl, "use_pass_z")
+ col.prop(rl, "use_pass_vector")
+ col.prop(rl, "use_pass_normal")
+ col.prop(rl, "use_pass_uv")
+ col.prop(rl, "use_pass_mist")
+ col.prop(rl, "use_pass_object_index")
+ col.prop(rl, "use_pass_color")
col = split.column()
col.label()
- col.prop(rl, "pass_diffuse")
+ col.prop(rl, "use_pass_diffuse")
row = col.row()
- row.prop(rl, "pass_specular")
- row.prop(rl, "pass_specular_exclude", text="")
+ row.prop(rl, "use_pass_specular")
+ row.prop(rl, "exclude_specular", text="")
row = col.row()
- row.prop(rl, "pass_shadow")
- row.prop(rl, "pass_shadow_exclude", text="")
+ row.prop(rl, "use_pass_shadow")
+ row.prop(rl, "exclude_shadow", text="")
row = col.row()
- row.prop(rl, "pass_emit")
- row.prop(rl, "pass_emit_exclude", text="")
+ row.prop(rl, "use_pass_emit")
+ row.prop(rl, "exclude_emit", text="")
row = col.row()
- row.prop(rl, "pass_ao")
- row.prop(rl, "pass_ao_exclude", text="")
+ row.prop(rl, "use_pass_ambient_occlusion")
+ row.prop(rl, "exclude_ambient_occlusion", text="")
row = col.row()
- row.prop(rl, "pass_environment")
- row.prop(rl, "pass_environment_exclude", text="")
+ row.prop(rl, "use_pass_environment")
+ row.prop(rl, "exclude_environment", text="")
row = col.row()
- row.prop(rl, "pass_indirect")
- row.prop(rl, "pass_indirect_exclude", text="")
+ row.prop(rl, "use_pass_indirect")
+ row.prop(rl, "exclude_indirect", text="")
row = col.row()
- row.prop(rl, "pass_reflection")
- row.prop(rl, "pass_reflection_exclude", text="")
+ row.prop(rl, "use_pass_reflection")
+ row.prop(rl, "exclude_reflection", text="")
row = col.row()
- row.prop(rl, "pass_refraction")
- row.prop(rl, "pass_refraction_exclude", text="")
+ row.prop(rl, "use_pass_refraction")
+ row.prop(rl, "exclude_refraction", text="")
class RENDER_PT_shading(RenderButtonsPanel, bpy.types.Panel):
@@ -187,8 +187,8 @@ class RENDER_PT_shading(RenderButtonsPanel, bpy.types.Panel):
col.prop(rd, "use_envmaps", text="Environment Map")
col = split.column()
- col.prop(rd, "use_raytracing", text="Ray Tracing")
- col.prop(rd, "color_management")
+ col.prop(rd, "use_raytrace", text="Ray Tracing")
+ col.prop(rd, "use_color_management")
col.prop(rd, "alpha_mode", text="Alpha")
@@ -218,16 +218,16 @@ class RENDER_PT_performance(RenderButtonsPanel, bpy.types.Panel):
col = split.column()
col.label(text="Memory:")
sub = col.column()
- sub.enabled = not (rd.use_border or rd.full_sample)
- sub.prop(rd, "save_buffers")
+ sub.enabled = not (rd.use_border or rd.use_full_sample)
+ sub.prop(rd, "use_save_buffers")
sub = col.column()
sub.active = rd.use_compositing
- sub.prop(rd, "free_image_textures")
+ sub.prop(rd, "use_free_image_textures")
sub = col.column()
- sub.active = rd.use_raytracing
+ sub.active = rd.use_raytrace
sub.label(text="Acceleration structure:")
- sub.prop(rd, "raytrace_structure", text="")
- if rd.raytrace_structure == 'OCTREE':
+ sub.prop(rd, "raytrace_method", text="")
+ if rd.raytrace_method == 'OCTREE':
sub.prop(rd, "octree_resolution", text="Resolution")
else:
sub.prop(rd, "use_instances", text="Instances")
@@ -258,17 +258,17 @@ class RENDER_PT_post_processing(RenderButtonsPanel, bpy.types.Panel):
split = layout.split()
col = split.column()
- col.prop(rd, "fields", text="Fields")
+ col.prop(rd, "use_fields", text="Fields")
sub = col.column()
- sub.active = rd.fields
+ sub.active = rd.use_fields
sub.row().prop(rd, "field_order", expand=True)
- sub.prop(rd, "fields_still", text="Still")
+ sub.prop(rd, "use_fields_still", text="Still")
col = split.column()
- col.prop(rd, "edge")
+ col.prop(rd, "use_edge_enhance")
sub = col.column()
- sub.active = rd.edge
+ sub.active = rd.use_edge_enhance
sub.prop(rd, "edge_threshold", text="Threshold", slider=True)
sub.prop(rd, "edge_color", text="")
@@ -283,7 +283,7 @@ class RENDER_PT_output(RenderButtonsPanel, bpy.types.Panel):
rd = context.scene.render
file_format = rd.file_format
- layout.prop(rd, "output_path", text="")
+ layout.prop(rd, "filepath", text="")
split = layout.split()
col = split.column()
@@ -320,7 +320,7 @@ class RENDER_PT_output(RenderButtonsPanel, bpy.types.Panel):
subsplit = split.split()
col = subsplit.column()
- col.prop(rd, "exr_half")
+ col.prop(rd, "use_exr_half")
col.prop(rd, "exr_zbuf")
col = subsplit.column()
@@ -339,17 +339,17 @@ class RENDER_PT_output(RenderButtonsPanel, bpy.types.Panel):
elif file_format in ('CINEON', 'DPX'):
split = layout.split()
col = split.column()
- col.prop(rd, "cineon_log", text="Convert to Log")
+ col.prop(rd, "use_cineon_log", text="Convert to Log")
col = split.column(align=True)
- col.active = rd.cineon_log
+ col.active = rd.use_cineon_log
col.prop(rd, "cineon_black", text="Black")
col.prop(rd, "cineon_white", text="White")
col.prop(rd, "cineon_gamma", text="Gamma")
elif file_format == 'TIFF':
split = layout.split()
- split.prop(rd, "tiff_bit")
+ split.prop(rd, "use_tiff_16bit")
elif file_format == 'QUICKTIME_CARBON':
split = layout.split()
@@ -462,13 +462,13 @@ class RENDER_PT_antialiasing(RenderButtonsPanel, bpy.types.Panel):
def draw_header(self, context):
rd = context.scene.render
- self.layout.prop(rd, "render_antialiasing", text="")
+ self.layout.prop(rd, "use_antialiasing", text="")
def draw(self, context):
layout = self.layout
rd = context.scene.render
- layout.active = rd.render_antialiasing
+ layout.active = rd.use_antialiasing
split = layout.split()
@@ -476,10 +476,10 @@ class RENDER_PT_antialiasing(RenderButtonsPanel, bpy.types.Panel):
col.row().prop(rd, "antialiasing_samples", expand=True)
sub = col.row()
sub.enabled = not rd.use_border
- sub.prop(rd, "full_sample")
+ sub.prop(rd, "use_full_sample")
col = split.column()
- col.prop(rd, "pixel_filter", text="")
+ col.prop(rd, "pixel_filter_type", text="")
col.prop(rd, "filter_size", text="Size")
@@ -491,13 +491,13 @@ class RENDER_PT_motion_blur(RenderButtonsPanel, bpy.types.Panel):
def draw_header(self, context):
rd = context.scene.render
- self.layout.prop(rd, "motion_blur", text="")
+ self.layout.prop(rd, "use_motion_blur", text="")
def draw(self, context):
layout = self.layout
rd = context.scene.render
- layout.active = rd.motion_blur
+ layout.active = rd.use_motion_blur
row = layout.row()
row.prop(rd, "motion_blur_samples")
@@ -534,7 +534,7 @@ class RENDER_PT_dimensions(RenderButtonsPanel, bpy.types.Panel):
row.prop(rd, "use_border", text="Border")
sub = row.row()
sub.active = rd.use_border
- sub.prop(rd, "crop_to_border", text="Crop")
+ sub.prop(rd, "use_crop_to_border", text="Crop")
col = split.column()
sub = col.column(align=True)
@@ -556,39 +556,39 @@ class RENDER_PT_stamp(RenderButtonsPanel, bpy.types.Panel):
def draw_header(self, context):
rd = context.scene.render
- self.layout.prop(rd, "render_stamp", text="")
+ self.layout.prop(rd, "use_stamp", text="")
def draw(self, context):
layout = self.layout
rd = context.scene.render
- layout.active = rd.render_stamp
+ layout.active = rd.use_stamp
split = layout.split()
col = split.column()
- col.prop(rd, "stamp_time", text="Time")
- col.prop(rd, "stamp_date", text="Date")
- col.prop(rd, "stamp_render_time", text="RenderTime")
- col.prop(rd, "stamp_frame", text="Frame")
- col.prop(rd, "stamp_scene", text="Scene")
- col.prop(rd, "stamp_camera", text="Camera")
- col.prop(rd, "stamp_filename", text="Filename")
- col.prop(rd, "stamp_marker", text="Marker")
- col.prop(rd, "stamp_sequencer_strip", text="Seq. Strip")
+ col.prop(rd, "use_stamp_time", text="Time")
+ col.prop(rd, "use_stamp_date", text="Date")
+ col.prop(rd, "use_stamp_render_time", text="RenderTime")
+ col.prop(rd, "use_stamp_frame", text="Frame")
+ col.prop(rd, "use_stamp_scene", text="Scene")
+ col.prop(rd, "use_stamp_camera", text="Camera")
+ col.prop(rd, "use_stamp_filename", text="Filename")
+ col.prop(rd, "use_stamp_marker", text="Marker")
+ col.prop(rd, "use_stamp_sequencer_strip", text="Seq. Strip")
col = split.column()
- col.active = rd.render_stamp
+ col.active = rd.use_stamp
col.prop(rd, "stamp_foreground", slider=True)
col.prop(rd, "stamp_background", slider=True)
col.separator()
col.prop(rd, "stamp_font_size", text="Font Size")
row = layout.split(percentage=0.2)
- row.prop(rd, "stamp_note", text="Note")
+ row.prop(rd, "use_stamp_note", text="Note")
sub = row.row()
- sub.active = rd.stamp_note
+ sub.active = rd.use_stamp_note
sub.prop(rd, "stamp_note_text", text="")
@@ -609,24 +609,24 @@ class RENDER_PT_bake(RenderButtonsPanel, bpy.types.Panel):
if rd.bake_type == 'NORMALS':
layout.prop(rd, "bake_normal_space")
elif rd.bake_type in ('DISPLACEMENT', 'AO'):
- layout.prop(rd, "bake_normalized")
+ layout.prop(rd, "use_bake_normalize")
# col.prop(rd, "bake_aa_mode")
- # col.prop(rd, "bake_enable_aa")
+ # col.prop(rd, "use_bake_antialiasing")
layout.separator()
split = layout.split()
col = split.column()
- col.prop(rd, "bake_clear")
+ col.prop(rd, "use_bake_clear")
col.prop(rd, "bake_margin")
col.prop(rd, "bake_quad_split", text="Split")
col = split.column()
- col.prop(rd, "bake_active")
+ col.prop(rd, "use_bake_selected_to_active")
sub = col.column()
- sub.active = rd.bake_active
+ sub.active = rd.use_bake_selected_to_active
sub.prop(rd, "bake_distance")
sub.prop(rd, "bake_bias")
diff --git a/release/scripts/ui/properties_scene.py b/release/scripts/ui/properties_scene.py
index 3ed8dfb72b8..c6b9d7522e0 100644
--- a/release/scripts/ui/properties_scene.py
+++ b/release/scripts/ui/properties_scene.py
@@ -40,12 +40,7 @@ class SCENE_PT_scene(SceneButtonsPanel, bpy.types.Panel):
scene = context.scene
layout.prop(scene, "camera")
- layout.prop(scene, "set", text="Background")
-
-
-class SCENE_PT_custom_props(SceneButtonsPanel, PropertyPanel, bpy.types.Panel):
- COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
- _context_path = "scene"
+ layout.prop(scene, "background_set", text="Background")
class SCENE_PT_unit(SceneButtonsPanel, bpy.types.Panel):
@@ -88,7 +83,7 @@ class SCENE_PT_keying_sets(SceneButtonsPanel, bpy.types.Panel):
col.operator("anim.keying_set_remove", icon='ZOOMOUT', text="")
ks = scene.active_keying_set
- if ks and ks.absolute:
+ if ks and ks.is_path_absolute:
row = layout.row()
col = row.column()
@@ -101,9 +96,9 @@ class SCENE_PT_keying_sets(SceneButtonsPanel, bpy.types.Panel):
col = row.column()
col.label(text="Keyframing Settings:")
- col.prop(ks, "insertkey_needed", text="Needed")
- col.prop(ks, "insertkey_visual", text="Visual")
- col.prop(ks, "insertkey_xyz_to_rgb", text="XYZ to RGB")
+ col.prop(ks, "use_insertkey_needed", text="Needed")
+ col.prop(ks, "use_insertkey_visual", text="Visual")
+ col.prop(ks, "use_insertkey_xyz_to_rgb", text="XYZ to RGB")
class SCENE_PT_keying_set_paths(SceneButtonsPanel, bpy.types.Panel):
@@ -111,7 +106,7 @@ class SCENE_PT_keying_set_paths(SceneButtonsPanel, bpy.types.Panel):
@classmethod
def poll(cls, context):
- return (context.scene.active_keying_set and context.scene.active_keying_set.absolute)
+ return (context.scene.active_keying_set and context.scene.active_keying_set.is_path_absolute)
def draw(self, context):
layout = self.layout
@@ -143,20 +138,20 @@ class SCENE_PT_keying_set_paths(SceneButtonsPanel, bpy.types.Panel):
col = row.column()
col.label(text="Array Target:")
- col.prop(ksp, "entire_array")
- if ksp.entire_array is False:
+ col.prop(ksp, "use_entire_array")
+ if ksp.use_entire_array is False:
col.prop(ksp, "array_index")
col = row.column()
col.label(text="F-Curve Grouping:")
- col.prop(ksp, "grouping")
- if ksp.grouping == 'NAMED':
+ col.prop(ksp, "group_method")
+ if ksp.group_method == 'NAMED':
col.prop(ksp, "group")
col.label(text="Keyframing Settings:")
- col.prop(ksp, "insertkey_needed", text="Needed")
- col.prop(ksp, "insertkey_visual", text="Visual")
- col.prop(ksp, "insertkey_xyz_to_rgb", text="XYZ to RGB")
+ col.prop(ksp, "use_insertkey_needed", text="Needed")
+ col.prop(ksp, "use_insertkey_visual", text="Visual")
+ col.prop(ksp, "use_insertkey_xyz_to_rgb", text="XYZ to RGB")
class SCENE_PT_physics(SceneButtonsPanel, bpy.types.Panel):
@@ -198,13 +193,18 @@ class SCENE_PT_simplify(SceneButtonsPanel, bpy.types.Panel):
col.prop(rd, "simplify_subdivision", text="Subdivision")
col.prop(rd, "simplify_child_particles", text="Child Particles")
- col.prop(rd, "simplify_triangulate")
+ col.prop(rd, "use_simplify_triangulate")
col = split.column()
col.prop(rd, "simplify_shadow_samples", text="Shadow Samples")
col.prop(rd, "simplify_ao_sss", text="AO and SSS")
+class SCENE_PT_custom_props(SceneButtonsPanel, PropertyPanel, bpy.types.Panel):
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
+ _context_path = "scene"
+
+
from bpy.props import *
@@ -239,13 +239,13 @@ class ANIM_OT_keying_set_export(bpy.types.Operator):
f.write("# Keying Set Level declarations\n")
f.write("ks= scene.add_keying_set(name=\"%s\")\n" % ks.name)
- if ks.absolute is False:
- f.write("ks.absolute = False\n")
+ if not ks.is_path_absolute:
+ f.write("ks.is_path_absolute = False\n")
f.write("\n")
- f.write("ks.insertkey_needed = %s\n" % ks.insertkey_needed)
- f.write("ks.insertkey_visual = %s\n" % ks.insertkey_visual)
- f.write("ks.insertkey_xyz_to_rgb = %s\n" % ks.insertkey_xyz_to_rgb)
+ f.write("ks.use_insertkey_needed = %s\n" % ks.use_insertkey_needed)
+ f.write("ks.use_insertkey_visual = %s\n" % ks.use_insertkey_visual)
+ f.write("ks.use_insertkey_xyz_to_rgb = %s\n" % ks.use_insertkey_xyz_to_rgb)
f.write("\n")
@@ -292,17 +292,17 @@ class ANIM_OT_keying_set_export(bpy.types.Operator):
f.write("%s, '%s'" % (id_bpy_path, ksp.data_path))
# array index settings (if applicable)
- if ksp.entire_array:
+ if ksp.use_entire_array:
f.write(", index=-1")
else:
f.write(", index=%d" % ksp.array_index)
# grouping settings (if applicable)
# NOTE: the current default is KEYINGSET, but if this changes, change this code too
- if ksp.grouping == 'NAMED':
- f.write(", grouping_method='%s', group_name=\"%s\"" % (ksp.grouping, ksp.group))
- elif ksp.grouping != 'KEYINGSET':
- f.write(", grouping_method='%s'" % ksp.grouping)
+ if ksp.group_method == 'NAMED':
+ f.write(", group_method='%s', group_name=\"%s\"" % (ksp.group_method, ksp.group))
+ elif ksp.group_method != 'KEYINGSET':
+ f.write(", group_method='%s'" % ksp.group_method)
# finish off
f.write(")\n")
diff --git a/release/scripts/ui/properties_texture.py b/release/scripts/ui/properties_texture.py
index 7a7a19a5164..6011dd3fd2a 100644
--- a/release/scripts/ui/properties_texture.py
+++ b/release/scripts/ui/properties_texture.py
@@ -75,23 +75,6 @@ class TextureButtonsPanel():
return tex and (tex.type != 'NONE' or tex.use_nodes) and (context.scene.render.engine in cls.COMPAT_ENGINES)
-class TEXTURE_PT_preview(TextureButtonsPanel, bpy.types.Panel):
- bl_label = "Preview"
- COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
-
- def draw(self, context):
- layout = self.layout
-
- tex = context.texture
- slot = getattr(context, "texture_slot", None)
- idblock = context_tex_datablock(context)
-
- if idblock:
- layout.template_preview(tex, parent=idblock, slot=slot)
- else:
- layout.template_preview(tex, slot=slot)
-
-
class TEXTURE_PT_context_texture(TextureButtonsPanel, bpy.types.Panel):
bl_label = ""
bl_show_header = False
@@ -140,7 +123,7 @@ class TEXTURE_PT_context_texture(TextureButtonsPanel, bpy.types.Panel):
col = split.column()
if not space.pin_id:
- col.prop(space, "brush_texture", text="Brush", toggle=True)
+ col.prop(space, "show_brush_texture", text="Brush", toggle=True)
if tex:
split = layout.split(percentage=0.2)
@@ -156,9 +139,21 @@ class TEXTURE_PT_context_texture(TextureButtonsPanel, bpy.types.Panel):
split.prop(tex, "type", text="")
-class TEXTURE_PT_custom_props(TextureButtonsPanel, PropertyPanel, bpy.types.Panel):
+class TEXTURE_PT_preview(TextureButtonsPanel, bpy.types.Panel):
+ bl_label = "Preview"
COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
- _context_path = "texture"
+
+ def draw(self, context):
+ layout = self.layout
+
+ tex = context.texture
+ slot = getattr(context, "texture_slot", None)
+ idblock = context_tex_datablock(context)
+
+ if idblock:
+ layout.template_preview(tex, parent=idblock, slot=slot)
+ else:
+ layout.template_preview(tex, slot=slot)
class TEXTURE_PT_colors(TextureButtonsPanel, bpy.types.Panel):
@@ -234,9 +229,9 @@ class TEXTURE_PT_mapping(TextureSlotPanel, bpy.types.Panel):
col = split.column()
col.label(text="Coordinates:")
col = split.column()
- col.prop(tex, "texture_coordinates", text="")
+ col.prop(tex, "texture_coords", text="")
- if tex.texture_coordinates == 'ORCO':
+ if tex.texture_coords == 'ORCO':
"""
ob = context.object
if ob and ob.type == 'MESH':
@@ -244,7 +239,7 @@ class TEXTURE_PT_mapping(TextureSlotPanel, bpy.types.Panel):
split.label(text="Mesh:")
split.prop(ob.data, "texco_mesh", text="")
"""
- elif tex.texture_coordinates == 'UV':
+ elif tex.texture_coords == 'UV':
split = layout.split(percentage=0.3)
split.label(text="Layer:")
ob = context.object
@@ -253,7 +248,7 @@ class TEXTURE_PT_mapping(TextureSlotPanel, bpy.types.Panel):
else:
split.prop(tex, "uv_layer", text="")
- elif tex.texture_coordinates == 'OBJECT':
+ elif tex.texture_coords == 'OBJECT':
split = layout.split(percentage=0.3)
split.label(text="Object:")
split.prop(tex, "object", text="")
@@ -275,18 +270,18 @@ class TEXTURE_PT_mapping(TextureSlotPanel, bpy.types.Panel):
split = layout.split()
col = split.column()
- if tex.texture_coordinates in ('ORCO', 'UV'):
- col.prop(tex, "from_dupli")
- elif tex.texture_coordinates == 'OBJECT':
- col.prop(tex, "from_original")
+ if tex.texture_coords in ('ORCO', 'UV'):
+ col.prop(tex, "use_from_dupli")
+ elif tex.texture_coords == 'OBJECT':
+ col.prop(tex, "use_from_original")
else:
col.label()
col = split.column()
row = col.row()
- row.prop(tex, "x_mapping", text="")
- row.prop(tex, "y_mapping", text="")
- row.prop(tex, "z_mapping", text="")
+ row.prop(tex, "mapping_x", text="")
+ row.prop(tex, "mapping_y", text="")
+ row.prop(tex, "mapping_z", text="")
split = layout.split()
@@ -336,66 +331,66 @@ class TEXTURE_PT_influence(TextureSlotPanel, bpy.types.Panel):
col = split.column()
col.label(text="Diffuse:")
- factor_but(col, tex.map_diffuse, "map_diffuse", "diffuse_factor", "Intensity")
- factor_but(col, tex.map_colordiff, "map_colordiff", "colordiff_factor", "Color")
- factor_but(col, tex.map_alpha, "map_alpha", "alpha_factor", "Alpha")
- factor_but(col, tex.map_translucency, "map_translucency", "translucency_factor", "Translucency")
+ factor_but(col, tex.use_map_diffuse, "use_map_diffuse", "diffuse_factor", "Intensity")
+ factor_but(col, tex.use_map_color_diff, "use_map_color_diffuse", "diffuse_color_factor", "Color")
+ factor_but(col, tex.use_map_alpha, "use_map_alpha", "alpha_factor", "Alpha")
+ factor_but(col, tex.use_map_translucency, "use_map_translucency", "translucency_factor", "Translucency")
col.label(text="Specular:")
- factor_but(col, tex.map_specular, "map_specular", "specular_factor", "Intensity")
- factor_but(col, tex.map_colorspec, "map_colorspec", "colorspec_factor", "Color")
- factor_but(col, tex.map_hardness, "map_hardness", "hardness_factor", "Hardness")
+ factor_but(col, tex.use_map_specular, "use_map_specular", "specular_factor", "Intensity")
+ factor_but(col, tex.use_map_color_spec, "use_map_color_spec", "specular_color_factor", "Color")
+ factor_but(col, tex.use_map_hardness, "use_map_hardness", "hardness_factor", "Hardness")
col = split.column()
col.label(text="Shading:")
- factor_but(col, tex.map_ambient, "map_ambient", "ambient_factor", "Ambient")
- factor_but(col, tex.map_emit, "map_emit", "emit_factor", "Emit")
- factor_but(col, tex.map_mirror, "map_mirror", "mirror_factor", "Mirror")
- factor_but(col, tex.map_raymir, "map_raymir", "raymir_factor", "Ray Mirror")
+ factor_but(col, tex.use_map_ambient, "use_map_ambient", "ambient_factor", "Ambient")
+ factor_but(col, tex.use_map_emit, "use_map_emit", "emit_factor", "Emit")
+ factor_but(col, tex.use_map_mirror, "use_map_mirror", "mirror_factor", "Mirror")
+ factor_but(col, tex.use_map_raymir, "use_map_raymir", "raymir_factor", "Ray Mirror")
col.label(text="Geometry:")
# XXX replace 'or' when displacement is fixed to not rely on normal influence value.
- factor_but(col, (tex.map_normal or tex.map_displacement), "map_normal", "normal_factor", "Normal")
- factor_but(col, tex.map_warp, "map_warp", "warp_factor", "Warp")
- factor_but(col, tex.map_displacement, "map_displacement", "displacement_factor", "Displace")
+ factor_but(col, (tex.use_map_normal or tex.use_map_displacement), "use_map_normal", "normal_factor", "Normal")
+ factor_but(col, tex.use_map_warp, "use_map_warp", "warp_factor", "Warp")
+ factor_but(col, tex.use_map_displacement, "use_map_displacement", "displacement_factor", "Displace")
#sub = col.column()
- #sub.active = tex.map_translucency or tex.map_emit or tex.map_alpha or tex.map_raymir or tex.map_hardness or tex.map_ambient or tex.map_specularity or tex.map_reflection or tex.map_mirror
+ #sub.active = tex.use_map_translucency or tex.map_emit or tex.map_alpha or tex.map_raymir or tex.map_hardness or tex.map_ambient or tex.map_specularity or tex.map_reflection or tex.map_mirror
#sub.prop(tex, "default_value", text="Amount", slider=True)
elif idblock.type == 'VOLUME':
split = layout.split()
col = split.column()
- factor_but(col, tex.map_density, "map_density", "density_factor", "Density")
- factor_but(col, tex.map_emission, "map_emission", "emission_factor", "Emission")
- factor_but(col, tex.map_scattering, "map_scattering", "scattering_factor", "Scattering")
- factor_but(col, tex.map_reflection, "map_reflection", "reflection_factor", "Reflection")
+ factor_but(col, tex.use_map_density, "use_map_density", "density_factor", "Density")
+ factor_but(col, tex.use_map_emission, "use_map_emission", "emission_factor", "Emission")
+ factor_but(col, tex.use_map_scatter, "use_map_scattering", "scattering_factor", "Scattering")
+ factor_but(col, tex.use_map_reflect, "use_map_reflection", "reflection_factor", "Reflection")
col = split.column()
col.label(text=" ")
- factor_but(col, tex.map_coloremission, "map_coloremission", "coloremission_factor", "Emission Color")
- factor_but(col, tex.map_colortransmission, "map_colortransmission", "colortransmission_factor", "Transmission Color")
- factor_but(col, tex.map_colorreflection, "map_colorreflection", "colorreflection_factor", "Reflection Color")
+ factor_but(col, tex.use_map_color_emission, "use_map_color_emission", "emission_color_factor", "Emission Color")
+ factor_but(col, tex.use_map_color_transmission, "use_map_color_transmission", "transmission_color_factor", "Transmission Color")
+ factor_but(col, tex.use_map_color_reflection, "use_map_color_reflection", "reflection_color_factor", "Reflection Color")
elif type(idblock) == bpy.types.Lamp:
split = layout.split()
col = split.column()
- factor_but(col, tex.map_color, "map_color", "color_factor", "Color")
+ factor_but(col, tex.use_map_color, "map_color", "color_factor", "Color")
col = split.column()
- factor_but(col, tex.map_shadow, "map_shadow", "shadow_factor", "Shadow")
+ factor_but(col, tex.use_map_shadow, "map_shadow", "shadow_factor", "Shadow")
elif type(idblock) == bpy.types.World:
split = layout.split()
col = split.column()
- factor_but(col, tex.map_blend, "map_blend", "blend_factor", "Blend")
- factor_but(col, tex.map_horizon, "map_horizon", "horizon_factor", "Horizon")
+ factor_but(col, tex.use_map_blend, "map_blend", "blend_factor", "Blend")
+ factor_but(col, tex.use_map_horizon, "map_horizon", "horizon_factor", "Horizon")
col = split.column()
- factor_but(col, tex.map_zenith_up, "map_zenith_up", "zenith_up_factor", "Zenith Up")
- factor_but(col, tex.map_zenith_down, "map_zenith_down", "zenith_down_factor", "Zenith Down")
+ factor_but(col, tex.use_map_zenith_up, "map_zenith_up", "zenith_up_factor", "Zenith Up")
+ factor_but(col, tex.use_map_zenith_down, "map_zenith_down", "zenith_down_factor", "Zenith Down")
layout.separator()
@@ -403,14 +398,14 @@ class TEXTURE_PT_influence(TextureSlotPanel, bpy.types.Panel):
col = split.column()
col.prop(tex, "blend_type", text="Blend")
- col.prop(tex, "rgb_to_intensity")
+ col.prop(tex, "use_rgb_to_intensity")
sub = col.column()
- sub.active = tex.rgb_to_intensity
+ sub.active = tex.use_rgb_to_intensity
sub.prop(tex, "color", text="")
col = split.column()
col.prop(tex, "negate", text="Negative")
- col.prop(tex, "stencil")
+ col.prop(tex, "use_stencil")
if type(idblock) in (bpy.types.Material, bpy.types.World):
col.prop(tex, "default_value", text="DVar", slider=True)
@@ -445,7 +440,7 @@ class TEXTURE_PT_clouds(TextureTypePanel, bpy.types.Panel):
split = layout.split()
col = split.column()
- col.prop(tex, "noise_size", text="Size")
+ col.prop(tex, "noise_scale", text="Size")
col.prop(tex, "noise_depth", text="Depth")
col = split.column()
@@ -462,7 +457,7 @@ class TEXTURE_PT_wood(TextureTypePanel, bpy.types.Panel):
tex = context.texture
- layout.prop(tex, "noisebasis2", expand=True)
+ layout.prop(tex, "noisebasis_2", expand=True)
layout.prop(tex, "stype", expand=True)
col = layout.column()
@@ -475,7 +470,7 @@ class TEXTURE_PT_wood(TextureTypePanel, bpy.types.Panel):
split.active = tex.stype in ('RINGNOISE', 'BANDNOISE')
col = split.column()
- col.prop(tex, "noise_size", text="Size")
+ col.prop(tex, "noise_scale", text="Size")
col.prop(tex, "turbulence")
col = split.column()
@@ -493,7 +488,7 @@ class TEXTURE_PT_marble(TextureTypePanel, bpy.types.Panel):
tex = context.texture
layout.prop(tex, "stype", expand=True)
- layout.prop(tex, "noisebasis2", expand=True)
+ layout.prop(tex, "noisebasis_2", expand=True)
layout.label(text="Noise:")
layout.prop(tex, "noise_type", text="Type", expand=True)
layout.prop(tex, "noise_basis", text="Basis")
@@ -501,7 +496,7 @@ class TEXTURE_PT_marble(TextureTypePanel, bpy.types.Panel):
split = layout.split()
col = split.column()
- col.prop(tex, "noise_size", text="Size")
+ col.prop(tex, "noise_scale", text="Size")
col.prop(tex, "noise_depth", text="Depth")
col = split.column()
@@ -543,7 +538,7 @@ class TEXTURE_PT_blend(TextureTypePanel, bpy.types.Panel):
sub = layout.row()
sub.active = (tex.progression in ('LINEAR', 'QUADRATIC', 'EASING', 'RADIAL'))
- sub.prop(tex, "flip_axis", expand=True)
+ sub.prop(tex, "use_flip_axis", expand=True)
class TEXTURE_PT_stucci(TextureTypePanel, bpy.types.Panel):
@@ -564,7 +559,7 @@ class TEXTURE_PT_stucci(TextureTypePanel, bpy.types.Panel):
split = layout.split()
col = split.column()
- col.prop(tex, "noise_size", text="Size")
+ col.prop(tex, "noise_scale", text="Size")
col = split.column()
col.prop(tex, "turbulence")
@@ -593,7 +588,7 @@ def texture_filter_common(tex, layout):
layout.prop(tex, "filter_eccentricity", text="Eccentricity")
layout.prop(tex, "filter_size")
- layout.prop(tex, "filter_size_minimum")
+ layout.prop(tex, "use_filter_size_min")
class TEXTURE_PT_image_sampling(TextureTypePanel, bpy.types.Panel):
@@ -613,22 +608,22 @@ class TEXTURE_PT_image_sampling(TextureTypePanel, bpy.types.Panel):
col = split.column()
col.label(text="Alpha:")
col.prop(tex, "use_alpha", text="Use")
- col.prop(tex, "calculate_alpha", text="Calculate")
+ col.prop(tex, "use_calculate_alpha", text="Calculate")
col.prop(tex, "invert_alpha", text="Invert")
col.separator()
- col.prop(tex, "flip_axis", text="Flip X/Y Axis")
+ col.prop(tex, "use_flip_axis", text="Flip X/Y Axis")
col = split.column()
- col.prop(tex, "normal_map")
+ col.prop(tex, "use_normal_map")
row = col.row()
- row.active = tex.normal_map
+ row.active = tex.use_normal_map
row.prop(tex, "normal_space", text="")
col.prop(tex, "mipmap")
row = col.row()
row.active = tex.mipmap
- row.prop(tex, "mipmap_gauss")
+ row.prop(tex, "use_mipmap_gauss")
col.prop(tex, "interpolation")
texture_filter_common(tex, col)
@@ -657,15 +652,15 @@ class TEXTURE_PT_image_mapping(TextureTypePanel, bpy.types.Panel):
col = split.column(align=True)
col.label(text="Mirror:")
- col.prop(tex, "mirror_x", text="X")
- col.prop(tex, "mirror_y", text="Y")
+ col.prop(tex, "use_mirror_x", text="X")
+ col.prop(tex, "use_mirror_y", text="Y")
layout.separator()
elif tex.extension == 'CHECKER':
col = split.column(align=True)
row = col.row()
- row.prop(tex, "checker_even", text="Even")
- row.prop(tex, "checker_odd", text="Odd")
+ row.prop(tex, "use_checker_even", text="Even")
+ row.prop(tex, "use_checker_odd", text="Odd")
col = split.column()
col.prop(tex, "checker_distance", text="Distance")
@@ -686,19 +681,6 @@ class TEXTURE_PT_image_mapping(TextureTypePanel, bpy.types.Panel):
col.prop(tex, "crop_max_y", text="Y")
-class TEXTURE_PT_plugin(TextureTypePanel, bpy.types.Panel):
- bl_label = "Plugin"
- tex_type = 'PLUGIN'
- COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
-
- def draw(self, context):
- layout = self.layout
-
- # tex = context.texture
-
- layout.label(text="Nothing yet")
-
-
class TEXTURE_PT_envmap(TextureTypePanel, bpy.types.Panel):
bl_label = "Environment Map"
tex_type = 'ENVIRONMENT_MAP'
@@ -727,7 +709,7 @@ class TEXTURE_PT_envmap(TextureTypePanel, bpy.types.Panel):
split = layout.split()
col = split.column()
- col.prop(env, "ignore_layers")
+ col.prop(env, "layers_ignore")
col.prop(env, "resolution")
col.prop(env, "depth")
@@ -767,7 +749,7 @@ class TEXTURE_PT_musgrave(TextureTypePanel, bpy.types.Panel):
split = layout.split()
col = split.column()
- col.prop(tex, "highest_dimension", text="Dimension")
+ col.prop(tex, "dimension_max", text="Dimension")
col.prop(tex, "lacunarity")
col.prop(tex, "octaves")
@@ -785,7 +767,7 @@ class TEXTURE_PT_musgrave(TextureTypePanel, bpy.types.Panel):
split = layout.split()
col = split.column()
- col.prop(tex, "noise_size", text="Size")
+ col.prop(tex, "noise_scale", text="Size")
col = split.column()
col.prop(tex, "nabla")
@@ -810,7 +792,7 @@ class TEXTURE_PT_voronoi(TextureTypePanel, bpy.types.Panel):
sub.active = tex.distance_metric == 'MINKOVSKY'
sub.prop(tex, "minkovsky_exponent", text="Exponent")
col.label(text="Coloring:")
- col.prop(tex, "coloring", text="")
+ col.prop(tex, "color_mode", text="")
col.prop(tex, "noise_intensity", text="Intensity")
col = split.column()
@@ -826,7 +808,7 @@ class TEXTURE_PT_voronoi(TextureTypePanel, bpy.types.Panel):
split = layout.split()
col = split.column()
- col.prop(tex, "noise_size", text="Size")
+ col.prop(tex, "noise_scale", text="Size")
col = split.column()
col.prop(tex, "nabla")
@@ -849,7 +831,7 @@ class TEXTURE_PT_distortednoise(TextureTypePanel, bpy.types.Panel):
col = split.column()
col.prop(tex, "distortion", text="Distortion")
- col.prop(tex, "noise_size", text="Size")
+ col.prop(tex, "noise_scale", text="Size")
col = split.column()
col.prop(tex, "nabla")
@@ -869,11 +851,11 @@ class TEXTURE_PT_voxeldata(TextureButtonsPanel, bpy.types.Panel):
layout = self.layout
tex = context.texture
- vd = tex.voxeldata
+ vd = tex.voxel_data
layout.prop(vd, "file_format")
- if vd.file_format in ['BLENDER_VOXEL', 'RAW_8BIT']:
- layout.prop(vd, "source_path")
+ if vd.file_format in ('BLENDER_VOXEL', 'RAW_8BIT'):
+ layout.prop(vd, "filepath")
if vd.file_format == 'RAW_8BIT':
layout.prop(vd, "resolution")
elif vd.file_format == 'SMOKE':
@@ -887,7 +869,7 @@ class TEXTURE_PT_voxeldata(TextureButtonsPanel, bpy.types.Panel):
layout.prop(vd, "still")
row = layout.row()
row.active = vd.still
- row.prop(vd, "still_frame_number")
+ row.prop(vd, "still_frame")
layout.prop(vd, "interpolation")
layout.prop(vd, "extension")
@@ -908,7 +890,7 @@ class TEXTURE_PT_pointdensity(TextureButtonsPanel, bpy.types.Panel):
layout = self.layout
tex = context.texture
- pd = tex.pointdensity
+ pd = tex.point_density
layout.prop(pd, "point_source", expand=True)
@@ -925,12 +907,12 @@ class TEXTURE_PT_pointdensity(TextureButtonsPanel, bpy.types.Panel):
sub.label(text="System:")
sub.prop_object(pd, "particle_system", pd.object, "particle_systems", text="")
sub.label(text="Cache:")
- sub.prop(pd, "particle_cache", text="")
+ sub.prop(pd, "particle_cache_space", text="")
else:
col.label(text="Object:")
col.prop(pd, "object", text="")
col.label(text="Cache:")
- col.prop(pd, "vertices_cache", text="")
+ col.prop(pd, "vertex_cache_space", text="")
col.separator()
@@ -947,7 +929,7 @@ class TEXTURE_PT_pointdensity(TextureButtonsPanel, bpy.types.Panel):
col.label(text="Falloff:")
col.prop(pd, "falloff", text="")
if pd.falloff == 'SOFT':
- col.prop(pd, "falloff_softness")
+ col.prop(pd, "falloff_soft")
class TEXTURE_PT_pointdensity_turbulence(TextureButtonsPanel, bpy.types.Panel):
@@ -964,16 +946,16 @@ class TEXTURE_PT_pointdensity_turbulence(TextureButtonsPanel, bpy.types.Panel):
layout = self.layout
tex = context.texture
- pd = tex.pointdensity
+ pd = tex.point_density
- layout.prop(pd, "turbulence", text="")
+ layout.prop(pd, "use_turbulence", text="")
def draw(self, context):
layout = self.layout
tex = context.texture
- pd = tex.pointdensity
- layout.active = pd.turbulence
+ pd = tex.point_density
+ layout.active = pd.use_turbulence
split = layout.split()
@@ -985,11 +967,16 @@ class TEXTURE_PT_pointdensity_turbulence(TextureButtonsPanel, bpy.types.Panel):
col = split.column()
col.label()
- col.prop(pd, "turbulence_size")
+ col.prop(pd, "turbulence_scale")
col.prop(pd, "turbulence_depth")
col.prop(pd, "turbulence_strength")
+class TEXTURE_PT_custom_props(TextureButtonsPanel, PropertyPanel, bpy.types.Panel):
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
+ _context_path = "texture"
+
+
def register():
pass
diff --git a/release/scripts/ui/properties_world.py b/release/scripts/ui/properties_world.py
index eec1caf58f7..f9906fa628e 100644
--- a/release/scripts/ui/properties_world.py
+++ b/release/scripts/ui/properties_world.py
@@ -29,21 +29,7 @@ class WorldButtonsPanel():
@classmethod
def poll(cls, context):
- rd = context.scene.render
- return (rd.engine in cls.COMPAT_ENGINES)
-
-
-class WORLD_PT_preview(WorldButtonsPanel, bpy.types.Panel):
- bl_label = "Preview"
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- @classmethod
- def poll(cls, context):
- rd = context.scene.render
- return (context.world) and (not rd.use_game_engine) and (rd.engine in cls.COMPAT_ENGINES)
-
- def draw(self, context):
- self.layout.template_preview(context.world)
+ return (context.world and context.scene.render.engine in cls.COMPAT_ENGINES)
class WORLD_PT_context_world(WorldButtonsPanel, bpy.types.Panel):
@@ -70,9 +56,17 @@ class WORLD_PT_context_world(WorldButtonsPanel, bpy.types.Panel):
split.template_ID(space, "pin_id")
-class WORLD_PT_custom_props(WorldButtonsPanel, PropertyPanel, bpy.types.Panel):
- COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
- _context_path = "world"
+class WORLD_PT_preview(WorldButtonsPanel, bpy.types.Panel):
+ bl_label = "Preview"
+ COMPAT_ENGINES = {'BLENDER_RENDER'}
+
+ @classmethod
+ def poll(cls, context):
+ rd = context.scene.render
+ return (context.world) and (not rd.use_game_engine) and (rd.engine in cls.COMPAT_ENGINES)
+
+ def draw(self, context):
+ self.layout.template_preview(context.world)
class WORLD_PT_world(WorldButtonsPanel, bpy.types.Panel):
@@ -84,74 +78,18 @@ class WORLD_PT_world(WorldButtonsPanel, bpy.types.Panel):
world = context.world
row = layout.row()
- row.prop(world, "paper_sky")
- row.prop(world, "blend_sky")
- row.prop(world, "real_sky")
+ row.prop(world, "use_sky_paper")
+ row.prop(world, "use_sky_blend")
+ row.prop(world, "use_sky_real")
row = layout.row()
row.column().prop(world, "horizon_color")
col = row.column()
col.prop(world, "zenith_color")
- col.active = world.blend_sky
+ col.active = world.use_sky_blend
row.column().prop(world, "ambient_color")
-class WORLD_PT_mist(WorldButtonsPanel, bpy.types.Panel):
- bl_label = "Mist"
- bl_default_closed = True
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- def draw_header(self, context):
- world = context.world
-
- self.layout.prop(world.mist, "use_mist", text="")
-
- def draw(self, context):
- layout = self.layout
- world = context.world
-
- layout.active = world.mist.use_mist
-
- split = layout.split()
-
- col = split.column()
- col.prop(world.mist, "intensity", slider=True)
- col.prop(world.mist, "start")
-
- col = split.column()
- col.prop(world.mist, "depth")
- col.prop(world.mist, "height")
-
- layout.prop(world.mist, "falloff")
-
-
-class WORLD_PT_stars(WorldButtonsPanel, bpy.types.Panel):
- bl_label = "Stars"
- bl_default_closed = True
- COMPAT_ENGINES = {'BLENDER_RENDER'}
-
- def draw_header(self, context):
- world = context.world
-
- self.layout.prop(world.stars, "use_stars", text="")
-
- def draw(self, context):
- layout = self.layout
- world = context.world
-
- layout.active = world.stars.use_stars
-
- split = layout.split()
-
- col = split.column()
- col.prop(world.stars, "size")
- col.prop(world.stars, "color_randomization", text="Colors")
-
- col = split.column()
- col.prop(world.stars, "min_distance", text="Min. Dist")
- col.prop(world.stars, "average_separation", text="Separation")
-
-
class WORLD_PT_ambient_occlusion(WorldButtonsPanel, bpy.types.Panel):
bl_label = "Ambient Occlusion"
COMPAT_ENGINES = {'BLENDER_RENDER'}
@@ -168,7 +106,7 @@ class WORLD_PT_ambient_occlusion(WorldButtonsPanel, bpy.types.Panel):
split = layout.split()
split.prop(light, "ao_factor", text="Factor")
- split.prop(light, "ao_blend_mode", text="")
+ split.prop(light, "ao_blend_type", text="")
class WORLD_PT_environment_lighting(WorldButtonsPanel, bpy.types.Panel):
@@ -177,13 +115,13 @@ class WORLD_PT_environment_lighting(WorldButtonsPanel, bpy.types.Panel):
def draw_header(self, context):
light = context.world.lighting
- self.layout.prop(light, "use_environment_lighting", text="")
+ self.layout.prop(light, "use_environment_light", text="")
def draw(self, context):
layout = self.layout
light = context.world.lighting
- layout.active = light.use_environment_lighting
+ layout.active = light.use_environment_light
split = layout.split()
split.prop(light, "environment_energy", text="Energy")
@@ -196,18 +134,18 @@ class WORLD_PT_indirect_lighting(WorldButtonsPanel, bpy.types.Panel):
@classmethod
def poll(cls, context):
- light = context.world.lighting
- return light.gather_method == 'APPROXIMATE'
+ light = getattr(context.world, "lighting", None)
+ return light and light.gather_method == 'APPROXIMATE'
def draw_header(self, context):
light = context.world.lighting
- self.layout.prop(light, "use_indirect_lighting", text="")
+ self.layout.prop(light, "use_indirect_light", text="")
def draw(self, context):
layout = self.layout
light = context.world.lighting
- layout.active = light.use_indirect_lighting
+ layout.active = light.use_indirect_light
split = layout.split()
split.prop(light, "indirect_factor", text="Factor")
@@ -222,7 +160,7 @@ class WORLD_PT_gather(WorldButtonsPanel, bpy.types.Panel):
layout = self.layout
light = context.world.lighting
- layout.active = light.use_ambient_occlusion or light.use_environment_lighting or light.use_indirect_lighting
+ layout.active = light.use_ambient_occlusion or light.use_environment_light or light.use_indirect_light
layout.prop(light, "gather_method", expand=True)
@@ -257,11 +195,72 @@ class WORLD_PT_gather(WorldButtonsPanel, bpy.types.Panel):
col.label(text="Sampling:")
col.prop(light, "passes")
- col.prop(light, "error_tolerance", text="Error")
- col.prop(light, "pixel_cache")
+ col.prop(light, "error_threshold", text="Error")
+ col.prop(light, "use_cache")
col.prop(light, "correction")
+class WORLD_PT_mist(WorldButtonsPanel, bpy.types.Panel):
+ bl_label = "Mist"
+ bl_default_closed = True
+ COMPAT_ENGINES = {'BLENDER_RENDER'}
+
+ def draw_header(self, context):
+ world = context.world
+
+ self.layout.prop(world.mist, "use_mist", text="")
+
+ def draw(self, context):
+ layout = self.layout
+ world = context.world
+
+ layout.active = world.mist.use_mist
+
+ split = layout.split()
+
+ col = split.column()
+ col.prop(world.mist, "intensity", slider=True)
+ col.prop(world.mist, "start")
+
+ col = split.column()
+ col.prop(world.mist, "depth")
+ col.prop(world.mist, "height")
+
+ layout.prop(world.mist, "falloff")
+
+
+class WORLD_PT_stars(WorldButtonsPanel, bpy.types.Panel):
+ bl_label = "Stars"
+ bl_default_closed = True
+ COMPAT_ENGINES = {'BLENDER_RENDER'}
+
+ def draw_header(self, context):
+ world = context.world
+
+ self.layout.prop(world.stars, "use_stars", text="")
+
+ def draw(self, context):
+ layout = self.layout
+ world = context.world
+
+ layout.active = world.stars.use_stars
+
+ split = layout.split()
+
+ col = split.column()
+ col.prop(world.stars, "size")
+ col.prop(world.stars, "color_random", text="Colors")
+
+ col = split.column()
+ col.prop(world.stars, "distance_min", text="Min. Dist")
+ col.prop(world.stars, "average_separation", text="Separation")
+
+
+class WORLD_PT_custom_props(WorldButtonsPanel, PropertyPanel, bpy.types.Panel):
+ COMPAT_ENGINES = {'BLENDER_RENDER', 'BLENDER_GAME'}
+ _context_path = "world"
+
+
def register():
pass
diff --git a/release/scripts/ui/space_console.py b/release/scripts/ui/space_console.py
index feda3a54b41..f2264a5c926 100644
--- a/release/scripts/ui/space_console.py
+++ b/release/scripts/ui/space_console.py
@@ -48,7 +48,7 @@ class CONSOLE_HT_header(bpy.types.Header):
row.prop(sc, "show_report_debug", text="Debug")
row.prop(sc, "show_report_info", text="Info")
row.prop(sc, "show_report_operator", text="Operators")
- row.prop(sc, "show_report_warn", text="Warnings")
+ row.prop(sc, "show_report_warning", text="Warnings")
row.prop(sc, "show_report_error", text="Errors")
row = layout.row()
diff --git a/release/scripts/ui/space_dopesheet.py b/release/scripts/ui/space_dopesheet.py
index f7e7ee724d7..110ddd9606b 100644
--- a/release/scripts/ui/space_dopesheet.py
+++ b/release/scripts/ui/space_dopesheet.py
@@ -48,7 +48,7 @@ class DOPESHEET_HT_header(bpy.types.Header):
sub.menu("DOPESHEET_MT_key")
layout.prop(st, "mode", text="")
- layout.prop(st.dopesheet, "display_summary", text="Summary")
+ layout.prop(st.dopesheet, "show_summary", text="Summary")
if st.mode == 'DOPESHEET':
layout.template_dopesheet_filter(st.dopesheet)
@@ -56,7 +56,7 @@ class DOPESHEET_HT_header(bpy.types.Header):
layout.template_ID(st, "action", new="action.new")
if st.mode != 'GPENCIL':
- layout.prop(st, "autosnap", text="")
+ layout.prop(st, "auto_snap", text="")
row = layout.row(align=True)
row.operator("action.copy", text="", icon='COPYDOWN')
@@ -73,10 +73,10 @@ class DOPESHEET_MT_view(bpy.types.Menu):
layout.column()
- layout.prop(st, "realtime_updates")
- layout.prop(st, "show_cframe_indicator")
+ layout.prop(st, "use_realtime_update")
+ layout.prop(st, "show_frame_indicator")
layout.prop(st, "show_sliders")
- layout.prop(st, "automerge_keyframes")
+ layout.prop(st, "use_auto_merge_keyframes")
layout.prop(st, "use_marker_sync")
if st.show_seconds:
diff --git a/release/scripts/ui/space_filebrowser.py b/release/scripts/ui/space_filebrowser.py
index a67bffc37c5..cb95ac87eef 100644
--- a/release/scripts/ui/space_filebrowser.py
+++ b/release/scripts/ui/space_filebrowser.py
@@ -46,23 +46,23 @@ class FILEBROWSER_HT_header(bpy.types.Header):
row = layout.row(align=True)
row.operator("file.directory_new", text="", icon='NEWFOLDER')
- layout.prop(params, "display", expand=True, text="")
- layout.prop(params, "sort", expand=True, text="")
+ layout.prop(params, "display_type", expand=True, text="")
+ layout.prop(params, "sort_method", expand=True, text="")
- layout.prop(params, "hide_dot", text="Hide Invisible")
- layout.prop(params, "do_filter", text="", icon='FILTER')
+ layout.prop(params, "show_hidden", text="Hide Invisible")
+ layout.prop(params, "use_filter", text="", icon='FILTER')
row = layout.row(align=True)
- row.active = params.do_filter
-
- row.prop(params, "filter_folder", text="")
- row.prop(params, "filter_blender", text="")
- row.prop(params, "filter_image", text="")
- row.prop(params, "filter_movie", text="")
- row.prop(params, "filter_script", text="")
- row.prop(params, "filter_font", text="")
- row.prop(params, "filter_sound", text="")
- row.prop(params, "filter_text", text="")
+ row.active = params.use_filter
+
+ row.prop(params, "use_filter_folder", text="")
+ row.prop(params, "use_filter_blender", text="")
+ row.prop(params, "use_filter_image", text="")
+ row.prop(params, "use_filter_movie", text="")
+ row.prop(params, "use_filter_script", text="")
+ row.prop(params, "use_filter_font", text="")
+ row.prop(params, "use_filter_sound", text="")
+ row.prop(params, "use_filter_text", text="")
def register():
diff --git a/release/scripts/ui/space_graph.py b/release/scripts/ui/space_graph.py
index 7eb728cc668..e5ba894f8ad 100644
--- a/release/scripts/ui/space_graph.py
+++ b/release/scripts/ui/space_graph.py
@@ -44,7 +44,7 @@ class GRAPH_HT_header(bpy.types.Header):
layout.template_dopesheet_filter(st.dopesheet)
- layout.prop(st, "autosnap", text="")
+ layout.prop(st, "auto_snap", text="")
layout.prop(st, "pivot_point", text="", icon_only=True)
row = layout.row(align=True)
@@ -71,19 +71,19 @@ class GRAPH_MT_view(bpy.types.Menu):
layout.operator("graph.properties", icon='MENU_PANEL')
layout.separator()
- layout.prop(st, "realtime_updates")
- layout.prop(st, "show_cframe_indicator")
+ layout.prop(st, "use_realtime_update")
+ layout.prop(st, "show_frame_indicator")
layout.prop(st, "show_cursor")
layout.prop(st, "show_sliders")
- layout.prop(st, "automerge_keyframes")
+ layout.prop(st, "use_auto_merge_keyframes")
layout.separator()
if st.show_handles:
layout.operator("graph.handles_view_toggle", icon='CHECKBOX_HLT', text="Show All Handles")
else:
layout.operator("graph.handles_view_toggle", icon='CHECKBOX_DEHLT', text="Show All Handles")
- layout.prop(st, "only_selected_curves_handles")
- layout.prop(st, "only_selected_keyframe_handles")
+ layout.prop(st, "use_only_selected_curves_handles")
+ layout.prop(st, "use_only_selected_keyframe_handles")
layout.operator("anim.time_toggle")
layout.separator()
diff --git a/release/scripts/ui/space_image.py b/release/scripts/ui/space_image.py
index 99d41244431..891637e7121 100644
--- a/release/scripts/ui/space_image.py
+++ b/release/scripts/ui/space_image.py
@@ -48,10 +48,10 @@ class IMAGE_MT_view(bpy.types.Menu):
layout.separator()
- layout.prop(sima, "update_automatically")
+ layout.prop(sima, "use_realtime_update")
if show_uvedit:
- layout.prop(toolsettings, "uv_local_view") # Numpad /
- layout.prop(uv, "draw_other_objects")
+ layout.prop(toolsettings, "show_uv_local_view") # Numpad /
+ layout.prop(uv, "show_other_objects")
layout.separator()
@@ -138,13 +138,13 @@ class IMAGE_MT_image(bpy.types.Menu):
# only for dirty && specific image types, perhaps
# this could be done in operator poll too
- if ima.dirty:
+ if ima.is_dirty:
if ima.source in ('FILE', 'GENERATED') and ima.type != 'MULTILAYER':
layout.operator("image.pack", text="Pack As PNG").as_png = True
layout.separator()
- layout.prop(sima, "image_painting")
+ layout.prop(sima, "use_image_paint")
class IMAGE_MT_uvs_showhide(bpy.types.Menu):
@@ -217,12 +217,12 @@ class IMAGE_MT_uvs(bpy.types.Menu):
uv = sima.uv_editor
toolsettings = context.tool_settings
- layout.prop(uv, "snap_to_pixels")
- layout.prop(uv, "constrain_to_image_bounds")
+ layout.prop(uv, "use_snap_to_pixels")
+ layout.prop(uv, "lock_bounds")
layout.separator()
- layout.prop(uv, "live_unwrap")
+ layout.prop(uv, "use_live_unwrap")
layout.operator("uv.unwrap")
layout.operator("uv.pin", text="Unpin").clear = True
layout.operator("uv.pin")
@@ -244,8 +244,8 @@ class IMAGE_MT_uvs(bpy.types.Menu):
layout.separator()
- layout.prop_menu_enum(toolsettings, "proportional_editing")
- layout.prop_menu_enum(toolsettings, "proportional_editing_falloff")
+ layout.prop_menu_enum(toolsettings, "proportional_edit")
+ layout.prop_menu_enum(toolsettings, "proportional_edit_falloff")
layout.separator()
@@ -278,7 +278,7 @@ class IMAGE_HT_header(bpy.types.Header):
if show_uvedit:
sub.menu("IMAGE_MT_select")
- if ima and ima.dirty:
+ if ima and ima.is_dirty:
sub.menu("IMAGE_MT_image", text="Image*")
else:
sub.menu("IMAGE_MT_image", text="Image")
@@ -288,31 +288,31 @@ class IMAGE_HT_header(bpy.types.Header):
layout.template_ID(sima, "image", new="image.new")
if not show_render:
- layout.prop(sima, "image_pin", text="")
+ layout.prop(sima, "use_image_pin", text="")
# uv editing
if show_uvedit:
uvedit = sima.uv_editor
- layout.prop(uvedit, "pivot", text="", icon_only=True)
- layout.prop(toolsettings, "uv_sync_selection", text="")
+ layout.prop(uvedit, "pivot_point", text="", icon_only=True)
+ layout.prop(toolsettings, "use_uv_select_sync", text="")
- if toolsettings.uv_sync_selection:
+ if toolsettings.use_uv_select_sync:
row = layout.row(align=True)
- row.prop(toolsettings, "mesh_selection_mode", text="", index=0, icon='VERTEXSEL')
- row.prop(toolsettings, "mesh_selection_mode", text="", index=1, icon='EDGESEL')
- row.prop(toolsettings, "mesh_selection_mode", text="", index=2, icon='FACESEL')
+ row.prop(toolsettings, "mesh_select_mode", text="", index=0, icon='VERTEXSEL')
+ row.prop(toolsettings, "mesh_select_mode", text="", index=1, icon='EDGESEL')
+ row.prop(toolsettings, "mesh_select_mode", text="", index=2, icon='FACESEL')
else:
- layout.prop(toolsettings, "uv_selection_mode", text="", expand=True)
- layout.prop(uvedit, "sticky_selection_mode", text="", icon_only=True)
+ layout.prop(toolsettings, "uv_select_mode", text="", expand=True)
+ layout.prop(uvedit, "sticky_select_mode", text="", icon_only=True)
row = layout.row(align=True)
- row.prop(toolsettings, "proportional_editing", text="", icon_only=True)
- if toolsettings.proportional_editing != 'DISABLED':
- row.prop(toolsettings, "proportional_editing_falloff", text="", icon_only=True)
+ row.prop(toolsettings, "proportional_edit", text="", icon_only=True)
+ if toolsettings.proportional_edit != 'DISABLED':
+ row.prop(toolsettings, "proportional_edit_falloff", text="", icon_only=True)
row = layout.row(align=True)
- row.prop(toolsettings, "snap", text="")
+ row.prop(toolsettings, "use_snap", text="")
row.prop(toolsettings, "snap_element", text="", icon_only=True)
# mesh = context.edit_object.data
@@ -323,7 +323,7 @@ class IMAGE_HT_header(bpy.types.Header):
layout.template_image_layers(ima, iuser)
# painting
- layout.prop(sima, "image_painting", text="")
+ layout.prop(sima, "use_image_paint", text="")
# draw options
row = layout.row(align=True)
@@ -335,8 +335,8 @@ class IMAGE_HT_header(bpy.types.Header):
if ima.type == 'COMPOSITE' and ima.source in ('MOVIE', 'SEQUENCE'):
row.operator("image.play_composite", icon='PLAY')
- if show_uvedit or sima.image_painting:
- layout.prop(sima, "update_automatically", text="", icon_only=True, icon='LOCKED')
+ if show_uvedit or sima.use_image_paint:
+ layout.prop(sima, "use_realtime_update", text="", icon_only=True, icon='LOCKED')
class IMAGE_PT_image_properties(bpy.types.Panel):
@@ -381,24 +381,24 @@ class IMAGE_PT_game_properties(bpy.types.Panel):
col = split.column()
sub = col.column(align=True)
- sub.prop(ima, "animated")
+ sub.prop(ima, "use_animation")
subsub = sub.column()
- subsub.active = ima.animated
- subsub.prop(ima, "animation_start", text="Start")
- subsub.prop(ima, "animation_end", text="End")
- subsub.prop(ima, "animation_speed", text="Speed")
+ subsub.active = ima.use_animation
+ subsub.prop(ima, "frame_start", text="Start")
+ subsub.prop(ima, "frame_end", text="End")
+ subsub.prop(ima, "fps", text="Speed")
col.prop(ima, "tiles")
sub = col.column(align=True)
- sub.active = ima.tiles or ima.animated
+ sub.active = ima.tiles or ima.use_animation
sub.prop(ima, "tiles_x", text="X")
sub.prop(ima, "tiles_y", text="Y")
col = split.column()
col.label(text="Clamp:")
- col.prop(ima, "clamp_x", text="X")
- col.prop(ima, "clamp_y", text="Y")
+ col.prop(ima, "use_clamp_x", text="X")
+ col.prop(ima, "use_clamp_y", text="Y")
col.separator()
col.prop(ima, "mapping", expand=True)
@@ -525,13 +525,13 @@ class IMAGE_PT_view_properties(bpy.types.Panel):
col = split.column()
col.label(text="Coordinates:")
- col.prop(sima, "draw_repeated", text="Repeat")
+ col.prop(sima, "show_repeat", text="Repeat")
if show_uvedit:
- col.prop(uvedit, "normalized_coordinates", text="Normalized")
+ col.prop(uvedit, "show_normalized_coords", text="Normalized")
elif show_uvedit:
col.label(text="Coordinates:")
- col.prop(uvedit, "normalized_coordinates", text="Normalized")
+ col.prop(uvedit, "show_normalized_coords", text="Normalized")
if show_uvedit:
@@ -545,15 +545,15 @@ class IMAGE_PT_view_properties(bpy.types.Panel):
split = layout.split()
col = split.column()
- col.prop(uvedit, "draw_smooth_edges", text="Smooth")
- col.prop(uvedit, "draw_modified_edges", text="Modified")
- #col.prop(uvedit, "draw_edges")
- #col.prop(uvedit, "draw_faces")
+ col.prop(uvedit, "show_smooth_edges", text="Smooth")
+ col.prop(uvedit, "show_modified_edges", text="Modified")
+ #col.prop(uvedit, "show_edges")
+ #col.prop(uvedit, "show_faces")
col = split.column()
- col.prop(uvedit, "draw_stretch", text="Stretch")
+ col.prop(uvedit, "show_stretch", text="Stretch")
sub = col.column()
- sub.active = uvedit.draw_stretch
+ sub.active = uvedit.show_stretch
sub.row().prop(uvedit, "draw_stretch_type", expand=True)
@@ -575,7 +575,7 @@ class IMAGE_PT_paint(bpy.types.Panel):
col = layout.split().column()
row = col.row()
- col.template_ID_preview(toolsettings, "brush", new="brush.add", filter="is_imapaint_brush", rows=3, cols=8)
+ col.template_ID_preview(toolsettings, "brush", new="brush.add", rows=3, cols=8)
if brush:
col = layout.column()
@@ -584,15 +584,15 @@ class IMAGE_PT_paint(bpy.types.Panel):
row = col.row(align=True)
row.prop(brush, "size", slider=True)
- row.prop(brush, "use_size_pressure", toggle=True, text="")
+ row.prop(brush, "use_pressure_size", toggle=True, text="")
row = col.row(align=True)
row.prop(brush, "strength", slider=True)
- row.prop(brush, "use_strength_pressure", toggle=True, text="")
+ row.prop(brush, "use_pressure_strength", toggle=True, text="")
row = col.row(align=True)
row.prop(brush, "jitter", slider=True)
- row.prop(brush, "use_jitter_pressure", toggle=True, text="")
+ row.prop(brush, "use_pressure_jitter", toggle=True, text="")
col.prop(brush, "blend", text="Blend")
@@ -638,7 +638,7 @@ class IMAGE_PT_paint_stroke(BrushButtonsPanel, bpy.types.Panel):
row = layout.row(align=True)
row.active = brush.use_space
row.prop(brush, "spacing", text="Distance", slider=True)
- row.prop(brush, "use_spacing_pressure", toggle=True, text="")
+ row.prop(brush, "use_pressure_spacing", toggle=True, text="")
layout.prop(brush, "use_wrap")
diff --git a/release/scripts/ui/space_info.py b/release/scripts/ui/space_info.py
index db9e4df8967..500e80fe120 100644
--- a/release/scripts/ui/space_info.py
+++ b/release/scripts/ui/space_info.py
@@ -48,7 +48,7 @@ class INFO_HT_header(bpy.types.Header):
sub.menu("INFO_MT_render")
sub.menu("INFO_MT_help")
- if window.screen.fullscreen:
+ if window.screen.show_fullscreen:
layout.operator("screen.back_to_previous", icon='SCREEN_BACK', text="Back to Previous")
layout.separator()
else:
@@ -58,7 +58,7 @@ class INFO_HT_header(bpy.types.Header):
layout.separator()
- if rd.multiple_engines:
+ if rd.has_multiple_engines:
layout.prop(rd, "engine", text="")
layout.separator()
@@ -265,7 +265,7 @@ class INFO_MT_game(bpy.types.Menu):
def draw(self, context):
layout = self.layout
- gs = context.scene.game_data
+ gs = context.scene.game_settings
layout.operator("view3d.game_start")
@@ -277,7 +277,7 @@ class INFO_MT_game(bpy.types.Menu):
layout.prop(gs, "use_deprecation_warnings")
layout.prop(gs, "use_animation_record")
layout.separator()
- layout.prop(gs, "auto_start")
+ layout.prop(gs, "use_auto_start")
class INFO_MT_render(bpy.types.Menu):
diff --git a/release/scripts/ui/space_nla.py b/release/scripts/ui/space_nla.py
index 1141a640534..bb979e0573e 100644
--- a/release/scripts/ui/space_nla.py
+++ b/release/scripts/ui/space_nla.py
@@ -42,7 +42,7 @@ class NLA_HT_header(bpy.types.Header):
layout.template_dopesheet_filter(st.dopesheet)
- layout.prop(st, "autosnap", text="")
+ layout.prop(st, "auto_snap", text="")
class NLA_MT_view(bpy.types.Menu):
@@ -59,8 +59,8 @@ class NLA_MT_view(bpy.types.Menu):
layout.separator()
- layout.prop(st, "realtime_updates")
- layout.prop(st, "show_cframe_indicator")
+ layout.prop(st, "use_realtime_update")
+ layout.prop(st, "show_frame_indicator")
layout.operator("anim.time_toggle", text="Show Frames" if st.show_seconds else "Show Seconds")
@@ -122,7 +122,7 @@ class NLA_MT_edit(bpy.types.Menu):
layout.separator()
# TODO: names of these tools for 'tweakmode' need changing?
- if scene.nla_tweakmode_on:
+ if scene.is_nla_tweakmode:
layout.operator("nla.tweakmode_exit", text="Stop Tweaking Strip Actions")
else:
layout.operator("nla.tweakmode_enter", text="Start Tweaking Strip Actions")
diff --git a/release/scripts/ui/space_node.py b/release/scripts/ui/space_node.py
index 0a3cebf5faa..cd1425ee122 100644
--- a/release/scripts/ui/space_node.py
+++ b/release/scripts/ui/space_node.py
@@ -66,8 +66,8 @@ class NODE_HT_header(bpy.types.Header):
scene = snode.id
layout.prop(scene, "use_nodes")
- layout.prop(scene.render, "free_unused_nodes", text="Free Unused")
- layout.prop(snode, "backdrop")
+ layout.prop(scene.render, "use_free_unused_nodes", text="Free Unused")
+ layout.prop(snode, "show_backdrop")
layout.separator()
@@ -90,7 +90,7 @@ class NODE_MT_view(bpy.types.Menu):
layout.operator("node.view_all")
- if context.space_data.backdrop:
+ if context.space_data.show_backdrop:
layout.separator()
layout.operator("node.backimage_move",text = "Backdrop move")
diff --git a/release/scripts/ui/space_outliner.py b/release/scripts/ui/space_outliner.py
index 6b2743027ba..e170dc0322c 100644
--- a/release/scripts/ui/space_outliner.py
+++ b/release/scripts/ui/space_outliner.py
@@ -42,7 +42,7 @@ class OUTLINER_HT_header(bpy.types.Header):
layout.prop(space, "display_mode", text="")
- layout.prop(space, "display_filter", icon='VIEWZOOM', text="")
+ layout.prop(space, "filter_text", icon='VIEWZOOM', text="")
layout.separator()
@@ -73,7 +73,7 @@ class OUTLINER_MT_view(bpy.types.Menu):
col = layout.column()
if space.display_mode not in ('DATABLOCKS', 'USER_PREFERENCES', 'KEYMAPS'):
- col.prop(space, "show_restriction_columns")
+ col.prop(space, "show_restrict_columns")
col.separator()
col.operator("outliner.show_active")
@@ -96,8 +96,8 @@ class OUTLINER_MT_search(bpy.types.Menu):
col = layout.column()
- col.prop(space, "match_case_sensitive")
- col.prop(space, "match_complete")
+ col.prop(space, "use_filter_case_sensitive")
+ col.prop(space, "use_filter_complete")
class OUTLINER_MT_edit_datablocks(bpy.types.Menu):
diff --git a/release/scripts/ui/space_sequencer.py b/release/scripts/ui/space_sequencer.py
index 3a828bfb6d0..1906f3312e1 100644
--- a/release/scripts/ui/space_sequencer.py
+++ b/release/scripts/ui/space_sequencer.py
@@ -143,12 +143,12 @@ class SEQUENCER_MT_view(bpy.types.Menu):
layout.operator("sequencer.view_selected")
- layout.prop(st, "draw_frames")
- layout.prop(st, "show_cframe_indicator")
+ layout.prop(st, "show_frames")
+ layout.prop(st, "show_frame_indicator")
if st.display_mode == 'IMAGE':
- layout.prop(st, "draw_safe_margin")
+ layout.prop(st, "show_safe_margin")
if st.display_mode == 'WAVEFORM':
- layout.prop(st, "separate_color_preview")
+ layout.prop(st, "show_separate_color")
layout.separator()
layout.prop(st, "use_marker_sync")
@@ -358,12 +358,12 @@ class SEQUENCER_PT_edit(SequencerButtonsPanel, bpy.types.Panel):
split = layout.split(percentage=0.3)
split.label(text="Blend:")
- split.prop(strip, "blend_mode", text="")
+ split.prop(strip, "blend_type", text="")
row = layout.row(align=True)
sub = row.row()
sub.active = (not strip.mute)
- sub.prop(strip, "blend_opacity", text="Opacity", slider=True)
+ sub.prop(strip, "blend_alpha", text="Opacity", slider=True)
row.prop(strip, "mute", toggle=True, icon='RESTRICT_VIEW_ON' if strip.mute else 'RESTRICT_VIEW_OFF', text="")
row.prop(strip, "lock", toggle=True, icon='LOCKED' if strip.lock else 'UNLOCKED', text="")
@@ -372,13 +372,13 @@ class SEQUENCER_PT_edit(SequencerButtonsPanel, bpy.types.Panel):
sub.enabled = not strip.lock
sub.prop(strip, "channel")
sub.prop(strip, "frame_start")
- sub.prop(strip, "frame_final_length")
+ sub.prop(strip, "frame_final_duration")
col = layout.column(align=True)
row = col.row()
- row.label(text="Final Length: %s" % bpy.utils.smpte_from_frame(strip.frame_final_length))
+ row.label(text="Final Length: %s" % bpy.utils.smpte_from_frame(strip.frame_final_duration))
row = col.row()
- row.active = (frame_current >= strip.frame_start and frame_current <= strip.frame_start + strip.frame_length)
+ row.active = (frame_current >= strip.frame_start and frame_current <= strip.frame_start + strip.frame_duration)
row.label(text="Playhead: %d" % (frame_current - strip.frame_start))
col.label(text="Frame Offset %d:%d" % (strip.frame_offset_start, strip.frame_offset_end))
@@ -428,19 +428,19 @@ class SEQUENCER_PT_effect(SequencerButtonsPanel, bpy.types.Panel):
flow.prop(strip, "threshold", slider=True)
flow.prop(strip, "clamp", slider=True)
flow.prop(strip, "boost_factor")
- flow.prop(strip, "blur_distance")
+ flow.prop(strip, "blur_radius")
row = layout.row()
row.prop(strip, "quality", slider=True)
- row.prop(strip, "only_boost")
+ row.prop(strip, "use_only_boost")
elif strip.type == 'SPEED':
layout.prop(strip, "global_speed")
flow = layout.column_flow()
- flow.prop(strip, "curve_velocity")
- flow.prop(strip, "curve_compress_y")
- flow.prop(strip, "frame_blending")
+ flow.prop(strip, "use_curve_velocity")
+ flow.prop(strip, "use_curve_compress_y")
+ flow.prop(strip, "use_frame_blend")
elif strip.type == 'TRANSFORM':
self.draw_panel_transform(strip)
@@ -452,10 +452,7 @@ class SEQUENCER_PT_effect(SequencerButtonsPanel, bpy.types.Panel):
sub = row.row()
sub.scale_x = 2.0
- if not context.screen.animation_playing:
- sub.operator("screen.animation_play", text="", icon='PLAY')
- else:
- sub.operator("screen.animation_play", text="", icon='PAUSE')
+ sub.operator("screen.animation_play", text="", icon='PAUSE' if context.screen.is_animation_playing else 'PLAY')
row.label("Cut To")
for i in range(1, strip.channel):
@@ -466,8 +463,8 @@ class SEQUENCER_PT_effect(SequencerButtonsPanel, bpy.types.Panel):
if strip.type == 'SPEED':
col.prop(strip, "speed_fader", text="Speed fader")
elif strip.type in ('CROSS', 'GAMMA_CROSS', 'PLUGIN', 'WIPE'):
- col.prop(strip, "use_effect_default_fade", "Default fade")
- if not strip.use_effect_default_fade:
+ col.prop(strip, "use_default_fade", "Default fade")
+ if not strip.use_default_fade:
col.prop(strip, "effect_fader", text="Effect fader")
layout.prop(strip, "use_translation", text="Image Offset:")
@@ -498,8 +495,8 @@ class SEQUENCER_PT_effect(SequencerButtonsPanel, bpy.types.Panel):
layout.separator()
col = layout.column(align=True)
- col.prop(strip, "uniform_scale")
- if (strip.uniform_scale):
+ col.prop(strip, "use_uniform_scale")
+ if (strip.use_uniform_scale):
col = layout.column(align=True)
col.prop(strip, "scale_start_x", text="Scale")
else:
@@ -620,15 +617,15 @@ class SEQUENCER_PT_sound(SequencerButtonsPanel, bpy.types.Panel):
else:
row.operator("sound.pack", icon='UGLYPACKAGE', text="Pack")
- row.prop(strip.sound, "caching")
+ row.prop(strip.sound, "use_memory_cache")
layout.prop(strip, "volume")
layout.prop(strip, "attenuation")
col = layout.column(align=True)
col.label(text="Trim Duration:")
- col.prop(strip, "animation_start_offset", text="Start")
- col.prop(strip, "animation_end_offset", text="End")
+ col.prop(strip, "animation_offset_start", text="Start")
+ col.prop(strip, "animation_offset_end", text="End")
class SEQUENCER_PT_scene(SequencerButtonsPanel, bpy.types.Panel):
@@ -686,19 +683,19 @@ class SEQUENCER_PT_filter(SequencerButtonsPanel, bpy.types.Panel):
row = layout.row()
row.label(text="Flip:")
- row.prop(strip, "flip_x", text="X")
- row.prop(strip, "flip_y", text="Y")
+ row.prop(strip, "use_flip_x", text="X")
+ row.prop(strip, "use_flip_y", text="Y")
col = layout.column()
- col.prop(strip, "reverse_frames", text="Backwards")
- col.prop(strip, "de_interlace")
+ col.prop(strip, "use_reverse_frames", text="Backwards")
+ col.prop(strip, "use_deinterlace")
col = layout.column()
col.label(text="Colors:")
col.prop(strip, "color_saturation", text="Saturation")
- col.prop(strip, "multiply_colors", text="Multiply")
- col.prop(strip, "premultiply")
- col.prop(strip, "convert_float")
+ col.prop(strip, "color_multiply", text="Multiply")
+ col.prop(strip, "use_premultiply")
+ col.prop(strip, "use_float")
layout.prop(strip, "use_color_balance")
if strip.use_color_balance and strip.color_balance: # TODO - need to add this somehow
@@ -707,15 +704,15 @@ class SEQUENCER_PT_filter(SequencerButtonsPanel, bpy.types.Panel):
col = row.column()
col.template_color_wheel(strip.color_balance, "lift", value_slider=False, cubic=True)
col.row().prop(strip.color_balance, "lift")
- col.prop(strip.color_balance, "inverse_lift", text="Inverse")
+ col.prop(strip.color_balance, "invert_lift", text="Inverse")
col = row.column()
col.template_color_wheel(strip.color_balance, "gamma", value_slider=False, lock_luminosity=True, cubic=True)
col.row().prop(strip.color_balance, "gamma")
- col.prop(strip.color_balance, "inverse_gamma", text="Inverse")
+ col.prop(strip.color_balance, "invert_gamma", text="Inverse")
col = row.column()
col.template_color_wheel(strip.color_balance, "gain", value_slider=False, lock_luminosity=True, cubic=True)
col.row().prop(strip.color_balance, "gain")
- col.prop(strip.color_balance, "inverse_gain", text="Inverse")
+ col.prop(strip.color_balance, "invert_gain", text="Inverse")
class SEQUENCER_PT_proxy(SequencerButtonsPanel, bpy.types.Panel):
@@ -743,12 +740,12 @@ class SEQUENCER_PT_proxy(SequencerButtonsPanel, bpy.types.Panel):
strip = act_strip(context)
flow = layout.column_flow()
- flow.prop(strip, "proxy_custom_directory")
- flow.prop(strip, "proxy_custom_file")
+ flow.prop(strip, "use_proxy_custom_directory")
+ flow.prop(strip, "use_proxy_custom_file")
if strip.proxy: # TODO - need to add this somehow
- if strip.proxy_custom_directory and not strip.proxy_custom_file:
+ if strip.proxy_custom_directory and not strip.use_proxy_custom_file:
flow.prop(strip.proxy, "directory")
- if strip.proxy_custom_file:
+ if strip.use_proxy_custom_file:
flow.prop(strip.proxy, "filepath")
@@ -787,9 +784,9 @@ class SEQUENCER_PT_view(SequencerButtonsPanel_Output, bpy.types.Panel):
col = layout.column()
if st.display_mode == 'IMAGE':
col.prop(st, "draw_overexposed") # text="Zebra"
- col.prop(st, "draw_safe_margin")
+ col.prop(st, "show_safe_margin")
if st.display_mode == 'WAVEFORM':
- col.prop(st, "separate_color_preview")
+ col.prop(st, "show_separate_color")
col.prop(st, "proxy_render_size")
def register():
diff --git a/release/scripts/ui/space_text.py b/release/scripts/ui/space_text.py
index d9fce39fee8..0b7e215dc37 100644
--- a/release/scripts/ui/space_text.py
+++ b/release/scripts/ui/space_text.py
@@ -40,7 +40,7 @@ class TEXT_HT_header(bpy.types.Header):
sub.menu("TEXT_MT_edit")
sub.menu("TEXT_MT_format")
- if text and text.modified:
+ if text and text.is_modified:
row = layout.row()
# row.color(redalert)
row.operator("text.resolve_conflict", text="", icon='HELP')
@@ -62,7 +62,7 @@ class TEXT_HT_header(bpy.types.Header):
row = layout.row()
if text.filepath:
- if text.dirty:
+ if text.is_dirty:
row.label(text="File: *%s (unsaved)" % text.filepath)
else:
row.label(text="File: %s" % text.filepath)
@@ -85,7 +85,7 @@ class TEXT_PT_properties(bpy.types.Panel):
flow.prop(st, "show_word_wrap")
flow.prop(st, "show_syntax_highlight")
flow.prop(st, "show_line_highlight")
- flow.prop(st, "live_edit")
+ flow.prop(st, "use_live_edit")
flow = layout.column_flow()
flow.prop(st, "font_size")
@@ -93,7 +93,7 @@ class TEXT_PT_properties(bpy.types.Panel):
text = st.text
if text:
- flow.prop(text, "tabs_as_spaces")
+ flow.prop(text, "use_tabs_as_spaces")
class TEXT_PT_find(bpy.types.Panel):
@@ -125,8 +125,8 @@ class TEXT_PT_find(bpy.types.Panel):
# settings
row = layout.row()
- row.prop(st, "find_wrap", text="Wrap")
- row.prop(st, "find_all", text="All")
+ row.prop(st, "use_find_wrap", text="Wrap")
+ row.prop(st, "use_find_all", text="All")
class TEXT_MT_view(bpy.types.Menu):
diff --git a/release/scripts/ui/space_time.py b/release/scripts/ui/space_time.py
index 3825d774f1e..cfd8401b46b 100644
--- a/release/scripts/ui/space_time.py
+++ b/release/scripts/ui/space_time.py
@@ -46,8 +46,8 @@ class TIME_HT_header(bpy.types.Header):
row.prop(scene, "frame_start", text="Start")
row.prop(scene, "frame_end", text="End")
else:
- row.prop(scene, "preview_range_frame_start", text="Start")
- row.prop(scene, "preview_range_frame_end", text="End")
+ row.prop(scene, "frame_preview_start", text="Start")
+ row.prop(scene, "frame_preview_end", text="End")
layout.prop(scene, "frame_current", text="")
@@ -56,7 +56,7 @@ class TIME_HT_header(bpy.types.Header):
row = layout.row(align=True)
row.operator("screen.frame_jump", text="", icon='REW').end = False
row.operator("screen.keyframe_jump", text="", icon='PREV_KEYFRAME').next = False
- if not screen.animation_playing:
+ if not screen.is_animation_playing:
row.operator("screen.animation_play", text="", icon='PLAY_REVERSE').reverse = True
row.operator("screen.animation_play", text="", icon='PLAY')
else:
@@ -67,17 +67,17 @@ class TIME_HT_header(bpy.types.Header):
row.operator("screen.frame_jump", text="", icon='FF').end = True
row = layout.row(align=True)
- row.prop(tools, "use_auto_keying", text="", toggle=True)
- if screen.animation_playing and tools.use_auto_keying:
+ row.prop(tools, "use_keyframe_insert_auto", text="", toggle=True)
+ if screen.is_animation_playing and tools.use_keyframe_insert_auto:
subsub = row.row()
- subsub.prop(tools, "record_with_nla", toggle=True)
+ subsub.prop(tools, "use_record_with_nla", toggle=True)
layout.prop(scene, "sync_mode", text="")
layout.separator()
row = layout.row(align=True)
- row.prop_object(scene, "active_keying_set", scene, "all_keying_sets", text="")
+ row.prop_object(scene, "active_keying_set", scene, "keying_sets_all", text="")
row.operator("anim.keyframe_insert", text="", icon='KEY_HLT')
row.operator("anim.keyframe_delete", text="", icon='KEY_DEHLT')
@@ -95,8 +95,8 @@ class TIME_MT_view(bpy.types.Menu):
layout.separator()
- layout.prop(st, "show_cframe_indicator")
- layout.prop(st, "only_selected")
+ layout.prop(st, "show_frame_indicator")
+ layout.prop(st, "show_only_selected")
layout.separator()
@@ -166,20 +166,20 @@ class TIME_MT_playback(bpy.types.Menu):
st = context.space_data
scene = context.scene
- layout.prop(st, "play_top_left")
- layout.prop(st, "play_all_3d")
- layout.prop(st, "play_anim")
- layout.prop(st, "play_buttons")
- layout.prop(st, "play_image")
- layout.prop(st, "play_sequencer")
- layout.prop(st, "play_nodes")
+ layout.prop(st, "use_play_top_left_3d_editor")
+ layout.prop(st, "use_play_3d_editors")
+ layout.prop(st, "use_play_animation_editors")
+ layout.prop(st, "use_play_properties_editors")
+ layout.prop(st, "use_play_image_editors")
+ layout.prop(st, "use_play_sequence_editors")
+ layout.prop(st, "use_play_node_editors")
layout.separator()
- layout.prop(scene, "frame_drop", text="Frame Dropping")
- layout.prop(scene, "sync_audio", text="AV-sync", icon='SPEAKER')
- layout.prop(scene, "mute_audio")
- layout.prop(scene, "scrub_audio")
+ layout.prop(scene, "use_frame_drop", text="Frame Dropping")
+ layout.prop(scene, "use_audio_sync", text="AV-sync", icon='SPEAKER')
+ layout.prop(scene, "use_audio")
+ layout.prop(scene, "use_audio_scrub")
class TIME_MT_autokey(bpy.types.Menu):
@@ -189,8 +189,8 @@ class TIME_MT_autokey(bpy.types.Menu):
layout = self.layout
tools = context.tool_settings
- layout.prop_enum(tools, "autokey_mode", 'ADD_REPLACE_KEYS')
- layout.prop_enum(tools, "autokey_mode", 'REPLACE_KEYS')
+ layout.prop_enum(tools, "auto_keying_mode", 'ADD_REPLACE_KEYS')
+ layout.prop_enum(tools, "auto_keying_mode", 'REPLACE_KEYS')
def register():
pass
diff --git a/release/scripts/ui/space_userpref.py b/release/scripts/ui/space_userpref.py
index 049d22a44ed..feeae5d3f9b 100644
--- a/release/scripts/ui/space_userpref.py
+++ b/release/scripts/ui/space_userpref.py
@@ -45,9 +45,9 @@ def ui_items_general(col, context):
colsub = padding.column()
colsub.row().prop(context, "text")
colsub.row().prop(context, "text_sel")
- colsub.prop(context, "shaded")
+ colsub.prop(context, "show_shaded")
subsub = colsub.column(align=True)
- subsub.active = context.shaded
+ subsub.active = context.show_shaded
subsub.prop(context, "shadetop")
subsub.prop(context, "shadedown")
@@ -57,13 +57,10 @@ def ui_items_general(col, context):
def opengl_lamp_buttons(column, lamp):
split = column.split(percentage=0.1)
- if lamp.enabled == True:
- split.prop(lamp, "enabled", text="", icon='OUTLINER_OB_LAMP')
- else:
- split.prop(lamp, "enabled", text="", icon='LAMP_DATA')
+ split.prop(lamp, "use", text="", icon='OUTLINER_OB_LAMP' if lamp.use else 'LAMP_DATA')
col = split.column()
- col.active = lamp.enabled
+ col.active = lamp.use
row = col.row()
row.label(text="Diffuse:")
row.prop(lamp, "diffuse_color", text="")
@@ -72,7 +69,7 @@ def opengl_lamp_buttons(column, lamp):
row.prop(lamp, "specular_color", text="")
col = split.column()
- col.active = lamp.enabled
+ col.active = lamp.use
col.prop(lamp, "direction", text="")
@@ -91,15 +88,12 @@ class USERPREF_HT_header(bpy.types.Header):
layout.operator_context = 'INVOKE_DEFAULT'
if userpref.active_section == 'INPUT':
- op = layout.operator("wm.keyconfig_export")
- op.filepath = "keymap.py"
- op = layout.operator("wm.keyconfig_import")
- op.filepath = "keymap.py"
+ layout.operator("wm.keyconfig_export")
+ layout.operator("wm.keyconfig_import")
elif userpref.active_section == 'ADDONS':
- op = layout.operator("wm.addon_install")
- op.filepath = "*.py"
+ layout.operator("wm.addon_install")
elif userpref.active_section == 'THEMES':
- op = layout.operator("ui.reset_default_theme")
+ layout.operator("ui.reset_default_theme")
class USERPREF_PT_tabs(bpy.types.Panel):
@@ -157,12 +151,12 @@ class USERPREF_PT_interface(bpy.types.Panel):
col = row.column()
col.label(text="Display:")
- col.prop(view, "tooltips")
- col.prop(view, "display_object_info", text="Object Info")
- col.prop(view, "use_large_cursors")
+ col.prop(view, "show_tooltips")
+ col.prop(view, "show_object_info", text="Object Info")
+ col.prop(view, "show_large_cursors")
col.prop(view, "show_view_name", text="View Name")
col.prop(view, "show_playback_fps", text="Playback FPS")
- col.prop(view, "global_scene")
+ col.prop(view, "use_global_scene")
col.prop(view, "object_origin_size")
col.separator()
@@ -181,14 +175,14 @@ class USERPREF_PT_interface(bpy.types.Panel):
col = row.column()
col.label(text="View Manipulation:")
- col.prop(view, "auto_depth")
- col.prop(view, "zoom_to_mouse")
- col.prop(view, "rotate_around_selection")
- col.prop(view, "global_pivot")
+ col.prop(view, "use_mouse_auto_depth")
+ col.prop(view, "use_zoom_to_mouse")
+ col.prop(view, "use_rotate_around_active")
+ col.prop(view, "use_global_pivot")
col.separator()
- col.prop(view, "auto_perspective")
+ col.prop(view, "use_auto_perspective")
col.prop(view, "smooth_view")
col.prop(view, "rotation_angle")
@@ -196,7 +190,7 @@ class USERPREF_PT_interface(bpy.types.Panel):
col.separator()
col.label(text="2D Viewports:")
- col.prop(view, "view2d_grid_minimum_spacing", text="Minimum Grid Spacing")
+ col.prop(view, "view2d_grid_spacing_min", text="Minimum Grid Spacing")
col.prop(view, "timecode_style")
row.separator()
@@ -205,13 +199,13 @@ class USERPREF_PT_interface(bpy.types.Panel):
col = row.column()
#Toolbox doesn't exist yet
#col.label(text="Toolbox:")
- #col.prop(view, "use_column_layout")
+ #col.prop(view, "show_column_layout")
#col.label(text="Open Toolbox Delay:")
#col.prop(view, "open_left_mouse_delay", text="Hold LMB")
#col.prop(view, "open_right_mouse_delay", text="Hold RMB")
- col.prop(view, "use_manipulator")
+ col.prop(view, "show_manipulator")
sub = col.column()
- sub.active = view.use_manipulator
+ sub.active = view.show_manipulator
sub.prop(view, "manipulator_size", text="Size")
sub.prop(view, "manipulator_handle_size", text="Handle Size")
sub.prop(view, "manipulator_hotspot", text="Hotspot")
@@ -221,7 +215,7 @@ class USERPREF_PT_interface(bpy.types.Panel):
col.separator()
col.label(text="Menus:")
- col.prop(view, "open_mouse_over")
+ col.prop(view, "use_mouse_over_open")
col.label(text="Menu Open Delay:")
col.prop(view, "open_toplevel_delay", text="Top Level")
col.prop(view, "open_sublevel_delay", text="Sub Level")
@@ -259,7 +253,7 @@ class USERPREF_PT_edit(bpy.types.Panel):
col.separator()
col.label(text="New Objects:")
- col.prop(edit, "enter_edit_mode")
+ col.prop(edit, "use_enter_edit_mode")
col.label(text="Align To:")
col.prop(edit, "object_align", text="")
@@ -268,7 +262,7 @@ class USERPREF_PT_edit(bpy.types.Panel):
col.separator()
col.label(text="Undo:")
- col.prop(edit, "global_undo")
+ col.prop(edit, "use_global_undo")
col.prop(edit, "undo_steps", text="Steps")
col.prop(edit, "undo_memory_limit", text="Memory Limit")
@@ -279,9 +273,9 @@ class USERPREF_PT_edit(bpy.types.Panel):
col.label(text="Grease Pencil:")
col.prop(edit, "grease_pencil_manhattan_distance", text="Manhattan Distance")
col.prop(edit, "grease_pencil_euclidean_distance", text="Euclidean Distance")
- #col.prop(edit, "grease_pencil_simplify_stroke", text="Simplify Stroke")
+ #col.prop(edit, "use_grease_pencil_simplify_stroke", text="Simplify Stroke")
col.prop(edit, "grease_pencil_eraser_radius", text="Eraser Radius")
- col.prop(edit, "grease_pencil_smooth_stroke", text="Smooth Stroke")
+ col.prop(edit, "use_grease_pencil_smooth_stroke", text="Smooth Stroke")
col.separator()
col.separator()
col.separator()
@@ -294,7 +288,7 @@ class USERPREF_PT_edit(bpy.types.Panel):
col = row.column()
col.label(text="Keyframing:")
col.prop(edit, "use_visual_keying")
- col.prop(edit, "keyframe_insert_needed", text="Only Insert Needed")
+ col.prop(edit, "use_keyframe_insert_needed", text="Only Insert Needed")
col.separator()
@@ -302,48 +296,48 @@ class USERPREF_PT_edit(bpy.types.Panel):
sub = col.column()
- # sub.active = edit.use_auto_keying # incorrect, timeline can enable
- sub.prop(edit, "auto_keyframe_insert_keyingset", text="Only Insert for Keying Set")
- sub.prop(edit, "auto_keyframe_insert_available", text="Only Insert Available")
+ # sub.active = edit.use_keyframe_insert_auto # incorrect, timeline can enable
+ sub.prop(edit, "use_keyframe_insert_keyingset", text="Only Insert for Keying Set")
+ sub.prop(edit, "use_keyframe_insert_available", text="Only Insert Available")
col.separator()
col.label(text="New F-Curve Defaults:")
col.prop(edit, "keyframe_new_interpolation_type", text="Interpolation")
col.prop(edit, "keyframe_new_handle_type", text="Handles")
- col.prop(edit, "insertkey_xyz_to_rgb", text="XYZ to RGB")
+ col.prop(edit, "use_insertkey_xyz_to_rgb", text="XYZ to RGB")
col.separator()
col.separator()
col.separator()
col.label(text="Transform:")
- col.prop(edit, "drag_immediately")
+ col.prop(edit, "use_drag_immediately")
row.separator()
row.separator()
col = row.column()
row = col.row(align=True)
- row.prop(edit, "sculpt_paint_overlay_col", text="Sculpt Overlay Color")
+ row.prop(edit, "sculpt_paint_overlay_color", text="Sculpt Overlay Color")
col.separator()
col.separator()
col.separator()
col.label(text="Duplicate Data:")
- col.prop(edit, "duplicate_mesh", text="Mesh")
- col.prop(edit, "duplicate_surface", text="Surface")
- col.prop(edit, "duplicate_curve", text="Curve")
- col.prop(edit, "duplicate_text", text="Text")
- col.prop(edit, "duplicate_metaball", text="Metaball")
- col.prop(edit, "duplicate_armature", text="Armature")
- col.prop(edit, "duplicate_lamp", text="Lamp")
- col.prop(edit, "duplicate_material", text="Material")
- col.prop(edit, "duplicate_texture", text="Texture")
- #col.prop(edit, "duplicate_fcurve", text="F-Curve")
- col.prop(edit, "duplicate_action", text="Action")
- col.prop(edit, "duplicate_particle", text="Particle")
+ col.prop(edit, "use_duplicate_mesh", text="Mesh")
+ col.prop(edit, "use_duplicate_surface", text="Surface")
+ col.prop(edit, "use_duplicate_curve", text="Curve")
+ col.prop(edit, "use_duplicate_text", text="Text")
+ col.prop(edit, "use_duplicate_metaball", text="Metaball")
+ col.prop(edit, "use_duplicate_armature", text="Armature")
+ col.prop(edit, "use_duplicate_lamp", text="Lamp")
+ col.prop(edit, "use_duplicate_material", text="Material")
+ col.prop(edit, "use_duplicate_texture", text="Texture")
+ #col.prop(edit, "use_duplicate_fcurve", text="F-Curve")
+ col.prop(edit, "use_duplicate_action", text="Action")
+ col.prop(edit, "use_duplicate_particle", text="Particle")
class USERPREF_PT_system(bpy.types.Panel):
@@ -375,8 +369,8 @@ class USERPREF_PT_system(bpy.types.Panel):
col.prop(system, "dpi")
col.prop(system, "frame_server_port")
col.prop(system, "scrollback", text="Console Scrollback")
- col.prop(system, "auto_execute_scripts")
- col.prop(system, "tabs_as_spaces")
+ col.prop(system, "use_scripts_auto_execute")
+ col.prop(system, "use_tabs_as_spaces")
col.separator()
col.separator()
@@ -386,7 +380,7 @@ class USERPREF_PT_system(bpy.types.Panel):
col.row().prop(system, "audio_device", expand=True)
sub = col.column()
sub.active = system.audio_device != 'NONE'
- #sub.prop(system, "enable_all_codecs")
+ #sub.prop(system, "use_preview_images")
sub.prop(system, "audio_channels", text="Channels")
sub.prop(system, "audio_mixing_buffer", text="Mixing Buffer")
sub.prop(system, "audio_sample_rate", text="Sample Rate")
@@ -409,9 +403,9 @@ class USERPREF_PT_system(bpy.types.Panel):
# No translation in 2.5 yet
#col.prop(system, "language")
#col.label(text="Translate:")
- #col.prop(system, "translate_tooltips", text="Tooltips")
- #col.prop(system, "translate_buttons", text="Labels")
- #col.prop(system, "translate_toolbox", text="Toolbox")
+ #col.prop(system, "use_translate_tooltips", text="Tooltips")
+ #col.prop(system, "use_translate_buttons", text="Labels")
+ #col.prop(system, "use_translate_toolbox", text="Toolbox")
#col.separator()
@@ -424,9 +418,9 @@ class USERPREF_PT_system(bpy.types.Panel):
col = colsplit.column()
col.label(text="OpenGL:")
- col.prop(system, "clip_alpha", slider=True)
+ col.prop(system, "gl_clip_alpha", slider=True)
col.prop(system, "use_mipmaps")
- col.prop(system, "use_vbos")
+ col.prop(system, "use_vertex_buffer_objects")
#Anti-aliasing is disabled as it breaks broder/lasso select
#col.prop(system, "use_antialiasing")
col.label(text="Window Draw Method:")
@@ -682,13 +676,13 @@ class USERPREF_PT_file(bpy.types.Panel):
sub.label(text="Animation Player:")
sub = col1.column()
- sub.prop(paths, "fonts_directory", text="")
- sub.prop(paths, "textures_directory", text="")
+ sub.prop(paths, "font_directory", text="")
+ sub.prop(paths, "texture_directory", text="")
sub.prop(paths, "texture_plugin_directory", text="")
sub.prop(paths, "sequence_plugin_directory", text="")
sub.prop(paths, "render_output_directory", text="")
- sub.prop(paths, "python_scripts_directory", text="")
- sub.prop(paths, "sounds_directory", text="")
+ sub.prop(paths, "script_directory", text="")
+ sub.prop(paths, "sound_directory", text="")
sub.prop(paths, "temporary_directory", text="")
sub.prop(paths, "image_editor", text="")
subsplit = sub.split(percentage=0.3)
@@ -698,10 +692,10 @@ class USERPREF_PT_file(bpy.types.Panel):
col = split.column()
col.label(text="Save & Load:")
col.prop(paths, "use_relative_paths")
- col.prop(paths, "compress_file")
- col.prop(paths, "load_ui")
- col.prop(paths, "filter_file_extensions")
- col.prop(paths, "hide_dot_files_datablocks")
+ col.prop(paths, "use_file_compression")
+ col.prop(paths, "use_load_ui")
+ col.prop(paths, "use_filter_files")
+ col.prop(paths, "show_hidden_files_datablocks")
col.separator()
col.separator()
@@ -709,10 +703,10 @@ class USERPREF_PT_file(bpy.types.Panel):
col.label(text="Auto Save:")
col.prop(paths, "save_version")
col.prop(paths, "recent_files")
- col.prop(paths, "save_preview_images")
- col.prop(paths, "auto_save_temporary_files")
+ col.prop(paths, "use_save_preview_images")
+ col.prop(paths, "use_auto_save_temporary_files")
sub = col.column()
- sub.active = paths.auto_save_temporary_files
+ sub.active = paths.use_auto_save_temporary_files
sub.prop(paths, "auto_save_time", text="Timer (mins)")
from space_userpref_keymap import InputKeyMapPanel
@@ -742,38 +736,38 @@ class USERPREF_PT_input(InputKeyMapPanel):
sub.label(text="Mouse:")
sub1 = sub.column()
sub1.active = (inputs.select_mouse == 'RIGHT')
- sub1.prop(inputs, "emulate_3_button_mouse")
- sub.prop(inputs, "continuous_mouse")
+ sub1.prop(inputs, "use_mouse_emulate_3_button")
+ sub.prop(inputs, "use_mouse_continuous")
sub.label(text="Select With:")
sub.row().prop(inputs, "select_mouse", expand=True)
sub = col.column()
sub.label(text="Double Click:")
- sub.prop(inputs, "double_click_time", text="Speed")
+ sub.prop(inputs, "mouse_double_click_time", text="Speed")
sub.separator()
- sub.prop(inputs, "emulate_numpad")
+ sub.prop(inputs, "use_emulate_numpad")
sub.separator()
sub.label(text="Orbit Style:")
- sub.row().prop(inputs, "view_rotation", expand=True)
+ sub.row().prop(inputs, "view_rotate_method", expand=True)
sub.label(text="Zoom Style:")
- sub.row().prop(inputs, "zoom_style", text="")
- if inputs.zoom_style == 'DOLLY':
- sub.row().prop(inputs, "zoom_axis", expand=True)
- sub.prop(inputs, "invert_zoom_direction")
+ sub.row().prop(inputs, "view_zoom_method", text="")
+ if inputs.view_zoom_method == 'DOLLY':
+ sub.row().prop(inputs, "view_zoom_axis", expand=True)
+ sub.prop(inputs, "invert_mouse_wheel_zoom")
- #sub.prop(inputs, "use_middle_mouse_paste")
+ #sub.prop(inputs, "use_mouse_mmb_paste")
#col.separator()
sub = col.column()
sub.label(text="Mouse Wheel:")
- sub.prop(inputs, "wheel_invert_zoom", text="Invert Wheel Zoom Direction")
+ sub.prop(inputs, "invert_zoom_wheel", text="Invert Wheel Zoom Direction")
#sub.prop(view, "wheel_scroll_lines", text="Scroll Lines")
col.separator()
@@ -974,7 +968,7 @@ class USERPREF_PT_addons(bpy.types.Panel):
colsub = box.column()
row = colsub.row()
- row.operator("wm.addon_expand", icon='TRIA_DOWN' if info["expanded"] else 'TRIA_RIGHT', emboss=False).module = module_name
+ row.operator("wm.addon_expand", icon='TRIA_DOWN' if info["show_expanded"] else 'TRIA_RIGHT', emboss=False).module = module_name
rowsub = row.row()
rowsub.active = is_enabled
@@ -986,7 +980,7 @@ class USERPREF_PT_addons(bpy.types.Panel):
row.operator("wm.addon_enable", icon='CHECKBOX_DEHLT', text="", emboss=False).module = module_name
# Expanded UI (only if additional infos are available)
- if info["expanded"]:
+ if info["show_expanded"]:
if info["description"]:
split = colsub.row().split(percentage=0.15)
split.label(text='Description:')
@@ -1043,7 +1037,7 @@ class USERPREF_PT_addons(bpy.types.Panel):
from bpy.props import *
-def addon_info_get(mod, info_basis={"name": "", "author": "", "version": "", "blender": "", "location": "", "description": "", "wiki_url": "", "tracker_url": "", "category": "", "warning": "", "expanded": False}):
+def addon_info_get(mod, info_basis={"name": "", "author": "", "version": "", "blender": "", "location": "", "description": "", "wiki_url": "", "tracker_url": "", "category": "", "warning": "", "show_expanded": False}):
addon_info = getattr(mod, "bl_addon_info", {})
# avoid re-initializing
@@ -1212,7 +1206,7 @@ class WM_OT_addon_expand(bpy.types.Operator):
return {'CANCELLED'}
info = addon_info_get(mod)
- info["expanded"] = not info["expanded"]
+ info["show_expanded"] = not info["show_expanded"]
return {'FINISHED'}
diff --git a/release/scripts/ui/space_userpref_keymap.py b/release/scripts/ui/space_userpref_keymap.py
index 9a482b89652..f966f8a7e8b 100644
--- a/release/scripts/ui/space_userpref_keymap.py
+++ b/release/scripts/ui/space_userpref_keymap.py
@@ -19,8 +19,8 @@
# <pep8 compliant>
import bpy
import os
-import re
-import shutil
+
+KM_MOD_PREFIX = "keyconfig_"
KM_HIERARCHY = [
('Window', 'EMPTY', 'WINDOW', []), # file save, window change, exit
@@ -167,39 +167,39 @@ class InputKeyMapPanel(bpy.types.Panel):
col = self.indented_layout(layout, level)
row = col.row()
- row.prop(km, "children_expanded", text="", emboss=False)
+ row.prop(km, "show_expanded_children", text="", emboss=False)
row.label(text=km.name)
row.label()
row.label()
- if km.modal:
+ if km.is_modal:
row.label(text="", icon='LINKED')
- if km.user_defined:
+ if km.is_user_defined:
op = row.operator("wm.keymap_restore", text="Restore")
else:
op = row.operator("wm.keymap_edit", text="Edit")
- if km.children_expanded:
+ if km.show_expanded_children:
if children:
# Put the Parent key map's entries in a 'global' sub-category
# equal in hierarchy to the other children categories
subcol = self.indented_layout(col, level + 1)
subrow = subcol.row()
- subrow.prop(km, "items_expanded", text="", emboss=False)
+ subrow.prop(km, "show_expanded_items", text="", emboss=False)
subrow.label(text="%s (Global)" % km.name)
else:
- km.items_expanded = True
+ km.show_expanded_items = True
# Key Map items
- if km.items_expanded:
+ if km.show_expanded_items:
for kmi in km.items:
self.draw_kmi(display_keymaps, kc, km, kmi, col, level + 1)
# "Add New" at end of keymap item list
col = self.indented_layout(col, level + 1)
subcol = col.split(percentage=0.2).column()
- subcol.enabled = km.user_defined
+ subcol.enabled = km.is_user_defined
op = subcol.operator("wm.keyitem_add", text="Add New", icon='ZOOMIN')
col.separator()
@@ -217,7 +217,7 @@ class InputKeyMapPanel(bpy.types.Panel):
col = self.indented_layout(layout, level)
- if km.user_defined:
+ if km.is_user_defined:
col = col.column(align=True)
box = col.box()
else:
@@ -227,19 +227,19 @@ class InputKeyMapPanel(bpy.types.Panel):
# header bar
row = split.row()
- row.prop(kmi, "expanded", text="", emboss=False)
+ row.prop(kmi, "show_expanded", text="", emboss=False)
row = split.row()
- row.enabled = km.user_defined
+ row.enabled = km.is_user_defined
row.prop(kmi, "active", text="", emboss=False)
- if km.modal:
+ if km.is_modal:
row.prop(kmi, "propvalue", text="")
else:
row.label(text=kmi.name)
row = split.row()
- row.enabled = km.user_defined
+ row.enabled = km.is_user_defined
row.prop(kmi, "map_type", text="")
if map_type == 'KEYBOARD':
row.prop(kmi, "type", text="", full_event=True)
@@ -261,16 +261,16 @@ class InputKeyMapPanel(bpy.types.Panel):
op.item_id = kmi.id
# Expanded, additional event settings
- if kmi.expanded:
+ if kmi.show_expanded:
box = col.box()
- box.enabled = km.user_defined
+ box.enabled = km.is_user_defined
if map_type not in ('TEXTINPUT', 'TIMER'):
split = box.split(percentage=0.4)
sub = split.row()
- if km.modal:
+ if km.is_modal:
sub.prop(kmi, "propvalue", text="")
else:
sub.prop(kmi, "idname", text="")
@@ -299,9 +299,8 @@ class InputKeyMapPanel(bpy.types.Panel):
if title:
box.label(text=title)
flow = box.column_flow(columns=2)
- for pname in dir(properties):
+ for pname, value in properties.items():
if not properties.is_property_hidden(pname):
- value = eval("properties." + pname)
if isinstance(value, bpy.types.OperatorProperties):
display_properties(value, title=pname)
else:
@@ -313,7 +312,7 @@ class InputKeyMapPanel(bpy.types.Panel):
display_properties(props)
# Modal key maps attached to this operator
- if not km.modal:
+ if not km.is_modal:
kmm = kc.find_keymap_modal(kmi.idname)
if kmm:
self.draw_km(display_keymaps, kc, kmm, None, layout, level + 1)
@@ -335,7 +334,7 @@ class InputKeyMapPanel(bpy.types.Panel):
row.label()
row.label()
- if km.user_defined:
+ if km.is_user_defined:
op = row.operator("wm.keymap_restore", text="Restore")
else:
op = row.operator("wm.keymap_edit", text="Edit")
@@ -346,7 +345,7 @@ class InputKeyMapPanel(bpy.types.Panel):
# "Add New" at end of keymap item list
col = self.indented_layout(layout, 1)
subcol = col.split(percentage=0.2).column()
- subcol.enabled = km.user_defined
+ subcol.enabled = km.is_user_defined
op = subcol.operator("wm.keyitem_add", text="Add New", icon='ZOOMIN')
def draw_hierarchy(self, display_keymaps, layout):
@@ -369,13 +368,13 @@ class InputKeyMapPanel(bpy.types.Panel):
layout.set_context_pointer("keyconfig", wm.active_keyconfig)
row.operator("wm.keyconfig_remove", text="", icon='X')
- row.prop(context.space_data, "filter", icon="VIEWZOOM")
+ row.prop(context.space_data, "filter_text", icon="VIEWZOOM")
col.separator()
display_keymaps = _merge_keymaps(kc, defkc)
- if context.space_data.filter != "":
- filter = context.space_data.filter.lower()
+ if context.space_data.filter_text != "":
+ filter_text = context.space_data.filter_text.lower()
self.draw_filtered(display_keymaps, filter, col)
else:
self.draw_hierarchy(display_keymaps, col)
@@ -384,6 +383,21 @@ class InputKeyMapPanel(bpy.types.Panel):
from bpy.props import *
+def export_properties(prefix, properties, lines=None):
+ if lines is None:
+ lines = []
+
+ for value, pname in properties.items():
+ if not properties.is_property_hidden(pname):
+ if isinstance(value, bpy.types.OperatorProperties):
+ export_properties(prefix + "." + pname, value, lines)
+ elif properties.is_property_set(pname):
+ value = _string_value(value)
+ if value != "":
+ lines.append("%s.%s = %s\n" % (prefix, pname, value))
+ return lines
+
+
class WM_OT_keyconfig_test(bpy.types.Operator):
"Test keyconfig for conflicts"
bl_idname = "wm.keyconfig_test"
@@ -393,7 +407,7 @@ class WM_OT_keyconfig_test(bpy.types.Operator):
result = False
def kmistr(kmi):
- if km.modal:
+ if km.is_modal:
s = ["kmi = km.items.add_modal(\'%s\', \'%s\', \'%s\'" % (kmi.propvalue, kmi.type, kmi.value)]
else:
s = ["kmi = km.items.add(\'%s\', \'%s\', \'%s\'" % (kmi.idname, kmi.type, kmi.value)]
@@ -414,21 +428,10 @@ class WM_OT_keyconfig_test(bpy.types.Operator):
s.append(")\n")
- def export_properties(prefix, properties):
- for pname in dir(properties):
- if not properties.is_property_hidden(pname):
- value = eval("properties.%s" % pname)
- if isinstance(value, bpy.types.OperatorProperties):
- export_properties(prefix + "." + pname, value)
- elif properties.is_property_set(pname):
- value = _string_value(value)
- if value != "":
- s.append(prefix + ".%s = %s\n" % (pname, value))
-
props = kmi.properties
if props is not None:
- export_properties("kmi.properties", props)
+ export_properties("kmi.properties", props, s)
return "".join(s).strip()
@@ -508,7 +511,7 @@ class WM_OT_keyconfig_import(bpy.types.Operator):
bl_idname = "wm.keyconfig_import"
bl_label = "Import Key Configuration..."
- filepath = StringProperty(name="File Path", description="Filepath to write file to")
+ filepath = StringProperty(name="File Path", description="Filepath to write file to", default="keymap.py")
filter_folder = BoolProperty(name="Filter folders", description="", default=True, options={'HIDDEN'})
filter_text = BoolProperty(name="Filter text", description="", default=True, options={'HIDDEN'})
filter_python = BoolProperty(name="Filter python", description="", default=True, options={'HIDDEN'})
@@ -516,25 +519,26 @@ class WM_OT_keyconfig_import(bpy.types.Operator):
keep_original = BoolProperty(name="Keep original", description="Keep original file after copying to configuration folder", default=True)
def execute(self, context):
- if not self.properties.filepath:
+ import shutil
+ if not self.properties.is_property_set("filepath"):
raise Exception("Filepath not set")
f = open(self.properties.filepath, "r")
if not f:
raise Exception("Could not open file")
- name_pattern = re.compile("^kc = wm.add_keyconfig\('(.*)'\)$")
+ config_name = None
+ for line in f:
+ if line.startswith("kc = wm.add_keyconfig("):
+ config_name = line[23:-3]
+ break
- for line in f.readlines():
- match = name_pattern.match(line)
+ if config_name is None:
+ raise Exception("config name not found")
- if match:
- config_name = match.groups()[0]
-
- f.close()
-
- path = os.path.split(os.path.split(__file__)[0])[0] # remove ui/space_userpref.py
- path = os.path.join(path, "cfg")
+ path = os.path.join(__file__, "..", "..", "cfg") # remove ui/space_userpref.py
+ path = os.path.normpath(path)
+ print(path)
# create config folder if needed
if not os.path.exists(path):
@@ -547,7 +551,16 @@ class WM_OT_keyconfig_import(bpy.types.Operator):
else:
shutil.move(self.properties.filepath, path)
- exec("import " + config_name)
+ # sneaky way to check we're actually running the code.
+ wm = context.manager
+ while config_name in wm.keyconfigs:
+ wm.remove_keyconfig(wm.keyconfigs[config_name])
+
+ wm = context.manager
+ totmap = len(wm.keyconfigs)
+ mod = __import__(config_name)
+ if totmap == len(wm.keyconfigs):
+ reload(mod)
wm = bpy.context.manager
wm.active_keyconfig = wm.keyconfigs[config_name]
@@ -567,14 +580,14 @@ class WM_OT_keyconfig_export(bpy.types.Operator):
bl_idname = "wm.keyconfig_export"
bl_label = "Export Key Configuration..."
- filepath = StringProperty(name="File Path", description="Filepath to write file to")
+ filepath = StringProperty(name="File Path", description="Filepath to write file to", default="keymap.py")
filter_folder = BoolProperty(name="Filter folders", description="", default=True, options={'HIDDEN'})
filter_text = BoolProperty(name="Filter text", description="", default=True, options={'HIDDEN'})
filter_python = BoolProperty(name="Filter python", description="", default=True, options={'HIDDEN'})
kc_name = StringProperty(name="KeyConfig Name", description="Name to save the key config as")
def execute(self, context):
- if not self.properties.filepath:
+ if not self.properties.is_property_set("filepath"):
raise Exception("Filepath not set")
f = open(self.properties.filepath, "w")
@@ -621,9 +634,9 @@ class WM_OT_keyconfig_export(bpy.types.Operator):
km = km.active()
f.write("# Map %s\n" % km.name)
- f.write("km = kc.add_keymap('%s', space_type='%s', region_type='%s', modal=%s)\n\n" % (km.name, km.space_type, km.region_type, km.modal))
+ f.write("km = kc.add_keymap('%s', space_type='%s', region_type='%s', modal=%s)\n\n" % (km.name, km.space_type, km.region_type, km.is_modal))
for kmi in km.items:
- if km.modal:
+ if km.is_modal:
f.write("kmi = km.items.add_modal('%s', '%s', '%s'" % (kmi.propvalue, kmi.type, kmi.value))
else:
f.write("kmi = km.items.add('%s', '%s', '%s'" % (kmi.idname, kmi.type, kmi.value))
@@ -642,21 +655,10 @@ class WM_OT_keyconfig_export(bpy.types.Operator):
f.write(", key_modifier='%s'" % kmi.key_modifier)
f.write(")\n")
- def export_properties(prefix, properties):
- for pname in dir(properties):
- if not properties.is_property_hidden(pname):
- value = eval("properties.%s" % pname)
- if isinstance(value, bpy.types.OperatorProperties):
- export_properties(prefix + "." + pname, value)
- elif properties.is_property_set(pname):
- value = _string_value(value)
- if value != "":
- f.write(prefix + ".%s = %s\n" % (pname, value))
-
props = kmi.properties
if props is not None:
- export_properties("kmi.properties", props)
+ f.write("".join(export_properties("kmi.properties", props)))
f.write("\n")
@@ -729,16 +731,16 @@ class WM_OT_keyitem_add(bpy.types.Operator):
km = context.keymap
kc = wm.default_keyconfig
- if km.modal:
+ if km.is_modal:
km.items.add_modal("", 'A', 'PRESS') # kmi
else:
km.items.add("none", 'A', 'PRESS') # kmi
# clear filter and expand keymap so we can see the newly added item
- if context.space_data.filter != '':
- context.space_data.filter = ''
- km.items_expanded = True
- km.children_expanded = True
+ if context.space_data.filter_text != "":
+ context.space_data.filter_text = ""
+ km.show_expanded_items = True
+ km.show_expanded_children = True
return {'FINISHED'}
@@ -766,21 +768,25 @@ class WM_OT_keyconfig_remove(bpy.types.Operator):
@classmethod
def poll(cls, context):
wm = context.manager
- return wm.active_keyconfig.user_defined
+ return wm.active_keyconfig.is_user_defined
def execute(self, context):
+ import sys
wm = context.manager
keyconfig = wm.active_keyconfig
- module = __import__(keyconfig.name)
+ module = sys.modules.get(keyconfig.name)
- os.remove(module.__file__)
+ if module:
+ path = module.__file__
+ if os.path.exists(path):
+ os.remove(path)
- compiled_path = module.__file__ + "c" # for .pyc
+ path = module.__file__ + "c" # for .pyc
- if os.path.exists(compiled_path):
- os.remove(compiled_path)
+ if os.path.exists(path):
+ os.remove(path)
wm.remove_keyconfig(keyconfig)
return {'FINISHED'}
diff --git a/release/scripts/ui/space_view3d.py b/release/scripts/ui/space_view3d.py
index 83fac63a6c1..98414a9b6e2 100644
--- a/release/scripts/ui/space_view3d.py
+++ b/release/scripts/ui/space_view3d.py
@@ -60,44 +60,44 @@ class VIEW3D_HT_header(bpy.types.Header):
'''
if obj and obj.mode == 'EDIT' and obj.type == 'MESH':
row_sub = row.row(align=True)
- row_sub.prop(toolsettings, "mesh_selection_mode", text="", index=0, icon='VERTEXSEL')
- row_sub.prop(toolsettings, "mesh_selection_mode", text="", index=1, icon='EDGESEL')
- row_sub.prop(toolsettings, "mesh_selection_mode", text="", index=2, icon='FACESEL')
+ row_sub.prop(toolsettings, "mesh_select_mode", text="", index=0, icon='VERTEXSEL')
+ row_sub.prop(toolsettings, "mesh_select_mode", text="", index=1, icon='EDGESEL')
+ row_sub.prop(toolsettings, "mesh_select_mode", text="", index=2, icon='FACESEL')
'''
if obj:
# Particle edit
if obj.mode == 'PARTICLE_EDIT':
- row.prop(toolsettings.particle_edit, "selection_mode", text="", expand=True, toggle=True)
+ row.prop(toolsettings.particle_edit, "select_mode", text="", expand=True, toggle=True)
# Occlude geometry
- if view.viewport_shading in ('SOLID', 'SHADED', 'TEXTURED') and (obj.mode == 'PARTICLE_EDIT' or (obj.mode == 'EDIT' and obj.type == 'MESH')):
- row.prop(view, "occlude_geometry", text="")
+ if view.viewport_shade in ('SOLID', 'SHADED', 'TEXTURED') and (obj.mode == 'PARTICLE_EDIT' or (obj.mode == 'EDIT' and obj.type == 'MESH')):
+ row.prop(view, "use_occlude_geometry", text="")
# Proportional editing
if obj.mode in ('EDIT', 'PARTICLE_EDIT'):
row = layout.row(align=True)
- row.prop(toolsettings, "proportional_editing", text="", icon_only=True)
- if toolsettings.proportional_editing != 'DISABLED':
- row.prop(toolsettings, "proportional_editing_falloff", text="", icon_only=True)
+ row.prop(toolsettings, "proportional_edit", text="", icon_only=True)
+ if toolsettings.proportional_edit != 'DISABLED':
+ row.prop(toolsettings, "proportional_edit_falloff", text="", icon_only=True)
elif obj.mode == 'OBJECT':
row = layout.row(align=True)
- row.prop(toolsettings, "proportional_editing_objects", text="", icon_only=True)
- if toolsettings.proportional_editing_objects:
- row.prop(toolsettings, "proportional_editing_falloff", text="", icon_only=True)
+ row.prop(toolsettings, "use_proportional_edit_objects", text="", icon_only=True)
+ if toolsettings.use_proportional_edit_objects:
+ row.prop(toolsettings, "proportional_edit_falloff", text="", icon_only=True)
# Snap
row = layout.row(align=True)
- row.prop(toolsettings, "snap", text="")
+ row.prop(toolsettings, "use_snap", text="")
row.prop(toolsettings, "snap_element", text="", icon_only=True)
if toolsettings.snap_element != 'INCREMENT':
row.prop(toolsettings, "snap_target", text="")
if obj and obj.mode == 'OBJECT':
- row.prop(toolsettings, "snap_align_rotation", text="")
+ row.prop(toolsettings, "use_snap_align_rotation", text="")
if toolsettings.snap_element == 'VOLUME':
- row.prop(toolsettings, "snap_peel_object", text="")
+ row.prop(toolsettings, "use_snap_peel_object", text="")
elif toolsettings.snap_element == 'FACE':
- row.prop(toolsettings, "snap_project", text="")
+ row.prop(toolsettings, "use_snap_project", text="")
# OpenGL render
row = layout.row(align=True)
@@ -489,7 +489,7 @@ class VIEW3D_MT_select_edit_mesh(bpy.types.Menu):
layout.operator("mesh.select_by_number_vertices", text="Triangles").type = 'TRIANGLES'
layout.operator("mesh.select_by_number_vertices", text="Quads").type = 'QUADS'
- if context.scene.tool_settings.mesh_selection_mode[2] == False:
+ if context.scene.tool_settings.mesh_select_mode[2] == False:
layout.operator("mesh.select_non_manifold", text="Non Manifold")
layout.operator("mesh.select_by_number_vertices", text="Loose Verts/Edges").type = 'OTHER'
layout.operator("mesh.select_similar", text="Similar")
@@ -748,7 +748,7 @@ class VIEW3D_MT_object_specials(bpy.types.Menu):
props = layout.operator("wm.context_modal_mouse", text="Width Size")
props.data_path_iter = "selected_editable_objects"
- props.data_path_item = "data.width"
+ props.data_path_item = "data.offset"
props.input_scale = 0.01
if obj.type == 'EMPTY':
@@ -1016,9 +1016,10 @@ class VIEW3D_MT_sculpt(bpy.types.Menu):
layout.operator("sculpt.area_hide", text="Hide Interior Area").hide_inside = True
layout.separator()
- layout.prop(sculpt, "symmetry_x")
- layout.prop(sculpt, "symmetry_y")
- layout.prop(sculpt, "symmetry_z")
+ layout.prop(sculpt, "use_symmetry_x")
+ layout.prop(sculpt, "use_symmetry_y")
+ layout.prop(sculpt, "use_symmetry_z")
+
layout.separator()
layout.prop(sculpt, "lock_x")
layout.prop(sculpt, "lock_y")
@@ -1043,7 +1044,7 @@ class VIEW3D_MT_sculpt(bpy.types.Menu):
layout.operator("sculpt.set_persistent_base")
layout.separator()
- layout.prop(sculpt, "use_openmp", text="Threaded Sculpt")
+ layout.prop(sculpt, "use_threaded", text="Threaded Sculpt")
layout.prop(sculpt, "show_brush")
# TODO, make availabel from paint menu!
@@ -1068,7 +1069,7 @@ class VIEW3D_MT_particle(bpy.types.Menu):
layout.operator("particle.remove_doubles")
layout.operator("particle.delete")
- if particle_edit.selection_mode == 'POINT':
+ if particle_edit.select_mode == 'POINT':
layout.operator("particle.subdivide")
layout.operator("particle.rekey")
@@ -1089,7 +1090,7 @@ class VIEW3D_MT_particle_specials(bpy.types.Menu):
layout.operator("particle.rekey")
layout.separator()
- if particle_edit.selection_mode == 'POINT':
+ if particle_edit.select_mode == 'POINT':
layout.operator("particle.subdivide")
layout.operator("particle.select_roots")
layout.operator("particle.select_tips")
@@ -1113,7 +1114,7 @@ class VIEW3D_MT_pose(bpy.types.Menu):
layout.menu("VIEW3D_MT_transform")
layout.menu("VIEW3D_MT_snap")
- if arm.drawtype in ('BBONE', 'ENVELOPE'):
+ if arm.draw_type in ('BBONE', 'ENVELOPE'):
layout.operator("transform.transform", text="Scale Envelope Distance").mode = 'BONESIZE'
layout.menu("VIEW3D_MT_pose_transform")
@@ -1301,9 +1302,9 @@ class VIEW3D_MT_edit_mesh(bpy.types.Menu):
layout.separator()
- layout.prop(settings, "automerge_editing")
- layout.prop_menu_enum(settings, "proportional_editing")
- layout.prop_menu_enum(settings, "proportional_editing_falloff")
+ layout.prop(settings, "use_mesh_automerge")
+ layout.prop_menu_enum(settings, "proportional_edit")
+ layout.prop_menu_enum(settings, "proportional_edit_falloff")
layout.separator()
@@ -1345,15 +1346,15 @@ class VIEW3D_MT_edit_mesh_selection_mode(bpy.types.Menu):
prop = layout.operator("wm.context_set_value", text="Vertex", icon='VERTEXSEL')
prop.value = "(True, False, False)"
- prop.data_path = "tool_settings.mesh_selection_mode"
+ prop.data_path = "tool_settings.mesh_select_mode"
prop = layout.operator("wm.context_set_value", text="Edge", icon='EDGESEL')
prop.value = "(False, True, False)"
- prop.data_path = "tool_settings.mesh_selection_mode"
+ prop.data_path = "tool_settings.mesh_select_mode"
prop = layout.operator("wm.context_set_value", text="Face", icon='FACESEL')
prop.value = "(False, False, True)"
- prop.data_path = "tool_settings.mesh_selection_mode"
+ prop.data_path = "tool_settings.mesh_select_mode"
class VIEW3D_MT_edit_mesh_extrude(bpy.types.Menu):
@@ -1362,7 +1363,7 @@ class VIEW3D_MT_edit_mesh_extrude(bpy.types.Menu):
@staticmethod
def extrude_options(context):
mesh = context.object.data
- selection_mode = context.tool_settings.mesh_selection_mode
+ selection_mode = context.tool_settings.mesh_select_mode
totface = mesh.total_face_sel
totedge = mesh.total_edge_sel
@@ -1444,7 +1445,7 @@ class VIEW3D_OT_edit_mesh_extrude_individual_move(bpy.types.Operator):
def execute(self, context):
mesh = context.object.data
- selection_mode = context.tool_settings.mesh_selection_mode
+ selection_mode = context.tool_settings.mesh_select_mode
totface = mesh.total_face_sel
totedge = mesh.total_edge_sel
@@ -1645,8 +1646,8 @@ def draw_curve(self, context):
layout.separator()
- layout.prop_menu_enum(settings, "proportional_editing")
- layout.prop_menu_enum(settings, "proportional_editing_falloff")
+ layout.prop_menu_enum(settings, "proportional_edit")
+ layout.prop_menu_enum(settings, "proportional_edit_falloff")
layout.separator()
@@ -1793,8 +1794,8 @@ class VIEW3D_MT_edit_meta(bpy.types.Menu):
layout.separator()
- layout.prop_menu_enum(settings, "proportional_editing")
- layout.prop_menu_enum(settings, "proportional_editing_falloff")
+ layout.prop_menu_enum(settings, "proportional_edit")
+ layout.prop_menu_enum(settings, "proportional_edit_falloff")
layout.separator()
@@ -1830,8 +1831,8 @@ class VIEW3D_MT_edit_lattice(bpy.types.Menu):
layout.separator()
- layout.prop_menu_enum(settings, "proportional_editing")
- layout.prop_menu_enum(settings, "proportional_editing_falloff")
+ layout.prop_menu_enum(settings, "proportional_edit")
+ layout.prop_menu_enum(settings, "proportional_edit_falloff")
class VIEW3D_MT_edit_armature(bpy.types.Menu):
@@ -1848,7 +1849,7 @@ class VIEW3D_MT_edit_armature(bpy.types.Menu):
layout.menu("VIEW3D_MT_snap")
layout.menu("VIEW3D_MT_edit_armature_roll")
- if arm.drawtype == 'ENVELOPE':
+ if arm.draw_type == 'ENVELOPE':
layout.operator("transform.transform", text="Scale Envelope Distance").mode = 'BONESIZE'
else:
layout.operator("transform.transform", text="Scale B-Bone Width").mode = 'BONESIZE'
@@ -1857,7 +1858,7 @@ class VIEW3D_MT_edit_armature(bpy.types.Menu):
layout.operator("armature.extrude_move")
- if arm.x_axis_mirror:
+ if arm.use_mirror_x:
layout.operator("armature.extrude_forked")
layout.operator("armature.duplicate_move")
@@ -2017,34 +2018,34 @@ class VIEW3D_PT_view3d_display(bpy.types.Panel):
layout = self.layout
view = context.space_data
- gs = context.scene.game_data
+ gs = context.scene.game_settings
ob = context.object
col = layout.column()
- col.prop(view, "display_render_override")
+ col.prop(view, "show_only_render")
col = layout.column()
- display_all = not view.display_render_override
+ display_all = not view.show_only_render
col.active = display_all
- col.prop(view, "outline_selected")
- col.prop(view, "all_object_origins")
- col.prop(view, "relationship_lines")
+ col.prop(view, "show_outline_selected")
+ col.prop(view, "show_all_objects_origin")
+ col.prop(view, "show_relationship_lines")
if ob and ob.type == 'MESH':
mesh = ob.data
- col.prop(mesh, "all_edges")
+ col.prop(mesh, "show_all_edges")
col = layout.column()
col.active = display_all
split = col.split(percentage=0.55)
- split.prop(view, "display_floor", text="Grid Floor")
+ split.prop(view, "show_floor", text="Grid Floor")
row = split.row(align=True)
- row.prop(view, "display_x_axis", text="X", toggle=True)
- row.prop(view, "display_y_axis", text="Y", toggle=True)
- row.prop(view, "display_z_axis", text="Z", toggle=True)
+ row.prop(view, "show_axis_x", text="X", toggle=True)
+ row.prop(view, "show_axis_y", text="Y", toggle=True)
+ row.prop(view, "show_axis_z", text="Z", toggle=True)
sub = col.column(align=True)
- sub.active = (display_all and view.display_floor)
+ sub.active = (display_all and view.show_floor)
sub.prop(view, "grid_lines", text="Lines")
sub.prop(view, "grid_spacing", text="Spacing")
sub.prop(view, "grid_subdivisions", text="Subdivisions")
@@ -2052,7 +2053,7 @@ class VIEW3D_PT_view3d_display(bpy.types.Panel):
col = layout.column()
col.label(text="Shading:")
col.prop(gs, "material_mode", text="")
- col.prop(view, "textured_solid")
+ col.prop(view, "show_textured_solid")
layout.separator()
@@ -2065,10 +2066,10 @@ class VIEW3D_PT_view3d_display(bpy.types.Panel):
col.prop(region, "lock_rotation")
row = col.row()
row.enabled = region.lock_rotation
- row.prop(region, "box_preview")
+ row.prop(region, "show_sync_view")
row = col.row()
- row.enabled = region.lock_rotation and region.box_preview
- row.prop(region, "box_clip")
+ row.enabled = region.lock_rotation and region.show_sync_view
+ row.prop(region, "use_box_clip")
class VIEW3D_PT_view3d_meshdisplay(bpy.types.Panel):
@@ -2088,24 +2089,24 @@ class VIEW3D_PT_view3d_meshdisplay(bpy.types.Panel):
col = layout.column()
col.label(text="Overlays:")
- col.prop(mesh, "draw_edges", text="Edges")
- col.prop(mesh, "draw_faces", text="Faces")
- col.prop(mesh, "draw_creases", text="Creases")
- col.prop(mesh, "draw_bevel_weights", text="Bevel Weights")
- col.prop(mesh, "draw_seams", text="Seams")
- col.prop(mesh, "draw_sharp", text="Sharp")
+ col.prop(mesh, "show_edges", text="Edges")
+ col.prop(mesh, "show_faces", text="Faces")
+ col.prop(mesh, "show_edge_crease", text="Creases")
+ col.prop(mesh, "show_edge_bevel_weight", text="Bevel Weights")
+ col.prop(mesh, "show_edge_seams", text="Seams")
+ col.prop(mesh, "show_edge_sharp", text="Sharp")
col.separator()
col.label(text="Normals:")
- col.prop(mesh, "draw_normals", text="Face")
- col.prop(mesh, "draw_vertex_normals", text="Vertex")
+ col.prop(mesh, "show_normal_face", text="Face")
+ col.prop(mesh, "show_normal_vertex", text="Vertex")
col.prop(context.scene.tool_settings, "normal_size", text="Normal Size")
col.separator()
col.label(text="Numerics:")
- col.prop(mesh, "draw_edge_length")
- col.prop(mesh, "draw_edge_angle")
- col.prop(mesh, "draw_face_area")
+ col.prop(mesh, "show_extra_edge_length")
+ col.prop(mesh, "show_extra_edge_angle")
+ col.prop(mesh, "show_extra_face_area")
class VIEW3D_PT_view3d_curvedisplay(bpy.types.Panel):
@@ -2125,8 +2126,8 @@ class VIEW3D_PT_view3d_curvedisplay(bpy.types.Panel):
col = layout.column()
col.label(text="Overlays:")
- col.prop(curve, "draw_handles", text="Handles")
- col.prop(curve, "draw_normals", text="Normals")
+ col.prop(curve, "show_handles", text="Handles")
+ col.prop(curve, "show_normal_face", text="Normals")
col.prop(context.scene.tool_settings, "normal_size", text="Normal Size")
@@ -2146,7 +2147,7 @@ class VIEW3D_PT_background_image(bpy.types.Panel):
layout = self.layout
view = context.space_data
- layout.prop(view, "display_background_images", text="")
+ layout.prop(view, "show_background_images", text="")
def draw(self, context):
layout = self.layout
@@ -2157,7 +2158,7 @@ class VIEW3D_PT_background_image(bpy.types.Panel):
col.operator("view3d.add_background_image", text="Add Image")
for i, bg in enumerate(view.background_images):
- layout.active = view.display_background_images
+ layout.active = view.show_background_images
box = layout.box()
row = box.row(align=True)
row.prop(bg, "show_expanded", text="", emboss=False)
@@ -2172,7 +2173,7 @@ class VIEW3D_PT_background_image(bpy.types.Panel):
if (bg.image):
box.template_image(bg, "image", bg.image_user, compact=True)
- box.prop(bg, "transparency", slider=True)
+ box.prop(bg, "use_transparency", slider=True)
if bg.view_axis != 'CAMERA':
box.prop(bg, "size")
row = box.row(align=True)
@@ -2224,7 +2225,7 @@ class VIEW3D_PT_etch_a_ton(bpy.types.Panel):
layout = self.layout
toolsettings = context.scene.tool_settings
- layout.prop(toolsettings, "bone_sketching", text="")
+ layout.prop(toolsettings, "use_bone_sketching", text="")
def draw(self, context):
layout = self.layout
@@ -2232,8 +2233,8 @@ class VIEW3D_PT_etch_a_ton(bpy.types.Panel):
col = layout.column()
- col.prop(toolsettings, "etch_quick")
- col.prop(toolsettings, "etch_overdraw")
+ col.prop(toolsettings, "use_etch_quick")
+ col.prop(toolsettings, "use_etch_overdraw")
col.prop(toolsettings, "etch_convert_mode")
@@ -2246,7 +2247,7 @@ class VIEW3D_PT_etch_a_ton(bpy.types.Panel):
elif toolsettings.etch_convert_mode == 'RETARGET':
col.prop(toolsettings, "etch_template")
col.prop(toolsettings, "etch_roll_mode")
- col.prop(toolsettings, "etch_autoname")
+ col.prop(toolsettings, "use_etch_autoname")
col.prop(toolsettings, "etch_number")
col.prop(toolsettings, "etch_side")
col.operator("sketch.convert", text="Convert")
diff --git a/release/scripts/ui/space_view3d_toolbar.py b/release/scripts/ui/space_view3d_toolbar.py
index 05284d30d73..1160b8d03b7 100644
--- a/release/scripts/ui/space_view3d_toolbar.py
+++ b/release/scripts/ui/space_view3d_toolbar.py
@@ -339,7 +339,7 @@ class VIEW3D_PT_tools_armatureedit_options(View3DPanel, bpy.types.Panel):
arm = context.active_object.data
col = layout.column(align=True)
- col.prop(arm, "x_axis_mirror")
+ col.prop(arm, "use_mirror_x")
# ********** default tools for editmode_mball ****************
@@ -462,8 +462,8 @@ class VIEW3D_PT_tools_posemode_options(View3DPanel, bpy.types.Panel):
arm = context.active_object.data
col = layout.column(align=True)
- col.prop(arm, "x_axis_mirror")
- col.prop(arm, "auto_ik")
+ col.prop(arm, "use_mirror_x")
+ col.prop(arm, "use_auto_ik")
# ********** default tools for paint modes ****************
@@ -556,11 +556,11 @@ class VIEW3D_PT_tools_brush(PaintPanel, bpy.types.Panel):
if settings.tool == 'ADD':
col.prop(brush, "count")
col = layout.column()
- col.prop(settings, "add_interpolate")
+ col.prop(settings, "use_default_interpolate")
sub = col.column(align=True)
- sub.active = settings.add_interpolate
+ sub.active = settings.use_default_interpolate
sub.prop(brush, "steps", slider=True)
- sub.prop(settings, "add_keys", slider=True)
+ sub.prop(settings, "default_key_count", slider=True)
elif settings.tool == 'LENGTH':
layout.prop(brush, "length_mode", expand=True)
elif settings.tool == 'PUFF':
@@ -585,7 +585,7 @@ class VIEW3D_PT_tools_brush(PaintPanel, bpy.types.Panel):
row.prop(brush, "use_locked_size", toggle=True, text="", icon='UNLOCKED')
row.prop(brush, "size", text="Radius", slider=True)
- row.prop(brush, "use_size_pressure", toggle=True, text="")
+ row.prop(brush, "use_pressure_size", toggle=True, text="")
if brush.sculpt_tool not in ('SNAKE_HOOK', 'GRAB', 'ROTATE'):
@@ -600,7 +600,7 @@ class VIEW3D_PT_tools_brush(PaintPanel, bpy.types.Panel):
row.prop(brush, "use_space_atten", toggle=True, text="", icon='UNLOCKED')
row.prop(brush, "strength", text="Strength", slider=True)
- row.prop(brush, "use_strength_pressure", text="")
+ row.prop(brush, "use_pressure_strength", text="")
@@ -608,7 +608,7 @@ class VIEW3D_PT_tools_brush(PaintPanel, bpy.types.Panel):
col.separator()
row = col.row(align=True)
- row.prop(brush, "autosmooth_factor", slider=True)
+ row.prop(brush, "auto_smooth_factor", slider=True)
row.prop(brush, "use_inverse_smooth_pressure", toggle=True, text="")
@@ -692,15 +692,15 @@ class VIEW3D_PT_tools_brush(PaintPanel, bpy.types.Panel):
row = col.row(align=True)
row.prop(brush, "size", text="Radius", slider=True)
- row.prop(brush, "use_size_pressure", toggle=True, text="")
+ row.prop(brush, "use_pressure_size", toggle=True, text="")
row = col.row(align=True)
row.prop(brush, "strength", text="Strength", slider=True)
- row.prop(brush, "use_strength_pressure", toggle=True, text="")
+ row.prop(brush, "use_pressure_strength", toggle=True, text="")
row = col.row(align=True)
row.prop(brush, "jitter", slider=True)
- row.prop(brush, "use_jitter_pressure", toggle=True, text="")
+ row.prop(brush, "use_pressure_jitter", toggle=True, text="")
col.prop(brush, "blend", text="Blend")
@@ -713,21 +713,21 @@ class VIEW3D_PT_tools_brush(PaintPanel, bpy.types.Panel):
elif context.weight_paint_object and brush:
layout.prop(context.tool_settings, "vertex_group_weight", text="Weight", slider=True)
- layout.prop(context.tool_settings, "auto_normalize", text="Auto Normalize")
+ layout.prop(context.tool_settings, "use_auto_normalize", text="Auto Normalize")
col = layout.column()
row = col.row(align=True)
row.prop(brush, "size", text="Radius", slider=True)
- row.prop(brush, "use_size_pressure", toggle=True, text="")
+ row.prop(brush, "use_pressure_size", toggle=True, text="")
row = col.row(align=True)
row.prop(brush, "strength", text="Strength", slider=True)
- row.prop(brush, "use_strength_pressure", toggle=True, text="")
+ row.prop(brush, "use_pressure_strength", toggle=True, text="")
row = col.row(align=True)
row.prop(brush, "jitter", slider=True)
- row.prop(brush, "use_jitter_pressure", toggle=True, text="")
+ row.prop(brush, "use_pressure_jitter", toggle=True, text="")
# Vertex Paint Mode #
@@ -738,16 +738,21 @@ class VIEW3D_PT_tools_brush(PaintPanel, bpy.types.Panel):
row = col.row(align=True)
row.prop(brush, "size", text="Radius", slider=True)
- row.prop(brush, "use_size_pressure", toggle=True, text="")
+ row.prop(brush, "use_pressure_size", toggle=True, text="")
row = col.row(align=True)
row.prop(brush, "strength", text="Strength", slider=True)
- row.prop(brush, "use_strength_pressure", toggle=True, text="")
+ row.prop(brush, "use_pressure_strength", toggle=True, text="")
if brush.vertexpaint_tool == 'ALPHA':
row = col.row(align=True)
row.prop(brush, "direction", expand=True)
+ # XXX - TODO
+ #row = col.row(align=True)
+ #row.prop(brush, "jitter", slider=True)
+ #row.prop(brush, "use_pressure_jitter", toggle=True, text="")
+
col.prop(brush, "mask")
@@ -793,7 +798,7 @@ class VIEW3D_PT_tools_brush_texture(PaintPanel, bpy.types.Panel):
col = layout.column()
if not brush.use_anchor and brush.sculpt_tool not in ('GRAB', 'SNAKE_HOOK', 'THUMB', 'ROTATE') and tex_slot.map_mode in ('FIXED'):
- col.prop(brush, "texture_angle_source", text="")
+ col.prop(brush, "texture_angle_source_random", text="")
else:
col.prop(brush, "texture_angle_source_no_random", text="")
@@ -915,7 +920,7 @@ class VIEW3D_PT_tools_brush_stroke(PaintPanel, bpy.types.Panel):
if brush.use_anchor:
col.separator()
row = col.row()
- row.prop(brush, "edge_to_edge", "Edge To Edge")
+ row.prop(brush, "use_edge_to_edge", "Edge To Edge")
if brush.use_airbrush:
col.separator()
@@ -928,7 +933,7 @@ class VIEW3D_PT_tools_brush_stroke(PaintPanel, bpy.types.Panel):
row.active = brush.use_space
row.prop(brush, "spacing", text="Spacing")
- if (context.vertex_paint_object or brush.sculpt_tool not in ('GRAB', 'THUMB', 'SNAKE_HOOK', 'ROTATE')) and (not brush.use_anchor) and (not brush.restore_mesh):
+ if brush.sculpt_tool not in ('GRAB', 'THUMB', 'SNAKE_HOOK', 'ROTATE') and (not brush.use_anchor) and (not brush.use_restore_mesh):
col = layout.column()
col.separator()
@@ -943,7 +948,7 @@ class VIEW3D_PT_tools_brush_stroke(PaintPanel, bpy.types.Panel):
row = col.row(align=True)
row.prop(brush, "jitter", slider=True)
- row.prop(brush, "use_jitter_pressure", toggle=True, text="")
+ row.prop(brush, "use_pressure_jitter", toggle=True, text="")
else:
row = col.row()
@@ -982,7 +987,7 @@ class VIEW3D_PT_tools_brush_stroke(PaintPanel, bpy.types.Panel):
#col.separator()
#if texture_paint:
- # row.prop(brush, "use_spacing_pressure", toggle=True, text="")
+ # row.prop(brush, "use_pressure_spacing", toggle=True, text="")
class VIEW3D_PT_tools_brush_curve(PaintPanel, bpy.types.Panel):
@@ -1032,8 +1037,8 @@ class VIEW3D_PT_sculpt_options(PaintPanel, bpy.types.Panel):
col = split.column()
- col.prop(sculpt, "use_openmp", text="Threaded Sculpt")
- col.prop(sculpt, "fast_navigate")
+ col.prop(sculpt, "use_threaded", text="Threaded Sculpt")
+ col.prop(sculpt, "show_low_resolution")
col.prop(sculpt, "show_brush")
col.label(text="Unified Settings:")
@@ -1074,13 +1079,13 @@ class VIEW3D_PT_tools_paint_symmetry(PaintPanel, bpy.types.Panel):
col = split.column()
col.label(text="Mirror:")
- col.prop(paint, "symmetry_x", text="X")
- col.prop(paint, "symmetry_y", text="Y")
- col.prop(paint, "symmetry_z", text="Z")
+ col.prop(sculpt, "use_symmetry_x", text="X")
+ col.prop(sculpt, "use_symmetry_y", text="Y")
+ col.prop(sculpt, "use_symmetry_z", text="Z")
col = split.column()
- col.prop(paint, "radial_symm", text="Radial")
+ col.prop(sculpt, "radial_symmetry", text="Radial")
col = layout.column()
@@ -1108,12 +1113,12 @@ class VIEW3D_PT_tools_brush_appearance(PaintPanel, bpy.types.Panel):
if context.sculpt_object and context.tool_settings.sculpt:
#if brush.sculpt_tool in ('DRAW', 'INFLATE', 'CLAY', 'PINCH', 'CREASE', 'BLOB', 'FLATTEN', 'FILL', 'SCRAPE', 'CLAY_TUBES'):
if brush.sculpt_tool in ('DRAW', 'INFLATE', 'CLAY', 'PINCH', 'CREASE', 'BLOB', 'FLATTEN', 'FILL', 'SCRAPE'):
- col.prop(brush, "add_col", text="Add Color")
- col.prop(brush, "sub_col", text="Subtract Color")
+ col.prop(brush, "cursor_color_add", text="Add Color")
+ col.prop(brush, "cursor_color_subtract", text="Subtract Color")
else:
- col.prop(brush, "add_col", text="Color")
+ col.prop(brush, "cursor_color_add", text="Color")
else:
- col.prop(brush, "add_col", text="Color")
+ col.prop(brush, "cursor_color_add", text="Color")
col = layout.column()
col.label(text="Icon:")
@@ -1153,9 +1158,9 @@ class VIEW3D_PT_tools_weightpaint_options(View3DPanel, bpy.types.Panel):
wpaint = tool_settings.weight_paint
col = layout.column()
- col.prop(wpaint, "all_faces")
+ col.prop(wpaint, "use_all_faces")
col.prop(wpaint, "normals")
- col.prop(wpaint, "spray")
+ col.prop(wpaint, "use_spray")
obj = context.weight_paint_object
if obj.type == 'MESH':
@@ -1195,9 +1200,9 @@ class VIEW3D_PT_tools_vertexpaint(PaintPanel, bpy.types.Panel):
col = layout.column()
#col.prop(vpaint, "mode", text="")
- col.prop(vpaint, "all_faces")
+ col.prop(vpaint, "use_all_faces")
col.prop(vpaint, "normals")
- col.prop(vpaint, "spray")
+ col.prop(vpaint, "use_spray")
col.prop(vpaint, "fast_navigate")
@@ -1239,7 +1244,7 @@ class VIEW3D_PT_tools_projectpaint(View3DPanel, bpy.types.Panel):
sub = col.column()
sub.active = use_projection
sub.prop(ipaint, "use_occlude")
- sub.prop(ipaint, "use_backface_cull")
+ sub.prop(ipaint, "use_backface_culling")
split = layout.split()
@@ -1351,44 +1356,44 @@ class VIEW3D_PT_tools_particlemode(View3DPanel, bpy.types.Panel):
if md.type == pe.type:
ptcache = md.point_cache
- if ptcache and len(ptcache.point_cache_list) > 1:
- layout.template_list(ptcache, "point_cache_list", ptcache, "active_point_cache_index", type='ICONS')
+ if ptcache and len(ptcache.point_caches) > 1:
+ layout.template_list(ptcache, "point_caches", ptcache, "active_point_cache_index", type='ICONS')
- if not pe.editable:
+ if not pe.is_editable:
layout.label(text="Point cache must be baked")
layout.label(text="to enable editing!")
col = layout.column(align=True)
- if pe.hair:
- col.active = pe.editable
- col.prop(pe, "emitter_deflect", text="Deflect emitter")
+ if pe.is_hair:
+ col.active = pe.is_editable
+ col.prop(pe, "use_emitter_deflect", text="Deflect emitter")
sub = col.row()
- sub.active = pe.emitter_deflect
+ sub.active = pe.use_emitter_deflect
sub.prop(pe, "emitter_distance", text="Distance")
col = layout.column(align=True)
- col.active = pe.editable
+ col.active = pe.is_editable
col.label(text="Keep:")
- col.prop(pe, "keep_lengths", text="Lengths")
- col.prop(pe, "keep_root", text="Root")
- if not pe.hair:
+ col.prop(pe, "use_preserve_length", text="Lengths")
+ col.prop(pe, "use_preserve_root", text="Root")
+ if not pe.is_hair:
col.label(text="Correct:")
- col.prop(pe, "auto_velocity", text="Velocity")
+ col.prop(pe, "use_auto_velocity", text="Velocity")
col.prop(ob.data, "use_mirror_x")
col = layout.column(align=True)
- col.active = pe.editable
+ col.active = pe.is_editable
col.label(text="Draw:")
col.prop(pe, "draw_step", text="Path Steps")
- if pe.hair:
- col.prop(pe, "draw_particles", text="Children")
+ if pe.is_hair:
+ col.prop(pe, "show_particles", text="Children")
else:
if pe.type == 'PARTICLES':
- col.prop(pe, "draw_particles", text="Particles")
- col.prop(pe, "fade_time")
+ col.prop(pe, "show_particles", text="Particles")
+ col.prop(pe, "use_fade_time")
sub = col.row()
- sub.active = pe.fade_time
+ sub.active = pe.use_fade_time
sub.prop(pe, "fade_frames", slider=True)
diff --git a/source/Makefile b/source/Makefile
index ece5b6d8bba..1055c2a94e9 100644
--- a/source/Makefile
+++ b/source/Makefile
@@ -109,38 +109,37 @@ COMLIB += $(NAN_JPEG)/lib/libjpeg.a
COMLIB += $(OCGDIR)/blender/gpu/$(DEBUG_DIR)libgpu.a
COMLIB += $(NAN_GLEW)/lib/$(DEBUG_DIR)libglew.a
COMLIB += $(OCGDIR)/blender/blenfont/$(DEBUG_DIR)libblenfont.a
+COMLIB += $(OCGDIR)/blender/python/$(DEBUG_DIR)libpython.a
+COMLIB += $(NAN_AUDASPACE)/lib/$(DEBUG_DIR)libaudaspace.a
+COMLIB += $(NAN_AUDASPACE)/lib/$(DEBUG_DIR)libaud_python.a
COMLIB += $(NAN_AUDASPACE)/lib/$(DEBUG_DIR)libaudaspace.a
COMLIB += $(NAN_AUDASPACE)/lib/$(DEBUG_DIR)libaud_src.a
COMLIB += $(NAN_AUDASPACE)/lib/$(DEBUG_DIR)libaud_fx.a
COMLIB += $(NAN_AUDASPACE)/lib/$(DEBUG_DIR)libaud_sdl.a
-COMLIB += $(NAN_SAMPLERATE)/lib/$(DEBUG_DIR)libsamplerate.a
-COMLIB += $(NAN_LZO)/lib/$(DEBUG_DIR)libminilzo.a
-COMLIB += $(NAN_LZMA)/lib/$(DEBUG_DIR)liblzma.a
-COMLIB += $(NAN_BSP)/lib/$(DEBUG_DIR)libbsp.a
-COMLIB += $(NAN_BOOLOP)/lib/$(DEBUG_DIR)libboolop.a
-COMLIB += $(NAN_MOTO)/lib/$(DEBUG_DIR)libmoto.a
-COMLIB += $(NAN_DECIMATION)/lib/$(DEBUG_DIR)libdecimation.a
-COMLIB += $(NAN_GHOST)/lib/$(DEBUG_DIR)libghost.a
-
ifeq ($(WITH_FFMPEG),true)
COMLIB += $(NAN_AUDASPACE)/lib/$(DEBUG_DIR)libaud_ffmpeg.a
endif
-
ifeq ($(WITH_OPENAL),true)
COMLIB += $(NAN_AUDASPACE)/lib/$(DEBUG_DIR)libaud_openal.a
endif
-
ifeq ($(WITH_JACK),true)
COMLIB += $(NAN_AUDASPACE)/lib/$(DEBUG_DIR)libaud_jack.a
endif
-
ifeq ($(WITH_SNDFILE),true)
COMLIB += $(NAN_AUDASPACE)/lib/$(DEBUG_DIR)libaud_sndfile.a
endif
-
ifeq ($(WITH_FFTW3),true)
COMLIB += $(NAN_AUDASPACE)/lib/$(DEBUG_DIR)libaud_fftw.a
endif
+COMLIB += $(NAN_SAMPLERATE)/lib/$(DEBUG_DIR)libsamplerate.a
+COMLIB += $(NAN_LZO)/lib/$(DEBUG_DIR)libminilzo.a
+COMLIB += $(NAN_LZMA)/lib/$(DEBUG_DIR)liblzma.a
+COMLIB += $(NAN_BSP)/lib/$(DEBUG_DIR)libbsp.a
+COMLIB += $(NAN_BOOLOP)/lib/$(DEBUG_DIR)libboolop.a
+COMLIB += $(NAN_MOTO)/lib/$(DEBUG_DIR)libmoto.a
+COMLIB += $(NAN_DECIMATION)/lib/$(DEBUG_DIR)libdecimation.a
+COMLIB += $(NAN_GHOST)/lib/$(DEBUG_DIR)libghost.a
+
ifneq ($(NAN_NO_KETSJI),true)
COMLIB += $(OCGDIR)/gameengine/bloutines/$(DEBUG_DIR)libbloutines.a
diff --git a/source/blender/avi/intern/avi.c b/source/blender/avi/intern/avi.c
index a73dec57a55..5f0d36e17e2 100644
--- a/source/blender/avi/intern/avi.c
+++ b/source/blender/avi/intern/avi.c
@@ -38,6 +38,8 @@
#include <stdio.h>
#include <ctype.h>
+#include "MEM_guardedalloc.h"
+
#include "AVI_avi.h"
#include "avi_intern.h"
diff --git a/source/blender/avi/intern/avi_intern.h b/source/blender/avi/intern/avi_intern.h
index 1ea304213ca..20de67530fd 100644
--- a/source/blender/avi/intern/avi_intern.h
+++ b/source/blender/avi/intern/avi_intern.h
@@ -31,8 +31,6 @@
#include <stdio.h> /* for FILE */
-#include "MEM_guardedalloc.h"
-
unsigned int GET_FCC (FILE *fp);
unsigned int GET_TCC (FILE *fp);
diff --git a/source/blender/blenfont/intern/blf_lang.c b/source/blender/blenfont/intern/blf_lang.c
index 1baf2c82ef7..7054d955faf 100644
--- a/source/blender/blenfont/intern/blf_lang.c
+++ b/source/blender/blenfont/intern/blf_lang.c
@@ -34,7 +34,6 @@
#include <locale.h>
#include "libintl.h"
-#include "MEM_guardedalloc.h"
#include "DNA_listBase.h"
#include "DNA_vec_types.h"
diff --git a/source/blender/blenkernel/BKE_pointcache.h b/source/blender/blenkernel/BKE_pointcache.h
index 63f36a5f103..52536e10e56 100644
--- a/source/blender/blenkernel/BKE_pointcache.h
+++ b/source/blender/blenkernel/BKE_pointcache.h
@@ -33,8 +33,6 @@
#include "DNA_object_force.h"
#include "DNA_boid_types.h"
-#include "MEM_guardedalloc.h"
-
/* Point cache clearing option, for BKE_ptcache_id_clear, before
* and after are non inclusive (they wont remove the cfra) */
#define PTCACHE_CLEAR_ALL 0
@@ -275,7 +273,7 @@ int BKE_ptcache_read_cache(PTCacheID *pid, float cfra, float frs_sec);
int BKE_ptcache_write_cache(PTCacheID *pid, int cfra);
/****************** Continue physics ***************/
-void BKE_ptcache_set_continue_physics(struct Scene *scene, int enable);
+void BKE_ptcache_set_continue_physics(struct Main *bmain, struct Scene *scene, int enable);
int BKE_ptcache_get_continue_physics(void);
/******************* Allocate & free ***************/
diff --git a/source/blender/blenkernel/BKE_sequencer.h b/source/blender/blenkernel/BKE_sequencer.h
index b544b3461cd..a9fb45c6e14 100644
--- a/source/blender/blenkernel/BKE_sequencer.h
+++ b/source/blender/blenkernel/BKE_sequencer.h
@@ -31,13 +31,14 @@
#ifndef BKE_SEQUENCER_H
#define BKE_SEQUENCER_H
+struct bContext;
struct Editing;
+struct ImBuf;
+struct Main;
+struct Scene;
struct Sequence;
struct Strip;
struct StripElem;
-struct ImBuf;
-struct Scene;
-struct bContext;
#define MAXSEQ 32
@@ -123,6 +124,7 @@ struct SeqEffectHandle {
(mixed cases are handled one layer up...) */
struct ImBuf* (*execute)(
+ struct Main *bmain,
struct Scene *scene, struct Sequence *seq, float cfra,
float facf0, float facf1,
int x, int y, int preview_render_size,
@@ -146,15 +148,15 @@ void seq_free_editing(struct Scene *scene);
void seq_free_clipboard(void);
struct Editing *seq_give_editing(struct Scene *scene, int alloc);
char *give_seqname(struct Sequence *seq);
-struct ImBuf *give_ibuf_seq(struct Scene *scene, int rectx, int recty, int cfra, int chanshown, int render_size);
-struct ImBuf *give_ibuf_seq_threaded(struct Scene *scene, int rectx, int recty, int cfra, int chanshown, int render_size);
-struct ImBuf *give_ibuf_seq_direct(struct Scene *scene, int rectx, int recty, int cfra, int render_size, struct Sequence *seq);
-struct ImBuf *give_ibuf_seqbase(struct Scene *scene, int rectx, int recty, int cfra, int chan_shown, int render_size, struct ListBase *seqbasep);
+struct ImBuf *give_ibuf_seq(struct Main *bmain, struct Scene *scene, int rectx, int recty, int cfra, int chanshown, int render_size);
+struct ImBuf *give_ibuf_seq_threaded(struct Main *bmain, struct Scene *scene, int rectx, int recty, int cfra, int chanshown, int render_size);
+struct ImBuf *give_ibuf_seq_direct(struct Main *bmain, struct Scene *scene, int rectx, int recty, int cfra, int render_size, struct Sequence *seq);
+struct ImBuf *give_ibuf_seqbase(struct Main *bmain, struct Scene *scene, int rectx, int recty, int cfra, int chan_shown, int render_size, struct ListBase *seqbasep);
void give_ibuf_prefetch_request(int rectx, int recty, int cfra, int chanshown, int render_size);
void calc_sequence(struct Scene *scene, struct Sequence *seq);
void calc_sequence_disp(struct Scene *scene, struct Sequence *seq);
void new_tstripdata(struct Sequence *seq);
-void reload_sequence_new_file(struct Scene *scene, struct Sequence * seq, int lock_range);
+void reload_sequence_new_file(struct Main *bmain, struct Scene *scene, struct Sequence * seq, int lock_range);
void sort_seq(struct Scene *scene);
void build_seqar_cb(struct ListBase *seqbase, struct Sequence ***seqar, int *totseq,
int (*test_func)(struct Sequence * seq));
@@ -227,7 +229,7 @@ void seqbase_sound_reload(struct Scene *scene, ListBase *seqbase);
void seqbase_unique_name_recursive(ListBase *seqbasep, struct Sequence *seq);
void seqbase_dupli_recursive(struct Scene *scene, ListBase *nseqbase, ListBase *seqbase, int dupe_flag);
-void clear_scene_in_allseqs(struct Scene *sce);
+void clear_scene_in_allseqs(struct Main *bmain, struct Scene *sce);
struct Sequence *get_seq_by_name(struct ListBase *seqbase, const char *name, int recursive);
diff --git a/source/blender/blenkernel/intern/BME_Customdata.c b/source/blender/blenkernel/intern/BME_Customdata.c
index d8a6b66d5bb..1087b3a873c 100644
--- a/source/blender/blenkernel/intern/BME_Customdata.c
+++ b/source/blender/blenkernel/intern/BME_Customdata.c
@@ -36,9 +36,9 @@
#include <string.h>
+#include "MEM_guardedalloc.h"
#include "BKE_bmeshCustomData.h"
#include "bmesh_private.h"
-#include "MEM_guardedalloc.h"
/********************* Layer type information **********************/
typedef struct BME_LayerTypeInfo {
diff --git a/source/blender/blenkernel/intern/BME_conversions.c b/source/blender/blenkernel/intern/BME_conversions.c
index 64a6e14bc5d..341eb38b388 100644
--- a/source/blender/blenkernel/intern/BME_conversions.c
+++ b/source/blender/blenkernel/intern/BME_conversions.c
@@ -531,6 +531,7 @@ DerivedMesh *BME_bmesh_to_derivedmesh(BME_Mesh *bm, DerivedMesh *dm)
MFace *mface, *mf;
MEdge *medge, *me;
MVert *mvert, *mv;
+ int *origindex;
int totface,totedge,totvert,i,bmeshok,len, numTex, numCol;
BME_Vert *v1=NULL;
@@ -577,13 +578,16 @@ DerivedMesh *BME_bmesh_to_derivedmesh(BME_Mesh *bm, DerivedMesh *dm)
/*Make Verts*/
mvert = CDDM_get_verts(result);
+ origindex = result->getVertDataArray(result, CD_ORIGINDEX);
for(i=0,v1=bm->verts.first,mv=mvert;v1;v1=v1->next,i++,mv++){
VECCOPY(mv->co,v1->co);
mv->flag = (unsigned char)v1->flag;
mv->bweight = (char)(255.0*v1->bweight);
CustomData_from_bmesh_block(&bm->vdata, &result->vertData, &v1->data, i);
+ origindex[i] = ORIGINDEX_NONE;
}
medge = CDDM_get_edges(result);
+ origindex = result->getEdgeDataArray(result, CD_ORIGINDEX);
i=0;
for(e=bm->edges.first,me=medge;e;e=e->next){
if(e->tflag2){
@@ -600,12 +604,14 @@ DerivedMesh *BME_bmesh_to_derivedmesh(BME_Mesh *bm, DerivedMesh *dm)
me->bweight = (char)(255.0*e->bweight);
me->flag = e->flag;
CustomData_from_bmesh_block(&bm->edata, &result->edgeData, &e->data, i);
+ origindex[i] = ORIGINDEX_NONE;
me++;
i++;
}
}
if(totface){
mface = CDDM_get_faces(result);
+ origindex = result->getFaceDataArray(result, CD_ORIGINDEX);
/*make faces*/
for(i=0,f=bm->polys.first;f;f=f->next){
mf = &mface[i];
@@ -625,6 +631,7 @@ DerivedMesh *BME_bmesh_to_derivedmesh(BME_Mesh *bm, DerivedMesh *dm)
mf->flag = (unsigned char)f->flag;
CustomData_from_bmesh_block(&bm->pdata, &result->faceData, &f->data, i);
BME_DMloops_to_corners(bm, &result->faceData, i, f,numCol,numTex);
+ origindex[i] = ORIGINDEX_NONE;
i++;
}
}
diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c
index 8f8f7d4d197..b2441a8a58f 100644
--- a/source/blender/blenkernel/intern/DerivedMesh.c
+++ b/source/blender/blenkernel/intern/DerivedMesh.c
@@ -1412,8 +1412,7 @@ static DerivedMesh *getEditMeshDerivedMesh(EditMesh *em, Object *ob,
/* following Mesh convention; we use vertex coordinate itself
* for normal in this case */
if (normalize_v3(no)==0.0) {
- VECCOPY(no, vertexCos[i]);
- normalize_v3(no);
+ normalize_v3_v3(no, vertexCos[i]);
}
}
}
@@ -2606,9 +2605,7 @@ void DM_add_tangent_layer(DerivedMesh *dm)
for(j=0; j<len; j++) {
vtang= find_vertex_tangent(vtangents[mf_vi[j]], mtface ? tf->uv[j] : uv[j]);
-
- VECCOPY(tangent[j], vtang);
- normalize_v3(tangent[j]);
+ normalize_v3_v3(tangent[j], vtang);
}
}
diff --git a/source/blender/blenkernel/intern/anim.c b/source/blender/blenkernel/intern/anim.c
index 89c637d8192..e27e3b2cd3f 100644
--- a/source/blender/blenkernel/intern/anim.c
+++ b/source/blender/blenkernel/intern/anim.c
@@ -40,7 +40,6 @@
#include "BLI_math.h"
#include "BLI_rand.h"
-
#include "DNA_anim_types.h"
#include "DNA_armature_types.h"
#include "DNA_group_types.h"
@@ -49,7 +48,6 @@
#include "DNA_scene_types.h"
#include "DNA_vfont_types.h"
-//(INCLUDE_LINT)#include "BKE_anim.h"
#include "BKE_curve.h"
#include "BKE_DerivedMesh.h"
#include "BKE_depsgraph.h"
@@ -66,7 +64,6 @@
#include "BKE_utildefines.h"
#include "BKE_depsgraph.h"
-#include "ED_curve.h" /* for ED_curve_nurbs */
// XXX bad level call...
diff --git a/source/blender/blenkernel/intern/armature.c b/source/blender/blenkernel/intern/armature.c
index b86be371d66..41821f34ba8 100644
--- a/source/blender/blenkernel/intern/armature.c
+++ b/source/blender/blenkernel/intern/armature.c
@@ -1283,9 +1283,8 @@ void vec_roll_to_mat3(float *vec, float roll, float mat[][3])
float nor[3], axis[3], target[3]={0,1,0};
float theta;
float rMatrix[3][3], bMatrix[3][3];
-
- VECCOPY (nor, vec);
- normalize_v3(nor);
+
+ normalize_v3_v3(nor, vec);
/* Find Axis & Amount for bone matrix*/
cross_v3_v3v3(axis,target,nor);
diff --git a/source/blender/blenkernel/intern/boids.c b/source/blender/blenkernel/intern/boids.c
index 82602a6951d..7ae65d0113a 100644
--- a/source/blender/blenkernel/intern/boids.c
+++ b/source/blender/blenkernel/intern/boids.c
@@ -659,9 +659,9 @@ static int rule_fight(BoidRule *rule, BoidBrainData *bbd, BoidValues *val, Parti
/* attack if in range */
if(closest_dist <= bbd->part->boids->range + pa->size + enemy_pa->size) {
float damage = BLI_frand();
- float enemy_dir[3] = {bbd->wanted_co[0],bbd->wanted_co[1],bbd->wanted_co[2]};
+ float enemy_dir[3];
- normalize_v3(enemy_dir);
+ normalize_v3_v3(enemy_dir, bbd->wanted_co);
/* fight mode */
bbd->wanted_speed = 0.0f;
@@ -786,8 +786,7 @@ static Object *boid_find_ground(BoidBrainData *bbd, ParticleData *pa, float *gro
if(hit.index>=0) {
t = hit.dist/col.ray_len;
interp_v3_v3v3(ground_co, col.co1, col.co2, t);
- VECCOPY(ground_nor, col.nor);
- normalize_v3(ground_nor);
+ normalize_v3_v3(ground_nor, col.nor);
return col.hit_ob;
}
else {
@@ -1115,8 +1114,7 @@ void boid_body(BoidBrainData *bbd, ParticleData *pa)
}
VECCOPY(old_dir, pa->prev_state.ave);
- VECCOPY(wanted_dir, bbd->wanted_co);
- new_speed = normalize_v3(wanted_dir);
+ new_speed = normalize_v3_v3(wanted_dir, bbd->wanted_co);
/* first check if we have valid direction we want to go towards */
if(new_speed == 0.0f) {
@@ -1356,8 +1354,7 @@ void boid_body(BoidBrainData *bbd, ParticleData *pa)
/* save direction to state.ave unless the boid is falling */
/* (boids can't effect their direction when falling) */
if(bpa->data.mode!=eBoidMode_Falling && len_v3(pa->state.vel) > 0.1*pa->size) {
- VECCOPY(pa->state.ave, pa->state.vel);
- normalize_v3(pa->state.ave);
+ normalize_v3_v3(pa->state.ave, pa->state.vel);
}
/* apply damping */
diff --git a/source/blender/blenkernel/intern/booleanops_mesh.c b/source/blender/blenkernel/intern/booleanops_mesh.c
index 431e51cf149..dd595fc98b6 100644
--- a/source/blender/blenkernel/intern/booleanops_mesh.c
+++ b/source/blender/blenkernel/intern/booleanops_mesh.c
@@ -30,7 +30,6 @@
*/
#include "CSG_BooleanOps.h"
-#include "MEM_guardedalloc.h"
diff --git a/source/blender/blenkernel/intern/brush.c b/source/blender/blenkernel/intern/brush.c
index 905515914b4..71a43994363 100644
--- a/source/blender/blenkernel/intern/brush.c
+++ b/source/blender/blenkernel/intern/brush.c
@@ -39,7 +39,6 @@
#include "DNA_windowmanager_types.h"
#include "WM_types.h"
-#include "WM_api.h"
#include "RNA_access.h"
diff --git a/source/blender/blenkernel/intern/cdderivedmesh.c b/source/blender/blenkernel/intern/cdderivedmesh.c
index d799fd3e312..6441ce84d70 100644
--- a/source/blender/blenkernel/intern/cdderivedmesh.c
+++ b/source/blender/blenkernel/intern/cdderivedmesh.c
@@ -1829,14 +1829,10 @@ void CDDM_calc_normals(DerivedMesh *dm)
for(i = 0; i < numVerts; i++, mv++) {
float *no = temp_nors[i];
- if (normalize_v3(no) == 0.0) {
- VECCOPY(no, mv->co);
- normalize_v3(no);
- }
+ if (normalize_v3(no) == 0.0)
+ normalize_v3_v3(no, mv->co);
- mv->no[0] = (short)(no[0] * 32767.0);
- mv->no[1] = (short)(no[1] * 32767.0);
- mv->no[2] = (short)(no[2] * 32767.0);
+ normal_float_to_short_v3(mv->no, no);
}
MEM_freeN(temp_nors);
diff --git a/source/blender/blenkernel/intern/collision.c b/source/blender/blenkernel/intern/collision.c
index 3a9c15f654c..af12d23b2c2 100644
--- a/source/blender/blenkernel/intern/collision.c
+++ b/source/blender/blenkernel/intern/collision.c
@@ -691,8 +691,7 @@ CollPair* cloth_collision ( ModifierData *md1, ModifierData *md2, BVHTreeOverlap
if ( distance <= ( epsilon1 + epsilon2 + ALMOST_ZERO ) )
{
- VECCOPY ( collpair->normal, collpair->vector );
- normalize_v3( collpair->normal );
+ normalize_v3_v3( collpair->normal, collpair->vector );
collpair->distance = distance;
collpair->flag = 0;
diff --git a/source/blender/blenkernel/intern/constraint.c b/source/blender/blenkernel/intern/constraint.c
index aae70c055d0..b415484c1c1 100644
--- a/source/blender/blenkernel/intern/constraint.c
+++ b/source/blender/blenkernel/intern/constraint.c
@@ -256,7 +256,7 @@ void constraint_mat_convertspace (Object *ob, bPoseChannel *pchan, float mat[][4
/* construct offs_bone the same way it is done in armature.c */
copy_m4_m3(offs_bone, pchan->bone->bone_mat);
- VECCOPY(offs_bone[3], pchan->bone->head);
+ copy_v3_v3(offs_bone[3], pchan->bone->head);
offs_bone[3][1]+= pchan->bone->parent->length;
if (pchan->bone->flag & BONE_HINGE) {
@@ -267,7 +267,7 @@ void constraint_mat_convertspace (Object *ob, bPoseChannel *pchan, float mat[][4
copy_m4_m4(tmat, pchan->bone->parent->arm_mat);
/* the location of actual parent transform */
- VECCOPY(tmat[3], offs_bone[3]);
+ copy_v3_v3(tmat[3], offs_bone[3]);
offs_bone[3][0]= offs_bone[3][1]= offs_bone[3][2]= 0.0f;
mul_m4_v3(pchan->parent->pose_mat, tmat[3]);
@@ -309,7 +309,7 @@ void constraint_mat_convertspace (Object *ob, bPoseChannel *pchan, float mat[][4
/* construct offs_bone the same way it is done in armature.c */
copy_m4_m3(offs_bone, pchan->bone->bone_mat);
- VECCOPY(offs_bone[3], pchan->bone->head);
+ copy_v3_v3(offs_bone[3], pchan->bone->head);
offs_bone[3][1]+= pchan->bone->parent->length;
if (pchan->bone->flag & BONE_HINGE) {
@@ -320,8 +320,8 @@ void constraint_mat_convertspace (Object *ob, bPoseChannel *pchan, float mat[][4
copy_m4_m4(tmat, pchan->bone->parent->arm_mat);
/* the location of actual parent transform */
- VECCOPY(tmat[3], offs_bone[3]);
- offs_bone[3][0]= offs_bone[3][1]= offs_bone[3][2]= 0.0f;
+ copy_v3_v3(tmat[3], offs_bone[3]);
+ zero_v3(offs_bone[3]);
mul_m4_v3(pchan->parent->pose_mat, tmat[3]);
mul_m4_m4m4(diff_mat, offs_bone, tmat);
@@ -400,7 +400,7 @@ static void contarget_get_mesh_mat (Scene *scene, Object *ob, char *substring, f
DerivedMesh *dm = NULL;
Mesh *me= ob->data;
EditMesh *em = BKE_mesh_get_editmesh(me);
- float vec[3] = {0.0f, 0.0f, 0.0f}, tvec[3];
+ float vec[3] = {0.0f, 0.0f, 0.0f};
float normal[3] = {0.0f, 0.0f, 0.0f}, plane[3];
float imat[3][3], tmat[3][3];
int dgroup;
@@ -477,9 +477,9 @@ static void contarget_get_mesh_mat (Scene *scene, Object *ob, char *substring, f
mul_m3_v3(tmat, normal);
normalize_v3(normal);
- VECCOPY(plane, tmat[1]);
+ copy_v3_v3(plane, tmat[1]);
- VECCOPY(tmat[2], normal);
+ copy_v3_v3(tmat[2], normal);
cross_v3_v3v3(tmat[0], normal, plane);
cross_v3_v3v3(tmat[1], tmat[2], tmat[0]);
@@ -488,8 +488,7 @@ static void contarget_get_mesh_mat (Scene *scene, Object *ob, char *substring, f
/* apply the average coordinate as the new location */
- mul_v3_m4v3(tvec, ob->obmat, vec);
- VECCOPY(mat[3], tvec);
+ mul_v3_m4v3(mat[3], ob->obmat, vec);
}
}
@@ -554,7 +553,7 @@ static void contarget_get_lattice_mat (Object *ob, char *substring, float mat[][
mul_v3_m4v3(tvec, ob->obmat, vec);
/* copy new location to matrix */
- VECCOPY(mat[3], tvec);
+ copy_v3_v3(mat[3], tvec);
}
/* generic function to get the appropriate matrix for most target cases */
@@ -819,11 +818,11 @@ static void childof_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *ta
copy_m4_m4(invmat, data->invmat);
/* extract components of both matrices */
- VECCOPY(loc, ct->matrix[3]);
+ copy_v3_v3(loc, ct->matrix[3]);
mat4_to_eulO(eul, ct->rotOrder, ct->matrix);
mat4_to_size(size, ct->matrix);
- VECCOPY(loco, invmat[3]);
+ copy_v3_v3(loco, invmat[3]);
mat4_to_eulO(eulo, cob->rotOrder, invmat);
mat4_to_size(sizo, invmat);
@@ -940,9 +939,8 @@ static void vectomat (float *vec, float *target_up, short axis, short upflag, sh
float right[3];
float neg = -1;
int right_index;
-
- copy_v3_v3(n, vec);
- if (normalize_v3(n) == 0.0) {
+
+ if (normalize_v3_v3(n, vec) == 0.0) {
n[0] = 0.0;
n[1] = 0.0;
n[2] = 1.0;
@@ -953,9 +951,7 @@ static void vectomat (float *vec, float *target_up, short axis, short upflag, sh
/* n specifies the transformation of the track axis */
if (flags & TARGET_Z_UP) {
/* target Z axis is the global up axis */
- u[0] = target_up[0];
- u[1] = target_up[1];
- u[2] = target_up[2];
+ copy_v3_v3(u, target_up);
}
else {
/* world Z axis is the global up axis */
@@ -988,20 +984,13 @@ static void vectomat (float *vec, float *target_up, short axis, short upflag, sh
m[right_index][1] = neg * right[1];
m[right_index][2] = neg * right[2];
- m[upflag][0] = proj[0];
- m[upflag][1] = proj[1];
- m[upflag][2] = proj[2];
+ copy_v3_v3(m[upflag], proj);
- m[axis][0] = n[0];
- m[axis][1] = n[1];
- m[axis][2] = n[2];
+ copy_v3_v3(m[axis], n);
}
/* identity matrix - don't do anything if the two axes are the same */
else {
- m[0][0]= m[1][1]= m[2][2]= 1.0;
- m[0][1]= m[0][2]= 0.0;
- m[1][0]= m[1][2]= 0.0;
- m[2][0]= m[2][1]= 0.0;
+ unit_m3(m);
}
}
@@ -1264,7 +1253,7 @@ static void followpath_get_tarmat (bConstraint *con, bConstraintOb *cob, bConstr
copy_m4_m4(totmat, rmat);
}
- VECCOPY(totmat[3], vec);
+ copy_v3_v3(totmat[3], vec);
mul_serie_m4(ct->matrix, ct->tar->obmat, totmat, NULL, NULL, NULL, NULL, NULL, NULL);
}
@@ -1383,7 +1372,7 @@ static void rotlimit_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *t
float eul[3];
float size[3];
- VECCOPY(loc, cob->matrix[3]);
+ copy_v3_v3(loc, cob->matrix[3]);
mat4_to_size(size, cob->matrix);
mat4_to_eulO(eul, cob->rotOrder, cob->matrix);
@@ -1544,7 +1533,7 @@ static void loclike_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *ta
float offset[3] = {0.0f, 0.0f, 0.0f};
if (data->flag & LOCLIKE_OFFSET)
- VECCOPY(offset, cob->matrix[3]);
+ copy_v3_v3(offset, cob->matrix[3]);
if (data->flag & LOCLIKE_X) {
cob->matrix[3][0] = ct->matrix[3][0];
@@ -1636,7 +1625,7 @@ static void rotlike_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *ta
float eul[3], obeul[3];
float size[3];
- VECCOPY(loc, cob->matrix[3]);
+ copy_v3_v3(loc, cob->matrix[3]);
mat4_to_size(size, cob->matrix);
/* to allow compatible rotations, must get both rotations in the order of the owner... */
@@ -2138,7 +2127,7 @@ static void actcon_get_tarmat (bConstraint *con, bConstraintOb *cob, bConstraint
}
else {
/* extract location */
- VECCOPY(vec, tempmat[3]);
+ copy_v3_v3(vec, tempmat[3]);
axis= data->type - 20;
}
@@ -2294,10 +2283,7 @@ static void locktrack_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *
normalize_v3(totmat[1]);
/* the x axis is fixed */
- totmat[0][0] = cob->matrix[0][0];
- totmat[0][1] = cob->matrix[0][1];
- totmat[0][2] = cob->matrix[0][2];
- normalize_v3(totmat[0]);
+ normalize_v3_v3(totmat[0], cob->matrix[0]);
/* the z axis gets mapped onto a third orthogonal vector */
cross_v3_v3v3(totmat[2], totmat[0], totmat[1]);
@@ -2311,10 +2297,7 @@ static void locktrack_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *
normalize_v3(totmat[2]);
/* the x axis is fixed */
- totmat[0][0] = cob->matrix[0][0];
- totmat[0][1] = cob->matrix[0][1];
- totmat[0][2] = cob->matrix[0][2];
- normalize_v3(totmat[0]);
+ normalize_v3_v3(totmat[0], cob->matrix[0]);
/* the z axis gets mapped onto a third orthogonal vector */
cross_v3_v3v3(totmat[1], totmat[2], totmat[0]);
@@ -2329,10 +2312,7 @@ static void locktrack_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *
negate_v3(totmat[1]);
/* the x axis is fixed */
- totmat[0][0] = cob->matrix[0][0];
- totmat[0][1] = cob->matrix[0][1];
- totmat[0][2] = cob->matrix[0][2];
- normalize_v3(totmat[0]);
+ normalize_v3_v3(totmat[0], cob->matrix[0]);
/* the z axis gets mapped onto a third orthogonal vector */
cross_v3_v3v3(totmat[2], totmat[0], totmat[1]);
@@ -2347,10 +2327,7 @@ static void locktrack_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *
negate_v3(totmat[2]);
/* the x axis is fixed */
- totmat[0][0] = cob->matrix[0][0];
- totmat[0][1] = cob->matrix[0][1];
- totmat[0][2] = cob->matrix[0][2];
- normalize_v3(totmat[0]);
+ normalize_v3_v3(totmat[0], cob->matrix[0]);
/* the z axis gets mapped onto a third orthogonal vector */
cross_v3_v3v3(totmat[1], totmat[2], totmat[0]);
@@ -2358,9 +2335,7 @@ static void locktrack_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *
break;
default:
{
- totmat[0][0] = 1;totmat[0][1] = 0;totmat[0][2] = 0;
- totmat[1][0] = 0;totmat[1][1] = 1;totmat[1][2] = 0;
- totmat[2][0] = 0;totmat[2][1] = 0;totmat[2][2] = 1;
+ unit_m3(totmat);
}
break;
}
@@ -2377,11 +2352,8 @@ static void locktrack_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *
normalize_v3(totmat[0]);
/* the y axis is fixed */
- totmat[1][0] = cob->matrix[1][0];
- totmat[1][1] = cob->matrix[1][1];
- totmat[1][2] = cob->matrix[1][2];
- normalize_v3(totmat[1]);
-
+ normalize_v3_v3(totmat[1], cob->matrix[1]);
+
/* the z axis gets mapped onto a third orthogonal vector */
cross_v3_v3v3(totmat[2], totmat[0], totmat[1]);
}
@@ -2394,10 +2366,7 @@ static void locktrack_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *
normalize_v3(totmat[2]);
/* the y axis is fixed */
- totmat[1][0] = cob->matrix[1][0];
- totmat[1][1] = cob->matrix[1][1];
- totmat[1][2] = cob->matrix[1][2];
- normalize_v3(totmat[1]);
+ normalize_v3_v3(totmat[1], cob->matrix[1]);
/* the z axis gets mapped onto a third orthogonal vector */
cross_v3_v3v3(totmat[0], totmat[1], totmat[2]);
@@ -2412,10 +2381,7 @@ static void locktrack_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *
negate_v3(totmat[0]);
/* the y axis is fixed */
- totmat[1][0] = cob->matrix[1][0];
- totmat[1][1] = cob->matrix[1][1];
- totmat[1][2] = cob->matrix[1][2];
- normalize_v3(totmat[1]);
+ normalize_v3_v3(totmat[1], cob->matrix[1]);
/* the z axis gets mapped onto a third orthogonal vector */
cross_v3_v3v3(totmat[2], totmat[0], totmat[1]);
@@ -2430,10 +2396,7 @@ static void locktrack_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *
negate_v3(totmat[2]);
/* the y axis is fixed */
- totmat[1][0] = cob->matrix[1][0];
- totmat[1][1] = cob->matrix[1][1];
- totmat[1][2] = cob->matrix[1][2];
- normalize_v3(totmat[1]);
+ normalize_v3_v3(totmat[1], cob->matrix[1]);
/* the z axis gets mapped onto a third orthogonal vector */
cross_v3_v3v3(totmat[0], totmat[1], totmat[2]);
@@ -2441,9 +2404,7 @@ static void locktrack_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *
break;
default:
{
- totmat[0][0] = 1;totmat[0][1] = 0;totmat[0][2] = 0;
- totmat[1][0] = 0;totmat[1][1] = 1;totmat[1][2] = 0;
- totmat[2][0] = 0;totmat[2][1] = 0;totmat[2][2] = 1;
+ unit_m3(totmat);
}
break;
}
@@ -2460,10 +2421,7 @@ static void locktrack_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *
normalize_v3(totmat[0]);
/* the z axis is fixed */
- totmat[2][0] = cob->matrix[2][0];
- totmat[2][1] = cob->matrix[2][1];
- totmat[2][2] = cob->matrix[2][2];
- normalize_v3(totmat[2]);
+ normalize_v3_v3(totmat[2], cob->matrix[2]);
/* the x axis gets mapped onto a third orthogonal vector */
cross_v3_v3v3(totmat[1], totmat[2], totmat[0]);
@@ -2477,10 +2435,7 @@ static void locktrack_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *
normalize_v3(totmat[1]);
/* the z axis is fixed */
- totmat[2][0] = cob->matrix[2][0];
- totmat[2][1] = cob->matrix[2][1];
- totmat[2][2] = cob->matrix[2][2];
- normalize_v3(totmat[2]);
+ normalize_v3_v3(totmat[2], cob->matrix[2]);
/* the x axis gets mapped onto a third orthogonal vector */
cross_v3_v3v3(totmat[0], totmat[1], totmat[2]);
@@ -2495,10 +2450,7 @@ static void locktrack_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *
negate_v3(totmat[0]);
/* the z axis is fixed */
- totmat[2][0] = cob->matrix[2][0];
- totmat[2][1] = cob->matrix[2][1];
- totmat[2][2] = cob->matrix[2][2];
- normalize_v3(totmat[2]);
+ normalize_v3_v3(totmat[2], cob->matrix[2]);
/* the x axis gets mapped onto a third orthogonal vector */
cross_v3_v3v3(totmat[1], totmat[2], totmat[0]);
@@ -2513,10 +2465,7 @@ static void locktrack_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *
negate_v3(totmat[1]);
/* the z axis is fixed */
- totmat[2][0] = cob->matrix[2][0];
- totmat[2][1] = cob->matrix[2][1];
- totmat[2][2] = cob->matrix[2][2];
- normalize_v3(totmat[2]);
+ normalize_v3_v3(totmat[2], cob->matrix[2]);
/* the x axis gets mapped onto a third orthogonal vector */
cross_v3_v3v3(totmat[0], totmat[1], totmat[2]);
@@ -2524,9 +2473,7 @@ static void locktrack_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *
break;
default:
{
- totmat[0][0] = 1;totmat[0][1] = 0;totmat[0][2] = 0;
- totmat[1][0] = 0;totmat[1][1] = 1;totmat[1][2] = 0;
- totmat[2][0] = 0;totmat[2][1] = 0;totmat[2][2] = 1;
+ unit_m3(totmat);
}
break;
}
@@ -2534,19 +2481,13 @@ static void locktrack_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *
break;
default:
{
- totmat[0][0] = 1;totmat[0][1] = 0;totmat[0][2] = 0;
- totmat[1][0] = 0;totmat[1][1] = 1;totmat[1][2] = 0;
- totmat[2][0] = 0;totmat[2][1] = 0;totmat[2][2] = 1;
+ unit_m3(totmat);
}
break;
}
/* Block to keep matrix heading */
- tmpmat[0][0] = cob->matrix[0][0];tmpmat[0][1] = cob->matrix[0][1];tmpmat[0][2] = cob->matrix[0][2];
- tmpmat[1][0] = cob->matrix[1][0];tmpmat[1][1] = cob->matrix[1][1];tmpmat[1][2] = cob->matrix[1][2];
- tmpmat[2][0] = cob->matrix[2][0];tmpmat[2][1] = cob->matrix[2][1];tmpmat[2][2] = cob->matrix[2][2];
- normalize_v3(tmpmat[0]);
- normalize_v3(tmpmat[1]);
- normalize_v3(tmpmat[2]);
+ copy_m3_m4(tmpmat, cob->matrix);
+ normalize_m3(tmpmat);
invert_m3_m3(invmat, tmpmat);
mul_m3_m3m3(tmpmat, totmat, invmat);
totmat[0][0] = tmpmat[0][0];totmat[0][1] = tmpmat[0][1];totmat[0][2] = tmpmat[0][2];
@@ -2559,9 +2500,7 @@ static void locktrack_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *
totmat[1][0],totmat[1][1],totmat[1][2],
totmat[2][0],totmat[2][1],totmat[2][2]);
if (mdet==0) {
- totmat[0][0] = 1;totmat[0][1] = 0;totmat[0][2] = 0;
- totmat[1][0] = 0;totmat[1][1] = 1;totmat[1][2] = 0;
- totmat[2][0] = 0;totmat[2][1] = 0;totmat[2][2] = 1;
+ unit_m3(totmat);
}
/* apply out transformaton to the object */
@@ -2689,7 +2628,7 @@ static void distlimit_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *
interp_v3_v3v3(dvec, ct->matrix[3], cob->matrix[3], sfac);
/* copy new vector onto owner */
- VECCOPY(cob->matrix[3], dvec);
+ copy_v3_v3(cob->matrix[3], dvec);
}
}
}
@@ -2772,16 +2711,10 @@ static void stretchto_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *
mat4_to_size(size, cob->matrix);
/* store X orientation before destroying obmat */
- xx[0] = cob->matrix[0][0];
- xx[1] = cob->matrix[0][1];
- xx[2] = cob->matrix[0][2];
- normalize_v3(xx);
+ normalize_v3_v3(xx, cob->matrix[0]);
/* store Z orientation before destroying obmat */
- zz[0] = cob->matrix[2][0];
- zz[1] = cob->matrix[2][1];
- zz[2] = cob->matrix[2][2];
- normalize_v3(zz);
+ normalize_v3_v3(zz, cob->matrix[2]);
sub_v3_v3v3(vec, cob->matrix[3], ct->matrix[3]);
vec[0] /= size[0];
@@ -2836,9 +2769,7 @@ static void stretchto_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *
normalize_v3(vec);
/* new Y aligns object target connection*/
- totmat[1][0] = -vec[0];
- totmat[1][1] = -vec[1];
- totmat[1][2] = -vec[2];
+ negate_v3_v3(totmat[1], vec);
switch (data->plane) {
case PLANE_X:
/* build new Z vector */
@@ -2847,16 +2778,11 @@ static void stretchto_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *
normalize_v3(orth);
/* new Z*/
- totmat[2][0] = orth[0];
- totmat[2][1] = orth[1];
- totmat[2][2] = orth[2];
+ copy_v3_v3(totmat[2], orth);
/* we decided to keep X plane*/
cross_v3_v3v3(xx, orth, vec);
- normalize_v3(xx);
- totmat[0][0] = xx[0];
- totmat[0][1] = xx[1];
- totmat[0][2] = xx[2];
+ normalize_v3_v3(totmat[0], xx);
break;
case PLANE_Z:
/* build new X vector */
@@ -2865,16 +2791,11 @@ static void stretchto_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *
normalize_v3(orth);
/* new X */
- totmat[0][0] = -orth[0];
- totmat[0][1] = -orth[1];
- totmat[0][2] = -orth[2];
+ negate_v3_v3(totmat[0], orth);
/* we decided to keep Z */
cross_v3_v3v3(zz, orth, vec);
- normalize_v3(zz);
- totmat[2][0] = zz[0];
- totmat[2][1] = zz[1];
- totmat[2][2] = zz[2];
+ normalize_v3_v3(totmat[2], zz);
break;
} /* switch (data->plane) */
@@ -3006,10 +2927,10 @@ static void minmax_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *tar
obmat[3][index] = tarmat[3][index] + data->offset;
if (data->flag & MINMAX_STICKY) {
if (data->flag & MINMAX_STUCK) {
- VECCOPY(obmat[3], data->cache);
+ copy_v3_v3(obmat[3], data->cache);
}
else {
- VECCOPY(data->cache, obmat[3]);
+ copy_v3_v3(data->cache, obmat[3]);
data->flag |= MINMAX_STUCK;
}
}
@@ -3019,7 +2940,7 @@ static void minmax_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *tar
copy_m4_m4(cob->matrix, tmat);
}
else {
- VECCOPY(cob->matrix[3], obmat[3]);
+ copy_v3_v3(cob->matrix[3], obmat[3]);
}
}
else {
@@ -3174,7 +3095,7 @@ static void clampto_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *ta
copy_m4_m4(obmat, cob->matrix);
unit_m4(targetMatrix);
- VECCOPY(ownLoc, obmat[3]);
+ copy_v3_v3(ownLoc, obmat[3]);
INIT_MINMAX(curveMin, curveMax)
minmax_object(ct->tar, curveMin, curveMax);
@@ -3263,14 +3184,14 @@ static void clampto_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *ta
/* 3. position on curve */
if (where_on_path(ct->tar, curvetime, vec, dir, NULL, NULL, NULL) ) {
unit_m4(totmat);
- VECCOPY(totmat[3], vec);
+ copy_v3_v3(totmat[3], vec);
mul_serie_m4(targetMatrix, ct->tar->obmat, totmat, NULL, NULL, NULL, NULL, NULL, NULL);
}
}
/* obtain final object position */
- VECCOPY(cob->matrix[3], targetMatrix[3]);
+ copy_v3_v3(cob->matrix[3], targetMatrix[3]);
}
}
@@ -3362,7 +3283,7 @@ static void transform_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *
}
/* extract components of owner's matrix */
- VECCOPY(loc, cob->matrix[3]);
+ copy_v3_v3(loc, cob->matrix[3]);
mat4_to_eulO(eul, cob->rotOrder, cob->matrix);
mat4_to_size(size, cob->matrix);
@@ -3556,7 +3477,7 @@ static void shrinkwrap_get_tarmat (bConstraint *con, bConstraintOb *cob, bConstr
fail = TRUE;
break;
}
- VECCOPY(co, hit.co);
+ copy_v3_v3(co, hit.co);
break;
}
@@ -3572,7 +3493,7 @@ static void shrinkwrap_get_tarmat (bConstraint *con, bConstraintOb *cob, bConstr
/* co is in local object coordinates, change it to global and update target position */
mul_m4_v3(cob->matrix, co);
- VECCOPY(ct->matrix[3], co);
+ copy_v3_v3(ct->matrix[3], co);
}
}
}
@@ -3584,7 +3505,7 @@ static void shrinkwrap_evaluate (bConstraint *con, bConstraintOb *cob, ListBase
/* only evaluate if there is a target */
if (VALID_CONS_TARGET(ct))
{
- VECCOPY(cob->matrix[3], ct->matrix[3]);
+ copy_v3_v3(cob->matrix[3], ct->matrix[3]);
}
}
@@ -3668,23 +3589,23 @@ static void damptrack_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *
* - the normalisation step at the end should take care of any unwanted scaling
* left over in the 3x3 matrix we used
*/
- VECCOPY(obvec, track_dir_vecs[data->trackflag]);
+ copy_v3_v3(obvec, track_dir_vecs[data->trackflag]);
mul_mat3_m4_v3(cob->matrix, obvec);
if (normalize_v3(obvec) == 0.0f) {
/* exceptional case - just use the track vector as appropriate */
- VECCOPY(obvec, track_dir_vecs[data->trackflag]);
+ copy_v3_v3(obvec, track_dir_vecs[data->trackflag]);
}
/* find the (unit) direction vector going from the owner to the target */
- VECCOPY(obloc, cob->matrix[3]);
+ copy_v3_v3(obloc, cob->matrix[3]);
sub_v3_v3v3(tarvec, ct->matrix[3], obloc);
if (normalize_v3(tarvec) == 0.0f) {
/* the target is sitting on the owner, so just make them use the same direction vectors */
// FIXME: or would it be better to use the pure direction vector?
- VECCOPY(tarvec, obvec);
- //VECCOPY(tarvec, track_dir_vecs[data->trackflag]);
+ copy_v3_v3(tarvec, obvec);
+ //copy_v3_v3(tarvec, track_dir_vecs[data->trackflag]);
}
/* determine the axis-angle rotation, which represents the smallest possible rotation
@@ -3712,7 +3633,7 @@ static void damptrack_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *
mul_m4_m3m4(tmat, rmat, cob->matrix); // m1, m3, m2
copy_m4_m4(cob->matrix, tmat);
- VECCOPY(cob->matrix[3], obloc);
+ copy_v3_v3(cob->matrix[3], obloc);
}
}
@@ -3907,7 +3828,7 @@ static void pivotcon_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *t
}
else {
/* directly use the 'offset' specified as an absolute position instead */
- VECCOPY(pivot, data->offset);
+ copy_v3_v3(pivot, data->offset);
}
}
diff --git a/source/blender/blenkernel/intern/depsgraph.c b/source/blender/blenkernel/intern/depsgraph.c
index 1f8360324d5..382c0690ae3 100644
--- a/source/blender/blenkernel/intern/depsgraph.c
+++ b/source/blender/blenkernel/intern/depsgraph.c
@@ -41,6 +41,8 @@
#include "DNA_screen_types.h"
#include "DNA_windowmanager_types.h"
+#include "MEM_guardedalloc.h"
+
#include "BLI_ghash.h"
#include "BKE_animsys.h"
@@ -59,13 +61,7 @@
#include "BKE_scene.h"
#include "BKE_screen.h"
-#include "MEM_guardedalloc.h"
-
-#ifndef DISABLE_PYTHON
-#include "BPY_extern.h"
-#endif
-
- #include "depsgraph_private.h"
+#include "depsgraph_private.h"
/* Queue and stack operations for dag traversal
*
@@ -2180,7 +2176,7 @@ void DAG_scene_update_flags(Main *bmain, Scene *scene, unsigned int lay)
dag_object_time_update_flags(scene->camera);
/* and store the info in groupobject */
- for(group= G.main->group.first; group; group= group->id.next) {
+ for(group= bmain->group.first; group; group= group->id.next) {
if(group->id.flag & LIB_DOIT) {
for(go= group->gobject.first; go; go= go->next) {
go->recalc= go->ob->recalc;
diff --git a/source/blender/blenkernel/intern/effect.c b/source/blender/blenkernel/intern/effect.c
index 5f55814341b..6f6d405dd90 100644
--- a/source/blender/blenkernel/intern/effect.c
+++ b/source/blender/blenkernel/intern/effect.c
@@ -662,8 +662,7 @@ int get_effector_data(EffectorCache *eff, EffectorData *efd, EffectedPoint *poin
where_is_object_time(eff->scene, ob, cfra);
/* use z-axis as normal*/
- VECCOPY(efd->nor, ob->obmat[2]);
- normalize_v3(efd->nor);
+ normalize_v3_v3(efd->nor, ob->obmat[2]);
/* for vortex the shape chooses between old / new force */
if(eff->pd && eff->pd->shape == PFIELD_SHAPE_PLANE) {
@@ -707,8 +706,7 @@ int get_effector_data(EffectorCache *eff, EffectorData *efd, EffectedPoint *poin
else {
/* for some effectors we need the object center every time */
sub_v3_v3v3(efd->vec_to_point2, point->loc, eff->ob->obmat[3]);
- VECCOPY(efd->nor2, eff->ob->obmat[2]);
- normalize_v3(efd->nor2);
+ normalize_v3_v3(efd->nor2, eff->ob->obmat[2]);
}
}
diff --git a/source/blender/blenkernel/intern/fluidsim.c b/source/blender/blenkernel/intern/fluidsim.c
index 8a6f0af87d1..04ce6c39694 100644
--- a/source/blender/blenkernel/intern/fluidsim.c
+++ b/source/blender/blenkernel/intern/fluidsim.c
@@ -50,7 +50,6 @@
#include "BKE_global.h"
#include "BKE_modifier.h"
#include "BKE_mesh.h"
-#include "BKE_pointcache.h"
#include "BKE_utildefines.h"
// headers for fluidsim bobj meshes
diff --git a/source/blender/blenkernel/intern/fmodifier.c b/source/blender/blenkernel/intern/fmodifier.c
index 3271749643a..124e6365777 100644
--- a/source/blender/blenkernel/intern/fmodifier.c
+++ b/source/blender/blenkernel/intern/fmodifier.c
@@ -43,10 +43,6 @@
#include "BKE_idprop.h"
#include "BKE_utildefines.h"
-#ifndef DISABLE_PYTHON
-#include "BPY_extern.h" /* for BPY_eval_driver() */
-#endif
-
#define SMALL -1.0e-10
#define SELECT 1
diff --git a/source/blender/blenkernel/intern/group.c b/source/blender/blenkernel/intern/group.c
index 6377a6f6ccd..bdf203119c3 100644
--- a/source/blender/blenkernel/intern/group.c
+++ b/source/blender/blenkernel/intern/group.c
@@ -69,21 +69,22 @@ void free_group_objects(Group *group)
void unlink_group(Group *group)
{
+ Main *bmain= G.main;
Material *ma;
Object *ob;
Scene *sce;
SceneRenderLayer *srl;
ParticleSystem *psys;
- for(ma= G.main->mat.first; ma; ma= ma->id.next) {
+ for(ma= bmain->mat.first; ma; ma= ma->id.next) {
if(ma->group==group)
ma->group= NULL;
}
- for(ma= G.main->mat.first; ma; ma= ma->id.next) {
+ for(ma= bmain->mat.first; ma; ma= ma->id.next) {
if(ma->group==group)
ma->group= NULL;
}
- for (sce= G.main->scene.first; sce; sce= sce->id.next) {
+ for (sce= bmain->scene.first; sce; sce= sce->id.next) {
Base *base= sce->base.first;
/* ensure objects are not in this group */
@@ -100,7 +101,7 @@ void unlink_group(Group *group)
}
}
- for(ob= G.main->object.first; ob; ob= ob->id.next) {
+ for(ob= bmain->object.first; ob; ob= ob->id.next) {
bActionStrip *strip;
if(ob->dup_group==group) {
diff --git a/source/blender/blenkernel/intern/idcode.c b/source/blender/blenkernel/intern/idcode.c
index 3e8f400967e..6411959e655 100644
--- a/source/blender/blenkernel/intern/idcode.c
+++ b/source/blender/blenkernel/intern/idcode.c
@@ -48,7 +48,7 @@ static IDType idtypes[]= {
{ ID_BR, "Brush", "brushes", IDTYPE_FLAGS_ISLINKABLE},
{ ID_CA, "Camera", "cameras", IDTYPE_FLAGS_ISLINKABLE},
{ ID_CU, "Curve", "curves", IDTYPE_FLAGS_ISLINKABLE},
- { ID_GD, "GPencil", "gpencil", IDTYPE_FLAGS_ISLINKABLE}, /* rename gpencil */
+ { ID_GD, "GPencil", "grease_pencil",IDTYPE_FLAGS_ISLINKABLE}, /* rename gpencil */
{ ID_GR, "Group", "groups", IDTYPE_FLAGS_ISLINKABLE},
{ ID_ID, "ID", "ids", 0}, /* plural is fake */
{ ID_IM, "Image", "images", IDTYPE_FLAGS_ISLINKABLE},
diff --git a/source/blender/blenkernel/intern/idprop.c b/source/blender/blenkernel/intern/idprop.c
index 2ccb33b088a..a0df73d6c42 100644
--- a/source/blender/blenkernel/intern/idprop.c
+++ b/source/blender/blenkernel/intern/idprop.c
@@ -27,6 +27,7 @@
#include <stdio.h>
#include <stdlib.h>
+#include <stddef.h>
#include <string.h>
#include "BKE_idprop.h"
@@ -491,47 +492,41 @@ void IDP_ReplaceGroupInGroup(IDProperty *dest, IDProperty *src)
void IDP_ReplaceInGroup(IDProperty *group, IDProperty *prop)
{
IDProperty *loop;
- for (loop=group->data.group.first; loop; loop=loop->next) {
- if (BSTR_EQ(loop->name, prop->name)) {
- BLI_insertlink(&group->data.group, loop, prop);
-
- BLI_remlink(&group->data.group, loop);
- IDP_FreeProperty(loop);
- MEM_freeN(loop);
- return;
- }
+ if((loop= IDP_GetPropertyFromGroup(group, prop->name))) {
+ BLI_insertlink(&group->data.group, loop, prop);
+
+ BLI_remlink(&group->data.group, loop);
+ IDP_FreeProperty(loop);
+ MEM_freeN(loop);
+ }
+ else {
+ group->len++;
+ BLI_addtail(&group->data.group, prop);
}
-
- group->len++;
- BLI_addtail(&group->data.group, prop);
}
/*returns 0 if an id property with the same name exists and it failed,
or 1 if it succeeded in adding to the group.*/
int IDP_AddToGroup(IDProperty *group, IDProperty *prop)
{
- IDProperty *loop;
- for (loop=group->data.group.first; loop; loop=loop->next) {
- if (BSTR_EQ(loop->name, prop->name)) return 0;
+ if(IDP_GetPropertyFromGroup(group, prop->name) == NULL) {
+ group->len++;
+ BLI_addtail(&group->data.group, prop);
+ return 1;
}
- group->len++;
- BLI_addtail(&group->data.group, prop);
-
- return 1;
+ return 0;
}
int IDP_InsertToGroup(IDProperty *group, IDProperty *previous, IDProperty *pnew)
{
- IDProperty *loop;
- for (loop=group->data.group.first; loop; loop=loop->next) {
- if (BSTR_EQ(loop->name, pnew->name)) return 0;
+ if(IDP_GetPropertyFromGroup(group, pnew->name) == NULL) {
+ group->len++;
+ BLI_insertlink(&group->data.group, previous, pnew);
+ return 1;
}
-
- group->len++;
- BLI_insertlink(&group->data.group, previous, pnew);
- return 1;
+ return 0;
}
void IDP_RemFromGroup(IDProperty *group, IDProperty *prop)
@@ -542,11 +537,7 @@ void IDP_RemFromGroup(IDProperty *group, IDProperty *prop)
IDProperty *IDP_GetPropertyFromGroup(IDProperty *prop, const char *name)
{
- IDProperty *loop;
- for (loop=prop->data.group.first; loop; loop=loop->next) {
- if (strcmp(loop->name, name)==0) return loop;
- }
- return NULL;
+ return (IDProperty *)BLI_findstring(&prop->data.group, name, offsetof(IDProperty, name));
}
typedef struct IDPIter {
diff --git a/source/blender/blenkernel/intern/implicit.c b/source/blender/blenkernel/intern/implicit.c
index d544174b0d4..158f964a846 100644
--- a/source/blender/blenkernel/intern/implicit.c
+++ b/source/blender/blenkernel/intern/implicit.c
@@ -1626,9 +1626,8 @@ static void cloth_calc_force(ClothModifierData *clmd, float frame, lfVector *lF,
CalcFloat4(lX[mfaces[i].v1],lX[mfaces[i].v2],lX[mfaces[i].v3],lX[mfaces[i].v4],triunnormal);
else
CalcFloat(lX[mfaces[i].v1],lX[mfaces[i].v2],lX[mfaces[i].v3],triunnormal);
-
- VECCOPY(trinormal, triunnormal);
- normalize_v3(trinormal);
+
+ normalize_v3_v3(trinormal, triunnormal);
// add wind from v1
VECCOPY(tmp, trinormal);
diff --git a/source/blender/blenkernel/intern/material.c b/source/blender/blenkernel/intern/material.c
index 6b79a7b4d62..9774e97f69b 100644
--- a/source/blender/blenkernel/intern/material.c
+++ b/source/blender/blenkernel/intern/material.c
@@ -56,10 +56,6 @@
#include "BKE_node.h"
#include "BKE_utildefines.h"
-#ifndef DISABLE_PYTHON
-#include "BPY_extern.h"
-#endif
-
#include "GPU_material.h"
/* used in UI and render */
@@ -236,6 +232,7 @@ Material *copy_material(Material *ma)
void make_local_material(Material *ma)
{
+ Main *bmain= G.main;
Object *ob;
Mesh *me;
Curve *cu;
@@ -261,7 +258,7 @@ void make_local_material(Material *ma)
}
/* test objects */
- ob= G.main->object.first;
+ ob= bmain->object.first;
while(ob) {
if(ob->mat) {
for(a=0; a<ob->totcol; a++) {
@@ -274,7 +271,7 @@ void make_local_material(Material *ma)
ob= ob->id.next;
}
/* test meshes */
- me= G.main->mesh.first;
+ me= bmain->mesh.first;
while(me) {
if(me->mat) {
for(a=0; a<me->totcol; a++) {
@@ -287,7 +284,7 @@ void make_local_material(Material *ma)
me= me->id.next;
}
/* test curves */
- cu= G.main->curve.first;
+ cu= bmain->curve.first;
while(cu) {
if(cu->mat) {
for(a=0; a<cu->totcol; a++) {
@@ -300,7 +297,7 @@ void make_local_material(Material *ma)
cu= cu->id.next;
}
/* test mballs */
- mb= G.main->mball.first;
+ mb= bmain->mball.first;
while(mb) {
if(mb->mat) {
for(a=0; a<mb->totcol; a++) {
@@ -329,7 +326,7 @@ void make_local_material(Material *ma)
man->id.us= 0;
/* do objects */
- ob= G.main->object.first;
+ ob= bmain->object.first;
while(ob) {
if(ob->mat) {
for(a=0; a<ob->totcol; a++) {
@@ -345,7 +342,7 @@ void make_local_material(Material *ma)
ob= ob->id.next;
}
/* do meshes */
- me= G.main->mesh.first;
+ me= bmain->mesh.first;
while(me) {
if(me->mat) {
for(a=0; a<me->totcol; a++) {
@@ -361,7 +358,7 @@ void make_local_material(Material *ma)
me= me->id.next;
}
/* do curves */
- cu= G.main->curve.first;
+ cu= bmain->curve.first;
while(cu) {
if(cu->mat) {
for(a=0; a<cu->totcol; a++) {
@@ -377,7 +374,7 @@ void make_local_material(Material *ma)
cu= cu->id.next;
}
/* do mballs */
- mb= G.main->mball.first;
+ mb= bmain->mball.first;
while(mb) {
if(mb->mat) {
for(a=0; a<mb->totcol; a++) {
diff --git a/source/blender/blenkernel/intern/mesh.c b/source/blender/blenkernel/intern/mesh.c
index 7129ecb1d55..94131fdbe9d 100644
--- a/source/blender/blenkernel/intern/mesh.c
+++ b/source/blender/blenkernel/intern/mesh.c
@@ -265,6 +265,7 @@ void make_local_tface(Mesh *me)
void make_local_mesh(Mesh *me)
{
+ Main *bmain= G.main;
Object *ob;
Mesh *men;
int local=0, lib=0;
@@ -285,7 +286,7 @@ void make_local_mesh(Mesh *me)
return;
}
- ob= G.main->object.first;
+ ob= bmain->object.first;
while(ob) {
if( me==get_mesh(ob) ) {
if(ob->id.lib) lib= 1;
@@ -306,7 +307,7 @@ void make_local_mesh(Mesh *me)
men= copy_mesh(me);
men->id.us= 0;
- ob= G.main->object.first;
+ ob= bmain->object.first;
while(ob) {
if( me==get_mesh(ob) ) {
if(ob->id.lib==0) {
@@ -925,6 +926,7 @@ int nurbs_to_mdata_customdb(Object *ob, ListBase *dispbase, MVert **allvert, int
/* this may fail replacing ob->data, be sure to check ob->type */
void nurbs_to_mesh(Object *ob)
{
+ Main *bmain= G.main;
Object *ob1;
DerivedMesh *dm= ob->derivedFinal;
Mesh *me;
@@ -967,13 +969,13 @@ void nurbs_to_mesh(Object *ob)
cu->totcol= 0;
if(ob->data) {
- free_libblock(&G.main->curve, ob->data);
+ free_libblock(&bmain->curve, ob->data);
}
ob->data= me;
ob->type= OB_MESH;
/* other users */
- ob1= G.main->object.first;
+ ob1= bmain->object.first;
while(ob1) {
if(ob1->data==cu) {
ob1->type= OB_MESH;
@@ -1234,14 +1236,10 @@ void mesh_calc_normals(MVert *mverts, int numVerts, MFace *mfaces, int numFaces,
MVert *mv= &mverts[i];
float *no= tnorms[i];
- if (normalize_v3(no)==0.0) {
- VECCOPY(no, mv->co);
- normalize_v3(no);
- }
+ if (normalize_v3(no)==0.0)
+ normalize_v3_v3(no, mv->co);
- mv->no[0]= (short)(no[0]*32767.0);
- mv->no[1]= (short)(no[1]*32767.0);
- mv->no[2]= (short)(no[2]*32767.0);
+ normal_float_to_short_v3(mv->no, no);
}
MEM_freeN(tnorms);
diff --git a/source/blender/blenkernel/intern/modifier.c b/source/blender/blenkernel/intern/modifier.c
index ea118e4a53c..63f0f1fa091 100644
--- a/source/blender/blenkernel/intern/modifier.c
+++ b/source/blender/blenkernel/intern/modifier.c
@@ -34,16 +34,18 @@
*
*/
-#include "stddef.h"
-#include "string.h"
-#include "stdarg.h"
-#include "math.h"
-#include "float.h"
+#include <stddef.h>
+#include <string.h>
+#include <stdarg.h>
+#include <math.h>
+#include <float.h>
#include "DNA_armature_types.h"
#include "DNA_object_types.h"
#include "DNA_meshdata_types.h"
+#include "MEM_guardedalloc.h"
+
#include "BKE_bmesh.h"
#include "BKE_cloth.h"
#include "BKE_key.h"
diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c
index 36c23216585..9dca0fa82e4 100644
--- a/source/blender/blenkernel/intern/node.c
+++ b/source/blender/blenkernel/intern/node.c
@@ -45,7 +45,6 @@
#include "PIL_time.h"
-#include "MEM_guardedalloc.h"
#include "CMP_node.h"
#include "intern/CMP_util.h" /* stupid include path... */
@@ -1855,9 +1854,8 @@ static void node_group_execute(bNodeStack *stack, void *data, bNode *gnode, bNod
/* for groups, only execute outputs for edited group */
if(node->typeinfo->nclass==NODE_CLASS_OUTPUT) {
- if(gnode->flag & NODE_GROUP_EDIT)
- if(node->flag & NODE_DO_OUTPUT)
- node->typeinfo->execfunc(data, node, nsin, nsout);
+ if(node->type==CMP_NODE_OUTPUT_FILE || (gnode->flag & NODE_GROUP_EDIT))
+ node->typeinfo->execfunc(data, node, nsin, nsout);
}
else
node->typeinfo->execfunc(data, node, nsin, nsout);
diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c
index 8058294a5e8..1e2c648598e 100644
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@ -299,6 +299,7 @@ static void unlink_object__unlinkModifierLinks(void *userData, Object *ob, Objec
void unlink_object(Scene *scene, Object *ob)
{
+ Main *bmain= G.main;
Object *obt;
Material *mat;
World *wrld;
@@ -320,7 +321,7 @@ void unlink_object(Scene *scene, Object *ob)
/* check all objects: parents en bevels and fields, also from libraries */
// FIXME: need to check all animation blocks (drivers)
- obt= G.main->object.first;
+ obt= bmain->object.first;
while(obt) {
if(obt->proxy==ob)
obt->proxy= NULL;
@@ -494,7 +495,7 @@ void unlink_object(Scene *scene, Object *ob)
}
/* materials */
- mat= G.main->mat.first;
+ mat= bmain->mat.first;
while(mat) {
for(a=0; a<MAX_MTEX; a++) {
@@ -508,7 +509,7 @@ void unlink_object(Scene *scene, Object *ob)
}
/* textures */
- tex= G.main->tex.first;
+ tex= bmain->tex.first;
while(tex) {
if(tex->env) {
if(tex->env->object == ob) tex->env->object= NULL;
@@ -517,7 +518,7 @@ void unlink_object(Scene *scene, Object *ob)
}
/* worlds */
- wrld= G.main->world.first;
+ wrld= bmain->world.first;
while(wrld) {
if(wrld->id.lib==NULL) {
for(a=0; a<MAX_MTEX; a++) {
@@ -530,7 +531,7 @@ void unlink_object(Scene *scene, Object *ob)
}
/* scenes */
- sce= G.main->scene.first;
+ sce= bmain->scene.first;
while(sce) {
if(sce->id.lib==NULL) {
if(sce->camera==ob) sce->camera= NULL;
@@ -562,7 +563,7 @@ void unlink_object(Scene *scene, Object *ob)
#if 0 // XXX old animation system
/* ipos */
- ipo= G.main->ipo.first;
+ ipo= bmain->ipo.first;
while(ipo) {
if(ipo->id.lib==NULL) {
IpoCurve *icu;
@@ -576,7 +577,7 @@ void unlink_object(Scene *scene, Object *ob)
#endif // XXX old animation system
/* screens */
- sc= G.main->screen.first;
+ sc= bmain->screen.first;
while(sc) {
ScrArea *sa= sc->areabase.first;
while(sa) {
@@ -641,14 +642,14 @@ void unlink_object(Scene *scene, Object *ob)
}
/* groups */
- group= G.main->group.first;
+ group= bmain->group.first;
while(group) {
rem_from_group(group, ob, NULL, NULL);
group= group->id.next;
}
/* cameras */
- camera= G.main->camera.first;
+ camera= bmain->camera.first;
while(camera) {
if (camera->dof_ob==ob) {
camera->dof_ob = NULL;
@@ -702,6 +703,7 @@ Camera *copy_camera(Camera *cam)
void make_local_camera(Camera *cam)
{
+ Main *bmain= G.main;
Object *ob;
Camera *camn;
int local=0, lib=0;
@@ -719,7 +721,7 @@ void make_local_camera(Camera *cam)
return;
}
- ob= G.main->object.first;
+ ob= bmain->object.first;
while(ob) {
if(ob->data==cam) {
if(ob->id.lib) lib= 1;
@@ -737,7 +739,7 @@ void make_local_camera(Camera *cam)
camn= copy_camera(cam);
camn->id.us= 0;
- ob= G.main->object.first;
+ ob= bmain->object.first;
while(ob) {
if(ob->data==cam) {
@@ -850,6 +852,7 @@ Lamp *copy_lamp(Lamp *la)
void make_local_lamp(Lamp *la)
{
+ Main *bmain= G.main;
Object *ob;
Lamp *lan;
int local=0, lib=0;
@@ -867,7 +870,7 @@ void make_local_lamp(Lamp *la)
return;
}
- ob= G.main->object.first;
+ ob= bmain->object.first;
while(ob) {
if(ob->data==la) {
if(ob->id.lib) lib= 1;
@@ -885,7 +888,7 @@ void make_local_lamp(Lamp *la)
lan= copy_lamp(la);
lan->id.us= 0;
- ob= G.main->object.first;
+ ob= bmain->object.first;
while(ob) {
if(ob->data==la) {
@@ -1343,6 +1346,7 @@ void expand_local_object(Object *ob)
void make_local_object(Object *ob)
{
+ Main *bmain= G.main;
Object *obn;
Scene *sce;
Base *base;
@@ -1364,7 +1368,7 @@ void make_local_object(Object *ob)
}
else {
- sce= G.main->scene.first;
+ sce= bmain->scene.first;
while(sce) {
base= sce->base.first;
while(base) {
@@ -1387,7 +1391,7 @@ void make_local_object(Object *ob)
obn= copy_object(ob);
obn->id.us= 0;
- sce= G.main->scene.first;
+ sce= bmain->scene.first;
while(sce) {
if(sce->id.lib==0) {
base= sce->base.first;
diff --git a/source/blender/blenkernel/intern/paint.c b/source/blender/blenkernel/intern/paint.c
index 69508eed764..f2b64a3068b 100644
--- a/source/blender/blenkernel/intern/paint.c
+++ b/source/blender/blenkernel/intern/paint.c
@@ -42,6 +42,7 @@
#include "BLI_listbase.h"
#include "BLI_pbvh.h"
+#include <stdint.h>
#include <stdlib.h>
#include <string.h>
diff --git a/source/blender/blenkernel/intern/particle.c b/source/blender/blenkernel/intern/particle.c
index 7b3638f0e33..681c48b0cf8 100644
--- a/source/blender/blenkernel/intern/particle.c
+++ b/source/blender/blenkernel/intern/particle.c
@@ -624,8 +624,7 @@ static float psys_render_projected_area(ParticleSystem *psys, float *center, flo
mul_m4_v4(data->viewmat, co);
/* compute two vectors orthogonal to view vector */
- VECCOPY(view, co);
- normalize_v3(view);
+ normalize_v3_v3(view, co);
ortho_basis_v3v3_v3( ortho1, ortho2,view);
/* compute on screen minification */
@@ -1923,8 +1922,7 @@ static void do_prekink(ParticleKey *state, ParticleKey *par, float *par_rot, flo
mul_qt_v3(q2,z_vec);
VECSUB(vec_from_par,state->co,par->co);
- VECCOPY(vec_one,vec_from_par);
- radius=normalize_v3(vec_one);
+ radius= normalize_v3_v3(vec_one, vec_from_par);
inp_y=dot_v3v3(y_vec,vec_one);
inp_z=dot_v3v3(z_vec,vec_one);
@@ -2929,8 +2927,7 @@ void psys_cache_paths(ParticleSimulationData *sim, float cfra)
if(k == 1) {
/* calculate initial tangent for incremental rotations */
VECSUB(tangent, ca->co, (ca - 1)->co);
- VECCOPY(prev_tangent, tangent);
- normalize_v3(prev_tangent);
+ normalize_v3_v3(prev_tangent, tangent);
/* First rotation is based on emitting face orientation. */
/* This is way better than having flipping rotations resulting */
@@ -3106,8 +3103,7 @@ void psys_cache_edit_paths(Scene *scene, Object *ob, PTCacheEdit *edit, float cf
if(k == 1) {
/* calculate initial tangent for incremental rotations */
VECSUB(tangent, ca->co, (ca - 1)->co);
- VECCOPY(prev_tangent, tangent);
- normalize_v3(prev_tangent);
+ normalize_v3_v3(prev_tangent, tangent);
/* First rotation is based on emitting face orientation. */
/* This is way better than having flipping rotations resulting */
@@ -4371,20 +4367,14 @@ void psys_make_billboard(ParticleBillboardData *bb, float xvec[3], float yvec[3]
onevec[bb->align]=1.0f;
if(bb->lock && (bb->align == PART_BB_VIEW)) {
- VECCOPY(xvec, bb->ob->obmat[0]);
- normalize_v3(xvec);
-
- VECCOPY(yvec, bb->ob->obmat[1]);
- normalize_v3(yvec);
-
- VECCOPY(zvec, bb->ob->obmat[2]);
- normalize_v3(zvec);
+ normalize_v3_v3(xvec, bb->ob->obmat[0]);
+ normalize_v3_v3(yvec, bb->ob->obmat[1]);
+ normalize_v3_v3(zvec, bb->ob->obmat[2]);
}
else if(bb->align == PART_BB_VEL) {
float temp[3];
- VECCOPY(temp, bb->vel);
- normalize_v3(temp);
+ normalize_v3_v3(temp, bb->vel);
VECSUB(zvec, bb->ob->obmat[3], bb->vec);
diff --git a/source/blender/blenkernel/intern/particle_system.c b/source/blender/blenkernel/intern/particle_system.c
index 9b9c3ff16b6..cfbab609f37 100644
--- a/source/blender/blenkernel/intern/particle_system.c
+++ b/source/blender/blenkernel/intern/particle_system.c
@@ -1729,8 +1729,7 @@ void reset_particle(ParticleSimulationData *sim, ParticleData *pa, float dtime,
mul_qt_v3(rot, vtan);
mul_qt_v3(rot, utan);
- VECCOPY(p_vel, state.vel);
- speed=normalize_v3(p_vel);
+ speed= normalize_v3_v3(p_vel, state.vel);
mul_v3_fl(p_vel, dot_v3v3(r_vel, p_vel));
VECSUB(p_vel, r_vel, p_vel);
normalize_v3(p_vel);
@@ -1871,18 +1870,15 @@ void reset_particle(ParticleSimulationData *sim, ParticleData *pa, float dtime,
/* *emitter object orientation */
if(part->ob_vel[0]!=0.0) {
- VECCOPY(vec, ob->obmat[0]);
- normalize_v3(vec);
+ normalize_v3_v3(vec, ob->obmat[0]);
VECADDFAC(vel, vel, vec, part->ob_vel[0]);
}
if(part->ob_vel[1]!=0.0) {
- VECCOPY(vec, ob->obmat[1]);
- normalize_v3(vec);
+ normalize_v3_v3(vec, ob->obmat[1]);
VECADDFAC(vel, vel, vec, part->ob_vel[1]);
}
if(part->ob_vel[2]!=0.0) {
- VECCOPY(vec, ob->obmat[2]);
- normalize_v3(vec);
+ normalize_v3_v3(vec, ob->obmat[2]);
VECADDFAC(vel, vel, vec, part->ob_vel[2]);
}
diff --git a/source/blender/blenkernel/intern/pointcache.c b/source/blender/blenkernel/intern/pointcache.c
index 6cf49808ec7..a35e40d7cf7 100644
--- a/source/blender/blenkernel/intern/pointcache.c
+++ b/source/blender/blenkernel/intern/pointcache.c
@@ -2240,7 +2240,7 @@ void BKE_ptcache_remove(void)
static int CONTINUE_PHYSICS = 0;
-void BKE_ptcache_set_continue_physics(Scene *scene, int enable)
+void BKE_ptcache_set_continue_physics(Main *bmain, Scene *scene, int enable)
{
Object *ob;
@@ -2248,7 +2248,7 @@ void BKE_ptcache_set_continue_physics(Scene *scene, int enable)
CONTINUE_PHYSICS = enable;
if(CONTINUE_PHYSICS == 0) {
- for(ob=G.main->object.first; ob; ob=ob->id.next)
+ for(ob=bmain->object.first; ob; ob=ob->id.next)
if(BKE_ptcache_object_reset(scene, ob, PTCACHE_RESET_OUTDATED))
DAG_id_flush_update(&ob->id, OB_RECALC_DATA);
}
diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c
index 95705ea8c05..8793c412d7d 100644
--- a/source/blender/blenkernel/intern/scene.c
+++ b/source/blender/blenkernel/intern/scene.c
@@ -38,7 +38,6 @@
#else
#include <io.h>
#endif
-#include "MEM_guardedalloc.h"
#include "DNA_anim_types.h"
#include "DNA_group_types.h"
@@ -47,6 +46,8 @@
#include "DNA_screen_types.h"
#include "DNA_sequence_types.h"
+#include "MEM_guardedalloc.h"
+
#include "BKE_anim.h"
#include "BKE_animsys.h"
#include "BKE_depsgraph.h"
@@ -68,10 +69,6 @@
//XXX #include "BIF_previewrender.h"
//XXX #include "BIF_editseq.h"
-#ifndef DISABLE_PYTHON
-#include "BPY_extern.h"
-#endif
-
#include "BLI_math.h"
#include "BLI_blenlib.h"
@@ -320,11 +317,12 @@ void free_scene(Scene *sce)
Scene *add_scene(char *name)
{
+ Main *bmain= G.main;
Scene *sce;
ParticleEditSettings *pset;
int a;
- sce= alloc_libblock(&G.main->scene, ID_SCE, name);
+ sce= alloc_libblock(&bmain->scene, ID_SCE, name);
sce->lay= sce->layact= 1;
sce->r.mode= R_GAMMA|R_OSA|R_SHADOW|R_SSS|R_ENVMAP|R_RAYTRACE;
@@ -586,7 +584,7 @@ void unlink_scene(Main *bmain, Scene *sce, Scene *newsce)
sce1->set= NULL;
/* check all sequences */
- clear_scene_in_allseqs(sce);
+ clear_scene_in_allseqs(bmain, sce);
/* check render layer nodes in other scenes */
clear_scene_in_nodes(bmain, sce);
diff --git a/source/blender/blenkernel/intern/screen.c b/source/blender/blenkernel/intern/screen.c
index a8140cb815d..6f1d32898f9 100644
--- a/source/blender/blenkernel/intern/screen.c
+++ b/source/blender/blenkernel/intern/screen.c
@@ -42,10 +42,6 @@
#include "BKE_screen.h"
-#ifndef DISABLE_PYTHON
-#include "BPY_extern.h"
-#endif
-
/* ************ Spacetype/regiontype handling ************** */
/* keep global; this has to be accessible outside of windowmanager */
diff --git a/source/blender/blenkernel/intern/seqeffects.c b/source/blender/blenkernel/intern/seqeffects.c
index 1e1ace0f758..461cb075bb0 100644
--- a/source/blender/blenkernel/intern/seqeffects.c
+++ b/source/blender/blenkernel/intern/seqeffects.c
@@ -41,6 +41,7 @@
#include "DNA_anim_types.h"
#include "BKE_fcurve.h"
+#include "BKE_main.h"
#include "BKE_plugin_types.h"
#include "BKE_sequencer.h"
#include "BKE_texture.h"
@@ -272,7 +273,7 @@ static ImBuf * IMB_cast_away_list(ImBuf * i)
}
static struct ImBuf * do_plugin_effect(
- Scene *scene, Sequence *seq, float cfra,
+ Main *bmain, Scene *scene, Sequence *seq, float cfra,
float facf0, float facf1, int x, int y,
int preview_render_size,
struct ImBuf *ibuf1, struct ImBuf *ibuf2,
@@ -523,7 +524,7 @@ static void do_alphaover_effect_float(float facf0, float facf1, int x, int y,
}
static struct ImBuf * do_alphaover_effect(
- Scene *scene, Sequence *seq, float cfra,
+ Main *bmain, Scene *scene, Sequence *seq, float cfra,
float facf0, float facf1, int x, int y,
int preview_render_size,
struct ImBuf *ibuf1, struct ImBuf *ibuf2,
@@ -695,7 +696,7 @@ static void do_alphaunder_effect_float(float facf0, float facf1, int x, int y,
}
static struct ImBuf* do_alphaunder_effect(
- Scene *scene, Sequence *seq, float cfra,
+ Main *bmain, Scene *scene, Sequence *seq, float cfra,
float facf0, float facf1, int x, int y,
int preview_render_size,
struct ImBuf *ibuf1, struct ImBuf *ibuf2,
@@ -820,7 +821,7 @@ void do_cross_effect_float(float facf0, float facf1, int x, int y,
/* carefull: also used by speed effect! */
static struct ImBuf* do_cross_effect(
- Scene *scene, Sequence *seq, float cfra,
+ Main *bmain, Scene *scene, Sequence *seq, float cfra,
float facf0, float facf1, int x, int y,
int preview_render_size,
struct ImBuf *ibuf1, struct ImBuf *ibuf2,
@@ -1087,7 +1088,7 @@ static void do_gammacross_effect_float(float facf0, float facf1,
}
static struct ImBuf * do_gammacross_effect(
- Scene *scene, Sequence *seq, float cfra,
+ Main *bmain, Scene *scene, Sequence *seq, float cfra,
float facf0, float facf1, int x, int y,
int preview_render_size,
struct ImBuf *ibuf1, struct ImBuf *ibuf2,
@@ -1205,7 +1206,7 @@ static void do_add_effect_float(float facf0, float facf1, int x, int y,
}
}
-static struct ImBuf * do_add_effect(Scene *scene, Sequence *seq, float cfra,
+static struct ImBuf * do_add_effect(Main *bmain, Scene *scene, Sequence *seq, float cfra,
float facf0, float facf1, int x, int y,
int preview_render_size,
struct ImBuf *ibuf1, struct ImBuf *ibuf2,
@@ -1322,7 +1323,7 @@ static void do_sub_effect_float(float facf0, float facf1, int x, int y,
}
static struct ImBuf * do_sub_effect(
- Scene *scene, Sequence *seq, float cfra,
+ Main *bmain, Scene *scene, Sequence *seq, float cfra,
float facf0, float facf1, int x, int y,
int preview_render_size,
struct ImBuf *ibuf1, struct ImBuf *ibuf2,
@@ -1536,7 +1537,7 @@ static void do_mul_effect_float(float facf0, float facf1, int x, int y,
}
static struct ImBuf * do_mul_effect(
- Scene *scene, Sequence *seq, float cfra,
+ Main *bmain, Scene *scene, Sequence *seq, float cfra,
float facf0, float facf1, int x, int y,
int preview_render_size,
struct ImBuf *ibuf1, struct ImBuf *ibuf2,
@@ -1992,7 +1993,7 @@ static void do_wipe_effect_float(Sequence *seq, float facf0, float facf1,
}
static struct ImBuf * do_wipe_effect(
- Scene *scene, Sequence *seq, float cfra,
+ Main *bmain, Scene *scene, Sequence *seq, float cfra,
float facf0, float facf1, int x, int y,
int preview_render_size,
struct ImBuf *ibuf1, struct ImBuf *ibuf2,
@@ -2143,7 +2144,7 @@ static void do_transform(Scene *scene, Sequence *seq, float facf0, int x, int y,
static struct ImBuf * do_transform_effect(
- Scene *scene, Sequence *seq,float cfra,
+ Main *bmain, Scene *scene, Sequence *seq,float cfra,
float facf0, float facf1, int x, int y,
int preview_render_size,
struct ImBuf *ibuf1, struct ImBuf *ibuf2,
@@ -2661,7 +2662,7 @@ static void do_glow_effect_float(Sequence *seq, float facf0, float facf1,
}
static struct ImBuf * do_glow_effect(
- Scene *scene, Sequence *seq, float cfra,
+ Main *bmain, Scene *scene, Sequence *seq, float cfra,
float facf0, float facf1, int x, int y,
int preview_render_size,
struct ImBuf *ibuf1, struct ImBuf *ibuf2,
@@ -2722,7 +2723,7 @@ static int early_out_color(struct Sequence *seq,
}
static struct ImBuf * do_solid_color(
- Scene *scene, Sequence *seq, float cfra,
+ Main *bmain, Scene *scene, Sequence *seq, float cfra,
float facf0, float facf1, int x, int y,
int preview_render_size,
struct ImBuf *ibuf1, struct ImBuf *ibuf2,
@@ -2818,7 +2819,7 @@ static int early_out_multicam(struct Sequence *seq, float facf0, float facf1)
}
static struct ImBuf * do_multicam(
- Scene *scene, Sequence *seq, float cfra,
+ Main *bmain, Scene *scene, Sequence *seq, float cfra,
float facf0, float facf1, int x, int y,
int preview_render_size,
struct ImBuf *ibuf1, struct ImBuf *ibuf2,
@@ -2842,7 +2843,7 @@ static struct ImBuf * do_multicam(
return 0;
}
- i = give_ibuf_seqbase(scene, x, y, cfra, seq->multicam_source,
+ i = give_ibuf_seqbase(bmain, scene, x, y, cfra, seq->multicam_source,
preview_render_size, seqbasep);
if (!i) {
return 0;
@@ -3122,7 +3123,7 @@ static void get_default_fac_fade(struct Sequence *seq, float cfra,
*facf1 /= seq->len;
}
-static struct ImBuf * do_overdrop_effect(Scene *scene, Sequence *seq, float cfra,
+static struct ImBuf * do_overdrop_effect(Main *bmain, Scene *scene, Sequence *seq, float cfra,
float facf0, float facf1,
int x, int y,
int preview_render_size,
diff --git a/source/blender/blenkernel/intern/sequencer.c b/source/blender/blenkernel/intern/sequencer.c
index 866f907ef9e..b20bb111cb4 100644
--- a/source/blender/blenkernel/intern/sequencer.c
+++ b/source/blender/blenkernel/intern/sequencer.c
@@ -554,7 +554,7 @@ void calc_sequence(Scene *scene, Sequence *seq)
}
/* note: caller should run calc_sequence(scene, seq) after */
-void reload_sequence_new_file(Scene *scene, Sequence * seq, int lock_range)
+void reload_sequence_new_file(Main *bmain, Scene *scene, Sequence * seq, int lock_range)
{
char str[FILE_MAXDIR+FILE_MAXFILE];
int prev_startdisp, prev_enddisp;
@@ -621,7 +621,7 @@ void reload_sequence_new_file(Scene *scene, Sequence * seq, int lock_range)
seq->strip->len = seq->len;
} else if (seq->type == SEQ_SCENE) {
/* 'seq->scenenr' should be replaced with something more reliable */
- Scene * sce = G.main->scene.first;
+ Scene * sce = bmain->scene.first;
int nr = 1;
while(sce) {
@@ -710,12 +710,12 @@ static int clear_scene_in_allseqs_cb(Sequence *seq, void *arg_pt)
return 1;
}
-void clear_scene_in_allseqs(Scene *scene)
+void clear_scene_in_allseqs(Main *bmain, Scene *scene)
{
Scene *scene_iter;
/* when a scene is deleted: test all seqs */
- for(scene_iter= G.main->scene.first; scene_iter; scene_iter= scene_iter->id.next) {
+ for(scene_iter= bmain->scene.first; scene_iter; scene_iter= scene_iter->id.next) {
if(scene_iter != scene && scene_iter->ed) {
seqbase_recursive_apply(&scene_iter->ed->seqbase, clear_scene_in_allseqs_cb, scene);
}
@@ -1659,17 +1659,17 @@ static void copy_to_ibuf_still(Sequence * seq, float nr,
********************************************************************** */
static ImBuf* seq_render_strip_stack(
- Scene *scene,
+ Main *bmain, Scene *scene,
ListBase *seqbasep, float cfra, int chanshown, int render_size,
int seqrectx, int seqrecty);
-static ImBuf * seq_render_strip(Scene *scene, Sequence * seq, float cfra,
+static ImBuf * seq_render_strip(Main *bmain, Scene *scene, Sequence * seq, float cfra,
int render_size,
int seqrectx, int seqrecty);
static ImBuf* seq_render_effect_strip_impl(
- Scene *scene, float cfra, Sequence *seq, int render_size,
+ Main *bmain, Scene *scene, float cfra, Sequence *seq, int render_size,
int seqrectx, int seqrecty)
{
float fac, facf;
@@ -1707,7 +1707,7 @@ static ImBuf* seq_render_effect_strip_impl(
early_out = sh.early_out(seq, fac, facf);
if (early_out == -1) { /* no input needed */
- out = sh.execute(scene, seq, cfra, fac, facf,
+ out = sh.execute(bmain, scene, seq, cfra, fac, facf,
seqrectx, seqrecty, render_size,
0, 0, 0);
goto finish;
@@ -1722,7 +1722,7 @@ static ImBuf* seq_render_effect_strip_impl(
break;
case 1:
if (seq->seq1) {
- ibuf[0] = seq_render_strip(scene, seq->seq1, cfra,
+ ibuf[0] = seq_render_strip(bmain, scene, seq->seq1, cfra,
render_size,
seqrectx, seqrecty);
}
@@ -1737,7 +1737,7 @@ static ImBuf* seq_render_effect_strip_impl(
goto finish;
case 2:
if (seq->seq2) {
- ibuf[1] = seq_render_strip(scene, seq->seq2, cfra,
+ ibuf[1] = seq_render_strip(bmain, scene, seq->seq2, cfra,
render_size,
seqrectx, seqrecty);
}
@@ -1755,19 +1755,19 @@ static ImBuf* seq_render_effect_strip_impl(
}
if (seq->seq1) {
- ibuf[0] = seq_render_strip(scene, seq->seq1, cfra,
+ ibuf[0] = seq_render_strip(bmain, scene, seq->seq1, cfra,
render_size,
seqrectx, seqrecty);
}
if (seq->seq2) {
- ibuf[1] = seq_render_strip(scene, seq->seq2, cfra,
+ ibuf[1] = seq_render_strip(bmain, scene, seq->seq2, cfra,
render_size,
seqrectx, seqrecty);
}
if (seq->seq3) {
- ibuf[2] = seq_render_strip(scene, seq->seq3, cfra,
+ ibuf[2] = seq_render_strip(bmain, scene, seq->seq3, cfra,
render_size,
seqrectx, seqrecty);
}
@@ -1776,7 +1776,7 @@ static ImBuf* seq_render_effect_strip_impl(
goto finish;
}
- out = sh.execute(scene, seq, cfra, fac, facf, seqrectx, seqrecty,
+ out = sh.execute(bmain, scene, seq, cfra, fac, facf, seqrectx, seqrecty,
render_size,
ibuf[0], ibuf[1], ibuf[2]);
@@ -1795,7 +1795,7 @@ finish:
static ImBuf * seq_render_scene_strip_impl(
- Scene * scene, Sequence * seq, float nr, int seqrectx, int seqrecty)
+ Main *bmain, Scene * scene, Sequence * seq, float nr, int seqrectx, int seqrecty)
{
ImBuf * ibuf = 0;
float frame= seq->sfra + nr + seq->anim_startofs;
@@ -1851,7 +1851,7 @@ static ImBuf * seq_render_scene_strip_impl(
if(sequencer_view3d_cb && BLI_thread_is_main() && doseq_gl && (seq->scene == scene || have_seq==0) && seq->scene->camera) {
/* opengl offscreen render */
- scene_update_for_newframe(G.main, seq->scene, seq->scene->lay);
+ scene_update_for_newframe(bmain, seq->scene, seq->scene->lay);
ibuf= sequencer_view3d_cb(seq->scene, seqrectx, seqrecty,
scene->r.seq_prev_type);
}
@@ -1864,7 +1864,7 @@ static ImBuf * seq_render_scene_strip_impl(
else
re= RE_NewRender(sce->id.name);
- RE_BlenderFrame(re, G.main, sce, NULL, sce->lay, frame);
+ RE_BlenderFrame(re, bmain, sce, NULL, sce->lay, frame);
RE_AcquireResultImage(re, &rres);
@@ -1904,7 +1904,7 @@ static ImBuf * seq_render_scene_strip_impl(
return ibuf;
}
-static ImBuf * seq_render_strip(Scene *scene, Sequence * seq, float cfra,
+static ImBuf * seq_render_strip(Main *bmain, Scene *scene, Sequence * seq, float cfra,
int render_size,
int seqrectx, int seqrecty)
{
@@ -1929,7 +1929,7 @@ static ImBuf * seq_render_strip(Scene *scene, Sequence * seq, float cfra,
if(!ibuf && seq->seqbase.first) {
meta_ibuf = seq_render_strip_stack(
- scene,
+ bmain, scene,
&seq->seqbase, seq->start + nr, 0,
render_size, seqrectx, seqrecty);
}
@@ -1961,7 +1961,7 @@ static ImBuf * seq_render_strip(Scene *scene, Sequence * seq, float cfra,
/* weeek! */
f_cfra = seq->start + s->frameMap[(int) nr];
- child_ibuf = seq_render_strip(scene, seq->seq1, f_cfra,
+ child_ibuf = seq_render_strip(bmain, scene, seq->seq1, f_cfra,
render_size,
seqrectx, seqrecty);
}
@@ -1985,7 +1985,7 @@ static ImBuf * seq_render_strip(Scene *scene, Sequence * seq, float cfra,
if(ibuf == 0) {
ibuf = seq_render_effect_strip_impl(
- scene, cfra, seq, render_size,
+ bmain, scene, cfra, seq, render_size,
seqrectx, seqrecty);
}
} else if(seq->type == SEQ_IMAGE) {
@@ -2061,7 +2061,7 @@ static ImBuf * seq_render_strip(Scene *scene, Sequence * seq, float cfra,
}
if (ibuf == 0) {
- ibuf = seq_render_scene_strip_impl(scene, seq, nr,
+ ibuf = seq_render_scene_strip_impl(bmain, scene, seq, nr,
seqrectx, seqrecty);
copy_to_ibuf_still(seq, nr, ibuf);
@@ -2129,7 +2129,7 @@ static int seq_get_early_out_for_blend_mode(Sequence * seq)
}
static ImBuf* seq_render_strip_stack(
- Scene *scene, ListBase *seqbasep, float cfra, int chanshown,
+ Main *bmain, Scene *scene, ListBase *seqbasep, float cfra, int chanshown,
int render_size, int seqrectx, int seqrecty)
{
Sequence* seq_arr[MAXSEQ+1];
@@ -2161,7 +2161,7 @@ static ImBuf* seq_render_strip_stack(
}
if(count == 1) {
- out = seq_render_strip(scene, seq_arr[0],
+ out = seq_render_strip(bmain, scene, seq_arr[0],
cfra, render_size,
seqrectx, seqrecty);
seq_stripelem_cache_put(
@@ -2185,7 +2185,7 @@ static ImBuf* seq_render_strip_stack(
break;
}
if (seq->blend_mode == SEQ_BLEND_REPLACE) {
- out = seq_render_strip(scene, seq, cfra,
+ out = seq_render_strip(bmain, scene, seq, cfra,
render_size,
seqrectx, seqrecty);
break;
@@ -2196,7 +2196,7 @@ static ImBuf* seq_render_strip_stack(
switch (early_out) {
case -1:
case 2:
- out = seq_render_strip(scene, seq, cfra,
+ out = seq_render_strip(bmain, scene, seq, cfra,
render_size,
seqrectx, seqrecty);
break;
@@ -2209,7 +2209,7 @@ static ImBuf* seq_render_strip_stack(
break;
case 0:
if (i == 0) {
- out = seq_render_strip(scene, seq, cfra,
+ out = seq_render_strip(bmain, scene, seq, cfra,
render_size,
seqrectx, seqrecty);
}
@@ -2234,7 +2234,7 @@ static ImBuf* seq_render_strip_stack(
if (seq_get_early_out_for_blend_mode(seq) == 0) {
struct SeqEffectHandle sh = get_sequence_blend(seq);
ImBuf * ibuf1 = out;
- ImBuf * ibuf2 = seq_render_strip(scene, seq, cfra,
+ ImBuf * ibuf2 = seq_render_strip(bmain, scene, seq, cfra,
render_size,
seqrectx, seqrecty);
@@ -2246,11 +2246,11 @@ static ImBuf* seq_render_strip_stack(
int y= seqrecty;
if (swap_input) {
- out = sh.execute(scene, seq, cfra,
+ out = sh.execute(bmain, scene, seq, cfra,
facf, facf, x, y, render_size,
ibuf2, ibuf1, 0);
} else {
- out = sh.execute(scene, seq, cfra,
+ out = sh.execute(bmain, scene, seq, cfra,
facf, facf, x, y, render_size,
ibuf1, ibuf2, 0);
}
@@ -2272,7 +2272,7 @@ static ImBuf* seq_render_strip_stack(
* you have to free after usage!
*/
-ImBuf *give_ibuf_seq(Scene *scene, int rectx, int recty, int cfra, int chanshown, int render_size)
+ImBuf *give_ibuf_seq(Main *bmain, Scene *scene, int rectx, int recty, int cfra, int chanshown, int render_size)
{
Editing *ed= seq_give_editing(scene, FALSE);
int count;
@@ -2289,18 +2289,18 @@ ImBuf *give_ibuf_seq(Scene *scene, int rectx, int recty, int cfra, int chanshown
}
return seq_render_strip_stack(
- scene, seqbasep, cfra, chanshown, render_size, rectx, recty);
+ bmain, scene, seqbasep, cfra, chanshown, render_size, rectx, recty);
}
-ImBuf *give_ibuf_seqbase(struct Scene *scene, int rectx, int recty, int cfra, int chanshown, int render_size, ListBase *seqbasep)
+ImBuf *give_ibuf_seqbase(Main *bmain, Scene *scene, int rectx, int recty, int cfra, int chanshown, int render_size, ListBase *seqbasep)
{
- return seq_render_strip_stack(scene, seqbasep, cfra, chanshown, render_size, rectx, recty);
+ return seq_render_strip_stack(bmain, scene, seqbasep, cfra, chanshown, render_size, rectx, recty);
}
-ImBuf *give_ibuf_seq_direct(Scene *scene, int rectx, int recty, int cfra, int render_size, Sequence *seq)
+ImBuf *give_ibuf_seq_direct(Main *bmain, Scene *scene, int rectx, int recty, int cfra, int render_size, Sequence *seq)
{
- return seq_render_strip(scene, seq, cfra, render_size, rectx, recty);
+ return seq_render_strip(bmain, scene, seq, cfra, render_size, rectx, recty);
}
#if 0
@@ -2566,13 +2566,13 @@ static void seq_wait_for_prefetch_ready()
}
#endif
-ImBuf *give_ibuf_seq_threaded(Scene *scene, int rectx, int recty, int cfra, int chanshown, int render_size)
+ImBuf *give_ibuf_seq_threaded(Main *bmain, Scene *scene, int rectx, int recty, int cfra, int chanshown, int render_size)
{
PrefetchQueueElem *e = NULL;
int found_something = FALSE;
if (seq_thread_shutdown) {
- return give_ibuf_seq(scene, rectx, recty, cfra, chanshown, render_size);
+ return give_ibuf_seq(bmain, scene, rectx, recty, cfra, chanshown, render_size);
}
while (!e) {
diff --git a/source/blender/blenkernel/intern/shrinkwrap.c b/source/blender/blenkernel/intern/shrinkwrap.c
index b48d6a67638..8edb01c09a6 100644
--- a/source/blender/blenkernel/intern/shrinkwrap.c
+++ b/source/blender/blenkernel/intern/shrinkwrap.c
@@ -51,7 +51,6 @@
#include "BLI_math.h"
#include "BLI_editVert.h"
-#include "MEM_guardedalloc.h"
/* Util macros */
diff --git a/source/blender/blenkernel/intern/sketch.c b/source/blender/blenkernel/intern/sketch.c
index 33871f78864..7e39cdd1196 100644
--- a/source/blender/blenkernel/intern/sketch.c
+++ b/source/blender/blenkernel/intern/sketch.c
@@ -72,8 +72,7 @@ void sk_initPoint(SK_Point *pt, SK_DrawData *dd, float *no)
{
if (no)
{
- VECCOPY(pt->no, no);
- normalize_v3(pt->no);
+ normalize_v3_v3(pt->no, no);
}
else
{
diff --git a/source/blender/blenkernel/intern/smoke.c b/source/blender/blenkernel/intern/smoke.c
index 97eb3aa866c..11012843131 100644
--- a/source/blender/blenkernel/intern/smoke.c
+++ b/source/blender/blenkernel/intern/smoke.c
@@ -37,8 +37,8 @@
#include <float.h>
#include <math.h>
-#include "stdio.h"
-#include "string.h" /* memset */
+#include <stdio.h>
+#include <string.h> /* memset */
#include "BLI_linklist.h"
#include "BLI_rand.h"
diff --git a/source/blender/blenkernel/intern/softbody.c b/source/blender/blenkernel/intern/softbody.c
index b8e824ce3d5..98a50eee146 100644
--- a/source/blender/blenkernel/intern/softbody.c
+++ b/source/blender/blenkernel/intern/softbody.c
@@ -2032,8 +2032,7 @@ static int sb_detect_vertex_collisionCached(float opco[3], float facenormal[3],
VECCOPY(vel,avel);
if (ci) *intrusion /= ci;
if (deflected){
- VECCOPY(facenormal,force);
- normalize_v3(facenormal);
+ normalize_v3_v3(facenormal, force);
}
return deflected;
}
diff --git a/source/blender/blenkernel/intern/sound.c b/source/blender/blenkernel/intern/sound.c
index 8fd97a80110..26392132038 100644
--- a/source/blender/blenkernel/intern/sound.c
+++ b/source/blender/blenkernel/intern/sound.c
@@ -382,10 +382,8 @@ void sound_move_scene_sound(struct Scene *scene, void* handle, int startframe, i
void sound_start_play_scene(struct Scene *scene)
{
- AUD_Sound* sound;
- sound = AUD_loopSound(scene->sound_scene);
- scene->sound_scene_handle = AUD_play(sound, 1);
- AUD_unload(sound);
+ scene->sound_scene_handle = AUD_play(scene->sound_scene, 1);
+ AUD_setLoop(scene->sound_scene_handle, -1);
}
void sound_play_scene(struct Scene *scene)
@@ -398,8 +396,6 @@ void sound_play_scene(struct Scene *scene)
if(status == AUD_STATUS_INVALID)
sound_start_play_scene(scene);
- AUD_setLoop(scene->sound_scene_handle, -1, -1);
-
if(status != AUD_STATUS_PLAYING)
{
AUD_seek(scene->sound_scene_handle, CFRA / FPS);
@@ -437,12 +433,16 @@ void sound_seek_scene(struct bContext *C)
if(scene->audio.flag & AUDIO_SCRUB && !CTX_wm_screen(C)->animtimer)
{
- AUD_setLoop(scene->sound_scene_handle, -1, 1 / FPS);
+ // AUD_XXX TODO: fix scrubbing, it currently doesn't stop playing
if(scene->audio.flag & AUDIO_SYNC)
AUD_seekSequencer(scene->sound_scene_handle, CFRA / FPS);
else
AUD_seek(scene->sound_scene_handle, CFRA / FPS);
AUD_resume(scene->sound_scene_handle);
+ if(AUD_getStatus(scene->sound_scrub_handle) != AUD_STATUS_INVALID)
+ AUD_seek(scene->sound_scrub_handle, 0);
+ else
+ scene->sound_scrub_handle = AUD_pauseAfter(scene->sound_scene_handle, 1 / FPS);
}
else
{
diff --git a/source/blender/blenkernel/intern/text.c b/source/blender/blenkernel/intern/text.c
index c8f5eb9b187..19bc853276a 100644
--- a/source/blender/blenkernel/intern/text.c
+++ b/source/blender/blenkernel/intern/text.c
@@ -174,10 +174,11 @@ void free_text(Text *text)
Text *add_empty_text(char *name)
{
+ Main *bmain= G.main;
Text *ta;
TextLine *tmp;
- ta= alloc_libblock(&G.main->text, ID_TXT, name);
+ ta= alloc_libblock(&bmain->text, ID_TXT, name);
ta->id.us= 1;
ta->name= NULL;
@@ -326,6 +327,7 @@ int reopen_text(Text *text)
Text *add_text(char *file, const char *relpath)
{
+ Main *bmain= G.main;
FILE *fp;
int i, llen, len, res;
unsigned char *buffer;
@@ -341,7 +343,7 @@ Text *add_text(char *file, const char *relpath)
fp= fopen(str, "r");
if(fp==NULL) return NULL;
- ta= alloc_libblock(&G.main->text, ID_TXT, BLI_path_basename(str));
+ ta= alloc_libblock(&bmain->text, ID_TXT, BLI_path_basename(str));
ta->id.us= 1;
ta->lines.first= ta->lines.last= NULL;
diff --git a/source/blender/blenkernel/intern/texture.c b/source/blender/blenkernel/intern/texture.c
index f93bd718335..6f0b1320225 100644
--- a/source/blender/blenkernel/intern/texture.c
+++ b/source/blender/blenkernel/intern/texture.c
@@ -604,9 +604,10 @@ void tex_set_type(Tex *tex, int type)
Tex *add_texture(const char *name)
{
+ Main *bmain= G.main;
Tex *tex;
- tex= alloc_libblock(&G.main->tex, ID_TE, name);
+ tex= alloc_libblock(&bmain->tex, ID_TE, name);
default_tex(tex);
@@ -728,6 +729,7 @@ Tex *copy_texture(Tex *tex)
void make_local_texture(Tex *tex)
{
+ Main *bmain= G.main;
Tex *texn;
Material *ma;
World *wrld;
@@ -757,7 +759,7 @@ void make_local_texture(Tex *tex)
return;
}
- ma= G.main->mat.first;
+ ma= bmain->mat.first;
while(ma) {
for(a=0; a<MAX_MTEX; a++) {
if(ma->mtex[a] && ma->mtex[a]->tex==tex) {
@@ -767,7 +769,7 @@ void make_local_texture(Tex *tex)
}
ma= ma->id.next;
}
- la= G.main->lamp.first;
+ la= bmain->lamp.first;
while(la) {
for(a=0; a<MAX_MTEX; a++) {
if(la->mtex[a] && la->mtex[a]->tex==tex) {
@@ -777,7 +779,7 @@ void make_local_texture(Tex *tex)
}
la= la->id.next;
}
- wrld= G.main->world.first;
+ wrld= bmain->world.first;
while(wrld) {
for(a=0; a<MAX_MTEX; a++) {
if(wrld->mtex[a] && wrld->mtex[a]->tex==tex) {
@@ -787,7 +789,7 @@ void make_local_texture(Tex *tex)
}
wrld= wrld->id.next;
}
- br= G.main->brush.first;
+ br= bmain->brush.first;
while(br) {
if(br->mtex.tex==tex) {
if(br->id.lib) lib= 1;
@@ -805,7 +807,7 @@ void make_local_texture(Tex *tex)
texn= copy_texture(tex);
texn->id.us= 0;
- ma= G.main->mat.first;
+ ma= bmain->mat.first;
while(ma) {
for(a=0; a<MAX_MTEX; a++) {
if(ma->mtex[a] && ma->mtex[a]->tex==tex) {
@@ -818,7 +820,7 @@ void make_local_texture(Tex *tex)
}
ma= ma->id.next;
}
- la= G.main->lamp.first;
+ la= bmain->lamp.first;
while(la) {
for(a=0; a<MAX_MTEX; a++) {
if(la->mtex[a] && la->mtex[a]->tex==tex) {
@@ -831,7 +833,7 @@ void make_local_texture(Tex *tex)
}
la= la->id.next;
}
- wrld= G.main->world.first;
+ wrld= bmain->world.first;
while(wrld) {
for(a=0; a<MAX_MTEX; a++) {
if(wrld->mtex[a] && wrld->mtex[a]->tex==tex) {
@@ -844,7 +846,7 @@ void make_local_texture(Tex *tex)
}
wrld= wrld->id.next;
}
- br= G.main->brush.first;
+ br= bmain->brush.first;
while(br) {
if(br->mtex.tex==tex) {
if(br->id.lib==0) {
@@ -862,6 +864,7 @@ void make_local_texture(Tex *tex)
void autotexname(Tex *tex)
{
+ Main *bmain= G.main;
char texstr[20][15]= {"None" , "Clouds" , "Wood", "Marble", "Magic" , "Blend",
"Stucci", "Noise" , "Image", "Plugin", "EnvMap" , "Musgrave",
"Voronoi", "DistNoise", "Point Density", "Voxel Data", "", "", "", ""};
@@ -870,7 +873,7 @@ void autotexname(Tex *tex)
if(tex) {
if(tex->use_nodes) {
- new_id(&G.main->tex, (ID *)tex, "Noddy");
+ new_id(&bmain->tex, (ID *)tex, "Noddy");
}
else
if(tex->type==TEX_IMAGE) {
@@ -880,12 +883,12 @@ void autotexname(Tex *tex)
BLI_splitdirstring(di, fi);
strcpy(di, "I.");
strcat(di, fi);
- new_id(&G.main->tex, (ID *)tex, di);
+ new_id(&bmain->tex, (ID *)tex, di);
}
- else new_id(&G.main->tex, (ID *)tex, texstr[tex->type]);
+ else new_id(&bmain->tex, (ID *)tex, texstr[tex->type]);
}
- else if(tex->type==TEX_PLUGIN && tex->plugin) new_id(&G.main->tex, (ID *)tex, tex->plugin->pname);
- else new_id(&G.main->tex, (ID *)tex, texstr[tex->type]);
+ else if(tex->type==TEX_PLUGIN && tex->plugin) new_id(&bmain->tex, (ID *)tex, tex->plugin->pname);
+ else new_id(&bmain->tex, (ID *)tex, texstr[tex->type]);
}
}
diff --git a/source/blender/blenkernel/intern/world.c b/source/blender/blenkernel/intern/world.c
index 1d1b5ec16f7..42df92443f3 100644
--- a/source/blender/blenkernel/intern/world.c
+++ b/source/blender/blenkernel/intern/world.c
@@ -44,10 +44,6 @@
#include "BKE_main.h"
#include "BKE_icons.h"
-#ifndef DISABLE_PYTHON
-#include "BPY_extern.h"
-#endif
-
void free_world(World *wrld)
{
MTex *mtex;
@@ -69,9 +65,10 @@ void free_world(World *wrld)
World *add_world(char *name)
{
+ Main *bmain= G.main;
World *wrld;
- wrld= alloc_libblock(&G.main->world, ID_WO, name);
+ wrld= alloc_libblock(&bmain->world, ID_WO, name);
wrld->horr= 0.05f;
wrld->horg= 0.05f;
@@ -129,6 +126,7 @@ World *copy_world(World *wrld)
void make_local_world(World *wrld)
{
+ Main *bmain= G.main;
Scene *sce;
World *wrldn;
int local=0, lib=0;
@@ -146,7 +144,7 @@ void make_local_world(World *wrld)
return;
}
- sce= G.main->scene.first;
+ sce= bmain->scene.first;
while(sce) {
if(sce->world==wrld) {
if(sce->id.lib) lib= 1;
@@ -164,7 +162,7 @@ void make_local_world(World *wrld)
wrldn= copy_world(wrld);
wrldn->id.us= 0;
- sce= G.main->scene.first;
+ sce= bmain->scene.first;
while(sce) {
if(sce->world==wrld) {
if(sce->id.lib==0) {
diff --git a/source/blender/blenkernel/intern/writeframeserver.c b/source/blender/blenkernel/intern/writeframeserver.c
index 0ec8837c0e7..b0c05c31fa1 100644
--- a/source/blender/blenkernel/intern/writeframeserver.c
+++ b/source/blender/blenkernel/intern/writeframeserver.c
@@ -45,7 +45,6 @@
#include <stdlib.h>
-#include "MEM_guardedalloc.h"
#include "DNA_userdef_types.h"
#include "BKE_global.h"
diff --git a/source/blender/blenlib/BLI_ghash.h b/source/blender/blenlib/BLI_ghash.h
index 92a99c9a3b4..7c9433405ac 100644
--- a/source/blender/blenlib/BLI_ghash.h
+++ b/source/blender/blenlib/BLI_ghash.h
@@ -36,13 +36,14 @@
extern "C" {
#endif
-#include "stdio.h"
-#include "stdlib.h"
-#include "string.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
-#include "BKE_utildefines.h"
#include "MEM_guardedalloc.h"
+#include "BKE_utildefines.h"
+
#include "BLI_mempool.h"
#include "BLI_blenlib.h"
diff --git a/source/blender/blenlib/BLI_listbase.h b/source/blender/blenlib/BLI_listbase.h
index 599487354c3..c4dc0894f80 100644
--- a/source/blender/blenlib/BLI_listbase.h
+++ b/source/blender/blenlib/BLI_listbase.h
@@ -45,6 +45,7 @@ void BLI_insertlink(struct ListBase *listbase, void *vprevlink, void *vnewlink);
void *BLI_findlink(struct ListBase *listbase, int number);
int BLI_findindex(struct ListBase *listbase, void *vlink);
void *BLI_findstring(struct ListBase *listbase, const char *id, int offset);
+void *BLI_findstring_ptr(struct ListBase *listbase, const char *id, int offset);
int BLI_findstringindex(struct ListBase *listbase, const char *id, int offset);
void BLI_freelistN(struct ListBase *listbase);
void BLI_addtail(struct ListBase *listbase, void *vlink);
diff --git a/source/blender/blenlib/intern/BLI_ghash.c b/source/blender/blenlib/intern/BLI_ghash.c
index 11756ada40e..6daa2928716 100644
--- a/source/blender/blenlib/intern/BLI_ghash.c
+++ b/source/blender/blenlib/intern/BLI_ghash.c
@@ -28,10 +28,10 @@
* A general (pointer -> pointer) hash table ADT
*/
+#include "MEM_guardedalloc.h"
#include "BLI_ghash.h"
#include "BLO_sys_types.h" // for intptr_t support
-
/***/
unsigned int hashsizes[]= {
diff --git a/source/blender/blenlib/intern/listbase.c b/source/blender/blenlib/intern/listbase.c
index 0a6831558d1..776f2d085df 100644
--- a/source/blender/blenlib/intern/listbase.c
+++ b/source/blender/blenlib/intern/listbase.c
@@ -374,6 +374,27 @@ void *BLI_findstring(ListBase *listbase, const char *id, int offset)
return NULL;
}
+void *BLI_findstring_ptr(ListBase *listbase, const char *id, int offset)
+{
+ Link *link= NULL;
+ const char *id_iter;
+
+ if (listbase == NULL) return NULL;
+
+ link= listbase->first;
+ while (link) {
+ /* exact copy of BLI_findstring(), except for this line */
+ id_iter= *((const char **)(((const char *)link) + offset));
+
+ if(id[0] == id_iter[0] && strcmp(id, id_iter)==0)
+ return link;
+
+ link= link->next;
+ }
+
+ return NULL;
+}
+
int BLI_findstringindex(ListBase *listbase, const char *id, int offset)
{
Link *link= NULL;
diff --git a/source/blender/blenlib/intern/math_geom.c b/source/blender/blenlib/intern/math_geom.c
index fd0829ebe3b..68b1feea632 100644
--- a/source/blender/blenlib/intern/math_geom.c
+++ b/source/blender/blenlib/intern/math_geom.c
@@ -841,10 +841,8 @@ int isect_line_line_v3(float v1[3], float v2[3], float v3[3], float v4[3], float
sub_v3_v3v3(a, v2, v1);
sub_v3_v3v3(b, v4, v3);
- copy_v3_v3(dir1, a);
- normalize_v3(dir1);
- copy_v3_v3(dir2, b);
- normalize_v3(dir2);
+ normalize_v3_v3(dir1, a);
+ normalize_v3_v3(dir2, b);
d = dot_v3v3(dir1, dir2);
if (d == 1.0f || d == -1.0f) {
/* colinear */
@@ -908,10 +906,8 @@ int isect_line_line_strict_v3(float v1[3], float v2[3], float v3[3], float v4[3]
sub_v3_v3v3(a, v2, v1);
sub_v3_v3v3(b, v4, v3);
- copy_v3_v3(dir1, a);
- normalize_v3(dir1);
- copy_v3_v3(dir2, b);
- normalize_v3(dir2);
+ normalize_v3_v3(dir1, a);
+ normalize_v3_v3(dir2, b);
d = dot_v3v3(dir1, dir2);
if (d == 1.0f || d == -1.0f || d == 0) {
/* colinear or one vector is zero-length*/
diff --git a/source/blender/blenlib/intern/math_matrix.c b/source/blender/blenlib/intern/math_matrix.c
index 6c06da2e32d..64c3e746982 100644
--- a/source/blender/blenlib/intern/math_matrix.c
+++ b/source/blender/blenlib/intern/math_matrix.c
@@ -595,9 +595,7 @@ void transpose_m4(float mat[][4])
void orthogonalize_m3(float mat[][3], int axis)
{
float size[3];
- size[0] = len_v3(mat[0]);
- size[1] = len_v3(mat[1]);
- size[2] = len_v3(mat[2]);
+ mat3_to_size(size, mat);
normalize_v3(mat[axis]);
switch(axis)
{
@@ -658,9 +656,7 @@ void orthogonalize_m3(float mat[][3], int axis)
void orthogonalize_m4(float mat[][4], int axis)
{
float size[3];
- size[0] = len_v3(mat[0]);
- size[1] = len_v3(mat[1]);
- size[2] = len_v3(mat[2]);
+ mat4_to_size(size, mat);
normalize_v3(mat[axis]);
switch(axis)
{
diff --git a/source/blender/blenlib/intern/math_rotation.c b/source/blender/blenlib/intern/math_rotation.c
index 4d015e527a8..f72269f6d7b 100644
--- a/source/blender/blenlib/intern/math_rotation.c
+++ b/source/blender/blenlib/intern/math_rotation.c
@@ -135,10 +135,7 @@ void mul_fac_qt_fl(float *q, const float fac)
float si= (float)sin(angle);
q[0]= co;
normalize_v3(q+1);
- q[1]*= si;
- q[2]*= si;
- q[3]*= si;
-
+ mul_v3_fl(q+1, si);
}
void quat_to_mat3(float m[][3], float *q)
@@ -595,9 +592,8 @@ void axis_angle_to_quat(float q[4], float axis[3], float angle)
{
float nor[3];
float si;
-
- copy_v3_v3(nor, axis);
- normalize_v3(nor);
+
+ normalize_v3_v3(nor, axis);
angle /= 2;
si = (float)sin(angle);
@@ -654,8 +650,7 @@ void axis_angle_to_mat3(float mat[3][3],float axis[3], float angle)
float nor[3], nsi[3], co, si, ico;
/* normalise the axis first (to remove unwanted scaling) */
- copy_v3_v3(nor, axis);
- normalize_v3(nor);
+ normalize_v3_v3(nor, axis);
/* now convert this to a 3x3 matrix */
co= (float)cos(angle);
diff --git a/source/blender/blenlib/intern/math_vector.c b/source/blender/blenlib/intern/math_vector.c
index 9baf897c830..b1cea9ab3c4 100644
--- a/source/blender/blenlib/intern/math_vector.c
+++ b/source/blender/blenlib/intern/math_vector.c
@@ -120,10 +120,8 @@ float angle_v3v3(float *v1, float *v2)
{
float vec1[3], vec2[3];
- copy_v3_v3(vec1, v1);
- copy_v3_v3(vec2, v2);
- normalize_v3(vec1);
- normalize_v3(vec2);
+ normalize_v3_v3(vec1, v1);
+ normalize_v3_v3(vec2, v2);
return angle_normalized_v3v3(vec1, vec2);
}
diff --git a/source/blender/blenlib/intern/pbvh.c b/source/blender/blenlib/intern/pbvh.c
index 4fab3595f1c..34d942d7ebb 100644
--- a/source/blender/blenlib/intern/pbvh.c
+++ b/source/blender/blenlib/intern/pbvh.c
@@ -24,6 +24,8 @@
#include "DNA_mesh_types.h"
#include "DNA_object_types.h"
+#include "MEM_guardedalloc.h"
+
#include "BLI_math.h"
#include "BLI_ghash.h"
#include "BLI_pbvh.h"
diff --git a/source/blender/blenlib/intern/winstuff.c b/source/blender/blenlib/intern/winstuff.c
index f2261546f5c..81a635205f9 100644
--- a/source/blender/blenlib/intern/winstuff.c
+++ b/source/blender/blenlib/intern/winstuff.c
@@ -33,7 +33,6 @@
#include <stdlib.h>
#include <stdio.h>
-#include "MEM_guardedalloc.h"
#include "BLI_path_util.h"
#include "BLI_string.h"
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 24fd74c8a6b..816e9332ff5 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -86,6 +86,7 @@
#include "DNA_world_types.h"
#include "MEM_guardedalloc.h"
+
#include "BLI_blenlib.h"
#include "BLI_math.h"
diff --git a/source/blender/collada/DocumentExporter.cpp b/source/blender/collada/DocumentExporter.cpp
index d77cd02f9e1..ca3aada80c0 100644
--- a/source/blender/collada/DocumentExporter.cpp
+++ b/source/blender/collada/DocumentExporter.cpp
@@ -1735,7 +1735,7 @@ public:
twoSided = true;
}
if (twoSided)
- ep.addExtraTechniqueParameter("GOOGLEEARTH", "double_sided", 1);
+ ep.addExtraTechniqueParameter("GOOGLEEARTH", "show_double_sided", 1);
ep.addExtraTechniques(mSW);
ep.closeProfile();
diff --git a/source/blender/editors/animation/fmodifier_ui.c b/source/blender/editors/animation/fmodifier_ui.c
index 8c6a81bddf4..191316711f4 100644
--- a/source/blender/editors/animation/fmodifier_ui.c
+++ b/source/blender/editors/animation/fmodifier_ui.c
@@ -119,7 +119,7 @@ static void draw_modifier__generator(uiLayout *layout, ID *id, FModifier *fcm, s
but= uiDefButR(block, MENU, B_FMODIFIER_REDRAW, NULL, 0, 0, width-30, UI_UNIT_Y, &ptr, "mode", -1, 0, 0, -1, -1, NULL);
uiButSetFunc(but, validate_fmodifier_cb, fcm, NULL);
- uiDefButR(block, TOG, B_FMODIFIER_REDRAW, NULL, 0, 0, width-30, UI_UNIT_Y, &ptr, "additive", -1, 0, 0, -1, -1, NULL);
+ uiDefButR(block, TOG, B_FMODIFIER_REDRAW, NULL, 0, 0, width-30, UI_UNIT_Y, &ptr, "use_additive", -1, 0, 0, -1, -1, NULL);
uiBlockEndAlign(block);
/* now add settings for individual modes */
@@ -226,7 +226,7 @@ static void draw_modifier__fn_generator(uiLayout *layout, ID *id, FModifier *fcm
/* add the settings */
col= uiLayoutColumn(layout, 1);
uiItemR(col, &ptr, "function_type", 0, "", 0);
- uiItemR(col, &ptr, "additive", UI_ITEM_R_TOGGLE, NULL, 0);
+ uiItemR(col, &ptr, "use_additive", UI_ITEM_R_TOGGLE, NULL, 0);
col= uiLayoutColumn(layout, 0); // no grouping for now
uiItemR(col, &ptr, "amplitude", 0, NULL, 0);
@@ -254,14 +254,14 @@ static void draw_modifier__cycles(uiLayout *layout, ID *id, FModifier *fcm, shor
/* before range */
col= uiLayoutColumn(split, 1);
uiItemL(col, "Before:", 0);
- uiItemR(col, &ptr, "before_mode", 0, "", 0);
- uiItemR(col, &ptr, "before_cycles", 0, NULL, 0);
+ uiItemR(col, &ptr, "mode_before", 0, "", 0);
+ uiItemR(col, &ptr, "cycles_before", 0, NULL, 0);
/* after range */
col= uiLayoutColumn(split, 1);
uiItemL(col, "After:", 0);
- uiItemR(col, &ptr, "after_mode", 0, "", 0);
- uiItemR(col, &ptr, "after_cycles", 0, NULL, 0);
+ uiItemR(col, &ptr, "mode_after", 0, "", 0);
+ uiItemR(col, &ptr, "cycles_after", 0, NULL, 0);
}
/* --------------- */
@@ -276,14 +276,14 @@ static void draw_modifier__noise(uiLayout *layout, ID *id, FModifier *fcm, short
RNA_pointer_create(id, &RNA_FModifierNoise, fcm, &ptr);
/* blending mode */
- uiItemR(layout, &ptr, "modification", 0, NULL, 0);
+ uiItemR(layout, &ptr, "blend_type", 0, NULL, 0);
/* split into 2 columns */
split= uiLayoutSplit(layout, 0.5f, 0);
/* col 1 */
col= uiLayoutColumn(split, 0);
- uiItemR(col, &ptr, "size", 0, NULL, 0);
+ uiItemR(col, &ptr, "scale", 0, NULL, 0);
uiItemR(col, &ptr, "strength", 0, NULL, 0);
/* col 2 */
@@ -473,8 +473,8 @@ static void draw_modifier__envelope(uiLayout *layout, ID *id, FModifier *fcm, sh
uiItemR(col, &ptr, "reference_value", 0, NULL, 0);
row= uiLayoutRow(col, 1);
- uiItemR(row, &ptr, "default_minimum", 0, "Min", 0);
- uiItemR(row, &ptr, "default_maximum", 0, "Max", 0);
+ uiItemR(row, &ptr, "default_min", 0, "Min", 0);
+ uiItemR(row, &ptr, "default_max", 0, "Max", 0);
/* control points header */
// TODO: move this control-point control stuff to using the new special widgets for lists
@@ -526,13 +526,13 @@ static void draw_modifier__limits(uiLayout *layout, ID *id, FModifier *fcm, shor
/* x-minimum */
col= uiLayoutColumn(split, 1);
- uiItemR(col, &ptr, "use_minimum_x", 0, NULL, 0);
- uiItemR(col, &ptr, "minimum_x", 0, NULL, 0);
+ uiItemR(col, &ptr, "use_min_x", 0, NULL, 0);
+ uiItemR(col, &ptr, "min_x", 0, NULL, 0);
/* y-minimum*/
col= uiLayoutColumn(split, 1);
- uiItemR(col, &ptr, "use_minimum_y", 0, NULL, 0);
- uiItemR(col, &ptr, "minimum_y", 0, NULL, 0);
+ uiItemR(col, &ptr, "use_min_y", 0, NULL, 0);
+ uiItemR(col, &ptr, "min_y", 0, NULL, 0);
}
/* row 2: maximum */
@@ -544,13 +544,13 @@ static void draw_modifier__limits(uiLayout *layout, ID *id, FModifier *fcm, shor
/* x-minimum */
col= uiLayoutColumn(split, 1);
- uiItemR(col, &ptr, "use_maximum_x", 0, NULL, 0);
- uiItemR(col, &ptr, "maximum_x", 0, NULL, 0);
+ uiItemR(col, &ptr, "use_max_x", 0, NULL, 0);
+ uiItemR(col, &ptr, "max_x", 0, NULL, 0);
/* y-minimum*/
col= uiLayoutColumn(split, 1);
- uiItemR(col, &ptr, "use_maximum_y", 0, NULL, 0);
- uiItemR(col, &ptr, "maximum_y", 0, NULL, 0);
+ uiItemR(col, &ptr, "use_max_y", 0, NULL, 0);
+ uiItemR(col, &ptr, "max_y", 0, NULL, 0);
}
}
@@ -567,8 +567,8 @@ static void draw_modifier__stepped(uiLayout *layout, ID *id, FModifier *fcm, sho
/* block 1: "stepping" settings */
col= uiLayoutColumn(layout, 0);
- uiItemR(col, &ptr, "step_size", 0, NULL, 0);
- uiItemR(col, &ptr, "offset", 0, NULL, 0);
+ uiItemR(col, &ptr, "frame_step", 0, NULL, 0);
+ uiItemR(col, &ptr, "frame_offset", 0, NULL, 0);
/* block 2: start range settings */
col= uiLayoutColumn(layout, 1);
@@ -616,7 +616,7 @@ void ANIM_uiTemplate_fmodifier_draw (uiLayout *layout, ID *id, ListBase *modifie
uiBlockSetEmboss(block, UI_EMBOSSN);
/* expand */
- uiItemR(subrow, &ptr, "expanded", UI_ITEM_R_ICON_ONLY, "", 0);
+ uiItemR(subrow, &ptr, "show_expanded", UI_ITEM_R_ICON_ONLY, "", 0);
/* checkbox for 'active' status (for now) */
uiItemR(subrow, &ptr, "active", UI_ITEM_R_ICON_ONLY, "", 0);
diff --git a/source/blender/editors/animation/keyframes_draw.c b/source/blender/editors/animation/keyframes_draw.c
index d46c18a553d..02e141a7a69 100644
--- a/source/blender/editors/animation/keyframes_draw.c
+++ b/source/blender/editors/animation/keyframes_draw.c
@@ -61,7 +61,6 @@
#include "BKE_utildefines.h"
#include "BIF_gl.h"
-#include "BIF_glutil.h"
#include "UI_resources.h"
#include "UI_view2d.h"
diff --git a/source/blender/editors/armature/armature_ops.c b/source/blender/editors/armature/armature_ops.c
index d50b50cb107..d5bd09cc8f1 100644
--- a/source/blender/editors/armature/armature_ops.c
+++ b/source/blender/editors/armature/armature_ops.c
@@ -29,7 +29,6 @@
#include <stdlib.h>
#include <math.h>
-#include "MEM_guardedalloc.h"
#include "BLI_math.h"
diff --git a/source/blender/editors/armature/editarmature.c b/source/blender/editors/armature/editarmature.c
index 525ca9aae1c..0b5f99152de 100644
--- a/source/blender/editors/armature/editarmature.c
+++ b/source/blender/editors/armature/editarmature.c
@@ -31,7 +31,6 @@
#include <math.h>
#include <float.h>
-#include "MEM_guardedalloc.h"
#include "DNA_anim_types.h"
#include "DNA_armature_types.h"
@@ -39,6 +38,8 @@
#include "DNA_meshdata_types.h"
#include "DNA_scene_types.h"
+#include "MEM_guardedalloc.h"
+
#include "BLI_blenlib.h"
#include "BLI_math.h"
#include "BLI_editVert.h"
@@ -62,7 +63,6 @@
#include "DNA_object_types.h"
#include "BIF_gl.h"
-#include "BIF_generate.h"
#include "RNA_access.h"
#include "RNA_define.h"
diff --git a/source/blender/editors/armature/editarmature_generate.c b/source/blender/editors/armature/editarmature_generate.c
index 8c53a03fd2b..1c9024f6f91 100644
--- a/source/blender/editors/armature/editarmature_generate.c
+++ b/source/blender/editors/armature/editarmature_generate.c
@@ -32,7 +32,6 @@
#include <math.h>
#include <float.h>
-#include "MEM_guardedalloc.h"
#include "DNA_scene_types.h"
#include "DNA_armature_types.h"
diff --git a/source/blender/editors/armature/poseSlide.c b/source/blender/editors/armature/poseSlide.c
index 54777535146..8d8f1bf24ee 100644
--- a/source/blender/editors/armature/poseSlide.c
+++ b/source/blender/editors/armature/poseSlide.c
@@ -56,7 +56,6 @@
#include "WM_types.h"
-#include "BIF_gl.h"
#include "ED_armature.h"
#include "ED_keyframes_draw.h"
diff --git a/source/blender/editors/armature/poseUtils.c b/source/blender/editors/armature/poseUtils.c
index efacc6571cf..b8b9c354d9a 100644
--- a/source/blender/editors/armature/poseUtils.c
+++ b/source/blender/editors/armature/poseUtils.c
@@ -56,7 +56,6 @@
#include "WM_types.h"
-#include "BIF_gl.h"
#include "ED_armature.h"
#include "ED_keyframing.h"
diff --git a/source/blender/editors/armature/poselib.c b/source/blender/editors/armature/poselib.c
index 756dee2494b..b0b5aedaa70 100644
--- a/source/blender/editors/armature/poselib.c
+++ b/source/blender/editors/armature/poselib.c
@@ -1486,6 +1486,8 @@ void POSELIB_OT_browse_interactive (wmOperatorType *ot)
/* properties */
// TODO: make the pose_index into a proper enum instead of a cryptic int...
ot->prop= RNA_def_int(ot->srna, "pose_index", -1, -2, INT_MAX, "Pose", "Index of the pose to apply (-2 for no change to pose, -1 for poselib active pose)", 0, INT_MAX);
- // XXX: percentage vs factor?
- RNA_def_float_factor(ot->srna, "blend_factor", 1.0f, 0.0f, 1.0f, "Blend Factor", "Amount that the pose is applied on top of the existing poses", 0.0f, 1.0f);
+
+ // XXX: percentage vs factor?
+ /* not used yet */
+ /* RNA_def_float_factor(ot->srna, "blend_factor", 1.0f, 0.0f, 1.0f, "Blend Factor", "Amount that the pose is applied on top of the existing poses", 0.0f, 1.0f); */
}
diff --git a/source/blender/editors/armature/poseobject.c b/source/blender/editors/armature/poseobject.c
index 7e17b6d0674..3bbbb271bda 100644
--- a/source/blender/editors/armature/poseobject.c
+++ b/source/blender/editors/armature/poseobject.c
@@ -54,7 +54,6 @@
#include "BKE_modifier.h"
#include "BKE_report.h"
-#include "BIF_gl.h"
#include "RNA_access.h"
#include "RNA_define.h"
@@ -1579,7 +1578,7 @@ static int pose_armature_layers_invoke (bContext *C, wmOperator *op, wmEvent *ev
/* get RNA pointer to armature data to use that to retrieve the layers as ints to init the operator */
RNA_id_pointer_create((ID *)arm, &ptr);
- RNA_boolean_get_array(&ptr, "layer", layers);
+ RNA_boolean_get_array(&ptr, "layers", layers);
RNA_boolean_set_array(op->ptr, "layers", layers);
/* part to sync with other similar operators... */
@@ -1599,7 +1598,7 @@ static int pose_armature_layers_exec (bContext *C, wmOperator *op)
/* get pointer for armature, and write data there... */
RNA_id_pointer_create((ID *)arm, &ptr);
- RNA_boolean_set_array(&ptr, "layer", layers);
+ RNA_boolean_set_array(&ptr, "layers", layers);
/* note, notifier might evolve */
WM_event_add_notifier(C, NC_OBJECT|ND_POSE, ob);
@@ -1691,7 +1690,7 @@ static int pose_bone_layers_exec (bContext *C, wmOperator *op)
{
/* get pointer for pchan, and write flags this way */
RNA_pointer_create((ID *)arm, &RNA_Bone, pchan->bone, &ptr);
- RNA_boolean_set_array(&ptr, "layer", layers);
+ RNA_boolean_set_array(&ptr, "layers", layers);
}
CTX_DATA_END;
@@ -1765,7 +1764,7 @@ static int armature_bone_layers_exec (bContext *C, wmOperator *op)
{
/* get pointer for pchan, and write flags this way */
RNA_pointer_create((ID *)arm, &RNA_EditBone, ebone, &ptr);
- RNA_boolean_set_array(&ptr, "layer", layers);
+ RNA_boolean_set_array(&ptr, "layers", layers);
}
CTX_DATA_END;
diff --git a/source/blender/editors/armature/reeb.c b/source/blender/editors/armature/reeb.c
index 9af07d36ac0..9602d80575a 100644
--- a/source/blender/editors/armature/reeb.c
+++ b/source/blender/editors/armature/reeb.c
@@ -31,14 +31,13 @@
#include <stdlib.h> // for qsort
#include <float.h>
-
#include "DNA_scene_types.h"
#include "DNA_object_types.h"
-#include "BKE_context.h"
-
#include "MEM_guardedalloc.h"
+#include "BKE_context.h"
+
#include "BLI_blenlib.h"
#include "BLI_math.h"
#include "BLI_editVert.h"
@@ -51,7 +50,6 @@
//#include "BIF_interface.h"
//#include "BIF_toolbox.h"
//#include "BIF_graphics.h"
-#include "BIF_gl.h"
//#include "blendef.h"
diff --git a/source/blender/editors/curve/curve_ops.c b/source/blender/editors/curve/curve_ops.c
index 85c3cc91679..b5b6ee4e6da 100644
--- a/source/blender/editors/curve/curve_ops.c
+++ b/source/blender/editors/curve/curve_ops.c
@@ -29,7 +29,6 @@
#include <stdlib.h>
#include <math.h>
-#include "MEM_guardedalloc.h"
#include "DNA_curve_types.h"
diff --git a/source/blender/editors/curve/editcurve.c b/source/blender/editors/curve/editcurve.c
index b85429e36a9..f88d89c97ac 100644
--- a/source/blender/editors/curve/editcurve.c
+++ b/source/blender/editors/curve/editcurve.c
@@ -36,6 +36,11 @@
#include <io.h>
#endif
#include <stdlib.h>
+
+#include "DNA_key_types.h"
+#include "DNA_object_types.h"
+#include "DNA_scene_types.h"
+
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
@@ -44,10 +49,6 @@
#include "BLI_rand.h"
#include "BLI_ghash.h"
-#include "DNA_key_types.h"
-#include "DNA_object_types.h"
-#include "DNA_scene_types.h"
-
#include "BKE_context.h"
#include "BKE_curve.h"
#include "BKE_depsgraph.h"
diff --git a/source/blender/editors/gpencil/drawgpencil.c b/source/blender/editors/gpencil/drawgpencil.c
index 5e0e09231eb..284dac7a0ae 100644
--- a/source/blender/editors/gpencil/drawgpencil.c
+++ b/source/blender/editors/gpencil/drawgpencil.c
@@ -32,7 +32,6 @@
#include <math.h>
#include <float.h>
-#include "MEM_guardedalloc.h"
#include "IMB_imbuf_types.h"
diff --git a/source/blender/editors/gpencil/editaction_gpencil.c b/source/blender/editors/gpencil/editaction_gpencil.c
index 9073cb01d5f..d76e5fcf17c 100644
--- a/source/blender/editors/gpencil/editaction_gpencil.c
+++ b/source/blender/editors/gpencil/editaction_gpencil.c
@@ -31,18 +31,9 @@
#include <stddef.h>
#include <math.h>
-#include "MEM_guardedalloc.h"
-
#include "BLI_math.h"
#include "BLI_blenlib.h"
-
-
-#include "BIF_gl.h"
-#include "BIF_glutil.h"
-
-
-
#include "gpencil_intern.h"
#if 0 // XXX disabled until grease pencil code stabilises again
diff --git a/source/blender/editors/gpencil/gpencil_buttons.c b/source/blender/editors/gpencil/gpencil_buttons.c
index 00a6d0fb94d..87a9c3cd52f 100644
--- a/source/blender/editors/gpencil/gpencil_buttons.c
+++ b/source/blender/editors/gpencil/gpencil_buttons.c
@@ -30,7 +30,6 @@
#include <stdlib.h>
#include <stddef.h>
-#include "MEM_guardedalloc.h"
#include "BLI_math.h"
#include "BLI_blenlib.h"
@@ -47,8 +46,6 @@
#include "RNA_access.h"
-#include "BIF_gl.h"
-#include "BIF_glutil.h"
#include "ED_gpencil.h"
@@ -163,7 +160,7 @@ static void gp_drawui_layer (uiLayout *layout, bGPdata *gpd, bGPDlayer *gpl)
/* frame locking */
// TODO: this needs its own icons...
icon= (gpl->flag & GP_LAYER_FRAMELOCK) ? ICON_RENDER_STILL : ICON_RENDER_ANIMATION;
- uiItemR(subrow, &ptr, "frame_lock", 0, "", icon);
+ uiItemR(subrow, &ptr, "lock_frame", 0, "", icon);
uiBlockSetEmboss(block, UI_EMBOSS);
@@ -193,11 +190,11 @@ static void gp_drawui_layer (uiLayout *layout, bGPdata *gpd, bGPDlayer *gpl)
/* color */
subcol= uiLayoutColumn(col, 1);
uiItemR(subcol, &ptr, "color", 0, "", 0);
- uiItemR(subcol, &ptr, "opacity", UI_ITEM_R_SLIDER, NULL, 0);
+ uiItemR(subcol, &ptr, "alpha", UI_ITEM_R_SLIDER, NULL, 0);
/* stroke thickness */
subcol= uiLayoutColumn(col, 1);
- uiItemR(subcol, &ptr, "line_thickness", UI_ITEM_R_SLIDER, NULL, 0);
+ uiItemR(subcol, &ptr, "line_width", UI_ITEM_R_SLIDER, NULL, 0);
/* debugging options */
if (G.f & G_DEBUG) {
@@ -211,7 +208,7 @@ static void gp_drawui_layer (uiLayout *layout, bGPdata *gpd, bGPDlayer *gpl)
/* onion-skinning */
subcol= uiLayoutColumn(col, 1);
uiItemR(subcol, &ptr, "use_onion_skinning", 0, "Onion Skinning", 0);
- uiItemR(subcol, &ptr, "max_ghost_range", 0, "Frames", 0); // XXX shorter name here? i.e. GStep
+ uiItemR(subcol, &ptr, "ghost_range_max", 0, "Frames", 0); // XXX shorter name here? i.e. GStep
/* additional options... */
subcol= uiLayoutColumn(col, 1);
diff --git a/source/blender/editors/gpencil/gpencil_edit.c b/source/blender/editors/gpencil/gpencil_edit.c
index d41b581e9e0..e0d257ca3bf 100644
--- a/source/blender/editors/gpencil/gpencil_edit.c
+++ b/source/blender/editors/gpencil/gpencil_edit.c
@@ -54,8 +54,6 @@
#include "BKE_object.h"
#include "BKE_report.h"
-#include "BIF_gl.h"
-#include "BIF_glutil.h"
#include "WM_api.h"
#include "WM_types.h"
diff --git a/source/blender/editors/include/UI_interface.h b/source/blender/editors/include/UI_interface.h
index 93e91d02599..b126c6235d5 100644
--- a/source/blender/editors/include/UI_interface.h
+++ b/source/blender/editors/include/UI_interface.h
@@ -678,8 +678,8 @@ void uiTemplateAnyID(uiLayout *layout, struct bContext *C, struct PointerRNA *pt
char *proptypename, char *text);
void uiTemplatePathBuilder(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname,
struct PointerRNA *root_ptr, char *text);
-uiLayout *uiTemplateModifier(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, int compact);
-uiLayout *uiTemplateConstraint(uiLayout *layout, struct PointerRNA *ptr, int compact);
+uiLayout *uiTemplateModifier(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr);
+uiLayout *uiTemplateConstraint(uiLayout *layout, struct PointerRNA *ptr);
void uiTemplatePreview(uiLayout *layout, struct ID *id, struct ID *parent, struct MTex *slot);
void uiTemplateColorRamp(uiLayout *layout, struct PointerRNA *ptr, char *propname, int expand);
void uiTemplateHistogram(uiLayout *layout, struct PointerRNA *ptr, char *propname, int expand);
diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c
index 5d4621b426d..4c86b9480d4 100644
--- a/source/blender/editors/interface/interface.c
+++ b/source/blender/editors/interface/interface.c
@@ -45,7 +45,6 @@
#include "BKE_unit.h"
#include "BIF_gl.h"
-#include "BIF_glutil.h"
#include "BLF_api.h"
diff --git a/source/blender/editors/interface/interface_anim.c b/source/blender/editors/interface/interface_anim.c
index dd690ba75d7..c99622c7518 100644
--- a/source/blender/editors/interface/interface_anim.c
+++ b/source/blender/editors/interface/interface_anim.c
@@ -3,7 +3,6 @@
#include <stdlib.h>
#include <string.h>
-#include "MEM_guardedalloc.h"
#include "DNA_anim_types.h"
#include "DNA_scene_types.h"
diff --git a/source/blender/editors/interface/interface_icons.c b/source/blender/editors/interface/interface_icons.c
index e72bbaede4d..3ba7c654210 100644
--- a/source/blender/editors/interface/interface_icons.c
+++ b/source/blender/editors/interface/interface_icons.c
@@ -60,7 +60,6 @@
#include "IMB_imbuf_types.h"
#include "BIF_gl.h"
-#include "BIF_glutil.h"
#include "ED_datafiles.h"
#include "ED_render.h"
diff --git a/source/blender/editors/interface/interface_layout.c b/source/blender/editors/interface/interface_layout.c
index 35062c44cb6..1d98b1f22c1 100644
--- a/source/blender/editors/interface/interface_layout.c
+++ b/source/blender/editors/interface/interface_layout.c
@@ -976,7 +976,7 @@ void uiItemR(uiLayout *layout, PointerRNA *ptr, char *propname, int flag, char *
if(!prop) {
ui_item_disabled(layout, propname);
- printf("uiItemR: property not found: %s\n", propname);
+ printf("uiItemR: property not found: %s.%s\n", RNA_struct_identifier(ptr->type), propname);
return;
}
@@ -989,7 +989,7 @@ void uiItemEnumR(uiLayout *layout, char *name, int icon, struct PointerRNA *ptr,
if(!prop || RNA_property_type(prop) != PROP_ENUM) {
ui_item_disabled(layout, propname);
- printf("uiItemEnumR: enum property not found: %s\n", propname);
+ printf("uiItemEnumR: property not found: %s.%s\n", RNA_struct_identifier(ptr->type), propname);
return;
}
@@ -1004,7 +1004,7 @@ void uiItemEnumR_string(uiLayout *layout, struct PointerRNA *ptr, char *propname
if(!prop || RNA_property_type(prop) != PROP_ENUM) {
ui_item_disabled(layout, propname);
- printf("uiItemEnumR: enum property not found: %s\n", propname);
+ printf("uiItemEnumR_string: enum property not found: %s.%s\n", RNA_struct_identifier(ptr->type), propname);
return;
}
@@ -1225,7 +1225,7 @@ void uiItemPointerR(uiLayout *layout, struct PointerRNA *ptr, char *propname, st
prop= RNA_struct_find_property(ptr, propname);
if(!prop) {
- printf("uiItemPointerR: property not found: %s\n", propname);
+ printf("uiItemPointerR: property not found: %s.%s\n", RNA_struct_identifier(ptr->type), propname);
return;
}
@@ -1238,7 +1238,7 @@ void uiItemPointerR(uiLayout *layout, struct PointerRNA *ptr, char *propname, st
searchprop= RNA_struct_find_property(searchptr, searchpropname);
if(!searchprop || RNA_property_type(searchprop) != PROP_COLLECTION) {
- printf("uiItemPointerR: search collection property not found: %s\n", searchpropname);
+ printf("uiItemPointerR: search collection property not found: %s.%s\n", RNA_struct_identifier(ptr->type), searchpropname);
return;
}
diff --git a/source/blender/editors/interface/interface_style.c b/source/blender/editors/interface/interface_style.c
index 360360127a0..03676ae5e06 100644
--- a/source/blender/editors/interface/interface_style.c
+++ b/source/blender/editors/interface/interface_style.c
@@ -40,8 +40,6 @@
#include "BKE_global.h"
-#include "BIF_gl.h"
-#include "BIF_glutil.h"
#include "BLF_api.h"
diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c
index f3e709ce400..6c1e1534e43 100644
--- a/source/blender/editors/interface/interface_templates.c
+++ b/source/blender/editors/interface/interface_templates.c
@@ -81,53 +81,53 @@ void uiTemplateDopeSheetFilter(uiLayout *layout, bContext *C, PointerRNA *ptr)
/* most 'generic' filtering options */
row= uiLayoutRow(layout, 1);
- uiItemR(row, ptr, "only_selected", 0, "", 0);
- uiItemR(row, ptr, "display_hidden", 0, "", 0);
+ uiItemR(row, ptr, "show_only_selected", 0, "", 0);
+ uiItemR(row, ptr, "show_hidden", 0, "", 0);
/* object-level filtering options */
row= uiLayoutRow(layout, 1);
- uiItemR(row, ptr, "display_transforms", 0, "", 0);
+ uiItemR(row, ptr, "show_transforms", 0, "", 0);
if (nlaActive)
- uiItemR(row, ptr, "include_missing_nla", 0, "", 0);
+ uiItemR(row, ptr, "show_missing_nla", 0, "", 0);
/* datatype based - only available datatypes are shown */
row= uiLayoutRow(layout, 1);
- uiItemR(row, ptr, "display_scene", 0, "", 0);
- uiItemR(row, ptr, "display_world", 0, "", 0);
- uiItemR(row, ptr, "display_node", 0, "", 0);
+ uiItemR(row, ptr, "show_scenes", 0, "", 0);
+ uiItemR(row, ptr, "show_worlds", 0, "", 0);
+ uiItemR(row, ptr, "show_nodes", 0, "", 0);
if (mainptr && mainptr->mesh.first)
- uiItemR(row, ptr, "display_mesh", 0, "", 0);
+ uiItemR(row, ptr, "show_meshes", 0, "", 0);
if (mainptr && mainptr->key.first)
- uiItemR(row, ptr, "display_shapekeys", 0, "", 0);
+ uiItemR(row, ptr, "show_shapekeys", 0, "", 0);
if (mainptr && mainptr->mat.first)
- uiItemR(row, ptr, "display_material", 0, "", 0);
+ uiItemR(row, ptr, "show_materials", 0, "", 0);
if (mainptr && mainptr->lamp.first)
- uiItemR(row, ptr, "display_lamp", 0, "", 0);
+ uiItemR(row, ptr, "show_lamps", 0, "", 0);
if (mainptr && mainptr->tex.first)
- uiItemR(row, ptr, "display_texture", 0, "", 0);
+ uiItemR(row, ptr, "show_textures", 0, "", 0);
if (mainptr && mainptr->camera.first)
- uiItemR(row, ptr, "display_camera", 0, "", 0);
+ uiItemR(row, ptr, "show_cameras", 0, "", 0);
if (mainptr && mainptr->curve.first)
- uiItemR(row, ptr, "display_curve", 0, "", 0);
+ uiItemR(row, ptr, "show_curves", 0, "", 0);
if (mainptr && mainptr->mball.first)
- uiItemR(row, ptr, "display_metaball", 0, "", 0);
+ uiItemR(row, ptr, "show_metaballs", 0, "", 0);
if (mainptr && mainptr->armature.first)
- uiItemR(row, ptr, "display_armature", 0, "", 0);
+ uiItemR(row, ptr, "show_armatures", 0, "", 0);
if (mainptr && mainptr->particle.first)
- uiItemR(row, ptr, "display_particle", 0, "", 0);
+ uiItemR(row, ptr, "show_particles", 0, "", 0);
/* group-based filtering (only when groups are available */
if (mainptr && mainptr->group.first) {
row= uiLayoutRow(layout, 1);
- uiItemR(row, ptr, "only_group_objects", 0, "", 0);
+ uiItemR(row, ptr, "show_only_group_objects", 0, "", 0);
/* if enabled, show the group selection field too */
- if (RNA_boolean_get(ptr, "only_group_objects"))
- uiItemR(row, ptr, "filtering_group", 0, "", 0);
+ if (RNA_boolean_get(ptr, "show_only_group_objects"))
+ uiItemR(row, ptr, "filter_group", 0, "", 0);
}
}
@@ -437,7 +437,7 @@ static void template_ID(bContext *C, uiLayout *layout, TemplateID *template, Str
}
if(id->lib == NULL && !(ELEM4(GS(id->name), ID_GR, ID_SCE, ID_SCR, ID_TXT))) {
- uiDefButR(block, TOG, 0, "F", 0, 0, UI_UNIT_X, UI_UNIT_Y, &idptr, "fake_user", -1, 0, 0, -1, -1, NULL);
+ uiDefButR(block, TOG, 0, "F", 0, 0, UI_UNIT_X, UI_UNIT_Y, &idptr, "use_fake_user", -1, 0, 0, -1, -1, NULL);
}
}
@@ -502,7 +502,7 @@ static void ui_template_id(uiLayout *layout, bContext *C, PointerRNA *ptr, char
prop= RNA_struct_find_property(ptr, propname);
if(!prop || RNA_property_type(prop) != PROP_POINTER) {
- printf("uiTemplateID: pointer property not found: %s\n", propname);
+ printf("uiTemplateID: pointer property not found: %s.%s\n", RNA_struct_identifier(ptr->type), propname);
return;
}
@@ -563,11 +563,11 @@ void uiTemplateAnyID(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propn
propType= RNA_struct_find_property(ptr, proptypename);
if (!propID || RNA_property_type(propID) != PROP_POINTER) {
- printf("uiTemplateAnyID: pointer property not found: %s\n", propname);
+ printf("uiTemplateAnyID: pointer property not found: %s.%s\n", RNA_struct_identifier(ptr->type), propname);
return;
}
if (!propType || RNA_property_type(propType) != PROP_ENUM) {
- printf("uiTemplateAnyID: pointer-type property not found: %s\n", proptypename);
+ printf("uiTemplateAnyID: pointer-type property not found: %s.%s\n", RNA_struct_identifier(ptr->type), proptypename);
return;
}
@@ -606,7 +606,7 @@ void uiTemplatePathBuilder(uiLayout *layout, bContext *C, PointerRNA *ptr, char
/* check that properties are valid */
propPath= RNA_struct_find_property(ptr, propname);
if (!propPath || RNA_property_type(propPath) != PROP_STRING) {
- printf("uiTemplatePathBuilder: path property not found: %s\n", propname);
+ printf("uiTemplatePathBuilder: path property not found: %s.%s\n", RNA_struct_identifier(ptr->type), propname);
return;
}
@@ -691,13 +691,13 @@ static int modifier_can_delete(ModifierData *md)
return 1;
}
-static uiLayout *draw_modifier(uiLayout *layout, Scene *scene, Object *ob, ModifierData *md, int index, int cageIndex, int lastCageIndex, int compact)
+static uiLayout *draw_modifier(uiLayout *layout, Scene *scene, Object *ob, ModifierData *md, int index, int cageIndex, int lastCageIndex)
{
ModifierTypeInfo *mti = modifierType_getInfo(md->type);
PointerRNA ptr;
uiBut *but;
uiBlock *block;
- uiLayout *box, *column, *row, *col;
+ uiLayout *box, *column, *row;
uiLayout *result= NULL;
int isVirtual = (md->mode & eModifierMode_Virtual);
char str[128];
@@ -725,65 +725,31 @@ static uiLayout *draw_modifier(uiLayout *layout, Scene *scene, Object *ob, Modif
}
else {
/* REAL MODIFIER */
- uiLayout *split;
-
- split = uiLayoutSplit(box, 0.16, 0);
-
- col= uiLayoutColumn(split, 0);
- row = uiLayoutRow(col, 1);
-
+ row = uiLayoutRow(box, 0);
block = uiLayoutGetBlock(row);
uiBlockSetEmboss(block, UI_EMBOSSN);
-
/* Open/Close ................................. */
- uiItemR(row, &ptr, "expanded", 0, "", 0);
+ uiItemR(row, &ptr, "show_expanded", 0, "", 0);
/* modifier-type icon */
uiItemL(row, "", RNA_struct_ui_icon(ptr.type));
-
uiBlockSetEmboss(block, UI_EMBOSS);
-
- /* 'Middle Column' ............................
- * - first row is the name of the modifier
- * - second row is the visibility settings, since the layouts were not wide enough to show all
- */
- col= uiLayoutColumn(split, 0);
-
- row= uiLayoutRow(col, 0);
- uiLayoutSetAlignment(row, UI_LAYOUT_ALIGN_EXPAND);
-
- block = uiLayoutGetBlock(row);
-
/* modifier name */
uiItemR(row, &ptr, "name", 0, "", 0);
- if (compact) {
- /* insert delete button at end of top row before splitting to second line */
- uiBlockSetEmboss(block, UI_EMBOSSN);
- if (modifier_can_delete(md))
- uiItemO(row, "", ICON_X, "OBJECT_OT_modifier_remove");
- uiBlockSetEmboss(block, UI_EMBOSS);
-
- split = uiLayoutSplit(box, 0.17, 0);
- col= uiLayoutColumn(split, 0);
- uiItemL(col, "", 0);
- col= uiLayoutColumn(split, 0);
- row = uiLayoutRow(col, 1);
- }
-
/* mode enabling buttons */
uiBlockBeginAlign(block);
/* Softbody not allowed in this situation, enforce! */
if ( ((md->type!=eModifierType_Softbody && md->type!=eModifierType_Collision) || !(ob->pd && ob->pd->deflect))
&& (md->type!=eModifierType_Surface) )
{
- uiItemR(row, &ptr, "render", 0, "", 0);
- uiItemR(row, &ptr, "realtime", 0, "", 0);
+ uiItemR(row, &ptr, "show_render", 0, "", 0);
+ uiItemR(row, &ptr, "show_viewport", 0, "", 0);
if (mti->flags & eModifierTypeFlag_SupportsEditmode)
- uiItemR(row, &ptr, "editmode", 0, "", 0);
+ uiItemR(row, &ptr, "show_in_editmode", 0, "", 0);
}
if ((ob->type==OB_MESH) && modifier_couldBeCage(scene, md) && (index <= lastCageIndex))
{
@@ -801,12 +767,10 @@ static uiLayout *draw_modifier(uiLayout *layout, Scene *scene, Object *ob, Modif
uiItemO(row, "", ICON_TRIA_DOWN, "OBJECT_OT_modifier_move_down");
uiBlockEndAlign(block);
- if(!compact) {
- uiBlockSetEmboss(block, UI_EMBOSSN);
- if (modifier_can_delete(md))
- uiItemO(row, "", ICON_X, "OBJECT_OT_modifier_remove");
- uiBlockSetEmboss(block, UI_EMBOSS);
- }
+ uiBlockSetEmboss(block, UI_EMBOSSN);
+ if (modifier_can_delete(md))
+ uiItemO(row, "", ICON_X, "OBJECT_OT_modifier_remove");
+ uiBlockSetEmboss(block, UI_EMBOSS);
}
@@ -841,7 +805,7 @@ static uiLayout *draw_modifier(uiLayout *layout, Scene *scene, Object *ob, Modif
uiBlockClearButLock(block);
uiBlockSetButLock(block, ob && ob->id.lib, ERROR_LIBDATA_MESSAGE);
- if (!ELEM4(md->type, eModifierType_Fluidsim, eModifierType_Softbody, eModifierType_ParticleSystem, eModifierType_Cloth))
+ if (!ELEM5(md->type, eModifierType_Fluidsim, eModifierType_Softbody, eModifierType_ParticleSystem, eModifierType_Cloth, eModifierType_Smoke))
uiItemO(row, "Copy", 0, "OBJECT_OT_modifier_copy");
}
@@ -860,7 +824,7 @@ static uiLayout *draw_modifier(uiLayout *layout, Scene *scene, Object *ob, Modif
return result;
}
-uiLayout *uiTemplateModifier(uiLayout *layout, bContext *C, PointerRNA *ptr, int compact)
+uiLayout *uiTemplateModifier(uiLayout *layout, bContext *C, PointerRNA *ptr)
{
Scene *scene = CTX_data_scene(C);
Object *ob;
@@ -891,7 +855,7 @@ uiLayout *uiTemplateModifier(uiLayout *layout, bContext *C, PointerRNA *ptr, int
for(i=0; vmd; i++, vmd=vmd->next) {
if(md == vmd)
- return draw_modifier(layout, scene, ob, md, i, cageIndex, lastCageIndex, compact);
+ return draw_modifier(layout, scene, ob, md, i, cageIndex, lastCageIndex);
else if(vmd->mode & eModifierMode_Virtual)
i--;
}
@@ -957,12 +921,12 @@ static void constraint_active_func(bContext *C, void *ob_v, void *con_v)
}
/* draw panel showing settings for a constraint */
-static uiLayout *draw_constraint(uiLayout *layout, Object *ob, bConstraint *con, int compact)
+static uiLayout *draw_constraint(uiLayout *layout, Object *ob, bConstraint *con)
{
bPoseChannel *pchan= get_active_posechannel(ob);
bConstraintTypeInfo *cti;
uiBlock *block;
- uiLayout *result= NULL, *col, *box, *row, *subrow;
+ uiLayout *result= NULL, *col, *box, *row;
PointerRNA ptr;
char typestr[32];
short proxy_protected, xco=0, yco=0;
@@ -1007,7 +971,7 @@ static uiLayout *draw_constraint(uiLayout *layout, Object *ob, bConstraint *con,
/* open/close */
uiBlockSetEmboss(block, UI_EMBOSSN);
- uiItemR(row, &ptr, "expanded", UI_ITEM_R_ICON_ONLY, "", 0);
+ uiItemR(row, &ptr, "show_expanded", UI_ITEM_R_ICON_ONLY, "", 0);
uiBlockSetEmboss(block, UI_EMBOSS);
/* XXX if (con->flag & CONSTRAINT_DISABLE)
@@ -1054,32 +1018,22 @@ static uiLayout *draw_constraint(uiLayout *layout, Object *ob, bConstraint *con,
show_upbut= ((prev_proxylock == 0) && (con->prev));
show_downbut= (con->next) ? 1 : 0;
-
- /* Code for compact Constraint UI */
- if (compact) {
- subrow = uiLayoutRow(box, 0);
- }
- else {
- subrow = row;
- }
- uiLayoutSetOperatorContext(subrow, WM_OP_INVOKE_DEFAULT);
+ uiLayoutSetOperatorContext(row, WM_OP_INVOKE_DEFAULT);
/* up/down */
if (show_upbut || show_downbut) {
uiBlockBeginAlign(block);
if (show_upbut)
- uiItemO(subrow, "", ICON_TRIA_UP, "CONSTRAINT_OT_move_up");
+ uiItemO(row, "", ICON_TRIA_UP, "CONSTRAINT_OT_move_up");
if (show_downbut)
- uiItemO(subrow, "", ICON_TRIA_DOWN, "CONSTRAINT_OT_move_down");
+ uiItemO(row, "", ICON_TRIA_DOWN, "CONSTRAINT_OT_move_down");
uiBlockEndAlign(block);
}
/* enabled */
- uiItemR(subrow, &ptr, "enabled", 0, "", 0);
-
- uiLayoutSetOperatorContext(row, WM_OP_INVOKE_DEFAULT);
+ uiItemR(row, &ptr, "mute", 0, "", 0);
/* Close 'button' - emboss calls here disable drawing of 'button' behind X */
uiBlockSetEmboss(block, UI_EMBOSSN);
@@ -1107,7 +1061,7 @@ static uiLayout *draw_constraint(uiLayout *layout, Object *ob, bConstraint *con,
return result;
}
-uiLayout *uiTemplateConstraint(uiLayout *layout, PointerRNA *ptr, int compact)
+uiLayout *uiTemplateConstraint(uiLayout *layout, PointerRNA *ptr)
{
Object *ob;
bConstraint *con;
@@ -1135,7 +1089,7 @@ uiLayout *uiTemplateConstraint(uiLayout *layout, PointerRNA *ptr, int compact)
return NULL;
}
- return draw_constraint(layout, ob, con, compact);
+ return draw_constraint(layout, ob, con);
}
@@ -1899,7 +1853,7 @@ void uiTemplateColorWheel(uiLayout *layout, PointerRNA *ptr, char *propname, int
float softmin, softmax, step, precision;
if (!prop) {
- printf("uiTemplateColorWheel: property not found: %s\n", propname);
+ printf("uiTemplateColorWheel: property not found: %s.%s\n", RNA_struct_identifier(ptr->type), propname);
return;
}
@@ -1940,7 +1894,7 @@ void uiTemplateTriColorSet(uiLayout *layout, PointerRNA *ptr, char *propname)
PointerRNA csPtr;
if (!prop) {
- printf("uiTemplateTriColorSet: property not found: %s\n", propname);
+ printf("uiTemplateTriColorSet: property not found: %s.%s\n", RNA_struct_identifier(ptr->type), propname);
return;
}
@@ -1992,7 +1946,7 @@ void uiTemplateLayers(uiLayout *layout, PointerRNA *ptr, char *propname,
prop= RNA_struct_find_property(ptr, propname);
if (!prop) {
- printf("uiTemplateLayer: layers property not found: %s\n", propname);
+ printf("uiTemplateLayer: layers property not found: %s.%s\n", RNA_struct_identifier(ptr->type), propname);
return;
}
@@ -2011,7 +1965,7 @@ void uiTemplateLayers(uiLayout *layout, PointerRNA *ptr, char *propname,
if(used_ptr && used_propname) {
used_prop= RNA_struct_find_property(used_ptr, used_propname);
if (!used_prop) {
- printf("uiTemplateLayer: used layers property not found: %s\n", used_propname);
+ printf("uiTemplateLayer: used layers property not found: %s.%s\n", RNA_struct_identifier(ptr->type), used_propname);
return;
}
@@ -2125,7 +2079,7 @@ static void list_item_row(bContext *C, uiLayout *layout, PointerRNA *ptr, Pointe
else if(RNA_struct_is_a(itemptr->type, &RNA_SceneRenderLayer)) {
uiItemL(sub, name, icon);
uiBlockSetEmboss(block, UI_EMBOSS);
- uiDefButR(block, OPTION, 0, "", 0, 0, UI_UNIT_X, UI_UNIT_Y, itemptr, "enabled", 0, 0, 0, 0, 0, NULL);
+ uiDefButR(block, OPTION, 0, "", 0, 0, UI_UNIT_X, UI_UNIT_Y, itemptr, "use", 0, 0, 0, 0, 0, NULL);
}
else if(itemptr->type == &RNA_ShapeKey) {
ob= (Object*)activeptr->data;
@@ -2185,14 +2139,14 @@ void uiTemplateList(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propna
if(ptr->data) {
prop= RNA_struct_find_property(ptr, propname);
if(!prop) {
- printf("uiTemplateList: property not found: %s\n", propname);
+ printf("uiTemplateList: property not found: %s.%s\n", RNA_struct_identifier(ptr->type), propname);
return;
}
}
activeprop= RNA_struct_find_property(activeptr, activepropname);
if(!activeprop) {
- printf("uiTemplateList: property not found: %s\n", activepropname);
+ printf("uiTemplateList: property not found: %s.%s\n", RNA_struct_identifier(ptr->type), activepropname);
return;
}
diff --git a/source/blender/editors/interface/interface_widgets.c b/source/blender/editors/interface/interface_widgets.c
index e4bf6af1564..6b7d88d3c28 100644
--- a/source/blender/editors/interface/interface_widgets.c
+++ b/source/blender/editors/interface/interface_widgets.c
@@ -28,7 +28,6 @@
#include <stdlib.h>
#include <string.h>
-#include "MEM_guardedalloc.h"
#include "DNA_screen_types.h"
#include "DNA_userdef_types.h"
diff --git a/source/blender/editors/interface/view2d.c b/source/blender/editors/interface/view2d.c
index 9a88a52d4b4..14ec7c6d0d6 100644
--- a/source/blender/editors/interface/view2d.c
+++ b/source/blender/editors/interface/view2d.c
@@ -44,7 +44,6 @@
#include "WM_api.h"
#include "BIF_gl.h"
-#include "BIF_glutil.h"
#include "BLF_api.h"
diff --git a/source/blender/editors/interface/view2d_ops.c b/source/blender/editors/interface/view2d_ops.c
index 8611f6dd4ea..de1b26e987b 100644
--- a/source/blender/editors/interface/view2d_ops.c
+++ b/source/blender/editors/interface/view2d_ops.c
@@ -41,7 +41,6 @@
#include "WM_api.h"
#include "WM_types.h"
-#include "BIF_gl.h"
#include "ED_screen.h"
diff --git a/source/blender/editors/mesh/editface.c b/source/blender/editors/mesh/editface.c
index a2db1929989..fc92598591a 100644
--- a/source/blender/editors/mesh/editface.c
+++ b/source/blender/editors/mesh/editface.c
@@ -50,7 +50,6 @@
#include "BKE_context.h"
#include "BIF_gl.h"
-#include "BIF_glutil.h"
#ifndef DISABLE_PYTHON
diff --git a/source/blender/editors/mesh/editmesh_add.c b/source/blender/editors/mesh/editmesh_add.c
index 8ad768f2658..ca1a80110f3 100644
--- a/source/blender/editors/mesh/editmesh_add.c
+++ b/source/blender/editors/mesh/editmesh_add.c
@@ -1587,7 +1587,7 @@ static int add_primitive_uvsphere_exec(bContext *C, wmOperator *op)
return OPERATOR_CANCELLED;
make_prim_ext(C, loc, rot, enter_editmode, layer,
- PRIM_UVSPHERE, RNA_int_get(op->ptr, "rings"),
+ PRIM_UVSPHERE, RNA_int_get(op->ptr, "ring_count"),
RNA_int_get(op->ptr, "segments"), 0,
RNA_float_get(op->ptr,"size"), 0.0f, 0, 0);
@@ -1611,7 +1611,7 @@ void MESH_OT_primitive_uv_sphere_add(wmOperatorType *ot)
/* props */
RNA_def_int(ot->srna, "segments", 32, INT_MIN, INT_MAX, "Segments", "", 3, 500);
- RNA_def_int(ot->srna, "rings", 16, INT_MIN, INT_MAX, "Rings", "", 3, 500);
+ RNA_def_int(ot->srna, "ring_count", 16, INT_MIN, INT_MAX, "Rings", "", 3, 500);
RNA_def_float(ot->srna, "size", 1.0f, 0.0, FLT_MAX, "Size", "", 0.001, 100.00);
ED_object_add_generic_props(ot, TRUE);
diff --git a/source/blender/editors/mesh/editmesh_mods.c b/source/blender/editors/mesh/editmesh_mods.c
index 4af3aab569f..0274bf1004d 100644
--- a/source/blender/editors/mesh/editmesh_mods.c
+++ b/source/blender/editors/mesh/editmesh_mods.c
@@ -77,7 +77,6 @@ editmesh_mods.c, UI level access, no geometry changes
#include "ED_view3d.h"
#include "BIF_gl.h"
-#include "BIF_glutil.h"
#include "mesh_intern.h"
diff --git a/source/blender/editors/mesh/editmesh_tools.c b/source/blender/editors/mesh/editmesh_tools.c
index 54794215559..799ef580f63 100644
--- a/source/blender/editors/mesh/editmesh_tools.c
+++ b/source/blender/editors/mesh/editmesh_tools.c
@@ -37,8 +37,6 @@ editmesh_tool.c: UI called tools for editmesh, geometry changes here, otherwise
#include <math.h>
#include <float.h>
-#include "MEM_guardedalloc.h"
-
#include "BLO_sys_types.h" // for intptr_t support
#include "DNA_meshdata_types.h"
@@ -47,6 +45,8 @@ editmesh_tool.c: UI called tools for editmesh, geometry changes here, otherwise
#include "DNA_scene_types.h"
#include "DNA_key_types.h"
+#include "MEM_guardedalloc.h"
+
#include "RNA_define.h"
#include "RNA_access.h"
@@ -66,8 +66,6 @@ editmesh_tool.c: UI called tools for editmesh, geometry changes here, otherwise
#include "BKE_bmesh.h"
#include "BKE_report.h"
-#include "BIF_gl.h"
-#include "BIF_glutil.h"
#include "WM_api.h"
#include "WM_types.h"
diff --git a/source/blender/editors/mesh/loopcut.c b/source/blender/editors/mesh/loopcut.c
index 876cafd4bfb..488b59fa29e 100644
--- a/source/blender/editors/mesh/loopcut.c
+++ b/source/blender/editors/mesh/loopcut.c
@@ -59,7 +59,6 @@
#include "IMB_imbuf_types.h"
#include "ED_screen.h"
-#include "ED_util.h"
#include "ED_space_api.h"
#include "ED_view3d.h"
#include "ED_mesh.h"
diff --git a/source/blender/editors/mesh/mesh_ops.c b/source/blender/editors/mesh/mesh_ops.c
index 7a13be9b2b4..0b05822b88a 100644
--- a/source/blender/editors/mesh/mesh_ops.c
+++ b/source/blender/editors/mesh/mesh_ops.c
@@ -29,7 +29,6 @@
#include <stdlib.h>
#include <math.h>
-#include "MEM_guardedalloc.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c
index aa3b7f9422a..e60f9db79f6 100644
--- a/source/blender/editors/object/object_add.c
+++ b/source/blender/editors/object/object_add.c
@@ -179,7 +179,7 @@ void ED_object_add_generic_props(wmOperatorType *ot, int do_editmode)
RNA_def_float_vector(ot->srna, "location", 3, NULL, -FLT_MAX, FLT_MAX, "Location", "Location for the newly added object.", -FLT_MAX, FLT_MAX);
RNA_def_float_rotation(ot->srna, "rotation", 3, NULL, -FLT_MAX, FLT_MAX, "Rotation", "Rotation for the newly added object", -FLT_MAX, FLT_MAX);
- prop = RNA_def_boolean_layer_member(ot->srna, "layer", 20, NULL, "Layer", "");
+ prop = RNA_def_boolean_layer_member(ot->srna, "layers", 20, NULL, "Layer", "");
RNA_def_property_flag(prop, PROP_HIDDEN);
}
@@ -196,7 +196,7 @@ static void object_add_generic_invoke_options(bContext *C, wmOperator *op)
RNA_float_set_array(op->ptr, "location", loc);
}
- if(!RNA_property_is_set(op->ptr, "layer")) {
+ if(!RNA_property_is_set(op->ptr, "layers")) {
View3D *v3d = CTX_wm_view3d(C);
Scene *scene = CTX_data_scene(C);
int a, values[20], layer;
@@ -214,7 +214,7 @@ static void object_add_generic_invoke_options(bContext *C, wmOperator *op)
values[a]= (layer & (1<<a));
}
- RNA_boolean_set_array(op->ptr, "layer", values);
+ RNA_boolean_set_array(op->ptr, "layers", values);
}
}
@@ -235,8 +235,8 @@ int ED_object_add_generic_get_opts(bContext *C, wmOperator *op, float *loc, floa
*enter_editmode = TRUE;
}
- if(RNA_property_is_set(op->ptr, "layer")) {
- RNA_boolean_get_array(op->ptr, "layer", layer_values);
+ if(RNA_property_is_set(op->ptr, "layers")) {
+ RNA_boolean_get_array(op->ptr, "layers", layer_values);
*layer= 0;
for(a=0; a<20; a++) {
if(layer_values[a])
diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c
index 36879e43fe2..78404959dff 100644
--- a/source/blender/editors/object/object_edit.c
+++ b/source/blender/editors/object/object_edit.c
@@ -34,7 +34,11 @@
#include "MEM_guardedalloc.h"
-#include "IMB_imbuf_types.h"
+#include "BLI_blenlib.h"
+#include "BLI_math.h"
+#include "BLI_editVert.h"
+#include "BLI_ghash.h"
+#include "BLI_rand.h"
#include "DNA_armature_types.h"
#include "DNA_curve_types.h"
@@ -48,11 +52,7 @@
#include "DNA_meshdata_types.h"
#include "DNA_vfont_types.h"
-#include "BLI_blenlib.h"
-#include "BLI_math.h"
-#include "BLI_editVert.h"
-#include "BLI_ghash.h"
-#include "BLI_rand.h"
+#include "IMB_imbuf_types.h"
#include "BKE_anim.h"
#include "BKE_constraint.h"
diff --git a/source/blender/editors/object/object_group.c b/source/blender/editors/object/object_group.c
index 8a0e598af9f..f000485466f 100644
--- a/source/blender/editors/object/object_group.c
+++ b/source/blender/editors/object/object_group.c
@@ -29,7 +29,6 @@
#include <string.h>
-#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
diff --git a/source/blender/editors/object/object_ops.c b/source/blender/editors/object/object_ops.c
index 03fe6898987..692b7302cc5 100644
--- a/source/blender/editors/object/object_ops.c
+++ b/source/blender/editors/object/object_ops.c
@@ -29,7 +29,6 @@
#include <stdlib.h>
#include <math.h>
-#include "MEM_guardedalloc.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
@@ -388,25 +387,25 @@ void ED_object_generic_keymap(struct wmKeyConfig *keyconf, struct wmKeyMap *keym
if(do_pet) {
/* context ops */
kmi = WM_keymap_add_item(keymap, "WM_OT_context_cycle_enum", OKEY, KM_PRESS, KM_SHIFT, 0);
- RNA_string_set(kmi->ptr, "data_path", "tool_settings.proportional_editing_falloff");
+ RNA_string_set(kmi->ptr, "data_path", "tool_settings.proportional_edit_falloff");
// Object mode
if (do_pet == 1) {
kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", OKEY, KM_PRESS, 0, 0);
- RNA_string_set(kmi->ptr, "data_path", "tool_settings.proportional_editing_objects");
+ RNA_string_set(kmi->ptr, "data_path", "tool_settings.use_proportional_edit_objects");
} else { // Edit mode
kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle_enum", OKEY, KM_PRESS, 0, 0);
- RNA_string_set(kmi->ptr, "data_path", "tool_settings.proportional_editing");
+ RNA_string_set(kmi->ptr, "data_path", "tool_settings.proportional_edit");
RNA_string_set(kmi->ptr, "value_1", "DISABLED");
RNA_string_set(kmi->ptr, "value_2", "ENABLED");
/* for modes/object types that allow 'connected' mode, add the Alt O key */
if (do_pet == 3) {
kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle_enum", OKEY, KM_PRESS, KM_ALT, 0);
- RNA_string_set(kmi->ptr, "data_path", "tool_settings.proportional_editing");
+ RNA_string_set(kmi->ptr, "data_path", "tool_settings.proportional_edit");
RNA_string_set(kmi->ptr, "value_1", "DISABLED");
RNA_string_set(kmi->ptr, "value_2", "CONNECTED");
}
diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c
index 6e9244e39ca..b8eebd161dc 100644
--- a/source/blender/editors/object/object_relations.c
+++ b/source/blender/editors/object/object_relations.c
@@ -1032,7 +1032,7 @@ static unsigned int move_to_layer_init(bContext *C, wmOperator *op)
int values[20], a;
unsigned int lay= 0;
- if(!RNA_property_is_set(op->ptr, "layer")) {
+ if(!RNA_property_is_set(op->ptr, "layers")) {
CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) {
lay |= base->lay;
}
@@ -1041,10 +1041,10 @@ static unsigned int move_to_layer_init(bContext *C, wmOperator *op)
for(a=0; a<20; a++)
values[a]= (lay & (1<<a));
- RNA_boolean_set_array(op->ptr, "layer", values);
+ RNA_boolean_set_array(op->ptr, "layers", values);
}
else {
- RNA_boolean_get_array(op->ptr, "layer", values);
+ RNA_boolean_get_array(op->ptr, "layers", values);
for(a=0; a<20; a++)
if(values[a])
@@ -1130,7 +1130,7 @@ void OBJECT_OT_move_to_layer(wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
/* properties */
- RNA_def_boolean_layer_member(ot->srna, "layer", 20, NULL, "Layer", "");
+ RNA_def_boolean_layer_member(ot->srna, "layers", 20, NULL, "Layer", "");
}
/************************** Link to Scene Operator *****************************/
diff --git a/source/blender/editors/object/object_select.c b/source/blender/editors/object/object_select.c
index accdb67fb99..fa9a97f4e74 100644
--- a/source/blender/editors/object/object_select.c
+++ b/source/blender/editors/object/object_select.c
@@ -635,7 +635,7 @@ static int object_select_by_layer_exec(bContext *C, wmOperator *op)
short extend;
extend= RNA_boolean_get(op->ptr, "extend");
- layernum = RNA_int_get(op->ptr, "layer");
+ layernum = RNA_int_get(op->ptr, "layers");
if (extend == 0) {
CTX_DATA_BEGIN(C, Base*, base, visible_bases) {
@@ -673,7 +673,7 @@ void OBJECT_OT_select_by_layer(wmOperatorType *ot)
/* properties */
RNA_def_boolean(ot->srna, "extend", FALSE, "Extend", "Extend selection instead of deselecting everything first.");
- RNA_def_int(ot->srna, "layer", 1, 1, 20, "Layer", "", 1, 20);
+ RNA_def_int(ot->srna, "layers", 1, 1, 20, "Layer", "", 1, 20);
}
/************************** Select Inverse *************************/
diff --git a/source/blender/editors/object/object_transform.c b/source/blender/editors/object/object_transform.c
index bbafde60755..813f562f380 100644
--- a/source/blender/editors/object/object_transform.c
+++ b/source/blender/editors/object/object_transform.c
@@ -55,7 +55,6 @@
#include "WM_types.h"
#include "ED_armature.h"
-#include "ED_curve.h"
#include "ED_keyframing.h"
#include "ED_mesh.h"
#include "ED_screen.h"
diff --git a/source/blender/editors/physics/physics_fluid.c b/source/blender/editors/physics/physics_fluid.c
index cbfc984337e..f411f92d395 100644
--- a/source/blender/editors/physics/physics_fluid.c
+++ b/source/blender/editors/physics/physics_fluid.c
@@ -77,7 +77,6 @@
#include "LBM_fluidsim.h"
-#include "BIF_gl.h"
#include "ED_screen.h"
diff --git a/source/blender/editors/render/render_internal.c b/source/blender/editors/render/render_internal.c
index b11ae8525b0..083202e5a03 100644
--- a/source/blender/editors/render/render_internal.c
+++ b/source/blender/editors/render/render_internal.c
@@ -41,6 +41,7 @@
#include "BKE_context.h"
#include "BKE_global.h"
#include "BKE_image.h"
+#include "BKE_library.h"
#include "BKE_main.h"
#include "BKE_multires.h"
#include "BKE_report.h"
@@ -399,7 +400,7 @@ static int screen_render_exec(bContext *C, wmOperator *op)
Render *re= RE_NewRender(scene->id.name);
Image *ima;
View3D *v3d= CTX_wm_view3d(C);
- Main *mainp= G.main; //BKE_undo_get_main(&scene);
+ Main *mainp= CTX_data_main(C);
int lay= (v3d)? v3d->lay: scene->lay;
if(re==NULL) {
@@ -425,8 +426,6 @@ static int screen_render_exec(bContext *C, wmOperator *op)
else
RE_BlenderFrame(re, mainp, scene, NULL, lay, scene->r.cfra);
- //free_main(mainp);
-
// no redraw needed, we leave state as we entered it
ED_update_for_newframe(C, 1);
@@ -436,6 +435,7 @@ static int screen_render_exec(bContext *C, wmOperator *op)
}
typedef struct RenderJob {
+ Main *main;
Scene *scene;
Render *re;
wmWindow *win;
@@ -560,22 +560,24 @@ static void image_rect_update(void *rjv, RenderResult *rr, volatile rcti *renrec
static void render_startjob(void *rjv, short *stop, short *do_update, float *progress)
{
RenderJob *rj= rjv;
- Main *mainp= G.main; //BKE_undo_get_main(&rj->scene);
rj->stop= stop;
rj->do_update= do_update;
rj->progress= progress;
if(rj->anim)
- RE_BlenderAnim(rj->re, mainp, rj->scene, rj->lay, rj->scene->r.sfra, rj->scene->r.efra, rj->scene->r.frame_step, rj->reports);
+ RE_BlenderAnim(rj->re, rj->main, rj->scene, rj->lay, rj->scene->r.sfra, rj->scene->r.efra, rj->scene->r.frame_step, rj->reports);
else
- RE_BlenderFrame(rj->re, mainp, rj->scene, rj->srl, rj->lay, rj->scene->r.cfra);
-
- //free_main(mainp);
+ RE_BlenderFrame(rj->re, rj->main, rj->scene, rj->srl, rj->lay, rj->scene->r.cfra);
}
static void render_endjob(void *rjv)
{
+ RenderJob *rj= rjv;
+
+ if(rj->main != G.main)
+ free_main(rj->main);
+
/* XXX render stability hack */
G.rendering = 0;
WM_main_add_notifier(NC_WINDOW, NULL);
@@ -614,6 +616,7 @@ static int screen_render_modal(bContext *C, wmOperator *op, wmEvent *event)
static int screen_render_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
/* new render clears all callbacks */
+ Main *mainp;
Scene *scene= CTX_data_scene(C);
SceneRenderLayer *srl=NULL;
bScreen *screen= CTX_wm_screen(C);
@@ -630,6 +633,14 @@ static int screen_render_invoke(bContext *C, wmOperator *op, wmEvent *event)
/* stop all running jobs, currently previews frustrate Render */
WM_jobs_stop_all(CTX_wm_manager(C));
+ /* get main */
+ if(G.rt == 101) {
+ /* thread-safety experiment, copy main from the undo buffer */
+ mainp= BKE_undo_get_main(&scene);
+ }
+ else
+ mainp= CTX_data_main(C);
+
/* cancel animation playback */
if (screen->animtimer)
ED_screen_animation_play(C, 0, 0);
@@ -665,7 +676,7 @@ static int screen_render_invoke(bContext *C, wmOperator *op, wmEvent *event)
RNA_string_get(op->ptr, "layer", rl_name);
RNA_string_get(op->ptr, "scene", scene_name);
- scn = (Scene *)BLI_findstring(&CTX_data_main(C)->scene, scene_name, offsetof(ID, name) + 2);
+ scn = (Scene *)BLI_findstring(&mainp->scene, scene_name, offsetof(ID, name) + 2);
rl = (SceneRenderLayer *)BLI_findstring(&scene->r.layers, rl_name, offsetof(SceneRenderLayer, name));
if (scn && rl) {
@@ -676,6 +687,7 @@ static int screen_render_invoke(bContext *C, wmOperator *op, wmEvent *event)
/* job custom data */
rj= MEM_callocN(sizeof(RenderJob), "render job");
+ rj->main= mainp;
rj->scene= scene;
rj->win= CTX_wm_window(C);
rj->srl = srl;
diff --git a/source/blender/editors/render/render_preview.c b/source/blender/editors/render/render_preview.c
index 2561a2c8dbc..71bee8c5b08 100644
--- a/source/blender/editors/render/render_preview.c
+++ b/source/blender/editors/render/render_preview.c
@@ -81,7 +81,6 @@
#include "WM_api.h"
#include "WM_types.h"
-#include "ED_datafiles.h"
#include "ED_render.h"
#include "ED_view3d.h"
@@ -549,8 +548,8 @@ void ED_preview_draw(const bContext *C, void *idp, void *parentp, void *slotp, r
newrect.ymax= rect->ymin;
if(parent) {
- ok = ed_preview_draw_rect(sa, sce, parent, 1, 1, rect, &newrect);
- ok &= ed_preview_draw_rect(sa, sce, id, 1, 0, rect, &newrect);
+ ok = ed_preview_draw_rect(sa, sce, id, 1, 1, rect, &newrect);
+ ok &= ed_preview_draw_rect(sa, sce, parent, 1, 0, rect, &newrect);
}
else
ok = ed_preview_draw_rect(sa, sce, id, 0, 0, rect, &newrect);
@@ -1000,8 +999,8 @@ static void shader_preview_startjob(void *customdata, short *stop, short *do_upd
sp->do_update= do_update;
if(sp->parent) {
- shader_preview_render(sp, sp->parent, 1, 1);
- shader_preview_render(sp, sp->id, 1, 0);
+ shader_preview_render(sp, sp->id, 1, 1);
+ shader_preview_render(sp, sp->parent, 1, 0);
}
else
shader_preview_render(sp, sp->id, 0, 0);
diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c
index 7f7c52a416e..dd77bfc4fd5 100644
--- a/source/blender/editors/screen/screen_edit.c
+++ b/source/blender/editors/screen/screen_edit.c
@@ -51,7 +51,6 @@
#include "ED_image.h"
#include "ED_object.h"
-#include "ED_view3d.h"
#include "ED_screen.h"
#include "ED_screen_types.h"
diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c
index 3daacd8f68e..c96306dde14 100644
--- a/source/blender/editors/screen/screen_ops.c
+++ b/source/blender/editors/screen/screen_ops.c
@@ -1748,10 +1748,10 @@ static int area_join_init(bContext *C, wmOperator *op)
int x2, y2;
/* required properties, make negative to get return 0 if not set by caller */
- x1= RNA_int_get(op->ptr, "x1");
- y1= RNA_int_get(op->ptr, "y1");
- x2= RNA_int_get(op->ptr, "x2");
- y2= RNA_int_get(op->ptr, "y2");
+ x1= RNA_int_get(op->ptr, "min_x");
+ y1= RNA_int_get(op->ptr, "min_y");
+ x2= RNA_int_get(op->ptr, "max_x");
+ y2= RNA_int_get(op->ptr, "max_y");
sa1 = screen_areahascursor(CTX_wm_screen(C), x1, y1);
sa2 = screen_areahascursor(CTX_wm_screen(C), x2, y2);
@@ -1832,10 +1832,10 @@ static int area_join_invoke(bContext *C, wmOperator *op, wmEvent *event)
return OPERATOR_PASS_THROUGH;
/* prepare operator state vars */
- RNA_int_set(op->ptr, "x1", sad->x);
- RNA_int_set(op->ptr, "y1", sad->y);
- RNA_int_set(op->ptr, "x2", event->x);
- RNA_int_set(op->ptr, "y2", event->y);
+ RNA_int_set(op->ptr, "min_x", sad->x);
+ RNA_int_set(op->ptr, "min_y", sad->y);
+ RNA_int_set(op->ptr, "max_x", event->x);
+ RNA_int_set(op->ptr, "max_y", event->y);
if(!area_join_init(C, op))
return OPERATOR_PASS_THROUGH;
@@ -1977,10 +1977,10 @@ static void SCREEN_OT_area_join(wmOperatorType *ot)
ot->flag= OPTYPE_BLOCKING;
/* rna */
- RNA_def_int(ot->srna, "x1", -100, INT_MIN, INT_MAX, "X 1", "", INT_MIN, INT_MAX);
- RNA_def_int(ot->srna, "y1", -100, INT_MIN, INT_MAX, "Y 1", "", INT_MIN, INT_MAX);
- RNA_def_int(ot->srna, "x2", -100, INT_MIN, INT_MAX, "X 2", "", INT_MIN, INT_MAX);
- RNA_def_int(ot->srna, "y2", -100, INT_MIN, INT_MAX, "Y 2", "", INT_MIN, INT_MAX);
+ RNA_def_int(ot->srna, "min_x", -100, INT_MIN, INT_MAX, "X 1", "", INT_MIN, INT_MAX);
+ RNA_def_int(ot->srna, "min_y", -100, INT_MIN, INT_MAX, "Y 1", "", INT_MIN, INT_MAX);
+ RNA_def_int(ot->srna, "max_x", -100, INT_MIN, INT_MAX, "X 2", "", INT_MIN, INT_MAX);
+ RNA_def_int(ot->srna, "max_y", -100, INT_MIN, INT_MAX, "Y 2", "", INT_MIN, INT_MAX);
}
/* ************** repeat last operator ***************************** */
diff --git a/source/blender/editors/sculpt_paint/paint_vertex.c b/source/blender/editors/sculpt_paint/paint_vertex.c
index c72ef295068..1955839e8a4 100644
--- a/source/blender/editors/sculpt_paint/paint_vertex.c
+++ b/source/blender/editors/sculpt_paint/paint_vertex.c
@@ -38,13 +38,13 @@
#include "MEM_guardedalloc.h"
-#include "IMB_imbuf.h"
-#include "IMB_imbuf_types.h"
-
#include "BLI_blenlib.h"
#include "BLI_math.h"
#include "BLI_ghash.h"
+#include "IMB_imbuf.h"
+#include "IMB_imbuf_types.h"
+
#include "DNA_armature_types.h"
#include "DNA_mesh_types.h"
#include "DNA_particle_types.h"
@@ -870,10 +870,16 @@ static int vpaint_radial_control_invoke(bContext *C, wmOperator *op, wmEvent *ev
{
Paint *p = paint_get_active(CTX_data_scene(C));
Brush *brush = paint_brush(p);
+ float col[4];
WM_paint_cursor_end(CTX_wm_manager(C), p->paint_cursor);
p->paint_cursor = NULL;
brush_radial_control_invoke(op, brush, 1);
+
+ copy_v3_v3(col, brush->add_col);
+ col[3]= 0.5f;
+ RNA_float_set_array(op->ptr, "color", col);
+
return WM_radial_control_invoke(C, op, event);
}
@@ -899,10 +905,16 @@ static int wpaint_radial_control_invoke(bContext *C, wmOperator *op, wmEvent *ev
{
Paint *p = paint_get_active(CTX_data_scene(C));
Brush *brush = paint_brush(p);
+ float col[4];
WM_paint_cursor_end(CTX_wm_manager(C), p->paint_cursor);
p->paint_cursor = NULL;
brush_radial_control_invoke(op, brush, 1);
+
+ copy_v3_v3(col, brush->add_col);
+ col[3]= 0.5f;
+ RNA_float_set_array(op->ptr, "color", col);
+
return WM_radial_control_invoke(C, op, event);
}
diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c
index efa8a097277..55781525b26 100644
--- a/source/blender/editors/sculpt_paint/sculpt.c
+++ b/source/blender/editors/sculpt_paint/sculpt.c
@@ -69,7 +69,6 @@
#include "ED_screen.h"
#include "ED_sculpt.h"
#include "ED_view3d.h"
-#include "ED_mesh.h"
#include "paint_intern.h"
#include "sculpt_intern.h"
@@ -2224,10 +2223,24 @@ static int sculpt_radial_control_invoke(bContext *C, wmOperator *op, wmEvent *ev
{
Paint *p = paint_get_active(CTX_data_scene(C));
Brush *brush = paint_brush(p);
+ float col[4], tex_col[4];
WM_paint_cursor_end(CTX_wm_manager(C), p->paint_cursor);
p->paint_cursor = NULL;
brush_radial_control_invoke(op, brush, 1);
+
+ if((brush->flag & BRUSH_DIR_IN) && ELEM4(brush->sculpt_tool, SCULPT_TOOL_DRAW, SCULPT_TOOL_INFLATE, SCULPT_TOOL_CLAY, SCULPT_TOOL_PINCH))
+ copy_v3_v3(col, brush->sub_col);
+ else
+ copy_v3_v3(col, brush->add_col);
+ col[3]= 0.5f;
+
+ copy_v3_v3(tex_col, U.sculpt_paint_overlay_col);
+ tex_col[3]= (brush->texture_overlay_alpha / 100.0f);
+
+ RNA_float_set_array(op->ptr, "color", col);
+ RNA_float_set_array(op->ptr, "texture_color", tex_col);
+
return WM_radial_control_invoke(C, op, event);
}
diff --git a/source/blender/editors/sound/Makefile b/source/blender/editors/sound/Makefile
index 211fcfb9a4c..f51e15627a2 100644
--- a/source/blender/editors/sound/Makefile
+++ b/source/blender/editors/sound/Makefile
@@ -37,6 +37,8 @@ CFLAGS += $(LEVEL_1_C_WARNINGS)
CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include
+CPPFLAGS += -I$(NAN_PYTHON)/include/python$(NAN_PYTHON_VERSION)
+
CPPFLAGS += -I../../windowmanager
CPPFLAGS += -I../../blenkernel
CPPFLAGS += -I../../blenloader
diff --git a/source/blender/editors/space_action/action_draw.c b/source/blender/editors/space_action/action_draw.c
index 0d1ab8a2c0f..d2067790b2f 100644
--- a/source/blender/editors/space_action/action_draw.c
+++ b/source/blender/editors/space_action/action_draw.c
@@ -34,7 +34,6 @@
#include <string.h>
#include <float.h>
-#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
#include "BLI_math.h"
@@ -51,7 +50,6 @@
/* Everything from source (BIF, BDR, BSE) ------------------------------ */
#include "BIF_gl.h"
-#include "BIF_glutil.h"
#include "UI_interface.h"
#include "UI_resources.h"
diff --git a/source/blender/editors/space_action/action_edit.c b/source/blender/editors/space_action/action_edit.c
index 99160cfab7b..916b0032f17 100644
--- a/source/blender/editors/space_action/action_edit.c
+++ b/source/blender/editors/space_action/action_edit.c
@@ -32,7 +32,6 @@
#include <string.h>
#include <float.h>
-#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
#include "BLI_math.h"
diff --git a/source/blender/editors/space_action/action_ops.c b/source/blender/editors/space_action/action_ops.c
index 73148f016b0..19dd4512909 100644
--- a/source/blender/editors/space_action/action_ops.c
+++ b/source/blender/editors/space_action/action_ops.c
@@ -29,7 +29,6 @@
#include <stdlib.h>
#include <math.h>
-#include "MEM_guardedalloc.h"
#include "DNA_space_types.h"
diff --git a/source/blender/editors/space_api/space.c b/source/blender/editors/space_api/space.c
index 111c22c3542..e862358c465 100644
--- a/source/blender/editors/space_api/space.c
+++ b/source/blender/editors/space_api/space.c
@@ -29,7 +29,6 @@
#include <string.h>
#include <stdio.h>
-#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
#include "BLI_math.h"
diff --git a/source/blender/editors/space_api/spacetypes.c b/source/blender/editors/space_api/spacetypes.c
index d841a5a7c19..2140c59da67 100644
--- a/source/blender/editors/space_api/spacetypes.c
+++ b/source/blender/editors/space_api/spacetypes.c
@@ -36,7 +36,6 @@
#include "UI_interface.h"
#include "UI_view2d.h"
-#include "BIF_gl.h"
#include "ED_anim_api.h"
#include "ED_armature.h"
diff --git a/source/blender/editors/space_buttons/buttons_header.c b/source/blender/editors/space_buttons/buttons_header.c
index c7f80f4d724..ab756b638fa 100644
--- a/source/blender/editors/space_buttons/buttons_header.c
+++ b/source/blender/editors/space_buttons/buttons_header.c
@@ -30,7 +30,6 @@
#include <stdio.h>
-#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
@@ -40,8 +39,6 @@
#include "ED_types.h"
-#include "BIF_gl.h"
-#include "BIF_glutil.h"
#include "UI_interface.h"
#include "UI_resources.h"
diff --git a/source/blender/editors/space_console/console_draw.c b/source/blender/editors/space_console/console_draw.c
index f9deac6c753..74d47ad675d 100644
--- a/source/blender/editors/space_console/console_draw.c
+++ b/source/blender/editors/space_console/console_draw.c
@@ -33,7 +33,6 @@
#include <sys/stat.h>
#include <limits.h>
-#include "MEM_guardedalloc.h"
#include "BLF_api.h"
diff --git a/source/blender/editors/space_file/filesel.c b/source/blender/editors/space_file/filesel.c
index 0dbd1048348..52d59270663 100644
--- a/source/blender/editors/space_file/filesel.c
+++ b/source/blender/editors/space_file/filesel.c
@@ -73,8 +73,6 @@
#include "WM_api.h"
#include "WM_types.h"
-#include "BIF_gl.h"
-#include "BIF_glutil.h"
#include "RNA_access.h"
diff --git a/source/blender/editors/space_file/writeimage.c b/source/blender/editors/space_file/writeimage.c
index 39cd48b1d8a..b69bfdc0231 100644
--- a/source/blender/editors/space_file/writeimage.c
+++ b/source/blender/editors/space_file/writeimage.c
@@ -29,7 +29,6 @@
#include <string.h>
-#include "MEM_guardedalloc.h"
#include "IMB_imbuf.h"
#include "IMB_imbuf_types.h"
diff --git a/source/blender/editors/space_graph/Makefile b/source/blender/editors/space_graph/Makefile
index 633242355f0..1ac744af239 100644
--- a/source/blender/editors/space_graph/Makefile
+++ b/source/blender/editors/space_graph/Makefile
@@ -37,6 +37,8 @@ include nan_compile.mk
CFLAGS += $(LEVEL_1_C_WARNINGS)
+CPPFLAGS += -I$(NAN_PYTHON)/include/python$(NAN_PYTHON_VERSION)
+
CPPFLAGS += -I$(NAN_GLEW)/include
CPPFLAGS += -I$(OPENGL_HEADERS)
CPPFLAGS += -I$(NAN_AUDASPACE)/include
diff --git a/source/blender/editors/space_graph/graph_buttons.c b/source/blender/editors/space_graph/graph_buttons.c
index 4e7661b12ac..14f684dd9e3 100644
--- a/source/blender/editors/space_graph/graph_buttons.c
+++ b/source/blender/editors/space_graph/graph_buttons.c
@@ -48,7 +48,6 @@
#include "BKE_main.h"
#include "BKE_screen.h"
-#include "BIF_gl.h"
#include "WM_api.h"
#include "WM_types.h"
@@ -151,7 +150,7 @@ static void graph_panel_view(const bContext *C, Panel *pa)
uiItemR(row, &sceneptr, "frame_current", 0, "Cursor X", 0);
uiItemEnumO(row, "GRAPH_OT_snap", "To Keys", 0, "type", GRAPHKEYS_SNAP_CFRA);
row= uiLayoutSplit(subcol, 0.7, 1);
- uiItemR(row, &spaceptr, "cursor_value", 0, "Cursor Y", 0);
+ uiItemR(row, &spaceptr, "cursor_position_y", 0, "Cursor Y", 0);
uiItemEnumO(row, "GRAPH_OT_snap", "To Keys", 0, "type", GRAPHKEYS_SNAP_VALUE);
}
@@ -273,11 +272,11 @@ static void graph_panel_key_properties(const bContext *C, Panel *pa)
/* previous handle - only if previous was Bezier interpolation */
if ((prevbezt) && (prevbezt->ipo == BEZT_IPO_BEZ))
- uiItemR(col, &bezt_ptr, "handle1", 0, NULL, 0);
+ uiItemR(col, &bezt_ptr, "handle_left", 0, NULL, 0);
/* next handle - only if current is Bezier interpolation */
if (bezt->ipo == BEZT_IPO_BEZ)
- uiItemR(col, &bezt_ptr, "handle2", 0, NULL, 0);
+ uiItemR(col, &bezt_ptr, "handle_right", 0, NULL, 0);
}
else
uiItemL(layout, "No active keyframe on F-Curve", 0);
@@ -458,7 +457,7 @@ static void graph_panel_driverVar__locDiff(const bContext *C, uiLayout *layout,
uiItemPointerR(col, &dtar_ptr, "bone_target", &tar_ptr, "bones", "", ICON_BONE_DATA);
}
- uiItemR(col, &dtar_ptr, "use_local_space_transforms", 0, NULL, 0);
+ uiItemR(col, &dtar_ptr, "use_local_space_transform", 0, NULL, 0);
col= uiLayoutColumn(layout, 1);
uiTemplateAnyID(col, (bContext *)C, &dtar2_ptr, "id", "id_type", "Ob/Bone 2:");
@@ -470,7 +469,7 @@ static void graph_panel_driverVar__locDiff(const bContext *C, uiLayout *layout,
uiItemPointerR(col, &dtar2_ptr, "bone_target", &tar_ptr, "bones", "", ICON_BONE_DATA);
}
- uiItemR(col, &dtar2_ptr, "use_local_space_transforms", 0, NULL, 0);
+ uiItemR(col, &dtar2_ptr, "use_local_space_transform", 0, NULL, 0);
}
/* settings for 'transform channel' driver variable type */
@@ -497,7 +496,7 @@ static void graph_panel_driverVar__transChan(const bContext *C, uiLayout *layout
row= uiLayoutRow(layout, 1);
uiItemR(row, &dtar_ptr, "transform_type", 0, "", 0);
- uiItemR(row, &dtar_ptr, "use_local_space_transforms", 0, NULL, 0);
+ uiItemR(row, &dtar_ptr, "use_local_space_transform", 0, NULL, 0);
}
/* driver settings for active F-Curve (only for 'Drivers' mode) */
diff --git a/source/blender/editors/space_graph/graph_draw.c b/source/blender/editors/space_graph/graph_draw.c
index b9ef1d80ec3..f780a6c31ee 100644
--- a/source/blender/editors/space_graph/graph_draw.c
+++ b/source/blender/editors/space_graph/graph_draw.c
@@ -35,7 +35,6 @@
#include <io.h>
#endif
-#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
#include "BLI_math.h"
diff --git a/source/blender/editors/space_graph/graph_edit.c b/source/blender/editors/space_graph/graph_edit.c
index 01378d9ef85..5c692ba1112 100644
--- a/source/blender/editors/space_graph/graph_edit.c
+++ b/source/blender/editors/space_graph/graph_edit.c
@@ -1043,7 +1043,7 @@ static int graphkeys_sound_bake_exec(bContext *C, wmOperator *op)
RNA_float_get(op->ptr, "release"),
RNA_float_get(op->ptr, "threshold"),
RNA_boolean_get(op->ptr, "accumulate"),
- RNA_boolean_get(op->ptr, "additive"),
+ RNA_boolean_get(op->ptr, "use_additive"),
RNA_boolean_get(op->ptr, "square"),
RNA_float_get(op->ptr, "sthreshold"),
FPS, &sbi.length);
@@ -1118,7 +1118,7 @@ void GRAPH_OT_sound_bake (wmOperatorType *ot)
RNA_def_float(ot->srna, "release", 0.2, 0.0, 5.0, "Release time", "", 0.01, 0.2);
RNA_def_float(ot->srna, "threshold", 0.0, 0.0, 1.0, "Threshold", "", 0.01, 0.1);
RNA_def_boolean(ot->srna, "accumulate", 0, "Accumulate", "");
- RNA_def_boolean(ot->srna, "additive", 0, "Additive", "");
+ RNA_def_boolean(ot->srna, "use_additive", 0, "Additive", "");
RNA_def_boolean(ot->srna, "square", 0, "Square", "");
RNA_def_float(ot->srna, "sthreshold", 0.1, 0.0, 1.0, "Square Threshold", "", 0.01, 0.1);
}
diff --git a/source/blender/editors/space_graph/graph_ops.c b/source/blender/editors/space_graph/graph_ops.c
index 66d07c3bd11..0069e6e0675 100644
--- a/source/blender/editors/space_graph/graph_ops.c
+++ b/source/blender/editors/space_graph/graph_ops.c
@@ -29,7 +29,6 @@
#include <stdlib.h>
#include <math.h>
-#include "MEM_guardedalloc.h"
#include "DNA_scene_types.h"
diff --git a/source/blender/editors/space_graph/graph_utils.c b/source/blender/editors/space_graph/graph_utils.c
index 7b8bf8c7973..927149a268d 100644
--- a/source/blender/editors/space_graph/graph_utils.c
+++ b/source/blender/editors/space_graph/graph_utils.c
@@ -45,7 +45,6 @@
#include "BKE_context.h"
#include "BKE_fcurve.h"
-#include "BIF_gl.h"
#include "WM_api.h"
diff --git a/source/blender/editors/space_image/image_buttons.c b/source/blender/editors/space_image/image_buttons.c
index 40f048ceadb..4f9163bc32c 100644
--- a/source/blender/editors/space_image/image_buttons.c
+++ b/source/blender/editors/space_image/image_buttons.c
@@ -59,8 +59,6 @@
#include "ED_screen.h"
#include "ED_uvedit.h"
-#include "BIF_gl.h"
-#include "BIF_glutil.h"
#include "RNA_access.h"
@@ -768,7 +766,7 @@ void uiTemplateImage(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propn
prop= RNA_struct_find_property(ptr, propname);
if(!prop) {
- printf("uiTemplateImage: property not found: %s\n", propname);
+ printf("uiTemplateImage: property not found: %s.%s\n", RNA_struct_identifier(ptr->type), propname);
return;
}
@@ -880,13 +878,13 @@ void uiTemplateImage(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propn
split= uiLayoutSplit(layout, 0, 0);
col= uiLayoutColumn(split, 0);
- uiItemR(col, &imaptr, "fields", 0, NULL, 0);
+ uiItemR(col, &imaptr, "use_fields", 0, NULL, 0);
row= uiLayoutRow(col, 0);
uiItemR(row, &imaptr, "field_order", UI_ITEM_R_EXPAND, NULL, 0);
- uiLayoutSetActive(row, RNA_boolean_get(&imaptr, "fields"));
+ uiLayoutSetActive(row, RNA_boolean_get(&imaptr, "use_fields"));
col= uiLayoutColumn(split, 0);
- uiItemR(col, &imaptr, "premultiply", 0, NULL, 0);
+ uiItemR(col, &imaptr, "use_premultiply", 0, NULL, 0);
}
}
@@ -911,7 +909,7 @@ void uiTemplateImage(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propn
col= uiLayoutColumn(split, 0);
uiItemR(col, userptr, "fields_per_frame", 0, "Fields", 0);
- uiItemR(col, userptr, "auto_refresh", 0, NULL, 0);
+ uiItemR(col, userptr, "use_auto_refresh", 0, NULL, 0);
uiItemR(col, userptr, "cyclic", 0, NULL, 0);
}
else if(ima->source==IMA_SRC_GENERATED) {
diff --git a/source/blender/editors/space_image/image_header.c b/source/blender/editors/space_image/image_header.c
index 5ccd479da96..7ecb2565e72 100644
--- a/source/blender/editors/space_image/image_header.c
+++ b/source/blender/editors/space_image/image_header.c
@@ -33,7 +33,6 @@
#include "DNA_space_types.h"
#include "DNA_windowmanager_types.h"
-#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
#include "BLI_editVert.h"
@@ -45,8 +44,6 @@
#include "WM_types.h"
-#include "BIF_gl.h"
-#include "BIF_glutil.h"
#include "UI_interface.h"
diff --git a/source/blender/editors/space_image/space_image.c b/source/blender/editors/space_image/space_image.c
index ca71b021630..0b8a2d8f843 100644
--- a/source/blender/editors/space_image/space_image.c
+++ b/source/blender/editors/space_image/space_image.c
@@ -46,7 +46,6 @@
#include "BKE_mesh.h"
#include "BKE_screen.h"
-#include "IMB_imbuf.h"
#include "IMB_imbuf_types.h"
#include "ED_mesh.h"
@@ -55,7 +54,6 @@
#include "ED_uvedit.h"
#include "BIF_gl.h"
-#include "BIF_glutil.h"
#include "RNA_access.h"
diff --git a/source/blender/editors/space_info/info_ops.c b/source/blender/editors/space_info/info_ops.c
index 202e79f2c2d..51767d3e006 100644
--- a/source/blender/editors/space_info/info_ops.c
+++ b/source/blender/editors/space_info/info_ops.c
@@ -50,8 +50,6 @@
#include "WM_api.h"
#include "WM_types.h"
-#include "BIF_gl.h"
-#include "BIF_glutil.h"
#include "UI_interface.h"
diff --git a/source/blender/editors/space_logic/logic_buttons.c b/source/blender/editors/space_logic/logic_buttons.c
index 3787ac6213d..d8dfd8cb52d 100644
--- a/source/blender/editors/space_logic/logic_buttons.c
+++ b/source/blender/editors/space_logic/logic_buttons.c
@@ -28,7 +28,6 @@
#include <stdio.h>
-#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
#include "BLI_math.h"
@@ -38,8 +37,6 @@
#include "ED_screen.h"
-#include "BIF_gl.h"
-#include "BIF_glutil.h"
#include "RNA_access.h"
#include "RNA_define.h"
diff --git a/source/blender/editors/space_logic/logic_window.c b/source/blender/editors/space_logic/logic_window.c
index 798c7639d7e..8a703c510c4 100644
--- a/source/blender/editors/space_logic/logic_window.c
+++ b/source/blender/editors/space_logic/logic_window.c
@@ -57,7 +57,6 @@
#include "WM_types.h"
#include "BIF_gl.h"
-#include "BIF_glutil.h"
#include "UI_interface.h"
@@ -1926,7 +1925,7 @@ static short draw_actuatorbuttons(Main *bmain, Object *ob, bActuator *act, uiBlo
uiDefButBitS(block, TOG, ACT_LIN_VEL_LOCAL, 0, "L", xco+45+3*wval, yco-129, 15, 19, &oa->flag, 0.0, 0.0, 0, 0, "Local transformation");
uiDefButBitS(block, TOG, ACT_ANG_VEL_LOCAL, 0, "L", xco+45+3*wval, yco-148, 15, 19, &oa->flag, 0.0, 0.0, 0, 0, "Local transformation");
- uiDefButBitS(block, TOG, ACT_ADD_LIN_VEL, 0, "add",xco+45+3*wval+15, yco-129, 35, 19, &oa->flag, 0.0, 0.0, 0, 0, "Toggles between ADD and SET linV");
+ uiDefButBitS(block, TOG, ACT_ADD_LIN_VEL, 0, "use_additive",xco+45+3*wval+15, yco-129, 35, 19, &oa->flag, 0.0, 0.0, 0, 0, "Toggles between ADD and SET linV");
}
} else if (oa->type == ACT_OBJECT_SERVO)
{
@@ -2530,7 +2529,7 @@ static short draw_actuatorbuttons(Main *bmain, Object *ob, bActuator *act, uiBlo
}
//str = "Scene %t|Load game%x0|Start loaded game%x1|Restart this game%x2|Quit this game %x3";
- str = "Scene %t|Start new game%x0|Restart this game%x2|Quit this game %x3|Save GameLogic.globalDict %x4|Load GameLogic.globalDict %x5";
+ str = "Scene %t|Start new game%x0|Restart this game%x2|Quit this game %x3|Save bge.logic.globalDict %x4|Load bge.logic.globalDict %x5";
uiDefButS(block, MENU, B_REDR, str, xco+40, yco-24, (width-80), 19, &gma->type, 0.0, 0.0, 0, 0, "");
yco -= ysize;
@@ -3184,8 +3183,8 @@ static void draw_sensor_header(uiLayout *layout, PointerRNA *ptr, PointerRNA *lo
box= uiLayoutBox(layout);
row= uiLayoutRow(box, 0);
- uiItemR(row, ptr, "expanded", UI_ITEM_R_NO_BG, "", 0);
- if(RNA_boolean_get(ptr, "expanded")) {
+ uiItemR(row, ptr, "show_expanded", UI_ITEM_R_NO_BG, "", 0);
+ if(RNA_boolean_get(ptr, "show_expanded")) {
uiItemR(row, ptr, "type", 0, "", 0);
uiItemR(row, ptr, "name", 0, "", 0);
} else {
@@ -3194,11 +3193,11 @@ static void draw_sensor_header(uiLayout *layout, PointerRNA *ptr, PointerRNA *lo
}
subrow= uiLayoutRow(row, 0);
- uiLayoutSetActive(subrow, ((RNA_boolean_get(logic_ptr, "sensors_show_active_states")
- && RNA_boolean_get(ptr, "expanded")) || RNA_boolean_get(ptr, "pinned")));
- uiItemR(subrow, ptr, "pinned", UI_ITEM_R_NO_BG, "", 0);
+ uiLayoutSetActive(subrow, ((RNA_boolean_get(logic_ptr, "show_sensors_active_states")
+ && RNA_boolean_get(ptr, "show_expanded")) || RNA_boolean_get(ptr, "pin")));
+ uiItemR(subrow, ptr, "pin", UI_ITEM_R_NO_BG, "", 0);
- if(RNA_boolean_get(ptr, "expanded")==0) {
+ if(RNA_boolean_get(ptr, "show_expanded")==0) {
subrow= uiLayoutRow(row, 1);
uiItemEnumO(subrow, "LOGIC_OT_sensor_move", "", ICON_TRIA_UP, "direction", 1); // up
uiItemEnumO(subrow, "LOGIC_OT_sensor_move", "", ICON_TRIA_DOWN, "direction", 2); // down
@@ -3215,13 +3214,13 @@ static void draw_sensor_internal_header(uiLayout *layout, PointerRNA *ptr)
split = uiLayoutSplit(box, 0.45, 0);
row= uiLayoutRow(split, 1);
- uiItemR(row, ptr, "pulse_true_level", 0, "", ICON_DOTSUP);
- uiItemR(row, ptr, "pulse_false_level", 0, "", ICON_DOTSDOWN);
+ uiItemR(row, ptr, "use_pulse_true_level", 0, "", ICON_DOTSUP);
+ uiItemR(row, ptr, "use_pulse_false_level", 0, "", ICON_DOTSDOWN);
uiItemR(row, ptr, "frequency", 0, "Freq", 0);
row= uiLayoutRow(split, 1);
- uiItemR(row, ptr, "level", UI_ITEM_R_TOGGLE, NULL, 0);
- uiItemR(row, ptr, "tap", UI_ITEM_R_TOGGLE, NULL, 0);
+ uiItemR(row, ptr, "use_level", UI_ITEM_R_TOGGLE, NULL, 0);
+ uiItemR(row, ptr, "use_tap", UI_ITEM_R_TOGGLE, NULL, 0);
row= uiLayoutRow(split, 1);
uiItemR(row, ptr, "invert", UI_ITEM_R_TOGGLE, "Invert", 0);
@@ -3276,10 +3275,10 @@ static void draw_sensor_collision(uiLayout *layout, PointerRNA *ptr, bContext *C
split = uiLayoutSplit(layout, 0.3, 0);
row = uiLayoutRow(split, 1);
- uiItemR(row, ptr, "pulse", UI_ITEM_R_TOGGLE, NULL, 0);
- uiItemR(row, ptr, "collision_type", UI_ITEM_R_TOGGLE, NULL, 0);
+ uiItemR(row, ptr, "use_pulse", UI_ITEM_R_TOGGLE, NULL, 0);
+ uiItemR(row, ptr, "use_material", UI_ITEM_R_TOGGLE, NULL, 0);
- switch (RNA_enum_get(ptr, "collision_type")) {
+ switch (RNA_enum_get(ptr, "use_material")) {
case SENS_COLLISION_PROPERTY:
uiItemR(split, ptr, "property", 0, NULL, 0);
break;
@@ -3297,7 +3296,7 @@ static void draw_sensor_delay(uiLayout *layout, PointerRNA *ptr)
uiItemR(row, ptr, "delay", 0, NULL, 0);
uiItemR(row, ptr, "duration", 0, NULL, 0);
- uiItemR(row, ptr, "repeat", 0, NULL, 0);
+ uiItemR(row, ptr, "use_repeat", 0, NULL, 0);
}
static void draw_sensor_joystick(uiLayout *layout, PointerRNA *ptr)
@@ -3309,10 +3308,10 @@ static void draw_sensor_joystick(uiLayout *layout, PointerRNA *ptr)
switch (RNA_enum_get(ptr, "event_type")) {
case SENS_JOY_BUTTON:
- uiItemR(layout, ptr, "all_events", 0, NULL, 0);
+ uiItemR(layout, ptr, "use_all_events", 0, NULL, 0);
col = uiLayoutColumn(layout, 0);
- uiLayoutSetActive(col, RNA_boolean_get(ptr, "all_events")==0);
+ uiLayoutSetActive(col, RNA_boolean_get(ptr, "use_all_events")==0);
uiItemR(col, ptr, "button_number", 0, NULL, 0);
break;
case SENS_JOY_AXIS:
@@ -3320,17 +3319,17 @@ static void draw_sensor_joystick(uiLayout *layout, PointerRNA *ptr)
uiItemR(row, ptr, "axis_number", 0, NULL, 0);
uiItemR(row, ptr, "axis_threshold", 0, NULL, 0);
- uiItemR(layout, ptr, "all_events", 0, NULL, 0);
+ uiItemR(layout, ptr, "use_all_events", 0, NULL, 0);
col = uiLayoutColumn(layout, 0);
- uiLayoutSetActive(col, RNA_boolean_get(ptr, "all_events")==0);
+ uiLayoutSetActive(col, RNA_boolean_get(ptr, "use_all_events")==0);
uiItemR(col, ptr, "axis_direction", 0, NULL, 0);
break;
case SENS_JOY_HAT:
uiItemR(layout, ptr, "hat_number", 0, NULL, 0);
- uiItemR(layout, ptr, "all_events", 0, NULL, 0);
+ uiItemR(layout, ptr, "use_all_events", 0, NULL, 0);
col = uiLayoutColumn(layout, 0);
- uiLayoutSetActive(col, RNA_boolean_get(ptr, "all_events")==0);
+ uiLayoutSetActive(col, RNA_boolean_get(ptr, "use_all_events")==0);
uiItemR(col, ptr, "hat_direction", 0, NULL, 0);
break;
case SENS_JOY_AXIS_SINGLE:
@@ -3350,20 +3349,20 @@ static void draw_sensor_keyboard(uiLayout *layout, PointerRNA *ptr)
row = uiLayoutRow(layout, 0);
uiItemL(row, "Key:", 0);
col = uiLayoutColumn(row, 0);
- uiLayoutSetActive(col, RNA_boolean_get(ptr, "all_keys")==0);
+ uiLayoutSetActive(col, RNA_boolean_get(ptr, "use_all_keys")==0);
uiItemR(col, ptr, "key", UI_ITEM_R_EVENT, "", 0);
col = uiLayoutColumn(row, 0);
- uiItemR(col, ptr, "all_keys", UI_ITEM_R_TOGGLE, NULL, 0);
+ uiItemR(col, ptr, "use_all_keys", UI_ITEM_R_TOGGLE, NULL, 0);
col = uiLayoutColumn(layout, 0);
- uiLayoutSetActive(col, RNA_boolean_get(ptr, "all_keys")==0);
+ uiLayoutSetActive(col, RNA_boolean_get(ptr, "use_all_keys")==0);
row = uiLayoutRow(col, 0);
uiItemL(row, "First Modifier:", 0);
- uiItemR(row, ptr, "modifier_key", UI_ITEM_R_EVENT, "", 0);
+ uiItemR(row, ptr, "modifier_key_1", UI_ITEM_R_EVENT, "", 0);
row = uiLayoutRow(col, 0);
uiItemL(row, "Second Modifier:", 0);
- uiItemR(row, ptr, "second_modifier_key", UI_ITEM_R_EVENT, "", 0);
+ uiItemR(row, ptr, "modifier_key_2", UI_ITEM_R_EVENT, "", 0);
RNA_pointer_create((ID *)ob, &RNA_GameObjectSettings, ob, &settings_ptr);
uiItemPointerR(layout, ptr, "target", &settings_ptr, "properties", NULL, 0);
@@ -3405,8 +3404,8 @@ static void draw_sensor_property(uiLayout *layout, PointerRNA *ptr)
switch (RNA_enum_get(ptr, "evaluation_type")) {
case SENS_PROP_INTERVAL:
row = uiLayoutRow(layout, 0);
- uiItemR(row, ptr, "min_value", 0, NULL, 0);
- uiItemR(row, ptr, "max_value", 0, NULL, 0);
+ uiItemR(row, ptr, "value_min", 0, NULL, 0);
+ uiItemR(row, ptr, "value_max", 0, NULL, 0);
break;
case SENS_PROP_EQUAL:
uiItemR(layout, ptr, "value", 0, NULL, 0);
@@ -3457,7 +3456,7 @@ static void draw_sensor_ray(uiLayout *layout, PointerRNA *ptr, bContext *C)
uiItemR(split, ptr, "axis", 0, "", 0);
row= uiLayoutRow(split, 0);
uiItemR(row, ptr, "range", 0, NULL, 0);
- uiItemR(row, ptr, "x_ray_mode", UI_ITEM_R_TOGGLE, NULL, 0);
+ uiItemR(row, ptr, "use_x_ray", UI_ITEM_R_TOGGLE, NULL, 0);
}
static void draw_sensor_touch(uiLayout *layout, PointerRNA *ptr)
@@ -3469,7 +3468,7 @@ void draw_brick_sensor(uiLayout *layout, PointerRNA *ptr, bContext *C)
{
uiLayout *box;
- if (!RNA_boolean_get(ptr, "expanded"))
+ if (!RNA_boolean_get(ptr, "show_expanded"))
return;
draw_sensor_internal_header(layout, ptr);
@@ -3532,13 +3531,13 @@ static void draw_controller_header(uiLayout *layout, PointerRNA *ptr, int xco, i
bController *cont= (bController *)ptr->data;
char state[3];
- sprintf(state, "%d", RNA_int_get(ptr, "state"));
+ sprintf(state, "%d", RNA_int_get(ptr, "states"));
box= uiLayoutBox(layout);
row= uiLayoutRow(box, 0);
- uiItemR(row, ptr, "expanded", UI_ITEM_R_NO_BG, "", 0);
- if(RNA_boolean_get(ptr, "expanded")) {
+ uiItemR(row, ptr, "show_expanded", UI_ITEM_R_NO_BG, "", 0);
+ if(RNA_boolean_get(ptr, "show_expanded")) {
uiItemR(row, ptr, "type", 0, "", 0);
uiItemR(row, ptr, "name", 0, "", 0);
/* XXX provisory for Blender 2.50Beta */
@@ -3549,9 +3548,9 @@ static void draw_controller_header(uiLayout *layout, PointerRNA *ptr, int xco, i
uiItemL(row, state, 0);
}
- uiItemR(row, ptr, "priority", 0, "", 0);
+ uiItemR(row, ptr, "use_priority", 0, "", 0);
- if(RNA_boolean_get(ptr, "expanded")==0) {
+ if(RNA_boolean_get(ptr, "show_expanded")==0) {
subrow= uiLayoutRow(row, 1);
uiItemEnumO(subrow, "LOGIC_OT_controller_move", "", ICON_TRIA_UP, "direction", 1); // up
uiItemEnumO(subrow, "LOGIC_OT_controller_move", "", ICON_TRIA_DOWN, "direction", 2); // down
@@ -3576,7 +3575,7 @@ static void draw_controller_python(uiLayout *layout, PointerRNA *ptr)
else {
subsplit = uiLayoutSplit(split, 0.8, 0);
uiItemR(subsplit, ptr, "module", 0, "", 0);
- uiItemR(subsplit, ptr, "debug", UI_ITEM_R_TOGGLE, NULL, 0);
+ uiItemR(subsplit, ptr, "use_debug", UI_ITEM_R_TOGGLE, NULL, 0);
}
}
@@ -3589,7 +3588,7 @@ void draw_brick_controller(uiLayout *layout, PointerRNA *ptr)
{
uiLayout *box;
- if (!RNA_boolean_get(ptr, "expanded"))
+ if (!RNA_boolean_get(ptr, "show_expanded"))
return;
box = uiLayoutBox(layout);
@@ -3627,8 +3626,8 @@ static void draw_actuator_header(uiLayout *layout, PointerRNA *ptr, PointerRNA *
box= uiLayoutBox(layout);
row= uiLayoutRow(box, 0);
- uiItemR(row, ptr, "expanded", UI_ITEM_R_NO_BG, "", 0);
- if(RNA_boolean_get(ptr, "expanded")) {
+ uiItemR(row, ptr, "show_expanded", UI_ITEM_R_NO_BG, "", 0);
+ if(RNA_boolean_get(ptr, "show_expanded")) {
uiItemR(row, ptr, "type", 0, "", 0);
uiItemR(row, ptr, "name", 0, "", 0);
} else {
@@ -3637,11 +3636,11 @@ static void draw_actuator_header(uiLayout *layout, PointerRNA *ptr, PointerRNA *
}
subrow= uiLayoutRow(row, 0);
- uiLayoutSetActive(subrow, ((RNA_boolean_get(logic_ptr, "actuators_show_active_states")
- && RNA_boolean_get(ptr, "expanded")) || RNA_boolean_get(ptr, "pinned")));
- uiItemR(subrow, ptr, "pinned", UI_ITEM_R_NO_BG, "", 0);
+ uiLayoutSetActive(subrow, ((RNA_boolean_get(logic_ptr, "show_actuators_active_states")
+ && RNA_boolean_get(ptr, "show_expanded")) || RNA_boolean_get(ptr, "pin")));
+ uiItemR(subrow, ptr, "pin", UI_ITEM_R_NO_BG, "", 0);
- if(RNA_boolean_get(ptr, "expanded")==0) {
+ if(RNA_boolean_get(ptr, "show_expanded")==0) {
subrow= uiLayoutRow(row, 1);
uiItemEnumO(subrow, "LOGIC_OT_actuator_move", "", ICON_TRIA_UP, "direction", 1); // up
uiItemEnumO(subrow, "LOGIC_OT_actuator_move", "", ICON_TRIA_DOWN, "direction", 2); // down
@@ -3662,9 +3661,9 @@ static void draw_actuator_action(uiLayout *layout, PointerRNA *ptr)
RNA_pointer_create((ID *)ob, &RNA_GameObjectSettings, ob, &settings_ptr);
row= uiLayoutRow(layout, 0);
- uiItemR(row, ptr, "mode", 0, "", 0);
+ uiItemR(row, ptr, "play_mode", 0, "", 0);
uiItemR(row, ptr, "action", 0, NULL, 0);
- uiItemR(row, ptr, "continue_last_frame", 0, NULL, 0);
+ uiItemR(row, ptr, "use_continue_last_frame", 0, NULL, 0);
row= uiLayoutRow(layout, 0);
if((RNA_enum_get(ptr, "mode") == ACT_ACTION_FROM_PROP))
@@ -3676,7 +3675,7 @@ static void draw_actuator_action(uiLayout *layout, PointerRNA *ptr)
}
row= uiLayoutRow(layout, 0);
- uiItemR(row, ptr, "blendin", 0, NULL, 0);
+ uiItemR(row, ptr, "frame_blend_in", 0, NULL, 0);
uiItemR(row, ptr, "priority", 0, NULL, 0);
row= uiLayoutRow(layout, 0);
@@ -3782,8 +3781,8 @@ static void draw_actuator_constraint(uiLayout *layout, PointerRNA *ptr, bContext
split = uiLayoutSplit(layout, 0.8, 0);
uiItemR(split, ptr, "direction", 0, NULL, 0);
row = uiLayoutRow(split, 1);
- uiItemR(row, ptr, "local", UI_ITEM_R_TOGGLE, NULL, 0);
- uiItemR(row, ptr, "normal", UI_ITEM_R_TOGGLE, NULL, 0);
+ uiItemR(row, ptr, "use_local", UI_ITEM_R_TOGGLE, NULL, 0);
+ uiItemR(row, ptr, "use_normal", UI_ITEM_R_TOGGLE, NULL, 0);
row = uiLayoutRow(layout, 0);
col = uiLayoutColumn(row, 0);
@@ -3791,22 +3790,22 @@ static void draw_actuator_constraint(uiLayout *layout, PointerRNA *ptr, bContext
uiItemR(col, ptr, "range", 0, "", 0);
col = uiLayoutColumn(row, 1);
- uiItemR(col, ptr, "force_distance", UI_ITEM_R_TOGGLE, NULL, 0);
+ uiItemR(col, ptr, "use_force_distance", UI_ITEM_R_TOGGLE, NULL, 0);
subcol = uiLayoutColumn(col, 0);
- uiLayoutSetActive(subcol, RNA_boolean_get(ptr, "force_distance")==1);
+ uiLayoutSetActive(subcol, RNA_boolean_get(ptr, "use_force_distance")==1);
uiItemR(subcol, ptr, "distance", 0, "", 0);
uiItemR(layout, ptr, "damping", UI_ITEM_R_SLIDER , NULL, 0);
split = uiLayoutSplit(layout, 0.15, 0);
- uiItemR(split, ptr, "detect_material", UI_ITEM_R_TOGGLE, NULL, 0);
- if (RNA_boolean_get(ptr, "detect_material"))
+ uiItemR(split, ptr, "use_material_detect", UI_ITEM_R_TOGGLE, NULL, 0);
+ if (RNA_boolean_get(ptr, "use_material_detect"))
uiItemPointerR(split, ptr, "material", &main_ptr, "materials", NULL, ICON_MATERIAL_DATA);
else
uiItemR(split, ptr, "property", 0, NULL, 0);
split = uiLayoutSplit(layout, 0.15, 0);
- uiItemR(split, ptr, "persistent", UI_ITEM_R_TOGGLE, NULL, 0);
+ uiItemR(split, ptr, "use_persistent", UI_ITEM_R_TOGGLE, NULL, 0);
row = uiLayoutRow(split, 1);
uiItemR(row, ptr, "time", 0, NULL, 0);
@@ -3821,11 +3820,11 @@ static void draw_actuator_constraint(uiLayout *layout, PointerRNA *ptr, bContext
uiItemR(row, ptr, "time", 0, NULL, 0);
row=uiLayoutRow(layout, 0);
- uiItemR(row, ptr, "max_rotation", 0, NULL, 0);
+ uiItemR(row, ptr, "rotation_max", 0, NULL, 0);
row=uiLayoutRow(layout, 1);
- uiItemR(row, ptr, "min_angle", 0, NULL, 0);
- uiItemR(row, ptr, "max_angle", 0, NULL, 0);
+ uiItemR(row, ptr, "angle_min", 0, NULL, 0);
+ uiItemR(row, ptr, "angle_max", 0, NULL, 0);
break;
case ACT_CONST_TYPE_FH:
@@ -3834,23 +3833,23 @@ static void draw_actuator_constraint(uiLayout *layout, PointerRNA *ptr, bContext
uiItemR(row, ptr, "fh_damping", UI_ITEM_R_SLIDER , NULL, 0);
uiItemR(row, ptr, "fh_height", 0, NULL, 0);
- uiItemR(split, ptr, "fh_paralel_axis", UI_ITEM_R_TOGGLE , NULL, 0);
+ uiItemR(split, ptr, "use_fh_paralel_axis", UI_ITEM_R_TOGGLE , NULL, 0);
row = uiLayoutRow(layout, 0);
uiItemR(row, ptr, "direction_axis", 0, NULL, 0);
split = uiLayoutSplit(row, 0.9, 0);
uiItemR(split, ptr, "spring", 0, NULL, 0);
- uiItemR(split, ptr, "fh_normal", UI_ITEM_R_TOGGLE , NULL, 0);
+ uiItemR(split, ptr, "use_fh_normal", UI_ITEM_R_TOGGLE , NULL, 0);
split = uiLayoutSplit(layout, 0.15, 0);
- uiItemR(split, ptr, "detect_material", UI_ITEM_R_TOGGLE, NULL, 0);
- if (RNA_boolean_get(ptr, "detect_material"))
+ uiItemR(split, ptr, "use_material_detect", UI_ITEM_R_TOGGLE, NULL, 0);
+ if (RNA_boolean_get(ptr, "use_material_detect"))
uiItemPointerR(split, ptr, "material", &main_ptr, "materials", NULL, ICON_MATERIAL_DATA);
else
uiItemR(split, ptr, "property", 0, NULL, 0);
split = uiLayoutSplit(layout, 0.15, 0);
- uiItemR(split, ptr, "persistent", UI_ITEM_R_TOGGLE, NULL, 0);
+ uiItemR(split, ptr, "use_persistent", UI_ITEM_R_TOGGLE, NULL, 0);
row = uiLayoutRow(split, 0);
uiItemR(row, ptr, "time", 0, NULL, 0);
@@ -3875,12 +3874,12 @@ static void draw_actuator_edit_object(uiLayout *layout, PointerRNA *ptr)
split = uiLayoutSplit(layout, 0.9, 0);
row = uiLayoutRow(split, 0);
uiItemR(row, ptr, "linear_velocity", 0, NULL, 0);
- uiItemR(split, ptr, "local_linear_velocity", UI_ITEM_R_TOGGLE, NULL, 0);
+ uiItemR(split, ptr, "use_local_linear_velocity", UI_ITEM_R_TOGGLE, NULL, 0);
split = uiLayoutSplit(layout, 0.9, 0);
row = uiLayoutRow(split, 0);
uiItemR(row, ptr, "angular_velocity", 0, NULL, 0);
- uiItemR(split, ptr, "local_angular_velocity", UI_ITEM_R_TOGGLE, NULL, 0);
+ uiItemR(split, ptr, "use_local_angular_velocity", UI_ITEM_R_TOGGLE, NULL, 0);
break;
case ACT_EDOB_END_OBJECT:
break;
@@ -3892,15 +3891,15 @@ static void draw_actuator_edit_object(uiLayout *layout, PointerRNA *ptr)
split = uiLayoutSplit(layout, 0.6, 0);
uiItemR(split, ptr, "mesh", 0, NULL, 0);
row = uiLayoutRow(split, 0);
- uiItemR(row, ptr, "replace_display_mesh", UI_ITEM_R_TOGGLE, NULL, 0);
- uiItemR(row, ptr, "replace_physics_mesh", UI_ITEM_R_TOGGLE, NULL, 0);
+ uiItemR(row, ptr, "use_replace_display_mesh", UI_ITEM_R_TOGGLE, NULL, 0);
+ uiItemR(row, ptr, "use_replace_physics_mesh", UI_ITEM_R_TOGGLE, NULL, 0);
break;
case ACT_EDOB_TRACK_TO:
split = uiLayoutSplit(layout, 0.5, 0);
uiItemR(split, ptr, "track_object", 0, NULL, 0);
subsplit = uiLayoutSplit(split, 0.7, 0);
uiItemR(subsplit, ptr, "time", 0, NULL, 0);
- uiItemR(subsplit, ptr, "enable_3d_tracking", UI_ITEM_R_TOGGLE, NULL, 0);
+ uiItemR(subsplit, ptr, "use_3d_tracking", UI_ITEM_R_TOGGLE, NULL, 0);
break;
case ACT_EDOB_DYNAMICS:
if(ob->type != OB_MESH) {
@@ -3928,9 +3927,9 @@ static void draw_actuator_filter_2d(uiLayout *layout, PointerRNA *ptr)
case ACT_2DFILTER_MOTIONBLUR:
split=uiLayoutSplit(layout, 0.75, 1);
row= uiLayoutRow(split, 0);
- uiLayoutSetActive(row, RNA_boolean_get(ptr, "enable_motion_blur")==1);
+ uiLayoutSetActive(row, RNA_boolean_get(ptr, "use_motion_blur")==1);
uiItemR(row, ptr, "motion_blur_factor", 0, NULL, 0);
- uiItemR(split, ptr, "enable_motion_blur", UI_ITEM_R_TOGGLE, NULL, 0);
+ uiItemR(split, ptr, "use_motion_blur", UI_ITEM_R_TOGGLE, NULL, 0);
break;
default: // all other 2D Filters
uiItemR(layout, ptr, "filter_pass", 0, NULL, 0);
@@ -3957,12 +3956,12 @@ static void draw_actuator_ipo(uiLayout *layout, PointerRNA *ptr)
row= uiLayoutRow(layout, 0);
uiItemR(row, ptr, "play_type", 0, "", 0);
subrow= uiLayoutRow(row, 1);
- uiItemR(subrow, ptr, "force", UI_ITEM_R_TOGGLE, NULL, 0);
- uiItemR(subrow, ptr, "add", UI_ITEM_R_TOGGLE, NULL, 0);
+ uiItemR(subrow, ptr, "use_force", UI_ITEM_R_TOGGLE, NULL, 0);
+ uiItemR(subrow, ptr, "use_additive", UI_ITEM_R_TOGGLE, NULL, 0);
col = uiLayoutColumn(subrow, 0);
- uiLayoutSetActive(col, (RNA_boolean_get(ptr, "add") || RNA_boolean_get(ptr, "force")));
- uiItemR(col, ptr, "local", UI_ITEM_R_TOGGLE, NULL, 0);
+ uiLayoutSetActive(col, (RNA_boolean_get(ptr, "use_additive") || RNA_boolean_get(ptr, "use_force")));
+ uiItemR(col, ptr, "use_local", UI_ITEM_R_TOGGLE, NULL, 0);
row= uiLayoutRow(layout, 0);
if((RNA_enum_get(ptr, "play_type") == ACT_IPO_FROM_PROP))
@@ -3972,7 +3971,7 @@ static void draw_actuator_ipo(uiLayout *layout, PointerRNA *ptr)
uiItemR(row, ptr, "frame_start", 0, NULL, 0);
uiItemR(row, ptr, "frame_end", 0, NULL, 0);
}
- uiItemR(row, ptr, "child", 0, NULL, 0);
+ uiItemR(row, ptr, "apply_to_children", 0, NULL, 0);
row= uiLayoutRow(layout, 0);
uiItemPointerR(row, ptr, "frame_property", &settings_ptr, "properties", NULL, 0);
@@ -4018,37 +4017,37 @@ static void draw_actuator_motion(uiLayout *layout, PointerRNA *ptr)
case ACT_OBJECT_NORMAL:
split = uiLayoutSplit(layout, 0.9, 0);
row = uiLayoutRow(split, 0);
- uiItemR(row, ptr, "loc", 0, NULL, 0);
- uiItemR(split, ptr, "local_location", UI_ITEM_R_TOGGLE, NULL, 0);
+ uiItemR(row, ptr, "offset_location", 0, NULL, 0);
+ uiItemR(split, ptr, "use_local_location", UI_ITEM_R_TOGGLE, NULL, 0);
split = uiLayoutSplit(layout, 0.9, 0);
row = uiLayoutRow(split, 0);
- uiItemR(row, ptr, "rot", 0, NULL, 0);
- uiItemR(split, ptr, "local_rotation", UI_ITEM_R_TOGGLE, NULL, 0);
+ uiItemR(row, ptr, "offset_rotation", 0, NULL, 0);
+ uiItemR(split, ptr, "use_local_rotation", UI_ITEM_R_TOGGLE, NULL, 0);
if (ELEM3(physics_type, OB_BODY_TYPE_DYNAMIC, OB_BODY_TYPE_RIGID, OB_BODY_TYPE_SOFT)) {
uiItemL(layout, "Dynamic Object Settings:", 0);
split = uiLayoutSplit(layout, 0.9, 0);
row = uiLayoutRow(split, 0);
uiItemR(row, ptr, "force", 0, NULL, 0);
- uiItemR(split, ptr, "local_force", UI_ITEM_R_TOGGLE, NULL, 0);
+ uiItemR(split, ptr, "use_local_force", UI_ITEM_R_TOGGLE, NULL, 0);
split = uiLayoutSplit(layout, 0.9, 0);
row = uiLayoutRow(split, 0);
uiItemR(row, ptr, "torque", 0, NULL, 0);
- uiItemR(split, ptr, "local_torque", UI_ITEM_R_TOGGLE, NULL, 0);
+ uiItemR(split, ptr, "use_local_torque", UI_ITEM_R_TOGGLE, NULL, 0);
split = uiLayoutSplit(layout, 0.9, 0);
row = uiLayoutRow(split, 0);
uiItemR(row, ptr, "linear_velocity", 0, NULL, 0);
row = uiLayoutRow(split, 1);
- uiItemR(row, ptr, "local_linear_velocity", UI_ITEM_R_TOGGLE, NULL, 0);
- uiItemR(row, ptr, "add_linear_velocity", UI_ITEM_R_TOGGLE, NULL, 0);
+ uiItemR(row, ptr, "use_local_linear_velocity", UI_ITEM_R_TOGGLE, NULL, 0);
+ uiItemR(row, ptr, "use_add_linear_velocity", UI_ITEM_R_TOGGLE, NULL, 0);
split = uiLayoutSplit(layout, 0.9, 0);
row = uiLayoutRow(split, 0);
uiItemR(row, ptr, "angular_velocity", 0, NULL, 0);
- uiItemR(split, ptr, "local_angular_velocity", UI_ITEM_R_TOGGLE, NULL, 0);
+ uiItemR(split, ptr, "use_local_angular_velocity", UI_ITEM_R_TOGGLE, NULL, 0);
uiItemR(layout, ptr, "damping", 0, NULL, 0);
}
@@ -4059,27 +4058,27 @@ static void draw_actuator_motion(uiLayout *layout, PointerRNA *ptr)
split = uiLayoutSplit(layout, 0.9, 0);
row = uiLayoutRow(split, 0);
uiItemR(row, ptr, "linear_velocity", 0, NULL, 0);
- uiItemR(split, ptr, "local_linear_velocity", UI_ITEM_R_TOGGLE, NULL, 0);
+ uiItemR(split, ptr, "use_local_linear_velocity", UI_ITEM_R_TOGGLE, NULL, 0);
row = uiLayoutRow(layout, 0);
col = uiLayoutColumn(row, 0);
- uiItemR(col, ptr, "servo_limit_x", UI_ITEM_R_TOGGLE, NULL, 0);
+ uiItemR(col, ptr, "use_servo_limit_x", UI_ITEM_R_TOGGLE, NULL, 0);
subcol = uiLayoutColumn(col, 1);
- uiLayoutSetActive(subcol, RNA_boolean_get(ptr, "servo_limit_x")==1);
+ uiLayoutSetActive(subcol, RNA_boolean_get(ptr, "use_servo_limit_x")==1);
uiItemR(subcol, ptr, "force_max_x", 0, NULL, 0);
uiItemR(subcol, ptr, "force_min_x", 0, NULL, 0);
col = uiLayoutColumn(row, 0);
- uiItemR(col, ptr, "servo_limit_y", UI_ITEM_R_TOGGLE, NULL, 0);
+ uiItemR(col, ptr, "use_servo_limit_y", UI_ITEM_R_TOGGLE, NULL, 0);
subcol = uiLayoutColumn(col, 1);
- uiLayoutSetActive(subcol, RNA_boolean_get(ptr, "servo_limit_y")==1);
+ uiLayoutSetActive(subcol, RNA_boolean_get(ptr, "use_servo_limit_y")==1);
uiItemR(subcol, ptr, "force_max_y", 0, NULL, 0);
uiItemR(subcol, ptr, "force_min_y", 0, NULL, 0);
col = uiLayoutColumn(row, 0);
- uiItemR(col, ptr, "servo_limit_z", UI_ITEM_R_TOGGLE, NULL, 0);
+ uiItemR(col, ptr, "use_servo_limit_z", UI_ITEM_R_TOGGLE, NULL, 0);
subcol = uiLayoutColumn(col, 1);
- uiLayoutSetActive(subcol, RNA_boolean_get(ptr, "servo_limit_z")==1);
+ uiLayoutSetActive(subcol, RNA_boolean_get(ptr, "use_servo_limit_z")==1);
uiItemR(subcol, ptr, "force_max_z", 0, NULL, 0);
uiItemR(subcol, ptr, "force_min_z", 0, NULL, 0);
@@ -4103,8 +4102,8 @@ static void draw_actuator_parent(uiLayout *layout, PointerRNA *ptr)
uiItemR(layout, ptr, "object", 0, NULL, 0);
row = uiLayoutRow(layout, 0);
- uiItemR(row, ptr, "compound", 0, NULL, 0);
- uiItemR(row, ptr, "ghost", 0, NULL, 0);
+ uiItemR(row, ptr, "use_compound", 0, NULL, 0);
+ uiItemR(row, ptr, "use_ghost", 0, NULL, 0);
}
static void draw_actuator_property(uiLayout *layout, PointerRNA *ptr)
@@ -4169,7 +4168,7 @@ static void draw_actuator_random(uiLayout *layout, PointerRNA *ptr)
switch (RNA_enum_get(ptr, "distribution")){
case ACT_RANDOM_BOOL_CONST:
- uiItemR(row, ptr, "always_true", UI_ITEM_R_TOGGLE, NULL, 0);
+ uiItemR(row, ptr, "use_always_true", UI_ITEM_R_TOGGLE, NULL, 0);
break;
case ACT_RANDOM_BOOL_UNIFORM:
@@ -4245,7 +4244,7 @@ static void draw_actuator_shape_action(uiLayout *layout, PointerRNA *ptr)
row= uiLayoutRow(layout, 0);
uiItemR(row, ptr, "mode", 0, "", 0);
uiItemR(row, ptr, "action", 0, NULL, 0);
- uiItemR(row, ptr, "continue_last_frame", 0, NULL, 0);
+ uiItemR(row, ptr, "use_continue_last_frame", 0, NULL, 0);
row= uiLayoutRow(layout, 0);
if((RNA_enum_get(ptr, "mode") == ACT_ACTION_FROM_PROP))
@@ -4257,7 +4256,7 @@ static void draw_actuator_shape_action(uiLayout *layout, PointerRNA *ptr)
}
row= uiLayoutRow(layout, 0);
- uiItemR(row, ptr, "blendin", 0, NULL, 0);
+ uiItemR(row, ptr, "frame_blend_in", 0, NULL, 0);
uiItemR(row, ptr, "priority", 0, NULL, 0);
row= uiLayoutRow(layout, 0);
@@ -4284,18 +4283,18 @@ static void draw_actuator_sound(uiLayout *layout, PointerRNA *ptr, bContext *C)
uiItemR(row, ptr, "volume", 0, NULL, 0);
uiItemR(row, ptr, "pitch", 0, NULL, 0);
- uiItemR(layout, ptr, "enable_sound_3d", 0, NULL, 0);
+ uiItemR(layout, ptr, "use_sound_3d", 0, NULL, 0);
col = uiLayoutColumn(layout, 0);
- uiLayoutSetActive(col, RNA_boolean_get(ptr, "enable_sound_3d")==1);
+ uiLayoutSetActive(col, RNA_boolean_get(ptr, "use_sound_3d")==1);
row = uiLayoutRow(col, 0);
- uiItemR(row, ptr, "minimum_gain_3d", 0, NULL, 0);
- uiItemR(row, ptr, "maximum_gain_3d", 0, NULL, 0);
+ uiItemR(row, ptr, "gain_3d_min", 0, NULL, 0);
+ uiItemR(row, ptr, "gain_3d_max", 0, NULL, 0);
row = uiLayoutRow(col, 0);
- uiItemR(row, ptr, "reference_distance_3d", 0, NULL, 0);
- uiItemR(row, ptr, "max_distance_3d", 0, NULL, 0);
+ uiItemR(row, ptr, "distance_3d_reference", 0, NULL, 0);
+ uiItemR(row, ptr, "distance_3d_max", 0, NULL, 0);
row = uiLayoutRow(col, 0);
uiItemR(row, ptr, "rolloff_factor_3d", 0, NULL, 0);
@@ -4316,7 +4315,7 @@ static void draw_actuator_state(uiLayout *layout, PointerRNA *ptr)
split = uiLayoutSplit(layout, 0.35, 0);
uiItemR(split, ptr, "operation", 0, NULL, 0);
- uiTemplateLayers(split, ptr, "state", &settings_ptr, "used_state", 0);
+ uiTemplateLayers(split, ptr, "states", &settings_ptr, "used_states", 0);
}
static void draw_actuator_visibility(uiLayout *layout, PointerRNA *ptr)
@@ -4324,16 +4323,16 @@ static void draw_actuator_visibility(uiLayout *layout, PointerRNA *ptr)
uiLayout *row;
row = uiLayoutRow(layout, 0);
- uiItemR(row, ptr, "visible", 0, NULL, 0);
- uiItemR(row, ptr, "occlusion", 0, NULL, 0);
- uiItemR(row, ptr, "children", 0, NULL, 0);
+ uiItemR(row, ptr, "use_visible", 0, NULL, 0);
+ uiItemR(row, ptr, "use_occlusion", 0, NULL, 0);
+ uiItemR(row, ptr, "apply_to_children", 0, NULL, 0);
}
void draw_brick_actuator(uiLayout *layout, PointerRNA *ptr, bContext *C)
{
uiLayout *box;
- if (!RNA_boolean_get(ptr, "expanded"))
+ if (!RNA_boolean_get(ptr, "show_expanded"))
return;
box = uiLayoutBox(layout);
@@ -4470,9 +4469,9 @@ static void logic_buttons_new(bContext *C, ARegion *ar)
uiDefBlockBut(block, controller_menu, NULL, "Controllers", xco-10, yco, 300, UI_UNIT_Y, ""); /* replace this with uiLayout stuff later */
- uiItemR(row, &logic_ptr, "controllers_show_selected_objects", 0, "Sel", 0);
- uiItemR(row, &logic_ptr, "controllers_show_active_objects", 0, "Act", 0);
- uiItemR(row, &logic_ptr, "controllers_show_linked_controller", 0, "Link", 0);
+ uiItemR(row, &logic_ptr, "show_controllers_selected_objects", 0, "Sel", 0);
+ uiItemR(row, &logic_ptr, "show_controllers_active_object", 0, "Act", 0);
+ uiItemR(row, &logic_ptr, "show_controllers_linked_controller", 0, "Link", 0);
for(a=0; a<count; a++) {
bController *cont;
@@ -4482,7 +4481,7 @@ static void logic_buttons_new(bContext *C, ARegion *ar)
ob= (Object *)idar[a];
- /* only draw the controller common header if "visible" */
+ /* only draw the controller common header if "use_visible" */
if( (ob->scavisflag & OB_VIS_CONT) == 0) continue;
/* Drawing the Controller Header common to all Selected Objects */
@@ -4509,14 +4508,14 @@ static void logic_buttons_new(bContext *C, ARegion *ar)
subsplit= uiLayoutSplit(split, 0.85, 0);
col= uiLayoutColumn(subsplit, 0);
row= uiLayoutRow(col, 0);
- uiLayoutSetActive(row, RNA_boolean_get(&settings_ptr, "all_states")==0);
- uiTemplateLayers(row, &settings_ptr, "visible_state", &settings_ptr, "used_state", 0);
+ uiLayoutSetActive(row, RNA_boolean_get(&settings_ptr, "use_all_states")==0);
+ uiTemplateLayers(row, &settings_ptr, "states_visible", &settings_ptr, "used_states", 0);
row= uiLayoutRow(col, 0);
- uiTemplateLayers(row, &settings_ptr, "initial_state", &settings_ptr, "used_state", 0);
+ uiTemplateLayers(row, &settings_ptr, "states_initial", &settings_ptr, "used_states", 0);
col= uiLayoutColumn(subsplit, 0);
- uiItemR(col, &settings_ptr, "all_states", UI_ITEM_R_TOGGLE, NULL, 0);
- uiItemR(col, &settings_ptr, "debug_state", 0, "", 0);
+ uiItemR(col, &settings_ptr, "use_all_states", UI_ITEM_R_TOGGLE, NULL, 0);
+ uiItemR(col, &settings_ptr, "show_debug_state", 0, "", 0);
}
/* End of Drawing the Controller Header common to all Selected Objects */
@@ -4573,10 +4572,10 @@ static void logic_buttons_new(bContext *C, ARegion *ar)
uiDefBlockBut(block, sensor_menu, NULL, "Sensors", xco-10, yco, 300, UI_UNIT_Y, ""); /* replace this with uiLayout stuff later */
- uiItemR(row, &logic_ptr, "sensors_show_selected_objects", 0, "Sel", 0);
- uiItemR(row, &logic_ptr, "sensors_show_active_objects", 0, "Act", 0);
- uiItemR(row, &logic_ptr, "sensors_show_linked_controller", 0, "Link", 0);
- uiItemR(row, &logic_ptr, "sensors_show_active_states", 0, "State", 0);
+ uiItemR(row, &logic_ptr, "show_sensors_selected_objects", 0, "Sel", 0);
+ uiItemR(row, &logic_ptr, "show_sensors_active_object", 0, "Act", 0);
+ uiItemR(row, &logic_ptr, "show_sensors_linked_controller", 0, "Link", 0);
+ uiItemR(row, &logic_ptr, "show_sensors_active_states", 0, "State", 0);
for(a=0; a<count; a++) {
bSensor *sens;
@@ -4584,7 +4583,7 @@ static void logic_buttons_new(bContext *C, ARegion *ar)
ob= (Object *)idar[a];
- /* only draw the sensor common header if "visible" */
+ /* only draw the sensor common header if "use_visible" */
if((ob->scavisflag & OB_VIS_SENS) == 0) continue;
row = uiLayoutRow(layout, 1);
@@ -4639,10 +4638,10 @@ static void logic_buttons_new(bContext *C, ARegion *ar)
uiDefBlockBut(block, actuator_menu, NULL, "Actuators", xco-10, yco, 300, UI_UNIT_Y, ""); /* replace this with uiLayout stuff later */
- uiItemR(row, &logic_ptr, "actuators_show_selected_objects", 0, "Sel", 0);
- uiItemR(row, &logic_ptr, "actuators_show_active_objects", 0, "Act", 0);
- uiItemR(row, &logic_ptr, "actuators_show_linked_controller", 0, "Link", 0);
- uiItemR(row, &logic_ptr, "actuators_show_active_states", 0, "State", 0);
+ uiItemR(row, &logic_ptr, "show_actuators_selected_objects", 0, "Sel", 0);
+ uiItemR(row, &logic_ptr, "show_actuators_active_object", 0, "Act", 0);
+ uiItemR(row, &logic_ptr, "show_actuators_linked_controller", 0, "Link", 0);
+ uiItemR(row, &logic_ptr, "show_actuators_active_states", 0, "State", 0);
for(a=0; a<count; a++) {
bActuator *act;
@@ -4650,7 +4649,7 @@ static void logic_buttons_new(bContext *C, ARegion *ar)
ob= (Object *)idar[a];
- /* only draw the actuator common header if "visible" */
+ /* only draw the actuator common header if "use_visible" */
if( (ob->scavisflag & OB_VIS_ACT) == 0) continue;
row = uiLayoutRow(layout, 1);
diff --git a/source/blender/editors/space_logic/space_logic.c b/source/blender/editors/space_logic/space_logic.c
index d4d07b7c14e..01af324334b 100644
--- a/source/blender/editors/space_logic/space_logic.c
+++ b/source/blender/editors/space_logic/space_logic.c
@@ -41,7 +41,6 @@
#include "ED_screen.h"
#include "BIF_gl.h"
-#include "BIF_glutil.h"
#include "WM_api.h"
diff --git a/source/blender/editors/space_nla/nla_buttons.c b/source/blender/editors/space_nla/nla_buttons.c
index e31d7635f7a..5ad21f7c9ca 100644
--- a/source/blender/editors/space_nla/nla_buttons.c
+++ b/source/blender/editors/space_nla/nla_buttons.c
@@ -44,7 +44,6 @@
#include "BKE_context.h"
#include "BKE_screen.h"
-#include "BIF_gl.h"
#include "WM_api.h"
#include "WM_types.h"
@@ -235,7 +234,7 @@ static void nla_panel_animdata (const bContext *C, Panel *pa)
/* blending */
row= uiLayoutRow(layout, 1);
- uiItemR(row, &adt_ptr, "action_blending", 0, NULL, 0);
+ uiItemR(row, &adt_ptr, "action_blend_type", 0, NULL, 0);
/* influence */
row= uiLayoutRow(layout, 1);
@@ -294,23 +293,23 @@ static void nla_panel_properties(const bContext *C, Panel *pa)
/* blending */
row= uiLayoutRow(layout, 1);
- uiItemR(row, &strip_ptr, "blending", 0, NULL, 0);
+ uiItemR(row, &strip_ptr, "blend_type", 0, NULL, 0);
/* blend in/out + autoblending
* - blend in/out can only be set when autoblending is off
*/
column= uiLayoutColumn(layout, 1);
- uiLayoutSetActive(column, RNA_boolean_get(&strip_ptr, "animated_influence")==0);
- uiItemR(column, &strip_ptr, "auto_blending", 0, NULL, 0); // XXX as toggle?
+ uiLayoutSetActive(column, RNA_boolean_get(&strip_ptr, "use_animated_influence")==0);
+ uiItemR(column, &strip_ptr, "use_auto_blend", 0, NULL, 0); // XXX as toggle?
subcol= uiLayoutColumn(column, 1);
- uiLayoutSetActive(subcol, RNA_boolean_get(&strip_ptr, "auto_blending")==0);
+ uiLayoutSetActive(subcol, RNA_boolean_get(&strip_ptr, "use_auto_blend")==0);
uiItemR(subcol, &strip_ptr, "blend_in", 0, NULL, 0);
uiItemR(subcol, &strip_ptr, "blend_out", 0, NULL, 0);
/* settings */
column= uiLayoutColumn(layout, 1);
- uiLayoutSetActive(column, !(RNA_boolean_get(&strip_ptr, "animated_influence") || RNA_boolean_get(&strip_ptr, "animated_time")));
+ uiLayoutSetActive(column, !(RNA_boolean_get(&strip_ptr, "animated_influence") || RNA_boolean_get(&strip_ptr, "use_animated_time")));
uiItemL(column, "Playback Settings:", 0);
uiItemR(column, &strip_ptr, "mute", 0, NULL, 0);
uiItemR(column, &strip_ptr, "reversed", 0, NULL, 0);
@@ -347,7 +346,7 @@ static void nla_panel_actclip(const bContext *C, Panel *pa)
/* action usage */
column= uiLayoutColumn(layout, 1);
- uiLayoutSetActive(column, RNA_boolean_get(&strip_ptr, "animated_time")==0);
+ uiLayoutSetActive(column, RNA_boolean_get(&strip_ptr, "use_animated_time")==0);
uiItemL(column, "Playback Settings:", 0);
uiItemR(column, &strip_ptr, "scale", 0, NULL, 0);
uiItemR(column, &strip_ptr, "repeat", 0, NULL, 0);
@@ -369,21 +368,21 @@ static void nla_panel_evaluation(const bContext *C, Panel *pa)
uiBlockSetHandleFunc(block, do_nla_region_buttons, NULL);
column= uiLayoutColumn(layout, 1);
- uiItemR(column, &strip_ptr, "animated_influence", 0, NULL, 0);
+ uiItemR(column, &strip_ptr, "use_animated_influence", 0, NULL, 0);
subcolumn= uiLayoutColumn(column, 1);
- uiLayoutSetEnabled(subcolumn, RNA_boolean_get(&strip_ptr, "animated_influence"));
+ uiLayoutSetEnabled(subcolumn, RNA_boolean_get(&strip_ptr, "use_animated_influence"));
uiItemR(subcolumn, &strip_ptr, "influence", 0, NULL, 0);
column= uiLayoutColumn(layout, 1);
subrow= uiLayoutRow(column, 0);
- uiItemR(subrow, &strip_ptr, "animated_time", 0, NULL, 0);
- uiItemR(subrow, &strip_ptr, "animated_time_cyclic", 0, NULL, 0);
+ uiItemR(subrow, &strip_ptr, "use_animated_time", 0, NULL, 0);
+ uiItemR(subrow, &strip_ptr, "use_animated_time_cyclic", 0, NULL, 0);
subcolumn= uiLayoutColumn(column, 1);
subrow= uiLayoutRow(subcolumn, 0);
- uiLayoutSetEnabled(subrow, RNA_boolean_get(&strip_ptr, "animated_time"));
+ uiLayoutSetEnabled(subrow, RNA_boolean_get(&strip_ptr, "use_animated_time"));
uiItemR(subcolumn, &strip_ptr, "strip_time", 0, NULL, 0);
}
diff --git a/source/blender/editors/space_nla/nla_channels.c b/source/blender/editors/space_nla/nla_channels.c
index d834fb07ee7..b00cba676d0 100644
--- a/source/blender/editors/space_nla/nla_channels.c
+++ b/source/blender/editors/space_nla/nla_channels.c
@@ -35,7 +35,6 @@
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
-#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
#include "BLI_math.h"
diff --git a/source/blender/editors/space_nla/nla_draw.c b/source/blender/editors/space_nla/nla_draw.c
index 2568baf0f0a..f489fc4774f 100644
--- a/source/blender/editors/space_nla/nla_draw.c
+++ b/source/blender/editors/space_nla/nla_draw.c
@@ -37,7 +37,6 @@
#include "DNA_space_types.h"
#include "DNA_windowmanager_types.h"
-#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
#include "BLI_math.h"
diff --git a/source/blender/editors/space_nla/nla_ops.c b/source/blender/editors/space_nla/nla_ops.c
index 9c7eee39e29..85a169f2bb0 100644
--- a/source/blender/editors/space_nla/nla_ops.c
+++ b/source/blender/editors/space_nla/nla_ops.c
@@ -31,7 +31,6 @@
#include "DNA_scene_types.h"
-#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
#include "BLI_math.h"
diff --git a/source/blender/editors/space_node/drawnode.c b/source/blender/editors/space_node/drawnode.c
index a74b070e6cd..e3013cc2507 100644
--- a/source/blender/editors/space_node/drawnode.c
+++ b/source/blender/editors/space_node/drawnode.c
@@ -329,12 +329,12 @@ static void node_shader_buts_mapping(uiLayout *layout, bContext *C, PointerRNA *
uiItemR(row, ptr, "scale", 0, "", 0);
row= uiLayoutRow(layout, 1);
- uiItemR(row, ptr, "clamp_minimum", 0, "Min", 0);
- uiItemR(row, ptr, "minimum", 0, "", 0);
+ uiItemR(row, ptr, "use_min", 0, "Min", 0);
+ uiItemR(row, ptr, "min", 0, "", 0);
row= uiLayoutRow(layout, 1);
- uiItemR(row, ptr, "clamp_maximum", 0, "Max", 0);
- uiItemR(row, ptr, "maximum", 0, "", 0);
+ uiItemR(row, ptr, "use_max", 0, "Max", 0);
+ uiItemR(row, ptr, "max", 0, "", 0);
}
@@ -482,7 +482,7 @@ static void node_composit_buts_image(uiLayout *layout, bContext *C, PointerRNA *
uiItemR(col, ptr, "start", 0, NULL, 0);
uiItemR(col, ptr, "offset", 0, NULL, 0);
uiItemR(col, ptr, "cyclic", 0, NULL, 0);
- uiItemR(col, ptr, "auto_refresh", UI_ITEM_R_ICON_ONLY, NULL, 0);
+ uiItemR(col, ptr, "use_auto_refresh", UI_ITEM_R_ICON_ONLY, NULL, 0);
}
col= uiLayoutColumn(layout, 0);
@@ -543,8 +543,8 @@ static void node_composit_buts_blur(uiLayout *layout, bContext *C, PointerRNA *p
uiItemR(col, ptr, "factor_y", 0, "Y", 0);
}
else {
- uiItemR(col, ptr, "sizex", 0, "X", 0);
- uiItemR(col, ptr, "sizey", 0, "Y", 0);
+ uiItemR(col, ptr, "size_x", 0, "X", 0);
+ uiItemR(col, ptr, "size_y", 0, "Y", 0);
}
}
@@ -591,13 +591,13 @@ static void node_composit_buts_defocus(uiLayout *layout, bContext *C, PointerRNA
uiItemR(col, ptr, "bokeh", 0, "", 0);
uiItemR(col, ptr, "angle", 0, NULL, 0);
- uiItemR(layout, ptr, "gamma_correction", 0, NULL, 0);
+ uiItemR(layout, ptr, "use_gamma_correction", 0, NULL, 0);
col = uiLayoutColumn(layout, 0);
uiLayoutSetActive(col, RNA_boolean_get(ptr, "use_zbuffer")==1);
uiItemR(col, ptr, "f_stop", 0, NULL, 0);
- uiItemR(layout, ptr, "max_blur", 0, NULL, 0);
+ uiItemR(layout, ptr, "blur_max", 0, NULL, 0);
uiItemR(layout, ptr, "threshold", 0, NULL, 0);
col = uiLayoutColumn(layout, 0);
@@ -637,7 +637,7 @@ static void node_composit_buts_glare(uiLayout *layout, bContext *C, PointerRNA *
uiItemR(layout, ptr, "fade", UI_ITEM_R_SLIDER, NULL, 0);
if (RNA_enum_get(ptr, "glare_type")== 0)
- uiItemR(layout, ptr, "rotate_45", 0, NULL, 0);
+ uiItemR(layout, ptr, "use_rotate_45", 0, NULL, 0);
}
if (RNA_enum_get(ptr, "glare_type")== 1) {
uiItemR(layout, ptr, "size", 0, NULL, 0);
@@ -668,10 +668,10 @@ static void node_composit_buts_lensdist(uiLayout *layout, bContext *C, PointerRN
uiLayout *col;
col= uiLayoutColumn(layout, 0);
- uiItemR(col, ptr, "projector", 0, NULL, 0);
+ uiItemR(col, ptr, "use_projector", 0, NULL, 0);
col = uiLayoutColumn(col, 0);
- uiLayoutSetActive(col, RNA_boolean_get(ptr, "projector")==0);
+ uiLayoutSetActive(col, RNA_boolean_get(ptr, "use_projector")==0);
uiItemR(col, ptr, "jitter", 0, NULL, 0);
uiItemR(col, ptr, "fit", 0, NULL, 0);
}
@@ -686,8 +686,8 @@ static void node_composit_buts_vecblur(uiLayout *layout, bContext *C, PointerRNA
col= uiLayoutColumn(layout, 1);
uiItemL(col, "Speed:", 0);
- uiItemR(col, ptr, "min_speed", 0, "Min", 0);
- uiItemR(col, ptr, "max_speed", 0, "Max", 0);
+ uiItemR(col, ptr, "speed_min", 0, "Min", 0);
+ uiItemR(col, ptr, "speed_max", 0, "Max", 0);
uiItemR(layout, ptr, "curved", 0, NULL, 0);
}
@@ -706,13 +706,13 @@ static void node_composit_buts_crop(uiLayout *layout, bContext *C, PointerRNA *p
{
uiLayout *col;
- uiItemR(layout, ptr, "crop_size", 0, NULL, 0);
+ uiItemR(layout, ptr, "use_crop_size", 0, NULL, 0);
col= uiLayoutColumn(layout, 1);
- uiItemR(col, ptr, "x1", 0, "Left", 0);
- uiItemR(col, ptr, "x2", 0, "Right", 0);
- uiItemR(col, ptr, "y1", 0, "Up", 0);
- uiItemR(col, ptr, "y2", 0, "Down", 0);
+ uiItemR(col, ptr, "min_x", 0, "Left", 0);
+ uiItemR(col, ptr, "max_x", 0, "Right", 0);
+ uiItemR(col, ptr, "min_y", 0, "Up", 0);
+ uiItemR(col, ptr, "max_y", 0, "Down", 0);
}
static void node_composit_buts_splitviewer(uiLayout *layout, bContext *C, PointerRNA *ptr)
@@ -751,7 +751,7 @@ static void node_composit_buts_alphaover(uiLayout *layout, bContext *C, PointerR
uiLayout *col;
col =uiLayoutColumn(layout, 1);
- uiItemR(col, ptr, "convert_premul", 0, NULL, 0);
+ uiItemR(col, ptr, "use_premultiply", 0, NULL, 0);
uiItemR(col, ptr, "premul", 0, NULL, 0);
}
@@ -797,17 +797,17 @@ static void node_composit_buts_color_spill(uiLayout *layout, bContext *C, Pointe
uiItemR(row, ptr, "channel", UI_ITEM_R_EXPAND, NULL, 0);
col= uiLayoutColumn(layout, 0);
- uiItemR(col, ptr, "algorithm", 0, NULL, 0);
+ uiItemR(col, ptr, "limit_method", 0, NULL, 0);
- if(RNA_enum_get(ptr, "algorithm")==0) {
+ if(RNA_enum_get(ptr, "limit_method")==0) {
uiItemL(col, "Limiting Channel:", 0);
row=uiLayoutRow(col,0);
uiItemR(row, ptr, "limit_channel", UI_ITEM_R_EXPAND, NULL, 0);
}
uiItemR(col, ptr, "ratio", UI_ITEM_R_SLIDER, NULL, 0);
- uiItemR(col, ptr, "unspill", 0, NULL, 0);
- if (RNA_enum_get(ptr, "unspill")== 1) {
+ uiItemR(col, ptr, "use_unspill", 0, NULL, 0);
+ if (RNA_enum_get(ptr, "use_unspill")== 1) {
uiItemR(col, ptr, "unspill_red", UI_ITEM_R_SLIDER, NULL, 0);
uiItemR(col, ptr, "unspill_green", UI_ITEM_R_SLIDER, NULL, 0);
uiItemR(col, ptr, "unspill_blue", UI_ITEM_R_SLIDER, NULL, 0);
@@ -819,13 +819,13 @@ static void node_composit_buts_chroma_matte(uiLayout *layout, bContext *C, Point
uiLayout *col;
col= uiLayoutColumn(layout, 0);
- uiItemR(col, ptr, "acceptance", 0, NULL, 0);
+ uiItemR(col, ptr, "tolerance", 0, NULL, 0);
uiItemR(col, ptr, "cutoff", 0, NULL, 0);
col= uiLayoutColumn(layout, 1);
- uiItemR(col, ptr, "lift", UI_ITEM_R_SLIDER, NULL, 0);
+ /*uiItemR(col, ptr, "lift", UI_ITEM_R_SLIDER, NULL, 0); Removed for now */
uiItemR(col, ptr, "gain", UI_ITEM_R_SLIDER, NULL, 0);
- uiItemR(col, ptr, "shadow_adjust", UI_ITEM_R_SLIDER, NULL, 0);
+ /*uiItemR(col, ptr, "shadow_adjust", UI_ITEM_R_SLIDER, NULL, 0); Removed for now*/
}
static void node_composit_buts_color_matte(uiLayout *layout, bContext *C, PointerRNA *ptr)
@@ -853,8 +853,8 @@ static void node_composit_buts_channel_matte(uiLayout *layout, bContext *C, Poin
col =uiLayoutColumn(layout, 0);
- uiItemR(col, ptr, "algorithm", 0, NULL, 0);
- if(RNA_enum_get(ptr, "algorithm")==0) {
+ uiItemR(col, ptr, "limit_method", 0, NULL, 0);
+ if(RNA_enum_get(ptr, "limit_method")==0) {
uiItemL(col, "Limiting Channel:", 0);
row=uiLayoutRow(col,0);
uiItemR(row, ptr, "limit_channel", UI_ITEM_R_EXPAND, NULL, 0);
@@ -893,7 +893,7 @@ static void node_composit_buts_file_output(uiLayout *layout, bContext *C, Pointe
row= uiLayoutRow(layout, 0);
if (RNA_enum_get(ptr, "image_type")== R_OPENEXR) {
- uiItemR(row, ptr, "exr_half", 0, NULL, 0);
+ uiItemR(row, ptr, "use_exr_half", 0, NULL, 0);
uiItemR(row, ptr, "exr_codec", 0, "", 0);
}
else if (RNA_enum_get(ptr, "image_type")== R_JPEG90) {
@@ -941,9 +941,9 @@ static void node_composit_buts_colorbalance(uiLayout *layout, bContext *C, Point
{
uiLayout *split, *col, *row;
- uiItemR(layout, ptr, "correction_formula", 0, NULL, 0);
+ uiItemR(layout, ptr, "correction_method", 0, NULL, 0);
- if (RNA_enum_get(ptr, "correction_formula")== 0) {
+ if (RNA_enum_get(ptr, "correction_method")== 0) {
split = uiLayoutSplit(layout, 0, 0);
col = uiLayoutColumn(split, 0);
@@ -1164,7 +1164,7 @@ static void node_texture_buts_proc(uiLayout *layout, bContext *C, PointerRNA *pt
case TEX_BLEND:
uiItemR(col, &tex_ptr, "progression", 0, "", 0);
row= uiLayoutRow(col, 0);
- uiItemR(row, &tex_ptr, "flip_axis", UI_ITEM_R_EXPAND, NULL, 0);
+ uiItemR(row, &tex_ptr, "use_flip_axis", UI_ITEM_R_EXPAND, NULL, 0);
break;
case TEX_MARBLE:
@@ -1173,14 +1173,14 @@ static void node_texture_buts_proc(uiLayout *layout, bContext *C, PointerRNA *pt
row= uiLayoutRow(col, 0);
uiItemR(row, &tex_ptr, "noise_type", UI_ITEM_R_EXPAND, NULL, 0);
row= uiLayoutRow(col, 0);
- uiItemR(row, &tex_ptr, "noisebasis2", UI_ITEM_R_EXPAND, NULL, 0);
+ uiItemR(row, &tex_ptr, "noisebasis_2", UI_ITEM_R_EXPAND, NULL, 0);
break;
case TEX_WOOD:
uiItemR(col, &tex_ptr, "noise_basis", 0, "", 0);
uiItemR(col, &tex_ptr, "stype", 0, "", 0);
row= uiLayoutRow(col, 0);
- uiItemR(row, &tex_ptr, "noisebasis2", UI_ITEM_R_EXPAND, NULL, 0);
+ uiItemR(row, &tex_ptr, "noisebasis_2", UI_ITEM_R_EXPAND, NULL, 0);
row= uiLayoutRow(col, 0);
uiLayoutSetActive(row, !(RNA_enum_get(&tex_ptr, "stype")==TEX_BAND || RNA_enum_get(&tex_ptr, "stype")==TEX_RING));
uiItemR(row, &tex_ptr, "noise_type", UI_ITEM_R_EXPAND, NULL, 0);
diff --git a/source/blender/editors/space_node/node_buttons.c b/source/blender/editors/space_node/node_buttons.c
index 65925b1e9a2..11319d817c7 100644
--- a/source/blender/editors/space_node/node_buttons.c
+++ b/source/blender/editors/space_node/node_buttons.c
@@ -44,7 +44,6 @@
#include "BKE_node.h"
#include "BKE_screen.h"
-#include "BIF_gl.h"
#include "WM_api.h"
#include "WM_types.h"
diff --git a/source/blender/editors/space_node/node_draw.c b/source/blender/editors/space_node/node_draw.c
index 0e33dff82a6..cc7c966e397 100644
--- a/source/blender/editors/space_node/node_draw.c
+++ b/source/blender/editors/space_node/node_draw.c
@@ -40,7 +40,6 @@
#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_threads.h"
-#include "MEM_guardedalloc.h"
#include "BKE_context.h"
#include "BKE_depsgraph.h"
diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c
index 9fb4facdcc8..829c74fd26d 100644
--- a/source/blender/editors/space_node/node_edit.c
+++ b/source/blender/editors/space_node/node_edit.c
@@ -51,7 +51,6 @@
#include "BKE_texture.h"
#include "BKE_report.h"
-#include "BIF_gl.h"
#include "BLI_math.h"
#include "BLI_blenlib.h"
diff --git a/source/blender/editors/space_node/node_header.c b/source/blender/editors/space_node/node_header.c
index d98bb766e3a..17c50b32e98 100644
--- a/source/blender/editors/space_node/node_header.c
+++ b/source/blender/editors/space_node/node_header.c
@@ -47,8 +47,6 @@
#include "WM_api.h"
#include "WM_types.h"
-#include "BIF_gl.h"
-#include "BIF_glutil.h"
#include "UI_interface.h"
diff --git a/source/blender/editors/space_node/space_node.c b/source/blender/editors/space_node/space_node.c
index 9f50245551e..d9a4dda9d6e 100644
--- a/source/blender/editors/space_node/space_node.c
+++ b/source/blender/editors/space_node/space_node.c
@@ -46,7 +46,6 @@
#include "ED_render.h"
#include "ED_screen.h"
-#include "BIF_gl.h"
#include "WM_api.h"
#include "WM_types.h"
diff --git a/source/blender/editors/space_outliner/outliner.c b/source/blender/editors/space_outliner/outliner.c
index fc08f3390c9..b0cbe304d75 100644
--- a/source/blender/editors/space_outliner/outliner.c
+++ b/source/blender/editors/space_outliner/outliner.c
@@ -59,7 +59,6 @@
# include <fnmatch.h>
#endif
-#include "IMB_imbuf_types.h"
#include "BKE_animsys.h"
#include "BKE_context.h"
@@ -2022,6 +2021,7 @@ static int tree_element_active_texture(bContext *C, Scene *scene, SpaceOops *soo
}
}
+ WM_event_add_notifier(C, NC_TEXTURE, NULL);
return 0;
}
diff --git a/source/blender/editors/space_outliner/space_outliner.c b/source/blender/editors/space_outliner/space_outliner.c
index 829538b9174..d3db64d6d03 100644
--- a/source/blender/editors/space_outliner/space_outliner.c
+++ b/source/blender/editors/space_outliner/space_outliner.c
@@ -45,7 +45,6 @@
#include "WM_types.h"
#include "BIF_gl.h"
-#include "BIF_glutil.h"
#include "UI_resources.h"
#include "UI_view2d.h"
diff --git a/source/blender/editors/space_script/script_edit.c b/source/blender/editors/space_script/script_edit.c
index fe5ecd10eb1..610fecaa543 100644
--- a/source/blender/editors/space_script/script_edit.c
+++ b/source/blender/editors/space_script/script_edit.c
@@ -30,7 +30,6 @@
#include <stdio.h>
-#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
diff --git a/source/blender/editors/space_script/script_header.c b/source/blender/editors/space_script/script_header.c
index 4fc6aa78f66..6e65d458451 100644
--- a/source/blender/editors/space_script/script_header.c
+++ b/source/blender/editors/space_script/script_header.c
@@ -30,7 +30,6 @@
#include <stdio.h>
-#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
@@ -41,8 +40,6 @@
#include "ED_util.h"
-#include "BIF_gl.h"
-#include "BIF_glutil.h"
#include "UI_interface.h"
#include "UI_resources.h"
diff --git a/source/blender/editors/space_script/script_ops.c b/source/blender/editors/space_script/script_ops.c
index e392f8d6e12..a52ffbd0808 100644
--- a/source/blender/editors/space_script/script_ops.c
+++ b/source/blender/editors/space_script/script_ops.c
@@ -29,7 +29,6 @@
#include <stdlib.h>
#include <math.h>
-#include "MEM_guardedalloc.h"
#include "DNA_screen_types.h"
#include "DNA_space_types.h"
diff --git a/source/blender/editors/space_sequencer/Makefile b/source/blender/editors/space_sequencer/Makefile
index bb1cbdf1cd3..bd2b837d499 100644
--- a/source/blender/editors/space_sequencer/Makefile
+++ b/source/blender/editors/space_sequencer/Makefile
@@ -38,6 +38,7 @@ CFLAGS += $(LEVEL_1_C_WARNINGS)
CPPFLAGS += -I$(NAN_GLEW)/include
CPPFLAGS += -I$(OPENGL_HEADERS)
+CPPFLAGS += -I$(NAN_PYTHON)/include/python$(NAN_PYTHON_VERSION)
# not very neat....
CPPFLAGS += -I../../windowmanager
diff --git a/source/blender/editors/space_sequencer/sequencer_add.c b/source/blender/editors/space_sequencer/sequencer_add.c
index c426cd9fdc2..e58e2ebb328 100644
--- a/source/blender/editors/space_sequencer/sequencer_add.c
+++ b/source/blender/editors/space_sequencer/sequencer_add.c
@@ -51,8 +51,6 @@
#include "BKE_sequencer.h"
#include "BKE_report.h"
-#include "BIF_gl.h"
-#include "BIF_glutil.h"
#include "WM_api.h"
#include "WM_types.h"
diff --git a/source/blender/editors/space_sequencer/sequencer_draw.c b/source/blender/editors/space_sequencer/sequencer_draw.c
index 1abc2fc3398..afd8895edd9 100644
--- a/source/blender/editors/space_sequencer/sequencer_draw.c
+++ b/source/blender/editors/space_sequencer/sequencer_draw.c
@@ -695,12 +695,12 @@ void set_special_seq_update(int val)
void draw_image_seq(const bContext* C, Scene *scene, ARegion *ar, SpaceSeq *sseq, int cfra, int frame_ofs)
{
extern void gl_round_box(int mode, float minx, float miny, float maxx, float maxy, float rad);
+ struct Main *bmain= CTX_data_main(C);
struct ImBuf *ibuf = 0;
struct ImBuf *scope = 0;
struct View2D *v2d = &ar->v2d;
int rectx, recty;
float viewrectx, viewrecty;
- static int recursive= 0;
float render_size = 0.0;
float proxy_size = 100.0;
GLuint texid;
@@ -740,33 +740,12 @@ void draw_image_seq(const bContext* C, Scene *scene, ARegion *ar, SpaceSeq *sseq
UI_view2d_totRect_set(v2d, viewrectx + 0.5f, viewrecty + 0.5f);
UI_view2d_curRect_validate(v2d);
- /* BIG PROBLEM: the give_ibuf_seq() can call a rendering, which in turn calls redraws...
- this shouldn't belong in a window drawing....
- So: solve this once event based.
- Now we check for recursion, space type and active area again (ton) */
-
- if(recursive)
- return;
- else {
- recursive= 1;
- if (special_seq_update) {
- ibuf= give_ibuf_seq_direct(scene, rectx, recty, cfra + frame_ofs, proxy_size, special_seq_update);
- }
- else if (!U.prefetchframes) { // XXX || (G.f & G_PLAYANIM) == 0) {
- ibuf= (ImBuf *)give_ibuf_seq(scene, rectx, recty, cfra + frame_ofs, sseq->chanshown, proxy_size);
- }
- else {
- ibuf= (ImBuf *)give_ibuf_seq_threaded(scene, rectx, recty, cfra + frame_ofs, sseq->chanshown, proxy_size);
- }
- recursive= 0;
-
- /* XXX HURMF! the give_ibuf_seq can call image display in this window */
-// if(sa->spacetype!=SPACE_SEQ)
-// return;
-// if(sa!=curarea) {
-// areawinset(sa->win);
-// }
- }
+ if (special_seq_update)
+ ibuf= give_ibuf_seq_direct(bmain, scene, rectx, recty, cfra + frame_ofs, proxy_size, special_seq_update);
+ else if (!U.prefetchframes) // XXX || (G.f & G_PLAYANIM) == 0) {
+ ibuf= (ImBuf *)give_ibuf_seq(bmain, scene, rectx, recty, cfra + frame_ofs, sseq->chanshown, proxy_size);
+ else
+ ibuf= (ImBuf *)give_ibuf_seq_threaded(bmain, scene, rectx, recty, cfra + frame_ofs, sseq->chanshown, proxy_size);
if(ibuf==NULL)
return;
diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c
index 590856803cc..d1654dc5d37 100644
--- a/source/blender/editors/space_sequencer/sequencer_edit.c
+++ b/source/blender/editors/space_sequencer/sequencer_edit.c
@@ -48,6 +48,7 @@
#include "BKE_context.h"
#include "BKE_global.h"
+#include "BKE_main.h"
#include "BKE_sequencer.h"
#include "BKE_report.h"
#include "BKE_sound.h"
@@ -734,7 +735,7 @@ static void recurs_del_seq_flag(Scene *scene, ListBase *lb, short flag, short de
}
-static Sequence *cut_seq_hard(Scene *scene, Sequence * seq, int cutframe)
+static Sequence *cut_seq_hard(Main *bmain, Scene *scene, Sequence * seq, int cutframe)
{
TransSeq ts;
Sequence *seqn = 0;
@@ -781,7 +782,7 @@ static Sequence *cut_seq_hard(Scene *scene, Sequence * seq, int cutframe)
}
}
- reload_sequence_new_file(scene, seq, FALSE);
+ reload_sequence_new_file(bmain, scene, seq, FALSE);
calc_sequence(scene, seq);
new_tstripdata(seq);
@@ -821,14 +822,14 @@ static Sequence *cut_seq_hard(Scene *scene, Sequence * seq, int cutframe)
seqn->startstill = 0;
}
- reload_sequence_new_file(scene, seqn, FALSE);
+ reload_sequence_new_file(bmain, scene, seqn, FALSE);
calc_sequence(scene, seqn);
new_tstripdata(seqn);
}
return seqn;
}
-static Sequence *cut_seq_soft(Scene *scene, Sequence * seq, int cutframe)
+static Sequence *cut_seq_soft(Main *bmain, Scene *scene, Sequence * seq, int cutframe)
{
TransSeq ts;
Sequence *seqn = 0;
@@ -918,8 +919,8 @@ static Sequence *cut_seq_soft(Scene *scene, Sequence * seq, int cutframe)
/* like duplicate, but only duplicate and cut overlapping strips,
* strips to the left of the cutframe are ignored and strips to the right are moved into the new list */
-static int cut_seq_list(Scene *scene, ListBase *old, ListBase *new, int cutframe,
- Sequence * (*cut_seq)(Scene *, Sequence *, int))
+static int cut_seq_list(Main *bmain, Scene *scene, ListBase *old, ListBase *new, int cutframe,
+ Sequence * (*cut_seq)(Main *, Scene *, Sequence *, int))
{
int did_something = FALSE;
Sequence *seq, *seq_next;
@@ -933,7 +934,7 @@ static int cut_seq_list(Scene *scene, ListBase *old, ListBase *new, int cutframe
if(seq->flag & SELECT) {
if(cutframe > seq->startdisp &&
cutframe < seq->enddisp) {
- Sequence * seqn = cut_seq(scene, seq, cutframe);
+ Sequence * seqn = cut_seq(bmain, scene, seq, cutframe);
if (seqn) {
BLI_addtail(new, seqn);
}
@@ -1003,7 +1004,7 @@ void touch_seq_files(Scene *scene)
waitcursor(0);
}
-void set_filter_seq(Scene *scene)
+void set_filter_seq(Main *bmain, Scene *scene)
{
Sequence *seq;
Editing *ed= seq_give_editing(scene, FALSE);
@@ -1017,7 +1018,7 @@ void set_filter_seq(Scene *scene)
if(seq->flag & SELECT) {
if(seq->type==SEQ_MOVIE) {
seq->flag |= SEQ_FILTERY;
- reload_sequence_new_file(scene, seq, FALSE);
+ reload_sequence_new_file(bmain, scene, seq, FALSE);
calc_sequence(scene, seq);
}
@@ -1505,6 +1506,7 @@ static EnumPropertyItem prop_cut_types[] = {
static int sequencer_cut_exec(bContext *C, wmOperator *op)
{
+ Main *bmain= CTX_data_main(C);
Scene *scene= CTX_data_scene(C);
Editing *ed= seq_give_editing(scene, FALSE);
int cut_side, cut_hard, cut_frame;
@@ -1519,10 +1521,10 @@ static int sequencer_cut_exec(bContext *C, wmOperator *op)
newlist.first= newlist.last= NULL;
if (cut_hard==SEQ_CUT_HARD) {
- changed = cut_seq_list(scene,
+ changed = cut_seq_list(bmain, scene,
ed->seqbasep, &newlist, cut_frame, cut_seq_hard);
} else {
- changed = cut_seq_list(scene,
+ changed = cut_seq_list(bmain, scene,
ed->seqbasep, &newlist, cut_frame, cut_seq_soft);
}
diff --git a/source/blender/editors/space_sequencer/sequencer_ops.c b/source/blender/editors/space_sequencer/sequencer_ops.c
index 6d1c6aa45a8..6ca0a13f172 100644
--- a/source/blender/editors/space_sequencer/sequencer_ops.c
+++ b/source/blender/editors/space_sequencer/sequencer_ops.c
@@ -30,7 +30,6 @@
#include <stdlib.h>
#include <math.h>
-#include "MEM_guardedalloc.h"
#include "DNA_space_types.h"
diff --git a/source/blender/editors/space_sequencer/sequencer_select.c b/source/blender/editors/space_sequencer/sequencer_select.c
index ecc7aa0c630..a61e05517d9 100644
--- a/source/blender/editors/space_sequencer/sequencer_select.c
+++ b/source/blender/editors/space_sequencer/sequencer_select.c
@@ -35,7 +35,6 @@
#endif
#include <sys/types.h>
-#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
#include "BLI_math.h"
diff --git a/source/blender/editors/space_sound/Makefile b/source/blender/editors/space_sound/Makefile
index 03764c97a96..9afda815f59 100644
--- a/source/blender/editors/space_sound/Makefile
+++ b/source/blender/editors/space_sound/Makefile
@@ -38,6 +38,8 @@ CFLAGS += $(LEVEL_1_C_WARNINGS)
CPPFLAGS += -I$(NAN_GLEW)/include
CPPFLAGS += -I$(OPENGL_HEADERS)
+CPPFLAGS += -I$(NAN_PYTHON)/include/python$(NAN_PYTHON_VERSION)
+
# not very neat....
CPPFLAGS += -I../../windowmanager
CPPFLAGS += -I../../blenloader
diff --git a/source/blender/editors/space_text/text_draw.c b/source/blender/editors/space_text/text_draw.c
index 2e5bb4a63e0..62274fc664a 100644
--- a/source/blender/editors/space_text/text_draw.c
+++ b/source/blender/editors/space_text/text_draw.c
@@ -49,7 +49,6 @@
#include "BKE_utildefines.h"
#include "BIF_gl.h"
-#include "BIF_glutil.h"
#include "ED_datafiles.h"
#include "UI_interface.h"
@@ -223,6 +222,18 @@ static int find_specialvar(char *string)
return i;
}
+static int find_decorator(char *string)
+{
+ if(string[0] == '@') {
+ int i = 1;
+ while(text_check_identifier(string[i])) {
+ i++;
+ }
+ return i;
+ }
+ return -1;
+}
+
static int find_bool(char *string)
{
int i = 0;
@@ -376,6 +387,8 @@ static void txt_format_line(SpaceText *st, TextLine *line, int do_next)
prev = 'v';
else if((i=find_builtinfunc(str)) != -1)
prev = 'b';
+ else if((i=find_decorator(str)) != -1)
+ prev = 'v'; /* could have a new color for this */
if(i>0) {
while(i>1) {
*fmt = prev; fmt++; str++;
diff --git a/source/blender/editors/space_text/text_header.c b/source/blender/editors/space_text/text_header.c
index 4b37994c39e..672940cf3cb 100644
--- a/source/blender/editors/space_text/text_header.c
+++ b/source/blender/editors/space_text/text_header.c
@@ -54,13 +54,10 @@
#include "WM_types.h"
-#include "BIF_gl.h"
-#include "BIF_glutil.h"
#ifndef DISABLE_PYTHON
-#include "BPY_extern.h"
// XXX #include "BPY_menus.h"
#endif
diff --git a/source/blender/editors/space_text/text_ops.c b/source/blender/editors/space_text/text_ops.c
index 0e0a9592104..d39056c6bbc 100644
--- a/source/blender/editors/space_text/text_ops.c
+++ b/source/blender/editors/space_text/text_ops.c
@@ -1709,6 +1709,8 @@ static int toggle_overwrite_exec(bContext *C, wmOperator *op)
st->overwrite= !st->overwrite;
+ WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, st->text);
+
return OPERATOR_FINISHED;
}
diff --git a/source/blender/editors/space_time/time_ops.c b/source/blender/editors/space_time/time_ops.c
index 95e8a724d32..fb80d54d5e6 100644
--- a/source/blender/editors/space_time/time_ops.c
+++ b/source/blender/editors/space_time/time_ops.c
@@ -29,7 +29,6 @@
#include <stdlib.h>
#include <math.h>
-#include "MEM_guardedalloc.h"
#include "DNA_scene_types.h"
diff --git a/source/blender/editors/space_userpref/space_userpref.c b/source/blender/editors/space_userpref/space_userpref.c
index 4d6d303625b..8eea83a1083 100644
--- a/source/blender/editors/space_userpref/space_userpref.c
+++ b/source/blender/editors/space_userpref/space_userpref.c
@@ -39,7 +39,6 @@
#include "ED_screen.h"
-#include "BIF_gl.h"
#include "WM_api.h"
#include "WM_types.h"
diff --git a/source/blender/editors/space_view3d/drawanimviz.c b/source/blender/editors/space_view3d/drawanimviz.c
index 2de51c2dd92..fb271556a9c 100644
--- a/source/blender/editors/space_view3d/drawanimviz.c
+++ b/source/blender/editors/space_view3d/drawanimviz.c
@@ -31,7 +31,6 @@
#include <string.h>
#include <math.h>
-#include "MEM_guardedalloc.h"
#include "DNA_anim_types.h"
#include "DNA_armature_types.h"
@@ -48,7 +47,6 @@
#include "BKE_action.h"
#include "BIF_gl.h"
-#include "BIF_glutil.h"
#include "ED_armature.h"
#include "ED_keyframes_draw.h"
diff --git a/source/blender/editors/space_view3d/drawarmature.c b/source/blender/editors/space_view3d/drawarmature.c
index 3222f2396a4..adff6ffdc65 100644
--- a/source/blender/editors/space_view3d/drawarmature.c
+++ b/source/blender/editors/space_view3d/drawarmature.c
@@ -31,7 +31,6 @@
#include <string.h>
#include <math.h>
-#include "MEM_guardedalloc.h"
#include "DNA_anim_types.h"
#include "DNA_armature_types.h"
diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c
index 09ca22984ce..64ecd4d274d 100644
--- a/source/blender/editors/space_view3d/drawobject.c
+++ b/source/blender/editors/space_view3d/drawobject.c
@@ -5487,10 +5487,9 @@ static void draw_hooks(Object *ob)
//<rcruiz>
void drawRBpivot(bRigidBodyJointConstraint *data)
{
- float radsPerDeg = 6.283185307179586232f / 360.f;
int axis;
float v1[3]= {data->pivX, data->pivY, data->pivZ};
- float eu[3]= {radsPerDeg*data->axX, radsPerDeg*data->axY, radsPerDeg*data->axZ};
+ float eu[3]= {data->axX, data->axY, data->axZ};
float mat[4][4];
eul_to_mat4(mat,eu);
diff --git a/source/blender/editors/space_view3d/drawvolume.c b/source/blender/editors/space_view3d/drawvolume.c
index 406435bb149..65786901868 100644
--- a/source/blender/editors/space_view3d/drawvolume.c
+++ b/source/blender/editors/space_view3d/drawvolume.c
@@ -69,7 +69,6 @@
#include "smoke_API.h"
#include "BIF_gl.h"
-#include "BIF_glutil.h"
#include "GPU_extensions.h"
diff --git a/source/blender/editors/space_view3d/view3d_buttons.c b/source/blender/editors/space_view3d/view3d_buttons.c
index e6c8ff2c268..a0167c87d87 100644
--- a/source/blender/editors/space_view3d/view3d_buttons.c
+++ b/source/blender/editors/space_view3d/view3d_buttons.c
@@ -56,7 +56,6 @@
#include "BKE_screen.h"
#include "BKE_deform.h"
-#include "BIF_gl.h"
#include "WM_api.h"
#include "WM_types.h"
@@ -355,7 +354,7 @@ static void v3d_editvertex_buts(const bContext *C, uiLayout *layout, View3D *v3d
if(totedge==1)
uiDefButF(block, NUM, B_OBJECTPANELMEDIAN, "Crease:", 0, 20, 200, 20, &(tfp->ve_median[3]), 0.0, 1.0, 10, 3, "");
else if(totedge>1)
- uiDefButF(block, NUM, B_OBJECTPANELMEDIAN, "Median Crease:", 0, 20, 200, 20, &(tfp->ve_median[3]), 0.0, 1.0, 10, 3, "");
+ uiDefButF(block, NUM, B_OBJECTPANELMEDIAN, "Mean Crease:", 0, 20, 200, 20, &(tfp->ve_median[3]), 0.0, 1.0, 10, 3, "");
}
else { // apply
diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c
index fd121434107..2b22d3302f5 100644
--- a/source/blender/editors/space_view3d/view3d_draw.c
+++ b/source/blender/editors/space_view3d/view3d_draw.c
@@ -76,7 +76,6 @@
#include "ED_screen_types.h"
#include "ED_sculpt.h"
#include "ED_transform.h"
-#include "ED_gpencil.h"
#include "UI_interface.h"
#include "UI_interface_icons.h"
diff --git a/source/blender/editors/space_view3d/view3d_header.c b/source/blender/editors/space_view3d/view3d_header.c
index 8dfed23d9f9..f9b8c6a5d62 100644
--- a/source/blender/editors/space_view3d/view3d_header.c
+++ b/source/blender/editors/space_view3d/view3d_header.c
@@ -58,8 +58,6 @@
#include "RNA_define.h"
#include "RNA_enum_types.h"
-#include "BIF_gl.h"
-#include "BIF_glutil.h"
#include "BLI_math.h"
#include "BLI_blenlib.h"
@@ -465,7 +463,7 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C)
uiBlockEndAlign(block);
/* Draw type */
- uiItemR(layout, &v3dptr, "viewport_shading", UI_ITEM_R_ICON_ONLY, "", 0);
+ uiItemR(layout, &v3dptr, "viewport_shade", UI_ITEM_R_ICON_ONLY, "", 0);
if (obedit==NULL && ((ob && ob->mode & (OB_MODE_VERTEX_PAINT|OB_MODE_WEIGHT_PAINT|OB_MODE_TEXTURE_PAINT)))) {
/* Manipulators aren't used in weight paint mode */
@@ -479,7 +477,7 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C)
row= uiLayoutRow(layout, 1);
uiItemR(row, &v3dptr, "pivot_point", UI_ITEM_R_ICON_ONLY, "", 0);
- uiItemR(row, &v3dptr, "pivot_point_align", UI_ITEM_R_ICON_ONLY, "", 0);
+ uiItemR(row, &v3dptr, "use_pivot_point_align", UI_ITEM_R_ICON_ONLY, "", 0);
/* NDOF */
/* Not implemented yet
@@ -494,7 +492,7 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C)
/* Transform widget / manipulators */
row= uiLayoutRow(layout, 1);
- uiItemR(row, &v3dptr, "manipulator", UI_ITEM_R_ICON_ONLY, "", 0);
+ uiItemR(row, &v3dptr, "show_manipulator", UI_ITEM_R_ICON_ONLY, "", 0);
block= uiLayoutGetBlock(row);
if(v3d->twflag & V3D_USE_MANIPULATOR) {
@@ -517,9 +515,9 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C)
/* Layers */
if (v3d->scenelock)
- uiTemplateLayers(layout, &sceneptr, "layers", &v3dptr, "used_layers", ob_lay);
+ uiTemplateLayers(layout, &sceneptr, "layers", &v3dptr, "layers_used", ob_lay);
else
- uiTemplateLayers(layout, &v3dptr, "layers", &v3dptr, "used_layers", ob_lay);
+ uiTemplateLayers(layout, &v3dptr, "layers", &v3dptr, "layers_used", ob_lay);
/* Scene lock */
uiItemR(layout, &v3dptr, "lock_camera_and_layers", UI_ITEM_R_ICON_ONLY, "", 0);
diff --git a/source/blender/editors/space_view3d/view3d_ops.c b/source/blender/editors/space_view3d/view3d_ops.c
index d230085716d..9ee12a8ef1e 100644
--- a/source/blender/editors/space_view3d/view3d_ops.c
+++ b/source/blender/editors/space_view3d/view3d_ops.c
@@ -29,7 +29,6 @@
#include <stdlib.h>
#include <math.h>
-#include "MEM_guardedalloc.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
@@ -219,12 +218,12 @@ void view3d_keymap(wmKeyConfig *keyconf)
/* drawtype */
kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle_enum", ZKEY, KM_PRESS, 0, 0);
- RNA_string_set(kmi->ptr, "data_path", "space_data.viewport_shading");
+ RNA_string_set(kmi->ptr, "data_path", "space_data.viewport_shade");
RNA_string_set(kmi->ptr, "value_1", "SOLID");
RNA_string_set(kmi->ptr, "value_2", "WIREFRAME");
kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle_enum", ZKEY, KM_PRESS, KM_ALT, 0);
- RNA_string_set(kmi->ptr, "data_path", "space_data.viewport_shading");
+ RNA_string_set(kmi->ptr, "data_path", "space_data.viewport_shade");
RNA_string_set(kmi->ptr, "value_1", "TEXTURED");
RNA_string_set(kmi->ptr, "value_2", "SOLID");
@@ -276,7 +275,7 @@ void view3d_keymap(wmKeyConfig *keyconf)
RNA_string_set(kmi->ptr, "data_path", "space_data.pivot_point_align");
kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", SPACEKEY, KM_PRESS, KM_CTRL, 0); /* new in 2.5 */
- RNA_string_set(kmi->ptr, "data_path", "space_data.manipulator");
+ RNA_string_set(kmi->ptr, "data_path", "space_data.show_manipulator");
kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", PERIODKEY, KM_PRESS, 0, 0);
RNA_string_set(kmi->ptr, "data_path", "space_data.pivot_point");
diff --git a/source/blender/editors/space_view3d/view3d_toolbar.c b/source/blender/editors/space_view3d/view3d_toolbar.c
index 7cb6921902c..e47a3af19f1 100644
--- a/source/blender/editors/space_view3d/view3d_toolbar.c
+++ b/source/blender/editors/space_view3d/view3d_toolbar.c
@@ -46,7 +46,6 @@
#include "BKE_global.h"
#include "BKE_screen.h"
-#include "BIF_gl.h"
#include "WM_api.h"
#include "WM_types.h"
diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c
index aad91e74af9..334b72ee1ed 100644
--- a/source/blender/editors/space_view3d/view3d_view.c
+++ b/source/blender/editors/space_view3d/view3d_view.c
@@ -306,7 +306,10 @@ static int view3d_smoothview_invoke(bContext *C, wmOperator *op, wmEvent *event)
if(rv3d->smooth_timer==NULL || rv3d->smooth_timer!=event->customdata)
return OPERATOR_PASS_THROUGH;
- step = (rv3d->smooth_timer->duration)/sms->time_allowed;
+ if(sms->time_allowed != 0.0f)
+ step = (rv3d->smooth_timer->duration)/sms->time_allowed;
+ else
+ step = 1.0f;
/* end timer */
if(step >= 1.0f) {
diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c
index a450222dd95..de50861259d 100644
--- a/source/blender/editors/transform/transform.c
+++ b/source/blender/editors/transform/transform.c
@@ -1392,7 +1392,7 @@ void saveTransform(bContext *C, TransInfo *t, wmOperator *op)
ts->proportional_size = t->prop_size;
}
- if (RNA_struct_find_property(op->ptr, "proportional_editing_falloff") && !RNA_property_is_set(op->ptr, "proportional_editing_falloff")) {
+ if (RNA_struct_find_property(op->ptr, "proportional_edit_falloff") && !RNA_property_is_set(op->ptr, "proportional_edit_falloff")) {
ts->prop_mode = t->prop_mode;
}
@@ -1415,7 +1415,7 @@ void saveTransform(bContext *C, TransInfo *t, wmOperator *op)
if (RNA_struct_find_property(op->ptr, "proportional"))
{
RNA_enum_set(op->ptr, "proportional", proportional);
- RNA_enum_set(op->ptr, "proportional_editing_falloff", t->prop_mode);
+ RNA_enum_set(op->ptr, "proportional_edit_falloff", t->prop_mode);
RNA_float_set(op->ptr, "proportional_size", t->prop_size);
}
diff --git a/source/blender/editors/transform/transform_constraints.c b/source/blender/editors/transform/transform_constraints.c
index 3abd2dc25c1..1e6916f0a86 100644
--- a/source/blender/editors/transform/transform_constraints.c
+++ b/source/blender/editors/transform/transform_constraints.c
@@ -38,7 +38,6 @@
#include <io.h>
#endif
-#include "MEM_guardedalloc.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c
index a82037ead11..ebc3ad89c95 100644
--- a/source/blender/editors/transform/transform_conversions.c
+++ b/source/blender/editors/transform/transform_conversions.c
@@ -35,8 +35,6 @@
#include <string.h>
#include <math.h>
-#include "MEM_guardedalloc.h"
-
#include "DNA_anim_types.h"
#include "DNA_armature_types.h"
#include "DNA_lattice_types.h"
@@ -50,6 +48,8 @@
#include "DNA_scene_types.h"
#include "DNA_meshdata_types.h"
+#include "MEM_guardedalloc.h"
+
#include "BKE_action.h"
#include "BKE_armature.h"
#include "BKE_context.h"
@@ -69,7 +69,6 @@
#include "BKE_bmesh.h"
#include "BKE_scene.h"
-#include "BIF_gl.h"
#include "ED_anim_api.h"
#include "ED_armature.h"
@@ -4371,7 +4370,11 @@ static void set_trans_object_base_flags(bContext *C, TransInfo *t)
/* if parent selected, deselect */
while(parsel) {
- if(parsel->flag & SELECT) break;
+ if(parsel->flag & SELECT) {
+ Base *parbase = object_in_scene(parsel, scene);
+ if TESTBASELIB_BGMODE(v3d, scene, parbase)
+ break;
+ }
parsel= parsel->parent;
}
diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c
index 56a4eb846c0..15e2d32cc94 100644
--- a/source/blender/editors/transform/transform_generics.c
+++ b/source/blender/editors/transform/transform_generics.c
@@ -1073,9 +1073,9 @@ int initTransInfo (bContext *C, TransInfo *t, wmOperator *op, wmEvent *event)
t->prop_size = 1.0f;
}
- if (op && RNA_struct_find_property(op->ptr, "proportional_editing_falloff") && RNA_property_is_set(op->ptr, "proportional_editing_falloff"))
+ if (op && RNA_struct_find_property(op->ptr, "proportional_edit_falloff") && RNA_property_is_set(op->ptr, "proportional_edit_falloff"))
{
- t->prop_mode = RNA_enum_get(op->ptr, "proportional_editing_falloff");
+ t->prop_mode = RNA_enum_get(op->ptr, "proportional_edit_falloff");
}
else
{
diff --git a/source/blender/editors/transform/transform_ops.c b/source/blender/editors/transform/transform_ops.c
index 76866d9a0dc..4cecc41ae5f 100644
--- a/source/blender/editors/transform/transform_ops.c
+++ b/source/blender/editors/transform/transform_ops.c
@@ -421,7 +421,7 @@ void Transform_Properties(struct wmOperatorType *ot, int flags)
if (flags & P_PROPORTIONAL)
{
RNA_def_enum(ot->srna, "proportional", proportional_editing_items, 0, "Proportional Editing", "");
- RNA_def_enum(ot->srna, "proportional_editing_falloff", proportional_falloff_items, 0, "Proportional Editing Falloff", "Falloff type for proportional editing mode.");
+ RNA_def_enum(ot->srna, "proportional_edit_falloff", proportional_falloff_items, 0, "Proportional Editing Falloff", "Falloff type for proportional editing mode.");
RNA_def_float(ot->srna, "proportional_size", 1, 0, FLT_MAX, "Proportional Size", "", 0, 100);
}
diff --git a/source/blender/editors/transform/transform_snap.c b/source/blender/editors/transform/transform_snap.c
index 742001cae74..778698d3060 100644
--- a/source/blender/editors/transform/transform_snap.c
+++ b/source/blender/editors/transform/transform_snap.c
@@ -54,7 +54,6 @@
//#include "editmesh.h"
//#include "BIF_editsima.h"
#include "BIF_gl.h"
-#include "BIF_glutil.h"
//#include "BIF_mywindow.h"
//#include "BIF_screen.h"
//#include "BIF_editsima.h"
@@ -441,9 +440,9 @@ void initSnapping(TransInfo *t, wmOperator *op)
normalize_v3(t->tsnap.snapNormal);
}
- if (RNA_struct_find_property(op->ptr, "snap_project"))
+ if (RNA_struct_find_property(op->ptr, "use_snap_project"))
{
- t->tsnap.project = RNA_boolean_get(op->ptr, "snap_project");
+ t->tsnap.project = RNA_boolean_get(op->ptr, "use_snap_project");
}
}
}
diff --git a/source/blender/gpu/intern/gpu_extensions.c b/source/blender/gpu/intern/gpu_extensions.c
index 75038698643..fa8ff7a6354 100644
--- a/source/blender/gpu/intern/gpu_extensions.c
+++ b/source/blender/gpu/intern/gpu_extensions.c
@@ -39,8 +39,6 @@
#include "BKE_global.h"
#include "BKE_utildefines.h"
-#include "IMB_imbuf.h"
-#include "IMB_imbuf_types.h"
#include "BLI_blenlib.h"
diff --git a/source/blender/gpu/intern/gpu_material.c b/source/blender/gpu/intern/gpu_material.c
index 9dc881617b7..5f8015be52f 100644
--- a/source/blender/gpu/intern/gpu_material.c
+++ b/source/blender/gpu/intern/gpu_material.c
@@ -1003,7 +1003,7 @@ static void do_material_tex(GPUShadeInput *shi)
if(tex->type==TEX_IMAGE)
if(mat->scene->r.color_mgt_flag & R_COLOR_MANAGEMENT)
- GPU_link(mat, "srgb_to_linearrgb", tcol, tcol);
+ GPU_link(mat, "srgb_to_linearrgb", tcol, &tcol);
if(mtex->mapto & MAP_COL) {
GPUNodeLink *colfac;
diff --git a/source/blender/ikplugin/intern/ikplugin_api.c b/source/blender/ikplugin/intern/ikplugin_api.c
index fe9d116c8ca..cdc4ee11518 100644
--- a/source/blender/ikplugin/intern/ikplugin_api.c
+++ b/source/blender/ikplugin/intern/ikplugin_api.c
@@ -27,7 +27,6 @@
* ***** END GPL LICENSE BLOCK *****
*/
-#include "MEM_guardedalloc.h"
#include "BIK_api.h"
#include "BLI_blenlib.h"
diff --git a/source/blender/imbuf/intern/allocimbuf.c b/source/blender/imbuf/intern/allocimbuf.c
index 8e00c7c7cf1..3f440c0bf6f 100644
--- a/source/blender/imbuf/intern/allocimbuf.c
+++ b/source/blender/imbuf/intern/allocimbuf.c
@@ -42,6 +42,7 @@
#include "imbuf.h"
#include "MEM_CacheLimiterC-Api.h"
+#include "MEM_guardedalloc.h"
void imb_freemipmapImBuf(ImBuf *ibuf)
{
diff --git a/source/blender/imbuf/intern/anim.c b/source/blender/imbuf/intern/anim.c
index 69e547cd8df..096ed499f85 100644
--- a/source/blender/imbuf/intern/anim.c
+++ b/source/blender/imbuf/intern/anim.c
@@ -60,6 +60,8 @@
#include "BLI_blenlib.h" /* BLI_remlink BLI_filesize BLI_addtail
BLI_countlist BLI_stringdec */
+#include "MEM_guardedalloc.h"
+
#include "DNA_userdef_types.h"
#include "BKE_global.h"
#include "BKE_depsgraph.h"
diff --git a/source/blender/imbuf/intern/cache.c b/source/blender/imbuf/intern/cache.c
index d15826df2f0..77e01d8ebef 100644
--- a/source/blender/imbuf/intern/cache.c
+++ b/source/blender/imbuf/intern/cache.c
@@ -20,6 +20,8 @@
* ***** END GPL LICENSE BLOCK *****
*/
+#include "MEM_guardedalloc.h"
+
#include "BLI_ghash.h"
#include "BLI_listbase.h"
#include "BLI_memarena.h"
diff --git a/source/blender/imbuf/intern/filter.c b/source/blender/imbuf/intern/filter.c
index 3ee05da15c9..3cc266e460e 100644
--- a/source/blender/imbuf/intern/filter.c
+++ b/source/blender/imbuf/intern/filter.c
@@ -30,6 +30,7 @@
*/
#include "BKE_utildefines.h"
+#include "MEM_guardedalloc.h"
#include "IMB_imbuf_types.h"
#include "IMB_imbuf.h"
diff --git a/source/blender/imbuf/intern/imbuf.h b/source/blender/imbuf/intern/imbuf.h
index 047795355b3..1e2f3ec461a 100644
--- a/source/blender/imbuf/intern/imbuf.h
+++ b/source/blender/imbuf/intern/imbuf.h
@@ -51,8 +51,6 @@
#include <sys/mman.h>
#endif
-#include "MEM_guardedalloc.h"
-
#if !defined(WIN32)
#define O_BINARY 0
#endif
diff --git a/source/blender/imbuf/intern/iris.c b/source/blender/imbuf/intern/iris.c
index dc9c7a1dc3b..c676c401ccd 100644
--- a/source/blender/imbuf/intern/iris.c
+++ b/source/blender/imbuf/intern/iris.c
@@ -30,7 +30,10 @@
*/
#include <string.h>
+
#include "BLI_blenlib.h"
+#include "MEM_guardedalloc.h"
+
#include "imbuf.h"
#include "IMB_imbuf_types.h"
#include "IMB_imbuf.h"
diff --git a/source/blender/imbuf/intern/jp2.c b/source/blender/imbuf/intern/jp2.c
index a76c6e780ca..558eaedf8b2 100644
--- a/source/blender/imbuf/intern/jp2.c
+++ b/source/blender/imbuf/intern/jp2.c
@@ -23,6 +23,8 @@
#ifdef WITH_OPENJPEG
+#include "MEM_guardedalloc.h"
+
#include "BLI_blenlib.h"
#include "BLI_math.h"
@@ -287,7 +289,7 @@ struct ImBuf *imb_jp2_decode(unsigned char *mem, int size, int flags)
/*
-2048x1080 (2K) at 24 fps or 48 fps, or 4096x2160 (4K) at 24 fps; 3×12 bits per pixel, XYZ color space
+2048x1080 (2K) at 24 fps or 48 fps, or 4096x2160 (4K) at 24 fps; 3x12 bits per pixel, XYZ color space
* In 2K, for Scope (2.39:1) presentation 2048x858 pixels of the imager is used
* In 2K, for Flat (1.85:1) presentation 1998x1080 pixels of the imager is used
diff --git a/source/blender/imbuf/intern/png.c b/source/blender/imbuf/intern/png.c
index 4df8d8a2271..6344b227174 100644
--- a/source/blender/imbuf/intern/png.c
+++ b/source/blender/imbuf/intern/png.c
@@ -31,6 +31,7 @@
#include "png.h"
#include "BLI_blenlib.h"
+#include "MEM_guardedalloc.h"
#include "imbuf.h"
diff --git a/source/blender/imbuf/intern/radiance_hdr.c b/source/blender/imbuf/intern/radiance_hdr.c
index a0942c281e3..c5122ebe46c 100644
--- a/source/blender/imbuf/intern/radiance_hdr.c
+++ b/source/blender/imbuf/intern/radiance_hdr.c
@@ -42,6 +42,9 @@
#ifdef WIN32
#include <io.h>
#endif
+
+#include "MEM_guardedalloc.h"
+
#include "BLI_blenlib.h"
#include "imbuf.h"
diff --git a/source/blender/imbuf/intern/rotate.c b/source/blender/imbuf/intern/rotate.c
index e0e52bb7094..4edb7ac7877 100644
--- a/source/blender/imbuf/intern/rotate.c
+++ b/source/blender/imbuf/intern/rotate.c
@@ -30,7 +30,8 @@
*/
#include "BLI_blenlib.h"
-#include "BKE_utildefines.h"
+#include "BKE_utildefines.h"
+#include "MEM_guardedalloc.h"
#include "imbuf.h"
#include "IMB_imbuf_types.h"
diff --git a/source/blender/imbuf/intern/scaling.c b/source/blender/imbuf/intern/scaling.c
index 335e16402f9..f26eec51b03 100644
--- a/source/blender/imbuf/intern/scaling.c
+++ b/source/blender/imbuf/intern/scaling.c
@@ -30,6 +30,7 @@
*/
#include "BLI_blenlib.h"
+#include "MEM_guardedalloc.h"
#include "imbuf.h"
#include "IMB_imbuf_types.h"
diff --git a/source/blender/imbuf/intern/targa.c b/source/blender/imbuf/intern/targa.c
index 09aaccc1ab6..b5434b85b5a 100644
--- a/source/blender/imbuf/intern/targa.c
+++ b/source/blender/imbuf/intern/targa.c
@@ -31,6 +31,7 @@
#include <io.h>
#endif
#include "BLI_blenlib.h"
+#include "MEM_guardedalloc.h"
#include "imbuf.h"
diff --git a/source/blender/makesdna/DNA_modifier_types.h b/source/blender/makesdna/DNA_modifier_types.h
index 722adba1136..27f9c9cd5f3 100644
--- a/source/blender/makesdna/DNA_modifier_types.h
+++ b/source/blender/makesdna/DNA_modifier_types.h
@@ -66,6 +66,9 @@ typedef enum ModifierType {
eModifierType_ShapeKey,
eModifierType_Solidify,
eModifierType_Screw,
+ /* placeholder, keep this so durian files load in
+ * trunk with the correct modifier once its merged */
+ eModifierType_Warp,
NUM_MODIFIER_TYPES
} ModifierType;
diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h
index 91437a1c42d..3d23ed15b85 100644
--- a/source/blender/makesdna/DNA_scene_types.h
+++ b/source/blender/makesdna/DNA_scene_types.h
@@ -796,6 +796,7 @@ typedef struct Scene {
void *sound_scene;
void *sound_scene_handle;
+ void *sound_scrub_handle;
void *fps_info; /* (runtime) info/cache used for presenting playback framerate info to the user */
diff --git a/source/blender/makesdna/intern/SConscript b/source/blender/makesdna/intern/SConscript
index 38819ccdf96..116a9c40973 100644
--- a/source/blender/makesdna/intern/SConscript
+++ b/source/blender/makesdna/intern/SConscript
@@ -60,7 +60,7 @@ if env['OURPLATFORM'] != 'linuxcross':
if env['OURPLATFORM'] in ('win32-vc', 'win64-vc', 'win32-mingw'):
dna.Command ('dna.c', '', "\"" + root_build_dir+os.sep+"makesdna\" $TARGET")
else:
- dna.Command ('dna.c', '', root_build_dir+os.sep+"makesdna $TARGET")
+ dna.Command ('dna.c', '', "\"" + root_build_dir+os.sep+"makesdna\" $TARGET")
else:
if USE_WINE:
dna.Command ('dna.c', '', 'wine ' + root_build_dir+os.sep+"makesdna $TARGET")
diff --git a/source/blender/makesrna/RNA_access.h b/source/blender/makesrna/RNA_access.h
index 83376e29fc5..d32f8a6af59 100644
--- a/source/blender/makesrna/RNA_access.h
+++ b/source/blender/makesrna/RNA_access.h
@@ -609,8 +609,9 @@ void RNA_struct_py_type_set(StructRNA *srna, void *py_type);
void *RNA_struct_blender_type_get(StructRNA *srna);
void RNA_struct_blender_type_set(StructRNA *srna, void *blender_type);
-struct IDProperty *RNA_struct_idproperties(PointerRNA *ptr, int create);
-int RNA_struct_idproperties_check(StructRNA *srna);
+struct IDProperty *RNA_struct_idprops(PointerRNA *ptr, int create);
+int RNA_struct_idprops_check(StructRNA *srna);
+int RNA_struct_idprops_register_check(StructRNA *type);
PropertyRNA *RNA_struct_find_property(PointerRNA *ptr, const char *identifier);
diff --git a/source/blender/makesrna/RNA_define.h b/source/blender/makesrna/RNA_define.h
index 9aadd8900e5..f6ae5dcdbbd 100644
--- a/source/blender/makesrna/RNA_define.h
+++ b/source/blender/makesrna/RNA_define.h
@@ -57,7 +57,7 @@ void RNA_def_struct_nested(BlenderRNA *brna, StructRNA *srna, const char *struct
void RNA_def_struct_flag(StructRNA *srna, int flag);
void RNA_def_struct_clear_flag(StructRNA *srna, int flag);
void RNA_def_struct_refine_func(StructRNA *srna, const char *refine);
-void RNA_def_struct_idproperties_func(StructRNA *srna, const char *refine);
+void RNA_def_struct_idprops_func(StructRNA *srna, const char *refine);
void RNA_def_struct_register_funcs(StructRNA *srna, const char *reg, const char *unreg);
void RNA_def_struct_path_func(StructRNA *srna, const char *path);
void RNA_def_struct_identifier(StructRNA *srna, const char *identifier);
diff --git a/source/blender/makesrna/RNA_enum_types.h b/source/blender/makesrna/RNA_enum_types.h
index 65870d54c11..38ba44f2c2b 100644
--- a/source/blender/makesrna/RNA_enum_types.h
+++ b/source/blender/makesrna/RNA_enum_types.h
@@ -90,7 +90,7 @@ extern EnumPropertyItem wm_report_items[];
extern EnumPropertyItem property_type_items[];
extern EnumPropertyItem property_unit_items[];
-extern EnumPropertyItem viewport_shading_items[];
+extern EnumPropertyItem viewport_shade_items[];
struct bContext;
struct PointerRNA;
diff --git a/source/blender/makesrna/RNA_types.h b/source/blender/makesrna/RNA_types.h
index 88058769f4b..887069d6c00 100644
--- a/source/blender/makesrna/RNA_types.h
+++ b/source/blender/makesrna/RNA_types.h
@@ -298,7 +298,8 @@ typedef enum StructFlag {
/* internal flags */
STRUCT_RUNTIME = 4,
STRUCT_GENERATED = 8,
- STRUCT_FREE_POINTERS = 16
+ STRUCT_FREE_POINTERS = 16,
+ STRUCT_NO_IDPROPERTIES = 32, /* Menu's and Panels don't need properties */
} StructFlag;
typedef int (*StructValidateFunc)(struct PointerRNA *ptr, void *data, int *have_function);
diff --git a/source/blender/makesrna/intern/Makefile b/source/blender/makesrna/intern/Makefile
index f4ab4712faa..69d5581184d 100644
--- a/source/blender/makesrna/intern/Makefile
+++ b/source/blender/makesrna/intern/Makefile
@@ -45,6 +45,8 @@ endif
CFLAGS += $(LEVEL_1_C_WARNINGS)
+CPPFLAGS += -I$(NAN_PYTHON)/include/python$(NAN_PYTHON_VERSION)
+
CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include
CPPFLAGS += -I$(NAN_MEMUTIL)/include
CPPFLAGS += -I../../../../intern/audaspace/intern
diff --git a/source/blender/makesrna/intern/SConscript b/source/blender/makesrna/intern/SConscript
index 3bebffaddec..fec4b1e693d 100644
--- a/source/blender/makesrna/intern/SConscript
+++ b/source/blender/makesrna/intern/SConscript
@@ -33,7 +33,7 @@ incs = '#/intern/guardedalloc ../../blenlib ../../blenkernel'
incs += ' ../../imbuf ../../makesdna ../../makesrna ../../ikplugin'
incs += ' ../../windowmanager ../../editors/include'
incs += ' ../../render/extern/include'
-incs += ' #/intern/audaspace/intern'
+incs += ' #/intern/audaspace/intern '
if env['WITH_BF_OPENEXR']:
defs.append('WITH_OPENEXR')
@@ -152,7 +152,7 @@ if env['OURPLATFORM'] != 'linuxcross':
if env['OURPLATFORM'] in ('win32-vc', 'win64-vc', 'win32-mingw'):
rna.Command (generated_files, '', "\"" + root_build_dir+os.sep+"makesrna.exe\" \"" + build_dir )
else:
- rna.Command (generated_files, '', root_build_dir+os.sep+"makesrna " + build_dir)
+ rna.Command (generated_files, '', "\"" + root_build_dir+os.sep+"makesrna\" \"" + build_dir + '"' )
else:
rna.Command (generated_files, '', root_build_dir+os.sep+"makesrna.exe " + build_dir)
diff --git a/source/blender/makesrna/intern/rna_ID.c b/source/blender/makesrna/intern/rna_ID.c
index 009afec2ded..a8b7fb1540b 100644
--- a/source/blender/makesrna/intern/rna_ID.c
+++ b/source/blender/makesrna/intern/rna_ID.c
@@ -176,7 +176,7 @@ StructRNA *rna_ID_refine(PointerRNA *ptr)
return ID_code_to_RNA_type(GS(id->name));
}
-IDProperty *rna_ID_idproperties(PointerRNA *ptr, int create)
+IDProperty *rna_ID_idprops(PointerRNA *ptr, int create)
{
return IDP_GetProperties(ptr->data, create);
}
@@ -195,7 +195,7 @@ void rna_ID_fake_user_set(PointerRNA *ptr, int value)
}
}
-IDProperty *rna_IDPropertyGroup_idproperties(PointerRNA *ptr, int create)
+IDProperty *rna_IDPropertyGroup_idprops(PointerRNA *ptr, int create)
{
return ptr->data;
}
@@ -317,7 +317,7 @@ static void rna_def_ID_properties(BlenderRNA *brna)
* care of the properties here */
srna= RNA_def_struct(brna, "IDPropertyGroup", NULL);
RNA_def_struct_ui_text(srna, "ID Property Group", "Group of ID properties");
- RNA_def_struct_idproperties_func(srna, "rna_IDPropertyGroup_idproperties");
+ RNA_def_struct_idprops_func(srna, "rna_IDPropertyGroup_idprops");
RNA_def_struct_register_funcs(srna, "rna_IDPropertyGroup_register", "rna_IDPropertyGroup_unregister");
RNA_def_struct_refine_func(srna, "rna_IDPropertyGroup_refine");
@@ -341,7 +341,7 @@ static void rna_def_ID(BlenderRNA *brna)
RNA_def_struct_ui_text(srna, "ID", "Base type for datablocks, defining a unique name, linking from other libraries and garbage collection");
RNA_def_struct_flag(srna, STRUCT_ID|STRUCT_ID_REFCOUNT);
RNA_def_struct_refine_func(srna, "rna_ID_refine");
- RNA_def_struct_idproperties_func(srna, "rna_ID_idproperties");
+ RNA_def_struct_idprops_func(srna, "rna_ID_idprops");
prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
RNA_def_property_ui_text(prop, "Name", "Unique datablock ID name");
@@ -356,7 +356,7 @@ static void rna_def_ID(BlenderRNA *brna)
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Users", "Number of times this datablock is referenced");
- prop= RNA_def_property(srna, "fake_user", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_fake_user", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", LIB_FAKEUSER);
RNA_def_property_ui_text(prop, "Fake User", "Saves this datablock even if it has no users");
RNA_def_property_boolean_funcs(prop, NULL, "rna_ID_fake_user_set");
diff --git a/source/blender/makesrna/intern/rna_access.c b/source/blender/makesrna/intern/rna_access.c
index b15f736ac76..73af75ca960 100644
--- a/source/blender/makesrna/intern/rna_access.c
+++ b/source/blender/makesrna/intern/rna_access.c
@@ -23,6 +23,7 @@
*/
#include <stdlib.h>
+#include <stddef.h>
#include <string.h>
#include <ctype.h>
@@ -240,7 +241,7 @@ IDProperty *rna_idproperty_ui(PropertyRNA *prop)
return NULL;
}
-IDProperty *RNA_struct_idproperties(PointerRNA *ptr, int create)
+IDProperty *RNA_struct_idprops(PointerRNA *ptr, int create)
{
StructRNA *type= ptr->type;
@@ -250,22 +251,18 @@ IDProperty *RNA_struct_idproperties(PointerRNA *ptr, int create)
return NULL;
}
-int RNA_struct_idproperties_check(StructRNA *srna)
+int RNA_struct_idprops_check(StructRNA *srna)
{
return (srna && srna->idproperties) ? 1 : 0;
}
static IDProperty *rna_idproperty_find(PointerRNA *ptr, const char *name)
{
- IDProperty *group= RNA_struct_idproperties(ptr, 0);
- IDProperty *idprop;
+ IDProperty *group= RNA_struct_idprops(ptr, 0);
+
+ if(group)
+ return IDP_GetPropertyFromGroup(group, name);
- if(group) {
- for(idprop=group->data.group.first; idprop; idprop=idprop->next)
- if(strcmp(idprop->name, name) == 0)
- return idprop;
- }
-
return NULL;
}
@@ -390,7 +387,7 @@ IDProperty *rna_idproperty_check(PropertyRNA **prop, PointerRNA *ptr)
IDProperty *idprop= rna_idproperty_find(ptr, (*prop)->identifier);
if(idprop && !rna_idproperty_verify_valid(ptr, *prop, idprop)) {
- IDProperty *group= RNA_struct_idproperties(ptr, 0);
+ IDProperty *group= RNA_struct_idprops(ptr, 0);
IDP_RemFromGroup(group, idprop);
IDP_FreeProperty(idprop);
@@ -513,6 +510,11 @@ int RNA_struct_is_ID(StructRNA *type)
return (type->flag & STRUCT_ID) != 0;
}
+int RNA_struct_idprops_register_check(StructRNA *type)
+{
+ return (type->flag & STRUCT_NO_IDPROPERTIES) == 0;
+}
+
int RNA_struct_is_a(StructRNA *type, StructRNA *srna)
{
StructRNA *base;
@@ -577,9 +579,9 @@ FunctionRNA *RNA_struct_find_function(PointerRNA *ptr, const char *identifier)
FunctionRNA *func;
StructRNA *type;
for(type= ptr->type; type; type= type->base) {
- for(func= type->functions.first; func; func= func->cont.next) {
- if(strcmp(func->identifier, identifier)==0)
- return func;
+ func= (FunctionRNA *)BLI_findstring_ptr(&type->functions, identifier, offsetof(FunctionRNA, identifier));
+ if(func) {
+ return func;
}
}
return NULL;
@@ -1308,7 +1310,7 @@ void RNA_property_boolean_set(PointerRNA *ptr, PropertyRNA *prop, int value)
val.i= value;
- group= RNA_struct_idproperties(ptr, 1);
+ group= RNA_struct_idprops(ptr, 1);
if(group)
IDP_AddToGroup(group, IDP_New(IDP_INT, val, (char*)prop->identifier));
}
@@ -1378,7 +1380,7 @@ void RNA_property_boolean_set_array(PointerRNA *ptr, PropertyRNA *prop, const in
val.array.len= prop->totarraylength;
val.array.type= IDP_INT;
- group= RNA_struct_idproperties(ptr, 1);
+ group= RNA_struct_idprops(ptr, 1);
if(group) {
idprop= IDP_New(IDP_ARRAY, val, (char*)prop->identifier);
IDP_AddToGroup(group, idprop);
@@ -1475,7 +1477,7 @@ void RNA_property_int_set(PointerRNA *ptr, PropertyRNA *prop, int value)
val.i= value;
- group= RNA_struct_idproperties(ptr, 1);
+ group= RNA_struct_idprops(ptr, 1);
if(group)
IDP_AddToGroup(group, IDP_New(IDP_INT, val, (char*)prop->identifier));
}
@@ -1545,7 +1547,7 @@ void RNA_property_int_set_array(PointerRNA *ptr, PropertyRNA *prop, const int *v
val.array.len= prop->totarraylength;
val.array.type= IDP_INT;
- group= RNA_struct_idproperties(ptr, 1);
+ group= RNA_struct_idprops(ptr, 1);
if(group) {
idprop= IDP_New(IDP_ARRAY, val, (char*)prop->identifier);
IDP_AddToGroup(group, idprop);
@@ -1651,7 +1653,7 @@ void RNA_property_float_set(PointerRNA *ptr, PropertyRNA *prop, float value)
val.f= value;
- group= RNA_struct_idproperties(ptr, 1);
+ group= RNA_struct_idprops(ptr, 1);
if(group)
IDP_AddToGroup(group, IDP_New(IDP_FLOAT, val, (char*)prop->identifier));
}
@@ -1739,7 +1741,7 @@ void RNA_property_float_set_array(PointerRNA *ptr, PropertyRNA *prop, const floa
val.array.len= prop->totarraylength;
val.array.type= IDP_FLOAT;
- group= RNA_struct_idproperties(ptr, 1);
+ group= RNA_struct_idprops(ptr, 1);
if(group) {
idprop= IDP_New(IDP_ARRAY, val, (char*)prop->identifier);
IDP_AddToGroup(group, idprop);
@@ -1864,7 +1866,7 @@ void RNA_property_string_set(PointerRNA *ptr, PropertyRNA *prop, const char *val
else if(prop->flag & PROP_EDITABLE) {
IDProperty *group;
- group= RNA_struct_idproperties(ptr, 1);
+ group= RNA_struct_idprops(ptr, 1);
if(group)
IDP_AddToGroup(group, IDP_NewString((char*)value, (char*)prop->identifier, RNA_property_string_maxlength(prop) - 1));
}
@@ -1929,7 +1931,7 @@ void RNA_property_enum_set(PointerRNA *ptr, PropertyRNA *prop, int value)
val.i= value;
- group= RNA_struct_idproperties(ptr, 1);
+ group= RNA_struct_idprops(ptr, 1);
if(group)
IDP_AddToGroup(group, IDP_New(IDP_INT, val, (char*)prop->identifier));
}
@@ -2002,7 +2004,7 @@ void RNA_property_pointer_add(PointerRNA *ptr, PropertyRNA *prop)
val.i= 0;
- group= RNA_struct_idproperties(ptr, 1);
+ group= RNA_struct_idprops(ptr, 1);
if(group)
IDP_AddToGroup(group, IDP_New(IDP_GROUP, val, (char*)prop->identifier));
}
@@ -2015,7 +2017,7 @@ void RNA_property_pointer_remove(PointerRNA *ptr, PropertyRNA *prop)
IDProperty *idprop, *group;
if((idprop=rna_idproperty_check(&prop, ptr))) {
- group= RNA_struct_idproperties(ptr, 0);
+ group= RNA_struct_idprops(ptr, 0);
if(group) {
IDP_RemFromGroup(group, idprop);
@@ -2128,7 +2130,7 @@ void RNA_property_collection_add(PointerRNA *ptr, PropertyRNA *prop, PointerRNA
IDProperty *group, *item;
IDPropertyTemplate val = {0};
- group= RNA_struct_idproperties(ptr, 1);
+ group= RNA_struct_idprops(ptr, 1);
if(group) {
idprop= IDP_NewIDPArray(prop->identifier);
IDP_AddToGroup(group, idprop);
@@ -2968,7 +2970,7 @@ int RNA_path_resolve_full(PointerRNA *ptr, const char *path, PointerRNA *r_ptr,
return 0;
if(use_id_prop) { /* look up property name in current struct */
- IDProperty *group= RNA_struct_idproperties(&curptr, 0);
+ IDProperty *group= RNA_struct_idprops(&curptr, 0);
if(group && rna_token_strip_quotes(token))
prop= (PropertyRNA *)IDP_GetPropertyFromGroup(group, token+1);
}
@@ -3592,7 +3594,8 @@ int RNA_property_is_set(PointerRNA *ptr, const char *name)
return 1;
}
else {
- // printf("RNA_property_is_set: %s.%s not found.\n", ptr->type->identifier, name);
+ /* python raises an error */
+ /* printf("RNA_property_is_set: %s.%s not found.\n", ptr->type->identifier, name); */
return 0;
}
}
@@ -3777,27 +3780,12 @@ int RNA_function_defined(FunctionRNA *func)
PropertyRNA *RNA_function_get_parameter(PointerRNA *ptr, FunctionRNA *func, int index)
{
- PropertyRNA *parm;
- int i;
-
- parm= func->cont.properties.first;
- for(i= 0; parm; parm= parm->next, i++)
- if(i==index)
- return parm;
-
- return NULL;
+ return BLI_findlink(&func->cont.properties, index);
}
PropertyRNA *RNA_function_find_parameter(PointerRNA *ptr, FunctionRNA *func, const char *identifier)
{
- PropertyRNA *parm;
-
- parm= func->cont.properties.first;
- for(; parm; parm= parm->next)
- if(strcmp(parm->identifier, identifier)==0)
- return parm;
-
- return NULL;
+ return BLI_findstring(&func->cont.properties, identifier, offsetof(PropertyRNA, identifier));
}
const struct ListBase *RNA_function_defined_parameters(FunctionRNA *func)
@@ -3813,18 +3801,18 @@ ParameterList *RNA_parameter_list_create(ParameterList *parms, PointerRNA *ptr,
void *data;
int alloc_size= 0, size;
- parms->arg_count= 0;
- parms->ret_count= 0;
-
+ parms->arg_count= 0;
+ parms->ret_count= 0;
+
/* allocate data */
for(parm= func->cont.properties.first; parm; parm= parm->next) {
alloc_size += rna_parameter_size_alloc(parm);
- if(parm->flag & PROP_OUTPUT)
- parms->ret_count++;
- else
- parms->arg_count++;
- }
+ if(parm->flag & PROP_OUTPUT)
+ parms->ret_count++;
+ else
+ parms->arg_count++;
+ }
parms->data= MEM_callocN(alloc_size, "RNA_parameter_list_create");
parms->func= func;
diff --git a/source/blender/makesrna/intern/rna_action.c b/source/blender/makesrna/intern/rna_action.c
index 027ecfc12a3..623717e469f 100644
--- a/source/blender/makesrna/intern/rna_action.c
+++ b/source/blender/makesrna/intern/rna_action.c
@@ -166,131 +166,131 @@ static void rna_def_dopesheet(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Source", "ID-Block representing source data, currently ID_SCE (for Dopesheet), and ID_SC (for Grease Pencil)");
/* General Filtering Settings */
- prop= RNA_def_property(srna, "only_selected", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_only_selected", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "filterflag", ADS_FILTER_ONLYSEL);
RNA_def_property_ui_text(prop, "Only Selected", "Only include channels relating to selected objects and data");
RNA_def_property_ui_icon(prop, ICON_RESTRICT_SELECT_OFF, 0);
RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL);
- prop= RNA_def_property(srna, "display_hidden", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_hidden", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "filterflag", ADS_FILTER_INCL_HIDDEN);
RNA_def_property_ui_text(prop, "Display Hidden", "Include channels from objects/bone that aren't visible");
RNA_def_property_ui_icon(prop, ICON_GHOST_ENABLED, 0);
RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL);
/* Object Group Filtering Settings */
- prop= RNA_def_property(srna, "only_group_objects", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_only_group_objects", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "filterflag", ADS_FILTER_ONLYOBGROUP);
RNA_def_property_ui_text(prop, "Only Objects in Group", "Only include channels from Objects in the specified Group");
RNA_def_property_ui_icon(prop, ICON_GROUP, 0);
RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL);
- prop= RNA_def_property(srna, "filtering_group", PROP_POINTER, PROP_NONE);
+ prop= RNA_def_property(srna, "filter_group", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "filter_grp");
RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Filtering Group", "Group that included Object should be a member of");
RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL);
/* NLA Specific Settings */
- prop= RNA_def_property(srna, "include_missing_nla", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_missing_nla", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NLA_NOACT);
RNA_def_property_ui_text(prop, "Include Missing NLA", "Include Animation Data blocks with no NLA data. (NLA Editor only)");
RNA_def_property_ui_icon(prop, ICON_ACTION, 0);
RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL);
/* Summary Settings (DopeSheet editors only) */
- prop= RNA_def_property(srna, "display_summary", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_summary", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "filterflag", ADS_FILTER_SUMMARY);
RNA_def_property_ui_text(prop, "Display Summary", "Display an additional 'summary' line. (DopeSheet Editors only)");
RNA_def_property_ui_icon(prop, ICON_BORDERMOVE, 0);
RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL);
- prop= RNA_def_property(srna, "collapse_summary", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "flag", ADS_FLAG_SUMMARY_COLLAPSED);
+ prop= RNA_def_property(srna, "show_expanded_summary", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", ADS_FLAG_SUMMARY_COLLAPSED);
RNA_def_property_ui_text(prop, "Collapse Summary", "Collapse summary when shown, so all other channels get hidden. (DopeSheet Editors Only)");
RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL);
/* General DataType Filtering Settings */
- prop= RNA_def_property(srna, "display_transforms", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_transforms", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOOBJ);
RNA_def_property_ui_text(prop, "Display Transforms", "Include visualization of Object-level Animation data (mostly Transforms)");
RNA_def_property_ui_icon(prop, ICON_MANIPUL, 0); // XXX?
RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL);
- prop= RNA_def_property(srna, "display_shapekeys", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_shapekeys", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOSHAPEKEYS);
RNA_def_property_ui_text(prop, "Display Shapekeys", "Include visualization of ShapeKey related Animation data");
RNA_def_property_ui_icon(prop, ICON_SHAPEKEY_DATA, 0);
RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL);
- prop= RNA_def_property(srna, "display_mesh", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_meshes", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOMESH);
RNA_def_property_ui_text(prop, "Display Meshes", "Include visualization of Mesh related Animation data");
RNA_def_property_ui_icon(prop, ICON_MESH_DATA, 0);
RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL);
- prop= RNA_def_property(srna, "display_camera", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_cameras", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOCAM);
RNA_def_property_ui_text(prop, "Display Camera", "Include visualization of Camera related Animation data");
RNA_def_property_ui_icon(prop, ICON_CAMERA_DATA, 0);
RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL);
- prop= RNA_def_property(srna, "display_material", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_materials", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOMAT);
RNA_def_property_ui_text(prop, "Display Material", "Include visualization of Material related Animation data");
RNA_def_property_ui_icon(prop, ICON_MATERIAL_DATA, 0);
RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL);
- prop= RNA_def_property(srna, "display_lamp", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_lamps", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOLAM);
RNA_def_property_ui_text(prop, "Display Lamp", "Include visualization of Lamp related Animation data");
RNA_def_property_ui_icon(prop, ICON_LAMP_DATA, 0);
RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL);
- prop= RNA_def_property(srna, "display_texture", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_textures", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOTEX);
RNA_def_property_ui_text(prop, "Display Texture", "Include visualization of Texture related Animation data");
RNA_def_property_ui_icon(prop, ICON_TEXTURE_DATA, 0);
RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL);
- prop= RNA_def_property(srna, "display_curve", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_curves", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOCUR);
RNA_def_property_ui_text(prop, "Display Curve", "Include visualization of Curve related Animation data");
RNA_def_property_ui_icon(prop, ICON_CURVE_DATA, 0);
RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL);
- prop= RNA_def_property(srna, "display_world", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_worlds", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOWOR);
RNA_def_property_ui_text(prop, "Display World", "Include visualization of World related Animation data");
RNA_def_property_ui_icon(prop, ICON_WORLD_DATA, 0);
RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL);
- prop= RNA_def_property(srna, "display_scene", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_scenes", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOSCE);
RNA_def_property_ui_text(prop, "Display Scene", "Include visualization of Scene related Animation data");
RNA_def_property_ui_icon(prop, ICON_SCENE_DATA, 0);
RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL);
- prop= RNA_def_property(srna, "display_particle", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_particles", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOPART);
RNA_def_property_ui_text(prop, "Display Particle", "Include visualization of Particle related Animation data");
RNA_def_property_ui_icon(prop, ICON_PARTICLE_DATA, 0);
RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL);
- prop= RNA_def_property(srna, "display_metaball", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_metaballs", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOMBA);
RNA_def_property_ui_text(prop, "Display Metaball", "Include visualization of Metaball related Animation data");
RNA_def_property_ui_icon(prop, ICON_META_DATA, 0);
RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL);
- prop= RNA_def_property(srna, "display_armature", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_armatures", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NOARM);
RNA_def_property_ui_text(prop, "Display Armature", "Include visualization of Armature related Animation data");
RNA_def_property_ui_icon(prop, ICON_ARMATURE_DATA, 0);
RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL);
- prop= RNA_def_property(srna, "display_node", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_nodes", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "filterflag", ADS_FILTER_NONTREE);
RNA_def_property_ui_text(prop, "Display Node", "Include visualization of Node related Animation data");
RNA_def_property_ui_icon(prop, ICON_NODETREE, 0);
@@ -337,7 +337,7 @@ static void rna_def_action_group(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Lock", "Action Group is locked");
RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL);
- prop= RNA_def_property(srna, "expanded", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_expanded", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", AGRP_EXPANDED);
RNA_def_property_ui_text(prop, "Expanded", "Action Group is expanded");
RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL);
diff --git a/source/blender/makesrna/intern/rna_actuator.c b/source/blender/makesrna/intern/rna_actuator.c
index f5145d86270..a4becb87e28 100644
--- a/source/blender/makesrna/intern/rna_actuator.c
+++ b/source/blender/makesrna/intern/rna_actuator.c
@@ -70,7 +70,7 @@ static StructRNA* rna_Actuator_refine(struct PointerRNA *ptr)
case ACT_OBJECT:
return &RNA_ObjectActuator;
case ACT_IPO:
- return &RNA_FcurveActuator;
+ return &RNA_FCurveActuator;
case ACT_CAMERA:
return &RNA_CameraActuator;
case ACT_SOUND:
@@ -285,7 +285,7 @@ static void rna_ConstraintActuator_spring_set(struct PointerRNA *ptr, float valu
}
/* ConstraintActuator uses the same property for Material and Property.
- Therefore we need to clear the property when "detect_material" mode changes */
+ Therefore we need to clear the property when "use_material_detect" mode changes */
static void rna_Actuator_constraint_detect_material_set(struct PointerRNA *ptr, int value)
{
bActuator *act = (bActuator*)ptr->data;
@@ -476,13 +476,13 @@ void rna_def_actuator(BlenderRNA *brna)
RNA_def_property_enum_funcs(prop, NULL, "rna_Actuator_type_set", "rna_Actuator_type_itemf");
RNA_def_property_ui_text(prop, "Type", "");
- prop= RNA_def_property(srna, "pinned", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "pin", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ACT_PIN);
RNA_def_property_ui_text(prop, "Pinned", "Display when not linked to a visible states controller");
RNA_def_property_ui_icon(prop, ICON_UNPINNED, 1);
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "expanded", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_expanded", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ACT_SHOW);
RNA_def_property_ui_text(prop, "Expanded", "Set actuator expanded in the user interface");
RNA_def_property_ui_icon(prop, ICON_TRIA_RIGHT, 1);
@@ -510,7 +510,7 @@ static void rna_def_action_actuator(BlenderRNA *brna)
RNA_def_struct_ui_text(srna, "Action Actuator", "Actuator to control the object movement");
RNA_def_struct_sdna_from(srna, "bActionActuator", "data");
- prop= RNA_def_property(srna, "mode", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "play_mode", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "type");
RNA_def_property_enum_items(prop, prop_type_items);
RNA_def_property_ui_text(prop, "Action type", "Action playback type");
@@ -525,7 +525,7 @@ static void rna_def_action_actuator(BlenderRNA *brna)
RNA_def_property_pointer_funcs(prop, NULL, "rna_Actuator_action_action_set", NULL, NULL);
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "continue_last_frame", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_continue_last_frame", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "end_reset", 1);
RNA_def_property_ui_text(prop, "Continue", "Restore last frame when switching on/off, otherwise play from the start each time");
RNA_def_property_update(prop, NC_LOGIC, NULL);
@@ -547,7 +547,8 @@ static void rna_def_action_actuator(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "End frame", "");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "blendin", PROP_INT, PROP_NONE);
+ prop= RNA_def_property(srna, "frame_blend_in", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "blendin");
RNA_def_property_range(prop, 0, 32767);
RNA_def_property_ui_text(prop, "Blendin", "Number of frames of motion blending");
RNA_def_property_update(prop, NC_LOGIC, NULL);
@@ -661,14 +662,14 @@ static void rna_def_object_actuator(BlenderRNA *brna)
RNA_def_property_update(prop, NC_LOGIC, NULL);
/* floats 3 Arrays*/
- prop= RNA_def_property(srna, "loc", PROP_FLOAT, PROP_XYZ);
+ prop= RNA_def_property(srna, "offset_location", PROP_FLOAT, PROP_XYZ);
RNA_def_property_float_sdna(prop, NULL, "dloc");
RNA_def_property_array(prop, 3);
RNA_def_property_ui_range(prop, -10000.0, 10000.0, 10, 2);
RNA_def_property_ui_text(prop, "Loc", "Sets the location");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "rot", PROP_FLOAT, PROP_XYZ);
+ prop= RNA_def_property(srna, "offset_rotation", PROP_FLOAT, PROP_XYZ);
RNA_def_property_float_sdna(prop, NULL, "drot");
RNA_def_property_array(prop, 3);
RNA_def_property_ui_range(prop, -10000.0, 10000.0, 10, 2);
@@ -704,52 +705,52 @@ static void rna_def_object_actuator(BlenderRNA *brna)
RNA_def_property_update(prop, NC_LOGIC, NULL);
/* booleans */
- prop= RNA_def_property(srna, "local_location", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_local_location", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ACT_DLOC_LOCAL);
RNA_def_property_ui_text(prop, "L", "Location is defined in local coordinates");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "local_rotation", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_local_rotation", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ACT_DROT_LOCAL);
RNA_def_property_ui_text(prop, "L", "Rotation is defined in local coordinates");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "local_force", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_local_force", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ACT_FORCE_LOCAL);
RNA_def_property_ui_text(prop, "L", "Force is defined in local coordinates");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "local_torque", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_local_torque", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ACT_TORQUE_LOCAL);
RNA_def_property_ui_text(prop, "L", "Torque is defined in local coordinates");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "local_linear_velocity", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_local_linear_velocity", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ACT_LIN_VEL_LOCAL);
RNA_def_property_ui_text(prop, "L", "Velocity is defined in local coordinates");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "local_angular_velocity", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_local_angular_velocity", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ACT_ANG_VEL_LOCAL);
RNA_def_property_ui_text(prop, "L", "Angular velocity is defined in local coordinates");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "add_linear_velocity", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_add_linear_velocity", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ACT_ADD_LIN_VEL);
RNA_def_property_ui_text(prop, "Add", "Toggles between ADD and SET linV");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "servo_limit_x", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_servo_limit_x", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ACT_SERVO_LIMIT_X);
RNA_def_property_ui_text(prop, "X", "Set limit to force along the X axis");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "servo_limit_y", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_servo_limit_y", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ACT_SERVO_LIMIT_Y);
RNA_def_property_ui_text(prop, "Y", "Set limit to force along the Y axis");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "servo_limit_z", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_servo_limit_z", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ACT_SERVO_LIMIT_Z);
RNA_def_property_ui_text(prop, "Z", "Set limit to force along the Z axis");
RNA_def_property_update(prop, NC_LOGIC, NULL);
@@ -770,7 +771,7 @@ static void rna_def_fcurve_actuator(BlenderRNA *brna)
{ACT_IPO_FROM_PROP, "PROP", 0, "Property", ""},
{0, NULL, 0, NULL, NULL}};
- srna= RNA_def_struct(brna, "FcurveActuator", "Actuator");
+ srna= RNA_def_struct(brna, "FCurveActuator", "Actuator");
RNA_def_struct_ui_text(srna, "F-Curve Actuator", "Actuator to animate the object");
RNA_def_struct_sdna_from(srna, "bIpoActuator", "data");
@@ -802,24 +803,24 @@ static void rna_def_fcurve_actuator(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Frame Property", "Assign the action's current frame number to this property");
/* booleans */
- prop= RNA_def_property(srna, "add", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_additive", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ACT_IPOADD);
RNA_def_property_boolean_funcs(prop, NULL, "rna_FcurveActuator_add_set");
RNA_def_property_ui_text(prop, "Add", "F-Curve is added to the current loc/rot/scale in global or local coordinate according to Local flag");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "force", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_force", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ACT_IPOFORCE);
RNA_def_property_boolean_funcs(prop, NULL, "rna_FcurveActuator_force_set");
RNA_def_property_ui_text(prop, "Force", "Apply F-Curve as a global or local force depending on the local option (dynamic objects only)");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "local", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_local", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ACT_IPOLOCAL);
RNA_def_property_ui_text(prop, "L", "Let the F-Curve act in local coordinates, used in Force and Add mode");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "child", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "apply_to_children", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ACT_IPOCHILD);
RNA_def_property_ui_text(prop, "Child", "Update F-Curve on all children Objects as well");
RNA_def_property_update(prop, NC_LOGIC, NULL);
@@ -913,25 +914,25 @@ static void rna_def_sound_actuator(BlenderRNA *brna)
RNA_def_property_update(prop, NC_LOGIC, NULL);
/* floats - 3D Parameters */
- prop= RNA_def_property(srna, "minimum_gain_3d", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "gain_3d_min", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "sound3D.min_gain");
RNA_def_property_ui_range(prop, 0.0, 1.0, 1, 2);
RNA_def_property_ui_text(prop, "Minimum Gain", "The minimum gain of the sound, no matter how far it is away");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "maximum_gain_3d", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "gain_3d_max", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "sound3D.max_gain");
RNA_def_property_ui_range(prop, 0.0, 1.0, 1, 2);
RNA_def_property_ui_text(prop, "Maximum Gain", "The maximum gain of the sound, no matter how near it is");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "reference_distance_3d", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "distance_3d_reference", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "sound3D.reference_distance");
RNA_def_property_ui_range(prop, 0.0, FLT_MAX, 1, 2);
RNA_def_property_ui_text(prop, "Reference Distance", "The distance where the sound has a gain of 1.0");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "max_distance_3d", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "distance_3d_max", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "sound3D.max_distance");
RNA_def_property_ui_range(prop, 0.0, FLT_MAX, 1, 2);
RNA_def_property_ui_text(prop, "Maximum Distance", "The maximum distance at which you can hear the sound");
@@ -962,7 +963,7 @@ static void rna_def_sound_actuator(BlenderRNA *brna)
RNA_def_property_update(prop, NC_LOGIC, NULL);
/* booleans */
- prop= RNA_def_property(srna, "enable_sound_3d", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_sound_3d", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ACT_SND_3D_SOUND);
RNA_def_property_ui_text(prop, "3D Sound", "Enable/Disable 3D Sound");
RNA_def_property_update(prop, NC_LOGIC, NULL);
@@ -1132,20 +1133,20 @@ static void rna_def_constraint_actuator(BlenderRNA *brna)
RNA_def_property_update(prop, NC_LOGIC, NULL);
/* ACT_CONST_TYPE_ORI */
- prop= RNA_def_property(srna, "max_rotation", PROP_FLOAT, PROP_XYZ);
+ prop= RNA_def_property(srna, "rotation_max", PROP_FLOAT, PROP_XYZ);
RNA_def_property_float_sdna(prop, NULL, "maxrot");
RNA_def_property_array(prop, 3);
RNA_def_property_ui_range(prop, -2000.0, 2000.0, 10, 2);
RNA_def_property_ui_text(prop, "Reference Direction", "Reference Direction");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "min_angle", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "angle_min", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "minloc[0]");
RNA_def_property_ui_range(prop, 0.0, 180.0, 10, 2);
RNA_def_property_ui_text(prop, "Min Angle", "Minimum angle (in degree) to maintain with target direction. No correction is done if angle with target direction is between min and max");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "max_angle", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "angle_max", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "maxloc[0]");
RNA_def_property_ui_range(prop, 0.0, 180.0, 10, 2);
RNA_def_property_ui_text(prop, "Max Angle", "Maximum angle (in degree) allowed with target direction. No correction is done if angle with target direction is between min and max");
@@ -1171,39 +1172,39 @@ static void rna_def_constraint_actuator(BlenderRNA *brna)
RNA_def_property_update(prop, NC_LOGIC, NULL);
/* booleans */
- prop= RNA_def_property(srna, "force_distance", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_force_distance", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ACT_CONST_DISTANCE);
RNA_def_property_ui_text(prop, "Force Distance", "Force distance of object to point of impact of ray");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "local", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_local", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ACT_CONST_LOCAL);
RNA_def_property_ui_text(prop, "L", "Set ray along object's axis or global axis");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "normal", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_normal", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ACT_CONST_NORMAL);
RNA_def_property_ui_text(prop, "N", "Set object axis along (local axis) or parallel (global axis) to the normal at hit position");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "persistent", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_persistent", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ACT_CONST_PERMANENT);
RNA_def_property_ui_text(prop, "PER", "Persistent actuator: stays active even if ray does not reach target");
RNA_def_property_update(prop, NC_LOGIC, NULL);
//XXX to use an enum instead of a flag if possible
- prop= RNA_def_property(srna, "detect_material", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_material_detect", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ACT_CONST_MATERIAL);
RNA_def_property_ui_text(prop, "M/P", "Detect material instead of property");
RNA_def_property_boolean_funcs(prop, NULL, "rna_Actuator_constraint_detect_material_set");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "fh_paralel_axis", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_fh_paralel_axis", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ACT_CONST_DOROTFH);
RNA_def_property_ui_text(prop, "Rot Fh", "Keep object axis parallel to normal");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "fh_normal", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_fh_normal", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ACT_CONST_NORMAL);
RNA_def_property_ui_text(prop, "N", "Add a horizontal spring force on slopes");
RNA_def_property_update(prop, NC_LOGIC, NULL);
@@ -1295,27 +1296,27 @@ static void rna_def_edit_object_actuator(BlenderRNA *brna)
RNA_def_property_update(prop, NC_LOGIC, NULL);
/* booleans */
- prop= RNA_def_property(srna, "local_linear_velocity", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_local_linear_velocity", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "localflag", ACT_EDOB_LOCAL_LINV);
RNA_def_property_ui_text(prop, "L", "Apply the transformation locally");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "local_angular_velocity", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_local_angular_velocity", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "localflag", ACT_EDOB_LOCAL_ANGV);
RNA_def_property_ui_text(prop, "L", "Apply the rotation locally");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "replace_display_mesh", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_replace_display_mesh", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ACT_EDOB_REPLACE_MESH_NOGFX);
RNA_def_property_ui_text(prop, "Gfx", "Replace the display mesh");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "replace_physics_mesh", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_replace_physics_mesh", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ACT_EDOB_REPLACE_MESH_PHYS);
RNA_def_property_ui_text(prop, "Phys", "Replace the physics mesh (triangle bounds only - compound shapes not supported)");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "enable_3d_tracking", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_3d_tracking", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ACT_TRACK_3D);
RNA_def_property_ui_text(prop, "3D", "Enable 3D tracking");
RNA_def_property_update(prop, NC_LOGIC, NULL);
@@ -1419,7 +1420,7 @@ static void rna_def_random_actuator(BlenderRNA *brna)
/* int_arg_1, int_arg_2, float_arg_1, float_arg_2 */
/* ACT_RANDOM_BOOL_CONST */
- prop= RNA_def_property(srna, "always_true", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_always_true", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "int_arg_1", 1);
RNA_def_property_ui_text(prop, "Always true", "Always false or always true");
RNA_def_property_update(prop, NC_LOGIC, NULL);
@@ -1557,8 +1558,8 @@ static void rna_def_game_actuator(BlenderRNA *brna)
{ACT_GAME_LOAD, "START", 0, "Start new game", ""},
{ACT_GAME_RESTART, "RESTART", 0, "Restart this game", ""},
{ACT_GAME_QUIT, "QUIT", 0, "Quit this game", ""},
- {ACT_GAME_SAVECFG, "SAVECFG", 0, "Save GameLogic.globalDict", ""},
- {ACT_GAME_LOADCFG, "LOADCFG", 0, "Load GameLogic.globalDict", ""},
+ {ACT_GAME_SAVECFG, "SAVECFG", 0, "Save bge.logic.globalDict", ""},
+ {ACT_GAME_LOADCFG, "LOADCFG", 0, "Load bge.logic.globalDict", ""},
{0, NULL, 0, NULL, NULL}};
srna= RNA_def_struct(brna, "GameActuator", "Actuator");
@@ -1587,17 +1588,17 @@ static void rna_def_visibility_actuator(BlenderRNA *brna)
RNA_def_struct_ui_text(srna, "Visibility Actuator", "Actuator to set visibility and occlusion of the object");
RNA_def_struct_sdna_from(srna, "bVisibilityActuator", "data");
- prop= RNA_def_property(srna, "visible", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_visible", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", ACT_VISIBILITY_INVISIBLE);
RNA_def_property_ui_text(prop, "Visible", "Set the objects visible. Initialized from the objects render restriction toggle (access in the outliner)");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "occlusion", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_occlusion", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ACT_VISIBILITY_OCCLUSION);
RNA_def_property_ui_text(prop, "Occlusion", "Set the object to occlude objects behind it. Initialized from the object type in physics button");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "children", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "apply_to_children", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ACT_VISIBILITY_RECURSIVE);
RNA_def_property_ui_text(prop, "Children", "Set all the children of this object to the same visibility/occlusion recursively");
RNA_def_property_update(prop, NC_LOGIC, NULL);
@@ -1657,7 +1658,7 @@ static void rna_def_twodfilter_actuator(BlenderRNA *brna)
RNA_def_property_update(prop, NC_LOGIC, NULL);
/* booleans */
- prop= RNA_def_property(srna, "enable_motion_blur", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_motion_blur", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", 1);
RNA_def_property_ui_text(prop, "Enable", "Enable/Disable Motion Blur");
RNA_def_property_update(prop, NC_LOGIC, NULL);
@@ -1691,12 +1692,12 @@ static void rna_def_parent_actuator(BlenderRNA *brna)
RNA_def_property_update(prop, NC_LOGIC, NULL);
/* booleans */
- prop= RNA_def_property(srna, "compound", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_compound", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ACT_PARENT_COMPOUND);
RNA_def_property_ui_text(prop, "Compound", "Add this object shape to the parent shape (only if the parent shape is already compound)");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "ghost", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_ghost", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ACT_PARENT_GHOST);
RNA_def_property_ui_text(prop, "Ghost", "Make this object ghost while parented (only if not compound)");
RNA_def_property_update(prop, NC_LOGIC, NULL);
@@ -1737,7 +1738,7 @@ static void rna_def_shape_action_actuator(BlenderRNA *brna)
RNA_def_property_pointer_funcs(prop, NULL, "rna_Actuator_action_action_set", NULL, NULL);
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "continue_last_frame", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_continue_last_frame", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "end_reset", 1);
RNA_def_property_ui_text(prop, "Continue", "Restore last frame when switching on/off, otherwise play from the start each time");
RNA_def_property_update(prop, NC_LOGIC, NULL);
@@ -1759,7 +1760,8 @@ static void rna_def_shape_action_actuator(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "End frame", "");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "blendin", PROP_INT, PROP_NONE);
+ prop= RNA_def_property(srna, "frame_blend_in", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "blendin");
RNA_def_property_range(prop, 0, 32767);
RNA_def_property_ui_text(prop, "Blendin", "Number of frames of motion blending");
RNA_def_property_update(prop, NC_LOGIC, NULL);
@@ -1805,7 +1807,7 @@ static void rna_def_state_actuator(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Operation", "Select the bit operation on object state mask");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "state", PROP_BOOLEAN, PROP_LAYER_MEMBER);
+ prop= RNA_def_property(srna, "states", PROP_BOOLEAN, PROP_LAYER_MEMBER);
RNA_def_property_boolean_sdna(prop, NULL, "mask", 1);
RNA_def_property_array(prop, OB_MAX_STATES);
RNA_def_property_ui_text(prop, "State", "");
diff --git a/source/blender/makesrna/intern/rna_animation.c b/source/blender/makesrna/intern/rna_animation.c
index f4b6d7ded0f..87a002db828 100644
--- a/source/blender/makesrna/intern/rna_animation.c
+++ b/source/blender/makesrna/intern/rna_animation.c
@@ -327,7 +327,7 @@ static PointerRNA rna_KeyingSet_typeinfo_get(PointerRNA *ptr)
static KS_Path *rna_KeyingSet_paths_add(KeyingSet *keyingset, ReportList *reports,
- ID *id, char rna_path[], int index, int grouping_method, char group_name[])
+ ID *id, char rna_path[], int index, int group_method, char group_name[])
{
KS_Path *ksp = NULL;
short flag = 0;
@@ -340,7 +340,7 @@ static KS_Path *rna_KeyingSet_paths_add(KeyingSet *keyingset, ReportList *report
/* if data is valid, call the API function for this */
if (keyingset) {
- ksp= BKE_keyingset_add_path(keyingset, id, group_name, rna_path, index, flag, grouping_method);
+ ksp= BKE_keyingset_add_path(keyingset, id, group_name, rna_path, index, flag, group_method);
keyingset->active_path= BLI_countlist(&keyingset->paths);
}
else {
@@ -395,17 +395,17 @@ static void rna_def_common_keying_flags(StructRNA *srna, short reg)
{
PropertyRNA *prop;
- prop= RNA_def_property(srna, "insertkey_needed", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_insertkey_needed", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "keyingflag", INSERTKEY_NEEDED);
RNA_def_property_ui_text(prop, "Insert Keyframes - Only Needed", "Only insert keyframes where they're needed in the relevant F-Curves");
if (reg) RNA_def_property_flag(prop, PROP_REGISTER_OPTIONAL);
- prop= RNA_def_property(srna, "insertkey_visual", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_insertkey_visual", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "keyingflag", INSERTKEY_MATRIX);
RNA_def_property_ui_text(prop, "Insert Keyframes - Visual", "Insert keyframes based on 'visual transforms'");
if (reg) RNA_def_property_flag(prop, PROP_REGISTER_OPTIONAL);
- prop= RNA_def_property(srna, "insertkey_xyz_to_rgb", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_insertkey_xyz_to_rgb", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "keyingflag", INSERTKEY_XYZ2RGB);
RNA_def_property_ui_text(prop, "F-Curve Colors - XYZ to RGB", "Color for newly added transformation F-Curves (Location, Rotation, Scale) and also Color is based on the transform axis");
if (reg) RNA_def_property_flag(prop, PROP_REGISTER_OPTIONAL);
@@ -504,7 +504,7 @@ static void rna_def_keyingset_path(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Group Name", "Name of Action Group to assign setting(s) for this path to");
/* Grouping */
- prop= RNA_def_property(srna, "grouping", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "group_method", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "groupmode");
RNA_def_property_enum_items(prop, keyingset_path_grouping_items);
RNA_def_property_ui_text(prop, "Grouping Method", "Method used to define which Group-name to use");
@@ -519,7 +519,7 @@ static void rna_def_keyingset_path(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "RNA Array Index", "Index to the specific setting if applicable");
/* Flags */
- prop= RNA_def_property(srna, "entire_array", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_entire_array", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", KSP_FLAG_WHOLE_ARRAY);
RNA_def_property_ui_text(prop, "Entire Array", "When an 'array/vector' type is chosen (Location, Rotation, Color, etc.), entire array is to be used");
@@ -559,7 +559,7 @@ static void rna_def_keyingset_paths(BlenderRNA *brna, PropertyRNA *cprop)
/* index (defaults to -1 for entire array) */
parm=RNA_def_int(func, "index", -1, -1, INT_MAX, "Index", "The index of the destination property (i.e. axis of Location/Rotation/etc.), or -1 for the entire array.", 0, INT_MAX);
/* grouping */
- parm=RNA_def_enum(func, "grouping_method", keyingset_path_grouping_items, KSP_GROUP_KSNAME, "Grouping Method", "Method used to define which Group-name to use.");
+ parm=RNA_def_enum(func, "group_method", keyingset_path_grouping_items, KSP_GROUP_KSNAME, "Grouping Method", "Method used to define which Group-name to use.");
parm=RNA_def_string(func, "group_name", "", 64, "Group Name", "Name of Action Group to assign destination to (only if grouping mode is to use this name).");
@@ -618,7 +618,8 @@ static void rna_def_keyingset(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Active Path Index", "Current Keying Set index");
/* Flags */
- prop= RNA_def_property(srna, "absolute", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "is_path_absolute", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", KEYINGSET_ABSOLUTE);
RNA_def_property_ui_text(prop, "Absolute", "Keying Set defines specific paths/settings to be keyframed (i.e. is not reliant on context info)");
@@ -670,7 +671,7 @@ void rna_def_animdata(BlenderRNA *brna)
RNA_def_property_enum_items(prop, nla_mode_extend_items);
RNA_def_property_ui_text(prop, "Action Extrapolation", "Action to take for gaps past the Active Action's range (when evaluating with NLA)");
- prop= RNA_def_property(srna, "action_blending", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "action_blend_type", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "act_blendmode");
RNA_def_property_enum_items(prop, nla_mode_blend_items);
RNA_def_property_ui_text(prop, "Action Blending", "Method used for combining Active Action's result with result of NLA stack");
@@ -688,7 +689,7 @@ void rna_def_animdata(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Drivers", "The Drivers/Expressions for this datablock");
/* General Settings */
- prop= RNA_def_property(srna, "nla_enabled", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_nla", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", ADT_NLA_EVAL_OFF);
RNA_def_property_ui_text(prop, "NLA Evaluation Enabled", "NLA stack is evaluated when evaluating this block");
}
diff --git a/source/blender/makesrna/intern/rna_animviz.c b/source/blender/makesrna/intern/rna_animviz.c
index 1b049ced767..1fcd53d5d0f 100644
--- a/source/blender/makesrna/intern/rna_animviz.c
+++ b/source/blender/makesrna/intern/rna_animviz.c
@@ -145,7 +145,7 @@ static void rna_def_animviz_motion_path(BlenderRNA *brna)
RNA_def_property_clear_flag(prop, PROP_EDITABLE); // xxx
RNA_def_property_ui_text(prop, "Use Bone Heads", "For PoseBone paths, use the bone head location when calculating this path");
- prop= RNA_def_property(srna, "editing", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "is_modified", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", MOTIONPATH_FLAG_EDIT);
RNA_def_property_ui_text(prop, "Edit Path", "Path is being edited");
}
@@ -178,7 +178,7 @@ static void rna_def_animviz_ghosts(BlenderRNA *brna)
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); /* XXX since this is only for 3d-view drawing */
/* Settings */
- prop= RNA_def_property(srna, "only_selected", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_only_selected", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "ghost_flag", GHOST_FLAG_ONLYSEL);
RNA_def_property_ui_text(prop, "On Selected Bones Only", "For Pose-Mode drawing, only draw ghosts for selected bones");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); /* XXX since this is only for 3d-view drawing */
@@ -203,13 +203,13 @@ static void rna_def_animviz_ghosts(BlenderRNA *brna)
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); /* XXX since this is only for 3d-view drawing */
/* Around Current Ranges */
- prop= RNA_def_property(srna, "before_current", PROP_INT, PROP_TIME);
+ prop= RNA_def_property(srna, "frame_before", PROP_INT, PROP_TIME);
RNA_def_property_int_sdna(prop, NULL, "ghost_bc");
RNA_def_property_range(prop, 0, 30);
RNA_def_property_ui_text(prop, "Before Current", "Number of frames to show before the current frame (only for 'Around Current Frame' Onion-skinning method)");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); /* XXX since this is only for 3d-view drawing */
- prop= RNA_def_property(srna, "after_current", PROP_INT, PROP_TIME);
+ prop= RNA_def_property(srna, "frame_after", PROP_INT, PROP_TIME);
RNA_def_property_int_sdna(prop, NULL, "ghost_ac");
RNA_def_property_range(prop, 0, 30);
RNA_def_property_ui_text(prop, "After Current", "Number of frames to show after the current frame (only for 'Around Current Frame' Onion-skinning method)");
@@ -254,7 +254,7 @@ static void rna_def_animviz_paths(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Show Frame Numbers", "Show frame numbers on Motion Paths");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); /* XXX since this is only for 3d-view drawing */
- prop= RNA_def_property(srna, "highlight_keyframes", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_keyframe_highlight", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "path_viewflag", MOTIONPATH_VIEW_KFRAS);
RNA_def_property_ui_text(prop, "Highlight Keyframes", "Emphasize position of keyframes on Motion Paths");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); /* XXX since this is only for 3d-view drawing */
@@ -264,7 +264,7 @@ static void rna_def_animviz_paths(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Show Keyframe Numbers", "Show frame numbers of Keyframes on Motion Paths");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); /* XXX since this is only for 3d-view drawing */
- prop= RNA_def_property(srna, "search_all_action_keyframes", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_keyframe_action_all", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "path_viewflag", MOTIONPATH_VIEW_KFACT);
RNA_def_property_ui_text(prop, "All Action Keyframes", "For bone motion paths, search whole Action for keyframes instead of in group with matching name only (is slower)");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); /* XXX since this is only for 3d-view drawing */
@@ -290,13 +290,13 @@ static void rna_def_animviz_paths(BlenderRNA *brna)
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); /* XXX since this is only for 3d-view drawing */
/* Around Current Ranges */
- prop= RNA_def_property(srna, "before_current", PROP_INT, PROP_TIME);
+ prop= RNA_def_property(srna, "frame_before", PROP_INT, PROP_TIME);
RNA_def_property_int_sdna(prop, NULL, "path_bc");
RNA_def_property_range(prop, 1, MAXFRAMEF/2);
RNA_def_property_ui_text(prop, "Before Current", "Number of frames to show before the current frame (only for 'Around Current Frame' Onion-skinning method)");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL); /* XXX since this is only for 3d-view drawing */
- prop= RNA_def_property(srna, "after_current", PROP_INT, PROP_TIME);
+ prop= RNA_def_property(srna, "frame_after", PROP_INT, PROP_TIME);
RNA_def_property_int_sdna(prop, NULL, "path_ac");
RNA_def_property_range(prop, 1, MAXFRAMEF/2);
RNA_def_property_ui_text(prop, "After Current", "Number of frames to show after the current frame (only for 'Around Current Frame' Onion-skinning method)");
@@ -325,14 +325,14 @@ static void rna_def_animviz(BlenderRNA *brna)
RNA_def_struct_ui_text(srna, "Animation Visualisation", "Settings for the visualisation of motion");
/* onion-skinning settings (nested struct) */
- prop= RNA_def_property(srna, "onion_skinning", PROP_POINTER, PROP_NONE);
+ prop= RNA_def_property(srna, "onion_skin_frames", PROP_POINTER, PROP_NONE);
RNA_def_property_flag(prop, PROP_NEVER_NULL);
RNA_def_property_struct_type(prop, "AnimVizOnionSkinning");
RNA_def_property_pointer_funcs(prop, "rna_AnimViz_onion_skinning_get", NULL, NULL, NULL);
RNA_def_property_ui_text(prop, "Onion Skinning", "Onion Skinning (ghosting) settings for visualisation");
/* motion path settings (nested struct) */
- prop= RNA_def_property(srna, "motion_paths", PROP_POINTER, PROP_NONE);
+ prop= RNA_def_property(srna, "motion_path", PROP_POINTER, PROP_NONE);
RNA_def_property_flag(prop, PROP_NEVER_NULL);
RNA_def_property_struct_type(prop, "AnimVizMotionPaths");
RNA_def_property_pointer_funcs(prop, "rna_AnimViz_motion_paths_get", NULL, NULL, NULL);
diff --git a/source/blender/makesrna/intern/rna_armature.c b/source/blender/makesrna/intern/rna_armature.c
index 91a78f1a01a..8b21fd2c80a 100644
--- a/source/blender/makesrna/intern/rna_armature.c
+++ b/source/blender/makesrna/intern/rna_armature.c
@@ -123,7 +123,7 @@ static char *rna_Bone_path(PointerRNA *ptr)
return BLI_sprintfN("bones[\"%s\"]", ((Bone*)ptr->data)->name);
}
-static IDProperty *rna_Bone_idproperties(PointerRNA *ptr, int create)
+static IDProperty *rna_Bone_idprops(PointerRNA *ptr, int create)
{
Bone *bone= ptr->data;
@@ -135,7 +135,7 @@ static IDProperty *rna_Bone_idproperties(PointerRNA *ptr, int create)
return bone->prop;
}
-static IDProperty *rna_EditBone_idproperties(PointerRNA *ptr, int create)
+static IDProperty *rna_EditBone_idprops(PointerRNA *ptr, int create)
{
EditBone *ebone= ptr->data;
@@ -393,7 +393,7 @@ static void rna_def_bone_common(StructRNA *srna, int editbone)
RNA_def_property_update(prop, 0, "rna_Armature_redraw_data");
/* flags */
- prop= RNA_def_property(srna, "layer", PROP_BOOLEAN, PROP_LAYER_MEMBER);
+ prop= RNA_def_property(srna, "layers", PROP_BOOLEAN, PROP_LAYER_MEMBER);
RNA_def_property_boolean_sdna(prop, NULL, "layer", 1);
RNA_def_property_array(prop, 32);
if(editbone) RNA_def_property_boolean_funcs(prop, NULL, "rna_EditBone_layer_set");
@@ -401,44 +401,44 @@ static void rna_def_bone_common(StructRNA *srna, int editbone)
RNA_def_property_ui_text(prop, "Layers", "Layers bone exists in");
RNA_def_property_update(prop, 0, "rna_Armature_redraw_data");
- prop= RNA_def_property(srna, "connected", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_connect", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", BONE_CONNECTED);
if(editbone) RNA_def_property_boolean_funcs(prop, NULL, "rna_EditBone_connected_set");
else RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Connected", "When bone has a parent, bone's head is struck to the parent's tail");
RNA_def_property_update(prop, 0, "rna_Armature_update_data");
- prop= RNA_def_property(srna, "hinge", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_hinge", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", BONE_HINGE);
RNA_def_property_ui_text(prop, "Inherit Rotation", "Bone inherits rotation or scale from parent bone");
RNA_def_property_update(prop, 0, "rna_Armature_update_data");
- prop= RNA_def_property(srna, "multiply_vertexgroup_with_envelope", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_envelope_multiply", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", BONE_MULT_VG_ENV);
RNA_def_property_ui_text(prop, "Multiply Vertex Group with Envelope", "When deforming bone, multiply effects of Vertex Group weights with Envelope influence");
RNA_def_property_update(prop, 0, "rna_Armature_update_data");
- prop= RNA_def_property(srna, "deform", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_deform", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", BONE_NO_DEFORM);
RNA_def_property_ui_text(prop, "Deform", "Bone does not deform any geometry");
RNA_def_property_update(prop, 0, "rna_Armature_update_data");
- prop= RNA_def_property(srna, "inherit_scale", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_inherit_scale", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_ui_text(prop, "Inherit Scale", "Bone inherits scaling from parent bone");
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", BONE_NO_SCALE);
RNA_def_property_update(prop, 0, "rna_Armature_update_data");
- prop= RNA_def_property(srna, "local_location", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_local_location", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_ui_text(prop, "Local Location", "Bone location is set in local space");
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", BONE_NO_LOCAL_LOCATION);
RNA_def_property_update(prop, 0, "rna_Armature_update_data");
- prop= RNA_def_property(srna, "draw_wire", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_wire", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", BONE_DRAWWIRE);
RNA_def_property_ui_text(prop, "Draw Wire", "Bone is always drawn as Wireframe regardless of viewport draw mode. Useful for non-obstructive custom bone shapes");
RNA_def_property_update(prop, 0, "rna_Armature_redraw_data");
- prop= RNA_def_property(srna, "cyclic_offset", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_cyclic_offset", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", BONE_NO_CYCLICOFFSET);
RNA_def_property_ui_text(prop, "Cyclic Offset", "When bone doesn't have a parent, it receives cyclic offset effects");
RNA_def_property_update(prop, 0, "rna_Armature_update_data");
@@ -504,7 +504,7 @@ static void rna_def_bone(BlenderRNA *brna)
RNA_def_struct_ui_text(srna, "Bone", "Bone in an Armature datablock");
RNA_def_struct_ui_icon(srna, ICON_BONE_DATA);
RNA_def_struct_path_func(srna, "rna_Bone_path");
- RNA_def_struct_idproperties_func(srna, "rna_Bone_idproperties");
+ RNA_def_struct_idprops_func(srna, "rna_Bone_idprops");
/* pointers/collections */
/* parent (pointer) */
@@ -572,7 +572,7 @@ static void rna_def_edit_bone(BlenderRNA *brna)
srna= RNA_def_struct(brna, "EditBone", NULL);
RNA_def_struct_sdna(srna, "EditBone");
- RNA_def_struct_idproperties_func(srna, "rna_EditBone_idproperties");
+ RNA_def_struct_idprops_func(srna, "rna_EditBone_idprops");
RNA_def_struct_ui_text(srna, "Edit Bone", "Editmode bone in an Armature datablock");
RNA_def_struct_ui_icon(srna, ICON_BONE_DATA);
@@ -765,7 +765,8 @@ static void rna_def_armature(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Pose Position", "Show armature in binding pose or final posed state");
RNA_def_property_update(prop, 0, "rna_Armature_update_data");
- prop= RNA_def_property(srna, "drawtype", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "draw_type", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "drawtype");
RNA_def_property_enum_items(prop, prop_drawtype_items);
RNA_def_property_ui_text(prop, "Draw Type", "");
RNA_def_property_update(prop, 0, "rna_Armature_redraw_data");
@@ -782,7 +783,7 @@ static void rna_def_armature(BlenderRNA *brna)
/* Boolean values */
/* layer */
- prop= RNA_def_property(srna, "layer", PROP_BOOLEAN, PROP_LAYER_MEMBER);
+ prop= RNA_def_property(srna, "layers", PROP_BOOLEAN, PROP_LAYER_MEMBER);
RNA_def_property_boolean_sdna(prop, NULL, "layer", 1);
RNA_def_property_array(prop, 32);
RNA_def_property_ui_text(prop, "Visible Layers", "Armature layer visibility");
@@ -791,54 +792,54 @@ static void rna_def_armature(BlenderRNA *brna)
RNA_def_property_flag(prop, PROP_LIB_EXCEPTION);
/* layer protection */
- prop= RNA_def_property(srna, "layer_protection", PROP_BOOLEAN, PROP_LAYER);
+ prop= RNA_def_property(srna, "layers_protected", PROP_BOOLEAN, PROP_LAYER);
RNA_def_property_boolean_sdna(prop, NULL, "layer_protected", 1);
RNA_def_property_array(prop, 32);
RNA_def_property_ui_text(prop, "Layer Proxy Protection", "Protected layers in Proxy Instances are restored to Proxy settings on file reload and undo");
RNA_def_property_update(prop, 0, "rna_Armature_redraw_data");
/* flag */
- prop= RNA_def_property(srna, "draw_axes", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_axes", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ARM_DRAWAXES);
RNA_def_property_ui_text(prop, "Draw Axes", "Draw bone axes");
RNA_def_property_update(prop, 0, "rna_Armature_redraw_data");
RNA_def_property_flag(prop, PROP_LIB_EXCEPTION);
- prop= RNA_def_property(srna, "draw_names", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_names", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ARM_DRAWNAMES);
RNA_def_property_ui_text(prop, "Draw Names", "Draw bone names");
RNA_def_property_update(prop, 0, "rna_Armature_redraw_data");
RNA_def_property_flag(prop, PROP_LIB_EXCEPTION);
- prop= RNA_def_property(srna, "delay_deform", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_deform_delay", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ARM_DELAYDEFORM);
RNA_def_property_ui_text(prop, "Delay Deform", "Don't deform children when manipulating bones in Pose Mode");
RNA_def_property_update(prop, 0, "rna_Armature_update_data");
- prop= RNA_def_property(srna, "x_axis_mirror", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_mirror_x", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ARM_MIRROR_EDIT);
RNA_def_property_ui_text(prop, "X-Axis Mirror", "Apply changes to matching bone on opposite side of X-Axis");
RNA_def_property_update(prop, 0, "rna_Armature_redraw_data");
RNA_def_property_flag(prop, PROP_LIB_EXCEPTION);
- prop= RNA_def_property(srna, "auto_ik", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_auto_ik", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ARM_AUTO_IK);
RNA_def_property_ui_text(prop, "Auto IK", "Add temporaral IK constraints while grabbing bones in Pose Mode");
RNA_def_property_update(prop, 0, "rna_Armature_redraw_data");
RNA_def_property_flag(prop, PROP_LIB_EXCEPTION);
- prop= RNA_def_property(srna, "draw_custom_bone_shapes", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_bone_custom_shapes", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", ARM_NO_CUSTOM);
RNA_def_property_ui_text(prop, "Draw Custom Bone Shapes", "Draw bones with their custom shapes");
RNA_def_property_update(prop, 0, "rna_Armature_redraw_data");
- prop= RNA_def_property(srna, "draw_group_colors", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_group_colors", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ARM_COL_CUSTOM);
RNA_def_property_ui_text(prop, "Draw Bone Group Colors", "Draw bone group colors");
RNA_def_property_update(prop, 0, "rna_Armature_redraw_data");
// XXX depreceated ....... old animviz for armatures only
- prop= RNA_def_property(srna, "ghost_only_selected", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_only_ghost_selected", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ARM_GHOST_ONLYSEL);
RNA_def_property_ui_text(prop, "Draw Ghosts on Selected Bones Only", "");
RNA_def_property_update(prop, 0, "rna_Armature_redraw_data");
@@ -846,17 +847,17 @@ static void rna_def_armature(BlenderRNA *brna)
// XXX depreceated ....... old animviz for armatures only
/* deformflag */
- prop= RNA_def_property(srna, "deform_vertexgroups", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_deform_vertex_groups", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "deformflag", ARM_DEF_VGROUP);
RNA_def_property_ui_text(prop, "Deform Vertex Groups", "Enable Vertex Groups when defining deform");
RNA_def_property_update(prop, 0, "rna_Armature_update_data");
- prop= RNA_def_property(srna, "deform_envelope", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_deform_envelopes", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "deformflag", ARM_DEF_ENVELOPE);
RNA_def_property_ui_text(prop, "Deform Envelopes", "Enable Bone Envelopes when defining deform");
RNA_def_property_update(prop, 0, "rna_Armature_update_data");
- prop= RNA_def_property(srna, "deform_quaternion", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_deform_preserve_volume", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "deformflag", ARM_DEF_QUATERNION);
RNA_def_property_ui_text(prop, "Use Dual Quaternion Deformation", "Enable deform rotation with Quaternions");
RNA_def_property_update(prop, 0, "rna_Armature_update_data");
diff --git a/source/blender/makesrna/intern/rna_boid.c b/source/blender/makesrna/intern/rna_boid.c
index 5bc61eaa899..3afa135d079 100644
--- a/source/blender/makesrna/intern/rna_boid.c
+++ b/source/blender/makesrna/intern/rna_boid.c
@@ -238,7 +238,7 @@ static void rna_def_boidrule_goal(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Object", "Goal object");
RNA_def_property_update(prop, 0, "rna_Boids_reset_deps");
- prop= RNA_def_property(srna, "predict", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_predict", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "options", BRULE_GOAL_AVOID_PREDICT);
RNA_def_property_ui_text(prop, "Predict", "Predict target movement");
RNA_def_property_update(prop, 0, "rna_Boids_reset");
@@ -259,7 +259,7 @@ static void rna_def_boidrule_avoid(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Object", "Object to avoid");
RNA_def_property_update(prop, 0, "rna_Boids_reset_deps");
- prop= RNA_def_property(srna, "predict", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_predict", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "options", BRULE_GOAL_AVOID_PREDICT);
RNA_def_property_ui_text(prop, "Predict", "Predict target movement");
RNA_def_property_update(prop, 0, "rna_Boids_reset");
@@ -278,12 +278,12 @@ static void rna_def_boidrule_avoid_collision(BlenderRNA *brna)
srna= RNA_def_struct(brna, "BoidRuleAvoidCollision", "BoidRule");
RNA_def_struct_ui_text(srna, "Avoid Collision", "");
- prop= RNA_def_property(srna, "boids", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_avoid", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "options", BRULE_ACOLL_WITH_BOIDS);
RNA_def_property_ui_text(prop, "Boids", "Avoid collision with other boids");
RNA_def_property_update(prop, 0, "rna_Boids_reset");
- prop= RNA_def_property(srna, "deflectors", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_avoid_collision", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "options", BRULE_ACOLL_WITH_DEFLECTORS);
RNA_def_property_ui_text(prop, "Deflectors", "Avoid collision with deflector objects");
RNA_def_property_update(prop, 0, "rna_Boids_reset");
@@ -313,12 +313,13 @@ static void rna_def_boidrule_follow_leader(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Distance", "Distance behind leader to follow");
RNA_def_property_update(prop, 0, "rna_Boids_reset");
- prop= RNA_def_property(srna, "queue_size", PROP_INT, PROP_NONE);
+ prop= RNA_def_property(srna, "queue_count", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "queue_size");
RNA_def_property_range(prop, 0.0f, 100.0f);
RNA_def_property_ui_text(prop, "Queue Size", "How many boids in a line");
RNA_def_property_update(prop, 0, "rna_Boids_reset");
- prop= RNA_def_property(srna, "line", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_line", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "options", BRULE_LEADER_IN_LINE);
RNA_def_property_ui_text(prop, "Line", "Follow leader in a line");
RNA_def_property_update(prop, 0, "rna_Boids_reset");
@@ -391,17 +392,17 @@ static void rna_def_boidrule(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Type", "");
/* flags */
- prop= RNA_def_property(srna, "in_air", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_in_air", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", BOIDRULE_IN_AIR);
RNA_def_property_ui_text(prop, "In Air", "Use rule when boid is flying");
RNA_def_property_update(prop, 0, "rna_Boids_reset");
- prop= RNA_def_property(srna, "on_land", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_on_land", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", BOIDRULE_ON_LAND);
RNA_def_property_ui_text(prop, "On Land", "Use rule when boid is on land");
RNA_def_property_update(prop, 0, "rna_Boids_reset");
- //prop= RNA_def_property(srna, "expanded", PROP_BOOLEAN, PROP_NONE);
+ //prop= RNA_def_property(srna, "show_expanded", PROP_BOOLEAN, PROP_NONE);
//RNA_def_property_boolean_sdna(prop, NULL, "mode", eModifierMode_Expanded);
//RNA_def_property_ui_text(prop, "Expanded", "Set modifier expanded in the user interface");
@@ -443,7 +444,8 @@ static void rna_def_boidstate(BlenderRNA *brna)
RNA_def_property_int_funcs(prop, "rna_BoidState_active_boid_rule_index_get", "rna_BoidState_active_boid_rule_index_set", "rna_BoidState_active_boid_rule_index_range");
RNA_def_property_ui_text(prop, "Active Boid Rule Index", "");
- prop= RNA_def_property(srna, "rule_fuzziness", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "rule_fuzzy", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "rule_fuzziness");
RNA_def_property_range(prop, 0.0, 1.0);
RNA_def_property_ui_text(prop, "Rule Fuzziness", "");
RNA_def_property_update(prop, 0, "rna_Boids_reset");
@@ -466,12 +468,14 @@ static void rna_def_boid_settings(BlenderRNA *brna)
srna = RNA_def_struct(brna, "BoidSettings", NULL);
RNA_def_struct_ui_text(srna, "Boid Settings", "Settings for boid physics");
- prop= RNA_def_property(srna, "landing_smoothness", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "land_smooth", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "landing_smoothness");
RNA_def_property_range(prop, 0.0, 10.0);
RNA_def_property_ui_text(prop, "Landing Smoothness", "How smoothly the boids land");
RNA_def_property_update(prop, 0, "rna_Boids_reset");
- prop= RNA_def_property(srna, "banking", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "bank", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "banking");
RNA_def_property_range(prop, 0.0, 2.0);
RNA_def_property_ui_text(prop, "Banking", "Amount of rotation around velocity vector on turns");
RNA_def_property_update(prop, 0, "rna_Boids_reset");
@@ -522,22 +526,26 @@ static void rna_def_boid_settings(BlenderRNA *brna)
RNA_def_property_update(prop, 0, "rna_Boids_reset");
/* physical properties */
- prop= RNA_def_property(srna, "air_min_speed", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "air_speed_min", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "air_min_speed");
RNA_def_property_range(prop, 0.0, 1.0);
RNA_def_property_ui_text(prop, "Min Air Speed", "Minimum speed in air (relative to maximum speed)");
RNA_def_property_update(prop, 0, "rna_Boids_reset");
- prop= RNA_def_property(srna, "air_max_speed", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "air_speed_max", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "air_max_speed");
RNA_def_property_range(prop, 0.0, 100.0);
RNA_def_property_ui_text(prop, "Max Air Speed", "Maximum speed in air");
RNA_def_property_update(prop, 0, "rna_Boids_reset");
- prop= RNA_def_property(srna, "air_max_acc", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "air_acc_max", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "air_max_acc");
RNA_def_property_range(prop, 0.0, 1.0);
RNA_def_property_ui_text(prop, "Max Air Acceleration", "Maximum acceleration in air (relative to maximum speed)");
RNA_def_property_update(prop, 0, "rna_Boids_reset");
- prop= RNA_def_property(srna, "air_max_ave", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "air_ave_max", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "air_max_ave");
RNA_def_property_range(prop, 0.0, 1.0);
RNA_def_property_ui_text(prop, "Max Air Angular Velocity", "Maximum angular velocity in air (relative to 180 degrees)");
RNA_def_property_update(prop, 0, "rna_Boids_reset");
@@ -552,17 +560,20 @@ static void rna_def_boid_settings(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Jump Speed", "Maximum speed for jumping");
RNA_def_property_update(prop, 0, "rna_Boids_reset");
- prop= RNA_def_property(srna, "land_max_speed", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "land_speed_max", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "land_max_speed");
RNA_def_property_range(prop, 0.0, 100.0);
RNA_def_property_ui_text(prop, "Max Land Speed", "Maximum speed on land");
RNA_def_property_update(prop, 0, "rna_Boids_reset");
- prop= RNA_def_property(srna, "land_max_acc", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "land_acc_max", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "land_max_acc");
RNA_def_property_range(prop, 0.0, 1.0);
RNA_def_property_ui_text(prop, "Max Land Acceleration", "Maximum acceleration on land (relative to maximum speed)");
RNA_def_property_update(prop, 0, "rna_Boids_reset");
- prop= RNA_def_property(srna, "land_max_ave", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "land_ave_max", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "land_max_ave");
RNA_def_property_range(prop, 0.0, 1.0);
RNA_def_property_ui_text(prop, "Max Land Angular Velocity", "Maximum angular velocity on land (relative to 180 degrees)");
RNA_def_property_update(prop, 0, "rna_Boids_reset");
@@ -578,17 +589,17 @@ static void rna_def_boid_settings(BlenderRNA *brna)
RNA_def_property_update(prop, 0, "rna_Boids_reset");
/* options */
- prop= RNA_def_property(srna, "allow_flight", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_flight", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "options", BOID_ALLOW_FLIGHT);
RNA_def_property_ui_text(prop, "Allow Flight", "Allow boids to move in air");
RNA_def_property_update(prop, 0, "rna_Boids_reset");
- prop= RNA_def_property(srna, "allow_land", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_land", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "options", BOID_ALLOW_LAND);
RNA_def_property_ui_text(prop, "Allow Land", "Allow boids to move on land");
RNA_def_property_update(prop, 0, "rna_Boids_reset");
- prop= RNA_def_property(srna, "allow_climb", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_climb", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "options", BOID_ALLOW_CLIMB);
RNA_def_property_ui_text(prop, "Allow Climbing", "Allow boids to climb goal objects");
RNA_def_property_update(prop, 0, "rna_Boids_reset");
diff --git a/source/blender/makesrna/intern/rna_brush.c b/source/blender/makesrna/intern/rna_brush.c
index d3429c008b5..1a814c33a33 100644
--- a/source/blender/makesrna/intern/rna_brush.c
+++ b/source/blender/makesrna/intern/rna_brush.c
@@ -412,7 +412,7 @@ static void rna_def_brush(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Stroke Method", "");
RNA_def_property_update(prop, 0, "rna_Brush_update");
- prop= RNA_def_property(srna, "texture_angle_source", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "texture_angle_source_random", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_bitflag_sdna(prop, NULL, "flag");
RNA_def_property_enum_items(prop, texture_angle_source_items);
RNA_def_property_ui_text(prop, "Texture Angle Source", "");
@@ -525,7 +525,7 @@ static void rna_def_brush(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Crease Brush Pinch Factor", "How much the crease brush pinches");
RNA_def_property_update(prop, 0, "rna_Brush_update");
- prop= RNA_def_property(srna, "autosmooth_factor", PROP_FLOAT, PROP_FACTOR);
+ prop= RNA_def_property(srna, "auto_smooth_factor", PROP_FLOAT, PROP_FACTOR);
RNA_def_property_float_sdna(prop, NULL, "autosmooth_factor");
RNA_def_property_float_default(prop, 0);
RNA_def_property_range(prop, 0.0f, 1.0f);
@@ -549,7 +549,7 @@ static void rna_def_brush(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Wrap", "Enable torus wrapping while painting");
RNA_def_property_update(prop, 0, "rna_Brush_update");
- prop= RNA_def_property(srna, "use_strength_pressure", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_pressure_strength", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", BRUSH_ALPHA_PRESSURE);
RNA_def_property_boolean_funcs(prop, "rna_Brush_get_use_alpha_pressure", "rna_Brush_set_use_alpha_pressure");
RNA_def_property_ui_icon(prop, ICON_STYLUS_PRESSURE, 0);
@@ -562,20 +562,20 @@ static void rna_def_brush(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Plane Offset Pressure", "Enable tablet pressure sensitivity for offset");
RNA_def_property_update(prop, 0, "rna_Brush_update");
- prop= RNA_def_property(srna, "use_size_pressure", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_pressure_size", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", BRUSH_SIZE_PRESSURE);
RNA_def_property_boolean_funcs(prop, "rna_Brush_get_use_size_pressure", "rna_Brush_set_use_size_pressure");
RNA_def_property_ui_icon(prop, ICON_STYLUS_PRESSURE, 0);
RNA_def_property_ui_text(prop, "Size Pressure", "Enable tablet pressure sensitivity for size");
RNA_def_property_update(prop, 0, "rna_Brush_update");
- prop= RNA_def_property(srna, "use_jitter_pressure", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_pressure_jitter", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", BRUSH_JITTER_PRESSURE);
RNA_def_property_ui_icon(prop, ICON_STYLUS_PRESSURE, 0);
RNA_def_property_ui_text(prop, "Jitter Pressure", "Enable tablet pressure sensitivity for jitter");
RNA_def_property_update(prop, 0, "rna_Brush_update");
- prop= RNA_def_property(srna, "use_spacing_pressure", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_pressure_spacing", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", BRUSH_SPACING_PRESSURE);
RNA_def_property_ui_icon(prop, ICON_STYLUS_PRESSURE, 0);
RNA_def_property_ui_text(prop, "Spacing Pressure", "Enable tablet pressure sensitivity for spacing");
@@ -659,12 +659,12 @@ static void rna_def_brush(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Use Texture Overlay", "Show texture in viewport");
RNA_def_property_update(prop, 0, "rna_Brush_update");
- prop= RNA_def_property(srna, "edge_to_edge", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_edge_to_edge", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", BRUSH_EDGE_TO_EDGE);
RNA_def_property_ui_text(prop, "Edge-to-edge", "Drag anchor brush from edge-to-edge");
RNA_def_property_update(prop, 0, "rna_Brush_update");
- prop= RNA_def_property(srna, "restore_mesh", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_restore_mesh", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", BRUSH_RESTORE_MESH);
RNA_def_property_ui_text(prop, "Restore Mesh", "Allows a single dot to be carefully positioned");
RNA_def_property_update(prop, 0, "rna_Brush_update");
@@ -722,13 +722,13 @@ static void rna_def_brush(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Texture Overlay Alpha", "");
RNA_def_property_update(prop, 0, "rna_Brush_update");
- prop= RNA_def_property(srna, "add_col", PROP_FLOAT, PROP_COLOR);
+ prop= RNA_def_property(srna, "cursor_color_add", PROP_FLOAT, PROP_COLOR);
RNA_def_property_float_sdna(prop, NULL, "add_col");
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Add Color", "Color of cursor when adding");
RNA_def_property_update(prop, 0, "rna_Brush_update");
- prop= RNA_def_property(srna, "sub_col", PROP_FLOAT, PROP_COLOR);
+ prop= RNA_def_property(srna, "cursor_color_subtract", PROP_FLOAT, PROP_COLOR);
RNA_def_property_float_sdna(prop, NULL, "sub_col");
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Subract Color", "Color of cursor when subtracting");
diff --git a/source/blender/makesrna/intern/rna_camera.c b/source/blender/makesrna/intern/rna_camera.c
index 3b32030f752..9d82c472882 100644
--- a/source/blender/makesrna/intern/rna_camera.c
+++ b/source/blender/makesrna/intern/rna_camera.c
@@ -172,7 +172,7 @@ void RNA_def_camera(BlenderRNA *brna)
RNA_def_property_enum_items(prop, prop_lens_unit_items);
RNA_def_property_ui_text(prop, "Lens Unit", "Unit to edit lens in for the user interface");
- prop= RNA_def_property(srna, "panorama", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_panorama", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CAM_PANORAMA);
RNA_def_property_ui_text(prop, "Panorama", "Render the scene with a cylindrical camera for pseudo-fisheye lens effects");
RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, NULL);
diff --git a/source/blender/makesrna/intern/rna_cloth.c b/source/blender/makesrna/intern/rna_cloth.c
index 58ecb78d3b8..e40bbcbbf50 100644
--- a/source/blender/makesrna/intern/rna_cloth.c
+++ b/source/blender/makesrna/intern/rna_cloth.c
@@ -273,7 +273,7 @@ static void rna_def_cloth_sim_settings(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Air Damping", "Air has normally some thickness which slows falling things down");
RNA_def_property_update(prop, 0, "rna_cloth_update");
- prop= RNA_def_property(srna, "pin_cloth", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_pin_cloth", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", CLOTH_SIMSETTINGS_FLAG_GOAL);
RNA_def_property_ui_text(prop, "Pin Cloth", "Enable pinning of cloth vertices to other objects/positions");
RNA_def_property_update(prop, 0, "rna_cloth_update");
@@ -292,7 +292,7 @@ static void rna_def_cloth_sim_settings(BlenderRNA *brna)
/* springs */
- prop= RNA_def_property(srna, "stiffness_scaling", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_stiffness_scale", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", CLOTH_SIMSETTINGS_FLAG_SCALING);
RNA_def_property_ui_text(prop, "Stiffness Scaling", "If enabled, stiffness can be scaled along a weight painted vertex group");
RNA_def_property_update(prop, 0, "rna_cloth_update");
@@ -407,12 +407,12 @@ static void rna_def_cloth_collision_settings(BlenderRNA *brna)
/* general collision */
- prop= RNA_def_property(srna, "enable_collision", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_collision", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", CLOTH_COLLSETTINGS_FLAG_ENABLED);
RNA_def_property_ui_text(prop, "Enable Collision", "Enable collisions with other objects");
RNA_def_property_update(prop, 0, "rna_cloth_update");
- prop= RNA_def_property(srna, "min_distance", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "distance_min", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "epsilon");
RNA_def_property_range(prop, 0.001f, 1.0f);
RNA_def_property_ui_text(prop, "Minimum Distance", "Minimum distance between collision objects before collision response takes in");
@@ -431,12 +431,12 @@ static void rna_def_cloth_collision_settings(BlenderRNA *brna)
/* self collision */
- prop= RNA_def_property(srna, "enable_self_collision", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_self_collision", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", CLOTH_COLLSETTINGS_FLAG_SELF);
RNA_def_property_ui_text(prop, "Enable Self Collision", "Enable self collisions");
RNA_def_property_update(prop, 0, "rna_cloth_update");
- prop= RNA_def_property(srna, "self_min_distance", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "self_distance_min", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "selfepsilon");
RNA_def_property_range(prop, 0.5f, 1.0f);
RNA_def_property_ui_text(prop, "Self Minimum Distance", "0.5 means no distance at all, 1.0 is maximum distance");
diff --git a/source/blender/makesrna/intern/rna_color.c b/source/blender/makesrna/intern/rna_color.c
index fb51fa26395..ba3f2b09a20 100644
--- a/source/blender/makesrna/intern/rna_color.c
+++ b/source/blender/makesrna/intern/rna_color.c
@@ -370,7 +370,7 @@ static void rna_def_curvemapping(BlenderRNA *brna)
srna= RNA_def_struct(brna, "CurveMapping", NULL);
RNA_def_struct_ui_text(srna, "CurveMapping", "Curve mapping to map color, vector and scalar values to other values using a user defined curve");
- prop= RNA_def_property(srna, "clip", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_clip", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CUMA_DO_CLIP);
RNA_def_property_ui_text(prop, "Clip", "Force the curve view to fit a defined boundary");
RNA_def_property_boolean_funcs(prop, NULL, "rna_CurveMapping_clip_set");
@@ -502,6 +502,7 @@ static void rna_def_color_ramp(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Interpolation", "");
RNA_def_property_update(prop, 0, "rna_ColorRamp_update");
+#if 0 // use len(elements)
prop= RNA_def_property(srna, "total", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "tot");
/* needs a function to do the right thing when adding elements like colorband_add_cb() */
@@ -509,7 +510,8 @@ static void rna_def_color_ramp(BlenderRNA *brna)
RNA_def_property_range(prop, 0, 31); /* MAXCOLORBAND = 32 */
RNA_def_property_ui_text(prop, "Total", "Total number of elements");
RNA_def_property_update(prop, 0, "rna_ColorRamp_update");
-
+#endif
+
func = RNA_def_function(srna, "evaluate", "rna_ColorRamp_eval");
RNA_def_function_ui_description(func, "Evaluate ColorRamp");
prop= RNA_def_float(func, "position", 1.0f, 0.0f, 1.0f, "Position", "Evaluate ColorRamp at position", 0.0f, 1.0f);
diff --git a/source/blender/makesrna/intern/rna_constraint.c b/source/blender/makesrna/intern/rna_constraint.c
index 566e6fc0b83..38242628fd1 100644
--- a/source/blender/makesrna/intern/rna_constraint.c
+++ b/source/blender/makesrna/intern/rna_constraint.c
@@ -437,7 +437,7 @@ static void rna_def_constraint_python(BlenderRNA *brna)
RNA_def_property_struct_type(prop, "ConstraintTarget");
RNA_def_property_ui_text(prop, "Targets", "Target Objects");
- prop= RNA_def_property(srna, "number_of_targets", PROP_INT, PROP_NONE);
+ prop= RNA_def_property(srna, "target_count", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "tarnum");
RNA_def_property_ui_text(prop, "Number of Targets", "Usually only 1-3 are needed");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
@@ -452,7 +452,7 @@ static void rna_def_constraint_python(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Use Targets", "Use the targets indicated in the constraint panel");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
- prop= RNA_def_property(srna, "script_error", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "has_script_error", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PYCON_SCRIPTERROR);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Script Error", "The linked Python script has thrown an error");
@@ -510,7 +510,7 @@ static void rna_def_constraint_kinematic(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Orientation Weight", "For Tree-IK: Weight of orientation control for this target");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "chain_length", PROP_INT, PROP_NONE);
+ prop= RNA_def_property(srna, "chain_count", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "rootbone");
RNA_def_property_range(prop, 0, 255);
RNA_def_property_ui_text(prop, "Chain Length", "How many bones are included in the IK effect - 0 uses all bones");
@@ -521,28 +521,28 @@ static void rna_def_constraint_kinematic(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Use Tail", "Include bone's tail as last element in chain");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
- prop= RNA_def_property(srna, "axis_reference", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "reference_axis", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_bitflag_sdna(prop, NULL, "flag");
RNA_def_property_enum_items(prop, constraint_ik_axisref_items);
RNA_def_property_ui_text(prop, "Axis Reference", "Constraint axis Lock options relative to Bone or Target reference");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
- prop= RNA_def_property(srna, "use_position", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_location", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CONSTRAINT_IK_POS);
RNA_def_property_ui_text(prop, "Position", "Chain follows position of target");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
- prop= RNA_def_property(srna, "pos_lock_x", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "lock_location_x", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", CONSTRAINT_IK_NO_POS_X);
RNA_def_property_ui_text(prop, "Lock X Pos", "Constraint position along X axis");
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Constraint_dependency_update");
- prop= RNA_def_property(srna, "pos_lock_y", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "lock_location_y", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", CONSTRAINT_IK_NO_POS_Y);
RNA_def_property_ui_text(prop, "Lock Y Pos", "Constraint position along Y axis");
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Constraint_dependency_update");
- prop= RNA_def_property(srna, "pos_lock_z", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "lock_location_z", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", CONSTRAINT_IK_NO_POS_Z);
RNA_def_property_ui_text(prop, "Lock Z Pos", "Constraint position along Z axis");
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Constraint_dependency_update");
@@ -552,17 +552,17 @@ static void rna_def_constraint_kinematic(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Rotation", "Chain follows rotation of target");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
- prop= RNA_def_property(srna, "rot_lock_x", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "lock_rotation_x", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", CONSTRAINT_IK_NO_ROT_X);
RNA_def_property_ui_text(prop, "Lock X Rot", "Constraint rotation along X axis");
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Constraint_dependency_update");
- prop= RNA_def_property(srna, "rot_lock_y", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "lock_rotation_y", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", CONSTRAINT_IK_NO_ROT_Y);
RNA_def_property_ui_text(prop, "Lock Y Rot", "Constraint rotation along Y axis");
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Constraint_dependency_update");
- prop= RNA_def_property(srna, "rot_lock_z", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "lock_rotation_z", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", CONSTRAINT_IK_NO_ROT_Z);
RNA_def_property_ui_text(prop, "Lock Z Rot", "Constraint rotation along Z axis");
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Constraint_dependency_update");
@@ -650,7 +650,7 @@ static void rna_def_constraint_track_to(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Up Axis", "Axis that points upward");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "target_z", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_target_z", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", TARGET_Z_UP);
RNA_def_property_ui_text(prop, "Target Z", "Target's Z axis, not World Z axis, will constraint the Up direction");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
@@ -978,14 +978,14 @@ static void rna_def_constraint_action(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "End Frame", "Last frame of the Action to use");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "maximum", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "max", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "max");
RNA_def_property_range(prop, -1000.f, 1000.f);
RNA_def_property_ui_text(prop, "Maximum", "Maximum value for target channel range");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
RNA_def_property_float_funcs(prop, NULL, NULL, "rna_ActionConstraint_minmax_range");
- prop= RNA_def_property(srna, "minimum", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "min", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "min");
RNA_def_property_range(prop, -1000.f, 1000.f);
RNA_def_property_ui_text(prop, "Minimum", "Minimum value for target channel range");
@@ -1100,7 +1100,7 @@ static void rna_def_constraint_follow_path(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Follow Curve", "Object will follow the heading and banking of the curve");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "use_fixed_position", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_fixed_location", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "followflag", FOLLOWPATH_STATIC);
RNA_def_property_ui_text(prop, "Fixed Position", "Object will stay locked to a single point somewhere along the length of the curve regardless of time");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
@@ -1161,7 +1161,7 @@ static void rna_def_constraint_stretch_to(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Keep Axis", "Axis to maintain during stretch");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "original_length", PROP_FLOAT, PROP_DISTANCE);
+ prop= RNA_def_property(srna, "rest_length", PROP_FLOAT, PROP_DISTANCE);
RNA_def_property_float_sdna(prop, NULL, "orglength");
RNA_def_property_range(prop, 0.0, 100.f);
RNA_def_property_ui_text(prop, "Original Length", "Length at rest position");
@@ -1246,12 +1246,12 @@ static void rna_def_constraint_rigid_body_joint(BlenderRNA *brna)
//float minLimit[6];
//float maxLimit[6];
- prop= RNA_def_property(srna, "disable_linked_collision", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_linked_collision", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CONSTRAINT_DISABLE_LINKED_COLLISION);
RNA_def_property_ui_text(prop, "Disable Linked Collision", "Disable collision between linked bodies");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "draw_pivot", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_pivot", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CONSTRAINT_DRAW_PIVOT);
RNA_def_property_ui_text(prop, "Draw Pivot", "Display the pivot point and rotation in 3D view");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
@@ -1354,7 +1354,7 @@ static void rna_def_constraint_transform(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Map To Z From", "The source axis constrained object's Z axis uses");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "extrapolate_motion", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_motion_extrapolate", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "expo", CLAMPTO_CYCLIC);
RNA_def_property_ui_text(prop, "Extrapolate Motion", "Extrapolate ranges");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
@@ -1441,73 +1441,73 @@ static void rna_def_constraint_location_limit(BlenderRNA *brna)
RNA_def_struct_ui_text(srna, "Limit Location Constraint", "Limits the location of the constrained object");
RNA_def_struct_sdna_from(srna, "bLocLimitConstraint", "data");
- prop= RNA_def_property(srna, "use_minimum_x", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_min_x", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", LIMIT_XMIN);
RNA_def_property_ui_text(prop, "Minimum X", "Use the minimum X value");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "use_minimum_y", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_min_y", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", LIMIT_YMIN);
RNA_def_property_ui_text(prop, "Minimum Y", "Use the minimum Y value");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "use_minimum_z", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_min_z", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", LIMIT_ZMIN);
RNA_def_property_ui_text(prop, "Minimum Z", "Use the minimum Z value");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "use_maximum_x", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_max_x", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", LIMIT_XMAX);
RNA_def_property_ui_text(prop, "Maximum X", "Use the maximum X value");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "use_maximum_y", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_max_y", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", LIMIT_YMAX);
RNA_def_property_ui_text(prop, "Maximum Y", "Use the maximum Y value");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "use_maximum_z", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_max_z", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", LIMIT_ZMAX);
RNA_def_property_ui_text(prop, "Maximum Z", "Use the maximum Z value");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "minimum_x", PROP_FLOAT, PROP_DISTANCE);
+ prop= RNA_def_property(srna, "min_x", PROP_FLOAT, PROP_DISTANCE);
RNA_def_property_float_sdna(prop, NULL, "xmin");
RNA_def_property_range(prop, -1000.0, 1000.f);
RNA_def_property_ui_text(prop, "Minimum X", "Lowest X value to allow");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "minimum_y", PROP_FLOAT, PROP_DISTANCE);
+ prop= RNA_def_property(srna, "min_y", PROP_FLOAT, PROP_DISTANCE);
RNA_def_property_float_sdna(prop, NULL, "ymin");
RNA_def_property_range(prop, -1000.0, 1000.f);
RNA_def_property_ui_text(prop, "Minimum Y", "Lowest Y value to allow");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "minimum_z", PROP_FLOAT, PROP_DISTANCE);
+ prop= RNA_def_property(srna, "min_z", PROP_FLOAT, PROP_DISTANCE);
RNA_def_property_float_sdna(prop, NULL, "zmin");
RNA_def_property_range(prop, -1000.0, 1000.f);
RNA_def_property_ui_text(prop, "Minimum Z", "Lowest Z value to allow");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "maximum_x", PROP_FLOAT, PROP_DISTANCE);
+ prop= RNA_def_property(srna, "max_x", PROP_FLOAT, PROP_DISTANCE);
RNA_def_property_float_sdna(prop, NULL, "xmax");
RNA_def_property_range(prop, -1000.0, 1000.f);
RNA_def_property_ui_text(prop, "Maximum X", "Highest X value to allow");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "maximum_y", PROP_FLOAT, PROP_DISTANCE);
+ prop= RNA_def_property(srna, "max_y", PROP_FLOAT, PROP_DISTANCE);
RNA_def_property_float_sdna(prop, NULL, "ymax");
RNA_def_property_range(prop, -1000.0, 1000.f);
RNA_def_property_ui_text(prop, "Maximum Y", "Highest Y value to allow");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "maximum_z", PROP_FLOAT, PROP_DISTANCE);
+ prop= RNA_def_property(srna, "max_z", PROP_FLOAT, PROP_DISTANCE);
RNA_def_property_float_sdna(prop, NULL, "zmax");
RNA_def_property_range(prop, -1000.0, 1000.f);
RNA_def_property_ui_text(prop, "Maximum Z", "Highest Z value to allow");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "limit_transform", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_transform_limit", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag2", LIMIT_TRANSFORM);
RNA_def_property_ui_text(prop, "For Transform", "Transforms are affected by this constraint as well");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
@@ -1537,43 +1537,43 @@ static void rna_def_constraint_rotation_limit(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Limit Z", "Use the minimum Z value");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "minimum_x", PROP_FLOAT, PROP_ANGLE);
+ prop= RNA_def_property(srna, "min_x", PROP_FLOAT, PROP_ANGLE);
RNA_def_property_float_sdna(prop, NULL, "xmin");
RNA_def_property_range(prop, -1000.0, 1000.f);
RNA_def_property_ui_text(prop, "Minimum X", "Lowest X value to allow");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "minimum_y", PROP_FLOAT, PROP_ANGLE);
+ prop= RNA_def_property(srna, "min_y", PROP_FLOAT, PROP_ANGLE);
RNA_def_property_float_sdna(prop, NULL, "ymin");
RNA_def_property_range(prop, -1000.0, 1000.f);
RNA_def_property_ui_text(prop, "Minimum Y", "Lowest Y value to allow");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "minimum_z", PROP_FLOAT, PROP_ANGLE);
+ prop= RNA_def_property(srna, "min_z", PROP_FLOAT, PROP_ANGLE);
RNA_def_property_float_sdna(prop, NULL, "zmin");
RNA_def_property_range(prop, -1000.0, 1000.f);
RNA_def_property_ui_text(prop, "Minimum Z", "Lowest Z value to allow");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "maximum_x", PROP_FLOAT, PROP_ANGLE);
+ prop= RNA_def_property(srna, "max_x", PROP_FLOAT, PROP_ANGLE);
RNA_def_property_float_sdna(prop, NULL, "xmax");
RNA_def_property_range(prop, -1000.0, 1000.f);
RNA_def_property_ui_text(prop, "Maximum X", "Highest X value to allow");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "maximum_y", PROP_FLOAT, PROP_ANGLE);
+ prop= RNA_def_property(srna, "max_y", PROP_FLOAT, PROP_ANGLE);
RNA_def_property_float_sdna(prop, NULL, "ymax");
RNA_def_property_range(prop, -1000.0, 1000.f);
RNA_def_property_ui_text(prop, "Maximum Y", "Highest Y value to allow");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "maximum_z", PROP_FLOAT, PROP_ANGLE);
+ prop= RNA_def_property(srna, "max_z", PROP_FLOAT, PROP_ANGLE);
RNA_def_property_float_sdna(prop, NULL, "zmax");
RNA_def_property_range(prop, -1000.0, 1000.f);
RNA_def_property_ui_text(prop, "Maximum Z", "Highest Z value to allow");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "limit_transform", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_transform_limit", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag2", LIMIT_TRANSFORM);
RNA_def_property_ui_text(prop, "For Transform", "Transforms are affected by this constraint as well");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
@@ -1588,73 +1588,73 @@ static void rna_def_constraint_size_limit(BlenderRNA *brna)
RNA_def_struct_ui_text(srna, "Limit Size Constraint", "Limits the scaling of the constrained object");
RNA_def_struct_sdna_from(srna, "bSizeLimitConstraint", "data");
- prop= RNA_def_property(srna, "use_minimum_x", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_min_x", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", LIMIT_XMIN);
RNA_def_property_ui_text(prop, "Minimum X", "Use the minimum X value");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "use_minimum_y", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_min_y", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", LIMIT_YMIN);
RNA_def_property_ui_text(prop, "Minimum Y", "Use the minimum Y value");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "use_minimum_z", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_min_z", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", LIMIT_ZMIN);
RNA_def_property_ui_text(prop, "Minimum Z", "Use the minimum Z value");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "use_maximum_x", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_max_x", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", LIMIT_XMAX);
RNA_def_property_ui_text(prop, "Maximum X", "Use the maximum X value");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "use_maximum_y", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_max_y", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", LIMIT_YMAX);
RNA_def_property_ui_text(prop, "Maximum Y", "Use the maximum Y value");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "use_maximum_z", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_max_z", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", LIMIT_ZMAX);
RNA_def_property_ui_text(prop, "Maximum Z", "Use the maximum Z value");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "minimum_x", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "min_x", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "xmin");
RNA_def_property_range(prop, -1000.0, 1000.f);
RNA_def_property_ui_text(prop, "Minimum X", "Lowest X value to allow");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "minimum_y", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "min_y", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "ymin");
RNA_def_property_range(prop, -1000.0, 1000.f);
RNA_def_property_ui_text(prop, "Minimum Y", "Lowest Y value to allow");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "minimum_z", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "min_z", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "zmin");
RNA_def_property_range(prop, -1000.0, 1000.f);
RNA_def_property_ui_text(prop, "Minimum Z", "Lowest Z value to allow");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "maximum_x", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "max_x", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "xmax");
RNA_def_property_range(prop, -1000.0, 1000.f);
RNA_def_property_ui_text(prop, "Maximum X", "Highest X value to allow");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "maximum_y", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "max_y", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "ymax");
RNA_def_property_range(prop, -1000.0, 1000.f);
RNA_def_property_ui_text(prop, "Maximum Y", "Highest Y value to allow");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "maximum_z", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "max_z", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "zmax");
RNA_def_property_range(prop, -1000.0, 1000.f);
RNA_def_property_ui_text(prop, "Maximum Z", "Highest Z value to allow");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "limit_transform", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_transform_limit", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag2", LIMIT_TRANSFORM);
RNA_def_property_ui_text(prop, "For Transform", "Transforms are affected by this constraint as well");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
@@ -1801,7 +1801,7 @@ static void rna_def_constraint_spline_ik(BlenderRNA *brna)
RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
- prop= RNA_def_property(srna, "chain_length", PROP_INT, PROP_NONE);
+ prop= RNA_def_property(srna, "chain_count", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "chainlen");
RNA_def_property_range(prop, 1, 255); // TODO: this should really check the max length of the chain the constraint is attached to
RNA_def_property_ui_text(prop, "Chain Length", "How many bones are included in the chain");
@@ -1818,17 +1818,17 @@ static void rna_def_constraint_spline_ik(BlenderRNA *brna)
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
/* settings */
- prop= RNA_def_property(srna, "chain_offset", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_chain_offset", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CONSTRAINT_SPLINEIK_NO_ROOT);
RNA_def_property_ui_text(prop, "Chain Offset", "Offset the entire chain relative to the root joint");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "even_divisions", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_even_divisions", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CONSTRAINT_SPLINEIK_EVENSPLITS);
RNA_def_property_ui_text(prop, "Even Divisions", "Ignore the relative lengths of the bones when fitting to the curve");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "y_stretch", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_y_stretch", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", CONSTRAINT_SPLINEIK_SCALE_LIMITED);
RNA_def_property_ui_text(prop, "Y Stretch", "Stretch the Y axis of the bones to fit the curve");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
@@ -1838,7 +1838,7 @@ static void rna_def_constraint_spline_ik(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Use Curve Radius", "Average radius of the endpoints is used to tweak the X and Z Scaling of the bones, on top of XZ Scale mode");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
- prop= RNA_def_property(srna, "xz_scaling_mode", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "xz_scale_mode", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "xzScaleMode");
RNA_def_property_enum_items(prop, splineik_xz_scale_mode);
RNA_def_property_ui_text(prop, "XZ Scale Mode", "Method used for determining the scaling of the X and Z axes of the bones");
@@ -1883,7 +1883,7 @@ static void rna_def_constraint_pivot(BlenderRNA *brna)
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_dependency_update");
/* pivot offset */
- prop= RNA_def_property(srna, "use_relative_position", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_relative_location", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", PIVOTCON_FLAG_OFFSET_ABS);
RNA_def_property_ui_text(prop, "Use Relative Offset", "Offset will be an absolute point in space instead of relative to the target");
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
@@ -1894,7 +1894,7 @@ static void rna_def_constraint_pivot(BlenderRNA *brna)
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_update");
/* rotation-based activation */
- prop= RNA_def_property(srna, "enabled_rotation_range", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "rotation_range", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "rotAxis");
RNA_def_property_enum_items(prop, pivot_rotAxis_items);
RNA_def_property_ui_text(prop, "Enabled Rotation Range", "Rotation range on which pivoting should occur");
@@ -1940,11 +1940,11 @@ void RNA_def_constraint(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Target Space", "Space that target is evaluated in");
/* flags */
- prop= RNA_def_property(srna, "enabled", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", CONSTRAINT_OFF);
+ prop= RNA_def_property(srna, "mute", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flag", CONSTRAINT_OFF);
RNA_def_property_ui_text(prop, "Enabled", "Enable/Disable Constraint");
- prop= RNA_def_property(srna, "expanded", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_expanded", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CONSTRAINT_EXPAND);
RNA_def_property_ui_text(prop, "Expanded", "Constraint's panel is expanded in UI");
RNA_def_property_ui_icon(prop, ICON_TRIA_RIGHT, 1);
@@ -1960,7 +1960,7 @@ void RNA_def_constraint(BlenderRNA *brna)
RNA_def_property_boolean_sdna(prop, NULL, "flag", CONSTRAINT_ACTIVE);
RNA_def_property_ui_text(prop, "Active", "Constraint is the one being edited ");
- prop= RNA_def_property(srna, "proxy_local", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "is_proxy_local", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CONSTRAINT_PROXY_LOCAL);
RNA_def_property_ui_text(prop, "Proxy Local", "Constraint was added in this proxy instance (i.e. did not belong to source Armature)");
@@ -1972,12 +1972,12 @@ void RNA_def_constraint(BlenderRNA *brna)
RNA_def_property_update(prop, NC_OBJECT|ND_CONSTRAINT, "rna_Constraint_influence_update");
/* readonly values */
- prop= RNA_def_property(srna, "lin_error", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "error_location", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "lin_error");
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Lin error", "Amount of residual error in Blender space unit for constraints that work on position");
- prop= RNA_def_property(srna, "rot_error", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "error_rotation", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "rot_error");
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Rot error", "Amount of residual error in radiant for constraints that work on orientation");
diff --git a/source/blender/makesrna/intern/rna_controller.c b/source/blender/makesrna/intern/rna_controller.c
index c5a57971001..ee0707ad0ae 100644
--- a/source/blender/makesrna/intern/rna_controller.c
+++ b/source/blender/makesrna/intern/rna_controller.c
@@ -170,13 +170,13 @@ void RNA_def_controller(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Type", "");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "expanded", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_expanded", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CONT_SHOW);
RNA_def_property_ui_text(prop, "Expanded", "Set controller expanded in the user interface");
RNA_def_property_ui_icon(prop, ICON_TRIA_RIGHT, 1);
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "priority", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_priority", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CONT_PRIO);
RNA_def_property_ui_text(prop, "Priority", "Mark controller for execution before all non-marked controllers (good for startup scripts)");
RNA_def_property_ui_icon(prop, ICON_BOOKMARKS, 1);
@@ -185,7 +185,7 @@ void RNA_def_controller(BlenderRNA *brna)
/* State */
// array of OB_MAX_STATES
- //prop= RNA_def_property(srna, "state", PROP_BOOLEAN, PROP_LAYER_MEMBER);
+ //prop= RNA_def_property(srna, "states", PROP_BOOLEAN, PROP_LAYER_MEMBER);
//RNA_def_property_array(prop, OB_MAX_STATES);
//RNA_def_property_clear_flag(prop, PROP_EDITABLE);
//RNA_def_property_ui_text(prop, "", "Set Controller state index (1 to 30)");
@@ -193,7 +193,7 @@ void RNA_def_controller(BlenderRNA *brna)
//RNA_def_property_update(prop, NC_LOGIC, NULL);
// number of the state
- prop= RNA_def_property(srna, "state", PROP_INT, PROP_UNSIGNED);
+ prop= RNA_def_property(srna, "states", PROP_INT, PROP_UNSIGNED);
RNA_def_property_int_sdna(prop, NULL, "state_mask");
RNA_def_property_range(prop, 1, OB_MAX_STATES);
RNA_def_property_ui_text(prop, "", "Set Controller state index (1 to 30)");
@@ -231,7 +231,7 @@ void RNA_def_controller(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Module", "Module name and function to run e.g. \"someModule.main\". Internal texts and external python files can be used");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "debug", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_debug", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CONT_PY_DEBUG);
RNA_def_property_ui_text(prop, "D", "Continuously reload the module from disk for editing external modules without restarting");
RNA_def_property_update(prop, NC_LOGIC, NULL);
diff --git a/source/blender/makesrna/intern/rna_curve.c b/source/blender/makesrna/intern/rna_curve.c
index d513b13c923..423e5e4d203 100644
--- a/source/blender/makesrna/intern/rna_curve.c
+++ b/source/blender/makesrna/intern/rna_curve.c
@@ -623,20 +623,20 @@ static void rna_def_beztriple(BlenderRNA *brna)
RNA_def_property_update(prop, 0, "rna_Curve_update_data");
/* Enums */
- prop= RNA_def_property(srna, "handle1_type", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "handle_left_type", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "h1");
RNA_def_property_enum_items(prop, beztriple_handle_type_items);
RNA_def_property_ui_text(prop, "Handle 1 Type", "Handle types");
RNA_def_property_update(prop, 0, "rna_Curve_update_data");
- prop= RNA_def_property(srna, "handle2_type", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "handle_right_type", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "h2");
RNA_def_property_enum_items(prop, beztriple_handle_type_items);
RNA_def_property_ui_text(prop, "Handle 2 Type", "Handle types");
RNA_def_property_update(prop, 0, "rna_Curve_update_data");
/* Vector values */
- prop= RNA_def_property(srna, "handle1", PROP_FLOAT, PROP_TRANSLATION);
+ prop= RNA_def_property(srna, "handle_left", PROP_FLOAT, PROP_TRANSLATION);
RNA_def_property_array(prop, 3);
RNA_def_property_float_funcs(prop, "rna_BezTriple_handle1_get", "rna_BezTriple_handle1_set", NULL);
RNA_def_property_ui_text(prop, "Handle 1", "Coordinates of the first handle");
@@ -648,7 +648,7 @@ static void rna_def_beztriple(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Control Point", "Coordinates of the control point");
RNA_def_property_update(prop, 0, "rna_Curve_update_data");
- prop= RNA_def_property(srna, "handle2", PROP_FLOAT, PROP_TRANSLATION);
+ prop= RNA_def_property(srna, "handle_right", PROP_FLOAT, PROP_TRANSLATION);
RNA_def_property_array(prop, 3);
RNA_def_property_float_funcs(prop, "rna_BezTriple_handle2_get", "rna_BezTriple_handle2_set", NULL);
RNA_def_property_ui_text(prop, "Handle 2", "Coordinates of the second handle");
@@ -679,7 +679,7 @@ static void rna_def_path(BlenderRNA *brna, StructRNA *srna)
PropertyRNA *prop;
/* number values */
- prop= RNA_def_property(srna, "path_length", PROP_INT, PROP_NONE);
+ prop= RNA_def_property(srna, "path_duration", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "pathlen");
RNA_def_property_range(prop, 1, MAXFRAME);
RNA_def_property_ui_text(prop, "Path Length", "The number of frames that are needed to traverse the path, defining the maximum value for the 'Evaluation Time' setting");
@@ -722,7 +722,7 @@ static void rna_def_nurbs(BlenderRNA *brna, StructRNA *srna)
PropertyRNA *prop;
/* flags */
- prop= RNA_def_property(srna, "map_along_length", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_map_on_length", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CU_UV_ORCO);
RNA_def_property_ui_text(prop, "Map Along Length", "Generate texture mapping coordinates following the curve direction, rather than the local bounding box");
RNA_def_property_update(prop, 0, "rna_Curve_update_data");
@@ -741,13 +741,14 @@ static void rna_def_font(BlenderRNA *brna, StructRNA *srna)
{0, NULL, 0, NULL, NULL}};
/* Enums */
- prop= RNA_def_property(srna, "spacemode", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "align", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "spacemode");
RNA_def_property_enum_items(prop, prop_align_items);
RNA_def_property_ui_text(prop, "Text Align", "Text align from the object center");
RNA_def_property_update(prop, 0, "rna_Curve_update_data");
/* number values */
- prop= RNA_def_property(srna, "text_size", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "size", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "fsize");
RNA_def_property_range(prop, 0.0001f, 10000.0f);
RNA_def_property_ui_range(prop, 0.01, 10, 1, 1);
@@ -760,19 +761,19 @@ static void rna_def_font(BlenderRNA *brna, StructRNA *srna)
RNA_def_property_ui_text(prop, "Small Caps", "Scale of small capitals");
RNA_def_property_update(prop, 0, "rna_Curve_update_data");
- prop= RNA_def_property(srna, "line_dist", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "space_line", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "linedist");
RNA_def_property_range(prop, 0.0f, 10.0f);
RNA_def_property_ui_text(prop, "Distance between lines of text", "");
RNA_def_property_update(prop, 0, "rna_Curve_update_data");
- prop= RNA_def_property(srna, "word_spacing", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "space_word", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "wordspace");
RNA_def_property_range(prop, 0.0f, 10.0f);
RNA_def_property_ui_text(prop, "Spacing between words", "");
RNA_def_property_update(prop, 0, "rna_Curve_update_data");
- prop= RNA_def_property(srna, "spacing", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "space_character", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "spacing");
RNA_def_property_range(prop, 0.0f, 10.0f);
RNA_def_property_ui_text(prop, "Global spacing between characters", "");
@@ -796,19 +797,19 @@ static void rna_def_font(BlenderRNA *brna, StructRNA *srna)
RNA_def_property_ui_text(prop, "Y Offset", "Vertical offset from the object origin");
RNA_def_property_update(prop, 0, "rna_Curve_update_data");
- prop= RNA_def_property(srna, "ul_position", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "underline_position", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "ulpos");
RNA_def_property_range(prop, -0.2f, 0.8f);
RNA_def_property_ui_text(prop, "Underline Position", "Vertical position of underline");
RNA_def_property_update(prop, 0, "rna_Curve_update_data");
- prop= RNA_def_property(srna, "ul_height", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "underline_height", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "ulheight");
RNA_def_property_range(prop, -0.2f, 0.8f);
RNA_def_property_ui_text(prop, "Underline Thickness", "");
RNA_def_property_update(prop, 0, "rna_Curve_update_data");
- prop= RNA_def_property(srna, "textboxes", PROP_COLLECTION, PROP_NONE);
+ prop= RNA_def_property(srna, "text_boxes", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_sdna(prop, NULL, "tb", "totbox");
RNA_def_property_struct_type(prop, "TextBox");
RNA_def_property_ui_text(prop, "Textboxes", "");
@@ -837,7 +838,7 @@ static void rna_def_font(BlenderRNA *brna, StructRNA *srna)
RNA_def_property_ui_text(prop, "Character Info", "Stores the style of each character");
/* pointers */
- prop= RNA_def_property(srna, "text_on_curve", PROP_POINTER, PROP_NONE);
+ prop= RNA_def_property(srna, "follow_curve", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "textoncurve");
RNA_def_property_pointer_funcs(prop, NULL, NULL, NULL, "rna_Curve_otherObject_poll");
RNA_def_property_flag(prop, PROP_EDITABLE);
@@ -856,7 +857,7 @@ static void rna_def_font(BlenderRNA *brna, StructRNA *srna)
RNA_def_property_update(prop, 0, "rna_Curve_update_data");
/* flags */
- prop= RNA_def_property(srna, "fast", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_fast_edit", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CU_FAST);
RNA_def_property_ui_text(prop, "Fast", "Don't fill polygons while editing");
RNA_def_property_update(prop, 0, "rna_Curve_update_data");
@@ -908,17 +909,17 @@ static void rna_def_charinfo(BlenderRNA *brna)
RNA_def_struct_ui_text(srna, "Text Character Format", "Text character formatting settings");
/* flags */
- prop= RNA_def_property(srna, "bold", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_bold", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CU_CHINFO_BOLD);
RNA_def_property_ui_text(prop, "Bold", "");
RNA_def_property_update(prop, 0, "rna_Curve_update_data");
- prop= RNA_def_property(srna, "italic", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_italic", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CU_CHINFO_ITALIC);
RNA_def_property_ui_text(prop, "Italic", "");
RNA_def_property_update(prop, 0, "rna_Curve_update_data");
- prop= RNA_def_property(srna, "underline", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_underline", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CU_CHINFO_UNDERLINE);
RNA_def_property_ui_text(prop, "Underline", "");
RNA_def_property_update(prop, 0, "rna_Curve_update_data");
@@ -1087,12 +1088,12 @@ static void rna_def_curve(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Splines", "Collection of splines in this curve data object");
rna_def_curve_splines(brna, prop);
- prop= RNA_def_property(srna, "draw_handles", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_handles", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "drawflag", CU_HIDE_HANDLES);
RNA_def_property_ui_text(prop, "Draw Handles", "Display bezier handles in editmode");
RNA_def_property_update(prop, NC_GEOM|ND_DATA, NULL);
- prop= RNA_def_property(srna, "draw_normals", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_normal_face", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "drawflag", CU_HIDE_NORMALS);
RNA_def_property_ui_text(prop, "Draw Normals", "Display 3D curve normals in editmode");
RNA_def_property_update(prop, NC_GEOM|ND_DATA, NULL);
@@ -1107,7 +1108,7 @@ static void rna_def_curve(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Bevel Resolution", "Bevel resolution when depth is non-zero and no specific bevel object has been defined");
RNA_def_property_update(prop, 0, "rna_Curve_update_data");
- prop= RNA_def_property(srna, "width", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "offset", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "width");
RNA_def_property_ui_range(prop, 0, 2.0, 0.1, 0);
RNA_def_property_ui_text(prop, "Width", "Scale the original width (1.0) based on given factor");
@@ -1184,12 +1185,12 @@ static void rna_def_curve(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Dimensions", "Select 2D or 3D curve type");
RNA_def_property_update(prop, 0, "rna_Curve_update_data");
- prop= RNA_def_property(srna, "front", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_fill_front", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CU_FRONT);
RNA_def_property_ui_text(prop, "Front", "Draw filled front for extruded/beveled curves");
RNA_def_property_update(prop, 0, "rna_Curve_update_data");
- prop= RNA_def_property(srna, "back", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_fill_back", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CU_BACK);
RNA_def_property_ui_text(prop, "Back", "Draw filled back for extruded/beveled curves");
RNA_def_property_update(prop, 0, "rna_Curve_update_data");
@@ -1207,17 +1208,17 @@ static void rna_def_curve(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Twist Smooth", "Smoothing iteration for tangents");
RNA_def_property_update(prop, 0, "rna_Curve_update_data");
- prop= RNA_def_property(srna, "use_deform_fill", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_fill_deform", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CU_DEFORM_FILL);
RNA_def_property_ui_text(prop, "Fill deformed", "Fill curve after applying deformation");
RNA_def_property_update(prop, 0, "rna_Curve_update_data");
/* texture space */
- prop= RNA_def_property(srna, "auto_texspace", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_auto_texspace", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "texflag", CU_AUTOSPACE);
RNA_def_property_ui_text(prop, "Auto Texture Space", "Adjusts active object's texture space automatically when transforming object");
- prop= RNA_def_property(srna, "texspace_loc", PROP_FLOAT, PROP_TRANSLATION);
+ prop= RNA_def_property(srna, "texspace_location", PROP_FLOAT, PROP_TRANSLATION);
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Texture Space Location", "Texture space location");
RNA_def_property_editable_func(prop, "rna_Curve_texspace_editable");
@@ -1238,7 +1239,7 @@ static void rna_def_curve(BlenderRNA *brna)
RNA_def_property_editable_func(prop, texspace_editable);
RNA_def_property_update(prop, 0, "rna_Curve_update_data");*/
- prop= RNA_def_property(srna, "map_along_length", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_map_on_length", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CU_UV_ORCO);
RNA_def_property_ui_text(prop, "Map Along Length", "Generate texture mapping coordinates following the curve direction, rather than the local bounding box");
RNA_def_property_update(prop, 0, "rna_Curve_update_data");
@@ -1339,40 +1340,40 @@ static void rna_def_curve_nurb(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Resolution V", "Surface subdivisions per segment");
RNA_def_property_update(prop, 0, "rna_Curve_update_data");
- prop= RNA_def_property(srna, "cyclic_u", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_cyclic_u", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flagu", CU_NURB_CYCLIC);
RNA_def_property_ui_text(prop, "Cyclic U", "Make this curve or surface a closed loop in the U direction");
RNA_def_property_update(prop, 0, "rna_Nurb_update_handle_data"); /* only needed for cyclic_u because cyclic_v cant do bezier */
- prop= RNA_def_property(srna, "cyclic_v", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_cyclic_v", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flagv", CU_NURB_CYCLIC);
RNA_def_property_ui_text(prop, "Cyclic V", "Make this surface a closed loop in the V direction");
RNA_def_property_update(prop, 0, "rna_Curve_update_data");
/* Note, endpoint and bezier flags should never be on at the same time! */
- prop= RNA_def_property(srna, "endpoint_u", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_endpoint_u", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flagu", CU_NURB_ENDPOINT);
RNA_def_property_ui_text(prop, "Endpoint U", "Make this nurbs curve or surface meet the endpoints in the U direction (Cyclic U must be disabled)");
RNA_def_property_update(prop, 0, "rna_Nurb_update_knot_u");
- prop= RNA_def_property(srna, "endpoint_v", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_endpoint_v", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flagv", CU_NURB_ENDPOINT);
RNA_def_property_ui_text(prop, "Endpoint V", "Make this nurbs surface meet the endpoints in the V direction (Cyclic V must be disabled)");
RNA_def_property_update(prop, 0, "rna_Nurb_update_knot_v");
- prop= RNA_def_property(srna, "bezier_u", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_bezier_u", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flagu", CU_NURB_BEZIER);
RNA_def_property_ui_text(prop, "Bezier U", "Make this nurbs curve or surface act like a bezier spline in the U direction (Order U must be 3 or 4, Cyclic U must be disabled)");
RNA_def_property_update(prop, 0, "rna_Nurb_update_knot_u");
- prop= RNA_def_property(srna, "bezier_v", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_bezier_v", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flagv", CU_NURB_BEZIER);
RNA_def_property_ui_text(prop, "Bezier V", "Make this nurbs surface act like a bezier spline in the V direction (Order V must be 3 or 4, Cyclic V must be disabled)");
RNA_def_property_update(prop, 0, "rna_Nurb_update_knot_v");
- prop= RNA_def_property(srna, "smooth", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_smooth", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", CU_SMOOTH);
RNA_def_property_ui_text(prop, "Smooth", "Smooth the normals of the surface or beveled curve");
RNA_def_property_update(prop, 0, "rna_Curve_update_data");
diff --git a/source/blender/makesrna/intern/rna_define.c b/source/blender/makesrna/intern/rna_define.c
index d89d0ad5d29..43bf40d3965 100644
--- a/source/blender/makesrna/intern/rna_define.c
+++ b/source/blender/makesrna/intern/rna_define.c
@@ -781,10 +781,10 @@ void RNA_def_struct_refine_func(StructRNA *srna, const char *refine)
if(refine) srna->refine= (StructRefineFunc)refine;
}
-void RNA_def_struct_idproperties_func(StructRNA *srna, const char *idproperties)
+void RNA_def_struct_idprops_func(StructRNA *srna, const char *idproperties)
{
if(!DefRNA.preprocess) {
- fprintf(stderr, "RNA_def_struct_idproperties_func: only during preprocessing.\n");
+ fprintf(stderr, "RNA_def_struct_idprops_func: only during preprocessing.\n");
return;
}
@@ -2728,14 +2728,16 @@ void RNA_def_property_free(StructOrFunctionRNA *cont_, PropertyRNA *prop)
{
ContainerRNA *cont= cont_;
- RNA_def_property_free_pointers(prop);
-
if(prop->flag & PROP_RUNTIME) {
if(cont->prophash)
BLI_ghash_remove(cont->prophash, (void*)prop->identifier, NULL, NULL);
+ RNA_def_property_free_pointers(prop);
rna_freelinkN(&cont->properties, prop);
}
+ else {
+ RNA_def_property_free_pointers(prop);
+ }
}
/* note: only intended for removing dynamic props */
diff --git a/source/blender/makesrna/intern/rna_fcurve.c b/source/blender/makesrna/intern/rna_fcurve.c
index 5dc75c5cf62..b37e5f91538 100644
--- a/source/blender/makesrna/intern/rna_fcurve.c
+++ b/source/blender/makesrna/intern/rna_fcurve.c
@@ -568,7 +568,7 @@ static void rna_def_fmodifier_generator(BlenderRNA *brna)
RNA_def_struct_sdna_from(srna, "FMod_Generator", "data");
/* define common props */
- prop= RNA_def_property(srna, "additive", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_additive", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", FCM_GENERATOR_ADDITIVE);
RNA_def_property_ui_text(prop, "Additive", "Values generated by this modifier are applied on top of the existing values instead of overwriting them");
RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL);
@@ -633,7 +633,7 @@ static void rna_def_fmodifier_function_generator(BlenderRNA *brna)
RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL);
/* flags */
- prop= RNA_def_property(srna, "additive", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_additive", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", FCM_GENERATOR_ADDITIVE);
RNA_def_property_ui_text(prop, "Additive", "Values generated by this modifier are applied on top of the existing values instead of overwriting them");
RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL);
@@ -660,12 +660,12 @@ static void rna_def_fmodifier_envelope_ctrl(BlenderRNA *brna)
* - for now, these are allowed to go past each other, so that we can have inverted action
* - technically, the range is limited by the settings in the envelope-modifier data, not here...
*/
- prop= RNA_def_property(srna, "minimum", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "min", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "min");
RNA_def_property_ui_text(prop, "Minimum Value", "Lower bound of envelope at this control-point");
RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL);
- prop= RNA_def_property(srna, "maximum", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "max", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "max");
RNA_def_property_ui_text(prop, "Maximum Value", "Upper bound of envelope at this control-point");
RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL);
@@ -701,12 +701,12 @@ static void rna_def_fmodifier_envelope(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Reference Value", "Value that envelope's influence is centered around / based on");
RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL);
- prop= RNA_def_property(srna, "default_minimum", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "default_min", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "min");
RNA_def_property_ui_text(prop, "Default Minimum", "Lower distance from Reference Value for 1:1 default influence");
RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL);
- prop= RNA_def_property(srna, "default_maximum", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "default_max", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "max");
RNA_def_property_ui_text(prop, "Default Maximum", "Upper distance from Reference Value for 1:1 default influence");
RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL);
@@ -731,22 +731,26 @@ static void rna_def_fmodifier_cycles(BlenderRNA *brna)
RNA_def_struct_sdna_from(srna, "FMod_Cycles", "data");
/* before */
- prop= RNA_def_property(srna, "before_mode", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "mode_before", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "before_mode");
RNA_def_property_enum_items(prop, prop_type_items);
RNA_def_property_ui_text(prop, "Before Mode", "Cycling mode to use before first keyframe");
RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL);
- prop= RNA_def_property(srna, "before_cycles", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "cycles_before", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "before_cycles");
RNA_def_property_ui_text(prop, "Before Cycles", "Maximum number of cycles to allow before first keyframe. (0 = infinite)");
RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL);
/* after */
- prop= RNA_def_property(srna, "after_mode", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "mode_after", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "after_mode");
RNA_def_property_enum_items(prop, prop_type_items);
RNA_def_property_ui_text(prop, "After Mode", "Cycling mode to use after last keyframe");
RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL);
- prop= RNA_def_property(srna, "after_cycles", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "cycles_after", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "after_cycles");
RNA_def_property_ui_text(prop, "After Cycles", "Maximum number of cycles to allow after last keyframe. (0 = infinite)");
RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL);
}
@@ -774,45 +778,45 @@ static void rna_def_fmodifier_limits(BlenderRNA *brna)
RNA_def_struct_ui_text(srna, "Limits F-Modifier", "Limits the time/value ranges of the modified F-Curve");
RNA_def_struct_sdna_from(srna, "FMod_Limits", "data");
- prop= RNA_def_property(srna, "use_minimum_x", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_min_x", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", FCM_LIMIT_XMIN);
RNA_def_property_ui_text(prop, "Minimum X", "Use the minimum X value");
RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL);
- prop= RNA_def_property(srna, "use_minimum_y", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_min_y", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", FCM_LIMIT_YMIN);
RNA_def_property_ui_text(prop, "Minimum Y", "Use the minimum Y value");
RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL);
- prop= RNA_def_property(srna, "use_maximum_x", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_max_x", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", FCM_LIMIT_XMAX);
RNA_def_property_ui_text(prop, "Maximum X", "Use the maximum X value");
RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL);
- prop= RNA_def_property(srna, "use_maximum_y", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_max_y", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", FCM_LIMIT_YMAX);
RNA_def_property_ui_text(prop, "Maximum Y", "Use the maximum Y value");
RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL);
- prop= RNA_def_property(srna, "minimum_x", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "min_x", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "rect.xmin");
RNA_def_property_float_funcs(prop, NULL, NULL, "rna_FModifierLimits_minx_range");
RNA_def_property_ui_text(prop, "Minimum X", "Lowest X value to allow");
RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL);
- prop= RNA_def_property(srna, "minimum_y", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "min_y", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "rect.ymin");
RNA_def_property_float_funcs(prop, NULL, NULL, "rna_FModifierLimits_miny_range");
RNA_def_property_ui_text(prop, "Minimum Y", "Lowest Y value to allow");
RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL);
- prop= RNA_def_property(srna, "maximum_x", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "max_x", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "rect.xmax");
RNA_def_property_float_funcs(prop, NULL, NULL, "rna_FModifierLimits_maxx_range");
RNA_def_property_ui_text(prop, "Maximum X", "Highest X value to allow");
RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL);
- prop= RNA_def_property(srna, "maximum_y", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "max_y", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "rect.ymax");
RNA_def_property_float_funcs(prop, NULL, NULL, "rna_FModifierLimits_maxy_range");
RNA_def_property_ui_text(prop, "Maximum Y", "Highest Y value to allow");
@@ -837,14 +841,15 @@ static void rna_def_fmodifier_noise(BlenderRNA *brna)
RNA_def_struct_ui_text(srna, "Noise F-Modifier", "Gives randomness to the modified F-Curve");
RNA_def_struct_sdna_from(srna, "FMod_Noise", "data");
- prop= RNA_def_property(srna, "modification", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "blend_type", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "modification");
RNA_def_property_enum_items(prop, prop_modification_items);
- RNA_def_property_ui_text(prop, "Modification", "Method of modifying the existing F-Curve");
+ RNA_def_property_ui_text(prop, "Blend Type", "Method of modifying the existing F-Curve");
RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL);
- prop= RNA_def_property(srna, "size", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "scale", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "size");
- RNA_def_property_ui_text(prop, "Size", "Scaling (in time) of the noise");
+ RNA_def_property_ui_text(prop, "Scale", "Scaling (in time) of the noise");
RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL);
prop= RNA_def_property(srna, "strength", PROP_FLOAT, PROP_NONE);
@@ -876,11 +881,12 @@ static void rna_def_fmodifier_stepped(BlenderRNA *brna)
RNA_def_struct_sdna_from(srna, "FMod_Stepped", "data");
/* properties */
- prop= RNA_def_property(srna, "step_size", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "frame_step", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "step_size");
RNA_def_property_ui_text(prop, "Step Size", "Number of frames to hold each value");
RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL);
- prop= RNA_def_property(srna, "offset", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "frame_offset", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "offset");
RNA_def_property_ui_text(prop, "Offset", "Reference number of frames before frames get held. Use to get hold for '1-3' vs '5-7' holding patterns");
RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL);
@@ -935,7 +941,7 @@ static void rna_def_fmodifier(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Type", "F-Curve Modifier Type");
/* settings */
- prop= RNA_def_property(srna, "expanded", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_expanded", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", FMODIFIER_FLAG_EXPANDED);
RNA_def_property_ui_text(prop, "Expanded", "F-Curve Modifier's panel is expanded in UI");
RNA_def_property_ui_icon(prop, ICON_TRIA_RIGHT, 1);
@@ -946,9 +952,9 @@ static void rna_def_fmodifier(BlenderRNA *brna)
RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_PROP, NULL);
RNA_def_property_ui_icon(prop, ICON_MUTE_IPO_OFF, 1);
- prop= RNA_def_property(srna, "disabled", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "is_valid", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- RNA_def_property_boolean_sdna(prop, NULL, "flag", FMODIFIER_FLAG_DISABLED);
+ RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", FMODIFIER_FLAG_DISABLED);
RNA_def_property_ui_text(prop, "Disabled", "F-Curve Modifier has invalid settings and will not be evaluated");
RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_PROP, NULL);
@@ -1019,7 +1025,7 @@ static void rna_def_drivertarget(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Type", "Driver variable type");
RNA_def_property_update(prop, 0, "rna_DriverTarget_update_data");
- prop= RNA_def_property(srna, "use_local_space_transforms", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_local_space_transform", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", DTAR_FLAG_LOCALSPACE);
RNA_def_property_ui_text(prop, "Local Space", "Use transforms in Local Space (as opposed to the worldspace default)");
RNA_def_property_update(prop, 0, "rna_DriverTarget_update_data");
@@ -1135,8 +1141,8 @@ static void rna_def_channeldriver(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Show Debug Info", "Show intermediate values for the driver calculations to allow debugging of drivers");
/* State Info (for Debugging) */
- prop= RNA_def_property(srna, "invalid", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "flag", DRIVER_FLAG_INVALID);
+ prop= RNA_def_property(srna, "is_valid", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", DRIVER_FLAG_INVALID);
RNA_def_property_ui_text(prop, "Invalid", "Driver could not be evaluated in past, so should be skipped");
@@ -1199,13 +1205,13 @@ static void rna_def_fkeyframe(BlenderRNA *brna)
RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_SELECTED, NULL);
/* Enums */
- prop= RNA_def_property(srna, "handle1_type", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "handle_left_type", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "h1");
RNA_def_property_enum_items(prop, beztriple_handle_type_items);
RNA_def_property_ui_text(prop, "Handle 1 Type", "Handle types");
RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_PROP, NULL);
- prop= RNA_def_property(srna, "handle2_type", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "handle_right_type", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "h2");
RNA_def_property_enum_items(prop, beztriple_handle_type_items);
RNA_def_property_ui_text(prop, "Handle 2 Type", "Handle types");
@@ -1224,7 +1230,7 @@ static void rna_def_fkeyframe(BlenderRNA *brna)
RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_PROP, NULL);
/* Vector values */
- prop= RNA_def_property(srna, "handle1", PROP_FLOAT, PROP_TRANSLATION);
+ prop= RNA_def_property(srna, "handle_left", PROP_FLOAT, PROP_TRANSLATION);
RNA_def_property_array(prop, 2);
RNA_def_property_float_funcs(prop, "rna_FKeyframe_handle1_get", "rna_FKeyframe_handle1_set", NULL);
RNA_def_property_ui_text(prop, "Handle 1", "Coordinates of the first handle");
@@ -1236,7 +1242,7 @@ static void rna_def_fkeyframe(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Control Point", "Coordinates of the control point");
RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL);
- prop= RNA_def_property(srna, "handle2", PROP_FLOAT, PROP_TRANSLATION);
+ prop= RNA_def_property(srna, "handle_right", PROP_FLOAT, PROP_TRANSLATION);
RNA_def_property_array(prop, 2);
RNA_def_property_float_funcs(prop, "rna_FKeyframe_handle2_get", "rna_FKeyframe_handle2_set", NULL);
RNA_def_property_ui_text(prop, "Handle 2", "Coordinates of the second handle");
@@ -1399,7 +1405,7 @@ static void rna_def_fcurve(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Muted", "F-Curve is not evaluated");
RNA_def_property_update(prop, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL);
- prop= RNA_def_property(srna, "auto_clamped_handles", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_auto_handle_clamp", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", FCURVE_AUTO_HANDLES);
RNA_def_property_ui_text(prop, "Auto Clamped Handles", "All auto-handles for F-Curve are clamped");
RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_PROP, NULL);
@@ -1410,9 +1416,9 @@ static void rna_def_fcurve(BlenderRNA *brna)
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_GRAPH, NULL);
/* State Info (for Debugging) */
- prop= RNA_def_property(srna, "enabled", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "is_valid", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", FCURVE_DISABLED);
- RNA_def_property_ui_text(prop, "Enabled", "False when F-Curve could not be evaluated in past, so should be skipped when evaluating");
+ RNA_def_property_ui_text(prop, "Valid", "False when F-Curve could not be evaluated in past, so should be skipped when evaluating");
RNA_def_property_update(prop, NC_ANIMATION|ND_KEYFRAME_PROP, NULL);
/* Collections */
@@ -1438,7 +1444,7 @@ static void rna_def_fcurve(BlenderRNA *brna)
parm= RNA_def_float(func, "frame", 1.0f, -FLT_MAX, FLT_MAX, "Frame", "Evaluate fcurve at given frame", -FLT_MAX, FLT_MAX);
RNA_def_property_flag(parm, PROP_REQUIRED);
/* return value */
- parm= RNA_def_float(func, "position", 0, -FLT_MAX, FLT_MAX, "Position", "Fcurve position", -FLT_MAX, FLT_MAX);
+ parm= RNA_def_float(func, "position", 0, -FLT_MAX, FLT_MAX, "Position", "FCurve position", -FLT_MAX, FLT_MAX);
RNA_def_function_return(func, parm);
func= RNA_def_function(srna, "range", "rna_fcurve_range");
diff --git a/source/blender/makesrna/intern/rna_fluidsim.c b/source/blender/makesrna/intern/rna_fluidsim.c
index 510b69d7f46..68060e2cfe3 100644
--- a/source/blender/makesrna/intern/rna_fluidsim.c
+++ b/source/blender/makesrna/intern/rna_fluidsim.c
@@ -228,11 +228,11 @@ static void rna_def_fluidsim_domain(BlenderRNA *brna)
RNA_def_property_enum_items(prop, quality_items);
RNA_def_property_ui_text(prop, "Render Display Mode", "How to display the mesh for rendering");
- prop= RNA_def_property(srna, "reverse_frames", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_reverse_frames", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", OB_FLUIDSIM_REVERSE);
RNA_def_property_ui_text(prop, "Reverse Frames", "Reverse fluid frames");
- prop= RNA_def_property(srna, "path", PROP_STRING, PROP_DIRPATH);
+ prop= RNA_def_property(srna, "filepath", PROP_STRING, PROP_DIRPATH);
RNA_def_property_string_maxlength(prop, 240);
RNA_def_property_string_sdna(prop, NULL, "surfdataPath");
RNA_def_property_ui_text(prop, "Path", "Directory (and/or filename prefix) to store baked fluid simulation files in");
@@ -250,7 +250,7 @@ static void rna_def_fluidsim_domain(BlenderRNA *brna)
RNA_def_property_range(prop, -1000.1, 1000.1);
RNA_def_property_ui_text(prop, "Gravity", "Gravity in X, Y and Z direction");
- prop= RNA_def_property(srna, "override_time", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_time_override", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", OB_FLUIDSIM_OVERRIDE_TIME);
RNA_def_property_ui_text(prop, "Override Time", "Use a custom start and end time (in seconds) instead of the scene's timeline");
@@ -264,7 +264,7 @@ static void rna_def_fluidsim_domain(BlenderRNA *brna)
RNA_def_property_range(prop, 0, 100);
RNA_def_property_ui_text(prop, "End Time", "Simulation time of the last blender frame (in seconds)");
- prop= RNA_def_property(srna, "real_world_size", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "simulation_scale", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "realsize");
RNA_def_property_range(prop, 0.001, 10);
RNA_def_property_ui_text(prop, "Real World Size", "Size of the simulation domain in metres");
@@ -300,7 +300,7 @@ static void rna_def_fluidsim_domain(BlenderRNA *brna)
rna_def_fluidsim_slip(srna);
- prop= RNA_def_property(srna, "surface_smoothing", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "surface_smooth", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "surfaceSmoothing");
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
RNA_def_property_range(prop, 0.0, 5.0);
@@ -312,7 +312,7 @@ static void rna_def_fluidsim_domain(BlenderRNA *brna)
RNA_def_property_range(prop, 0, 5);
RNA_def_property_ui_text(prop, "Surface Subdivisions", "Number of isosurface subdivisions. This is necessary for the inclusion of particles into the surface generation. Warning - can lead to longer computation times!");
- prop= RNA_def_property(srna, "generate_speed_vectors", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_speed_vectors", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "domainNovecgen", 0);
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
RNA_def_property_ui_text(prop, "Generate Speed Vectors", "Generate speed vectors for vector blur");
@@ -348,7 +348,7 @@ static void rna_def_fluidsim_volume(StructRNA *srna)
RNA_def_property_enum_items(prop, volume_type_items);
RNA_def_property_ui_text(prop, "Volume Initialization", "Volume initialization type");
- prop= RNA_def_property(srna, "export_animated_mesh", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_animated_mesh", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "domainNovecgen", 0);
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
RNA_def_property_ui_text(prop, "Export Animated Mesh", "Export this mesh as an animated one. Slower, only use if really necessary (e.g. armatures or parented objects), animated pos/rot/scale IPOs do not require it");
@@ -358,9 +358,9 @@ static void rna_def_fluidsim_active(StructRNA *srna)
{
PropertyRNA *prop;
- prop= RNA_def_property(srna, "active", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", OB_FLUIDSIM_ACTIVE);
- RNA_def_property_ui_text(prop, "Active", "Object contributes to the fluid simulation");
+ RNA_def_property_ui_text(prop, "Enabled", "Object contributes to the fluid simulation");
}
static void rna_def_fluidsim_fluid(BlenderRNA *brna)
@@ -420,7 +420,7 @@ static void rna_def_fluidsim_inflow(BlenderRNA *brna)
RNA_def_property_range(prop, -1000.1, 1000.1);
RNA_def_property_ui_text(prop, "Inflow Velocity", "Initial velocity of fluid");
- prop= RNA_def_property(srna, "local_coordinates", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_local_coords", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
RNA_def_property_boolean_sdna(prop, NULL, "typeFlags", OB_FSINFLOW_LOCALCOORD);
RNA_def_property_ui_text(prop, "Local Coordinates", "Use local coordinates for inflow. (e.g. for rotating objects)");
@@ -447,15 +447,15 @@ static void rna_def_fluidsim_particle(BlenderRNA *brna)
RNA_def_struct_sdna(srna, "FluidsimSettings");
RNA_def_struct_ui_text(srna, "Particle Fluid Simulation Settings", "Fluid simulation settings for objects storing fluid particles generated by the simulation");
- prop= RNA_def_property(srna, "drops", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_drops", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "typeFlags", OB_FSPART_DROP);
RNA_def_property_ui_text(prop, "Drops", "Show drop particles");
- prop= RNA_def_property(srna, "floats", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_floats", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "typeFlags", OB_FSPART_FLOAT);
RNA_def_property_ui_text(prop, "Floats", "Show floating foam particles");
- prop= RNA_def_property(srna, "tracer", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_tracer", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "typeFlags", OB_FSPART_TRACER);
RNA_def_property_ui_text(prop, "Tracer", "Show tracer particles");
@@ -469,7 +469,7 @@ static void rna_def_fluidsim_particle(BlenderRNA *brna)
RNA_def_property_range(prop, 0.0, 2.0);
RNA_def_property_ui_text(prop, "Alpha Influence", "Amount of particle alpha change, inverse of size influence: 0=off (all same alpha), 1=full. (large particles get lower alphas, smaller ones higher values)");
- prop= RNA_def_property(srna, "path", PROP_STRING, PROP_DIRPATH);
+ prop= RNA_def_property(srna, "filepath", PROP_STRING, PROP_DIRPATH);
RNA_def_property_string_maxlength(prop, 240);
RNA_def_property_string_sdna(prop, NULL, "surfdataPath");
RNA_def_property_ui_text(prop, "Path", "Directory (and/or filename prefix) to store and load particles from");
@@ -523,7 +523,7 @@ static void rna_def_fluidsim_control(BlenderRNA *brna)
RNA_def_property_range(prop, 5.0, 100.0);
RNA_def_property_ui_text(prop, "Quality", "Specifies the quality which is used for object sampling. (higher = better but slower)");
- prop= RNA_def_property(srna, "reverse_frames", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_reverse_frames", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", OB_FLUIDSIM_REVERSE);
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
RNA_def_property_ui_text(prop, "Reverse Frames", "Reverse control object movement");
diff --git a/source/blender/makesrna/intern/rna_gpencil.c b/source/blender/makesrna/intern/rna_gpencil.c
index 0994f67879e..c03af99ccb0 100644
--- a/source/blender/makesrna/intern/rna_gpencil.c
+++ b/source/blender/makesrna/intern/rna_gpencil.c
@@ -131,7 +131,7 @@ static void rna_def_gpencil_frame(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Frame Number", "The frame on which this sketch appears");
/* Flags */
- prop= RNA_def_property(srna, "paint_lock", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "is_edited", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_FRAME_PAINT); // XXX should it be editable?
RNA_def_property_ui_text(prop, "Paint Lock", "Frame is being edited (painted on)");
@@ -172,14 +172,14 @@ static void rna_def_gpencil_layer(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Color", "Color for all strokes in this layer");
RNA_def_property_update(prop, NC_SCREEN|ND_GPENCIL, NULL);
- prop= RNA_def_property(srna, "opacity", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "alpha", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "color[3]");
RNA_def_property_range(prop, 0.3, 1.0f);
RNA_def_property_ui_text(prop, "Opacity", "Layer Opacity");
RNA_def_property_update(prop, NC_SCREEN|ND_GPENCIL, NULL);
/* Line Thickness */
- prop= RNA_def_property(srna, "line_thickness", PROP_INT, PROP_NONE);
+ prop= RNA_def_property(srna, "line_width", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "thickness");
RNA_def_property_range(prop, 1, 10);
RNA_def_property_ui_text(prop, "Thickness", "Thickness of strokes (in pixels)");
@@ -191,7 +191,7 @@ static void rna_def_gpencil_layer(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Use Onion Skinning", "Ghost frames on either side of frame");
RNA_def_property_update(prop, NC_SCREEN|ND_GPENCIL, NULL);
- prop= RNA_def_property(srna, "max_ghost_range", PROP_INT, PROP_NONE);
+ prop= RNA_def_property(srna, "ghost_range_max", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "gstep");
RNA_def_property_range(prop, 0, 120);
RNA_def_property_ui_text(prop, "Max Ghost Range", "Maximum number of frames on either side of the active frame to show (0 = show the 'first' available sketch on either side)");
@@ -208,7 +208,7 @@ static void rna_def_gpencil_layer(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Locked", "Protect layer from further editing and/or frame changes");
RNA_def_property_update(prop, NC_SCREEN|ND_GPENCIL, NULL);
- prop= RNA_def_property(srna, "frame_lock", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "lock_frame", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", GP_LAYER_FRAMELOCK);
RNA_def_property_ui_text(prop, "Frame Locked", "Lock current frame displayed by layer");
RNA_def_property_update(prop, NC_SCREEN|ND_GPENCIL, NULL);
diff --git a/source/blender/makesrna/intern/rna_group.c b/source/blender/makesrna/intern/rna_group.c
index 707662e58e0..bd1b7c96998 100644
--- a/source/blender/makesrna/intern/rna_group.c
+++ b/source/blender/makesrna/intern/rna_group.c
@@ -117,7 +117,7 @@ void RNA_def_group(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Dupli Offset", "Offset from the origin to use when instancing as DupliGroup");
RNA_def_property_ui_range(prop, -10000.0, 10000.0, 10, 4);
- prop= RNA_def_property(srna, "layer", PROP_BOOLEAN, PROP_LAYER);
+ prop= RNA_def_property(srna, "layers", PROP_BOOLEAN, PROP_LAYER);
RNA_def_property_boolean_sdna(prop, NULL, "layer", 1);
RNA_def_property_array(prop, 20);
RNA_def_property_ui_text(prop, "Dupli Layers", "Layers visible when this groups is instanced as a dupli");
diff --git a/source/blender/makesrna/intern/rna_image.c b/source/blender/makesrna/intern/rna_image.c
index 7d8248b58ed..ea4821be9d9 100644
--- a/source/blender/makesrna/intern/rna_image.c
+++ b/source/blender/makesrna/intern/rna_image.c
@@ -223,7 +223,7 @@ static void rna_def_imageuser(BlenderRNA *brna)
srna= RNA_def_struct(brna, "ImageUser", NULL);
RNA_def_struct_ui_text(srna, "Image User", "Parameters defining how an Image datablock is used by another datablock");
- prop= RNA_def_property(srna, "auto_refresh", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_auto_refresh", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", IMA_ANIM_ALWAYS);
RNA_def_property_ui_text(prop, "Auto Refresh", "Always refresh image on frame changes");
RNA_def_property_update(prop, 0, "rna_ImageUser_update");
@@ -334,17 +334,17 @@ static void rna_def_image(BlenderRNA *brna)
RNA_def_property_update(prop, NC_IMAGE|ND_DISPLAY, NULL);
/* booleans */
- prop= RNA_def_property(srna, "fields", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_fields", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", IMA_FIELDS);
RNA_def_property_ui_text(prop, "Fields", "Use fields of the image");
RNA_def_property_update(prop, NC_IMAGE|ND_DISPLAY, "rna_Image_fields_update");
- prop= RNA_def_property(srna, "premultiply", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_premultiply", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", IMA_DO_PREMUL);
RNA_def_property_ui_text(prop, "Premultiply", "Convert RGB from key alpha to premultiplied alpha");
RNA_def_property_update(prop, NC_IMAGE|ND_DISPLAY, "rna_Image_reload_update");
- prop= RNA_def_property(srna, "dirty", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "is_dirty", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_funcs(prop, "rna_Image_dirty_get", NULL);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Dirty", "Image has changed and is not saved");
@@ -382,24 +382,24 @@ static void rna_def_image(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Display Aspect", "Display Aspect for this image, does not affect rendering");
RNA_def_property_update(prop, NC_IMAGE|ND_DISPLAY, NULL);
- prop= RNA_def_property(srna, "animated", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_animation", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "tpageflag", IMA_TWINANIM);
RNA_def_property_ui_text(prop, "Animated", "Use as animated texture in the game engine");
RNA_def_property_update(prop, NC_IMAGE|ND_DISPLAY, "rna_Image_animated_update");
- prop= RNA_def_property(srna, "animation_start", PROP_INT, PROP_NONE);
+ prop= RNA_def_property(srna, "frame_start", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "twsta");
RNA_def_property_range(prop, 0, 128);
RNA_def_property_ui_text(prop, "Animation Start", "Start frame of an animated texture");
RNA_def_property_update(prop, NC_IMAGE|ND_DISPLAY, "rna_Image_animated_update");
- prop= RNA_def_property(srna, "animation_end", PROP_INT, PROP_NONE);
+ prop= RNA_def_property(srna, "frame_end", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "twend");
RNA_def_property_range(prop, 0, 128);
RNA_def_property_ui_text(prop, "Animation End", "End frame of an animated texture");
RNA_def_property_update(prop, NC_IMAGE|ND_DISPLAY, "rna_Image_animated_update");
- prop= RNA_def_property(srna, "animation_speed", PROP_INT, PROP_NONE);
+ prop= RNA_def_property(srna, "fps", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "animspeed");
RNA_def_property_range(prop, 1, 100);
RNA_def_property_ui_text(prop, "Animation Speed", "Speed of the animation in frames per second");
@@ -422,12 +422,12 @@ static void rna_def_image(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Tiles Y", "Degree of repetition in the Y direction");
RNA_def_property_update(prop, NC_IMAGE|ND_DISPLAY, NULL);
- prop= RNA_def_property(srna, "clamp_x", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_clamp_x", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "tpageflag", IMA_CLAMP_U);
RNA_def_property_ui_text(prop, "Clamp X", "Disable texture repeating horizontally");
RNA_def_property_update(prop, NC_IMAGE|ND_DISPLAY, NULL);
- prop= RNA_def_property(srna, "clamp_y", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_clamp_y", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "tpageflag", IMA_CLAMP_V);
RNA_def_property_ui_text(prop, "Clamp Y", "Disable texture repeating vertically");
RNA_def_property_update(prop, NC_IMAGE|ND_DISPLAY, NULL);
diff --git a/source/blender/makesrna/intern/rna_image_api.c b/source/blender/makesrna/intern/rna_image_api.c
index efe3d39d6cd..70438ae3d8c 100644
--- a/source/blender/makesrna/intern/rna_image_api.c
+++ b/source/blender/makesrna/intern/rna_image_api.c
@@ -77,6 +77,8 @@ static void rna_Image_save_render(Image *image, bContext *C, ReportList *reports
if (!BKE_write_ibuf(NULL, ibuf, path, scene->r.imtype, scene->r.subimtype, scene->r.quality)) {
BKE_reportf(reports, RPT_ERROR, "Couldn't write image: %s", path);
}
+
+ BKE_image_release_ibuf(image, lock);
} else {
BKE_reportf(reports, RPT_ERROR, "Scene not in context, couldn't get save parameters");
}
diff --git a/source/blender/makesrna/intern/rna_internal.h b/source/blender/makesrna/intern/rna_internal.h
index 1a7036c7a36..669fc5d3871 100644
--- a/source/blender/makesrna/intern/rna_internal.h
+++ b/source/blender/makesrna/intern/rna_internal.h
@@ -189,9 +189,9 @@ void rna_ID_name_get(struct PointerRNA *ptr, char *value);
int rna_ID_name_length(struct PointerRNA *ptr);
void rna_ID_name_set(struct PointerRNA *ptr, const char *value);
struct StructRNA *rna_ID_refine(struct PointerRNA *ptr);
-struct IDProperty *rna_ID_idproperties(struct PointerRNA *ptr, int create);
+struct IDProperty *rna_ID_idprops(struct PointerRNA *ptr, int create);
void rna_ID_fake_user_set(struct PointerRNA *ptr, int value);
-struct IDProperty *rna_IDPropertyGroup_idproperties(struct PointerRNA *ptr, int create);
+struct IDProperty *rna_IDPropertyGroup_idprops(struct PointerRNA *ptr, int create);
void rna_IDPropertyGroup_unregister(const struct bContext *C, struct StructRNA *type);
struct StructRNA *rna_IDPropertyGroup_register(const struct bContext *C, struct ReportList *reports, void *data, const char *identifier, StructValidateFunc validate, StructCallbackFunc call, StructFreeFunc free);
struct StructRNA* rna_IDPropertyGroup_refine(struct PointerRNA *ptr);
diff --git a/source/blender/makesrna/intern/rna_key.c b/source/blender/makesrna/intern/rna_key.c
index 26a101303b1..970c825d30b 100644
--- a/source/blender/makesrna/intern/rna_key.c
+++ b/source/blender/makesrna/intern/rna_key.c
@@ -363,13 +363,13 @@ static void rna_def_keydata(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Location", "");
RNA_def_property_update(prop, 0, "rna_Key_update_data");
- prop= RNA_def_property(srna, "handle_1_co", PROP_FLOAT, PROP_TRANSLATION);
+ prop= RNA_def_property(srna, "handle_left", PROP_FLOAT, PROP_TRANSLATION);
RNA_def_property_array(prop, 3);
RNA_def_property_float_funcs(prop, "rna_ShapeKeyBezierPoint_handle_1_co_get", "rna_ShapeKeyBezierPoint_handle_1_co_set", NULL);
RNA_def_property_ui_text(prop, "Handle 1 Location", "");
RNA_def_property_update(prop, 0, "rna_Key_update_data");
- prop= RNA_def_property(srna, "handle_2_co", PROP_FLOAT, PROP_TRANSLATION);
+ prop= RNA_def_property(srna, "handle_right", PROP_FLOAT, PROP_TRANSLATION);
RNA_def_property_array(prop, 3);
RNA_def_property_float_funcs(prop, "rna_ShapeKeyBezierPoint_handle_2_co_get", "rna_ShapeKeyBezierPoint_handle_2_co_set", NULL);
RNA_def_property_ui_text(prop, "Handle 2 Location", "");
@@ -488,7 +488,7 @@ static void rna_def_key(BlenderRNA *brna)
RNA_def_property_pointer_sdna(prop, NULL, "from");
RNA_def_property_ui_text(prop, "User", "Datablock using these shape keys");
- prop= RNA_def_property(srna, "relative", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_relative", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "type", KEY_RELATIVE);
RNA_def_property_ui_text(prop, "Relative", "Makes shape keys relative");
RNA_def_property_update(prop, 0, "rna_Key_update_data");
diff --git a/source/blender/makesrna/intern/rna_lamp.c b/source/blender/makesrna/intern/rna_lamp.c
index 4e2504516ec..861593e4462 100644
--- a/source/blender/makesrna/intern/rna_lamp.c
+++ b/source/blender/makesrna/intern/rna_lamp.c
@@ -159,7 +159,7 @@ static void rna_def_lamp_mtex(BlenderRNA *brna)
RNA_def_struct_sdna(srna, "MTex");
RNA_def_struct_ui_text(srna, "Lamp Texture Slot", "Texture slot for textures in a Lamp datablock");
- prop= RNA_def_property(srna, "texture_coordinates", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "texture_coords", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "texco");
RNA_def_property_enum_items(prop, prop_texture_coordinates_items);
RNA_def_property_ui_text(prop, "Texture Coordinates", "");
@@ -170,12 +170,12 @@ static void rna_def_lamp_mtex(BlenderRNA *brna)
RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Object", "Object to use for mapping with Object texture coordinates");
- prop= RNA_def_property(srna, "map_color", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_map_color", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mapto", LAMAP_COL);
RNA_def_property_ui_text(prop, "Color", "Lets the texture affect the basic color of the lamp");
RNA_def_property_update(prop, 0, "rna_Lamp_update");
- prop= RNA_def_property(srna, "map_shadow", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_map_shadow", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mapto", LAMAP_SHAD);
RNA_def_property_ui_text(prop, "Shadow", "Lets the texture affect the shadow color of the lamp");
RNA_def_property_update(prop, 0, "rna_Lamp_update");
@@ -412,7 +412,7 @@ static void rna_def_lamp_falloff(StructRNA *srna)
RNA_def_property_ui_text(prop, "Falloff Curve", "Custom Lamp Falloff Curve");
RNA_def_property_update(prop, 0, "rna_Lamp_update");
- prop= RNA_def_property(srna, "sphere", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_sphere", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", LA_SPHERE);
RNA_def_property_ui_text(prop, "Sphere", "Sets light intensity to zero beyond lamp distance");
RNA_def_property_update(prop, 0, "rna_Lamp_draw_update");
@@ -468,12 +468,12 @@ static void rna_def_lamp_shadow(StructRNA *srna, int spot, int area)
RNA_def_property_ui_text(prop, "Shadow Color", "Color of shadows cast by the lamp");
RNA_def_property_update(prop, 0, "rna_Lamp_update");
- prop= RNA_def_property(srna, "only_shadow", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_only_shadow", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", LA_ONLYSHADOW);
RNA_def_property_ui_text(prop, "Only Shadow", "Causes light to cast shadows only without illuminating objects");
RNA_def_property_update(prop, 0, "rna_Lamp_update");
- prop= RNA_def_property(srna, "shadow_ray_sampling_method", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "shadow_ray_sample_method", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "ray_samp_method");
RNA_def_property_enum_items(prop, (area)? prop_spot_ray_sampling_method_items: prop_ray_sampling_method_items);
RNA_def_property_ui_text(prop, "Shadow Ray Sampling Method", "Method for generating shadow samples: Adaptive QMC is fastest, Constant QMC is less noisy but slower");
@@ -505,7 +505,7 @@ static void rna_def_lamp_shadow(StructRNA *srna, int spot, int area)
RNA_def_property_ui_text(prop, "Shadow Soft Size", "Light size for ray shadow sampling (Raytraced shadows)");
RNA_def_property_update(prop, 0, "rna_Lamp_update");
- prop= RNA_def_property(srna, "shadow_layer", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_shadow_layer", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", LA_LAYER_SHADOW);
RNA_def_property_ui_text(prop, "Shadow Layer", "Causes only objects on the same layer to cast shadows");
RNA_def_property_update(prop, 0, "rna_Lamp_update");
@@ -541,7 +541,7 @@ static void rna_def_area_lamp(BlenderRNA *brna)
rna_def_lamp_shadow(srna, 0, 1);
- prop= RNA_def_property(srna, "umbra", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_umbra", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "ray_samp_type", LA_SAMP_UMBRA);
RNA_def_property_ui_text(prop, "Umbra", "Emphasize parts that are fully shadowed (Constant Jittered sampling)");
RNA_def_property_update(prop, 0, "rna_Lamp_update");
@@ -618,7 +618,7 @@ static void rna_def_spot_lamp(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Square", "Casts a square spot light shape");
RNA_def_property_update(prop, 0, "rna_Lamp_draw_update");
- prop= RNA_def_property(srna, "halo", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_halo", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", LA_HALO);
RNA_def_property_ui_text(prop, "Halo", "Renders spotlight with a volumetric halo (Buffer Shadows)");
RNA_def_property_update(prop, 0, "rna_Lamp_update");
@@ -708,12 +708,12 @@ static void rna_def_spot_lamp(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Shadow Buffer Type", "Type of shadow buffer");
RNA_def_property_update(prop, 0, "rna_Lamp_update");
- prop= RNA_def_property(srna, "auto_clip_start", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_auto_clip_start", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "bufflag", LA_SHADBUF_AUTO_START);
RNA_def_property_ui_text(prop, "Autoclip Start", "Automatic calculation of clipping-start, based on visible vertices");
RNA_def_property_update(prop, 0, "rna_Lamp_draw_update");
- prop= RNA_def_property(srna, "auto_clip_end", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_auto_clip_end", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "bufflag", LA_SHADBUF_AUTO_END);
RNA_def_property_ui_text(prop, "Autoclip End", "Automatic calculation of clipping-end, based on visible vertices");
RNA_def_property_update(prop, 0, "rna_Lamp_draw_update");
diff --git a/source/blender/makesrna/intern/rna_lattice.c b/source/blender/makesrna/intern/rna_lattice.c
index 9f979582165..f27a1ef86c0 100644
--- a/source/blender/makesrna/intern/rna_lattice.c
+++ b/source/blender/makesrna/intern/rna_lattice.c
@@ -126,7 +126,7 @@ static void rna_Lattice_update_size(Main *bmain, Scene *scene, PointerRNA *ptr)
rna_Lattice_update_data(bmain, scene, ptr);
}
-static void rna_Lattice_outside_set(PointerRNA *ptr, int value)
+static void rna_Lattice_use_outside_set(PointerRNA *ptr, int value)
{
Lattice *lt= ptr->data;
@@ -198,7 +198,7 @@ static void rna_def_latticepoint(BlenderRNA *brna)
RNA_def_property_float_funcs(prop, "rna_LatticePoint_co_get", NULL, NULL);
RNA_def_property_ui_text(prop, "Location", "");
- prop= RNA_def_property(srna, "deformed_co", PROP_FLOAT, PROP_TRANSLATION);
+ prop= RNA_def_property(srna, "co_deform", PROP_FLOAT, PROP_TRANSLATION);
RNA_def_property_float_sdna(prop, NULL, "vec");
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Deformed Location", "");
@@ -267,9 +267,9 @@ static void rna_def_lattice(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Interpolation Type W", "");
RNA_def_property_update(prop, 0, "rna_Lattice_update_data");
- prop= RNA_def_property(srna, "outside", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_outside", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", LT_OUTSIDE);
- RNA_def_property_boolean_funcs(prop, NULL, "rna_Lattice_outside_set");
+ RNA_def_property_boolean_funcs(prop, NULL, "rna_Lattice_use_outside_set");
RNA_def_property_ui_text(prop, "Outside", "Only draw, and take into account, the outer vertices");
RNA_def_property_update(prop, 0, "rna_Lattice_update_data");
diff --git a/source/blender/makesrna/intern/rna_main.c b/source/blender/makesrna/intern/rna_main.c
index a6260791012..6e44b02834e 100644
--- a/source/blender/makesrna/intern/rna_main.c
+++ b/source/blender/makesrna/intern/rna_main.c
@@ -50,9 +50,9 @@ static void rna_Main_debug_set(PointerRNA *ptr, const int value)
G.f &= ~G_DEBUG;
}
-static int rna_Main_fileissaved_get(PointerRNA *ptr)
+static int rna_Main_is_dirty_get(PointerRNA *ptr)
{
- return G.relbase_valid;
+ return !G.relbase_valid;
}
static void rna_Main_filepath_get(PointerRNA *ptr, char *value)
@@ -299,7 +299,7 @@ void RNA_def_main(BlenderRNA *brna)
{"armatures", "Armature", "rna_Main_armature_begin", "Armatures", "Armature datablocks.", RNA_def_main_armatures},
{"actions", "Action", "rna_Main_action_begin", "Actions", "Action datablocks.", RNA_def_main_actions},
{"particles", "ParticleSettings", "rna_Main_particle_begin", "Particles", "Particle datablocks.", RNA_def_main_particles},
- {"gpencil", "GreasePencil", "rna_Main_gpencil_begin", "Grease Pencil", "Grease Pencil datablocks.", RNA_def_main_gpencil},
+ {"grease_pencil", "GreasePencil", "rna_Main_gpencil_begin", "Grease Pencil", "Grease Pencil datablocks.", RNA_def_main_gpencil},
{NULL, NULL, NULL, NULL, NULL, NULL}};
int i;
@@ -314,9 +314,9 @@ void RNA_def_main(BlenderRNA *brna)
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Filename", "Path to the .blend file");
- prop= RNA_def_property(srna, "file_is_saved", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "is_dirty", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- RNA_def_property_boolean_funcs(prop, "rna_Main_fileissaved_get", NULL);
+ RNA_def_property_boolean_funcs(prop, "rna_Main_is_dirty_get", NULL);
RNA_def_property_ui_text(prop, "File is Saved", "Has the current session been saved to disk as a .blend file");
prop= RNA_def_property(srna, "debug", PROP_BOOLEAN, PROP_NONE);
diff --git a/source/blender/makesrna/intern/rna_material.c b/source/blender/makesrna/intern/rna_material.c
index 9b4548e0de6..a98e9a81443 100644
--- a/source/blender/makesrna/intern/rna_material.c
+++ b/source/blender/makesrna/intern/rna_material.c
@@ -186,7 +186,7 @@ static void rna_MaterialStrand_end_size_range(PointerRNA *ptr, float *min, float
}
}
-static int rna_MaterialTextureSlot_enabled_get(PointerRNA *ptr)
+static int rna_MaterialTextureSlot_use_get(PointerRNA *ptr)
{
Material *ma= (Material*)ptr->id.data;
MTex *mtex= (MTex*)ptr->data;
@@ -199,7 +199,7 @@ static int rna_MaterialTextureSlot_enabled_get(PointerRNA *ptr)
return 0;
}
-static void rna_MaterialTextureSlot_enabled_set(PointerRNA *ptr, int value)
+static void rna_MaterialTextureSlot_use_set(PointerRNA *ptr, int value)
{
Material *ma= (Material*)ptr->id.data;
MTex *mtex= (MTex*)ptr->data;
@@ -323,7 +323,7 @@ static void rna_def_material_mtex(BlenderRNA *brna)
RNA_def_struct_sdna(srna, "MTex");
RNA_def_struct_ui_text(srna, "Material Texture Slot", "Texture slot for textures in a Material datablock");
- prop= RNA_def_property(srna, "texture_coordinates", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "texture_coords", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "texco");
RNA_def_property_enum_items(prop, prop_texture_coordinates_items);
RNA_def_property_enum_funcs(prop, NULL, NULL, "rna_Material_texture_coordinates_itemf");
@@ -342,99 +342,99 @@ static void rna_def_material_mtex(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "UV Layer", "UV layer to use for mapping with UV texture coordinates");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "from_dupli", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_from_dupli", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "texflag", MTEX_DUPLI_MAPTO);
RNA_def_property_ui_text(prop, "From Dupli", "Dupli's instanced from verts, faces or particles, inherit texture coordinate from their parent");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "from_original", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_from_original", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "texflag", MTEX_OB_DUPLI_ORIG);
RNA_def_property_ui_text(prop, "From Original", "Dupli's derive their object coordinates from the original objects transformation");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "map_colordiff", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_map_color_diffuse", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mapto", MAP_COL);
RNA_def_property_ui_text(prop, "Diffuse Color", "Causes the texture to affect basic color of the material");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "map_normal", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_map_normal", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mapto", MAP_NORM);
RNA_def_property_ui_text(prop, "Normal", "Causes the texture to affect the rendered normal");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "map_colorspec", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_map_color_spec", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mapto", MAP_COLSPEC);
RNA_def_property_ui_text(prop, "Specular Color", "Causes the texture to affect the specularity color");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "map_mirror", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_map_mirror", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mapto", MAP_COLMIR);
RNA_def_property_ui_text(prop, "Mirror", "Causes the texture to affect the mirror color");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "map_diffuse", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_map_diffuse", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mapto", MAP_REF);
RNA_def_property_ui_text(prop, "Diffuse", "Causes the texture to affect the value of the materials diffuse reflectivity");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "map_specular", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_map_specular", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mapto", MAP_SPEC);
RNA_def_property_ui_text(prop, "Specular", "Causes the texture to affect the value of specular reflectivity");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "map_ambient", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_map_ambient", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mapto", MAP_AMB);
RNA_def_property_ui_text(prop, "Ambient", "Causes the texture to affect the value of ambient");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "map_hardness", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_map_hardness", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mapto", MAP_HAR);
RNA_def_property_ui_text(prop, "Hardness", "Causes the texture to affect the hardness value");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "map_raymir", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_map_raymir", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mapto", MAP_RAYMIRR);
RNA_def_property_ui_text(prop, "Ray-Mirror", "Causes the texture to affect the ray-mirror value");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "map_alpha", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_map_alpha", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mapto", MAP_ALPHA);
RNA_def_property_ui_text(prop, "Alpha", "Causes the texture to affect the alpha value");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "map_emit", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_map_emit", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mapto", MAP_EMIT);
RNA_def_property_ui_text(prop, "Emit", "Causes the texture to affect the emit value");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "map_translucency", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_map_translucency", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mapto", MAP_TRANSLU);
RNA_def_property_ui_text(prop, "Translucency", "Causes the texture to affect the translucency value");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "map_displacement", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_map_displacement", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mapto", MAP_DISPLACE);
RNA_def_property_ui_text(prop, "Displacement", "Let the texture displace the surface");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "map_warp", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_map_warp", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mapto", MAP_WARP);
RNA_def_property_ui_text(prop, "Warp", "Let the texture warp texture coordinates of next channels");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "x_mapping", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "mapping_x", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "projx");
RNA_def_property_enum_items(prop, prop_x_mapping_items);
RNA_def_property_ui_text(prop, "X Mapping", "");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "y_mapping", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "mapping_y", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "projy");
RNA_def_property_enum_items(prop, prop_y_mapping_items);
RNA_def_property_ui_text(prop, "Y Mapping", "");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "z_mapping", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "mapping_z", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "projz");
RNA_def_property_enum_items(prop, prop_z_mapping_items);
RNA_def_property_ui_text(prop, "Z Mapping", "");
@@ -469,13 +469,13 @@ static void rna_def_material_mtex(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Warp Factor", "Amount texture affects texture coordinates of next channels");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "colorspec_factor", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "specular_color_factor", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "colspecfac");
RNA_def_property_ui_range(prop, 0, 1, 10, 3);
RNA_def_property_ui_text(prop, "Specular Color Factor", "Amount texture affects specular color");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "colordiff_factor", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "diffuse_color_factor", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "colfac");
RNA_def_property_ui_range(prop, 0, 1, 10, 3);
RNA_def_property_ui_text(prop, "Diffuse Color Factor", "Amount texture affects diffuse color");
@@ -536,54 +536,54 @@ static void rna_def_material_mtex(BlenderRNA *brna)
RNA_def_property_update(prop, 0, "rna_Material_update");
/* volume material */
- prop= RNA_def_property(srna, "map_coloremission", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_map_color_emission", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mapto", MAP_EMISSION_COL);
RNA_def_property_ui_text(prop, "Emission Color", "Causes the texture to affect the color of emission");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "map_colorreflection", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_map_color_reflection", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mapto", MAP_REFLECTION_COL);
RNA_def_property_ui_text(prop, "Reflection Color", "Causes the texture to affect the color of scattered light");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "map_colortransmission", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_map_color_transmission", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mapto", MAP_TRANSMISSION_COL);
RNA_def_property_ui_text(prop, "Transmission Color", "Causes the texture to affect the result color after other light has been scattered/absorbed");
RNA_def_property_update(prop, NC_TEXTURE, NULL);
- prop= RNA_def_property(srna, "map_density", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_map_density", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mapto", MAP_DENSITY);
RNA_def_property_ui_text(prop, "Density", "Causes the texture to affect the volume's density");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "map_emission", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_map_emission", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mapto", MAP_EMISSION);
RNA_def_property_ui_text(prop, "Emission", "Causes the texture to affect the volume's emission");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "map_scattering", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_map_scatter", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mapto", MAP_SCATTERING);
RNA_def_property_ui_text(prop, "Scattering", "Causes the texture to affect the volume's scattering");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "map_reflection", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_map_reflect", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mapto", MAP_REFLECTION);
RNA_def_property_ui_text(prop, "Reflection", "Causes the texture to affect the reflected light's brightness");
RNA_def_property_update(prop, NC_TEXTURE, NULL);
- prop= RNA_def_property(srna, "coloremission_factor", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "color_emission_factor", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "colemitfac");
RNA_def_property_ui_range(prop, 0, 1, 10, 3);
RNA_def_property_ui_text(prop, "Emission Color Factor", "Amount texture affects emission color");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "colorreflection_factor", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "reflection_color_factor", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "colreflfac");
RNA_def_property_ui_range(prop, 0, 1, 10, 3);
RNA_def_property_ui_text(prop, "Reflection Color Factor", "Amount texture affects color of out-scattered light");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "colortransmission_factor", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "transmission_color_factor", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "coltransfac");
RNA_def_property_ui_range(prop, 0, 1, 10, 3);
RNA_def_property_ui_text(prop, "Transmission Color Factor", "Amount texture affects result color after light has been scattered/absorbed");
@@ -615,14 +615,14 @@ static void rna_def_material_mtex(BlenderRNA *brna)
/* end volume material */
- prop= RNA_def_property(srna, "enabled", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_funcs(prop, "rna_MaterialTextureSlot_enabled_get", "rna_MaterialTextureSlot_enabled_set");
+ prop= RNA_def_property(srna, "use", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_funcs(prop, "rna_MaterialTextureSlot_use_get", "rna_MaterialTextureSlot_use_set");
RNA_def_property_ui_text(prop, "Enabled", "Enable this material texture slot");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "new_bump", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "texflag", MTEX_NEW_BUMP);
- RNA_def_property_ui_text(prop, "New Bump", "Use new, corrected bump mapping code (backwards compatibility option)");
+ prop= RNA_def_property(srna, "use_old_bump", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_negative_sdna(prop, NULL, "texflag", MTEX_NEW_BUMP);
+ RNA_def_property_ui_text(prop, "Old Bump", "Use old bump mapping (backwards compatibility option)");
RNA_def_property_update(prop, 0, "rna_Material_update");
}
@@ -823,7 +823,7 @@ static void rna_def_material_raymirror(BlenderRNA *brna)
RNA_def_struct_nested(brna, srna, "Material");
RNA_def_struct_ui_text(srna, "Material Raytrace Mirror", "Raytraced reflection settings for a Material datablock");
- prop= RNA_def_property(srna, "enabled", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_RAYMIRROR); /* use bitflags */
RNA_def_property_ui_text(prop, "Enabled", "Enable raytraced reflections");
RNA_def_property_update(prop, 0, "rna_Material_update");
@@ -984,7 +984,7 @@ static void rna_def_material_volume(BlenderRNA *brna)
RNA_def_struct_nested(brna, srna, "Material");
RNA_def_struct_ui_text(srna, "Material Volume", "Volume rendering settings for a Material datablock");
- prop= RNA_def_property(srna, "step_calculation", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "step_method", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "stepsize_type");
RNA_def_property_enum_items(prop, prop_stepsize_items);
RNA_def_property_ui_text(prop, "Step Calculation", "Method of calculating the steps through the volume");
@@ -997,18 +997,18 @@ static void rna_def_material_volume(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Step Size", "Distance between subsequent volume depth samples");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "lighting_mode", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "light_method", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "shade_type");
RNA_def_property_enum_items(prop, prop_lighting_items);
RNA_def_property_ui_text(prop, "Lighting Mode", "Method of shading, attenuating, and scattering light through the volume");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "external_shadows", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_external_shadows", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "shadeflag", MA_VOL_RECV_EXT_SHADOW); /* use bitflags */
RNA_def_property_ui_text(prop, "External Shadows", "Receive shadows from sources outside the volume (temporary)");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "light_cache", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_light_cache", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "shadeflag", MA_VOL_PRECACHESHADING); /* use bitflags */
RNA_def_property_ui_text(prop, "Light Cache", "Pre-calculate the shading information into a voxel grid, speeds up shading at slightly less accuracy");
RNA_def_property_update(prop, 0, "rna_Material_update");
@@ -1038,7 +1038,7 @@ static void rna_def_material_volume(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Intensity", "Multiplier for multiple scattered light energy");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "depth_cutoff", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "depth_threshold", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "depth_cutoff");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Depth Cutoff", "Stop ray marching early if transmission drops below this luminance - higher values give speedups in dense volumes at the expense of accuracy");
@@ -1132,19 +1132,19 @@ static void rna_def_material_halo(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Add", "Sets the strength of the add effect");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "rings", PROP_INT, PROP_NONE);
+ prop= RNA_def_property(srna, "ring_count", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "ringc");
RNA_def_property_range(prop, 0, 24);
RNA_def_property_ui_text(prop, "Rings", "Sets the number of rings rendered over the halo");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "line_number", PROP_INT, PROP_NONE);
+ prop= RNA_def_property(srna, "line_count", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "linec");
RNA_def_property_range(prop, 0, 250);
RNA_def_property_ui_text(prop, "Line Number", "Sets the number of star shaped lines rendered over the halo");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "star_tips", PROP_INT, PROP_NONE);
+ prop= RNA_def_property(srna, "star_tip_count", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "starc");
RNA_def_property_range(prop, 3, 50);
RNA_def_property_ui_text(prop, "Star Tips", "Sets the number of points on the star shaped halo");
@@ -1156,7 +1156,7 @@ static void rna_def_material_halo(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Seed", "Randomizes ring dimension and line location");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "flare_mode", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_flare_mode", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_HALO_FLARE); /* use bitflags */
RNA_def_property_ui_text(prop, "Flare", "Renders halo as a lensflare");
RNA_def_property_update(prop, 0, "rna_Material_update");
@@ -1167,7 +1167,7 @@ static void rna_def_material_halo(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Flare Size", "Sets the factor by which the flare is larger than the halo");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "flare_subsize", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "flare_subflare_size", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "subsize");
RNA_def_property_range(prop, 0.1f, 25.0f);
RNA_def_property_ui_text(prop, "Flare Subsize", "Sets the dimension of the subflares, dots and circles");
@@ -1185,7 +1185,7 @@ static void rna_def_material_halo(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Flare Seed", "Specifies an offset in the flare seed table");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "flares_sub", PROP_INT, PROP_NONE);
+ prop= RNA_def_property(srna, "flare_subflare_count", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "flarec");
RNA_def_property_range(prop, 1, 32);
RNA_def_property_ui_text(prop, "Flares Sub", "Sets the number of subflares");
@@ -1211,17 +1211,17 @@ static void rna_def_material_halo(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Texture", "Gives halo a texture");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "vertex_normal", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_vertex_normal", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_HALOPUNO);
RNA_def_property_ui_text(prop, "Vertex Normal", "Uses the vertex normal to specify the dimension of the halo");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "xalpha", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_extreme_alpha", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_HALO_XALPHA);
RNA_def_property_ui_text(prop, "Extreme Alpha", "Uses extreme alpha");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "shaded", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_shaded", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_HALO_SHADE);
RNA_def_property_ui_text(prop, "Shaded", "Lets halo receive light and shadows from external objects");
RNA_def_property_update(prop, 0, "rna_Material_update");
@@ -1254,7 +1254,7 @@ static void rna_def_material_sss(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Color", "Scattering color");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "error_tolerance", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "error_threshold", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "sss_error");
RNA_def_property_ui_range(prop, 0.0001, 10, 1, 3);
RNA_def_property_ui_text(prop, "Error Tolerance", "Error tolerance (low values are slower and higher quality)");
@@ -1296,7 +1296,7 @@ static void rna_def_material_sss(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Back", "Back scattering weight");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "enabled", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "sss_flag", MA_DIFF_SSS);
RNA_def_property_ui_text(prop, "Enabled", "Enable diffuse subsurface scatting effects in a material");
RNA_def_property_update(prop, 0, "rna_Material_update");
@@ -1372,12 +1372,12 @@ static void rna_def_material_strand(BlenderRNA *brna)
RNA_def_struct_nested(brna, srna, "Material");
RNA_def_struct_ui_text(srna, "Material Strand", "Strand settings for a Material datablock");
- prop= RNA_def_property(srna, "tangent_shading", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_tangent_shading", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_TANGENT_STR);
RNA_def_property_ui_text(prop, "Tangent Shading", "Uses direction of strands as normal for tangent-shading");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "surface_diffuse", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_surface_diffuse", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_STR_SURFDIFF);
RNA_def_property_ui_text(prop, "Surface Diffuse", "Make diffuse shading more similar to shading the surface");
RNA_def_property_update(prop, 0, "rna_Material_update");
@@ -1388,7 +1388,7 @@ static void rna_def_material_strand(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Blend Distance", "Worldspace distance over which to blend in the surface normal");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "blender_units", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_blender_units", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_STR_B_UNITS);
RNA_def_property_ui_text(prop, "Blender Units", "Use Blender units for widths instead of pixels");
RNA_def_property_update(prop, 0, "rna_Material_update");
@@ -1407,7 +1407,7 @@ static void rna_def_material_strand(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Tip Size", "End size of strands in pixels or Blender units");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "min_size", PROP_FLOAT, PROP_UNSIGNED);
+ prop= RNA_def_property(srna, "size_min", PROP_FLOAT, PROP_UNSIGNED);
RNA_def_property_float_sdna(prop, NULL, "strand_min");
RNA_def_property_range(prop, 0.001, 10);
RNA_def_property_ui_text(prop, "Minimum Size", "Minimum size of strands in pixels");
@@ -1441,7 +1441,7 @@ static void rna_def_material_physics(BlenderRNA *brna)
RNA_def_struct_nested(brna, srna, "Material");
RNA_def_struct_ui_text(srna, "Material Physics", "Physics settings for a Material datablock");
- prop= RNA_def_property(srna, "align_to_normal", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_normal_align", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "dynamode", MA_FH_NOR);
RNA_def_property_ui_text(prop, "Align to Normal", "Align dynamic game objects along the surface normal, when inside the physics distance area");
@@ -1508,7 +1508,7 @@ void RNA_def_material(BlenderRNA *brna)
RNA_def_property_enum_funcs(prop, NULL, "rna_Material_type_set", NULL);
RNA_def_property_update(prop, 0, "rna_Material_draw_update");
- prop= RNA_def_property(srna, "transparency", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_transparency", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_TRANSP);
RNA_def_property_ui_text(prop, "Transparency", "Render material as transparent");
RNA_def_property_update(prop, 0, "rna_Material_update");
@@ -1548,7 +1548,7 @@ void RNA_def_material(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Cubic Interpolation", "Use cubic interpolation for diffuse values, for smoother transitions");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "object_color", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_object_color", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "shade_flag", MA_OBCOLOR);
RNA_def_property_ui_text(prop, "Object Color", "Modulate the result with a per-object color");
RNA_def_property_update(prop, 0, "rna_Material_update");
@@ -1563,7 +1563,7 @@ void RNA_def_material(BlenderRNA *brna)
RNA_def_property_range(prop, 0, 10);
RNA_def_property_ui_text(prop, "Shadow Buffer Bias", "Factor to multiply shadow buffer bias with (0 is ignore.)");
- prop= RNA_def_property(srna, "shadow_casting_alpha", PROP_FLOAT, PROP_FACTOR);
+ prop= RNA_def_property(srna, "shadow_cast_alpha", PROP_FLOAT, PROP_FACTOR);
RNA_def_property_float_sdna(prop, NULL, "shad_alpha");
RNA_def_property_range(prop, 0.001, 1);
RNA_def_property_ui_text(prop, "Shadow Casting Alpha", "Shadow casting alpha, in use for Irregular and Deep shadow buffer");
@@ -1578,12 +1578,12 @@ void RNA_def_material(BlenderRNA *brna)
/* flags */
- prop= RNA_def_property(srna, "light_group_exclusive", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_light_group_exclusive", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_GROUP_NOLAY);
RNA_def_property_ui_text(prop, "Light Group Exclusive", "Material uses the light group exclusively - these lamps are excluded from other scene lighting");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "traceable", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_raytrace", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_TRACEBLE);
RNA_def_property_ui_text(prop, "Traceable", "Include this material and geometry that uses it in ray tracing calculations");
RNA_def_property_update(prop, 0, "rna_Material_update");
@@ -1593,17 +1593,17 @@ void RNA_def_material(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Shadows", "Allows this material to receive shadows");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "shadeless", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_shadeless", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_SHLESS);
RNA_def_property_ui_text(prop, "Shadeless", "Makes this material insensitive to light or shadow");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "vertex_color_light", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_vertex_color_light", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_VERTEXCOL);
RNA_def_property_ui_text(prop, "Vertex Color Light", "Add vertex colors as additional lighting");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "vertex_color_paint", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_vertex_color_paint", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_VERTEXCOLP);
RNA_def_property_ui_text(prop, "Vertex Color Paint", "Replaces object base color with vertex colors (multiplies with 'texture face' face assigned textures)");
RNA_def_property_update(prop, 0, "rna_Material_update");
@@ -1613,7 +1613,7 @@ void RNA_def_material(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Invert Z Depth", "Renders material's faces with an inverted Z buffer (scanline only)");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "z_offset", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "offset_z", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "zoffs");
RNA_def_property_ui_text(prop, "Z Offset", "Gives faces an artificial offset in the Z buffer for Z transparency");
RNA_def_property_update(prop, 0, "rna_Material_update");
@@ -1623,57 +1623,57 @@ void RNA_def_material(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Sky", "Renders this material with zero alpha, with sky background in place (scanline only)");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "only_shadow", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_only_shadow", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_ONLYSHADOW);
RNA_def_property_ui_text(prop, "Only Shadow", "Renders shadows as the material's alpha value, making materials transparent except for shadowed areas");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "face_texture", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_face_texture", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_FACETEXTURE);
RNA_def_property_ui_text(prop, "Face Textures", "Replaces the object's base color with color from face assigned image textures");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "face_texture_alpha", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_face_texture_alpha", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_FACETEXTURE_ALPHA);
RNA_def_property_ui_text(prop, "Face Textures Alpha", "Replaces the object's base alpha value with alpha from face assigned image textures");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "cast_shadows_only", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_cast_shadows_only", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_ONLYCAST);
RNA_def_property_ui_text(prop, "Cast Shadows Only", "Makes objects with this material appear invisible, only casting shadows (not rendered)");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "exclude_mist", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_NOMIST);
- RNA_def_property_ui_text(prop, "Exclude Mist", "Excludes this material from mist effects (in world settings)");
+ prop= RNA_def_property(srna, "use_mist", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_negative_sdna(prop, NULL, "mode", MA_NOMIST);
+ RNA_def_property_ui_text(prop, "Use Mist", "Use mist with this material (in world settings)");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "receive_transparent_shadows", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_transparent_shadows", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_SHADOW_TRA);
RNA_def_property_ui_text(prop, "Receive Transparent Shadows", "Allow this object to receive transparent shadows casted through other objects");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "ray_shadow_bias", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_ray_shadow_bias", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_RAYBIAS);
RNA_def_property_ui_text(prop, "Ray Shadow Bias", "Prevents raytraced shadow errors on surfaces with smooth shaded normals (terminator problem)");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "full_oversampling", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_full_oversampling", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_FULL_OSA);
RNA_def_property_ui_text(prop, "Full Oversampling", "Force this material to render full shading/textures for all anti-aliasing samples");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "cast_buffer_shadows", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_cast_buffer_shadows", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_SHADBUF);
RNA_def_property_ui_text(prop, "Cast Buffer Shadows", "Allow this material to cast shadows from shadow buffer lamps");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "cast_approximate", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_cast_approximate", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "shade_flag", MA_APPROX_OCCLUSION);
RNA_def_property_ui_text(prop, "Cast Approximate", "Allow this material to cast shadows when using approximate ambient occlusion.");
RNA_def_property_update(prop, 0, "rna_Material_update");
- prop= RNA_def_property(srna, "tangent_shading", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_tangent_shading", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_TANGENT_V);
RNA_def_property_ui_text(prop, "Tangent Shading", "Use the material's tangent vector instead of the normal for shading - for anisotropic shading effects");
RNA_def_property_update(prop, 0, "rna_Material_update");
diff --git a/source/blender/makesrna/intern/rna_material_api.c b/source/blender/makesrna/intern/rna_material_api.c
index 03eba157bf3..d271b3b374c 100644
--- a/source/blender/makesrna/intern/rna_material_api.c
+++ b/source/blender/makesrna/intern/rna_material_api.c
@@ -42,7 +42,7 @@
Adds material to the first free texture slot.
If all slots are busy, replaces the first.
*/
-static void rna_Material_add_texture(Material *ma, Tex *tex, int mapto, int texco)
+static void rna_Material_add_texture(Material *ma, Tex *tex, int texco, int mapto)
{
int i;
MTex *mtex;
@@ -71,8 +71,8 @@ static void rna_Material_add_texture(Material *ma, Tex *tex, int mapto, int texc
if (tex)
id_us_plus(&tex->id);
- mtex->texco= mapto;
- mtex->mapto= texco;
+ mtex->texco= texco;
+ mtex->mapto= mapto;
}
#else
@@ -119,8 +119,9 @@ void RNA_api_material(StructRNA *srna)
RNA_def_function_ui_description(func, "Add a texture to material's free texture slot.");
parm= RNA_def_pointer(func, "texture", "Texture", "Texture", "Texture to add.");
RNA_def_property_flag(parm, PROP_REQUIRED);
- parm= RNA_def_enum(func, "texture_coordinates", prop_texture_coordinates_items, TEXCO_UV, "", "Source of texture coordinate information."); /* optional */
+ parm= RNA_def_enum(func, "texture_coords", prop_texture_coordinates_items, TEXCO_UV, "", "Source of texture coordinate information."); /* optional */
parm= RNA_def_enum(func, "map_to", prop_texture_mapto_items, MAP_COL, "", "Controls which material property the texture affects."); /* optional */
+ RNA_def_property_flag(parm, PROP_ENUM_FLAG);
}
#endif
diff --git a/source/blender/makesrna/intern/rna_mesh.c b/source/blender/makesrna/intern/rna_mesh.c
index c3125785fb1..f3818a94487 100644
--- a/source/blender/makesrna/intern/rna_mesh.c
+++ b/source/blender/makesrna/intern/rna_mesh.c
@@ -58,22 +58,29 @@ static void rna_Mesh_update_data(Main *bmain, Scene *scene, PointerRNA *ptr)
{
ID *id= ptr->id.data;
- DAG_id_flush_update(id, OB_RECALC_DATA);
- WM_main_add_notifier(NC_GEOM|ND_DATA, id);
+ /* cheating way for importers to avoid slow updates */
+ if(id->us > 0) {
+ DAG_id_flush_update(id, OB_RECALC_DATA);
+ WM_main_add_notifier(NC_GEOM|ND_DATA, id);
+ }
}
static void rna_Mesh_update_select(Main *bmain, Scene *scene, PointerRNA *ptr)
{
ID *id= ptr->id.data;
-
- WM_main_add_notifier(NC_GEOM|ND_SELECT, id);
+ /* cheating way for importers to avoid slow updates */
+ if(id->us > 0) {
+ WM_main_add_notifier(NC_GEOM|ND_SELECT, id);
+ }
}
void rna_Mesh_update_draw(Main *bmain, Scene *scene, PointerRNA *ptr)
{
ID *id= ptr->id.data;
-
- WM_main_add_notifier(NC_GEOM|ND_DATA, id);
+ /* cheating way for importers to avoid slow updates */
+ if(id->us > 0) {
+ WM_main_add_notifier(NC_GEOM|ND_DATA, id);
+ }
}
static void rna_MeshVertex_normal_get(PointerRNA *ptr, float *value)
@@ -1211,7 +1218,7 @@ static char *rna_MeshIntPropertyLayer_path(PointerRNA *ptr)
static char *rna_MeshIntProperty_path(PointerRNA *ptr)
{
- return rna_CustomDataData_path(ptr, "int_layers", CD_MCOL);
+ return rna_CustomDataData_path(ptr, "layers_int", CD_MCOL);
}
static char *rna_MeshFloatPropertyLayer_path(PointerRNA *ptr)
@@ -1221,7 +1228,7 @@ static char *rna_MeshFloatPropertyLayer_path(PointerRNA *ptr)
static char *rna_MeshFloatProperty_path(PointerRNA *ptr)
{
- return rna_CustomDataData_path(ptr, "float_layers", CD_MCOL);
+ return rna_CustomDataData_path(ptr, "layers_float", CD_MCOL);
}
static char *rna_MeshStringPropertyLayer_path(PointerRNA *ptr)
@@ -1231,7 +1238,7 @@ static char *rna_MeshStringPropertyLayer_path(PointerRNA *ptr)
static char *rna_MeshStringProperty_path(PointerRNA *ptr)
{
- return rna_CustomDataData_path(ptr, "string_layers", CD_MCOL);
+ return rna_CustomDataData_path(ptr, "layers_string", CD_MCOL);
}
static int rna_Mesh_tot_vert_get(PointerRNA *ptr)
@@ -1334,7 +1341,7 @@ static void rna_def_medge(BlenderRNA *brna)
RNA_def_struct_path_func(srna, "rna_MeshEdge_path");
RNA_def_struct_ui_icon(srna, ICON_EDGESEL);
- prop= RNA_def_property(srna, "verts", PROP_INT, PROP_UNSIGNED);
+ prop= RNA_def_property(srna, "vertices", PROP_INT, PROP_UNSIGNED);
RNA_def_property_int_sdna(prop, NULL, "v1");
RNA_def_property_array(prop, 2);
RNA_def_property_ui_text(prop, "Vertices", "Vertex indices");
@@ -1360,24 +1367,22 @@ static void rna_def_medge(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Hide", "");
RNA_def_property_update(prop, 0, "rna_Mesh_update_select");
- prop= RNA_def_property(srna, "seam", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_seam", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ME_SEAM);
RNA_def_property_ui_text(prop, "Seam", "Seam edge for UV unwrapping");
RNA_def_property_update(prop, 0, "rna_Mesh_update_select");
- prop= RNA_def_property(srna, "sharp", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_edge_sharp", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ME_SHARP);
RNA_def_property_ui_text(prop, "Sharp", "Sharp edge for the EdgeSplit modifier");
RNA_def_property_update(prop, 0, "rna_Mesh_update_data");
- prop= RNA_def_property(srna, "loose", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "is_loose", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ME_LOOSEEDGE);
- RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Loose", "Loose edge");
- prop= RNA_def_property(srna, "fgon", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "is_fgon", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ME_FGON);
- RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Fgon", "Fgon edge");
prop= RNA_def_property(srna, "index", PROP_INT, PROP_UNSIGNED);
@@ -1398,7 +1403,7 @@ static void rna_def_mface(BlenderRNA *brna)
RNA_def_struct_ui_icon(srna, ICON_FACESEL);
// XXX allows creating invalid meshes
- prop= RNA_def_property(srna, "verts", PROP_INT, PROP_UNSIGNED);
+ prop= RNA_def_property(srna, "vertices", PROP_INT, PROP_UNSIGNED);
RNA_def_property_array(prop, 4);
RNA_def_property_flag(prop, PROP_DYNAMIC);
RNA_def_property_dynamic_array_funcs(prop, "rna_MeshFace_verts_get_length");
@@ -1406,7 +1411,7 @@ static void rna_def_mface(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Vertices", "Vertex indices");
/* leaving this fixed size array for foreach_set used in import scripts */
- prop= RNA_def_property(srna, "verts_raw", PROP_INT, PROP_UNSIGNED);
+ prop= RNA_def_property(srna, "vertices_raw", PROP_INT, PROP_UNSIGNED);
RNA_def_property_int_sdna(prop, NULL, "v1");
RNA_def_property_array(prop, 4);
RNA_def_property_ui_text(prop, "Vertices", "Fixed size vertex indices array");
@@ -1427,7 +1432,7 @@ static void rna_def_mface(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Hide", "");
RNA_def_property_update(prop, 0, "rna_Mesh_update_select");
- prop= RNA_def_property(srna, "smooth", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_smooth", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ME_SMOOTH);
RNA_def_property_ui_text(prop, "Smooth", "");
RNA_def_property_update(prop, 0, "rna_Mesh_update_data");
@@ -1509,67 +1514,68 @@ static void rna_def_mtface(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Image", "");
RNA_def_property_update(prop, 0, "rna_Mesh_update_data");
- prop= RNA_def_property(srna, "tex", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_image", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", TF_TEX);
RNA_def_property_ui_text(prop, "Tex", "Render face with texture");
RNA_def_property_update(prop, 0, "rna_Mesh_update_data");
- prop= RNA_def_property(srna, "light", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_light", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", TF_LIGHT);
RNA_def_property_ui_text(prop, "Light", "Use light for face");
RNA_def_property_update(prop, 0, "rna_Mesh_update_data");
- prop= RNA_def_property(srna, "invisible", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "hide", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", TF_INVISIBLE);
RNA_def_property_ui_text(prop, "Invisible", "Make face invisible");
RNA_def_property_update(prop, 0, "rna_Mesh_update_data");
- prop= RNA_def_property(srna, "collision", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_collision", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", TF_DYNAMIC);
RNA_def_property_ui_text(prop, "Collision", "Use face for collision and ray-sensor detection");
RNA_def_property_update(prop, 0, "rna_Mesh_update_data");
- prop= RNA_def_property(srna, "shared", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_blend_shared", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", TF_SHAREDCOL);
RNA_def_property_ui_text(prop, "Shared", "Blend vertex colors across face when vertices are shared");
RNA_def_property_update(prop, 0, "rna_Mesh_update_data");
- prop= RNA_def_property(srna, "twoside", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_twoside", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", TF_TWOSIDE);
RNA_def_property_ui_text(prop, "Two-side", "Render face two-sided");
RNA_def_property_update(prop, 0, "rna_Mesh_update_data");
- prop= RNA_def_property(srna, "object_color", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_object_color", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", TF_OBCOL);
RNA_def_property_ui_text(prop, "Object Color", "Use ObColor instead of vertex colors");
RNA_def_property_update(prop, 0, "rna_Mesh_update_data");
- prop= RNA_def_property(srna, "halo", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_halo", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", TF_BILLBOARD);
RNA_def_property_ui_text(prop, "Halo", "Screen aligned billboard");
RNA_def_property_update(prop, 0, "rna_Mesh_update_data");
- prop= RNA_def_property(srna, "billboard", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_billboard", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", TF_BILLBOARD2);
RNA_def_property_ui_text(prop, "Billboard", "Billboard with Z-axis constraint");
RNA_def_property_update(prop, 0, "rna_Mesh_update_data");
- prop= RNA_def_property(srna, "shadow", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_shadow_cast", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", TF_SHADOW);
RNA_def_property_ui_text(prop, "Shadow", "Face is used for shadow");
RNA_def_property_update(prop, 0, "rna_Mesh_update_data");
- prop= RNA_def_property(srna, "text", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_bitmap_text", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", TF_BMFONT);
RNA_def_property_ui_text(prop, "Text", "Enable bitmap text on face");
RNA_def_property_update(prop, 0, "rna_Mesh_update_data");
- prop= RNA_def_property(srna, "alpha_sort", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_alpha_sort", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", TF_ALPHASORT);
RNA_def_property_ui_text(prop, "Alpha Sort", "Enable sorting of faces for correct alpha drawing (slow, use Clip Alpha instead when possible)");
RNA_def_property_update(prop, 0, "rna_Mesh_update_data");
- prop= RNA_def_property(srna, "transp", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "blend_type", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "transp");
RNA_def_property_enum_items(prop, transp_items);
RNA_def_property_ui_text(prop, "Transparency", "Transparency blending mode");
RNA_def_property_update(prop, 0, "rna_Mesh_update_data");
@@ -1580,7 +1586,7 @@ static void rna_def_mtface(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "UV Selected", "");
RNA_def_property_update(prop, 0, "rna_Mesh_update_select");
- prop= RNA_def_property(srna, "uv_pinned", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "pin_uv", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "unwrap", TF_PIN1);
RNA_def_property_array(prop, 4);
RNA_def_property_ui_text(prop, "UV Pinned", "");
@@ -1912,7 +1918,7 @@ static void rna_def_mesh(BlenderRNA *brna)
RNA_def_struct_ui_text(srna, "Mesh", "Mesh datablock defining geometric surfaces");
RNA_def_struct_ui_icon(srna, ICON_MESH_DATA);
- prop= RNA_def_property(srna, "verts", PROP_COLLECTION, PROP_NONE);
+ prop= RNA_def_property(srna, "vertices", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_sdna(prop, NULL, "mvert", "totvert");
RNA_def_property_struct_type(prop, "MeshVertex");
RNA_def_property_ui_text(prop, "Vertices", "Vertices of the mesh");
@@ -2026,34 +2032,34 @@ static void rna_def_mesh(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Active Ptex Index", "Active ptex layer index");
/* float layers */
- prop= RNA_def_property(srna, "float_layers", PROP_COLLECTION, PROP_NONE);
+ prop= RNA_def_property(srna, "layers_float", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_sdna(prop, NULL, "fdata.layers", "fdata.totlayer");
RNA_def_property_collection_funcs(prop, "rna_Mesh_float_layers_begin", 0, 0, 0, "rna_Mesh_float_layers_length", 0, 0);
RNA_def_property_struct_type(prop, "MeshFloatPropertyLayer");
RNA_def_property_ui_text(prop, "Float Property Layers", "");
- prop= RNA_def_property(srna, "int_layers", PROP_COLLECTION, PROP_NONE);
+ prop= RNA_def_property(srna, "layers_int", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_sdna(prop, NULL, "fdata.layers", "fdata.totlayer");
RNA_def_property_collection_funcs(prop, "rna_Mesh_int_layers_begin", 0, 0, 0, "rna_Mesh_int_layers_length", 0, 0);
RNA_def_property_struct_type(prop, "MeshIntPropertyLayer");
RNA_def_property_ui_text(prop, "Int Property Layers", "");
- prop= RNA_def_property(srna, "string_layers", PROP_COLLECTION, PROP_NONE);
+ prop= RNA_def_property(srna, "layers_string", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_sdna(prop, NULL, "fdata.layers", "fdata.totlayer");
RNA_def_property_collection_funcs(prop, "rna_Mesh_string_layers_begin", 0, 0, 0, "rna_Mesh_string_layers_length", 0, 0);
RNA_def_property_struct_type(prop, "MeshStringPropertyLayer");
RNA_def_property_ui_text(prop, "String Property Layers", "");
- prop= RNA_def_property(srna, "autosmooth", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_auto_smooth", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ME_AUTOSMOOTH);
RNA_def_property_ui_text(prop, "Auto Smooth", "Treats all set-smoothed faces with angles less than the specified angle as 'smooth' during render");
- prop= RNA_def_property(srna, "autosmooth_angle", PROP_INT, PROP_NONE);
+ prop= RNA_def_property(srna, "auto_smooth_angle", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "smoothresh");
RNA_def_property_range(prop, 1, 80);
RNA_def_property_ui_text(prop, "Auto Smooth Angle", "Defines maximum angle between face normals that 'Auto Smooth' will operate on");
- prop= RNA_def_property(srna, "double_sided", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_double_sided", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ME_TWOSIDED);
RNA_def_property_ui_text(prop, "Double Sided", "Render/display the mesh with double or single sided lighting");
RNA_def_property_update(prop, 0, "rna_Mesh_update_data");
@@ -2068,11 +2074,11 @@ static void rna_def_mesh(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Shape Keys", "");
/* texture space */
- prop= RNA_def_property(srna, "auto_texspace", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_auto_texspace", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "texflag", AUTOSPACE);
RNA_def_property_ui_text(prop, "Auto Texture Space", "Adjusts active object's texture space automatically when transforming object");
- prop= RNA_def_property(srna, "texspace_loc", PROP_FLOAT, PROP_TRANSLATION);
+ prop= RNA_def_property(srna, "texspace_location", PROP_FLOAT, PROP_TRANSLATION);
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Texture Space Location", "Texture space location");
RNA_def_property_editable_func(prop, "rna_Mesh_texspace_editable");
@@ -2101,62 +2107,62 @@ static void rna_def_mesh(BlenderRNA *brna)
/* Mesh Draw Options for Edit Mode*/
- prop= RNA_def_property(srna, "draw_edges", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_edges", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "drawflag", ME_DRAWEDGES);
RNA_def_property_ui_text(prop, "Draw Edges", "Displays selected edges using highlights in the 3D view and UV editor");
RNA_def_property_update(prop, 0, "rna_Mesh_update_draw");
- prop= RNA_def_property(srna, "all_edges", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_all_edges", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "drawflag", ME_ALLEDGES);
RNA_def_property_ui_text(prop, "All Edges", "Displays all edges for wireframe in all view modes in the 3D view");
RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, NULL);
- prop= RNA_def_property(srna, "draw_faces", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_faces", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "drawflag", ME_DRAWFACES);
RNA_def_property_ui_text(prop, "Draw Faces", "Displays all faces as shades in the 3D view and UV editor");
RNA_def_property_update(prop, 0, "rna_Mesh_update_draw");
- prop= RNA_def_property(srna, "draw_normals", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_normal_face", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "drawflag", ME_DRAWNORMALS);
RNA_def_property_ui_text(prop, "Draw Normals", "Displays face normals as lines");
RNA_def_property_update(prop, 0, "rna_Mesh_update_draw");
- prop= RNA_def_property(srna, "draw_vertex_normals", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_normal_vertex", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "drawflag", ME_DRAW_VNORMALS);
RNA_def_property_ui_text(prop, "Draw Vertex Normals", "Displays vertex normals as lines");
RNA_def_property_update(prop, 0, "rna_Mesh_update_draw");
- prop= RNA_def_property(srna, "draw_creases", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_edge_crease", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "drawflag", ME_DRAWCREASES);
RNA_def_property_ui_text(prop, "Draw Creases", "Displays creases created for subsurf weighting");
RNA_def_property_update(prop, 0, "rna_Mesh_update_draw");
- prop= RNA_def_property(srna, "draw_bevel_weights", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_edge_bevel_weight", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "drawflag", ME_DRAWBWEIGHTS);
RNA_def_property_ui_text(prop, "Draw Bevel Weights", "Displays weights created for the Bevel modifier");
RNA_def_property_update(prop, 0, "rna_Mesh_update_draw");
- prop= RNA_def_property(srna, "draw_seams", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_edge_seams", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "drawflag", ME_DRAWSEAMS);
RNA_def_property_ui_text(prop, "Draw Seams", "Displays UV unwrapping seams");
RNA_def_property_update(prop, 0, "rna_Mesh_update_draw");
- prop= RNA_def_property(srna, "draw_sharp", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_edge_sharp", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "drawflag", ME_DRAWSHARP);
RNA_def_property_ui_text(prop, "Draw Sharp", "Displays sharp edges, used with the EdgeSplit modifier");
RNA_def_property_update(prop, 0, "rna_Mesh_update_draw");
- prop= RNA_def_property(srna, "draw_edge_length", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_extra_edge_length", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "drawflag", ME_DRAW_EDGELEN);
RNA_def_property_ui_text(prop, "Edge Length", "Displays selected edge lengths, Using global values when set in the transform panel");
RNA_def_property_update(prop, 0, "rna_Mesh_update_draw");
- prop= RNA_def_property(srna, "draw_edge_angle", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_extra_edge_angle", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "drawflag", ME_DRAW_EDGEANG);
RNA_def_property_ui_text(prop, "Edge Angles", "Displays the angles in the selected edges in degrees, Using global values when set in the transform panel");
RNA_def_property_update(prop, 0, "rna_Mesh_update_draw");
- prop= RNA_def_property(srna, "draw_face_area", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_extra_face_area", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "drawflag", ME_DRAW_FACEAREA);
RNA_def_property_ui_text(prop, "Face Area", "Displays the area of selected faces, Using global values when set in the transform panel");
RNA_def_property_update(prop, 0, "rna_Mesh_update_draw");
diff --git a/source/blender/makesrna/intern/rna_mesh_api.c b/source/blender/makesrna/intern/rna_mesh_api.c
index 1657e0e64d7..97252ce754e 100644
--- a/source/blender/makesrna/intern/rna_mesh_api.c
+++ b/source/blender/makesrna/intern/rna_mesh_api.c
@@ -61,7 +61,7 @@ void RNA_api_mesh(StructRNA *srna)
func= RNA_def_function(srna, "add_geometry", "ED_mesh_geometry_add");
RNA_def_function_flag(func, FUNC_USE_REPORTS);
- parm= RNA_def_int(func, "verts", 0, 0, INT_MAX, "Number", "Number of vertices to add.", 0, INT_MAX);
+ parm= RNA_def_int(func, "vertices", 0, 0, INT_MAX, "Number", "Number of vertices to add.", 0, INT_MAX);
RNA_def_property_flag(parm, PROP_REQUIRED);
parm= RNA_def_int(func, "edges", 0, 0, INT_MAX, "Number", "Number of edges to add.", 0, INT_MAX);
RNA_def_property_flag(parm, PROP_REQUIRED);
diff --git a/source/blender/makesrna/intern/rna_meta.c b/source/blender/makesrna/intern/rna_meta.c
index 7481759f67e..0de8455bdb7 100644
--- a/source/blender/makesrna/intern/rna_meta.c
+++ b/source/blender/makesrna/intern/rna_meta.c
@@ -123,7 +123,7 @@ static void rna_def_metaelement(BlenderRNA *brna)
RNA_def_property_update(prop, 0, "rna_MetaBall_update_data");
/* number values */
- prop= RNA_def_property(srna, "location", PROP_FLOAT, PROP_TRANSLATION);
+ prop= RNA_def_property(srna, "co", PROP_FLOAT, PROP_TRANSLATION);
RNA_def_property_float_sdna(prop, NULL, "x");
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Location", "");
@@ -165,7 +165,7 @@ static void rna_def_metaelement(BlenderRNA *brna)
RNA_def_property_update(prop, 0, "rna_MetaBall_update_data");
/* flags */
- prop= RNA_def_property(srna, "negative", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_negative", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", MB_NEGATIVE);
RNA_def_property_ui_text(prop, "Negative", "Set metaball as negative one");
RNA_def_property_update(prop, 0, "rna_MetaBall_update_data");
@@ -201,19 +201,20 @@ static void rna_def_metaball(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Last selected element.", "Last selected element");
/* enums */
- prop= RNA_def_property(srna, "flag", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "update_method", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "flag");
RNA_def_property_enum_items(prop, prop_update_items);
RNA_def_property_ui_text(prop, "Update", "Metaball edit update behavior");
RNA_def_property_update(prop, 0, "rna_MetaBall_update_data");
/* number values */
- prop= RNA_def_property(srna, "wire_size", PROP_FLOAT, PROP_DISTANCE);
+ prop= RNA_def_property(srna, "resolution", PROP_FLOAT, PROP_DISTANCE);
RNA_def_property_float_sdna(prop, NULL, "wiresize");
RNA_def_property_range(prop, 0.050f, 1.0f);
RNA_def_property_ui_text(prop, "Wire Size", "Polygonization resolution in the 3D viewport");
RNA_def_property_update(prop, 0, "rna_MetaBall_update_data");
- prop= RNA_def_property(srna, "render_size", PROP_FLOAT, PROP_DISTANCE);
+ prop= RNA_def_property(srna, "render_resolution", PROP_FLOAT, PROP_DISTANCE);
RNA_def_property_float_sdna(prop, NULL, "rendersize");
RNA_def_property_range(prop, 0.050f, 1.0f);
RNA_def_property_ui_text(prop, "Render Size", "Polygonization resolution in rendering");
@@ -226,11 +227,11 @@ static void rna_def_metaball(BlenderRNA *brna)
RNA_def_property_update(prop, 0, "rna_MetaBall_update_data");
/* texture space */
- prop= RNA_def_property(srna, "auto_texspace", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_auto_texspace", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "texflag", MB_AUTOSPACE);
RNA_def_property_ui_text(prop, "Auto Texture Space", "Adjusts active object's texture space automatically when transforming object");
- prop= RNA_def_property(srna, "texspace_loc", PROP_FLOAT, PROP_TRANSLATION);
+ prop= RNA_def_property(srna, "texspace_location", PROP_FLOAT, PROP_TRANSLATION);
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Texture Space Location", "Texture space location");
RNA_def_property_editable_func(prop, "rna_Meta_texspace_editable");
diff --git a/source/blender/makesrna/intern/rna_modifier.c b/source/blender/makesrna/intern/rna_modifier.c
index 0c8b9b6a65f..1730e44809e 100644
--- a/source/blender/makesrna/intern/rna_modifier.c
+++ b/source/blender/makesrna/intern/rna_modifier.c
@@ -36,6 +36,8 @@
#include "DNA_object_force.h"
#include "DNA_scene_types.h"
+#include "MEM_guardedalloc.h"
+
#include "BLI_math.h"
#include "BKE_animsys.h"
@@ -95,7 +97,6 @@ EnumPropertyItem modifier_type_items[] ={
#include "BKE_library.h"
#include "BKE_modifier.h"
#include "BKE_particle.h"
-#include "BKE_pointcache.h"
static void rna_UVProject_projectors_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
{
@@ -586,12 +587,12 @@ static void rna_def_modifier_subsurf(BlenderRNA *brna)
RNA_def_property_ui_range(prop, 0, 6, 1, 0);
RNA_def_property_ui_text(prop, "Render Levels", "Number of subdivisions to perform when rendering");
- prop= RNA_def_property(srna, "optimal_display", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_only_control_edges", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", eSubsurfModifierFlag_ControlEdges);
RNA_def_property_ui_text(prop, "Optimal Display", "Skip drawing/rendering of interior subdivided edges");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
- prop= RNA_def_property(srna, "subsurf_uv", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_subsurf_uv", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", eSubsurfModifierFlag_SubsurfUv);
RNA_def_property_ui_text(prop, "Subdivide UVs", "Use subsurf to subdivide UVs");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
@@ -631,7 +632,7 @@ static void rna_def_modifier_multires(BlenderRNA *brna)
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Total Levels", "Number of subdivisions for which displacements are stored");
- prop= RNA_def_property(srna, "external", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "is_external", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_boolean_funcs(prop, "rna_MultiresModifier_external_get", NULL);
RNA_def_property_ui_text(prop, "External", "Store multires displacements outside the .blend file, to save memory");
@@ -641,7 +642,7 @@ static void rna_def_modifier_multires(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "File Path", "Path to external displacements file");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
- prop= RNA_def_property(srna, "optimal_display", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_only_control_edges", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", eMultiresModifierFlag_ControlEdges);
RNA_def_property_ui_text(prop, "Optimal Display", "Skip drawing/rendering of interior subdivided edges");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
@@ -769,22 +770,22 @@ static void rna_def_modifier_mirror(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Clip", "Prevents vertices from going through the mirror during transform");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
- prop= RNA_def_property(srna, "mirror_vertex_groups", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_mirror_vertex_groups", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_MIR_VGROUP);
RNA_def_property_ui_text(prop, "Mirror Vertex Groups", "Mirror vertex groups (e.g. .R->.L)");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
- prop= RNA_def_property(srna, "mirror_u", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_mirror_u", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_MIR_MIRROR_U);
RNA_def_property_ui_text(prop, "Mirror U", "Mirror the U texture coordinate around the 0.5 point");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
- prop= RNA_def_property(srna, "mirror_v", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_mirror_v", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_MIR_MIRROR_V);
RNA_def_property_ui_text(prop, "Mirror V", "Mirror the V texture coordinate around the 0.5 point");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
- prop= RNA_def_property(srna, "merge_limit", PROP_FLOAT, PROP_DISTANCE);
+ prop= RNA_def_property(srna, "merge_threshold", PROP_FLOAT, PROP_DISTANCE);
RNA_def_property_float_sdna(prop, NULL, "tolerance");
RNA_def_property_range(prop, 0, FLT_MAX);
RNA_def_property_ui_range(prop, 0, 1, 0.01, 6);
@@ -857,17 +858,17 @@ static void rna_def_modifier_wave(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Normals", "Displace along normals");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
- prop= RNA_def_property(srna, "x_normal", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_normal_x", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_WAVE_NORM_X);
RNA_def_property_ui_text(prop, "X Normal", "Enable displacement along the X normal");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
- prop= RNA_def_property(srna, "y_normal", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_normal_y", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_WAVE_NORM_Y);
RNA_def_property_ui_text(prop, "Y Normal", "Enable displacement along the Y normal");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
- prop= RNA_def_property(srna, "z_normal", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_normal_z", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_WAVE_NORM_Z);
RNA_def_property_ui_text(prop, "Z Normal", "Enable displacement along the Z normal");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
@@ -879,6 +880,7 @@ static void rna_def_modifier_wave(BlenderRNA *brna)
RNA_def_property_update(prop, 0, "rna_Modifier_update");
prop= RNA_def_property(srna, "lifetime", PROP_FLOAT, PROP_TIME);
+ RNA_def_property_float_sdna(prop, NULL, "lifetime");
RNA_def_property_range(prop, MINAFRAMEF, MAXFRAMEF);
RNA_def_property_ui_text(prop, "Lifetime", "");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
@@ -927,7 +929,7 @@ static void rna_def_modifier_wave(BlenderRNA *brna)
RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_update(prop, 0, "rna_Modifier_update");
- prop= RNA_def_property(srna, "texture_coordinates", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "texture_coords", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "texmapping");
RNA_def_property_enum_items(prop, prop_texture_coordinates_items);
RNA_def_property_ui_text(prop, "Texture Coordinates", "Texture coordinates used for modulating input");
@@ -939,7 +941,7 @@ static void rna_def_modifier_wave(BlenderRNA *brna)
RNA_def_property_string_funcs(prop, NULL, NULL, "rna_WaveModifier_uvlayer_set");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
- prop= RNA_def_property(srna, "texture_coordinates_object", PROP_POINTER, PROP_NONE);
+ prop= RNA_def_property(srna, "texture_coords_object", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "map_object");
RNA_def_property_ui_text(prop, "Texture Coordinates Object", "");
RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK);
@@ -1013,7 +1015,7 @@ static void rna_def_modifier_armature(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Quaternion", "Deform rotation interpolation with quaternions");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
- prop= RNA_def_property(srna, "multi_modifier", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_multi_modifier", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "multi", 0);
RNA_def_property_ui_text(prop, "Multi Modifier", "Use same input as previous modifier, and mix results using overall vgroup");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
@@ -1150,38 +1152,38 @@ static void rna_def_modifier_array(BlenderRNA *brna)
RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update");
/* Offset parameters */
- prop= RNA_def_property(srna, "constant_offset", PROP_BOOLEAN, PROP_TRANSLATION);
+ prop= RNA_def_property(srna, "use_constant_offset", PROP_BOOLEAN, PROP_TRANSLATION);
RNA_def_property_boolean_sdna(prop, NULL, "offset_type", MOD_ARR_OFF_CONST);
RNA_def_property_ui_text(prop, "Constant Offset", "Add a constant offset");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
- prop= RNA_def_property(srna, "constant_offset_displacement", PROP_FLOAT, PROP_TRANSLATION);
+ prop= RNA_def_property(srna, "constant_offset_displace", PROP_FLOAT, PROP_TRANSLATION);
RNA_def_property_float_sdna(prop, NULL, "offset");
RNA_def_property_ui_text(prop, "Constant Offset Displacement", "");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
- prop= RNA_def_property(srna, "relative_offset", PROP_BOOLEAN, PROP_TRANSLATION);
+ prop= RNA_def_property(srna, "use_relative_offset", PROP_BOOLEAN, PROP_TRANSLATION);
RNA_def_property_boolean_sdna(prop, NULL, "offset_type", MOD_ARR_OFF_RELATIVE);
RNA_def_property_ui_text(prop, "Relative Offset", "Add an offset relative to the object's bounding box");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
- prop= RNA_def_property(srna, "relative_offset_displacement", PROP_FLOAT, PROP_TRANSLATION);
+ prop= RNA_def_property(srna, "relative_offset_displace", PROP_FLOAT, PROP_TRANSLATION);
RNA_def_property_float_sdna(prop, NULL, "scale");
RNA_def_property_ui_text(prop, "Relative Offset Displacement", "");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
/* Vertex merging parameters */
- prop= RNA_def_property(srna, "merge_adjacent_vertices", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_merge_vertices", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", MOD_ARR_MERGE);
RNA_def_property_ui_text(prop, "Merge Vertices", "Merge vertices in adjacent duplicates");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
- prop= RNA_def_property(srna, "merge_end_vertices", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_merge_vertices_cap", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", MOD_ARR_MERGEFINAL);
RNA_def_property_ui_text(prop, "Merge Vertices", "Merge vertices in first and last duplicates");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
- prop= RNA_def_property(srna, "merge_distance", PROP_FLOAT, PROP_DISTANCE);
+ prop= RNA_def_property(srna, "merge_threshold", PROP_FLOAT, PROP_DISTANCE);
RNA_def_property_float_sdna(prop, NULL, "merge_dist");
RNA_def_property_range(prop, 0, FLT_MAX);
RNA_def_property_ui_range(prop, 0, 1, 1, 4);
@@ -1189,7 +1191,7 @@ static void rna_def_modifier_array(BlenderRNA *brna)
RNA_def_property_update(prop, 0, "rna_Modifier_update");
/* Offset object */
- prop= RNA_def_property(srna, "add_offset_object", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_object_offset", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "offset_type", MOD_ARR_OFF_OBJ);
RNA_def_property_ui_text(prop, "Object Offset", "Add another object's transformation to the total offset");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
@@ -1236,7 +1238,7 @@ static void rna_def_modifier_edgesplit(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Use Edge Angle", "Split edges with high angle between faces");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
- prop= RNA_def_property(srna, "use_sharp", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_edge_sharp", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", MOD_EDGESPLIT_FROMFLAG);
RNA_def_property_ui_text(prop, "Use Sharp Edges", "Split edges that are marked as sharp");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
@@ -1278,7 +1280,8 @@ static void rna_def_modifier_displace(BlenderRNA *brna)
RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_update(prop, 0, "rna_Modifier_update");
- prop= RNA_def_property(srna, "midlevel", PROP_FLOAT, PROP_DISTANCE);
+ prop= RNA_def_property(srna, "mid_level", PROP_FLOAT, PROP_DISTANCE);
+ RNA_def_property_float_sdna(prop, NULL, "midlevel");
RNA_def_property_range(prop, 0, 1);
RNA_def_property_ui_range(prop, 0, 1, 10, 3);
RNA_def_property_ui_text(prop, "Midlevel", "Material value that gives no displacement");
@@ -1295,7 +1298,7 @@ static void rna_def_modifier_displace(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Direction", "");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
- prop= RNA_def_property(srna, "texture_coordinates", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "texture_coords", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "texmapping");
RNA_def_property_enum_items(prop, prop_texture_coordinates_items);
RNA_def_property_ui_text(prop, "Texture Coordinates", "");
@@ -1330,7 +1333,8 @@ static void rna_def_modifier_uvproject(BlenderRNA *brna)
RNA_def_property_string_funcs(prop, NULL, NULL, "rna_UVProjectModifier_uvlayer_set");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
- prop= RNA_def_property(srna, "num_projectors", PROP_INT, PROP_NONE);
+ prop= RNA_def_property(srna, "projector_count", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "num_projectors");
RNA_def_property_ui_text(prop, "Number of Projectors", "Number of projectors to use");
RNA_def_property_int_funcs(prop, NULL, "rna_UVProjectModifier_num_projectors_set", NULL);
RNA_def_property_range(prop, 1, MOD_UVPROJECT_MAX);
@@ -1374,7 +1378,7 @@ static void rna_def_modifier_uvproject(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Vertical Scale", "");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
- prop= RNA_def_property(srna, "override_image", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_image_override", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", MOD_UVPROJECT_OVERRIDEIMAGE);
RNA_def_property_ui_text(prop, "Override Image", "Override faces' current images with the given image");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
@@ -1477,7 +1481,7 @@ static void rna_def_modifier_cast(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Z", "");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
- prop= RNA_def_property(srna, "from_radius", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_radius_as_size", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", MOD_CAST_SIZE_FROM_RADIUS);
RNA_def_property_ui_text(prop, "From Radius", "Use radius as size of projection shape (0 = auto)");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
@@ -1609,7 +1613,7 @@ static void rna_def_modifier_particleinstance(BlenderRNA *brna)
RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK);
RNA_def_property_update(prop, 0, "rna_Modifier_dependency_update");
- prop= RNA_def_property(srna, "particle_system_number", PROP_INT, PROP_NONE);
+ prop= RNA_def_property(srna, "particle_system_index", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "psys");
RNA_def_property_range(prop, 1, 10);
RNA_def_property_ui_text(prop, "Particle System Number", "");
@@ -1636,22 +1640,22 @@ static void rna_def_modifier_particleinstance(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Path", "Create instances along particle paths");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
- prop= RNA_def_property(srna, "unborn", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_unborn", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", eParticleInstanceFlag_Unborn);
RNA_def_property_ui_text(prop, "Unborn", "Show instances when particles are unborn");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
- prop= RNA_def_property(srna, "alive", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_alive", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", eParticleInstanceFlag_Alive);
RNA_def_property_ui_text(prop, "Alive", "Show instances when particles are alive");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
- prop= RNA_def_property(srna, "dead", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_dead", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", eParticleInstanceFlag_Dead);
RNA_def_property_ui_text(prop, "Dead", "Show instances when particles are dead");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
- prop= RNA_def_property(srna, "keep_shape", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_preserve_shape", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", eParticleInstanceFlag_KeepShape);
RNA_def_property_ui_text(prop, "Keep Shape", "Don't stretch the object");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
@@ -1693,22 +1697,22 @@ static void rna_def_modifier_explode(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Protect", "Clean vertex group edges");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
- prop= RNA_def_property(srna, "split_edges", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_edge_split", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", eExplodeFlag_EdgeSplit);
RNA_def_property_ui_text(prop, "Split Edges", "Split face edges for nicer shrapnel");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
- prop= RNA_def_property(srna, "unborn", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_unborn", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", eExplodeFlag_Unborn);
RNA_def_property_ui_text(prop, "Unborn", "Show mesh when particles are unborn");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
- prop= RNA_def_property(srna, "alive", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_alive", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", eExplodeFlag_Alive);
RNA_def_property_ui_text(prop, "Alive", "Show mesh when particles are alive");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
- prop= RNA_def_property(srna, "dead", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_dead", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", eExplodeFlag_Dead);
RNA_def_property_ui_text(prop, "Dead", "Show mesh when particles are dead");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
@@ -1826,7 +1830,7 @@ static void rna_def_modifier_bevel(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Width", "Bevel value/amount");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
- prop= RNA_def_property(srna, "only_vertices", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_only_vertices", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", BME_BEVEL_VERT);
RNA_def_property_ui_text(prop, "Only Vertices", "Bevel verts/corners, not edges");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
@@ -1931,17 +1935,17 @@ static void rna_def_modifier_shrinkwrap(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Positive", "Allow vertices to move in the positive direction of axis");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
- prop= RNA_def_property(srna, "cull_front_faces", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_cull_front_faces", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "shrinkOpts", MOD_SHRINKWRAP_CULL_TARGET_FRONTFACE);
RNA_def_property_ui_text(prop, "Cull Front Faces", "Stop vertices from projecting to a front face on the target");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
- prop= RNA_def_property(srna, "cull_back_faces", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_cull_back_faces", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "shrinkOpts", MOD_SHRINKWRAP_CULL_TARGET_BACKFACE);
RNA_def_property_ui_text(prop, "Cull Back Faces", "Stop vertices from projecting to a back face on the target");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
- prop= RNA_def_property(srna, "keep_above_surface", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_keep_above_surface", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "shrinkOpts", MOD_SHRINKWRAP_KEEP_ABOVE_SURFACE);
RNA_def_property_ui_text(prop, "Keep Above Surface", "");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
@@ -2054,12 +2058,12 @@ static void rna_def_modifier_simpledeform(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Limits", "Lower/Upper limits for deform");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
- prop= RNA_def_property(srna, "lock_x_axis", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "lock_x", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "axis", MOD_SIMPLEDEFORM_LOCK_AXIS_X);
RNA_def_property_ui_text(prop, "Lock X Axis", "");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
- prop= RNA_def_property(srna, "lock_y_axis", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "lock_y", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "axis", MOD_SIMPLEDEFORM_LOCK_AXIS_Y);
RNA_def_property_ui_text(prop, "Lock Y Axis", "");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
@@ -2259,30 +2263,30 @@ void RNA_def_modifier(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Type", "");
/* flags */
- prop= RNA_def_property(srna, "realtime", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_viewport", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", eModifierMode_Realtime);
RNA_def_property_ui_text(prop, "Realtime", "Realtime display of a modifier");
RNA_def_property_flag(prop, PROP_LIB_EXCEPTION);
RNA_def_property_update(prop, 0, "rna_Modifier_update");
RNA_def_property_ui_icon(prop, ICON_RESTRICT_VIEW_OFF, 0);
- prop= RNA_def_property(srna, "render", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_render", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", eModifierMode_Render);
RNA_def_property_ui_text(prop, "Render", "Use modifier during rendering");
RNA_def_property_ui_icon(prop, ICON_SCENE, 0);
- prop= RNA_def_property(srna, "editmode", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_in_editmode", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", eModifierMode_Editmode);
RNA_def_property_ui_text(prop, "Editmode", "Use modifier while in the edit mode");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
RNA_def_property_ui_icon(prop, ICON_EDITMODE_HLT, 0);
- prop= RNA_def_property(srna, "on_cage", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_on_cage", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", eModifierMode_OnCage);
RNA_def_property_ui_text(prop, "On Cage", "Enable direct editing of modifier control cage");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
- prop= RNA_def_property(srna, "expanded", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_expanded", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", eModifierMode_Expanded);
RNA_def_property_ui_text(prop, "Expanded", "Set modifier expanded in the user interface");
RNA_def_property_ui_icon(prop, ICON_TRIA_RIGHT, 1);
diff --git a/source/blender/makesrna/intern/rna_nla.c b/source/blender/makesrna/intern/rna_nla.c
index 59c7607e930..a812169e951 100644
--- a/source/blender/makesrna/intern/rna_nla.c
+++ b/source/blender/makesrna/intern/rna_nla.c
@@ -314,7 +314,7 @@ static void rna_def_nlastrip(BlenderRNA *brna)
RNA_def_property_enum_items(prop, nla_mode_extend_items);
RNA_def_property_ui_text(prop, "Extrapolation", "Action to take for gaps past the strip extents");
- prop= RNA_def_property(srna, "blending", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "blend_type", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "blendmode");
RNA_def_property_enum_items(prop, nla_mode_blend_items);
RNA_def_property_ui_text(prop, "Blending", "Method used for combining strip's result with accumulated result");
@@ -343,7 +343,7 @@ static void rna_def_nlastrip(BlenderRNA *brna)
RNA_def_property_float_funcs(prop, NULL, "rna_NlaStrip_blend_out_set", NULL);
RNA_def_property_ui_text(prop, "Blend Out", "");
- prop= RNA_def_property(srna, "auto_blending", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_auto_blend", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", NLASTRIP_FLAG_AUTO_BLENDS);
RNA_def_property_ui_text(prop, "Auto Blend In/Out", "Number of frames for Blending In/Out is automatically determined from overlapping strips");
@@ -401,17 +401,17 @@ static void rna_def_nlastrip(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Strip Time", "Frame of referenced Action to evaluate");
// TODO: should the animated_influence/time settings be animatable themselves?
- prop= RNA_def_property(srna, "animated_influence", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_animated_influence", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", NLASTRIP_FLAG_USR_INFLUENCE);
RNA_def_property_boolean_funcs(prop, NULL, "rna_NlaStrip_animated_influence_set");
RNA_def_property_ui_text(prop, "Animated Influence", "Influence setting is controlled by an F-Curve rather than automatically determined");
- prop= RNA_def_property(srna, "animated_time", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_animated_time", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", NLASTRIP_FLAG_USR_TIME);
RNA_def_property_boolean_funcs(prop, NULL, "rna_NlaStrip_animated_time_set");
RNA_def_property_ui_text(prop, "Animated Strip Time", "Strip time is controlled by an F-Curve rather than automatically determined");
- prop= RNA_def_property(srna, "animated_time_cyclic", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_animated_time_cyclic", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", NLASTRIP_FLAG_USR_TIME_CYCLIC);
RNA_def_property_ui_text(prop, "Cyclic Strip Time", "Cycle the animated time within the action start & end");
RNA_def_property_update(prop, 0, "rna_NlaStrip_transform_update"); // is there a better update flag?
@@ -463,7 +463,7 @@ static void rna_def_nlatrack(BlenderRNA *brna)
RNA_def_property_boolean_sdna(prop, NULL, "flag", NLATRACK_ACTIVE);
RNA_def_property_ui_text(prop, "Active", "NLA Track is active");
- prop= RNA_def_property(srna, "solo", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "is_solo", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE); /* can be made editable by hooking it up to the necessary NLA API methods */
RNA_def_property_boolean_sdna(prop, NULL, "flag", NLATRACK_SOLO);
RNA_def_property_ui_text(prop, "Solo", "NLA Track is evaluated itself (i.e. active Action and all other NLA Tracks in the same AnimData block are disabled)");
diff --git a/source/blender/makesrna/intern/rna_nodetree.c b/source/blender/makesrna/intern/rna_nodetree.c
index 5ebf43fc2b7..e0507fc5401 100644
--- a/source/blender/makesrna/intern/rna_nodetree.c
+++ b/source/blender/makesrna/intern/rna_nodetree.c
@@ -139,6 +139,24 @@ static void rna_Matte_t2_set(PointerRNA *ptr, float value)
chroma->t2 = value;
}
+static void rna_Image_start_frame_set(PointerRNA *ptr, int value)
+{
+ bNode *node= (bNode*)ptr->data;
+ NodeImageFile *image = node->storage;
+
+ CLAMP(value, MINFRAME, image->efra);
+ image->sfra= value;
+}
+
+static void rna_Image_end_frame_set(PointerRNA *ptr, int value)
+{
+ bNode *node= (bNode*)ptr->data;
+ NodeImageFile *image = node->storage;
+
+ CLAMP(value, image->sfra, MAXFRAME);
+ image->efra= value;
+}
+
static void node_update(Main *bmain, Scene *scene, bNodeTree *ntree, bNode *node)
{
ED_node_generic_update(bmain, scene, ntree, node);
@@ -747,23 +765,23 @@ static void def_sh_mapping(StructRNA *srna)
RNA_def_property_ui_range(prop, -10.f, 10.f, 0.1f, 2);
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_mapping_update");
- prop = RNA_def_property(srna, "clamp_minimum", PROP_BOOLEAN, PROP_NONE);
+ prop = RNA_def_property(srna, "use_min", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", TEXMAP_CLIP_MIN);
RNA_def_property_ui_text(prop, "Clamp Minimum", "Clamp the output coordinate to a minimum value");
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
- prop= RNA_def_property(srna, "minimum", PROP_FLOAT, PROP_XYZ);
+ prop= RNA_def_property(srna, "min", PROP_FLOAT, PROP_XYZ);
RNA_def_property_float_sdna(prop, NULL, "min");
RNA_def_property_ui_text(prop, "Minimum", "Minimum value to clamp coordinate to");
RNA_def_property_ui_range(prop, -10.f, 10.f, 0.1f, 2);
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
- prop = RNA_def_property(srna, "clamp_maximum", PROP_BOOLEAN, PROP_NONE);
+ prop = RNA_def_property(srna, "use_max", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", TEXMAP_CLIP_MAX);
RNA_def_property_ui_text(prop, "Clamp Maximum", "Clamp the output coordinate to a maximum value");
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
- prop= RNA_def_property(srna, "maximum", PROP_FLOAT, PROP_XYZ);
+ prop= RNA_def_property(srna, "max", PROP_FLOAT, PROP_XYZ);
RNA_def_property_float_sdna(prop, NULL, "max");
RNA_def_property_ui_text(prop, "Maximum", "Maximum value to clamp coordinate to");
RNA_def_property_ui_range(prop, -10.f, 10.f, 0.1f, 2);
@@ -795,7 +813,7 @@ static void def_cmp_alpha_over(StructRNA *srna)
PropertyRNA *prop;
// XXX: Tooltip
- prop = RNA_def_property(srna, "convert_premul", PROP_BOOLEAN, PROP_NONE);
+ prop = RNA_def_property(srna, "use_premultiply", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "custom1", 1);
RNA_def_property_ui_text(prop, "Convert Premul", "");
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
@@ -851,13 +869,13 @@ static void def_cmp_blur(StructRNA *srna)
RNA_def_struct_sdna_from(srna, "NodeBlurData", "storage");
- prop = RNA_def_property(srna, "sizex", PROP_INT, PROP_NONE);
+ prop = RNA_def_property(srna, "size_x", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "sizex");
RNA_def_property_range(prop, 0, 256);
RNA_def_property_ui_text(prop, "Size X", "");
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
- prop = RNA_def_property(srna, "sizey", PROP_INT, PROP_NONE);
+ prop = RNA_def_property(srna, "size_y", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "sizey");
RNA_def_property_range(prop, 0, 256);
RNA_def_property_ui_text(prop, "Size Y", "");
@@ -968,21 +986,25 @@ static void def_cmp_vector_blur(StructRNA *srna)
prop = RNA_def_property(srna, "samples", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "samples");
+ RNA_def_property_range(prop, 1, 256);
RNA_def_property_ui_text(prop, "Samples", "");
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
- prop = RNA_def_property(srna, "min_speed", PROP_INT, PROP_NONE);
+ prop = RNA_def_property(srna, "speed_min", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "minspeed");
+ RNA_def_property_range(prop, 0, 1024);
RNA_def_property_ui_text(prop, "Min Speed", "Minimum speed for a pixel to be blurred; used to separate background from foreground");
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
- prop = RNA_def_property(srna, "max_speed", PROP_INT, PROP_NONE);
+ prop = RNA_def_property(srna, "speed_max", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "maxspeed");
+ RNA_def_property_range(prop, 0, 1024);
RNA_def_property_ui_text(prop, "Max Speed", "Maximum speed, or zero for none");
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "factor", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "fac");
+ RNA_def_property_range(prop, 0.0f, 2.0f);
RNA_def_property_ui_text(prop, "Blur Factor", "Scaling factor for motion vectors; actually 'shutter speed' in frames");
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
@@ -1056,7 +1078,7 @@ static void def_cmp_image(StructRNA *srna)
RNA_def_property_ui_text(prop, "Cyclic", "");
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
- prop = RNA_def_property(srna, "auto_refresh", PROP_BOOLEAN, PROP_NONE);
+ prop = RNA_def_property(srna, "use_auto_refresh", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", IMA_ANIM_ALWAYS);
RNA_def_property_ui_text(prop, "Auto-Refresh", "");
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
@@ -1126,7 +1148,7 @@ static void def_cmp_output_file(StructRNA *srna)
RNA_def_property_ui_text(prop, "Image Type", "");
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
- prop = RNA_def_property(srna, "exr_half", PROP_BOOLEAN, PROP_NONE);
+ prop = RNA_def_property(srna, "use_exr_half", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "subimtype", R_OPENEXR_HALF);
RNA_def_property_ui_text(prop, "Half", "");
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
@@ -1142,16 +1164,17 @@ static void def_cmp_output_file(StructRNA *srna)
RNA_def_property_range(prop, 1, 100);
RNA_def_property_ui_text(prop, "Quality", "");
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
-
- // TODO: should these be limited to the extents of the each other so that no cross-over occurs?
+
prop = RNA_def_property(srna, "frame_start", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "sfra");
+ RNA_def_property_int_funcs(prop, NULL, "rna_Image_start_frame_set", NULL);
RNA_def_property_range(prop, MINFRAMEF, MAXFRAMEF);
RNA_def_property_ui_text(prop, "Start Frame", "");
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
prop = RNA_def_property(srna, "frame_end", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "efra");
+ RNA_def_property_int_funcs(prop, NULL, "rna_Image_end_frame_set", NULL);
RNA_def_property_range(prop, MINFRAMEF, MAXFRAMEF);
RNA_def_property_ui_text(prop, "End Frame", "");
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
@@ -1297,7 +1320,7 @@ static void def_cmp_color_spill(StructRNA *srna)
RNA_def_property_ui_text(prop, "Channel", "");
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
- prop = RNA_def_property(srna, "algorithm", PROP_ENUM, PROP_NONE);
+ prop = RNA_def_property(srna, "limit_method", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "custom2");
RNA_def_property_enum_items(prop, algorithm_items);
RNA_def_property_ui_text(prop, "Algorithm", "");
@@ -1317,7 +1340,7 @@ static void def_cmp_color_spill(StructRNA *srna)
RNA_def_property_ui_text(prop, "Ratio", "Scale limit by value");
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
- prop = RNA_def_property(srna, "unspill", PROP_BOOLEAN, PROP_NONE);
+ prop = RNA_def_property(srna, "use_unspill", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "unspill", 0);
RNA_def_property_ui_text(prop, "Unspill", "Compensate all channels (diffenrently) by hand");
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
@@ -1368,7 +1391,7 @@ static void def_cmp_chroma_matte(StructRNA *srna)
RNA_def_struct_sdna_from(srna, "NodeChroma", "storage");
- prop = RNA_def_property(srna, "acceptance", PROP_FLOAT, PROP_NONE);
+ prop = RNA_def_property(srna, "tolerance", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "t1");
RNA_def_property_float_funcs(prop, NULL, "rna_Matte_t1_set", NULL);
RNA_def_property_range(prop, 1.0f, 80.0f);
@@ -1432,7 +1455,7 @@ static void def_cmp_channel_matte(StructRNA *srna)
RNA_def_struct_sdna_from(srna, "NodeChroma", "storage");
- prop = RNA_def_property(srna, "algorithm", PROP_ENUM, PROP_NONE);
+ prop = RNA_def_property(srna, "limit_method", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "algorithm");
RNA_def_property_enum_items(prop, algorithm_items);
RNA_def_property_ui_text(prop, "Algorithm", "Algorithm to use to limit channel");
@@ -1544,7 +1567,7 @@ static void def_cmp_defocus(StructRNA *srna)
RNA_def_property_ui_text(prop, "Angle", "Bokeh shape rotation offset in degrees");
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
- prop = RNA_def_property(srna, "gamma_correction", PROP_BOOLEAN, PROP_NONE);
+ prop = RNA_def_property(srna, "use_gamma_correction", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "gamco", 1);
RNA_def_property_ui_text(prop, "Gamma Correction", "Enable gamma correction before and after main process");
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
@@ -1556,7 +1579,7 @@ static void def_cmp_defocus(StructRNA *srna)
RNA_def_property_ui_text(prop, "fStop", "Amount of focal blur, 128=infinity=perfect focus, half the value doubles the blur radius");
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
- prop = RNA_def_property(srna, "max_blur", PROP_FLOAT, PROP_NONE);
+ prop = RNA_def_property(srna, "blur_max", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "maxblur");
RNA_def_property_range(prop, 0.0f, 10000.0f);
RNA_def_property_ui_text(prop, "Max Blur", "blur limit, maximum CoC radius, 0=no limit");
@@ -1610,32 +1633,32 @@ static void def_cmp_crop(StructRNA *srna)
{
PropertyRNA *prop;
- prop = RNA_def_property(srna, "crop_size", PROP_BOOLEAN, PROP_NONE);
+ prop = RNA_def_property(srna, "use_crop_size", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "custom1", 1);
RNA_def_property_ui_text(prop, "Crop Image Size", "Whether to crop the size of the input image");
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
RNA_def_struct_sdna_from(srna, "NodeTwoXYs", "storage");
- prop = RNA_def_property(srna, "x1", PROP_INT, PROP_NONE);
+ prop = RNA_def_property(srna, "min_x", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "x1");
RNA_def_property_range(prop, 0, 10000);
RNA_def_property_ui_text(prop, "X1", "");
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
- prop = RNA_def_property(srna, "x2", PROP_INT, PROP_NONE);
+ prop = RNA_def_property(srna, "max_x", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "x2");
RNA_def_property_range(prop, 0, 10000);
RNA_def_property_ui_text(prop, "X2", "");
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
- prop = RNA_def_property(srna, "y1", PROP_INT, PROP_NONE);
+ prop = RNA_def_property(srna, "min_y", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "y1");
RNA_def_property_range(prop, 0, 10000);
RNA_def_property_ui_text(prop, "Y1", "");
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
- prop = RNA_def_property(srna, "y2", PROP_INT, PROP_NONE);
+ prop = RNA_def_property(srna, "max_y", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "y2");
RNA_def_property_range(prop, 0, 10000);
RNA_def_property_ui_text(prop, "Y2", "");
@@ -1811,7 +1834,7 @@ static void def_cmp_glare(StructRNA *srna)
RNA_def_property_ui_text(prop, "Fade", "Streak fade-out factor");
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
- prop = RNA_def_property(srna, "rotate_45", PROP_BOOLEAN, PROP_NONE);
+ prop = RNA_def_property(srna, "use_rotate_45", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "angle", 1);
RNA_def_property_ui_text(prop, "Rotate 45", "Simple star filter: add 45 degree rotation offset");
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
@@ -1891,7 +1914,7 @@ static void def_cmp_lensdist(StructRNA *srna)
RNA_def_struct_sdna_from(srna, "NodeLensDist", "storage");
- prop = RNA_def_property(srna, "projector", PROP_BOOLEAN, PROP_NONE);
+ prop = RNA_def_property(srna, "use_projector", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "proj", 1);
RNA_def_property_ui_text(prop, "Projector", "Enable/disable projector mode. Effect is applied in horizontal direction only");
RNA_def_property_update(prop, NC_NODE|NA_EDITED, "rna_Node_update");
@@ -1917,7 +1940,7 @@ static void def_cmp_colorbalance(StructRNA *srna)
{1, "OFFSET_POWER_SLOPE", 0, "Offset/Power/Slope (ASC-CDL)", "ASC-CDL standard color correction"},
{0, NULL, 0, NULL, NULL}};
- prop = RNA_def_property(srna, "correction_formula", PROP_ENUM, PROP_NONE);
+ prop = RNA_def_property(srna, "correction_method", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "custom1");
RNA_def_property_enum_items(prop, type_items);
RNA_def_property_ui_text(prop, "Correction Formula", "");
diff --git a/source/blender/makesrna/intern/rna_object.c b/source/blender/makesrna/intern/rna_object.c
index 91385742f77..dc8cd2d7a03 100644
--- a/source/blender/makesrna/intern/rna_object.c
+++ b/source/blender/makesrna/intern/rna_object.c
@@ -1214,11 +1214,11 @@ static void rna_def_object_game_settings(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Physics Type", "Selects the type of physical representation");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "actor", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_actor", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "gameflag", OB_ACTOR);
RNA_def_property_ui_text(prop, "Actor", "Object is detected by the Near and Radar sensor");
- prop= RNA_def_property(srna, "ghost", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_ghost", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "gameflag", OB_GHOST);
RNA_def_property_ui_text(prop, "Ghost", "Object does not restitute collisions, like a ghost");
@@ -1232,7 +1232,7 @@ static void rna_def_object_game_settings(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Radius", "Radius of bounding sphere and material physics");
RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, NULL);
- prop= RNA_def_property(srna, "no_sleeping", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_sleep", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "gameflag", OB_COLLISION_RESPONSE);
RNA_def_property_ui_text(prop, "No Sleeping", "Disable auto (de)activation in physics simulation");
@@ -1246,40 +1246,40 @@ static void rna_def_object_game_settings(BlenderRNA *brna)
RNA_def_property_range(prop, 0.0, 1.0);
RNA_def_property_ui_text(prop, "Rotation Damping", "General rotation damping");
- prop= RNA_def_property(srna, "minimum_velocity", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "velocity_min", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "min_vel");
RNA_def_property_range(prop, 0.0, 1000.0);
RNA_def_property_ui_text(prop, "Velocity Min", "Clamp velocity to this minimum speed (except when totally still)");
- prop= RNA_def_property(srna, "maximum_velocity", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "velocity_max", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "max_vel");
RNA_def_property_range(prop, 0.0, 1000.0);
RNA_def_property_ui_text(prop, "Velocity Max", "Clamp velocity to this maximum speed");
/* lock position */
- prop= RNA_def_property(srna, "lock_x_axis", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "lock_location_x", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "gameflag2", OB_LOCK_RIGID_BODY_X_AXIS);
RNA_def_property_ui_text(prop, "Lock X Axis", "Disable simulation of linear motion along the X axis");
- prop= RNA_def_property(srna, "lock_y_axis", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "lock_location_y", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "gameflag2", OB_LOCK_RIGID_BODY_Y_AXIS);
RNA_def_property_ui_text(prop, "Lock Y Axis", "Disable simulation of linear motion along the Y axis");
- prop= RNA_def_property(srna, "lock_z_axis", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "lock_location_z", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "gameflag2", OB_LOCK_RIGID_BODY_Z_AXIS);
RNA_def_property_ui_text(prop, "Lock Z Axis", "Disable simulation of linear motion along the Z axis");
/* lock rotation */
- prop= RNA_def_property(srna, "lock_x_rot_axis", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "lock_rotation_x", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "gameflag2", OB_LOCK_RIGID_BODY_X_ROT_AXIS);
RNA_def_property_ui_text(prop, "Lock X Rotation Axis", "Disable simulation of angular motion along the X axis");
- prop= RNA_def_property(srna, "lock_y_rot_axis", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "lock_rotation_y", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "gameflag2", OB_LOCK_RIGID_BODY_Y_ROT_AXIS);
RNA_def_property_ui_text(prop, "Lock Y Rotation Axis", "Disable simulation of angular motion along the Y axis");
- prop= RNA_def_property(srna, "lock_z_rot_axis", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "lock_rotation_z", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "gameflag2", OB_LOCK_RIGID_BODY_Z_ROT_AXIS);
RNA_def_property_ui_text(prop, "Lock Z Rotation Axis", "Disable simulation of angular motion along the Z axis");
@@ -1289,11 +1289,11 @@ static void rna_def_object_game_settings(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Lock Z Rotation Axis", "Disable simulation of angular motion along the Z axis");
- prop= RNA_def_property(srna, "material_physics", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_material_physics", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "gameflag", OB_DO_FH);
RNA_def_property_ui_text(prop, "Use Material Physics", "Use physics settings in materials");
- prop= RNA_def_property(srna, "rotate_from_normal", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_rotate_from_normal", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "gameflag", OB_ROT_FH);
RNA_def_property_ui_text(prop, "Rotate From Normal", "Use face normal to rotate object, so that it points away from the surface");
@@ -1302,7 +1302,7 @@ static void rna_def_object_game_settings(BlenderRNA *brna)
RNA_def_property_range(prop, 0.0, 1.0);
RNA_def_property_ui_text(prop, "Form Factor", "Form factor scales the inertia tensor");
- prop= RNA_def_property(srna, "anisotropic_friction", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_anisotropic_friction", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "gameflag", OB_ANISOTROPIC_FRICTION);
RNA_def_property_ui_text(prop, "Anisotropic Friction", "Enable anisotropic friction");
@@ -1315,14 +1315,14 @@ static void rna_def_object_game_settings(BlenderRNA *brna)
RNA_def_property_boolean_sdna(prop, NULL, "gameflag", OB_BOUNDS);
RNA_def_property_ui_text(prop, "Use Collision Bounds", "Specify a collision bounds type other than the default");
- prop= RNA_def_property(srna, "collision_bounds", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "collision_bounds_type", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "boundtype");
RNA_def_property_enum_items(prop, collision_bounds_items);
RNA_def_property_enum_funcs(prop, NULL, NULL, "rna_Object_collision_bounds_itemf");
RNA_def_property_ui_text(prop, "Collision Bounds", "Selects the collision type");
RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, NULL);
- prop= RNA_def_property(srna, "collision_compound", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_collision_compound", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "gameflag", OB_CHILD);
RNA_def_property_ui_text(prop, "Collision Compound", "Add children to form a compound collision object");
@@ -1337,29 +1337,29 @@ static void rna_def_object_game_settings(BlenderRNA *brna)
/* state */
- prop= RNA_def_property(srna, "visible_state", PROP_BOOLEAN, PROP_LAYER_MEMBER);
+ prop= RNA_def_property(srna, "states_visible", PROP_BOOLEAN, PROP_LAYER_MEMBER);
RNA_def_property_boolean_sdna(prop, NULL, "state", 1);
RNA_def_property_array(prop, OB_MAX_STATES);
RNA_def_property_ui_text(prop, "State", "State determining which controllers are displayed");
RNA_def_property_boolean_funcs(prop, "rna_GameObjectSettings_state_get", "rna_GameObjectSettings_state_set");
- prop= RNA_def_property(srna, "used_state", PROP_BOOLEAN, PROP_LAYER_MEMBER);
+ prop= RNA_def_property(srna, "used_states", PROP_BOOLEAN, PROP_LAYER_MEMBER);
RNA_def_property_array(prop, OB_MAX_STATES);
RNA_def_property_ui_text(prop, "Used State", "States which are being used by controllers");
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_boolean_funcs(prop, "rna_GameObjectSettings_used_state_get", NULL);
- prop= RNA_def_property(srna, "initial_state", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "states_initial", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "init_state", 1);
RNA_def_property_array(prop, OB_MAX_STATES);
RNA_def_property_ui_text(prop, "Initial State", "Initial state when the game starts");
- prop= RNA_def_property(srna, "debug_state", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_debug_state", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "scaflag", OB_DEBUGSTATE);
RNA_def_property_ui_text(prop, "Debug State", "Print state debug info in the game engine");
RNA_def_property_ui_icon(prop, ICON_INFO, 0);
- prop= RNA_def_property(srna, "all_states", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_all_states", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "scaflag", OB_ALLSTATE);
RNA_def_property_ui_text(prop, "All", "Set all state bits");
@@ -1907,7 +1907,7 @@ static void rna_def_object(BlenderRNA *brna)
/* duplicates */
// XXX: evil old crap
- prop= RNA_def_property(srna, "slow_parent", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_slow_parent", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "partype", PARSLOW);
RNA_def_property_ui_text(prop, "Slow Parent", "Create a delay in the parent relationship");
RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_internal_update");
@@ -1923,7 +1923,7 @@ static void rna_def_object(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Dupli Frames Speed", "Set dupliframes to use the frame"); // TODO, better descriptio!
RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_Object_internal_update");
- prop= RNA_def_property(srna, "use_dupli_verts_rotation", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_dupli_vertices_rotation", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "transflag", OB_DUPLIROT);
RNA_def_property_ui_text(prop, "Dupli Verts Rotation", "Rotate dupli according to vertex normal");
RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, NULL);
@@ -1976,7 +1976,7 @@ static void rna_def_object(BlenderRNA *brna)
RNA_def_property_struct_type(prop, "DupliObject");
RNA_def_property_ui_text(prop, "Dupli list", "Object duplis");
- prop= RNA_def_property(srna, "duplis_used", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "is_duplicator", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "transflag", OB_DUPLI);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
@@ -1987,33 +1987,33 @@ static void rna_def_object(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Time Offset", "Animation offset in frames for F-Curve and dupligroup instances");
RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_internal_update");
- prop= RNA_def_property(srna, "time_offset_edit", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_time_offset_edit", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "ipoflag", OB_OFFS_OB);
RNA_def_property_ui_text(prop, "Time Offset Edit", "Use time offset when inserting keys and display time offset for F-Curve and action views");
- prop= RNA_def_property(srna, "time_offset_parent", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_time_offset_parent", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "ipoflag", OB_OFFS_PARENT);
RNA_def_property_ui_text(prop, "Time Offset Parent", "Apply the time offset to this objects parent relationship");
RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_internal_update");
- prop= RNA_def_property(srna, "time_offset_particle", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_time_offset_particle", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "ipoflag", OB_OFFS_PARTICLE);
RNA_def_property_ui_text(prop, "Time Offset Particle", "Let the time offset work on the particle effect");
RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_internal_update");
- prop= RNA_def_property(srna, "time_offset_add_parent", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_time_offset_add_parent", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "ipoflag", OB_OFFS_PARENTADD);
RNA_def_property_ui_text(prop, "Time Offset Add Parent", "Add the parents time offset value");
RNA_def_property_update(prop, NC_OBJECT|ND_TRANSFORM, "rna_Object_internal_update");
/* drawing */
- prop= RNA_def_property(srna, "max_draw_type", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "draw_type", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "dt");
RNA_def_property_enum_items(prop, drawtype_items);
RNA_def_property_ui_text(prop, "Maximum Draw Type", "Maximum draw type to display object with in viewport");
RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, NULL);
- prop= RNA_def_property(srna, "draw_bounds", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_bounds", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "dtx", OB_BOUNDBOX);
RNA_def_property_ui_text(prop, "Draw Bounds", "Displays the object's bounds");
RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, NULL);
@@ -2024,32 +2024,32 @@ static void rna_def_object(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Draw Bounds Type", "Object boundary display type");
RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, NULL);
- prop= RNA_def_property(srna, "draw_name", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_name", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "dtx", OB_DRAWNAME);
RNA_def_property_ui_text(prop, "Draw Name", "Displays the object's name");
RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, NULL);
- prop= RNA_def_property(srna, "draw_axis", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_axis", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "dtx", OB_AXIS);
RNA_def_property_ui_text(prop, "Draw Axis", "Displays the object's origin and axis");
RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, NULL);
- prop= RNA_def_property(srna, "draw_texture_space", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_texture_space", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "dtx", OB_TEXSPACE);
RNA_def_property_ui_text(prop, "Draw Texture Space", "Displays the object's texture space");
RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, NULL);
- prop= RNA_def_property(srna, "draw_wire", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_wire", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "dtx", OB_DRAWWIRE);
RNA_def_property_ui_text(prop, "Draw Wire", "Adds the object's wireframe over solid drawing");
RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, NULL);
- prop= RNA_def_property(srna, "draw_transparent", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_transparent", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "dtx", OB_DRAWTRANSP);
RNA_def_property_ui_text(prop, "Draw Transparent", "Enables transparent materials for the object (Mesh only)");
RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, NULL);
- prop= RNA_def_property(srna, "x_ray", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_x_ray", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "dtx", OB_DRAWXRAY);
RNA_def_property_ui_text(prop, "X-Ray", "Makes the object draw in front of others");
RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, NULL);
@@ -2073,13 +2073,13 @@ static void rna_def_object(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Pose", "Current pose for armatures");
/* shape keys */
- prop= RNA_def_property(srna, "shape_key_lock", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_shape_key", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "shapeflag", OB_SHAPE_LOCK);
RNA_def_property_ui_text(prop, "Shape Key Lock", "Always show the current Shape for this Object");
RNA_def_property_ui_icon(prop, ICON_UNPINNED, 1);
RNA_def_property_update(prop, 0, "rna_Object_internal_update_data");
- prop= RNA_def_property(srna, "shape_key_edit_mode", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_shape_key_edit_mode", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "shapeflag", OB_SHAPE_EDIT_MODE);
RNA_def_property_ui_text(prop, "Shape Key Edit Mode", "Apply shape keys in edit mode (for Meshes only)");
RNA_def_property_ui_icon(prop, ICON_EDITMODE_HLT, 0);
diff --git a/source/blender/makesrna/intern/rna_object_force.c b/source/blender/makesrna/intern/rna_object_force.c
index a3a1186eedc..ded74c88dfb 100644
--- a/source/blender/makesrna/intern/rna_object_force.c
+++ b/source/blender/makesrna/intern/rna_object_force.c
@@ -294,7 +294,7 @@ static void rna_Cache_active_point_cache_index_set(struct PointerRNA *ptr, int v
BLI_freelistN(&pidlist);
}
-static void rna_PointCache_step_range(PointerRNA *ptr, int *min, int *max)
+static void rna_PointCache_frame_step_range(PointerRNA *ptr, int *min, int *max)
{
Object *ob = ptr->id.data;
PointCache *cache= ptr->data;
@@ -714,9 +714,10 @@ static void rna_def_pointcache(BlenderRNA *brna)
RNA_def_property_range(prop, 1, MAXFRAME);
RNA_def_property_ui_text(prop, "End", "Frame on which the simulation stops");
- prop= RNA_def_property(srna, "step", PROP_INT, PROP_NONE);
+ prop= RNA_def_property(srna, "frame_step", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "step");
RNA_def_property_range(prop, 1, 20);
- RNA_def_property_int_funcs(prop, NULL, NULL, "rna_PointCache_step_range");
+ RNA_def_property_int_funcs(prop, NULL, NULL, "rna_PointCache_frame_step_range");
RNA_def_property_ui_text(prop, "Cache Step", "Number of frames between cached frames");
RNA_def_property_update(prop, NC_OBJECT, "rna_Cache_change");
@@ -727,20 +728,20 @@ static void rna_def_pointcache(BlenderRNA *brna)
RNA_def_property_update(prop, NC_OBJECT, "rna_Cache_idname_change");
/* flags */
- prop= RNA_def_property(srna, "baked", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "is_baked", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PTCACHE_BAKED);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- prop= RNA_def_property(srna, "baking", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "is_baking", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PTCACHE_BAKING);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- prop= RNA_def_property(srna, "disk_cache", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_disk_cache", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PTCACHE_DISK_CACHE);
RNA_def_property_ui_text(prop, "Disk Cache", "Save cache files to disk (.blend file must be saved first)");
RNA_def_property_update(prop, NC_OBJECT, "rna_Cache_toggle_disk_cache");
- prop= RNA_def_property(srna, "outdated", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "is_outdated", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PTCACHE_OUTDATED);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Cache is outdated", "");
@@ -760,7 +761,7 @@ static void rna_def_pointcache(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "File Path", "Cache file path");
RNA_def_property_update(prop, NC_OBJECT, "rna_Cache_idname_change");
- prop= RNA_def_property(srna, "quick_cache", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_quick_cache", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PTCACHE_QUICK_CACHE);
RNA_def_property_ui_text(prop, "Quick Cache", "Update simulation with cache steps");
RNA_def_property_update(prop, NC_OBJECT, "rna_Cache_change");
@@ -770,7 +771,7 @@ static void rna_def_pointcache(BlenderRNA *brna)
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Cache Info", "Info on current cache status");
- prop= RNA_def_property(srna, "external", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_external", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PTCACHE_EXTERNAL);
RNA_def_property_ui_text(prop, "External", "Read cache from an external location");
RNA_def_property_update(prop, NC_OBJECT, "rna_Cache_idname_change");
@@ -780,7 +781,7 @@ static void rna_def_pointcache(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Library Path", "Use this files path when library linked into another file.");
RNA_def_property_update(prop, NC_OBJECT, "rna_Cache_idname_change");
- prop= RNA_def_property(srna, "point_cache_list", PROP_COLLECTION, PROP_NONE);
+ prop= RNA_def_property(srna, "point_caches", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_funcs(prop, "rna_Cache_list_begin", "rna_iterator_listbase_next", "rna_iterator_listbase_end", "rna_iterator_listbase_get", 0, 0, 0);
RNA_def_property_struct_type(prop, "PointCache");
RNA_def_property_ui_text(prop, "Point Cache List", "Point cache list");
@@ -801,7 +802,7 @@ static void rna_def_collision(BlenderRNA *brna)
RNA_def_struct_path_func(srna, "rna_CollisionSettings_path");
RNA_def_struct_ui_text(srna, "Collision Settings", "Collision settings for object in physics simulation");
- prop= RNA_def_property(srna, "enabled", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "deflect", 1);
RNA_def_property_ui_text(prop, "Enabled", "Enable this objects as a collider for physics systems");
RNA_def_property_update(prop, 0, "rna_CollisionSettings_dependency_update");
@@ -814,7 +815,7 @@ static void rna_def_collision(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Damping Factor", "Amount of damping during particle collision");
RNA_def_property_update(prop, 0, "rna_CollisionSettings_update");
- prop= RNA_def_property(srna, "random_damping", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "damping_random", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "pdef_rdamp");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Random Damping", "Random variation of damping");
@@ -826,7 +827,7 @@ static void rna_def_collision(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Friction Factor", "Amount of friction during particle collision");
RNA_def_property_update(prop, 0, "rna_CollisionSettings_update");
- prop= RNA_def_property(srna, "random_friction", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "friction_random", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "pdef_rfrict");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Random Friction", "Random variation of friction");
@@ -838,7 +839,7 @@ static void rna_def_collision(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Permeability", "Chance that the particle will pass through the mesh");
RNA_def_property_update(prop, 0, "rna_CollisionSettings_update");
- prop= RNA_def_property(srna, "kill_particles", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_particle_kill", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PDEFLE_KILL_PART);
RNA_def_property_ui_text(prop, "Kill Particles", "Kill collided particles");
RNA_def_property_update(prop, 0, "rna_CollisionSettings_update");
@@ -851,13 +852,13 @@ static void rna_def_collision(BlenderRNA *brna)
/* Soft Body and Cloth Interaction */
- prop= RNA_def_property(srna, "inner_thickness", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "thickness_inner", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "pdef_sbift");
RNA_def_property_range(prop, 0.001f, 1.0f);
RNA_def_property_ui_text(prop, "Inner Thickness", "Inner face thickness");
RNA_def_property_update(prop, 0, "rna_CollisionSettings_update");
- prop= RNA_def_property(srna, "outer_thickness", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "thickness_outer", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "pdef_sboft");
RNA_def_property_range(prop, 0.001f, 1.0f);
RNA_def_property_ui_text(prop, "Outer Thickness", "Outer face thickness");
@@ -895,7 +896,7 @@ static void rna_def_effector_weight(BlenderRNA *brna)
RNA_def_struct_ui_icon(srna, ICON_PHYSICS);
/* Flags */
- prop= RNA_def_property(srna, "do_growing_hair", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "apply_to_hair_growing", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", EFF_WEIGHT_DO_HAIR);
RNA_def_property_ui_text(prop, "Use For Growing Hair", "Use force fields when growing hair");
RNA_def_property_update(prop, 0, "rna_EffectorWeight_update");
@@ -949,7 +950,7 @@ static void rna_def_effector_weight(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Wind", "Wind effector weight");
RNA_def_property_update(prop, 0, "rna_EffectorWeight_update");
- prop= RNA_def_property(srna, "curveguide", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "curve_guide", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "weight[5]");
RNA_def_property_range(prop, -200.0f, 200.0f);
RNA_def_property_ui_range(prop, 0.0f, 1.0f, 0.1, 3);
@@ -1158,25 +1159,25 @@ static void rna_def_field(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Falloff Power", "Falloff power (real gravitational falloff = 2)");
RNA_def_property_update(prop, 0, "rna_FieldSettings_update");
- prop= RNA_def_property(srna, "minimum_distance", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "distance_min", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "mindist");
RNA_def_property_range(prop, 0.0f, 1000.0f);
RNA_def_property_ui_text(prop, "Minimum Distance", "Minimum distance for the field's fall-off");
RNA_def_property_update(prop, 0, "rna_FieldSettings_update");
- prop= RNA_def_property(srna, "maximum_distance", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "distance_max", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "maxdist");
RNA_def_property_range(prop, 0.0f, 1000.0f);
RNA_def_property_ui_text(prop, "Maximum Distance", "Maximum distance for the field to work");
RNA_def_property_update(prop, 0, "rna_FieldSettings_update");
- prop= RNA_def_property(srna, "radial_minimum", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "radial_min", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "minrad");
RNA_def_property_range(prop, 0.0f, 1000.0f);
RNA_def_property_ui_text(prop, "Minimum Radial Distance", "Minimum radial distance for the field's fall-off");
RNA_def_property_update(prop, 0, "rna_FieldSettings_update");
- prop= RNA_def_property(srna, "radial_maximum", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "radial_max", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "maxrad");
RNA_def_property_range(prop, 0.0f, 1000.0f);
RNA_def_property_ui_text(prop, "Maximum Radial Distance", "Maximum radial distance for the field to work");
@@ -1229,42 +1230,42 @@ static void rna_def_field(BlenderRNA *brna)
// "Use a maximum angle for the field to work"
RNA_def_property_update(prop, 0, "rna_FieldSettings_update");
- prop= RNA_def_property(srna, "use_coordinates", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_object_coords", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PFIELD_TEX_OBJECT);
RNA_def_property_ui_text(prop, "Use Coordinates", "Use object/global coordinates for texture");
RNA_def_property_update(prop, 0, "rna_FieldSettings_update");
- prop= RNA_def_property(srna, "global_coordinates", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_global_coords", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PFIELD_GLOBAL_CO);
RNA_def_property_ui_text(prop, "Use Global Coordinates", "Use effector/global coordinates for turbulence");
RNA_def_property_update(prop, 0, "rna_FieldSettings_update");
- prop= RNA_def_property(srna, "force_2d", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_2d_force", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PFIELD_TEX_2D);
RNA_def_property_ui_text(prop, "2D", "Apply force only in 2d");
RNA_def_property_update(prop, 0, "rna_FieldSettings_update");
- prop= RNA_def_property(srna, "root_coordinates", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_root_coords", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PFIELD_TEX_ROOTCO);
RNA_def_property_ui_text(prop, "Root Texture Coordinates", "Texture coordinates from root particle locations");
RNA_def_property_update(prop, 0, "rna_FieldSettings_update");
- prop= RNA_def_property(srna, "do_location", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "apply_to_location", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PFIELD_DO_LOCATION);
RNA_def_property_ui_text(prop, "Location", "Effect particles' location");
RNA_def_property_update(prop, 0, "rna_FieldSettings_update");
- prop= RNA_def_property(srna, "do_rotation", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "apply_to_rotation", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PFIELD_DO_ROTATION);
RNA_def_property_ui_text(prop, "Rotation", "Effect particles' dynamic rotation");
RNA_def_property_update(prop, 0, "rna_FieldSettings_update");
- prop= RNA_def_property(srna, "do_absorption", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_absorption", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PFIELD_VISIBILITY);
RNA_def_property_ui_text(prop, "Absorption", "Force gets absorbed by collision objects");
RNA_def_property_update(prop, 0, "rna_FieldSettings_update");
- prop= RNA_def_property(srna, "multiple_springs", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_multiple_springs", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PFIELD_MULTIPLE_SPRINGS);
RNA_def_property_ui_text(prop, "Multiple Springs", "Every point is effected by multiple springs");
RNA_def_property_update(prop, 0, "rna_FieldSettings_update");
@@ -1291,7 +1292,7 @@ static void rna_def_field(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Free", "Guide-free time from particle life's end");
RNA_def_property_update(prop, 0, "rna_FieldSettings_update");
- prop= RNA_def_property(srna, "guide_path_add", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_guide_path_add", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PFIELD_GUIDE_PATH_ADD);
RNA_def_property_ui_text(prop, "Additive", "Based on distance/falloff it adds a portion of the entire path");
RNA_def_property_update(prop, 0, "rna_FieldSettings_update");
@@ -1362,7 +1363,7 @@ static void rna_def_game_softbody(BlenderRNA *brna)
/* Floats */
- prop= RNA_def_property(srna, "linstiff", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "linear_stiffness", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "linStiff");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Linear Stiffness", "Linear stiffness of the soft body links");
@@ -1372,24 +1373,24 @@ static void rna_def_game_softbody(BlenderRNA *brna)
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Friction", "Dynamic Friction");
- prop= RNA_def_property(srna, "threshold", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "shape_threshold", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "kMT");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Threshold", "Shape matching threshold");
- prop= RNA_def_property(srna, "margin", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "collision_margin", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "margin");
RNA_def_property_range(prop, 0.01f, 1.0f);
RNA_def_property_ui_text(prop, "Margin", "Collision margin for soft body. Small value makes the algorithm unstable");
- prop= RNA_def_property(srna, "welding", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "weld_threshold", PROP_FLOAT, PROP_DISTANCE);
RNA_def_property_float_sdna(prop, NULL, "welding");
RNA_def_property_range(prop, 0.0f, 0.01f);
RNA_def_property_ui_text(prop, "Welding", "Welding threshold: distance between nearby vertices to be considered equal => set to 0.0 to disable welding test and speed up scene loading (ok if the mesh has no duplicates)");
/* Integers */
- prop= RNA_def_property(srna, "position_iterations", PROP_INT, PROP_NONE);
+ prop= RNA_def_property(srna, "location_iterations", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "piterations");
RNA_def_property_range(prop, 0, 10);
RNA_def_property_ui_text(prop, "Position Iterations", "Position solver iterations");
@@ -1401,19 +1402,19 @@ static void rna_def_game_softbody(BlenderRNA *brna)
/* Booleans */
- prop= RNA_def_property(srna, "shape_match", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_shape_match", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", OB_BSB_SHAPE_MATCHING);
RNA_def_property_ui_text(prop, "Shape Match", "Enable soft body shape matching goal");
- prop= RNA_def_property(srna, "bending_const", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_bending_constraints", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", OB_BSB_BENDING_CONSTRAINTS);
RNA_def_property_ui_text(prop, "Bending Const", "Enable bending constraints");
- prop= RNA_def_property(srna, "cluster_rigid_to_softbody", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_cluster_rigid_to_softbody", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "collisionflags", OB_BSB_COL_CL_RS);
RNA_def_property_ui_text(prop, "Rigid to Soft Body", "Enable cluster collision between soft and rigid body");
- prop= RNA_def_property(srna, "cluster_soft_to_softbody", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_cluster_soft_to_softbody", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "collisionflags", OB_BSB_COL_CL_SS);
RNA_def_property_ui_text(prop, "Soft to Soft Body", "Enable cluster collision between soft and soft body");
}
@@ -1553,7 +1554,7 @@ static void rna_def_softbody(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Plastic", "Permanent deform");
RNA_def_property_update(prop, 0, "rna_softbody_update");
- prop= RNA_def_property(srna, "bending", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "bend", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "secondspring");
RNA_def_property_range(prop, 0.0f, 10.0f);
RNA_def_property_ui_text(prop, "Bending", "Bending Stiffness");
@@ -1600,19 +1601,19 @@ static void rna_def_softbody(BlenderRNA *brna)
/* Solver */
- prop= RNA_def_property(srna, "error_limit", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "error_threshold", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "rklimit");
RNA_def_property_range(prop, 0.001f, 10.0f);
RNA_def_property_ui_text(prop, "Error Limit", "The Runge-Kutta ODE solver error limit, low value gives more precision, high values speed");
RNA_def_property_update(prop, 0, "rna_softbody_update");
- prop= RNA_def_property(srna, "minstep", PROP_INT, PROP_NONE);
+ prop= RNA_def_property(srna, "step_min", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "minloops");
RNA_def_property_range(prop, 0, 30000);
RNA_def_property_ui_text(prop, "Min Step", "Minimal # solver steps/frame");
RNA_def_property_update(prop, 0, "rna_softbody_update");
- prop= RNA_def_property(srna, "maxstep", PROP_INT, PROP_NONE);
+ prop= RNA_def_property(srna, "step_max", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "maxloops");
RNA_def_property_range(prop, 0, 30000);
RNA_def_property_ui_text(prop, "Max Step", "Maximal # solver steps/frame");
@@ -1630,16 +1631,16 @@ static void rna_def_softbody(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Fuzzy", "Fuzziness while on collision, high values make collsion handling faster but less stable");
RNA_def_property_update(prop, 0, "rna_softbody_update");
- prop= RNA_def_property(srna, "auto_step", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_auto_step", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "solverflags", SBSO_OLDERR);
RNA_def_property_ui_text(prop, "V", "Use velocities for automagic step sizes");
RNA_def_property_update(prop, 0, "rna_softbody_update");
- prop= RNA_def_property(srna, "diagnose", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_diagnose", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "solverflags", SBSO_MONITOR);
RNA_def_property_ui_text(prop, "Print Performance to Console", "Turn on SB diagnose console prints");
- prop= RNA_def_property(srna, "estimate_matrix", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_estimate_matrix", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "solverflags", SBSO_ESTIMATEIPO);
RNA_def_property_ui_text(prop, "Estimate matrix", "estimate matrix .. split to COM , ROT ,SCALE ");
@@ -1649,17 +1650,17 @@ static void rna_def_softbody(BlenderRNA *brna)
/* but i did not want to start a new property struct */
/* so rather rename this from SoftBodySettings to SoftBody */
/* translation */
- prop= RNA_def_property(srna, "lcom", PROP_FLOAT, PROP_TRANSLATION);
+ prop= RNA_def_property(srna, "location_mass_center", PROP_FLOAT, PROP_TRANSLATION);
RNA_def_property_float_sdna(prop, NULL, "lcom");
RNA_def_property_ui_text(prop, "Center of mass", "Location of Center of mass");
/* matrix */
- prop= RNA_def_property(srna, "lrot", PROP_FLOAT, PROP_MATRIX);
+ prop= RNA_def_property(srna, "rotation_estimate", PROP_FLOAT, PROP_MATRIX);
RNA_def_property_float_sdna(prop, NULL, "lrot");
RNA_def_property_multi_array(prop, 2, matrix_dimsize);
RNA_def_property_ui_text(prop, "Rot Matrix", "Estimated rotation matrix");
- prop= RNA_def_property(srna, "lscale", PROP_FLOAT, PROP_MATRIX);
+ prop= RNA_def_property(srna, "scale_estimate", PROP_FLOAT, PROP_MATRIX);
RNA_def_property_float_sdna(prop, NULL, "lscale");
RNA_def_property_multi_array(prop, 2, matrix_dimsize);
RNA_def_property_ui_text(prop, "Scale Matrix", "Estimated scale matrix");
@@ -1680,18 +1681,18 @@ static void rna_def_softbody(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Use Edges", "Use Edges as springs");
RNA_def_property_update(prop, 0, "rna_softbody_update");
- prop= RNA_def_property(srna, "stiff_quads", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_stiff_quads", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_funcs(prop, "rna_SoftBodySettings_stiff_quads_get", "rna_SoftBodySettings_stiff_quads_set");
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
RNA_def_property_ui_text(prop, "Stiff Quads", "Adds diagonal springs on 4-gons");
RNA_def_property_update(prop, 0, "rna_softbody_update");
- prop= RNA_def_property(srna, "edge_collision", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_edge_collision", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_funcs(prop, "rna_SoftBodySettings_edge_collision_get", "rna_SoftBodySettings_edge_collision_set");
RNA_def_property_ui_text(prop, "Edge Collision", "Edges collide too");
RNA_def_property_update(prop, 0, "rna_softbody_update");
- prop= RNA_def_property(srna, "face_collision", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_face_collision", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_funcs(prop, "rna_SoftBodySettings_face_collision_get", "rna_SoftBodySettings_face_collision_set");
RNA_def_property_ui_text(prop, "Face Collision", "Faces collide too, can be very slow");
RNA_def_property_update(prop, 0, "rna_softbody_update");
@@ -1702,7 +1703,7 @@ static void rna_def_softbody(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Aerodynamics Type", "Method of calculating aerodynamic interaction");
RNA_def_property_update(prop, 0, "rna_softbody_update");
- prop= RNA_def_property(srna, "self_collision", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_self_collision", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_funcs(prop, "rna_SoftBodySettings_self_collision_get", "rna_SoftBodySettings_self_collision_set");
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
RNA_def_property_ui_text(prop, "Self Collision", "Enable naive vertex ball self collision");
diff --git a/source/blender/makesrna/intern/rna_particle.c b/source/blender/makesrna/intern/rna_particle.c
index 700b817f7ce..dd8f7196fb0 100644
--- a/source/blender/makesrna/intern/rna_particle.c
+++ b/source/blender/makesrna/intern/rna_particle.c
@@ -239,12 +239,25 @@ static void rna_Particle_redo_child(Main *bmain, Scene *scene, PointerRNA *ptr)
particle_recalc(bmain, scene, ptr, PSYS_RECALC_CHILD);
}
+static ParticleSystem *rna_particle_system_for_target(Object *ob, ParticleTarget *target)
+{
+ ParticleSystem *psys;
+ ParticleTarget *pt;
+
+ for(psys=ob->particlesystem.first; psys; psys=psys->next)
+ for(pt=psys->targets.first; pt; pt=pt->next)
+ if(pt == target)
+ return psys;
+
+ return NULL;
+}
+
static void rna_Particle_target_reset(Main *bmain, Scene *scene, PointerRNA *ptr)
{
if(ptr->type==&RNA_ParticleTarget) {
- ParticleTarget *pt = (ParticleTarget*)ptr->data;
Object *ob = (Object*)ptr->id.data;
- ParticleSystem *kpsys=NULL, *psys=psys_get_current(ob);
+ ParticleTarget *pt = (ParticleTarget*)ptr->data;
+ ParticleSystem *kpsys=NULL, *psys=rna_particle_system_for_target(ob, pt);
if(pt->ob==ob || pt->ob==NULL) {
kpsys = BLI_findlink(&ob->particlesystem, pt->psys-1);
@@ -277,7 +290,8 @@ static void rna_Particle_target_redo(Main *bmain, Scene *scene, PointerRNA *ptr)
{
if(ptr->type==&RNA_ParticleTarget) {
Object *ob = (Object*)ptr->id.data;
- ParticleSystem *psys = psys_get_current(ob);
+ ParticleTarget *pt = (ParticleTarget*)ptr->data;
+ ParticleSystem *psys = rna_particle_system_for_target(ob, pt);
psys->recalc = PSYS_RECALC_REDO;
@@ -302,16 +316,15 @@ static void rna_Particle_hair_dynamics(Main *bmain, Scene *scene, PointerRNA *pt
}
static PointerRNA rna_particle_settings_get(PointerRNA *ptr)
{
- Object *ob= (Object*)ptr->id.data;
- ParticleSettings *part = psys_get_current(ob)->part;
+ ParticleSystem *psys= (ParticleSystem*)ptr->data;
+ ParticleSettings *part = psys->part;
return rna_pointer_inherit_refine(ptr, &RNA_ParticleSettings, part);
}
static void rna_particle_settings_set(PointerRNA *ptr, PointerRNA value)
{
- Object *ob= (Object*)ptr->id.data;
- ParticleSystem *psys = psys_get_current(ob);
+ ParticleSystem *psys= (ParticleSystem*)ptr->data;
if(psys->part)
psys->part->id.us--;
@@ -743,12 +756,12 @@ static void rna_def_particle_hair_key(BlenderRNA *brna)
RNA_def_property_range(prop, 0.0, 1.0);
RNA_def_property_ui_text(prop, "Weight", "Weight for cloth simulation");
- prop= RNA_def_property(srna, "location", PROP_FLOAT, PROP_TRANSLATION);
+ prop= RNA_def_property(srna, "co", PROP_FLOAT, PROP_TRANSLATION);
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Location (Object Space)", "Location of the hair key in object space");
RNA_def_property_float_funcs(prop, "rna_ParticleHairKey_location_object_get", "rna_ParticleHairKey_location_object_set", NULL);
- prop= RNA_def_property(srna, "location_hairspace", PROP_FLOAT, PROP_TRANSLATION);
+ prop= RNA_def_property(srna, "co_hair_space", PROP_FLOAT, PROP_TRANSLATION);
RNA_def_property_float_sdna(prop, NULL, "co");
RNA_def_property_ui_text(prop, "Location", "Location of the hair key in its internal coordinate system, relative to the emitting face");
}
@@ -850,7 +863,7 @@ static void rna_def_particle(BlenderRNA *brna)
/* Hair & Keyed Keys */
- prop= RNA_def_property(srna, "hair", PROP_COLLECTION, PROP_NONE);
+ prop= RNA_def_property(srna, "is_hair", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_sdna(prop, NULL, "hair", "totkey");
RNA_def_property_struct_type(prop, "ParticleHairKey");
RNA_def_property_ui_text(prop, "Hair", "");
@@ -863,7 +876,7 @@ static void rna_def_particle(BlenderRNA *brna)
// float fuv[4], foffset; /* coordinates on face/edge number "num" and depth along*/
// /* face normal for volume emission */
- prop= RNA_def_property(srna, "birthtime", PROP_FLOAT, PROP_TIME);
+ prop= RNA_def_property(srna, "birth_time", PROP_FLOAT, PROP_TIME);
RNA_def_property_float_sdna(prop, NULL, "time");
// RNA_def_property_range(prop, lowerLimitf, upperLimitf);
RNA_def_property_ui_text(prop, "Birth Time", "");
@@ -889,7 +902,7 @@ static void rna_def_particle(BlenderRNA *brna)
// int totkey;
/* flag */
- prop= RNA_def_property(srna, "is_existing", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "is_exist", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", PARS_UNEXIST);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Exists", "");
@@ -937,7 +950,7 @@ static void rna_def_fluid_settings(BlenderRNA *brna)
RNA_def_struct_ui_text(srna, "SPH Fluid Settings", "Settings for particle fluids physics");
/* Fluid settings */
- prop= RNA_def_property(srna, "spring_k", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "spring_force", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "spring_k");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Spring", "Spring force constant");
@@ -969,13 +982,13 @@ static void rna_def_fluid_settings(BlenderRNA *brna)
RNA_def_property_update(prop, 0, "rna_Particle_reset");
/* Double density relaxation */
- prop= RNA_def_property(srna, "stiffness_k", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "stiffness", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "stiffness_k");
RNA_def_property_range(prop, 0.0f, 100.0f);
RNA_def_property_ui_text(prop, "Stiffness ", "Constant K - Stiffness");
RNA_def_property_update(prop, 0, "rna_Particle_reset");
- prop= RNA_def_property(srna, "stiffness_knear", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "stiffness_near", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "stiffness_knear");
RNA_def_property_range(prop, 0.0f, 100.0f);
RNA_def_property_ui_text(prop, "Repulsion", "Repulsion factor: stiffness_knear");
@@ -1059,13 +1072,14 @@ static void rna_def_particle_settings(BlenderRNA *brna)
};
//TODO: names, tooltips
+#if 0
static EnumPropertyItem rot_from_items[] = {
{PART_ROT_KEYS, "KEYS", 0, "keys", ""},
{PART_ROT_ZINCR, "ZINCR", 0, "zincr", ""},
{PART_ROT_IINCR, "IINCR", 0, "iincr", ""},
{0, NULL, 0, NULL, NULL}
};
-
+#endif
static EnumPropertyItem integrator_type_items[] = {
{PART_INT_EULER, "EULER", 0, "Euler", ""},
{PART_INT_VERLET, "VERLET", 0, "Verlet", ""},
@@ -1120,24 +1134,24 @@ static void rna_def_particle_settings(BlenderRNA *brna)
RNA_def_struct_ui_icon(srna, ICON_PARTICLE_DATA);
/* flag */
- prop= RNA_def_property(srna, "react_start_end", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_react_start_end", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_REACT_STA_END);
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
RNA_def_property_ui_text(prop, "Start/End", "Give birth to unreacted particles eventually");
RNA_def_property_update(prop, 0, "rna_Particle_reset");
- prop= RNA_def_property(srna, "react_multiple", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_react_multiple", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_REACT_MULTIPLE);
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
RNA_def_property_ui_text(prop, "Multi React", "React multiple times");
RNA_def_property_update(prop, 0, "rna_Particle_reset");
- prop= RNA_def_property(srna, "unborn", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_unborn", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_UNBORN);
RNA_def_property_ui_text(prop, "Unborn", "Show particles before they are emitted");
RNA_def_property_update(prop, 0, "rna_Particle_redo");
- prop= RNA_def_property(srna, "died", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_dead", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_DIED);
RNA_def_property_ui_text(prop, "Died", "Show particles after they have died");
RNA_def_property_update(prop, 0, "rna_Particle_redo");
@@ -1148,67 +1162,67 @@ static void rna_def_particle_settings(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Random", "Emit in random order of elements");
RNA_def_property_update(prop, 0, "rna_Particle_reset");
- prop= RNA_def_property(srna, "even_distribution", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_even_distribution", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_EDISTR);
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
RNA_def_property_ui_text(prop, "Even Distribution", "Use even distribution from faces based on face areas or edge lengths");
RNA_def_property_update(prop, 0, "rna_Particle_reset");
- prop= RNA_def_property(srna, "die_on_collision", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_die_on_collision", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_DIE_ON_COL);
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
RNA_def_property_ui_text(prop, "Die on hit", "Particles die when they collide with a deflector object");
RNA_def_property_update(prop, 0, "rna_Particle_reset");
- prop= RNA_def_property(srna, "size_deflect", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_size_deflect", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_SIZE_DEFL);
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
RNA_def_property_ui_text(prop, "Size Deflect", "Use particle's size in deflection");
RNA_def_property_update(prop, 0, "rna_Particle_reset");
- prop= RNA_def_property(srna, "rotation_dynamic", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_dynamic_rotation", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_ROT_DYN);
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
RNA_def_property_ui_text(prop, "Dynamic", "Sets rotation to dynamic/constant");
RNA_def_property_update(prop, 0, "rna_Particle_reset");
- prop= RNA_def_property(srna, "sizemass", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_multiply_size_mass", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_SIZEMASS);
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
RNA_def_property_ui_text(prop, "Mass from Size", "Multiply mass by particle size");
RNA_def_property_update(prop, 0, "rna_Particle_reset");
- prop= RNA_def_property(srna, "boids_2d", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "lock_boids_to_surface", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_BOIDS_2D);
RNA_def_property_ui_text(prop, "Boids 2D", "Constrain boids to a surface");
RNA_def_property_update(prop, 0, "rna_Particle_reset");
- prop= RNA_def_property(srna, "branching", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_branching", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_BRANCHING);
RNA_def_property_ui_text(prop, "Branching", "Branch child paths from each other");
RNA_def_property_update(prop, 0, "rna_Particle_redo_child");
- prop= RNA_def_property(srna, "animate_branching", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_animate_branching", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_ANIM_BRANCHING);
RNA_def_property_ui_text(prop, "Animated", "Animate branching");
RNA_def_property_update(prop, 0, "rna_Particle_redo_child");
- prop= RNA_def_property(srna, "symmetric_branching", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_symmetric_branching", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_SYMM_BRANCHING);
RNA_def_property_ui_text(prop, "Symmetric", "Start and end points are the same");
RNA_def_property_update(prop, 0, "rna_Particle_redo_child");
- prop= RNA_def_property(srna, "hair_bspline", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_hair_bspline", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_HAIR_BSPLINE);
RNA_def_property_ui_text(prop, "B-Spline", "Interpolate hair using B-Splines");
RNA_def_property_update(prop, 0, "rna_Particle_redo");
- prop= RNA_def_property(srna, "grid_invert", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "invert_grid", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_GRID_INVERT);
RNA_def_property_ui_text(prop, "Invert", "Invert what is considered object and what is not");
RNA_def_property_update(prop, 0, "rna_Particle_reset");
- prop= RNA_def_property(srna, "child_effector", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "apply_effector_to_children", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_CHILD_EFFECT);
RNA_def_property_ui_text(prop, "Children", "Apply effectors to children");
RNA_def_property_update(prop, 0, "rna_Particle_redo");
@@ -1218,12 +1232,12 @@ static void rna_def_particle_settings(BlenderRNA *brna)
//RNA_def_property_ui_text(prop, "Use seams", "Use seams to determine parents");
//RNA_def_property_update(prop, 0, "rna_Particle_redo_child");
- prop= RNA_def_property(srna, "child_guide", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "apply_guide_to_children", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_CHILD_GUIDE);
- RNA_def_property_ui_text(prop, "child_guide", "");
+ RNA_def_property_ui_text(prop, "apply_guide_to_children", "");
RNA_def_property_update(prop, 0, "rna_Particle_redo");
- prop= RNA_def_property(srna, "self_effect", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_self_effect", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PART_SELF_EFFECT);
RNA_def_property_ui_text(prop, "Self Effect", "Particle effectors effect themselves");
RNA_def_property_update(prop, 0, "rna_Particle_reset");
@@ -1295,17 +1309,17 @@ static void rna_def_particle_settings(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Emitter", "Render emitter Object also");
RNA_def_property_update(prop, 0, "rna_Particle_redo");
- prop= RNA_def_property(srna, "draw_health", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_health", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "draw", PART_DRAW_HEALTH);
RNA_def_property_ui_text(prop, "Health", "Draw boid health");
RNA_def_property_update(prop, 0, "rna_Particle_redo");
- prop= RNA_def_property(srna, "abs_path_time", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_absolute_path_time", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "draw", PART_ABS_PATH_TIME);
RNA_def_property_ui_text(prop, "Absolute Path Time", "Path timing is in absolute frames");
RNA_def_property_update(prop, 0, "rna_Particle_abspathtime_update");
- prop= RNA_def_property(srna, "billboard_lock", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "lock_billboard", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "draw", PART_DRAW_BB_LOCK);
RNA_def_property_ui_text(prop, "Lock Billboard", "Lock the billboards align axis");
RNA_def_property_update(prop, 0, "rna_Particle_redo");
@@ -1315,12 +1329,12 @@ static void rna_def_particle_settings(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Parents", "Render parent particles");
RNA_def_property_update(prop, 0, "rna_Particle_redo");
- prop= RNA_def_property(srna, "num", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_number", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "draw", PART_DRAW_NUM);
RNA_def_property_ui_text(prop, "Number", "Show particle number");
RNA_def_property_update(prop, 0, "rna_Particle_redo");
- prop= RNA_def_property(srna, "rand_group", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_group_pick_random", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "draw", PART_DRAW_RAND_GR);
RNA_def_property_ui_text(prop, "Pick Random", "Pick objects from group randomly");
RNA_def_property_update(prop, 0, "rna_Particle_redo");
@@ -1335,39 +1349,39 @@ static void rna_def_particle_settings(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Use Global", "Use object's global coordinates for duplication");
RNA_def_property_update(prop, 0, "rna_Particle_redo");
- prop= RNA_def_property(srna, "render_adaptive", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_render_adaptive", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "draw", PART_DRAW_REN_ADAPT);
RNA_def_property_ui_text(prop, "Adaptive render", "Draw steps of the particle path");
RNA_def_property_update(prop, 0, "rna_Particle_redo");
- prop= RNA_def_property(srna, "velocity_length", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_velocity_length", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "draw", PART_DRAW_VEL_LENGTH);
RNA_def_property_ui_text(prop, "Speed", "Multiply line length by particle speed");
RNA_def_property_update(prop, 0, "rna_Particle_redo");
- prop= RNA_def_property(srna, "material_color", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_material_color", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "draw", PART_DRAW_MAT_COL);
RNA_def_property_ui_text(prop, "Material Color", "Draw particles using material's diffuse color");
RNA_def_property_update(prop, 0, "rna_Particle_redo");
- prop= RNA_def_property(srna, "whole_group", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_whole_group", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "draw", PART_DRAW_WHOLE_GR);
RNA_def_property_ui_text(prop, "Whole Group", "Use whole group at once");
RNA_def_property_update(prop, 0, "rna_Particle_redo");
- prop= RNA_def_property(srna, "render_strand", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_strand_primitive", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "draw", PART_DRAW_REN_STRAND);
RNA_def_property_ui_text(prop, "Strand render", "Use the strand primitive for rendering");
RNA_def_property_update(prop, 0, "rna_Particle_redo");
- prop= RNA_def_property(srna, "draw_as", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "draw_method", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "draw_as");
RNA_def_property_enum_items(prop, part_draw_as_items);
RNA_def_property_enum_funcs(prop, NULL, NULL, "rna_Particle_draw_as_itemf");
RNA_def_property_ui_text(prop, "Particle Drawing", "How particles are drawn in viewport");
RNA_def_property_update(prop, 0, "rna_Particle_redo");
- prop= RNA_def_property(srna, "ren_as", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "render_type", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "ren_as");
RNA_def_property_enum_items(prop, part_ren_as_items);
RNA_def_property_enum_funcs(prop, NULL, NULL, "rna_Particle_ren_as_itemf");
@@ -1415,7 +1429,7 @@ static void rna_def_particle_settings(BlenderRNA *brna)
RNA_def_property_range(prop, 0, 45);
RNA_def_property_ui_text(prop, "Degrees", "How many degrees path has to curve to make another render segment");
- prop= RNA_def_property(srna, "adaptive_pix", PROP_INT, PROP_NONE);
+ prop= RNA_def_property(srna, "adaptive_pixel", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "adapt_pix");
RNA_def_property_range(prop, 0, 50);
RNA_def_property_ui_text(prop, "Pixel", "How many pixels path has to cover to make another render segment");
@@ -1433,11 +1447,13 @@ static void rna_def_particle_settings(BlenderRNA *brna)
RNA_def_property_update(prop, 0, "rna_Particle_redo");
- //TODO: is this read only/internal?
+ // not used anywhere, why is this in DNA???
+#if 0
prop= RNA_def_property(srna, "rotate_from", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "rotfrom");
RNA_def_property_enum_items(prop, rot_from_items);
RNA_def_property_ui_text(prop, "Rotate From", "");
+#endif
prop= RNA_def_property(srna, "integrator", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_items(prop, integrator_type_items);
@@ -1472,7 +1488,7 @@ static void rna_def_particle_settings(BlenderRNA *brna)
RNA_def_property_enum_items(prop, bb_anim_items);
RNA_def_property_ui_text(prop, "Animate", "How to animate billboard textures");
- prop= RNA_def_property(srna, "billboard_split_offset", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "billboard_offset_split", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "bb_split_offset");
RNA_def_property_enum_items(prop, bb_split_offset_items);
RNA_def_property_ui_text(prop, "Offset", "How to offset billboard textures");
@@ -1483,7 +1499,7 @@ static void rna_def_particle_settings(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Tilt", "Tilt of the billboards");
RNA_def_property_update(prop, 0, "rna_Particle_redo");
- prop= RNA_def_property(srna, "billboard_random_tilt", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "billboard_tilt_random", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "bb_rand_tilt");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Random Tilt", "Random tilt of the billboards");
@@ -1498,7 +1514,7 @@ static void rna_def_particle_settings(BlenderRNA *brna)
RNA_def_property_update(prop, 0, "rna_Particle_redo");
/* simplification */
- prop= RNA_def_property(srna, "enable_simplify", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_simplify", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "simplify_flag", PART_SIMPLIFY_ENABLE);
RNA_def_property_ui_text(prop, "Child Simplification", "Remove child strands as the object becomes smaller on the screen");
@@ -1546,7 +1562,7 @@ static void rna_def_particle_settings(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Lifetime", "Specify the life span of the particles");
RNA_def_property_update(prop, 0, "rna_Particle_reset");
- prop= RNA_def_property(srna, "random_lifetime", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "lifetime_random", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "randlife");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Random", "Give the particle life a random variation");
@@ -1618,7 +1634,7 @@ static void rna_def_particle_settings(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Object", "Let the object give the particle a starting speed");
RNA_def_property_update(prop, 0, "rna_Particle_reset");
- prop= RNA_def_property(srna, "random_factor", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "factor_random", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "randfac");//optional if prop names are the same
RNA_def_property_range(prop, 0.0f, 200.0f);
RNA_def_property_ui_range(prop, 0, 100, 1, 3);
@@ -1651,7 +1667,7 @@ static void rna_def_particle_settings(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Reactor", "Let the vector away from the target particles location give the particle a starting speed");
RNA_def_property_update(prop, 0, "rna_Particle_reset");
- prop= RNA_def_property(srna, "object_aligned_factor", PROP_FLOAT, PROP_VELOCITY);
+ prop= RNA_def_property(srna, "object_align_factor", PROP_FLOAT, PROP_VELOCITY);
RNA_def_property_float_sdna(prop, NULL, "ob_vel");
RNA_def_property_array(prop, 3);
RNA_def_property_range(prop, -200.0f, 200.0f);
@@ -1672,13 +1688,13 @@ static void rna_def_particle_settings(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Phase", "Initial rotation phase");
RNA_def_property_update(prop, 0, "rna_Particle_reset");
- prop= RNA_def_property(srna, "random_rotation_factor", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "rotation_factor_random", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "randrotfac");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Random Rotation", "Randomize rotation");
RNA_def_property_update(prop, 0, "rna_Particle_reset");
- prop= RNA_def_property(srna, "random_phase_factor", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "phase_factor_random", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "randphasefac");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Random Phase", "Randomize rotation phase");
@@ -1698,7 +1714,7 @@ static void rna_def_particle_settings(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Size", "The size of the particles");
RNA_def_property_update(prop, 0, "rna_Particle_reset");
- prop= RNA_def_property(srna, "random_size", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "size_random", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "randsize");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Random Size", "Give the particle size a random variation");
@@ -1725,14 +1741,14 @@ static void rna_def_particle_settings(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Brownian", "Specify the amount of Brownian motion");
RNA_def_property_update(prop, 0, "rna_Particle_reset");
- prop= RNA_def_property(srna, "damp_factor", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "damping", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "dampfac");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Damp", "Specify the amount of damping");
RNA_def_property_update(prop, 0, "rna_Particle_reset");
/* random length */
- prop= RNA_def_property(srna, "random_length", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "length_random", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "randlength");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Random Length", "Give path length a random variation");
@@ -1746,7 +1762,7 @@ static void rna_def_particle_settings(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Children Per Parent", "Amount of children/parent");
RNA_def_property_update(prop, 0, "rna_Particle_redo_child");
- prop= RNA_def_property(srna, "rendered_child_nbr", PROP_INT, PROP_NONE);
+ prop= RNA_def_property(srna, "rendered_child_count", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "ren_child_nbr");
RNA_def_property_range(prop, 0, 100000);
RNA_def_property_ui_range(prop, 0, 10000, 1, 0);
@@ -1765,7 +1781,7 @@ static void rna_def_particle_settings(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Child Size", "A multiplier for the child particle size");
RNA_def_property_update(prop, 0, "rna_Particle_redo_child");
- prop= RNA_def_property(srna, "child_random_size", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "child_size_random", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "childrandsize");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Random Child Size", "Random variation to the size of the child particles");
@@ -1790,7 +1806,7 @@ static void rna_def_particle_settings(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Clump", "Amount of clumping");
RNA_def_property_update(prop, 0, "rna_Particle_redo_child");
- prop= RNA_def_property(srna, "clumppow", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "clump_shape", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "clumppow");
RNA_def_property_range(prop, -0.999f, 0.999f);
RNA_def_property_ui_text(prop, "Shape", "Shape of clumping");
@@ -1819,46 +1835,49 @@ static void rna_def_particle_settings(BlenderRNA *brna)
/* rough */
- prop= RNA_def_property(srna, "rough1", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "roughness_1", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "rough1");
RNA_def_property_range(prop, 0.0f, 100000.0f);
RNA_def_property_ui_range(prop, 0.0f, 10.0f, 0.1, 3);
RNA_def_property_ui_text(prop, "Rough1", "Amount of location dependent rough");
RNA_def_property_update(prop, 0, "rna_Particle_redo_child");
- prop= RNA_def_property(srna, "rough1_size", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "roughness_1_size", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "rough1_size");
RNA_def_property_range(prop, 0.01f, 100000.0f);
RNA_def_property_ui_range(prop, 0.01f, 10.0f, 0.1, 3);
RNA_def_property_ui_text(prop, "Size1", "Size of location dependent rough");
RNA_def_property_update(prop, 0, "rna_Particle_redo_child");
- prop= RNA_def_property(srna, "rough2", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "roughness_2", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "rough2");
RNA_def_property_range(prop, 0.0f, 100000.0f);
RNA_def_property_ui_range(prop, 0.0f, 10.0f, 0.1, 3);
RNA_def_property_ui_text(prop, "Rough2", "Amount of random rough");
RNA_def_property_update(prop, 0, "rna_Particle_redo_child");
- prop= RNA_def_property(srna, "rough2_size", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "roughness_2_size", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "rough2_size");
RNA_def_property_range(prop, 0.01f, 100000.0f);
RNA_def_property_ui_range(prop, 0.01f, 10.0f, 0.1, 3);
RNA_def_property_ui_text(prop, "Size2", "Size of random rough");
RNA_def_property_update(prop, 0, "rna_Particle_redo_child");
- prop= RNA_def_property(srna, "rough2_thres", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "roughness_2_threshold", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "rough2_thres");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Threshold", "Amount of particles left untouched by random rough");
RNA_def_property_update(prop, 0, "rna_Particle_redo_child");
- prop= RNA_def_property(srna, "rough_endpoint", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "roughness_endpoint", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "rough_end");
RNA_def_property_range(prop, 0.0f, 100000.0f);
RNA_def_property_ui_range(prop, 0.0f, 10.0f, 0.1, 3);
RNA_def_property_ui_text(prop, "Rough Endpoint", "Amount of end point rough");
RNA_def_property_update(prop, 0, "rna_Particle_redo_child");
- prop= RNA_def_property(srna, "rough_end_shape", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "roughness_end_shape", PROP_FLOAT, PROP_NONE);
+ RNA_def_property_float_sdna(prop, NULL, "rough_end_shape");
RNA_def_property_range(prop, 0.0f, 10.0f);
RNA_def_property_ui_text(prop, "Shape", "Shape of end point rough");
RNA_def_property_update(prop, 0, "rna_Particle_redo_child");
@@ -1869,7 +1888,7 @@ static void rna_def_particle_settings(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Length", "Length of child paths");
RNA_def_property_update(prop, 0, "rna_Particle_redo_child");
- prop= RNA_def_property(srna, "child_length_thres", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "child_length_threshold", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "clength_thres");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Threshold", "Amount of particles left untouched by child path length");
@@ -1944,7 +1963,8 @@ static void rna_def_particle_settings(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Dupli Group", "Show Objects in this Group in place of particles");
RNA_def_property_update(prop, 0, "rna_Particle_redo");
- prop= RNA_def_property(srna, "dupliweights", PROP_COLLECTION, PROP_NONE);
+ prop= RNA_def_property(srna, "dupli_weights", PROP_COLLECTION, PROP_NONE);
+ RNA_def_property_collection_sdna(prop, NULL, "dupliweights", NULL);
RNA_def_property_struct_type(prop, "ParticleDupliWeight");
RNA_def_property_ui_text(prop, "Dupli Group Weights", "Weights for all of the objects in the dupli group");
@@ -2038,12 +2058,13 @@ static void rna_def_particle_target(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Duration", "");
RNA_def_property_update(prop, 0, "rna_Particle_target_redo");
- prop= RNA_def_property(srna, "valid", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "is_valid", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PTARGET_VALID);
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
RNA_def_property_ui_text(prop, "Valid", "Keyed particles target is valid");
- prop= RNA_def_property(srna, "mode", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "alliance", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "mode");
RNA_def_property_enum_items(prop, mode_items);
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
RNA_def_property_ui_text(prop, "Mode", "");
@@ -2089,12 +2110,12 @@ static void rna_def_particle_system(BlenderRNA *brna)
RNA_def_property_update(prop, 0, "rna_Particle_reset");
/* hair */
- prop= RNA_def_property(srna, "global_hair", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "is_global_hair", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PSYS_GLOBAL_HAIR);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Global Hair", "Hair keys are in global coordinate space");
- prop= RNA_def_property(srna, "hair_dynamics", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_hair_dynamics", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PSYS_HAIR_DYNAMICS);
RNA_def_property_ui_text(prop, "Hair Dynamics", "Enable hair dynamics using cloth simulation");
RNA_def_property_update(prop, 0, "rna_Particle_hair_dynamics");
@@ -2120,7 +2141,7 @@ static void rna_def_particle_system(BlenderRNA *brna)
RNA_def_property_update(prop, 0, "rna_Particle_reset");
/* keyed */
- prop= RNA_def_property(srna, "keyed_timing", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_keyed_timing", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PSYS_KEYED_TIMING);
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
RNA_def_property_ui_text(prop, "Keyed timing", "Use key times");
@@ -2171,7 +2192,7 @@ static void rna_def_particle_system(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Vertex Group Density", "Vertex group to control density");
RNA_def_property_update(prop, 0, "rna_Particle_reset");
- prop= RNA_def_property(srna, "vertex_group_density_negate", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "invert_vertex_group_density", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "vg_neg", (1 << PSYS_VG_DENSITY));
RNA_def_property_ui_text(prop, "Vertex Group Density Negate", "Negate the effect of the density vertex group");
RNA_def_property_update(prop, 0, "rna_Particle_reset");
@@ -2181,7 +2202,7 @@ static void rna_def_particle_system(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Vertex Group Velocity", "Vertex group to control velocity");
RNA_def_property_update(prop, 0, "rna_Particle_reset");
- prop= RNA_def_property(srna, "vertex_group_velocity_negate", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "invert_vertex_group_velocity", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "vg_neg", (1 << PSYS_VG_VEL));
RNA_def_property_ui_text(prop, "Vertex Group Velocity Negate", "Negate the effect of the velocity vertex group");
RNA_def_property_update(prop, 0, "rna_Particle_reset");
@@ -2191,7 +2212,7 @@ static void rna_def_particle_system(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Vertex Group Length", "Vertex group to control length");
RNA_def_property_update(prop, 0, "rna_Particle_redo");
- prop= RNA_def_property(srna, "vertex_group_length_negate", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "invert_vertex_group_length", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "vg_neg", (1 << PSYS_VG_LENGTH));
RNA_def_property_ui_text(prop, "Vertex Group Length Negate", "Negate the effect of the length vertex group");
RNA_def_property_update(prop, 0, "rna_Particle_redo");
@@ -2201,7 +2222,7 @@ static void rna_def_particle_system(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Vertex Group Clump", "Vertex group to control clump");
RNA_def_property_update(prop, 0, "rna_Particle_redo_child");
- prop= RNA_def_property(srna, "vertex_group_clump_negate", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "invert_vertex_group_clump", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "vg_neg", (1 << PSYS_VG_CLUMP));
RNA_def_property_ui_text(prop, "Vertex Group Clump Negate", "Negate the effect of the clump vertex group");
RNA_def_property_update(prop, 0, "rna_Particle_redo_child");
@@ -2211,27 +2232,27 @@ static void rna_def_particle_system(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Vertex Group Kink", "Vertex group to control kink");
RNA_def_property_update(prop, 0, "rna_Particle_redo_child");
- prop= RNA_def_property(srna, "vertex_group_kink_negate", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "invert_vertex_group_kink", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "vg_neg", (1 << PSYS_VG_KINK));
RNA_def_property_ui_text(prop, "Vertex Group Kink Negate", "Negate the effect of the kink vertex group");
RNA_def_property_update(prop, 0, "rna_Particle_redo_child");
- prop= RNA_def_property(srna, "vertex_group_roughness1", PROP_STRING, PROP_NONE);
+ prop= RNA_def_property(srna, "vertex_group_roughness_1", PROP_STRING, PROP_NONE);
RNA_def_property_string_funcs(prop, "rna_ParticleVGroup_name_get_5", "rna_ParticleVGroup_name_len_5", "rna_ParticleVGroup_name_set_5");
RNA_def_property_ui_text(prop, "Vertex Group Roughness 1", "Vertex group to control roughness 1");
RNA_def_property_update(prop, 0, "rna_Particle_redo_child");
- prop= RNA_def_property(srna, "vertex_group_roughness1_negate", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "invert_vertex_group_roughness_1", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "vg_neg", (1 << PSYS_VG_ROUGH1));
RNA_def_property_ui_text(prop, "Vertex Group Roughness 1 Negate", "Negate the effect of the roughness 1 vertex group");
RNA_def_property_update(prop, 0, "rna_Particle_redo_child");
- prop= RNA_def_property(srna, "vertex_group_roughness2", PROP_STRING, PROP_NONE);
+ prop= RNA_def_property(srna, "vertex_group_roughness_2", PROP_STRING, PROP_NONE);
RNA_def_property_string_funcs(prop, "rna_ParticleVGroup_name_get_6", "rna_ParticleVGroup_name_len_6", "rna_ParticleVGroup_name_set_6");
RNA_def_property_ui_text(prop, "Vertex Group Roughness 2", "Vertex group to control roughness 2");
RNA_def_property_update(prop, 0, "rna_Particle_redo_child");
- prop= RNA_def_property(srna, "vertex_group_roughness2_negate", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "invert_vertex_group_roughness_2", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "vg_neg", (1 << PSYS_VG_ROUGH2));
RNA_def_property_ui_text(prop, "Vertex Group Roughness 2 Negate", "Negate the effect of the roughness 2 vertex group");
RNA_def_property_update(prop, 0, "rna_Particle_redo_child");
@@ -2241,7 +2262,7 @@ static void rna_def_particle_system(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Vertex Group Roughness End", "Vertex group to control roughness end");
RNA_def_property_update(prop, 0, "rna_Particle_redo_child");
- prop= RNA_def_property(srna, "vertex_group_roughness_end_negate", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "invert_vertex_group_roughness_end", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "vg_neg", (1 << PSYS_VG_ROUGHE));
RNA_def_property_ui_text(prop, "Vertex Group Roughness End Negate", "Negate the effect of the roughness end vertex group");
RNA_def_property_update(prop, 0, "rna_Particle_redo_child");
@@ -2251,7 +2272,7 @@ static void rna_def_particle_system(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Vertex Group Size", "Vertex group to control size");
RNA_def_property_update(prop, 0, "rna_Particle_reset");
- prop= RNA_def_property(srna, "vertex_group_size_negate", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "invert_vertex_group_size", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "vg_neg", (1 << PSYS_VG_SIZE));
RNA_def_property_ui_text(prop, "Vertex Group Size Negate", "Negate the effect of the size vertex group");
RNA_def_property_update(prop, 0, "rna_Particle_reset");
@@ -2261,7 +2282,7 @@ static void rna_def_particle_system(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Vertex Group Tangent", "Vertex group to control tangent");
RNA_def_property_update(prop, 0, "rna_Particle_reset");
- prop= RNA_def_property(srna, "vertex_group_tangent_negate", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "invert_vertex_group_tangent", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "vg_neg", (1 << PSYS_VG_TAN));
RNA_def_property_ui_text(prop, "Vertex Group Tangent Negate", "Negate the effect of the tangent vertex group");
RNA_def_property_update(prop, 0, "rna_Particle_reset");
@@ -2271,7 +2292,7 @@ static void rna_def_particle_system(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Vertex Group Rotation", "Vertex group to control rotation");
RNA_def_property_update(prop, 0, "rna_Particle_reset");
- prop= RNA_def_property(srna, "vertex_group_rotation_negate", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "invert_vertex_group_rotation", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "vg_neg", (1 << PSYS_VG_ROT));
RNA_def_property_ui_text(prop, "Vertex Group Rotation Negate", "Negate the effect of the rotation vertex group");
RNA_def_property_update(prop, 0, "rna_Particle_reset");
@@ -2281,7 +2302,7 @@ static void rna_def_particle_system(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Vertex Group Field", "Vertex group to control field");
RNA_def_property_update(prop, 0, "rna_Particle_reset");
- prop= RNA_def_property(srna, "vertex_group_field_negate", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "invert_vertex_group_field", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "vg_neg", (1 << PSYS_VG_EFFECTOR));
RNA_def_property_ui_text(prop, "Vertex Group Field Negate", "Negate the effect of the field vertex group");
RNA_def_property_update(prop, 0, "rna_Particle_reset");
@@ -2293,7 +2314,7 @@ static void rna_def_particle_system(BlenderRNA *brna)
RNA_def_property_struct_type(prop, "PointCache");
RNA_def_property_ui_text(prop, "Point Cache", "");
- prop= RNA_def_property(srna, "multiple_caches", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "has_multiple_caches", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_funcs(prop, "rna_ParticleSystem_multiple_caches_get", NULL);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Multiple Caches", "Particle system has multiple point caches");
@@ -2306,12 +2327,12 @@ static void rna_def_particle_system(BlenderRNA *brna)
RNA_def_property_update(prop, 0, "rna_Particle_redo");
/* hair or cache editing */
- prop= RNA_def_property(srna, "editable", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "is_editable", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_funcs(prop, "rna_ParticleSystem_editable_get", NULL);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Editable", "Particle system can be edited in particle mode");
- prop= RNA_def_property(srna, "edited", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "is_edited", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_funcs(prop, "rna_ParticleSystem_edited_get", NULL);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Edited", "Particle system has been edited in particle mode");
diff --git a/source/blender/makesrna/intern/rna_pose.c b/source/blender/makesrna/intern/rna_pose.c
index 37b453ad7a4..ce797f21494 100644
--- a/source/blender/makesrna/intern/rna_pose.c
+++ b/source/blender/makesrna/intern/rna_pose.c
@@ -37,7 +37,6 @@
#include "DNA_scene_types.h"
#include "BLI_math.h"
-#include "BLI_ghash.h"
#include "WM_types.h"
@@ -49,6 +48,10 @@
#include "DNA_userdef_types.h"
+#include "MEM_guardedalloc.h"
+
+#include "BLI_ghash.h"
+
#include "BKE_context.h"
#include "BKE_constraint.h"
#include "BKE_depsgraph.h"
@@ -117,7 +120,7 @@ static void rna_BoneGroup_color_set_set(PointerRNA *ptr, int value)
}
}
-static IDProperty *rna_PoseBone_idproperties(PointerRNA *ptr, int create)
+static IDProperty *rna_PoseBone_idprops(PointerRNA *ptr, int create)
{
bPoseChannel *pchan= ptr->data;
@@ -682,7 +685,7 @@ static void rna_def_pose_channel(BlenderRNA *brna)
RNA_def_struct_sdna(srna, "bPoseChannel");
RNA_def_struct_ui_text(srna, "Pose Bone", "Channel defining pose data for a bone in a Pose");
RNA_def_struct_path_func(srna, "rna_PoseBone_path");
- RNA_def_struct_idproperties_func(srna, "rna_PoseBone_idproperties");
+ RNA_def_struct_idprops_func(srna, "rna_PoseBone_idprops");
/* Bone Constraints */
prop= RNA_def_property(srna, "constraints", PROP_COLLECTION, PROP_NONE);
@@ -803,55 +806,55 @@ static void rna_def_pose_channel(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Pose Tail Position", "Location of tail of the channel's bone");
/* IK Settings */
- prop= RNA_def_property(srna, "has_ik", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "is_in_ik_chain", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_funcs(prop, "rna_PoseChannel_has_ik_get", NULL);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Has IK", "Is part of an IK chain");
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_IK_update");
- prop= RNA_def_property(srna, "ik_dof_x", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_negative_sdna(prop, NULL, "ikflag", BONE_IK_NO_XDOF);
- RNA_def_property_ui_text(prop, "IK X DoF", "Allow movement around the X axis");
+ prop= RNA_def_property(srna, "lock_ik_x", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "ikflag", BONE_IK_NO_XDOF);
+ RNA_def_property_ui_text(prop, "IK X Lock", "Disallow movement around the X axis");
RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable");
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_IK_update");
- prop= RNA_def_property(srna, "ik_dof_y", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_negative_sdna(prop, NULL, "ikflag", BONE_IK_NO_YDOF);
- RNA_def_property_ui_text(prop, "IK Y DoF", "Allow movement around the Y axis");
+ prop= RNA_def_property(srna, "lock_ik_y", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "ikflag", BONE_IK_NO_YDOF);
+ RNA_def_property_ui_text(prop, "IK Y Lock", "Disallow movement around the Y axis");
RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable");
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_IK_update");
- prop= RNA_def_property(srna, "ik_dof_z", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_negative_sdna(prop, NULL, "ikflag", BONE_IK_NO_ZDOF);
- RNA_def_property_ui_text(prop, "IK Z DoF", "Allow movement around the Z axis");
+ prop= RNA_def_property(srna, "lock_ik_z", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "ikflag", BONE_IK_NO_ZDOF);
+ RNA_def_property_ui_text(prop, "IK Z Lock", "Disallow movement around the Z axis");
RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable");
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_IK_update");
- prop= RNA_def_property(srna, "ik_limit_x", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_ik_limit_x", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "ikflag", BONE_IK_XLIMIT);
RNA_def_property_ui_text(prop, "IK X Limit", "Limit movement around the X axis");
RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable");
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_IK_update");
- prop= RNA_def_property(srna, "ik_limit_y", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_ik_limit_y", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "ikflag", BONE_IK_YLIMIT);
RNA_def_property_ui_text(prop, "IK Y Limit", "Limit movement around the Y axis");
RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable");
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_IK_update");
- prop= RNA_def_property(srna, "ik_limit_z", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_ik_limit_z", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "ikflag", BONE_IK_ZLIMIT);
RNA_def_property_ui_text(prop, "IK Z Limit", "Limit movement around the Z axis");
RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable");
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_IK_update");
- prop= RNA_def_property(srna, "ik_rot_control", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_ik_rotation_control", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "ikflag", BONE_IK_ROTCTL);
RNA_def_property_ui_text(prop, "IK rot control", "Apply channel rotation as IK constraint");
RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable");
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_IK_update");
- prop= RNA_def_property(srna, "ik_lin_control", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_ik_linear_control", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "ikflag", BONE_IK_LINCTL);
RNA_def_property_ui_text(prop, "IK rot control", "Apply channel size as IK constraint if stretching is enabled");
RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable");
@@ -927,14 +930,14 @@ static void rna_def_pose_channel(BlenderRNA *brna)
RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable");
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_IK_update");
- prop= RNA_def_property(srna, "ik_rot_weight", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "ik_rotation_weight", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "ikrotweight");
RNA_def_property_range(prop, 0.0f,1.0f);
RNA_def_property_ui_text(prop, "IK Rot Weight", "Weight of rotation constraint for IK");
RNA_def_property_editable_func(prop, "rna_PoseChannel_proxy_editable");
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Pose_update");
- prop= RNA_def_property(srna, "ik_lin_weight", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "ik_linear_weight", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "iklinweight");
RNA_def_property_range(prop, 0.0f,1.0f);
RNA_def_property_ui_text(prop, "IK Lin Weight", "Weight of scale constraint for IK");
@@ -1043,13 +1046,13 @@ static void rna_def_pose_itasc(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Precision", "Precision of convergence in case of reiteration");
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Itasc_update");
- prop= RNA_def_property(srna, "num_iter", PROP_INT, PROP_NONE);
+ prop= RNA_def_property(srna, "iterations", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "numiter");
RNA_def_property_range(prop, 1.f,1000.f);
RNA_def_property_ui_text(prop, "Iterations", "Maximum number of iterations for convergence in case of reiteration");
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Itasc_update");
- prop= RNA_def_property(srna, "num_step", PROP_INT, PROP_NONE);
+ prop= RNA_def_property(srna, "step_count", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "numstep");
RNA_def_property_range(prop, 1.f, 50.f);
RNA_def_property_ui_text(prop, "Num steps", "Divides the frame interval into this many steps");
@@ -1061,24 +1064,24 @@ static void rna_def_pose_itasc(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Mode", NULL);
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Itasc_update_rebuild");
- prop= RNA_def_property(srna, "reiteration", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "reiteration_method", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_bitflag_sdna(prop, NULL, "flag");
RNA_def_property_enum_items(prop, prop_itasc_reiteration_items);
RNA_def_property_ui_text(prop, "Reiteration", "Defines if the solver is allowed to reiterate (converges until precision is met) on none, first or all frames");
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Itasc_update");
- prop= RNA_def_property(srna, "auto_step", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_auto_step", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", ITASC_AUTO_STEP);
RNA_def_property_ui_text(prop, "Auto step", "Automatically determine the optimal number of steps for best performance/accuracy trade off");
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Itasc_update");
- prop= RNA_def_property(srna, "min_step", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "step_min", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "minstep");
RNA_def_property_range(prop, 0.0f,0.1f);
RNA_def_property_ui_text(prop, "Min step", "Lower bound for timestep in second in case of automatic substeps");
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Itasc_update");
- prop= RNA_def_property(srna, "max_step", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "step_max", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "maxstep");
RNA_def_property_range(prop, 0.0f,1.0f);
RNA_def_property_ui_text(prop, "Max step", "Higher bound for timestep in second in case of automatic substeps");
@@ -1090,7 +1093,7 @@ static void rna_def_pose_itasc(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Feedback", "Feedback coefficient for error correction. Average response time=1/feedback. Default=20");
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Itasc_update");
- prop= RNA_def_property(srna, "max_velocity", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "velocity_max", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "maxvel");
RNA_def_property_range(prop, 0.0f,100.0f);
RNA_def_property_ui_text(prop, "Max Velocity", "Maximum joint velocity in rad/s. Default=50");
@@ -1102,13 +1105,13 @@ static void rna_def_pose_itasc(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Solver", "Solving method selection: Automatic damping or manual damping");
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Itasc_update_rebuild");
- prop= RNA_def_property(srna, "dampmax", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "damping_max", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "dampmax");
RNA_def_property_range(prop, 0.0f,1.0f);
RNA_def_property_ui_text(prop, "Damp", "Maximum damping coefficient when singular value is nearly 0. Higher values=more stability, less reactivity. Default=0.5");
RNA_def_property_update(prop, NC_OBJECT|ND_POSE, "rna_Itasc_update");
- prop= RNA_def_property(srna, "dampeps", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "damping_epsilon", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "dampeps");
RNA_def_property_range(prop, 0.0f,1.0f);
RNA_def_property_ui_text(prop, "Epsilon", "Singular value under which damping is progressively applied. Higher values=more stability, less reactivity. Default=0.1");
diff --git a/source/blender/makesrna/intern/rna_render.c b/source/blender/makesrna/intern/rna_render.c
index d00507e8bcf..e4a89ed3121 100644
--- a/source/blender/makesrna/intern/rna_render.c
+++ b/source/blender/makesrna/intern/rna_render.c
@@ -277,11 +277,11 @@ static void rna_def_render_engine(BlenderRNA *brna)
RNA_def_property_string_sdna(prop, NULL, "type->name");
RNA_def_property_flag(prop, PROP_REGISTER);
- prop= RNA_def_property(srna, "bl_preview", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "bl_use_preview", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "type->flag", RE_DO_PREVIEW);
RNA_def_property_flag(prop, PROP_REGISTER_OPTIONAL);
- prop= RNA_def_property(srna, "bl_postprocess", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "bl_use_postprocess", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "type->flag", RE_DO_ALL);
RNA_def_property_flag(prop, PROP_REGISTER_OPTIONAL);
diff --git a/source/blender/makesrna/intern/rna_rna.c b/source/blender/makesrna/intern/rna_rna.c
index d3c81e3f324..4bfd0e4fd41 100644
--- a/source/blender/makesrna/intern/rna_rna.c
+++ b/source/blender/makesrna/intern/rna_rna.c
@@ -53,7 +53,7 @@ EnumPropertyItem property_unit_items[] = {
{0, NULL, 0, NULL, NULL}};
#ifdef RNA_RUNTIME
-
+#include "MEM_guardedalloc.h"
#include "BLI_ghash.h"
/* Struct */
@@ -201,7 +201,7 @@ static void rna_Struct_properties_next(CollectionPropertyIterator *iter)
/* try id properties */
if(!iter->valid) {
- group= RNA_struct_idproperties(&iter->builtin_parent, 0);
+ group= RNA_struct_idprops(&iter->builtin_parent, 0);
if(group) {
rna_iterator_listbase_end(iter);
@@ -335,7 +335,7 @@ PointerRNA rna_builtin_properties_lookup_string(PointerRNA *ptr, const char *key
if(ptr->data) {
IDProperty *group, *idp;
- group= RNA_struct_idproperties(ptr, 0);
+ group= RNA_struct_idprops(ptr, 0);
if(group) {
for(idp=group->data.group.first; idp; idp=idp->next) {
@@ -811,6 +811,12 @@ static int rna_Function_registered_optional_get(PointerRNA *ptr)
return func->flag & FUNC_REGISTER_OPTIONAL;
}
+static int rna_Function_no_self_get(PointerRNA *ptr)
+{
+ FunctionRNA *func= (FunctionRNA*)ptr->data;
+ return !(func->flag & FUNC_NO_SELF);
+}
+
/* Blender RNA */
static void rna_BlenderRNA_structs_begin(CollectionPropertyIterator *iter, PointerRNA *ptr)
@@ -998,17 +1004,17 @@ static void rna_def_property(BlenderRNA *brna)
RNA_def_property_boolean_funcs(prop, "rna_Property_is_never_none_get", NULL);
RNA_def_property_ui_text(prop, "Never None", "True when this value can't be set to None");
- prop= RNA_def_property(srna, "use_output", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "is_output", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_boolean_funcs(prop, "rna_Property_use_output_get", NULL);
RNA_def_property_ui_text(prop, "Return", "True when this property is an output value from an RNA function");
- prop= RNA_def_property(srna, "registered", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "is_registered", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_boolean_funcs(prop, "rna_Property_registered_get", NULL);
RNA_def_property_ui_text(prop, "Registered", "Property is registered as part of type registration");
- prop= RNA_def_property(srna, "registered_optional", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "is_registered_optional", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_boolean_funcs(prop, "rna_Property_registered_optional_get", NULL);
RNA_def_property_ui_text(prop, "Registered Optionally", "Property is optionally registered as part of type registration");
@@ -1040,15 +1046,20 @@ static void rna_def_function(BlenderRNA *brna)
RNA_def_property_collection_funcs(prop, "rna_Function_parameters_begin", "rna_iterator_listbase_next", "rna_iterator_listbase_end", "rna_iterator_listbase_get", 0, 0, 0);
RNA_def_property_ui_text(prop, "Parameters", "Parameters for the function");
- prop= RNA_def_property(srna, "registered", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "is_registered", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_boolean_funcs(prop, "rna_Function_registered_get", NULL);
RNA_def_property_ui_text(prop, "Registered", "Function is registered as callback as part of type registration");
- prop= RNA_def_property(srna, "registered_optional", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "is_registered_optional", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_boolean_funcs(prop, "rna_Function_registered_optional_get", NULL);
RNA_def_property_ui_text(prop, "Registered Optionally", "Function is optionally registered as callback part of type registration");
+
+ prop= RNA_def_property(srna, "use_self", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_clear_flag(prop, PROP_EDITABLE);
+ RNA_def_property_boolean_funcs(prop, "rna_Function_no_self_get", NULL);
+ RNA_def_property_ui_text(prop, "No Self", "Function does not pass its self as an argument (becomes a class method in python)");
}
static void rna_def_number_property(StructRNA *srna, PropertyType type)
@@ -1151,7 +1162,7 @@ static void rna_def_string_property(StructRNA *srna)
RNA_def_property_string_funcs(prop, "rna_StringProperty_default_get", "rna_StringProperty_default_length", NULL);
RNA_def_property_ui_text(prop, "Default", "string default value");
- prop= RNA_def_property(srna, "max_length", PROP_INT, PROP_UNSIGNED);
+ prop= RNA_def_property(srna, "length_max", PROP_INT, PROP_UNSIGNED);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_int_funcs(prop, "rna_StringProperty_max_length_get", NULL, NULL);
RNA_def_property_ui_text(prop, "Maximum Length", "Maximum length of the string, 0 means unlimited");
diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c
index f55c7f850ec..783fec97631 100644
--- a/source/blender/makesrna/intern/rna_scene.c
+++ b/source/blender/makesrna/intern/rna_scene.c
@@ -153,6 +153,8 @@ EnumPropertyItem image_type_items[] = {
#include "DNA_object_types.h"
#include "DNA_mesh_types.h"
+#include "MEM_guardedalloc.h"
+
#include "BKE_context.h"
#include "BKE_global.h"
#include "BKE_image.h"
@@ -211,7 +213,8 @@ static Base *rna_Scene_object_link(Scene *scene, bContext *C, ReportList *report
ob->recalc |= OB_RECALC_ALL;
- DAG_scene_sort(G.main, scene);
+ /* slows down importers too much, run scene.update() */
+ /* DAG_scene_sort(G.main, scene); */
return base;
}
@@ -1015,7 +1018,7 @@ static void rna_def_tool_settings(BlenderRNA *brna)
RNA_def_property_struct_type(prop, "Sculpt");
RNA_def_property_ui_text(prop, "Sculpt", "");
- prop = RNA_def_property(srna, "auto_normalize", PROP_BOOLEAN, PROP_NONE);
+ prop = RNA_def_property(srna, "use_auto_normalize", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "auto_normalize", 1);
RNA_def_property_ui_text(prop, "WPaint Auto-Normalize",
"Ensure all bone-deforming vertex groups add up to 1.0 while "
@@ -1042,19 +1045,19 @@ static void rna_def_tool_settings(BlenderRNA *brna)
RNA_def_property_flag(prop, PROP_NEVER_NULL);
/* Transform */
- prop= RNA_def_property(srna, "proportional_editing", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "proportional_edit", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "proportional");
RNA_def_property_enum_items(prop, proportional_editing_items);
RNA_def_property_ui_text(prop, "Proportional Editing", "Proportional editing mode");
RNA_def_property_update(prop, NC_SCENE|ND_TOOLSETTINGS, NULL); /* header redraw */
- prop= RNA_def_property(srna, "proportional_editing_objects", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_proportional_edit_objects", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "proportional_objects", 0);
RNA_def_property_ui_text(prop, "Proportional Editing Objects", "Proportional editing object mode");
RNA_def_property_ui_icon(prop, ICON_PROP_OFF, 1);
RNA_def_property_update(prop, NC_SCENE|ND_TOOLSETTINGS, NULL); /* header redraw */
- prop= RNA_def_property(srna, "proportional_editing_falloff", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "proportional_edit_falloff", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "prop_mode");
RNA_def_property_enum_items(prop, proportional_falloff_items);
RNA_def_property_ui_text(prop, "Proportional Editing Falloff", "Falloff type for proportional editing mode");
@@ -1067,17 +1070,17 @@ static void rna_def_tool_settings(BlenderRNA *brna)
RNA_def_property_ui_range(prop, 0.01, 10.0, 10.0, 2);
RNA_def_property_update(prop, NC_GEOM|ND_DATA, NULL);
- prop= RNA_def_property(srna, "automerge_editing", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_mesh_automerge", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "automerge", 0);
RNA_def_property_ui_text(prop, "AutoMerge Editing", "Automatically merge vertices moved to the same location");
- prop= RNA_def_property(srna, "snap", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_snap", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "snap_flag", SCE_SNAP);
RNA_def_property_ui_text(prop, "Snap", "Snap during transform");
RNA_def_property_ui_icon(prop, ICON_SNAP_OFF, 1);
RNA_def_property_update(prop, NC_SCENE|ND_TOOLSETTINGS, NULL); /* header redraw */
- prop= RNA_def_property(srna, "snap_align_rotation", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_snap_align_rotation", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "snap_flag", SCE_SNAP_ROTATE);
RNA_def_property_ui_text(prop, "Snap Align Rotation", "Align rotation with the snapping target");
RNA_def_property_ui_icon(prop, ICON_SNAP_NORMAL, 0);
@@ -1095,53 +1098,53 @@ static void rna_def_tool_settings(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Snap Target", "Which part to snap onto the target");
RNA_def_property_update(prop, NC_SCENE|ND_TOOLSETTINGS, NULL); /* header redraw */
- prop= RNA_def_property(srna, "snap_peel_object", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_snap_peel_object", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "snap_flag", SCE_SNAP_PEEL_OBJECT);
RNA_def_property_ui_text(prop, "Snap Peel Object", "Consider objects as whole when finding volume center");
RNA_def_property_ui_icon(prop, ICON_SNAP_PEEL_OBJECT, 0);
RNA_def_property_update(prop, NC_SCENE|ND_TOOLSETTINGS, NULL); /* header redraw */
- prop= RNA_def_property(srna, "snap_project", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_snap_project", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "snap_flag", SCE_SNAP_PROJECT);
RNA_def_property_ui_text(prop, "Project Individual Elements", "Project vertices on the surface of other objects");
RNA_def_property_ui_icon(prop, ICON_RETOPO, 0);
RNA_def_property_update(prop, NC_SCENE|ND_TOOLSETTINGS, NULL); /* header redraw */
/* Auto Keying */
- prop= RNA_def_property(srna, "use_auto_keying", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_keyframe_insert_auto", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "autokey_mode", AUTOKEY_ON);
RNA_def_property_ui_text(prop, "Auto Keying", "Automatic keyframe insertion for Objects and Bones");
RNA_def_property_ui_icon(prop, ICON_REC, 0);
- prop= RNA_def_property(srna, "autokey_mode", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "auto_keying_mode", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "autokey_mode");
RNA_def_property_enum_items(prop, auto_key_items);
RNA_def_property_ui_text(prop, "Auto-Keying Mode", "Mode of automatic keyframe insertion for Objects and Bones");
- prop= RNA_def_property(srna, "record_with_nla", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_record_with_nla", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "autokey_flag", ANIMRECORD_FLAG_WITHNLA);
RNA_def_property_ui_text(prop, "Layered", "Add a new NLA Track + Strip for every loop/pass made over the animation to allow non-destructive tweaking");
/* UV */
- prop= RNA_def_property(srna, "uv_selection_mode", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "uv_select_mode", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "uv_selectmode");
RNA_def_property_enum_items(prop, uv_select_mode_items);
RNA_def_property_ui_text(prop, "UV Selection Mode", "UV selection and display mode");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_IMAGE, NULL);
- prop= RNA_def_property(srna, "uv_sync_selection", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_uv_select_sync", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "uv_flag", UV_SYNC_SELECTION);
RNA_def_property_ui_text(prop, "UV Sync Selection", "Keep UV and edit mode mesh selection in sync");
RNA_def_property_ui_icon(prop, ICON_EDIT, 0);
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_IMAGE, NULL);
- prop= RNA_def_property(srna, "uv_local_view", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_uv_local_view", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "uv_flag", UV_SHOW_SAME_IMAGE);
RNA_def_property_ui_text(prop, "UV Local View", "Draw only faces with the currently displayed image assigned");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_IMAGE, NULL);
/* Mesh */
- prop= RNA_def_property(srna, "mesh_selection_mode", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "mesh_select_mode", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "selectmode", 1);
RNA_def_property_array(prop, 3);
RNA_def_property_boolean_funcs(prop, NULL, "rna_Scene_editmesh_select_mode_set");
@@ -1159,20 +1162,20 @@ static void rna_def_tool_settings(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Edge Tag Mode", "The edge flag to tag when selecting the shortest path");
/* etch-a-ton */
- prop= RNA_def_property(srna, "bone_sketching", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_bone_sketching", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "bone_sketching", BONE_SKETCHING);
RNA_def_property_ui_text(prop, "Use Bone Sketching", "DOC BROKEN");
// RNA_def_property_ui_icon(prop, ICON_EDIT, 0);
- prop= RNA_def_property(srna, "etch_quick", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_etch_quick", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "bone_sketching", BONE_SKETCHING_QUICK);
RNA_def_property_ui_text(prop, "Quick Sketching", "DOC BROKEN");
- prop= RNA_def_property(srna, "etch_overdraw", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_etch_overdraw", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "bone_sketching", BONE_SKETCHING_ADJUST);
RNA_def_property_ui_text(prop, "Overdraw Sketching", "DOC BROKEN");
- prop= RNA_def_property(srna, "etch_autoname", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_etch_autoname", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "skgen_retarget_options", SK_RETARGET_AUTONAME);
RNA_def_property_ui_text(prop, "Autoname", "DOC BROKEN");
@@ -1318,7 +1321,7 @@ void rna_def_render_layer_common(StructRNA *srna, int scene)
else RNA_def_property_clear_flag(prop, PROP_EDITABLE);
/* layers */
- prop= RNA_def_property(srna, "visible_layers", PROP_BOOLEAN, PROP_LAYER_MEMBER);
+ prop= RNA_def_property(srna, "layers", PROP_BOOLEAN, PROP_LAYER_MEMBER);
RNA_def_property_boolean_sdna(prop, NULL, "lay", 1);
RNA_def_property_array(prop, 20);
RNA_def_property_ui_text(prop, "Visible Layers", "Scene layers included in this render layer");
@@ -1327,7 +1330,7 @@ void rna_def_render_layer_common(StructRNA *srna, int scene)
if(scene) RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
else RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- prop= RNA_def_property(srna, "zmask_layers", PROP_BOOLEAN, PROP_LAYER);
+ prop= RNA_def_property(srna, "layers_zmask", PROP_BOOLEAN, PROP_LAYER);
RNA_def_property_boolean_sdna(prop, NULL, "lay_zmask", 1);
RNA_def_property_array(prop, 20);
RNA_def_property_ui_text(prop, "Zmask Layers", "Zmask scene layers");
@@ -1335,219 +1338,219 @@ void rna_def_render_layer_common(StructRNA *srna, int scene)
else RNA_def_property_clear_flag(prop, PROP_EDITABLE);
/* layer options */
- prop= RNA_def_property(srna, "enabled", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "layflag", SCE_LAY_DISABLE);
RNA_def_property_ui_text(prop, "Enabled", "Disable or enable the render layer");
if(scene) RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
else RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- prop= RNA_def_property(srna, "zmask", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_zmask", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "layflag", SCE_LAY_ZMASK);
RNA_def_property_ui_text(prop, "Zmask", "Only render what's in front of the solid z values");
if(scene) RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
else RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- prop= RNA_def_property(srna, "zmask_negate", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "invert_zmask", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "layflag", SCE_LAY_NEG_ZMASK);
RNA_def_property_ui_text(prop, "Zmask Negate", "For Zmask, only render what is behind solid z values instead of in front");
if(scene) RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
else RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- prop= RNA_def_property(srna, "all_z", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_all_z", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "layflag", SCE_LAY_ALL_Z);
RNA_def_property_ui_text(prop, "All Z", "Fill in Z values for solid faces in invisible layers, for masking");
if(scene) RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
else RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- prop= RNA_def_property(srna, "solid", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_solid", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "layflag", SCE_LAY_SOLID);
RNA_def_property_ui_text(prop, "Solid", "Render Solid faces in this Layer");
if(scene) RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
else RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- prop= RNA_def_property(srna, "halo", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_halo", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "layflag", SCE_LAY_HALO);
RNA_def_property_ui_text(prop, "Halo", "Render Halos in this Layer (on top of Solid)");
if(scene) RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
else RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- prop= RNA_def_property(srna, "ztransp", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_ztransp", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "layflag", SCE_LAY_ZTRA);
RNA_def_property_ui_text(prop, "ZTransp", "Render Z-Transparent faces in this Layer (On top of Solid and Halos)");
if(scene) RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
else RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- prop= RNA_def_property(srna, "sky", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_sky", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "layflag", SCE_LAY_SKY);
RNA_def_property_ui_text(prop, "Sky", "Render Sky in this Layer");
if(scene) RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
else RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- prop= RNA_def_property(srna, "edge", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_edge_enhance", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "layflag", SCE_LAY_EDGE);
RNA_def_property_ui_text(prop, "Edge", "Render Edge-enhance in this Layer (only works for Solid faces)");
if(scene) RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
else RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- prop= RNA_def_property(srna, "strand", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_strand", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "layflag", SCE_LAY_STRAND);
RNA_def_property_ui_text(prop, "Strand", "Render Strands in this Layer");
if(scene) RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
else RNA_def_property_clear_flag(prop, PROP_EDITABLE);
/* passes */
- prop= RNA_def_property(srna, "pass_combined", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_pass_combined", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "passflag", SCE_PASS_COMBINED);
RNA_def_property_ui_text(prop, "Combined", "Deliver full combined RGBA buffer");
if(scene) RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, "rna_SceneRenderLayer_pass_update");
else RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- prop= RNA_def_property(srna, "pass_z", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_pass_z", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "passflag", SCE_PASS_Z);
RNA_def_property_ui_text(prop, "Z", "Deliver Z values pass");
if(scene) RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, "rna_SceneRenderLayer_pass_update");
else RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- prop= RNA_def_property(srna, "pass_vector", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_pass_vector", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "passflag", SCE_PASS_VECTOR);
RNA_def_property_ui_text(prop, "Vector", "Deliver speed vector pass");
if(scene) RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, "rna_SceneRenderLayer_pass_update");
else RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- prop= RNA_def_property(srna, "pass_normal", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_pass_normal", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "passflag", SCE_PASS_NORMAL);
RNA_def_property_ui_text(prop, "Normal", "Deliver normal pass");
if(scene) RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, "rna_SceneRenderLayer_pass_update");
else RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- prop= RNA_def_property(srna, "pass_uv", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_pass_uv", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "passflag", SCE_PASS_UV);
RNA_def_property_ui_text(prop, "UV", "Deliver texture UV pass");
if(scene) RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, "rna_SceneRenderLayer_pass_update");
else RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- prop= RNA_def_property(srna, "pass_mist", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_pass_mist", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "passflag", SCE_PASS_MIST);
RNA_def_property_ui_text(prop, "Mist", "Deliver mist factor pass (0.0-1.0)");
if(scene) RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, "rna_SceneRenderLayer_pass_update");
else RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- prop= RNA_def_property(srna, "pass_object_index", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_pass_object_index", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "passflag", SCE_PASS_INDEXOB);
RNA_def_property_ui_text(prop, "Object Index", "Deliver object index pass");
if(scene) RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, "rna_SceneRenderLayer_pass_update");
else RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- prop= RNA_def_property(srna, "pass_color", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_pass_color", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "passflag", SCE_PASS_RGBA);
RNA_def_property_ui_text(prop, "Color", "Deliver shade-less color pass");
if(scene) RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, "rna_SceneRenderLayer_pass_update");
else RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- prop= RNA_def_property(srna, "pass_diffuse", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_pass_diffuse", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "passflag", SCE_PASS_DIFFUSE);
RNA_def_property_ui_text(prop, "Diffuse", "Deliver diffuse pass");
if(scene) RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, "rna_SceneRenderLayer_pass_update");
else RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- prop= RNA_def_property(srna, "pass_specular", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_pass_specular", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "passflag", SCE_PASS_SPEC);
RNA_def_property_ui_text(prop, "Specular", "Deliver specular pass");
if(scene) RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, "rna_SceneRenderLayer_pass_update");
else RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- prop= RNA_def_property(srna, "pass_shadow", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_pass_shadow", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "passflag", SCE_PASS_SHADOW);
RNA_def_property_ui_text(prop, "Shadow", "Deliver shadow pass");
if(scene) RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, "rna_SceneRenderLayer_pass_update");
else RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- prop= RNA_def_property(srna, "pass_ao", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_pass_ambient_occlusion", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "passflag", SCE_PASS_AO);
RNA_def_property_ui_text(prop, "AO", "Deliver AO pass");
if(scene) RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, "rna_SceneRenderLayer_pass_update");
else RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- prop= RNA_def_property(srna, "pass_reflection", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_pass_reflection", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "passflag", SCE_PASS_REFLECT);
RNA_def_property_ui_text(prop, "Reflection", "Deliver raytraced reflection pass");
if(scene) RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, "rna_SceneRenderLayer_pass_update");
else RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- prop= RNA_def_property(srna, "pass_refraction", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_pass_refraction", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "passflag", SCE_PASS_REFRACT);
RNA_def_property_ui_text(prop, "Refraction", "Deliver raytraced refraction pass");
if(scene) RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, "rna_SceneRenderLayer_pass_update");
else RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- prop= RNA_def_property(srna, "pass_emit", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_pass_emit", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "passflag", SCE_PASS_EMIT);
RNA_def_property_ui_text(prop, "Emit", "Deliver emission pass");
if(scene) RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, "rna_SceneRenderLayer_pass_update");
else RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- prop= RNA_def_property(srna, "pass_environment", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_pass_environment", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "passflag", SCE_PASS_ENVIRONMENT);
RNA_def_property_ui_text(prop, "Environment", "Deliver environment lighting pass");
if(scene) RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, "rna_SceneRenderLayer_pass_update");
else RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- prop= RNA_def_property(srna, "pass_indirect", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_pass_indirect", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "passflag", SCE_PASS_INDIRECT);
RNA_def_property_ui_text(prop, "Indirect", "Deliver indirect lighting pass");
if(scene) RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, "rna_SceneRenderLayer_pass_update");
else RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- prop= RNA_def_property(srna, "pass_specular_exclude", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "exclude_specular", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "pass_xor", SCE_PASS_SPEC);
RNA_def_property_ui_text(prop, "Specular Exclude", "Exclude specular pass from combined");
RNA_def_property_ui_icon(prop, ICON_RESTRICT_RENDER_OFF, 1);
if(scene) RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, "rna_SceneRenderLayer_pass_update");
else RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- prop= RNA_def_property(srna, "pass_shadow_exclude", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "exclude_shadow", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "pass_xor", SCE_PASS_SHADOW);
RNA_def_property_ui_text(prop, "Shadow Exclude", "Exclude shadow pass from combined");
RNA_def_property_ui_icon(prop, ICON_RESTRICT_RENDER_OFF, 1);
if(scene) RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, "rna_SceneRenderLayer_pass_update");
else RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- prop= RNA_def_property(srna, "pass_ao_exclude", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "exclude_ambient_occlusion", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "pass_xor", SCE_PASS_AO);
RNA_def_property_ui_text(prop, "AO Exclude", "Exclude AO pass from combined");
RNA_def_property_ui_icon(prop, ICON_RESTRICT_RENDER_OFF, 1);
if(scene) RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, "rna_SceneRenderLayer_pass_update");
else RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- prop= RNA_def_property(srna, "pass_reflection_exclude", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "exclude_reflection", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "pass_xor", SCE_PASS_REFLECT);
RNA_def_property_ui_text(prop, "Reflection Exclude", "Exclude raytraced reflection pass from combined");
RNA_def_property_ui_icon(prop, ICON_RESTRICT_RENDER_OFF, 1);
if(scene) RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, "rna_SceneRenderLayer_pass_update");
else RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- prop= RNA_def_property(srna, "pass_refraction_exclude", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "exclude_refraction", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "pass_xor", SCE_PASS_REFRACT);
RNA_def_property_ui_text(prop, "Refraction Exclude", "Exclude raytraced refraction pass from combined");
RNA_def_property_ui_icon(prop, ICON_RESTRICT_RENDER_OFF, 1);
if(scene) RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, "rna_SceneRenderLayer_pass_update");
else RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- prop= RNA_def_property(srna, "pass_emit_exclude", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "exclude_emit", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "pass_xor", SCE_PASS_EMIT);
RNA_def_property_ui_text(prop, "Emit Exclude", "Exclude emission pass from combined");
RNA_def_property_ui_icon(prop, ICON_RESTRICT_RENDER_OFF, 1);
if(scene) RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, "rna_SceneRenderLayer_pass_update");
else RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- prop= RNA_def_property(srna, "pass_environment_exclude", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "exclude_environment", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "pass_xor", SCE_PASS_ENVIRONMENT);
RNA_def_property_ui_text(prop, "Environment Exclude", "Exclude environment pass from combined");
RNA_def_property_ui_icon(prop, ICON_RESTRICT_RENDER_OFF, 1);
if(scene) RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, "rna_SceneRenderLayer_pass_update");
else RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- prop= RNA_def_property(srna, "pass_indirect_exclude", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "exclude_indirect", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "pass_xor", SCE_PASS_INDIRECT);
RNA_def_property_ui_text(prop, "Indirect Exclude", "Exclude indirect pass from combined");
RNA_def_property_ui_icon(prop, ICON_RESTRICT_RENDER_OFF, 1);
@@ -1634,19 +1637,19 @@ static void rna_def_scene_game_data(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Freq", "Displays clock frequency of fullscreen display");
RNA_def_property_update(prop, NC_SCENE, NULL);
- prop= RNA_def_property(srna, "fullscreen", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_fullscreen", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "fullscreen", 1.0);
RNA_def_property_ui_text(prop, "Fullscreen", "Starts player in a new fullscreen display");
RNA_def_property_update(prop, NC_SCENE, NULL);
/* Framing */
- prop= RNA_def_property(srna, "framing_type", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "frame_type", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "framing.type");
RNA_def_property_enum_items(prop, framing_types_items);
RNA_def_property_ui_text(prop, "Framing Types", "Select the type of Framing you want");
RNA_def_property_update(prop, NC_SCENE, NULL);
- prop= RNA_def_property(srna, "framing_color", PROP_FLOAT, PROP_COLOR);
+ prop= RNA_def_property(srna, "frame_color", PROP_FLOAT, PROP_COLOR);
RNA_def_property_float_sdna(prop, NULL, "framing.col");
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Framing Color", "Set colour of the bars");
@@ -1665,7 +1668,7 @@ static void rna_def_scene_game_data(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Stereo Mode", "Stereographic techniques");
RNA_def_property_update(prop, NC_SCENE, NULL);
- prop= RNA_def_property(srna, "eye_separation", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "stereo_eye_separation", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "eyeseparation");
RNA_def_property_range(prop, 0.01, 5.0);
RNA_def_property_ui_text(prop, "Eye Separation", "Set the distance between the eyes - the camera focal length/30 should be fine");
@@ -1762,7 +1765,7 @@ static void rna_def_scene_game_data(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "DBVT culling", "Use optimized Bullet DBVT tree for view frustum and occlusion culling");
// not used // deprecated !!!!!!!!!!!!!
- prop= RNA_def_property(srna, "activity_culling", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_activity_culling", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", (1 << 3)); //XXX mode hardcoded
RNA_def_property_ui_text(prop, "Activity Culling", "Activity culling is enabled");
@@ -1801,7 +1804,7 @@ static void rna_def_scene_game_data(BlenderRNA *brna)
RNA_def_property_boolean_sdna(prop, NULL, "flag", GAME_ENABLE_ANIMATION_RECORD);
RNA_def_property_ui_text(prop, "Record Animation", "Record animation to fcurves");
- prop= RNA_def_property(srna, "auto_start", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_auto_start", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_funcs(prop, "rna_GameSettings_auto_start_get", "rna_GameSettings_auto_start_set");
RNA_def_property_ui_text(prop, "Auto Start", "Automatically start game at load time");
@@ -1812,32 +1815,32 @@ static void rna_def_scene_game_data(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Material Mode", "Material mode to use for rendering");
RNA_def_property_update(prop, NC_SCENE|NA_EDITED, NULL);
- prop= RNA_def_property(srna, "glsl_lights", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_glsl_lights", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", GAME_GLSL_NO_LIGHTS);
RNA_def_property_ui_text(prop, "GLSL Lights", "Use lights for GLSL rendering");
RNA_def_property_update(prop, NC_SCENE|NA_EDITED, "rna_Scene_glsl_update");
- prop= RNA_def_property(srna, "glsl_shaders", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_glsl_shaders", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", GAME_GLSL_NO_SHADERS);
RNA_def_property_ui_text(prop, "GLSL Shaders", "Use shaders for GLSL rendering");
RNA_def_property_update(prop, NC_SCENE|NA_EDITED, "rna_Scene_glsl_update");
- prop= RNA_def_property(srna, "glsl_shadows", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_glsl_shadows", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", GAME_GLSL_NO_SHADOWS);
RNA_def_property_ui_text(prop, "GLSL Shadows", "Use shadows for GLSL rendering");
RNA_def_property_update(prop, NC_SCENE|NA_EDITED, "rna_Scene_glsl_update");
- prop= RNA_def_property(srna, "glsl_ramps", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_glsl_ramps", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", GAME_GLSL_NO_RAMPS);
RNA_def_property_ui_text(prop, "GLSL Ramps", "Use ramps for GLSL rendering");
RNA_def_property_update(prop, NC_SCENE|NA_EDITED, "rna_Scene_glsl_update");
- prop= RNA_def_property(srna, "glsl_nodes", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_glsl_nodes", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", GAME_GLSL_NO_NODES);
RNA_def_property_ui_text(prop, "GLSL Nodes", "Use nodes for GLSL rendering");
RNA_def_property_update(prop, NC_SCENE|NA_EDITED, "rna_Scene_glsl_update");
- prop= RNA_def_property(srna, "glsl_extra_textures", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_glsl_extra_textures", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", GAME_GLSL_NO_EXTRA_TEX);
RNA_def_property_ui_text(prop, "GLSL Extra Textures", "Use extra textures like normal or specular maps for GLSL rendering");
RNA_def_property_update(prop, NC_SCENE|NA_EDITED, "rna_Scene_glsl_update");
@@ -2119,14 +2122,14 @@ static void rna_def_scene_render_data(BlenderRNA *brna)
/* Tiff */
- prop= RNA_def_property(srna, "tiff_bit", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_tiff_16bit", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "subimtype", R_TIFF_16BIT);
RNA_def_property_ui_text(prop, "16 Bit", "Save TIFF with 16 bits per channel");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
/* Cineon and DPX */
- prop= RNA_def_property(srna, "cineon_log", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_cineon_log", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "subimtype", R_CINEON_LOG);
RNA_def_property_ui_text(prop, "Log", "Convert to logarithmic color space");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
@@ -2158,7 +2161,7 @@ static void rna_def_scene_render_data(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Codec", "Codec settings for OpenEXR");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
- prop= RNA_def_property(srna, "exr_half", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_exr_half", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "subimtype", R_OPENEXR_HALF);
RNA_def_property_ui_text(prop, "Half", "Use 16 bit floats instead of 32 bit floats per channel");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
@@ -2364,7 +2367,7 @@ static void rna_def_scene_render_data(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Dither Intensity", "Amount of dithering noise added to the rendered image to break up banding");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
- prop= RNA_def_property(srna, "pixel_filter", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "pixel_filter_type", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "filtertype");
RNA_def_property_enum_items(prop, pixel_filter_items);
RNA_def_property_ui_text(prop, "Pixel Filter", "Reconstruction filter used for combining anti-aliasing samples");
@@ -2388,7 +2391,7 @@ static void rna_def_scene_render_data(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Octree Resolution", "Resolution of raytrace accelerator. Use higher resolutions for larger scenes");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
- prop= RNA_def_property(srna, "raytrace_structure", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "raytrace_method", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "raytrace_structure");
RNA_def_property_enum_items(prop, raytrace_structure_items);
RNA_def_property_ui_text(prop, "Raytrace Acceleration Structure", "Type of raytrace accelerator structure");
@@ -2404,7 +2407,7 @@ static void rna_def_scene_render_data(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Use Local Coords", "Vertex coordinates are stored localy on each primitive. Increases memory usage, but may have impact on speed");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
- prop= RNA_def_property(srna, "render_antialiasing", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_antialiasing", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", R_OSA);
RNA_def_property_ui_text(prop, "Anti-Aliasing", "Render and combine multiple samples per pixel to prevent jagged edges");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
@@ -2415,7 +2418,7 @@ static void rna_def_scene_render_data(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Anti-Aliasing Samples", "Amount of anti-aliasing samples per pixel");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
- prop= RNA_def_property(srna, "fields", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_fields", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", R_FIELDS);
RNA_def_property_ui_text(prop, "Fields", "Render image to two fields per frame, for interlaced TV output");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
@@ -2426,7 +2429,7 @@ static void rna_def_scene_render_data(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Field Order", "Order of video fields. Select which lines get rendered first, to create smooth motion for TV output");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
- prop= RNA_def_property(srna, "fields_still", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_fields_still", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", R_FIELDSTILL);
RNA_def_property_ui_text(prop, "Fields Still", "Disable the time difference between fields");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
@@ -2452,7 +2455,7 @@ static void rna_def_scene_render_data(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Subsurface Scattering", "Calculate sub-surface scattering in materials rendering");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
- prop= RNA_def_property(srna, "use_raytracing", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_raytrace", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", R_RAYTRACE);
RNA_def_property_ui_text(prop, "Raytracing", "Pre-calculate the raytrace accelerator and render raytracing effects");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
@@ -2462,7 +2465,7 @@ static void rna_def_scene_render_data(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Textures", "Use textures to affect material properties");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
- prop= RNA_def_property(srna, "edge", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_edge_enhance", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", R_EDGE);
RNA_def_property_ui_text(prop, "Edge", "Create a toon outline around the edges of geometry");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
@@ -2494,7 +2497,7 @@ static void rna_def_scene_render_data(BlenderRNA *brna)
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
/* motion blur */
- prop= RNA_def_property(srna, "motion_blur", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_motion_blur", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", R_MBLUR);
RNA_def_property_ui_text(prop, "Motion Blur", "Use multi-sampled 3D scene motion blur");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
@@ -2542,7 +2545,7 @@ static void rna_def_scene_render_data(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Border Maximum Y", "Sets maximum Y value for the render border");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
- prop= RNA_def_property(srna, "crop_to_border", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_crop_to_border", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", R_CROP);
RNA_def_property_ui_text(prop, "Crop to Border", "Crop the rendered frame to the defined border size");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
@@ -2567,7 +2570,7 @@ static void rna_def_scene_render_data(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Sequencer", "Process the render (and composited) result through the video sequence editor pipeline, if sequencer strips exist");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
- prop= RNA_def_property(srna, "color_management", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_color_management", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "color_mgt_flag", R_COLOR_MANAGEMENT);
RNA_def_property_ui_text(prop, "Color Management", "Use linear workflow - gamma corrected imaging pipeline");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, "rna_RenderSettings_color_management_update");
@@ -2595,29 +2598,29 @@ static void rna_def_scene_render_data(BlenderRNA *brna)
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Movie Format", "When true the format is a movie");
- prop= RNA_def_property(srna, "free_image_textures", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_free_image_textures", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "scemode", R_FREE_IMAGE);
RNA_def_property_ui_text(prop, "Free Image Textures", "Free all image texture from memory after render, to save memory before compositing");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
- prop= RNA_def_property(srna, "free_unused_nodes", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_free_unused_nodes", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "scemode", R_COMP_FREE);
RNA_def_property_ui_text(prop, "Free Unused Nodes", "Free Nodes that are not used while compositing, to save memory");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
- prop= RNA_def_property(srna, "save_buffers", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_save_buffers", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "scemode", R_EXR_TILE_FILE);
RNA_def_property_boolean_funcs(prop, "rna_RenderSettings_save_buffers_get", NULL);
RNA_def_property_ui_text(prop, "Save Buffers","Save tiles for all RenderLayers and SceneNodes to files in the temp directory (saves memory, required for Full Sample)");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
- prop= RNA_def_property(srna, "full_sample", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_full_sample", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "scemode", R_FULL_SAMPLE);
RNA_def_property_boolean_funcs(prop, "rna_RenderSettings_full_sample_get", NULL);
RNA_def_property_ui_text(prop, "Full Sample","Save for every anti-aliasing sample the entire RenderLayer results. This solves anti-aliasing issues with compositing");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
- prop= RNA_def_property(srna, "backbuf", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_backbuf", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "bufflag", R_BACKBUF);
RNA_def_property_ui_text(prop, "Back Buffer", "Render backbuffer image");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
@@ -2628,7 +2631,7 @@ static void rna_def_scene_render_data(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Display", "Select where rendered images will be displayed");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
- prop= RNA_def_property(srna, "output_path", PROP_STRING, PROP_DIRPATH);
+ prop= RNA_def_property(srna, "filepath", PROP_STRING, PROP_DIRPATH);
RNA_def_property_string_sdna(prop, NULL, "pic");
RNA_def_property_ui_text(prop, "Output Path", "Directory/name to save animations, # characters defines the position and length of frame numbers");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
@@ -2654,19 +2657,19 @@ static void rna_def_scene_render_data(BlenderRNA *brna)
RNA_def_property_enum_items(prop, fixed_oversample_items);
RNA_def_property_ui_text(prop, "Anti-Aliasing Level", "");
- prop= RNA_def_property(srna, "bake_active", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_bake_selected_to_active", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "bake_flag", R_BAKE_TO_ACTIVE);
RNA_def_property_ui_text(prop, "Selected to Active", "Bake shading on the surface of selected objects to the active object");
- prop= RNA_def_property(srna, "bake_normalized", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_bake_normalize", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "bake_flag", R_BAKE_NORMALIZE);
RNA_def_property_ui_text(prop, "Normalized", "With displacement normalize to the distance, with ambient occlusion normalize without using material settings");
- prop= RNA_def_property(srna, "bake_clear", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_bake_clear", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "bake_flag", R_BAKE_CLEAR);
RNA_def_property_ui_text(prop, "Clear", "Clear Images before baking");
- prop= RNA_def_property(srna, "bake_enable_aa", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_bake_antialiasing", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "bake_flag", R_BAKE_OSA);
RNA_def_property_ui_text(prop, "Anti-Aliasing", "Enables Anti-aliasing");
@@ -2687,52 +2690,52 @@ static void rna_def_scene_render_data(BlenderRNA *brna)
/* stamp */
- prop= RNA_def_property(srna, "stamp_time", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_stamp_time", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "stamp", R_STAMP_TIME);
RNA_def_property_ui_text(prop, "Stamp Time", "Include the render frame as HH:MM:SS.FF in image metadata");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
- prop= RNA_def_property(srna, "stamp_date", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_stamp_date", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "stamp", R_STAMP_DATE);
RNA_def_property_ui_text(prop, "Stamp Date", "Include the current date in image metadata");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
- prop= RNA_def_property(srna, "stamp_frame", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_stamp_frame", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "stamp", R_STAMP_FRAME);
RNA_def_property_ui_text(prop, "Stamp Frame", "Include the frame number in image metadata");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
- prop= RNA_def_property(srna, "stamp_camera", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_stamp_camera", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "stamp", R_STAMP_CAMERA);
RNA_def_property_ui_text(prop, "Stamp Camera", "Include the name of the active camera in image metadata");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
- prop= RNA_def_property(srna, "stamp_scene", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_stamp_scene", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "stamp", R_STAMP_SCENE);
RNA_def_property_ui_text(prop, "Stamp Scene", "Include the name of the active scene in image metadata");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
- prop= RNA_def_property(srna, "stamp_note", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_stamp_note", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "stamp", R_STAMP_NOTE);
RNA_def_property_ui_text(prop, "Stamp Note", "Include a custom note in image metadata");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
- prop= RNA_def_property(srna, "stamp_marker", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_stamp_marker", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "stamp", R_STAMP_MARKER);
RNA_def_property_ui_text(prop, "Stamp Marker", "Include the name of the last marker in image metadata");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
- prop= RNA_def_property(srna, "stamp_filename", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_stamp_filename", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "stamp", R_STAMP_FILENAME);
RNA_def_property_ui_text(prop, "Stamp Filename", "Include the filename of the .blend file in image metadata");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
- prop= RNA_def_property(srna, "stamp_sequencer_strip", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_stamp_sequencer_strip", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "stamp", R_STAMP_SEQSTRIP);
RNA_def_property_ui_text(prop, "Stamp Sequence Strip", "Include the name of the foreground sequence strip in image metadata");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
- prop= RNA_def_property(srna, "stamp_render_time", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_stamp_render_time", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "stamp", R_STAMP_RENDERTIME);
RNA_def_property_ui_text(prop, "Stamp Render Time", "Include the render time in the stamp image");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
@@ -2742,7 +2745,7 @@ static void rna_def_scene_render_data(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Stamp Note Text", "Custom text to appear in the stamp note");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
- prop= RNA_def_property(srna, "render_stamp", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_stamp", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "stamp", R_STAMP_DRAW);
RNA_def_property_ui_text(prop, "Render Stamp", "Render the stamp info text in the rendered image");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
@@ -2780,12 +2783,12 @@ static void rna_def_scene_render_data(BlenderRNA *brna)
prop= RNA_def_property(srna, "sequencer_gl_preview", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "seq_prev_type");
- RNA_def_property_enum_items(prop, viewport_shading_items);
+ RNA_def_property_enum_items(prop, viewport_shade_items);
RNA_def_property_ui_text(prop, "Sequencer Preview Shading", "Method to draw in the sequencer view");
prop= RNA_def_property(srna, "sequencer_gl_render", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "seq_rend_type");
- RNA_def_property_enum_items(prop, viewport_shading_items);
+ RNA_def_property_enum_items(prop, viewport_shade_items);
RNA_def_property_ui_text(prop, "Sequencer Preview Shading", "Method to draw in the sequencer view");
/* layers */
@@ -2795,7 +2798,7 @@ static void rna_def_scene_render_data(BlenderRNA *brna)
RNA_def_property_struct_type(prop, "SceneRenderLayer");
RNA_def_property_ui_text(prop, "Render Layers", "");
- prop= RNA_def_property(srna, "single_layer", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_single_layer", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "scemode", R_SINGLE_LAYER);
RNA_def_property_ui_text(prop, "Single Layer", "Only render the active layer");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
@@ -2813,7 +2816,7 @@ static void rna_def_scene_render_data(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Engine", "Engine to use for rendering");
RNA_def_property_update(prop, NC_WINDOW, NULL);
- prop= RNA_def_property(srna, "multiple_engines", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "has_multiple_engines", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_funcs(prop, "rna_RenderSettings_multiple_engines_get", NULL);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Multiple Engines", "More than one rendering engine is available");
@@ -2851,7 +2854,7 @@ static void rna_def_scene_render_data(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Simplify AO and SSS", "Global approximate AA and SSS quality factor");
RNA_def_property_update(prop, 0, "rna_Scene_simplify_update");
- prop= RNA_def_property(srna, "simplify_triangulate", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_simplify_triangulate", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "simplify_flag", R_SIMPLE_NO_TRIANGULATE);
RNA_def_property_ui_text(prop, "Skip Quad to Triangles", "Disables non-planer quads being triangulated");
@@ -2874,7 +2877,7 @@ static void rna_def_scene_objects(BlenderRNA *brna, PropertyRNA *cprop)
RNA_def_struct_ui_text(srna, "Scene Objects", "Collection of scene objects");
func= RNA_def_function(srna, "link", "rna_Scene_object_link");
- RNA_def_function_ui_description(func, "Link object to scene.");
+ RNA_def_function_ui_description(func, "Link object to scene, run scene.update() after.");
RNA_def_function_flag(func, FUNC_USE_CONTEXT|FUNC_USE_REPORTS);
parm= RNA_def_pointer(func, "object", "Object", "", "Object to add to scene.");
RNA_def_property_flag(parm, PROP_REQUIRED);
@@ -2984,7 +2987,7 @@ void RNA_def_scene(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Camera", "Active camera used for rendering the scene");
RNA_def_property_update(prop, NC_SCENE|NA_EDITED, "rna_Scene_view3d_update");
- prop= RNA_def_property(srna, "set", PROP_POINTER, PROP_NONE);
+ prop= RNA_def_property(srna, "background_set", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "set");
RNA_def_property_struct_type(prop, "Scene");
RNA_def_property_flag(prop, PROP_EDITABLE|PROP_ID_SELF_CHECK);
@@ -3004,7 +3007,7 @@ void RNA_def_scene(BlenderRNA *brna)
RNA_def_property_update(prop, NC_WINDOW, NULL);
/* Bases/Objects */
- prop= RNA_def_property(srna, "bases", PROP_COLLECTION, PROP_NONE);
+ prop= RNA_def_property(srna, "object_bases", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_sdna(prop, NULL, "base", NULL);
RNA_def_property_struct_type(prop, "ObjectBase");
RNA_def_property_ui_text(prop, "Bases", "");
@@ -3068,14 +3071,14 @@ void RNA_def_scene(BlenderRNA *brna)
RNA_def_property_update(prop, NC_SCENE|ND_FRAME, NULL);
RNA_def_property_ui_icon(prop, ICON_PREVIEW_RANGE, 0);
- prop= RNA_def_property(srna, "preview_range_frame_start", PROP_INT, PROP_TIME);
+ prop= RNA_def_property(srna, "frame_preview_start", PROP_INT, PROP_TIME);
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
RNA_def_property_int_sdna(prop, NULL, "r.psfra");
RNA_def_property_int_funcs(prop, NULL, "rna_Scene_preview_range_start_frame_set", NULL);
RNA_def_property_ui_text(prop, "Preview Range Start Frame", "Alternative start frame for UI playback");
RNA_def_property_update(prop, NC_SCENE|ND_FRAME, NULL);
- prop= RNA_def_property(srna, "preview_range_frame_end", PROP_INT, PROP_TIME);
+ prop= RNA_def_property(srna, "frame_preview_end", PROP_INT, PROP_TIME);
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
RNA_def_property_int_sdna(prop, NULL, "r.pefra");
RNA_def_property_int_funcs(prop, NULL, "rna_Scene_preview_range_end_frame_set", NULL);
@@ -3083,7 +3086,7 @@ void RNA_def_scene(BlenderRNA *brna)
RNA_def_property_update(prop, NC_SCENE|ND_FRAME, NULL);
/* Stamp */
- prop= RNA_def_property(srna, "stamp_note", PROP_STRING, PROP_NONE);
+ prop= RNA_def_property(srna, "use_stamp_note", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "r.stamp_udata");
RNA_def_property_ui_text(prop, "Stamp Note", "User define note for the render stamping");
RNA_def_property_update(prop, NC_SCENE|ND_RENDER_OPTIONS, NULL);
@@ -3092,14 +3095,14 @@ void RNA_def_scene(BlenderRNA *brna)
rna_def_animdata_common(srna);
/* Readonly Properties */
- prop= RNA_def_property(srna, "nla_tweakmode_on", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "is_nla_tweakmode", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SCE_NLA_EDIT_ON);
RNA_def_property_clear_flag(prop, PROP_EDITABLE); /* DO NOT MAKE THIS EDITABLE, OR NLA EDITOR BREAKS */
RNA_def_property_ui_text(prop, "NLA TweakMode", "Indicates whether there is any action referenced by NLA being edited. Strictly read-only");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_GRAPH, NULL);
/* Frame dropping flag for playback and sync enum */
- prop= RNA_def_property(srna, "frame_drop", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_frame_drop", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SCE_FRAME_DROP);
RNA_def_property_ui_text(prop, "Frame Dropping", "Play back dropping frames if frame display is too slow");
RNA_def_property_update(prop, NC_SCENE, NULL);
@@ -3134,7 +3137,7 @@ void RNA_def_scene(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Absolute Keying Sets", "Absolute Keying Sets for this Scene");
RNA_def_property_update(prop, NC_SCENE|ND_KEYINGSET, NULL);
- prop= RNA_def_property(srna, "all_keying_sets", PROP_COLLECTION, PROP_NONE);
+ prop= RNA_def_property(srna, "keying_sets_all", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_funcs(prop, "rna_Scene_all_keyingsets_begin", "rna_Scene_all_keyingsets_next", "rna_iterator_listbase_end", "rna_iterator_listbase_get", 0, 0, 0);
RNA_def_property_struct_type(prop, "KeyingSet");
RNA_def_property_ui_text(prop, "All Keying Sets", "All Keying Sets available for use (builtins and Absolute Keying Sets for this Scene)");
@@ -3195,41 +3198,41 @@ void RNA_def_scene(BlenderRNA *brna)
rna_def_timeline_markers(brna, prop);
/* Audio Settings */
- prop= RNA_def_property(srna, "mute_audio", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "audio.flag", AUDIO_MUTE);
+ prop= RNA_def_property(srna, "use_audio", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_negative_sdna(prop, NULL, "audio.flag", AUDIO_MUTE);
RNA_def_property_ui_text(prop, "Audio Muted", "Play back of audio from Sequence Editor will be muted");
RNA_def_property_update(prop, NC_SCENE, NULL);
- prop= RNA_def_property(srna, "sync_audio", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_audio_sync", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "audio.flag", AUDIO_SYNC);
RNA_def_property_ui_text(prop, "Audio Sync", "Play back and sync with audio clock, dropping frames if frame display is too slow");
RNA_def_property_update(prop, NC_SCENE, NULL);
- prop= RNA_def_property(srna, "scrub_audio", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_audio_scrub", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "audio.flag", AUDIO_SCRUB);
RNA_def_property_ui_text(prop, "Audio Scrubbing", "Play audio from Sequence Editor while scrubbing");
RNA_def_property_update(prop, NC_SCENE, NULL);
- prop= RNA_def_property(srna, "speed_of_sound", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "audio_doppler_speed", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "audio.speed_of_sound");
RNA_def_property_range(prop, 0.01f, FLT_MAX);
RNA_def_property_ui_text(prop, "Speed of Sound", "Speed of sound for Doppler effect calculation");
RNA_def_property_update(prop, NC_SCENE, NULL);
- prop= RNA_def_property(srna, "doppler_factor", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "audio_doppler_factor", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "audio.doppler_factor");
RNA_def_property_range(prop, 0.0, FLT_MAX);
RNA_def_property_ui_text(prop, "Doppler Factor", "Pitch factor for Doppler effect calculation");
RNA_def_property_update(prop, NC_SCENE, NULL);
- prop= RNA_def_property(srna, "distance_model", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "audio_distance_model", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_bitflag_sdna(prop, NULL, "audio.distance_model");
RNA_def_property_enum_items(prop, audio_distance_model_items);
RNA_def_property_ui_text(prop, "Distance Model", "Distance model for distance attenuation calculation");
RNA_def_property_update(prop, NC_SCENE, NULL);
/* Game Settings */
- prop= RNA_def_property(srna, "game_data", PROP_POINTER, PROP_NONE);
+ prop= RNA_def_property(srna, "game_settings", PROP_POINTER, PROP_NONE);
RNA_def_property_flag(prop, PROP_NEVER_NULL);
RNA_def_property_pointer_sdna(prop, NULL, "gm");
RNA_def_property_struct_type(prop, "SceneGameData");
diff --git a/source/blender/makesrna/intern/rna_scene_api.c b/source/blender/makesrna/intern/rna_scene_api.c
index 8ec210f2046..498bd148508 100644
--- a/source/blender/makesrna/intern/rna_scene_api.c
+++ b/source/blender/makesrna/intern/rna_scene_api.c
@@ -126,8 +126,8 @@ void RNA_api_scene(StructRNA *srna)
/* flags */
RNA_def_boolean(func, "absolute", 1, "Absolute", "Keying Set defines specific paths/settings to be keyframed (i.e. is not reliant on context info)");
/* keying flags */
- RNA_def_boolean(func, "insertkey_needed", 0, "Insert Keyframes - Only Needed", "Only insert keyframes where they're needed in the relevant F-Curves.");
- RNA_def_boolean(func, "insertkey_visual", 0, "Insert Keyframes - Visual", "Insert keyframes based on 'visual transforms'.");
+ RNA_def_boolean(func, "use_insertkey_needed", 0, "Insert Keyframes - Only Needed", "Only insert keyframes where they're needed in the relevant F-Curves.");
+ RNA_def_boolean(func, "use_insertkey_visual", 0, "Insert Keyframes - Visual", "Insert keyframes based on 'visual transforms'.");
}
void RNA_api_scene_render(StructRNA *srna)
diff --git a/source/blender/makesrna/intern/rna_screen.c b/source/blender/makesrna/intern/rna_screen.c
index cb028e6da1a..da8aab32f31 100644
--- a/source/blender/makesrna/intern/rna_screen.c
+++ b/source/blender/makesrna/intern/rna_screen.c
@@ -74,7 +74,7 @@ static void rna_Screen_scene_update(bContext *C, PointerRNA *ptr)
}
}
-static int rna_Screen_animation_playing_get(PointerRNA *ptr)
+static int rna_Screen_is_animation_playing_get(PointerRNA *ptr)
{
bScreen *sc= (bScreen*)ptr->data;
return (sc->animtimer != NULL);
@@ -194,12 +194,12 @@ static void rna_def_screen(BlenderRNA *brna)
RNA_def_property_struct_type(prop, "Area");
RNA_def_property_ui_text(prop, "Areas", "Areas the screen is subdivided into");
- prop= RNA_def_property(srna, "animation_playing", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "is_animation_playing", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
- RNA_def_property_boolean_funcs(prop, "rna_Screen_animation_playing_get", NULL);
+ RNA_def_property_boolean_funcs(prop, "rna_Screen_is_animation_playing_get", NULL);
RNA_def_property_ui_text(prop, "Animation Playing", "Animation playback is active");
- prop= RNA_def_property(srna, "fullscreen", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_fullscreen", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_boolean_funcs(prop, "rna_Screen_fullscreen_get", NULL);
RNA_def_property_ui_text(prop, "Fullscreen", "An area is maximised, filling this screen");
diff --git a/source/blender/makesrna/intern/rna_sculpt_paint.c b/source/blender/makesrna/intern/rna_sculpt_paint.c
index 4f844f89b13..49ff1da2de4 100644
--- a/source/blender/makesrna/intern/rna_sculpt_paint.c
+++ b/source/blender/makesrna/intern/rna_sculpt_paint.c
@@ -49,6 +49,7 @@ static EnumPropertyItem particle_edit_hair_brush_items[] = {
{0, NULL, 0, NULL, NULL}};
#ifdef RNA_RUNTIME
+#include "MEM_guardedalloc.h"
#include "BKE_context.h"
#include "BKE_image.h"
@@ -227,17 +228,29 @@ static void rna_def_paint(BlenderRNA *brna)
RNA_def_property_boolean_sdna(prop, NULL, "flags", PAINT_SHOW_BRUSH_ON_SURFACE);
RNA_def_property_ui_text(prop, "Show Brush On Surface", "");
- prop= RNA_def_property(srna, "fast_navigate", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_low_resolution", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", PAINT_FAST_NAVIGATE);
RNA_def_property_ui_text(prop, "Fast Navigate", "For multires, show low resolution while navigating the view");
- prop= RNA_def_property(srna, "radial_symm", PROP_INT, PROP_XYZ);
+ prop= RNA_def_property(srna, "radial_symmetry", PROP_INT, PROP_XYZ);
RNA_def_property_int_sdna(prop, NULL, "radial_symm");
RNA_def_property_int_default(prop, 1);
RNA_def_property_range(prop, 1, 64);
RNA_def_property_ui_range(prop, 0, 32, 1, 1);
RNA_def_property_ui_text(prop, "Radial Symmetry Count X Axis", "Number of times to copy strokes across the surface");
+ prop= RNA_def_property(srna, "use_symmetry_x", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flags", PAINT_SYMM_X);
+ RNA_def_property_ui_text(prop, "Symmetry X", "Mirror brush across the X axis");
+
+ prop= RNA_def_property(srna, "use_symmetry_y", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flags", PAINT_SYMM_Y);
+ RNA_def_property_ui_text(prop, "Symmetry Y", "Mirror brush across the Y axis");
+
+ prop= RNA_def_property(srna, "use_symmetry_z", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flags", PAINT_SYMM_Z);
+ RNA_def_property_ui_text(prop, "Symmetry Z", "Mirror brush across the Z axis");
+
prop= RNA_def_property(srna, "lock_x", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", PAINT_LOCK_X);
RNA_def_property_ui_text(prop, "Lock X", "Disallow changes to the X axis of vertices");
@@ -254,7 +267,7 @@ static void rna_def_paint(BlenderRNA *brna)
RNA_def_property_boolean_sdna(prop, NULL, "flags", PAINT_SYMMETRY_FEATHER);
RNA_def_property_ui_text(prop, "Symmetry Feathering", "Reduce the strength of the brush where it overlaps symmetrical dabs");
- prop= RNA_def_property(srna, "use_openmp", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_threaded", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", PAINT_USE_OPENMP);
RNA_def_property_ui_text(prop, "Use OpenMP", "Take advantage of multiple CPU cores to improve sculpting performance");
}
@@ -276,7 +289,7 @@ static void rna_def_vertex_paint(BlenderRNA *brna)
RNA_def_struct_sdna(srna, "VPaint");
RNA_def_struct_ui_text(srna, "Vertex Paint", "Properties of vertex and weight paint mode");
- prop= RNA_def_property(srna, "all_faces", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_all_faces", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", VP_AREA);
RNA_def_property_ui_text(prop, "All Faces", "Paint on all faces inside brush");
@@ -284,7 +297,7 @@ static void rna_def_vertex_paint(BlenderRNA *brna)
RNA_def_property_boolean_sdna(prop, NULL, "flag", VP_NORMALS);
RNA_def_property_ui_text(prop, "Normals", "Applies the vertex normal before painting");
- prop= RNA_def_property(srna, "spray", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_spray", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", VP_SPRAY);
RNA_def_property_ui_text(prop, "Spray", "Keep applying paint effect while holding mouse");
}
@@ -316,7 +329,7 @@ static void rna_def_image_paint(BlenderRNA *brna)
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", IMAGEPAINT_PROJECT_XRAY);
RNA_def_property_ui_text(prop, "Occlude", "Only paint onto the faces directly under the brush (slower)");
- prop= RNA_def_property(srna, "use_backface_cull", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_backface_culling", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", IMAGEPAINT_PROJECT_BACKFACE);
RNA_def_property_ui_text(prop, "Cull", "Ignore faces pointing away from the view (faster)");
@@ -391,21 +404,21 @@ static void rna_def_particle_edit(BlenderRNA *brna)
RNA_def_property_enum_funcs(prop, NULL, "rna_ParticleEdit_tool_set", "rna_ParticleEdit_tool_itemf");
RNA_def_property_ui_text(prop, "Tool", "");
- prop= RNA_def_property(srna, "selection_mode", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "select_mode", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_bitflag_sdna(prop, NULL, "selectmode");
RNA_def_property_enum_items(prop, select_mode_items);
RNA_def_property_ui_text(prop, "Selection Mode", "Particle select and display mode");
RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_ParticleEdit_update");
- prop= RNA_def_property(srna, "keep_lengths", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_preserve_length", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PE_KEEP_LENGTHS);
RNA_def_property_ui_text(prop, "Keep Lengths", "Keep path lengths constant");
- prop= RNA_def_property(srna, "keep_root", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_preserve_root", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PE_LOCK_FIRST);
RNA_def_property_ui_text(prop, "Keep Root", "Keep root keys unmodified");
- prop= RNA_def_property(srna, "emitter_deflect", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_emitter_deflect", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PE_DEFLECT_EMITTER);
RNA_def_property_ui_text(prop, "Deflect Emitter", "Keep paths from intersecting the emitter");
@@ -414,25 +427,25 @@ static void rna_def_particle_edit(BlenderRNA *brna)
RNA_def_property_ui_range(prop, 0.0f, 10.0f, 10, 3);
RNA_def_property_ui_text(prop, "Emitter Distance", "Distance to keep particles away from the emitter");
- prop= RNA_def_property(srna, "fade_time", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_fade_time", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PE_FADE_TIME);
RNA_def_property_ui_text(prop, "Fade Time", "Fade paths and keys further away from current frame");
RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_ParticleEdit_update");
- prop= RNA_def_property(srna, "auto_velocity", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_auto_velocity", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PE_AUTO_VELOCITY);
RNA_def_property_ui_text(prop, "Auto Velocity", "Calculate point velocities automatically");
- prop= RNA_def_property(srna, "draw_particles", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_particles", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PE_DRAW_PART);
RNA_def_property_ui_text(prop, "Draw Particles", "Draw actual particles");
RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_ParticleEdit_redo");
- prop= RNA_def_property(srna, "add_interpolate", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_default_interpolate", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", PE_INTERPOLATE_ADDED);
RNA_def_property_ui_text(prop, "Interpolate", "Interpolate new particles from the existing ones");
- prop= RNA_def_property(srna, "add_keys", PROP_INT, PROP_NONE);
+ prop= RNA_def_property(srna, "default_key_count", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "totaddkey");
RNA_def_property_range(prop, 2, INT_MAX);
RNA_def_property_ui_range(prop, 2, 20, 10, 3);
@@ -459,12 +472,12 @@ static void rna_def_particle_edit(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Type", "");
RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, "rna_ParticleEdit_redo");
- prop= RNA_def_property(srna, "editable", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "is_editable", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_funcs(prop, "rna_ParticleEdit_editable_get", NULL);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Editable", "A valid edit mode exists");
- prop= RNA_def_property(srna, "hair", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "is_hair", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_funcs(prop, "rna_ParticleEdit_hair_get", NULL);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Hair", "Editing hair");
diff --git a/source/blender/makesrna/intern/rna_sensor.c b/source/blender/makesrna/intern/rna_sensor.c
index 7a130efa37c..d20e5aebcfb 100644
--- a/source/blender/makesrna/intern/rna_sensor.c
+++ b/source/blender/makesrna/intern/rna_sensor.c
@@ -260,13 +260,13 @@ static void rna_def_sensor(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Type", "");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "pinned", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "pin", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SENS_PIN);
RNA_def_property_ui_text(prop, "Pinned", "Display when not linked to a visible states controller");
RNA_def_property_ui_icon(prop, ICON_UNPINNED, 1);
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "expanded", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_expanded", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SENS_SHOW);
RNA_def_property_ui_text(prop, "Expanded", "Set sensor expanded in the user interface");
RNA_def_property_ui_icon(prop, ICON_TRIA_RIGHT, 1);
@@ -276,17 +276,18 @@ static void rna_def_sensor(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Invert Output", "Invert the level(output) of this sensor");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "level", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_level", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "level", 1);
RNA_def_property_ui_text(prop, "Level", "Level detector, trigger controllers of new states(only applicable upon logic state transition)");
RNA_def_property_boolean_funcs(prop, NULL, "rna_Sensor_level_set");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "pulse_true_level", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_pulse_true_level", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "pulse", SENS_PULSE_REPEAT);
RNA_def_property_ui_text(prop, "Pulse True Level", "Activate TRUE level triggering (pulse mode)");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "pulse_false_level", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_pulse_false_level", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "pulse", SENS_NEG_PULSE_MODE);
RNA_def_property_ui_text(prop, "Pulse False Level", "Activate FALSE level triggering (pulse mode)");
RNA_def_property_update(prop, NC_LOGIC, NULL);
@@ -297,7 +298,7 @@ static void rna_def_sensor(BlenderRNA *brna)
RNA_def_property_range(prop, 0, 10000);
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "tap", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_tap", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "tap", 1);
RNA_def_property_boolean_funcs(prop, NULL, "rna_Sensor_tap_set");
RNA_def_property_ui_text(prop, "Tap", "Trigger controllers only for an instant, even while the sensor remains true");
@@ -402,14 +403,14 @@ static void rna_def_keyboard_sensor(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Key", "");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "modifier_key", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "modifier_key_1", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "qual");
RNA_def_property_enum_items(prop, event_type_items);
RNA_def_property_enum_funcs(prop, NULL, "rna_Sensor_keyboard_modifier_set", NULL);
RNA_def_property_ui_text(prop, "Modifier Key", "Modifier key code");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "second_modifier_key", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "modifier_key_2", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "qual2");
RNA_def_property_enum_items(prop, event_type_items);
RNA_def_property_enum_funcs(prop, NULL, "rna_Sensor_keyboard_modifier2_set", NULL);
@@ -426,7 +427,7 @@ static void rna_def_keyboard_sensor(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Log Toggle", "Property that receive the keystrokes in case a string is logged");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "all_keys", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_all_keys", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "type", 1);
RNA_def_property_ui_text(prop, "All Keys", "Trigger this sensor on any keystroke");
RNA_def_property_update(prop, NC_LOGIC, NULL);
@@ -464,12 +465,12 @@ static void rna_def_property_sensor(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Value", "Check for this value in types in Equal or Not Equal types");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "min_value", PROP_STRING, PROP_NONE);
+ prop= RNA_def_property(srna, "value_min", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "value");
RNA_def_property_ui_text(prop, "Minimum Value", "Specify minimum value in Interval type");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "max_value", PROP_STRING, PROP_NONE);
+ prop= RNA_def_property(srna, "value_max", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "maxvalue");
RNA_def_property_ui_text(prop, "Maximum Value", "Specify maximum value in Interval type");
RNA_def_property_update(prop, NC_LOGIC, NULL);
@@ -548,7 +549,7 @@ static void rna_def_delay_sensor(BlenderRNA *brna)
RNA_def_property_range(prop, 0, 5000);
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "repeat", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_repeat", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SENS_DELAY_REPEAT);
RNA_def_property_ui_text(prop, "Repeat", "Toggle repeat option. If selected, the sensor restarts after Delay+Dur logic tics");
RNA_def_property_update(prop, NC_LOGIC, NULL);
@@ -563,12 +564,12 @@ static void rna_def_collision_sensor(BlenderRNA *brna)
RNA_def_struct_ui_text(srna, "Collision Sensor", "Sensor to detect objects colliding with the current object, with more settings than the Touch sensor");
RNA_def_struct_sdna_from(srna, "bCollisionSensor", "data");
- prop= RNA_def_property(srna, "pulse", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_pulse", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", SENS_COLLISION_PULSE);
RNA_def_property_ui_text(prop, "Pulse", "Changes to the set of colliding objects generates pulse");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "collision_type", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_material", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", SENS_COLLISION_MATERIAL);
RNA_def_property_ui_text(prop, "M/P", "Toggle collision on material or property");
RNA_def_property_update(prop, NC_LOGIC, NULL);
@@ -695,7 +696,7 @@ static void rna_def_ray_sensor(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Material", "Only look for Objects with this material");
*/
- prop= RNA_def_property(srna, "x_ray_mode", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_x_ray", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", SENS_RAY_XRAY);
RNA_def_property_ui_text(prop, "X-Ray Mode", "Toggle X-Ray option (see through objects that don't have the property)");
RNA_def_property_update(prop, NC_LOGIC, NULL);
@@ -773,7 +774,7 @@ static void rna_def_joystick_sensor(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Event Type", "The type of event this joystick sensor is triggered on");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "all_events", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_all_events", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SENS_JOY_ANY_EVENT);
RNA_def_property_ui_text(prop, "All Events", "Triggered by all events on this joysticks current type (axis/button/hat)");
RNA_def_property_update(prop, NC_LOGIC, NULL);
diff --git a/source/blender/makesrna/intern/rna_sequencer.c b/source/blender/makesrna/intern/rna_sequencer.c
index b39a9fecebf..89c7c5f37b0 100644
--- a/source/blender/makesrna/intern/rna_sequencer.c
+++ b/source/blender/makesrna/intern/rna_sequencer.c
@@ -36,6 +36,7 @@
#include "DNA_sequence_types.h"
#include "BKE_animsys.h"
+#include "BKE_global.h"
#include "BKE_sequencer.h"
#include "MEM_guardedalloc.h"
@@ -149,7 +150,7 @@ static void rna_Sequence_anim_startofs_final_set(PointerRNA *ptr, int value)
seq->anim_startofs = MIN2(value, seq->len + seq->anim_startofs);
- reload_sequence_new_file(scene, seq, FALSE);
+ reload_sequence_new_file(G.main, scene, seq, FALSE);
rna_Sequence_frame_change_update(scene, seq);
}
@@ -160,7 +161,7 @@ static void rna_Sequence_anim_endofs_final_set(PointerRNA *ptr, int value)
seq->anim_endofs = MIN2(value, seq->len + seq->anim_endofs);
- reload_sequence_new_file(scene, seq, FALSE);
+ reload_sequence_new_file(G.main, scene, seq, FALSE);
rna_Sequence_frame_change_update(scene, seq);
}
@@ -551,7 +552,7 @@ static void rna_Sequence_mute_update(Main *bmain, Scene *scene, PointerRNA *ptr)
static void rna_Sequence_filepath_update(Main *bmain, Scene *scene, PointerRNA *ptr)
{
Sequence *seq= (Sequence*)(ptr->data);
- reload_sequence_new_file(scene, seq, TRUE);
+ reload_sequence_new_file(G.main, scene, seq, TRUE);
calc_sequence(scene, seq);
rna_Sequence_update(bmain, scene, ptr);
}
@@ -763,17 +764,17 @@ static void rna_def_strip_color_balance(BlenderRNA *brna)
RNA_def_property_ui_range(prop, 0, 2, 0.1, 3);
RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
- prop= RNA_def_property(srna, "inverse_gain", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "invert_gain", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_COLOR_BALANCE_INVERSE_GAIN);
RNA_def_property_ui_text(prop, "Inverse Gain", "");
RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
- prop= RNA_def_property(srna, "inverse_gamma", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "invert_gamma", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_COLOR_BALANCE_INVERSE_GAMMA);
RNA_def_property_ui_text(prop, "Inverse Gamma", "");
RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
- prop= RNA_def_property(srna, "inverse_lift", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "invert_lift", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_COLOR_BALANCE_INVERSE_LIFT);
RNA_def_property_ui_text(prop, "Inverse Lift", "");
RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
@@ -882,14 +883,14 @@ static void rna_def_sequence(BlenderRNA *brna)
/* strip positioning */
- prop= RNA_def_property(srna, "frame_final_length", PROP_INT, PROP_TIME);
+ prop= RNA_def_property(srna, "frame_final_duration", PROP_INT, PROP_TIME);
RNA_def_property_range(prop, 1, MAXFRAME);
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
RNA_def_property_ui_text(prop, "Length", "The length of the contents of this strip before the handles are applied");
RNA_def_property_int_funcs(prop, "rna_Sequence_frame_length_get", "rna_Sequence_frame_length_set",NULL);
RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
- prop= RNA_def_property(srna, "frame_length", PROP_INT, PROP_TIME);
+ prop= RNA_def_property(srna, "frame_duration", PROP_INT, PROP_TIME);
RNA_def_property_int_sdna(prop, NULL, "len");
RNA_def_property_clear_flag(prop, PROP_EDITABLE|PROP_ANIMATABLE);
RNA_def_property_range(prop, 1, MAXFRAME);
@@ -951,12 +952,13 @@ static void rna_def_sequence(BlenderRNA *brna)
/* blending */
- prop= RNA_def_property(srna, "blend_mode", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "blend_type", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "blend_mode");
RNA_def_property_enum_items(prop, blend_mode_items);
RNA_def_property_ui_text(prop, "Blend Mode", "");
RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
- prop= RNA_def_property(srna, "blend_opacity", PROP_FLOAT, PROP_FACTOR);
+ prop= RNA_def_property(srna, "blend_alpha", PROP_FLOAT, PROP_FACTOR);
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Blend Opacity", "");
RNA_def_property_float_funcs(prop, "rna_Sequence_opacity_get", "rna_Sequence_opacity_set", NULL); // stupid 0-100 -> 0-1
@@ -968,7 +970,7 @@ static void rna_def_sequence(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Effect fader position", "");
RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
- prop= RNA_def_property(srna, "use_effect_default_fade", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_default_fade", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_USE_EFFECT_DEFAULT_FADE);
RNA_def_property_ui_text(prop, "Use Default Fade", "Fade effect using the built-in default (usually make transition as long as effect strip)");
RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
@@ -1036,37 +1038,37 @@ static void rna_def_filter_video(StructRNA *srna)
{
PropertyRNA *prop;
- prop= RNA_def_property(srna, "de_interlace", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_deinterlace", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_FILTERY);
RNA_def_property_ui_text(prop, "De-Interlace", "For video movies to remove fields");
RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update_reopen_files");
- prop= RNA_def_property(srna, "premultiply", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_premultiply", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_MAKE_PREMUL);
RNA_def_property_ui_text(prop, "Premultiply", "Convert RGB from key alpha to premultiplied alpha");
RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, NULL);
- prop= RNA_def_property(srna, "flip_x", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_flip_x", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_FLIPX);
RNA_def_property_ui_text(prop, "Flip X", "Flip on the X axis");
RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
- prop= RNA_def_property(srna, "flip_y", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_flip_y", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_FLIPY);
RNA_def_property_ui_text(prop, "Flip Y", "Flip on the Y axis");
RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
- prop= RNA_def_property(srna, "convert_float", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_float", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_MAKE_FLOAT);
RNA_def_property_ui_text(prop, "Convert Float", "Convert input to float data");
RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
- prop= RNA_def_property(srna, "reverse_frames", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_reverse_frames", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_REVERSE_FRAMES);
RNA_def_property_ui_text(prop, "Flip Time", "Reverse frame order");
RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
- prop= RNA_def_property(srna, "multiply_colors", PROP_FLOAT, PROP_UNSIGNED);
+ prop= RNA_def_property(srna, "color_multiply", PROP_FLOAT, PROP_UNSIGNED);
RNA_def_property_float_sdna(prop, NULL, "mul");
RNA_def_property_range(prop, 0.0f, 20.0f);
RNA_def_property_ui_text(prop, "Multiply Colors", "");
@@ -1128,12 +1130,12 @@ static void rna_def_proxy(StructRNA *srna)
RNA_def_property_pointer_sdna(prop, NULL, "strip->proxy");
RNA_def_property_ui_text(prop, "Proxy", "");
- prop= RNA_def_property(srna, "proxy_custom_directory", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_proxy_custom_directory", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_USE_PROXY_CUSTOM_DIR);
RNA_def_property_ui_text(prop, "Proxy Custom Directory", "Use a custom directory to store data");
RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
- prop= RNA_def_property(srna, "proxy_custom_file", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_proxy_custom_file", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_USE_PROXY_CUSTOM_FILE);
RNA_def_property_ui_text(prop, "Proxy Custom File", "Use a custom file to read proxy data from");
RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
@@ -1143,7 +1145,7 @@ static void rna_def_input(StructRNA *srna)
{
PropertyRNA *prop;
- prop= RNA_def_property(srna, "animation_start_offset", PROP_INT, PROP_UNSIGNED);
+ prop= RNA_def_property(srna, "animation_offset_start", PROP_INT, PROP_UNSIGNED);
RNA_def_property_int_sdna(prop, NULL, "anim_startofs");
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
RNA_def_property_int_funcs(prop, NULL, "rna_Sequence_anim_startofs_final_set", NULL); // overlap tests
@@ -1151,7 +1153,7 @@ static void rna_def_input(StructRNA *srna)
RNA_def_property_ui_text(prop, "Animation Start Offset", "Animation start offset (trim start)");
RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
- prop= RNA_def_property(srna, "animation_end_offset", PROP_INT, PROP_UNSIGNED);
+ prop= RNA_def_property(srna, "animation_offset_end", PROP_INT, PROP_UNSIGNED);
RNA_def_property_int_sdna(prop, NULL, "anim_endofs");
RNA_def_property_clear_flag(prop, PROP_ANIMATABLE);
RNA_def_property_int_funcs(prop, NULL, "rna_Sequence_anim_endofs_final_set", NULL); // overlap tests
@@ -1416,7 +1418,7 @@ static void rna_def_glow(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Boost Factor", "Brightness multiplier");
RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
- prop= RNA_def_property(srna, "blur_distance", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "blur_radius", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "dDist");
RNA_def_property_range(prop, 0.5f, 20.0f);
RNA_def_property_ui_text(prop, "Blur Distance", "Radius of glow effect");
@@ -1428,7 +1430,7 @@ static void rna_def_glow(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Quality", "Accuracy of the blur effect");
RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
- prop= RNA_def_property(srna, "only_boost", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_only_boost", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "bNoComp", 0);
RNA_def_property_ui_text(prop, "Only Boost", "Show the glow buffer only");
RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
@@ -1468,7 +1470,7 @@ static void rna_def_transform(BlenderRNA *brna)
RNA_def_property_ui_range(prop, 0, 10, 3, 10);
RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
- prop= RNA_def_property(srna, "uniform_scale", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_uniform_scale", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "uniform_scale", 0);
RNA_def_property_ui_text(prop, "Uniform Scale", "Scale uniformly, preserving aspect ratio");
RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
@@ -1536,17 +1538,17 @@ static void rna_def_speed_control(BlenderRNA *brna)
RNA_def_property_ui_range(prop, 0.0f, 100.0f, 1, 0);
RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
- prop= RNA_def_property(srna, "curve_velocity", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_curve_velocity", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", SEQ_SPEED_INTEGRATE);
RNA_def_property_ui_text(prop, "F-Curve Velocity", "Interpret the F-Curve value as a velocity instead of a frame number");
RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
- prop= RNA_def_property(srna, "frame_blending", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_frame_blend", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", SEQ_SPEED_BLEND);
RNA_def_property_ui_text(prop, "Frame Blending", "Blend two frames into the target for a smoother result");
RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
- prop= RNA_def_property(srna, "curve_compress_y", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_curve_compress_y", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", SEQ_SPEED_COMPRESS_IPO_Y);
RNA_def_property_ui_text(prop, "F-Curve Compress Y", "Scale F-Curve value to get the target frame number, F-Curve value runs from 0.0 to 1.0");
RNA_def_property_update(prop, NC_SCENE|ND_SEQUENCER, "rna_Sequence_update");
diff --git a/source/blender/makesrna/intern/rna_smoke.c b/source/blender/makesrna/intern/rna_smoke.c
index 45dc7fadd94..80716e35d15 100644
--- a/source/blender/makesrna/intern/rna_smoke.c
+++ b/source/blender/makesrna/intern/rna_smoke.c
@@ -131,7 +131,7 @@ static void rna_def_smoke_domain_settings(BlenderRNA *brna)
RNA_def_struct_sdna(srna, "SmokeDomainSettings");
RNA_def_struct_path_func(srna, "rna_SmokeDomainSettings_path");
- prop= RNA_def_property(srna, "maxres", PROP_INT, PROP_NONE);
+ prop= RNA_def_property(srna, "resolution_max", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "maxres");
RNA_def_property_range(prop, 24, 512);
RNA_def_property_ui_range(prop, 24, 512, 2, 0);
@@ -145,12 +145,12 @@ static void rna_def_smoke_domain_settings(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Amplification", "Enhance the resolution of smoke by this factor using noise");
RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Smoke_reset");
- prop= RNA_def_property(srna, "highres", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_high_resolution", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", MOD_SMOKE_HIGHRES);
RNA_def_property_ui_text(prop, "High res", "Enable high resolution (using amplification)");
RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Smoke_reset");
- prop= RNA_def_property(srna, "viewhighres", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_high_resolution", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "viewsettings", MOD_SMOKE_VIEW_SHOWBIG);
RNA_def_property_ui_text(prop, "Show High Resolution", "Show high resolution (using amplification)");
RNA_def_property_update(prop, NC_OBJECT|ND_DRAW, NULL);
@@ -175,7 +175,7 @@ static void rna_def_smoke_domain_settings(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Heat", "Higher value results in faster rising smoke");
RNA_def_property_update(prop, NC_OBJECT|ND_MODIFIER, "rna_Smoke_reset");
- prop= RNA_def_property(srna, "coll_group", PROP_POINTER, PROP_NONE);
+ prop= RNA_def_property(srna, "collision_group", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "coll_group");
RNA_def_property_struct_type(prop, "Group");
RNA_def_property_flag(prop, PROP_EDITABLE);
@@ -210,12 +210,12 @@ static void rna_def_smoke_domain_settings(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Dissolve Speed", "Dissolve Speed");
RNA_def_property_update(prop, 0, NULL);
- prop= RNA_def_property(srna, "dissolve_smoke", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_dissolve_smoke", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", MOD_SMOKE_DISSOLVE);
RNA_def_property_ui_text(prop, "Dissolve Smoke", "Enable smoke to disappear over time");
RNA_def_property_update(prop, 0, NULL);
- prop= RNA_def_property(srna, "dissolve_smoke_log", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_dissolve_smoke_log", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", MOD_SMOKE_DISSOLVE_LOG);
RNA_def_property_ui_text(prop, "Logarithmic dissolve", "Using 1/x ");
RNA_def_property_update(prop, 0, NULL);
@@ -230,19 +230,19 @@ static void rna_def_smoke_domain_settings(BlenderRNA *brna)
RNA_def_property_pointer_sdna(prop, NULL, "point_cache[1]");
RNA_def_property_ui_text(prop, "Point Cache", "");
- prop= RNA_def_property(srna, "smoke_cache_comp", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "point_cache_compress_type", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "cache_comp");
RNA_def_property_enum_items(prop, smoke_cache_comp_items);
RNA_def_property_ui_text(prop, "Cache Compression", "Compression method to be used");
RNA_def_property_update(prop, 0, NULL);
- prop= RNA_def_property(srna, "smoke_cache_high_comp", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "point_cache_compress_high_type", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "cache_high_comp");
RNA_def_property_enum_items(prop, smoke_cache_comp_items);
RNA_def_property_ui_text(prop, "Cache Compression", "Compression method to be used");
RNA_def_property_update(prop, 0, NULL);
- prop= RNA_def_property(srna, "smoke_domain_colli", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "collision_extents", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "border_collisions");
RNA_def_property_enum_items(prop, smoke_domain_colli_items);
RNA_def_property_ui_text(prop, "Border Collisions", "Selects which domain border will be treated as collision object.");
@@ -253,7 +253,7 @@ static void rna_def_smoke_domain_settings(BlenderRNA *brna)
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Effector Weights", "");
- prop= RNA_def_property(srna, "smoothemitter", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "smooth_emitter", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", MOD_SMOKE_HIGH_SMOOTH);
RNA_def_property_ui_text(prop, "Smooth Emitter", "Smoothens emitted smoke to avoid blockiness.");
RNA_def_property_update(prop, 0, NULL);
@@ -298,19 +298,19 @@ static void rna_def_smoke_flow_settings(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Temp. Diff.", "Temperature difference to ambient temperature");
RNA_def_property_update(prop, 0, NULL);
- prop= RNA_def_property(srna, "psys", PROP_POINTER, PROP_NONE);
+ prop= RNA_def_property(srna, "particle_system", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "psys");
RNA_def_property_struct_type(prop, "ParticleSystem");
RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Particle Systems", "Particle systems emitted from the object");
RNA_def_property_update(prop, 0, "rna_Smoke_reset_dependancy");
- prop= RNA_def_property(srna, "outflow", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_outflow", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "type", MOD_SMOKE_FLOW_TYPE_OUTFLOW);
RNA_def_property_ui_text(prop, "Outflow", "Deletes smoke from simulation");
RNA_def_property_update(prop, 0, NULL);
- prop= RNA_def_property(srna, "absolute", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_absolute", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", MOD_SMOKE_FLOW_ABSOLUTE);
RNA_def_property_ui_text(prop, "Absolute Density", "Only allows given density value in emitter area.");
RNA_def_property_update(prop, 0, NULL);
@@ -320,7 +320,7 @@ static void rna_def_smoke_flow_settings(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Initial Velocity", "Smoke inherits it's velocity from the emitter particle");
RNA_def_property_update(prop, 0, NULL);
- prop= RNA_def_property(srna, "velocity_multiplier", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "velocity_factor", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "vel_multi");
RNA_def_property_range(prop, -2.0, 2.0);
RNA_def_property_ui_range(prop, -2.0, 2.0, 0.05, 5);
diff --git a/source/blender/makesrna/intern/rna_sound.c b/source/blender/makesrna/intern/rna_sound.c
index 9048a3c3072..674fbbad9c6 100644
--- a/source/blender/makesrna/intern/rna_sound.c
+++ b/source/blender/makesrna/intern/rna_sound.c
@@ -79,7 +79,7 @@ static void rna_def_sound(BlenderRNA *brna)
RNA_def_property_pointer_sdna(prop, NULL, "packedfile");
RNA_def_property_ui_text(prop, "Packed File", "");
- prop= RNA_def_property(srna, "caching", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_memory_cache", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_funcs(prop, "rna_Sound_caching_get", "rna_Sound_caching_set");
RNA_def_property_ui_text(prop, "Caching", "The sound file is decoded and loaded into RAM");
RNA_def_property_update(prop, 0, "rna_Sound_filepath_update");
diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c
index d72eb25dd2f..f74621e8419 100644
--- a/source/blender/makesrna/intern/rna_space.c
+++ b/source/blender/makesrna/intern/rna_space.c
@@ -89,7 +89,7 @@ EnumPropertyItem autosnap_items[] = {
{SACTSNAP_MARKER, "MARKER", 0, "Nearest Marker", "Snap to nearest marker"},
{0, NULL, 0, NULL, NULL}};
-EnumPropertyItem viewport_shading_items[] = {
+EnumPropertyItem viewport_shade_items[] = {
{OB_BOUNDBOX, "BOUNDBOX", ICON_BBOX, "Bounding Box", "Display the object's local bounding boxes only"},
{OB_WIRE, "WIREFRAME", ICON_WIRE, "Wireframe", "Display the object as wire edges"},
{OB_SOLID, "SOLID", ICON_SOLID, "Solid", "Display the object solid, lit with default OpenGL lights"},
@@ -734,7 +734,7 @@ static void rna_def_space_image_uv(BlenderRNA *brna)
RNA_def_struct_ui_text(srna, "Space UV Editor", "UV editor data for the image editor space");
/* selection */
- prop= RNA_def_property(srna, "sticky_selection_mode", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "sticky_select_mode", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "sticky");
RNA_def_property_enum_items(prop, sticky_mode_items);
RNA_def_property_ui_text(prop, "Sticky Selection Mode", "Automatically select also UVs sharing the same vertex as the ones being selected");
@@ -747,12 +747,12 @@ static void rna_def_space_image_uv(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Edge Draw Type", "Draw type for drawing UV edges");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_IMAGE, NULL);
- prop= RNA_def_property(srna, "draw_smooth_edges", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_smooth_edges", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SI_SMOOTH_UV);
RNA_def_property_ui_text(prop, "Draw Smooth Edges", "Draw UV edges anti-aliased");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_IMAGE, NULL);
- prop= RNA_def_property(srna, "draw_stretch", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_stretch", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SI_DRAW_STRETCH);
RNA_def_property_ui_text(prop, "Draw Stretch", "Draw faces colored according to the difference in shape between UVs and their 3D coordinates (blue for low distortion, red for high distortion)");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_IMAGE, NULL);
@@ -763,17 +763,17 @@ static void rna_def_space_image_uv(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Draw Stretch Type", "Type of stretch to draw");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_IMAGE, NULL);
- prop= RNA_def_property(srna, "draw_modified_edges", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_modified_edges", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SI_DRAWSHADOW);
RNA_def_property_ui_text(prop, "Draw Modified Edges", "Draw edges after modifiers are applied");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_IMAGE, NULL);
- prop= RNA_def_property(srna, "draw_other_objects", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_other_objects", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SI_DRAW_OTHER);
RNA_def_property_ui_text(prop, "Draw Other Objects", "Draw other selected objects that share the same image");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_IMAGE, NULL);
- prop= RNA_def_property(srna, "normalized_coordinates", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_normalized_coords", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SI_COORDFLOATS);
RNA_def_property_ui_text(prop, "Normalized Coordinates", "Display UV coordinates from 0.0 to 1.0 rather than in pixels");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_IMAGE, NULL);
@@ -786,22 +786,22 @@ static void rna_def_space_image_uv(BlenderRNA *brna)
/* todo: move edge and face drawing options here from G.f */
- prop= RNA_def_property(srna, "snap_to_pixels", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_snap_to_pixels", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SI_PIXELSNAP);
RNA_def_property_ui_text(prop, "Snap to Pixels", "Snap UVs to pixel locations while editing");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_IMAGE, NULL);
- prop= RNA_def_property(srna, "constrain_to_image_bounds", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "lock_bounds", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SI_CLIP_UV);
RNA_def_property_ui_text(prop, "Constrain to Image Bounds", "Constraint to stay within the image bounds while editing");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_IMAGE, NULL);
- prop= RNA_def_property(srna, "live_unwrap", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_live_unwrap", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SI_LIVE_UNWRAP);
RNA_def_property_ui_text(prop, "Live Unwrap", "Continuously unwrap the selected UV island while transforming pinned vertices");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_IMAGE, NULL);
- prop= RNA_def_property(srna, "pivot", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "pivot_point", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "around");
RNA_def_property_enum_items(prop, pivot_items);
RNA_def_property_ui_text(prop, "Pivot", "Rotation/Scaling Pivot");
@@ -838,22 +838,22 @@ static void rna_def_space_outliner(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Display Mode", "Type of information to display");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_OUTLINER, NULL);
- prop= RNA_def_property(srna, "display_filter", PROP_STRING, PROP_NONE);
+ prop= RNA_def_property(srna, "filter_text", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "search_string");
RNA_def_property_ui_text(prop, "Display Filter", "Live search filtering string");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_OUTLINER, NULL);
- prop= RNA_def_property(srna, "match_case_sensitive", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_filter_case_sensitive", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "search_flags", SO_FIND_CASE_SENSITIVE);
RNA_def_property_ui_text(prop, "Case Sensitive Matches Only", "Only use case sensitive matches of search string");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_OUTLINER, NULL);
- prop= RNA_def_property(srna, "match_complete", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_filter_complete", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "search_flags", SO_FIND_COMPLETE);
RNA_def_property_ui_text(prop, "Complete Matches Only", "Only use complete matches of search string");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_OUTLINER, NULL);
- prop= RNA_def_property(srna, "show_restriction_columns", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_restrict_columns", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", SO_HIDE_RESTRICTCOLS);
RNA_def_property_ui_text(prop, "Show Restriction Columns", "Show column");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_OUTLINER, NULL);
@@ -975,9 +975,9 @@ static void rna_def_space_view3d(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Lock Bone", "3D View center is locked to this bone's position");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
- prop= RNA_def_property(srna, "viewport_shading", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "viewport_shade", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "drawtype");
- RNA_def_property_enum_items(prop, viewport_shading_items);
+ RNA_def_property_enum_items(prop, viewport_shade_items);
RNA_def_property_ui_text(prop, "Viewport Shading", "Method to display/shade objects in the 3D View");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
@@ -1028,52 +1028,52 @@ static void rna_def_space_view3d(BlenderRNA *brna)
RNA_def_property_range(prop, 1, 1024);
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
- prop= RNA_def_property(srna, "display_floor", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_floor", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "gridflag", V3D_SHOW_FLOOR);
RNA_def_property_ui_text(prop, "Display Grid Floor", "Show the ground plane grid in perspective view");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
- prop= RNA_def_property(srna, "display_x_axis", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_axis_x", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "gridflag", V3D_SHOW_X);
RNA_def_property_ui_text(prop, "Display X Axis", "Show the X axis line in perspective view");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
- prop= RNA_def_property(srna, "display_y_axis", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_axis_y", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "gridflag", V3D_SHOW_Y);
RNA_def_property_ui_text(prop, "Display Y Axis", "Show the Y axis line in perspective view");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
- prop= RNA_def_property(srna, "display_z_axis", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_axis_z", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "gridflag", V3D_SHOW_Z);
RNA_def_property_ui_text(prop, "Display Z Axis", "Show the Z axis line in perspective view");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
- prop= RNA_def_property(srna, "outline_selected", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_outline_selected", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", V3D_SELECT_OUTLINE);
RNA_def_property_ui_text(prop, "Outline Selected", "Show an outline highlight around selected objects in non-wireframe views");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
- prop= RNA_def_property(srna, "all_object_origins", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_all_objects_origin", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", V3D_DRAW_CENTERS);
RNA_def_property_ui_text(prop, "All Object Origins", "Show the object origin center dot for all (selected and unselected) objects");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
- prop= RNA_def_property(srna, "relationship_lines", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_relationship_lines", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", V3D_HIDE_HELPLINES);
RNA_def_property_ui_text(prop, "Relationship Lines", "Show dashed lines indicating parent or constraint relationships");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
- prop= RNA_def_property(srna, "textured_solid", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_textured_solid", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag2", V3D_SOLID_TEX);
RNA_def_property_ui_text(prop, "Textured Solid", "Display face-assigned textures in solid view");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
- prop= RNA_def_property(srna, "display_render_override", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_only_render", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag2", V3D_RENDER_OVERRIDE);
RNA_def_property_ui_text(prop, "Only Render", "Display only objects which will be rendered");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
- prop= RNA_def_property(srna, "occlude_geometry", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_occlude_geometry", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", V3D_ZBUF_SELECT);
RNA_def_property_ui_text(prop, "Occlude Geometry", "Limit selection to visible (clipped with depth buffer)");
RNA_def_property_ui_icon(prop, ICON_ORTHO, 0);
@@ -1085,7 +1085,7 @@ static void rna_def_space_view3d(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Background Images", "List of background images");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
- prop= RNA_def_property(srna, "display_background_images", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_background_images", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", V3D_DISPBGPICS);
RNA_def_property_ui_text(prop, "Display Background Images", "Display reference images behind objects in the 3D View");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
@@ -1096,31 +1096,31 @@ static void rna_def_space_view3d(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Pivot Point", "Pivot center for rotation/scaling");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
- prop= RNA_def_property(srna, "pivot_point_align", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_pivot_point_align", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", V3D_ALIGN);
RNA_def_property_ui_text(prop, "Align", "Manipulate object centers only");
RNA_def_property_ui_icon(prop, ICON_ALIGN, 0);
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
- prop= RNA_def_property(srna, "manipulator", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_manipulator", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "twflag", V3D_USE_MANIPULATOR);
RNA_def_property_ui_text(prop, "Manipulator", "Use a 3D manipulator widget for controlling transforms");
RNA_def_property_ui_icon(prop, ICON_MANIPUL, 0);
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
- prop= RNA_def_property(srna, "manipulator_translate", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_manipulator_translate", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "twtype", V3D_MANIP_TRANSLATE);
RNA_def_property_ui_text(prop, "Manipulator Translate", "Use the manipulator for movement transformations");
RNA_def_property_ui_icon(prop, ICON_MAN_TRANS, 0);
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
- prop= RNA_def_property(srna, "manipulator_rotate", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_manipulator_rotate", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "twtype", V3D_MANIP_ROTATE);
RNA_def_property_ui_text(prop, "Manipulator Rotate", "Use the manipulator for rotation transformations");
RNA_def_property_ui_icon(prop, ICON_MAN_ROT, 0);
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
- prop= RNA_def_property(srna, "manipulator_scale", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_manipulator_scale", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "twtype", V3D_MANIP_SCALE);
RNA_def_property_ui_text(prop, "Manipulator Scale", "Use the manipulator for scale transformations");
RNA_def_property_ui_icon(prop, ICON_MAN_SCALE, 0);
@@ -1152,7 +1152,7 @@ static void rna_def_space_view3d(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Visible Layers", "Layers visible in this 3D View");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
- prop= RNA_def_property(srna, "used_layers", PROP_BOOLEAN, PROP_LAYER_MEMBER);
+ prop= RNA_def_property(srna, "layers_used", PROP_BOOLEAN, PROP_LAYER_MEMBER);
RNA_def_property_boolean_sdna(prop, NULL, "lay_used", 1);
RNA_def_property_array(prop, 20);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
@@ -1179,12 +1179,12 @@ static void rna_def_space_view3d(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Lock", "Lock view rotation in side views");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, "rna_RegionView3D_quadview_update");
- prop= RNA_def_property(srna, "box_preview", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_sync_view", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "viewlock", RV3D_BOXVIEW);
RNA_def_property_ui_text(prop, "Box", "Sync view position between side views");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, "rna_RegionView3D_quadview_update");
- prop= RNA_def_property(srna, "box_clip", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_box_clip", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "viewlock", RV3D_BOXCLIP);
RNA_def_property_ui_text(prop, "Clip", "Clip objects based on what's visible in other side views");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, "rna_RegionView3D_quadview_update");
@@ -1218,7 +1218,7 @@ static void rna_def_space_view3d(BlenderRNA *brna)
RNA_def_property_ui_range(prop, -10000.0, 10000.0, 10, 4);
RNA_def_property_update(prop, NC_WINDOW, NULL);
- prop= RNA_def_property(srna, "view_rotation", PROP_FLOAT, PROP_QUATERNION);
+ prop= RNA_def_property(srna, "view_rotate_method", PROP_FLOAT, PROP_QUATERNION);
RNA_def_property_float_sdna(prop, NULL, "viewquat");
RNA_def_property_ui_text(prop, "View Rotation", "Rotation in quaternions (keep normalized)");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_VIEW3D, NULL);
@@ -1273,7 +1273,7 @@ static void rna_def_space_buttons(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Align", "Arrangement of the panels");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_PROPERTIES, NULL);
- prop= RNA_def_property(srna, "brush_texture", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_brush_texture", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SB_BRUSH_TEX);
RNA_def_property_ui_text(prop, "Brush Texture", "Show brush textures");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_PROPERTIES, NULL);
@@ -1325,7 +1325,7 @@ static void rna_def_space_image(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Scopes", "Scopes to visualize image statistics.");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_IMAGE, "rna_SpaceImageEditor_scopes_update");
- prop= RNA_def_property(srna, "image_pin", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_image_pin", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "pin", 0);
RNA_def_property_ui_text(prop, "Image Pin", "Display current image regardless of object selection");
RNA_def_property_ui_icon(prop, ICON_UNPINNED, 1);
@@ -1337,7 +1337,7 @@ static void rna_def_space_image(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Line sample", "Sampled colors along line");
/* image draw */
- prop= RNA_def_property(srna, "draw_repeated", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_repeat", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SI_DRAW_TILE);
RNA_def_property_ui_text(prop, "Draw Repeated", "Draw the image repeated outside of the main view");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_IMAGE, NULL);
@@ -1357,7 +1357,7 @@ static void rna_def_space_image(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "UV Editor", "UV editor settings");
/* paint */
- prop= RNA_def_property(srna, "image_painting", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_image_paint", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SI_DRAWTOOL);
RNA_def_property_ui_text(prop, "Image Painting", "Enable image painting mode");
RNA_def_property_ui_icon(prop, ICON_TPAINT_HLT, 0);
@@ -1375,7 +1375,7 @@ static void rna_def_space_image(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Use Grease Pencil", "Display and edit the grease pencil freehand annotations overlay");
/* update */
- prop= RNA_def_property(srna, "update_automatically", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_realtime_update", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "lock", 0);
RNA_def_property_ui_text(prop, "Update Automatically", "Update other affected window spaces automatically to reflect changes during interactive operations such as transform");
@@ -1445,12 +1445,12 @@ static void rna_def_space_sequencer(BlenderRNA *brna)
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_SEQUENCER, NULL);
/* flag's */
- prop= RNA_def_property(srna, "show_cframe_indicator", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_frame_indicator", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", SEQ_NO_DRAW_CFRANUM);
RNA_def_property_ui_text(prop, "Show Frame Number Indicator", "Show frame number beside the current frame indicator line");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_SEQUENCER, NULL);
- prop= RNA_def_property(srna, "draw_frames", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_frames", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_DRAWFRAMES);
RNA_def_property_ui_text(prop, "Draw Frames", "Draw frames rather than seconds");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_SEQUENCER, NULL);
@@ -1460,12 +1460,12 @@ static void rna_def_space_sequencer(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Transform Markers", "Transform markers as well as strips");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_SEQUENCER, NULL);
- prop= RNA_def_property(srna, "separate_color_preview", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_separate_color", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_DRAW_COLOR_SEPERATED);
RNA_def_property_ui_text(prop, "Separate Colors", "Separate color channels in preview");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_SEQUENCER, NULL);
- prop= RNA_def_property(srna, "draw_safe_margin", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_safe_margin", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SEQ_DRAW_SAFE_MARGINS);
RNA_def_property_ui_text(prop, "Safe Margin", "Draw title safe margins in preview");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_SEQUENCER, NULL);
@@ -1572,21 +1572,23 @@ static void rna_def_space_text(BlenderRNA *brna)
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_TEXT, NULL);
/* functionality options */
- prop= RNA_def_property(srna, "overwrite", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_overwrite", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "overwrite", 1);
RNA_def_property_ui_text(prop, "Overwrite", "Overwrite characters when typing rather than inserting them");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_TEXT, NULL);
- prop= RNA_def_property(srna, "live_edit", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_live_edit", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "live_edit", 1);
RNA_def_property_ui_text(prop, "Live Edit", "Run python while editing");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_TEXT, NULL);
/* find */
- prop= RNA_def_property(srna, "find_all", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_find_all", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", ST_FIND_ALL);
RNA_def_property_ui_text(prop, "Find All", "Search in all text datablocks, instead of only the active one");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_TEXT, NULL);
- prop= RNA_def_property(srna, "find_wrap", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_find_wrap", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", ST_FIND_WRAP);
RNA_def_property_ui_text(prop, "Find Wrap", "Search again from the start of the file when reaching the end");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_TEXT, NULL);
@@ -1640,7 +1642,7 @@ static void rna_def_space_dopesheet(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Show Seconds", "Show timing in seconds not frames");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_DOPESHEET, NULL);
- prop= RNA_def_property(srna, "show_cframe_indicator", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_frame_indicator", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", SACTION_NODRAWCFRANUM);
RNA_def_property_ui_text(prop, "Show Frame Number Indicator", "Show frame number beside the current frame indicator line");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_DOPESHEET, NULL);
@@ -1651,12 +1653,12 @@ static void rna_def_space_dopesheet(BlenderRNA *brna)
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_DOPESHEET, NULL);
/* editing */
- prop= RNA_def_property(srna, "automerge_keyframes", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_auto_merge_keyframes", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", SACTION_NOTRANSKEYCULL);
RNA_def_property_ui_text(prop, "AutoMerge Keyframes", "Automatically merge nearby keyframes");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_DOPESHEET, NULL);
- prop= RNA_def_property(srna, "realtime_updates", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_realtime_update", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", SACTION_NOREALTIMEUPDATES);
RNA_def_property_ui_text(prop, "Realtime Updates", "When transforming keyframes, changes to the animation data are flushed to other views");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_DOPESHEET, NULL);
@@ -1672,7 +1674,7 @@ static void rna_def_space_dopesheet(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "DopeSheet", "Settings for filtering animation data");
/* autosnap */
- prop= RNA_def_property(srna, "autosnap", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "auto_snap", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "autosnap");
RNA_def_property_enum_items(prop, autosnap_items);
RNA_def_property_ui_text(prop, "Auto Snap", "Automatic time snapping settings for transformations");
@@ -1718,7 +1720,7 @@ static void rna_def_space_graph(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Show Seconds", "Show timing in seconds not frames");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_GRAPH, NULL);
- prop= RNA_def_property(srna, "show_cframe_indicator", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_frame_indicator", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", SIPO_NODRAWCFRANUM);
RNA_def_property_ui_text(prop, "Show Frame Number Indicator", "Show frame number beside the current frame indicator line");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_GRAPH, NULL);
@@ -1733,23 +1735,23 @@ static void rna_def_space_graph(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Show Handles", "Show handles of Bezier control points");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_GRAPH, NULL);
- prop= RNA_def_property(srna, "only_selected_curves_handles", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_only_selected_curves_handles", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SIPO_SELCUVERTSONLY);
RNA_def_property_ui_text(prop, "Only Selected Curve Keyframes", "Only keyframes of selected F-Curves are visible and editable");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_GRAPH, NULL);
- prop= RNA_def_property(srna, "only_selected_keyframe_handles", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_only_selected_keyframe_handles", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SIPO_SELVHANDLESONLY);
RNA_def_property_ui_text(prop, "Only Selected Keyframes Handles", "Only show and edit handles of selected keyframes");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_GRAPH, NULL);
/* editing */
- prop= RNA_def_property(srna, "automerge_keyframes", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_auto_merge_keyframes", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", SIPO_NOTRANSKEYCULL);
RNA_def_property_ui_text(prop, "AutoMerge Keyframes", "Automatically merge nearby keyframes");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_GRAPH, NULL);
- prop= RNA_def_property(srna, "realtime_updates", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_realtime_update", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", SIPO_NOREALTIMEUPDATES);
RNA_def_property_ui_text(prop, "Realtime Updates", "When transforming keyframes, changes to the animation data are flushed to other views");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_GRAPH, NULL);
@@ -1760,7 +1762,7 @@ static void rna_def_space_graph(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Show Cursor", "Show 2D cursor");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_GRAPH, NULL);
- prop= RNA_def_property(srna, "cursor_value", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "cursor_position_y", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "cursorVal");
RNA_def_property_ui_text(prop, "Cursor Y-Value", "Graph Editor 2D-Value cursor - Y-Value component");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_GRAPH, NULL);
@@ -1778,7 +1780,7 @@ static void rna_def_space_graph(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "DopeSheet", "Settings for filtering animation data");
/* autosnap */
- prop= RNA_def_property(srna, "autosnap", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "auto_snap", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "autosnap");
RNA_def_property_enum_items(prop, autosnap_items);
RNA_def_property_ui_text(prop, "Auto Snap", "Automatic time snapping settings for transformations");
@@ -1808,7 +1810,7 @@ static void rna_def_space_nla(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Show Seconds", "Show timing in seconds not frames");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_NLA, NULL);
- prop= RNA_def_property(srna, "show_cframe_indicator", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_frame_indicator", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", SNLA_NODRAWCFRANUM);
RNA_def_property_ui_text(prop, "Show Frame Number Indicator", "Show frame number beside the current frame indicator line");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_NLA, NULL);
@@ -1819,7 +1821,7 @@ static void rna_def_space_nla(BlenderRNA *brna)
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_NLA, NULL);
/* editing */
- prop= RNA_def_property(srna, "realtime_updates", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_realtime_update", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", SNLA_NOREALTIMEUPDATES);
RNA_def_property_ui_text(prop, "Realtime Updates", "When transforming strips, changes to the animation data are flushed to other views");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_NLA, NULL);
@@ -1831,7 +1833,7 @@ static void rna_def_space_nla(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "DopeSheet", "Settings for filtering animation data");
/* autosnap */
- prop= RNA_def_property(srna, "autosnap", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "auto_snap", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "autosnap");
RNA_def_property_enum_items(prop, autosnap_items);
RNA_def_property_ui_text(prop, "Auto Snap", "Automatic time snapping settings for transformations");
@@ -1848,48 +1850,48 @@ static void rna_def_space_time(BlenderRNA *brna)
RNA_def_struct_ui_text(srna, "Space Timeline Editor", "Timeline editor space data");
/* Define Anim Playback Areas */
- prop= RNA_def_property(srna, "play_top_left", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_play_top_left_3d_editor", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "redraws", TIME_REGION);
RNA_def_property_ui_text(prop, "Top-Left 3D Editor", "");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_TIME, "rna_SpaceTime_redraw_update");
- prop= RNA_def_property(srna, "play_all_3d", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_play_3d_editors", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "redraws", TIME_ALL_3D_WIN);
RNA_def_property_ui_text(prop, "All 3D View Editors", "");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_TIME, "rna_SpaceTime_redraw_update");
- prop= RNA_def_property(srna, "play_anim", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_play_animation_editors", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "redraws", TIME_ALL_ANIM_WIN);
RNA_def_property_ui_text(prop, "Animation Editors", "");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_TIME, "rna_SpaceTime_redraw_update");
- prop= RNA_def_property(srna, "play_buttons", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_play_properties_editors", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "redraws", TIME_ALL_BUTS_WIN);
RNA_def_property_ui_text(prop, "Property Editors", "");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_TIME, "rna_SpaceTime_redraw_update");
- prop= RNA_def_property(srna, "play_image", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_play_image_editors", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "redraws", TIME_ALL_IMAGE_WIN);
RNA_def_property_ui_text(prop, "Image Editors", "");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_TIME, "rna_SpaceTime_redraw_update");
- prop= RNA_def_property(srna, "play_sequencer", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_play_sequence_editors", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "redraws", TIME_SEQ);
RNA_def_property_ui_text(prop, "Sequencer Editors", "");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_TIME, "rna_SpaceTime_redraw_update");
- prop= RNA_def_property(srna, "play_nodes", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_play_node_editors", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "redraws", TIME_NODES);
RNA_def_property_ui_text(prop, "Node Editors", "");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_TIME, "rna_SpaceTime_redraw_update");
/* Other options */
- prop= RNA_def_property(srna, "only_selected", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_only_selected", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", TIME_ONLYACTSEL);
RNA_def_property_ui_text(prop, "Only Selected channels", "Show keyframes for active Object and/or its selected channels only");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_TIME, NULL);
- prop= RNA_def_property(srna, "show_cframe_indicator", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_frame_indicator", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", TIME_CFRA_NUM);
RNA_def_property_ui_text(prop, "Show Frame Number Indicator", "Show frame number beside the current frame indicator line");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_TIME, NULL);
@@ -1968,11 +1970,11 @@ static void rna_def_space_console(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Type", "Console type");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_CONSOLE, NULL);
- prop= RNA_def_property(srna, "selection_start", PROP_INT, PROP_UNSIGNED); /* copied from text editor */
+ prop= RNA_def_property(srna, "select_start", PROP_INT, PROP_UNSIGNED); /* copied from text editor */
RNA_def_property_int_sdna(prop, NULL, "sel_start");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_CONSOLE, NULL);
- prop= RNA_def_property(srna, "selection_end", PROP_INT, PROP_UNSIGNED); /* copied from text editor */
+ prop= RNA_def_property(srna, "select_end", PROP_INT, PROP_UNSIGNED); /* copied from text editor */
RNA_def_property_int_sdna(prop, NULL, "sel_end");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_CONSOLE, NULL);
@@ -1992,7 +1994,7 @@ static void rna_def_space_console(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Show Operator", "Display the operator log");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_CONSOLE_REPORT, NULL);
- prop= RNA_def_property(srna, "show_report_warn", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_report_warning", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "rpt_mask", CONSOLE_RPT_WARN);
RNA_def_property_ui_text(prop, "Show Warn", "Display warnings");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_CONSOLE_REPORT, NULL);
@@ -2050,76 +2052,76 @@ static void rna_def_fileselect_params(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Directory", "Directory displayed in the file browser");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_FILE_PARAMS, NULL);
- prop= RNA_def_property(srna, "file", PROP_STRING, PROP_NONE);
+ prop= RNA_def_property(srna, "filename", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "file");
RNA_def_property_ui_text(prop, "File Name", "Active file in the file browser");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_FILE_PARAMS, NULL);
- prop= RNA_def_property(srna, "display", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "display_type", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "display");
RNA_def_property_enum_items(prop, file_display_items);
RNA_def_property_ui_text(prop, "Display Mode", "Display mode for the file list");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_FILE_PARAMS, NULL);
- prop= RNA_def_property(srna, "do_filter", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_filter", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", FILE_FILTER);
RNA_def_property_ui_text(prop, "Filter Files", "Enable filtering of files");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_FILE_PARAMS, NULL);
- prop= RNA_def_property(srna, "hide_dot", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "flag", FILE_HIDE_DOT);
+ prop= RNA_def_property(srna, "show_hidden", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", FILE_HIDE_DOT);
RNA_def_property_ui_text(prop, "Hide Dot Files", "Hide hidden dot files");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_FILE_PARAMS , NULL);
- prop= RNA_def_property(srna, "sort", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "sort_method", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "sort");
RNA_def_property_enum_items(prop, file_sort_items);
RNA_def_property_ui_text(prop, "Sort", "");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_FILE_PARAMS, NULL);
- prop= RNA_def_property(srna, "filter_image", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_filter_image", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "filter", IMAGEFILE);
RNA_def_property_ui_text(prop, "Filter Images", "Show image files");
RNA_def_property_ui_icon(prop, ICON_FILE_IMAGE, 0);
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_FILE_PARAMS, NULL);
- prop= RNA_def_property(srna, "filter_blender", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_filter_blender", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "filter", BLENDERFILE);
RNA_def_property_ui_text(prop, "Filter Blender", "Show .blend files");
RNA_def_property_ui_icon(prop, ICON_FILE_BLEND, 0);
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_FILE_PARAMS, NULL);
- prop= RNA_def_property(srna, "filter_movie", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_filter_movie", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "filter", MOVIEFILE);
RNA_def_property_ui_text(prop, "Filter Movies", "Show movie files");
RNA_def_property_ui_icon(prop, ICON_FILE_MOVIE, 0);
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_FILE_PARAMS, NULL);
- prop= RNA_def_property(srna, "filter_script", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_filter_script", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "filter", PYSCRIPTFILE);
RNA_def_property_ui_text(prop, "Filter Script", "Show script files");
RNA_def_property_ui_icon(prop, ICON_FILE_SCRIPT, 0);
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_FILE_PARAMS, NULL);
- prop= RNA_def_property(srna, "filter_font", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_filter_font", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "filter", FTFONTFILE);
RNA_def_property_ui_text(prop, "Filter Fonts", "Show font files");
RNA_def_property_ui_icon(prop, ICON_FILE_FONT, 0);
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_FILE_PARAMS, NULL);
- prop= RNA_def_property(srna, "filter_sound", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_filter_sound", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "filter", SOUNDFILE);
RNA_def_property_ui_text(prop, "Filter Sound", "Show sound files");
RNA_def_property_ui_icon(prop, ICON_FILE_SOUND, 0);
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_FILE_PARAMS, NULL);
- prop= RNA_def_property(srna, "filter_text", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_filter_text", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "filter", TEXTFILE);
RNA_def_property_ui_text(prop, "Filter Text", "Show text files");
RNA_def_property_ui_icon(prop, ICON_FILE_BLANK, 0);
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_FILE_PARAMS, NULL);
- prop= RNA_def_property(srna, "filter_folder", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_filter_folder", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "filter", FOLDERFILE);
RNA_def_property_ui_text(prop, "Filter Folder", "Show folders");
RNA_def_property_ui_icon(prop, ICON_FILE_FOLDER, 0);
@@ -2159,7 +2161,7 @@ static void rna_def_space_userpref(BlenderRNA *brna)
RNA_def_struct_sdna(srna, "SpaceUserPref");
RNA_def_struct_ui_text(srna, "Space User Preferences", "User preferences space data");
- prop= RNA_def_property(srna, "filter", PROP_STRING, PROP_NONE);
+ prop= RNA_def_property(srna, "filter_text", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "filter");
RNA_def_property_ui_text(prop, "Filter", "Search term for filtering in the UI");
@@ -2211,7 +2213,7 @@ static void rna_def_space_node(BlenderRNA *brna)
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Node Tree", "Node tree being displayed and edited");
- prop= RNA_def_property(srna, "backdrop", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_backdrop", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SNODE_BACKDRAW);
RNA_def_property_ui_text(prop, "Backdrop", "Use active Viewer Node output as backdrop for compositing nodes");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_NODE_VIEW, NULL);
@@ -2227,59 +2229,59 @@ static void rna_def_space_logic(BlenderRNA *brna)
RNA_def_struct_ui_text(srna, "Space Logic Editor", "Logic editor space data");
/* sensors */
- prop= RNA_def_property(srna, "sensors_show_selected_objects", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_sensors_selected_objects", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "scaflag", BUTS_SENS_SEL);
RNA_def_property_ui_text(prop, "Show Selected Object", "Show sensors of all selected objects");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "sensors_show_active_objects", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_sensors_active_object", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "scaflag", BUTS_SENS_ACT);
RNA_def_property_ui_text(prop, "Show Active Object", "Show sensors of active object");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "sensors_show_linked_controller", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_sensors_linked_controller", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "scaflag", BUTS_SENS_LINK);
RNA_def_property_ui_text(prop, "Show Linked to Controller", "Show linked objects to the controller");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "sensors_show_active_states", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_sensors_active_states", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "scaflag", BUTS_SENS_STATE);
RNA_def_property_ui_text(prop, "Show Active States", "Show only sensors connected to active states");
RNA_def_property_update(prop, NC_LOGIC, NULL);
/* controllers */
- prop= RNA_def_property(srna, "controllers_show_selected_objects", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_controllers_selected_objects", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "scaflag", BUTS_CONT_SEL);
RNA_def_property_ui_text(prop, "Show Selected Object", "Show controllers of all selected objects");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "controllers_show_active_objects", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_controllers_active_object", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "scaflag", BUTS_CONT_ACT);
RNA_def_property_ui_text(prop, "Show Active Object", "Show controllers of active object");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "controllers_show_linked_controller", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_controllers_linked_controller", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "scaflag", BUTS_CONT_LINK);
RNA_def_property_ui_text(prop, "Show Linked to Controller", "Show linked objects to sensor/actuator");
RNA_def_property_update(prop, NC_LOGIC, NULL);
/* actuators */
- prop= RNA_def_property(srna, "actuators_show_selected_objects", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_actuators_selected_objects", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "scaflag", BUTS_ACT_SEL);
RNA_def_property_ui_text(prop, "Show Selected Object", "Show actuators of all selected objects");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "actuators_show_active_objects", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_actuators_active_object", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "scaflag", BUTS_ACT_ACT);
RNA_def_property_ui_text(prop, "Show Active Object", "Show actuators of active object");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "actuators_show_linked_controller", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_actuators_linked_controller", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "scaflag", BUTS_ACT_LINK);
RNA_def_property_ui_text(prop, "Show Linked to Actuator", "Show linked objects to the actuator");
RNA_def_property_update(prop, NC_LOGIC, NULL);
- prop= RNA_def_property(srna, "actuators_show_active_states", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_actuators_active_states", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "scaflag", BUTS_ACT_STATE);
RNA_def_property_ui_text(prop, "Show Active States", "Show only actuators connected to active states");
RNA_def_property_update(prop, NC_LOGIC, NULL);
diff --git a/source/blender/makesrna/intern/rna_text.c b/source/blender/makesrna/intern/rna_text.c
index e8d1422d045..15e7ce525ba 100644
--- a/source/blender/makesrna/intern/rna_text.c
+++ b/source/blender/makesrna/intern/rna_text.c
@@ -139,11 +139,13 @@ static void rna_def_text_marker(BlenderRNA *brna)
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Line", "Line in which the marker is located");
- prop= RNA_def_property(srna, "start", PROP_INT, PROP_UNSIGNED);
+ prop= RNA_def_property(srna, "character_index_start", PROP_INT, PROP_UNSIGNED);
+ RNA_def_property_int_sdna(prop, NULL, "start");
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Start", "Start position of the marker in the line");
- prop= RNA_def_property(srna, "end", PROP_INT, PROP_UNSIGNED);
+ prop= RNA_def_property(srna, "character_index_end", PROP_INT, PROP_UNSIGNED);
+ RNA_def_property_int_sdna(prop, NULL, "end");
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "End", "Start position of the marker in the line");
@@ -152,12 +154,12 @@ static void rna_def_text_marker(BlenderRNA *brna)
RNA_def_property_range(prop, 0, (int)0xFFFF);
RNA_def_property_ui_text(prop, "Group", "");
- prop= RNA_def_property(srna, "temporary", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "is_temporary", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", TMARK_TEMP);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Temporary", "Marker is temporary");
- prop= RNA_def_property(srna, "edit_all", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_edit_all", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", TMARK_EDITALL);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Edit All", "Edit all markers of the same group as one");
@@ -180,17 +182,17 @@ static void rna_def_text(BlenderRNA *brna)
RNA_def_property_string_funcs(prop, "rna_Text_filename_get", "rna_Text_filename_length", "rna_Text_filename_set");
RNA_def_property_ui_text(prop, "File Path", "Filename of the text file");
- prop= RNA_def_property(srna, "dirty", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "is_dirty", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", TXT_ISDIRTY);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Dirty", "Text file has been edited since last save");
- prop= RNA_def_property(srna, "modified", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "is_modified", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_boolean_funcs(prop, "rna_Text_modified_get", NULL);
RNA_def_property_ui_text(prop, "Modified", "Text file on disk is different than the one in memory");
- prop= RNA_def_property(srna, "memory", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "is_in_memory", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", TXT_ISMEM);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Memory", "Text file is in memory, without a corresponding file on disk");
@@ -199,7 +201,7 @@ static void rna_def_text(BlenderRNA *brna)
RNA_def_property_boolean_sdna(prop, NULL, "flags", TXT_ISSCRIPT);
RNA_def_property_ui_text(prop, "Register", "Register this text as a module on loading, Text name must end with \".py\"");
- prop= RNA_def_property(srna, "tabs_as_spaces", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_tabs_as_spaces", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", TXT_TABSTOSPACES);
RNA_def_property_ui_text(prop, "Tabs as Spaces", "Automatically converts all new tabs into spaces");
@@ -219,14 +221,14 @@ static void rna_def_text(BlenderRNA *brna)
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Current Character", "Index of current character in current line, and also start index of character in selection if one exists");
- prop= RNA_def_property(srna, "selection_end_line", PROP_POINTER, PROP_NONE);
+ prop= RNA_def_property(srna, "select_end_line", PROP_POINTER, PROP_NONE);
RNA_def_property_flag(prop, PROP_NEVER_NULL);
RNA_def_property_pointer_sdna(prop, NULL, "sell");
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_struct_type(prop, "TextLine");
RNA_def_property_ui_text(prop, "Selection End Line", "End line of selection");
- prop= RNA_def_property(srna, "selection_end_character", PROP_INT, PROP_UNSIGNED);
+ prop= RNA_def_property(srna, "select_end_character", PROP_INT, PROP_UNSIGNED);
RNA_def_property_int_sdna(prop, NULL, "selc");
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Selection End Character", "Index of character after end of selection in the selection end line");
diff --git a/source/blender/makesrna/intern/rna_texture.c b/source/blender/makesrna/intern/rna_texture.c
index 277a6b9e282..731a7b62213 100644
--- a/source/blender/makesrna/intern/rna_texture.c
+++ b/source/blender/makesrna/intern/rna_texture.c
@@ -60,7 +60,7 @@ EnumPropertyItem texture_type_items[] = {
{TEX_MARBLE, "MARBLE", ICON_TEXTURE, "Marble", ""},
{TEX_MUSGRAVE, "MUSGRAVE", ICON_TEXTURE, "Musgrave", ""},
{TEX_NOISE, "NOISE", ICON_TEXTURE, "Noise", ""},
- {TEX_PLUGIN, "PLUGIN", ICON_PLUGIN, "Plugin", ""},
+ //{TEX_PLUGIN, "PLUGIN", ICON_PLUGIN, "Plugin", ""}, /* Nothing yet */
{TEX_POINTDENSITY, "POINT_DENSITY", ICON_TEXTURE, "Point Density", ""},
{TEX_STUCCI, "STUCCI", ICON_TEXTURE, "Stucci", ""},
{TEX_VORONOI, "VORONOI", ICON_TEXTURE, "Voronoi", ""},
@@ -388,22 +388,22 @@ static void rna_def_texmapping(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Scale", "");
RNA_def_property_update(prop, 0, "rna_Texture_update");
- prop= RNA_def_property(srna, "minimum", PROP_FLOAT, PROP_XYZ);
+ prop= RNA_def_property(srna, "min", PROP_FLOAT, PROP_XYZ);
RNA_def_property_float_sdna(prop, NULL, "min");
RNA_def_property_ui_text(prop, "Minimum", "Minimum value for clipping");
RNA_def_property_update(prop, 0, "rna_Texture_update");
- prop= RNA_def_property(srna, "maximum", PROP_FLOAT, PROP_XYZ);
+ prop= RNA_def_property(srna, "max", PROP_FLOAT, PROP_XYZ);
RNA_def_property_float_sdna(prop, NULL, "max");
RNA_def_property_ui_text(prop, "Maximum", "Maximum value for clipping");
RNA_def_property_update(prop, 0, "rna_Texture_update");
- prop= RNA_def_property(srna, "has_minimum", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_min", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", TEXMAP_CLIP_MIN);
RNA_def_property_ui_text(prop, "Has Minimum", "Whether to use minimum clipping value");
RNA_def_property_update(prop, 0, "rna_Texture_update");
- prop= RNA_def_property(srna, "has_maximum", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_max", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", TEXMAP_CLIP_MAX);
RNA_def_property_ui_text(prop, "Has Maximum", "Whether to use maximum clipping value");
RNA_def_property_update(prop, 0, "rna_Texture_update");
@@ -481,7 +481,7 @@ static void rna_def_mtex(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Blend Type", "");
RNA_def_property_update(prop, 0, "rna_TextureSlot_update");
- prop= RNA_def_property(srna, "stencil", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_stencil", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "texflag", MTEX_STENCIL);
RNA_def_property_ui_text(prop, "Stencil", "Use this texture as a blending value on the next texture");
RNA_def_property_update(prop, 0, "rna_TextureSlot_update");
@@ -491,7 +491,7 @@ static void rna_def_mtex(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Negate", "Inverts the values of the texture to reverse its effect");
RNA_def_property_update(prop, 0, "rna_TextureSlot_update");
- prop= RNA_def_property(srna, "rgb_to_intensity", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_rgb_to_intensity", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "texflag", MTEX_RGBTOINT);
RNA_def_property_ui_text(prop, "RGB to Intensity", "Converts texture RGB values to intensity (gray) values");
RNA_def_property_update(prop, 0, "rna_TextureSlot_update");
@@ -520,7 +520,7 @@ static void rna_def_filter_common(StructRNA *srna)
RNA_def_property_ui_text(prop, "MIP Map", "Uses auto-generated MIP maps for the image");
RNA_def_property_update(prop, 0, "rna_Texture_update");
- prop= RNA_def_property(srna, "mipmap_gauss", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_mipmap_gauss", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "imaflag", TEX_GAUSS_MIP);
RNA_def_property_ui_text(prop, "MIP Map Gaussian filter", "Uses Gauss filter to sample down MIP maps");
RNA_def_property_update(prop, 0, "rna_Texture_update");
@@ -543,7 +543,7 @@ static void rna_def_filter_common(StructRNA *srna)
RNA_def_property_ui_text(prop, "Filter Eccentricity", "Maximum eccentricity. Higher gives less blur at distant/oblique angles, but is also slower");
RNA_def_property_update(prop, 0, "rna_Texture_update");
- prop= RNA_def_property(srna, "filter_size_minimum", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_filter_size_min", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "imaflag", TEX_FILTER_MIN);
RNA_def_property_ui_text(prop, "Minimum Filter Size", "Use Filter Size as a minimal filter value in pixels");
RNA_def_property_update(prop, 0, "rna_Texture_update");
@@ -615,7 +615,7 @@ static void rna_def_environment_map(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Zoom", "");
RNA_def_property_update(prop, 0, "rna_Texture_update");
- prop= RNA_def_property(srna, "ignore_layers", PROP_BOOLEAN, PROP_LAYER_MEMBER);
+ prop= RNA_def_property(srna, "layers_ignore", PROP_BOOLEAN, PROP_LAYER_MEMBER);
RNA_def_property_boolean_sdna(prop, NULL, "notlay", 1);
RNA_def_property_array(prop, 20);
RNA_def_property_ui_text(prop, "Ignore Layers", "Hide objects on these layers when generating the Environment Map");
@@ -666,7 +666,7 @@ static void rna_def_texture_clouds(BlenderRNA *brna)
RNA_def_struct_ui_text(srna, "Clouds Texture", "Procedural noise texture");
RNA_def_struct_sdna(srna, "Tex");
- prop= RNA_def_property(srna, "noise_size", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "noise_scale", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "noisesize");
RNA_def_property_range(prop, 0.0001, FLT_MAX);
RNA_def_property_ui_range(prop, 0.0001, 2, 10, 2);
@@ -727,7 +727,7 @@ static void rna_def_texture_wood(BlenderRNA *brna)
RNA_def_struct_ui_text(srna, "Wood Texture", "Procedural noise texture");
RNA_def_struct_sdna(srna, "Tex");
- prop= RNA_def_property(srna, "noise_size", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "noise_scale", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "noisesize");
RNA_def_property_range(prop, 0.0001, FLT_MAX);
RNA_def_property_ui_range(prop, 0.0001, 2, 10, 2);
@@ -759,7 +759,7 @@ static void rna_def_texture_wood(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Pattern", "");
RNA_def_property_update(prop, 0, "rna_Texture_nodes_update");
- prop= RNA_def_property(srna, "noisebasis2", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "noisebasis_2", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "noisebasis2");
RNA_def_property_enum_items(prop, prop_wood_noisebasis2);
RNA_def_property_ui_text(prop, "Noise Basis 2", "");
@@ -794,7 +794,7 @@ static void rna_def_texture_marble(BlenderRNA *brna)
RNA_def_struct_ui_text(srna, "Marble Texture", "Procedural noise texture");
RNA_def_struct_sdna(srna, "Tex");
- prop= RNA_def_property(srna, "noise_size", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "noise_scale", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "noisesize");
RNA_def_property_range(prop, 0.0001, FLT_MAX);
RNA_def_property_ui_range(prop, 0.0001, 2, 10, 2);
@@ -833,7 +833,7 @@ static void rna_def_texture_marble(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Noise Basis", "Sets the noise basis used for turbulence");
RNA_def_property_update(prop, 0, "rna_Texture_nodes_update");
- prop= RNA_def_property(srna, "noisebasis2", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "noisebasis_2", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "noisebasis2");
RNA_def_property_enum_items(prop, prop_marble_noisebasis2);
RNA_def_property_ui_text(prop, "Noise Basis 2", "");
@@ -901,7 +901,7 @@ static void rna_def_texture_blend(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Progression", "Sets the style of the color blending");
RNA_def_property_update(prop, 0, "rna_Texture_nodes_update");
- prop= RNA_def_property(srna, "flip_axis", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "use_flip_axis", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_bitflag_sdna(prop, NULL, "flag");
RNA_def_property_enum_items(prop, prop_flip_axis_items);
RNA_def_property_ui_text(prop, "Flip Axis", "Flips the texture's X and Y axis");
@@ -937,7 +937,7 @@ static void rna_def_texture_stucci(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Noise Basis", "Sets the noise basis used for turbulence");
RNA_def_property_update(prop, 0, "rna_Texture_update");
- prop= RNA_def_property(srna, "noise_size", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "noise_scale", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "noisesize");
RNA_def_property_range(prop, 0.0001, FLT_MAX);
RNA_def_property_ui_range(prop, 0.0001, 2, 10, 2);
@@ -996,7 +996,7 @@ static void rna_def_texture_image(BlenderRNA *brna)
RNA_def_property_update(prop, 0, "rna_Texture_update");
/* XXX: I think flip_axis should be a generic Texture property, enabled for all the texture types */
- prop= RNA_def_property(srna, "flip_axis", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_flip_axis", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "imaflag", TEX_IMAROT);
RNA_def_property_ui_text(prop, "Flip Axis", "Flips the texture's X and Y axis");
RNA_def_property_update(prop, 0, "rna_Texture_update");
@@ -1006,7 +1006,7 @@ static void rna_def_texture_image(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Use Alpha", "Uses the alpha channel information in the image");
RNA_def_property_update(prop, 0, "rna_Texture_update");
- prop= RNA_def_property(srna, "calculate_alpha", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_calculate_alpha", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "imaflag", TEX_CALCALPHA);
RNA_def_property_ui_text(prop, "Calculate Alpha", "Calculates an alpha channel based on RGB values in the image");
RNA_def_property_update(prop, 0, "rna_Texture_update");
@@ -1036,22 +1036,22 @@ static void rna_def_texture_image(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Repeat Y", "Sets a repetition multiplier in the Y direction");
RNA_def_property_update(prop, 0, "rna_Texture_update");
- prop= RNA_def_property(srna, "mirror_x", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_mirror_x", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", TEX_REPEAT_XMIR);
RNA_def_property_ui_text(prop, "Mirror X", "Mirrors the image repetition on the X direction");
RNA_def_property_update(prop, 0, "rna_Texture_update");
- prop= RNA_def_property(srna, "mirror_y", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_mirror_y", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", TEX_REPEAT_YMIR);
RNA_def_property_ui_text(prop, "Mirror Y", "Mirrors the image repetition on the Y direction");
RNA_def_property_update(prop, 0, "rna_Texture_update");
- prop= RNA_def_property(srna, "checker_odd", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_checker_odd", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", TEX_CHECKER_ODD);
RNA_def_property_ui_text(prop, "Checker Odd", "Sets odd checker tiles");
RNA_def_property_update(prop, 0, "rna_Texture_update");
- prop= RNA_def_property(srna, "checker_even", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_checker_even", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", TEX_CHECKER_EVEN);
RNA_def_property_ui_text(prop, "Checker Even", "Sets even checker tiles");
RNA_def_property_update(prop, 0, "rna_Texture_update");
@@ -1118,7 +1118,7 @@ static void rna_def_texture_image(BlenderRNA *brna)
RNA_def_property_update(prop, 0, "rna_Texture_update");
/* Normal Map */
- prop= RNA_def_property(srna, "normal_map", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_normal_map", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "imaflag", TEX_NORMALMAP);
RNA_def_property_ui_text(prop, "Normal Map", "Uses image RGB values for normal mapping");
RNA_def_property_update(prop, 0, "rna_Texture_update");
@@ -1197,7 +1197,7 @@ static void rna_def_texture_musgrave(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Type", "");
RNA_def_property_update(prop, 0, "rna_Texture_update");
- prop= RNA_def_property(srna, "highest_dimension", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "dimension_max", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "mg_H");
RNA_def_property_range(prop, 0.0001, 2);
RNA_def_property_ui_text(prop, "Highest Dimension", "Highest fractal dimension");
@@ -1233,7 +1233,7 @@ static void rna_def_texture_musgrave(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Noise Intensity", "");
RNA_def_property_update(prop, 0, "rna_Texture_update");
- prop= RNA_def_property(srna, "noise_size", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "noise_scale", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "noisesize");
RNA_def_property_range(prop, 0.0001, FLT_MAX);
RNA_def_property_ui_range(prop, 0.0001, 2, 10, 2);
@@ -1316,7 +1316,7 @@ static void rna_def_texture_voronoi(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Distance Metric", "");
RNA_def_property_update(prop, 0, "rna_Texture_update");
- prop= RNA_def_property(srna, "coloring", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "color_mode", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "vn_coltype");
RNA_def_property_enum_items(prop, prop_coloring_items);
RNA_def_property_ui_text(prop, "Coloring", "");
@@ -1328,7 +1328,7 @@ static void rna_def_texture_voronoi(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Noise Intensity", "");
RNA_def_property_update(prop, 0, "rna_Texture_update");
- prop= RNA_def_property(srna, "noise_size", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "noise_scale", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "noisesize");
RNA_def_property_range(prop, 0.0001, FLT_MAX);
RNA_def_property_ui_range(prop, 0.0001, 2, 10, 2);
@@ -1357,7 +1357,7 @@ static void rna_def_texture_distorted_noise(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Distortion Amount", "");
RNA_def_property_update(prop, 0, "rna_Texture_update");
- prop= RNA_def_property(srna, "noise_size", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "noise_scale", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "noisesize");
RNA_def_property_range(prop, 0.0001, FLT_MAX);
RNA_def_property_ui_range(prop, 0.0001, 2, 10, 2);
@@ -1451,13 +1451,13 @@ static void rna_def_texture_pointdensity(BlenderRNA *brna)
RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_update(prop, 0, "rna_Texture_update");
- prop= RNA_def_property(srna, "particle_cache", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "particle_cache_space", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "psys_cache_space");
RNA_def_property_enum_items(prop, particle_cache_items);
RNA_def_property_ui_text(prop, "Particle Cache", "Co-ordinate system to cache particles in");
RNA_def_property_update(prop, 0, "rna_Texture_update");
- prop= RNA_def_property(srna, "vertices_cache", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "vertex_cache_space", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "ob_cache_space");
RNA_def_property_enum_items(prop, vertice_cache_items);
RNA_def_property_ui_text(prop, "Vertices Cache", "Co-ordinate system to cache vertices in");
@@ -1475,7 +1475,7 @@ static void rna_def_texture_pointdensity(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Falloff", "Method of attenuating density by distance from the point");
RNA_def_property_update(prop, 0, "rna_Texture_update");
- prop= RNA_def_property(srna, "falloff_softness", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "falloff_soft", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "falloff_softness");
RNA_def_property_range(prop, 0.01, FLT_MAX);
RNA_def_property_ui_text(prop, "Softness", "Softness of the 'soft' falloff option");
@@ -1500,12 +1500,12 @@ static void rna_def_texture_pointdensity(BlenderRNA *brna)
RNA_def_property_update(prop, 0, "rna_Texture_update");
/* Turbulence */
- prop= RNA_def_property(srna, "turbulence", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_turbulence", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", TEX_PD_TURBULENCE);
RNA_def_property_ui_text(prop, "Turbulence", "Add directed noise to the density at render-time");
RNA_def_property_update(prop, 0, "rna_Texture_update");
- prop= RNA_def_property(srna, "turbulence_size", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "turbulence_scale", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "noise_size");
RNA_def_property_range(prop, 0.01, FLT_MAX);
RNA_def_property_ui_text(prop, "Size", "Scale of the added turbulent noise");
@@ -1540,7 +1540,7 @@ static void rna_def_texture_pointdensity(BlenderRNA *brna)
RNA_def_struct_sdna(srna, "Tex");
RNA_def_struct_ui_text(srna, "Point Density", "Settings for the Point Density texture");
- prop= RNA_def_property(srna, "pointdensity", PROP_POINTER, PROP_NONE);
+ prop= RNA_def_property(srna, "point_density", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "pd");
RNA_def_property_struct_type(prop, "PointDensity");
RNA_def_property_ui_text(prop, "Point Density", "The point density settings associated with this texture");
@@ -1614,7 +1614,7 @@ static void rna_def_texture_voxeldata(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "File Format", "Format of the source data set to render ");
RNA_def_property_update(prop, 0, "rna_Texture_voxeldata_update");
- prop= RNA_def_property(srna, "source_path", PROP_STRING, PROP_FILEPATH);
+ prop= RNA_def_property(srna, "filepath", PROP_STRING, PROP_FILEPATH);
RNA_def_property_string_sdna(prop, NULL, "source_path");
RNA_def_property_ui_text(prop, "Source Path", "The external source data file to use");
RNA_def_property_update(prop, 0, "rna_Texture_voxeldata_update");
@@ -1629,7 +1629,7 @@ static void rna_def_texture_voxeldata(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Still Frame Only", "Always render a still frame from the voxel data sequence");
RNA_def_property_update(prop, 0, "rna_Texture_voxeldata_update");
- prop= RNA_def_property(srna, "still_frame_number", PROP_INT, PROP_NONE);
+ prop= RNA_def_property(srna, "still_frame", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "still_frame");
RNA_def_property_range(prop, -MAXFRAME, MAXFRAME);
RNA_def_property_ui_text(prop, "Still Frame Number", "The frame number to always use");
@@ -1646,7 +1646,7 @@ static void rna_def_texture_voxeldata(BlenderRNA *brna)
RNA_def_struct_sdna(srna, "Tex");
RNA_def_struct_ui_text(srna, "Voxel Data", "Settings for the Voxel Data texture");
- prop= RNA_def_property(srna, "voxeldata", PROP_POINTER, PROP_NONE);
+ prop= RNA_def_property(srna, "voxel_data", PROP_POINTER, PROP_NONE);
RNA_def_property_pointer_sdna(prop, NULL, "vd");
RNA_def_property_struct_type(prop, "VoxelData");
RNA_def_property_ui_text(prop, "Voxel Data", "The voxel data associated with this texture");
diff --git a/source/blender/makesrna/intern/rna_ui.c b/source/blender/makesrna/intern/rna_ui.c
index e13483bf87a..a659ff7c260 100644
--- a/source/blender/makesrna/intern/rna_ui.c
+++ b/source/blender/makesrna/intern/rna_ui.c
@@ -207,6 +207,7 @@ static StructRNA *rna_Panel_register(const bContext *C, ReportList *reports, voi
pt->ext.call= call;
pt->ext.free= free;
RNA_struct_blender_type_set(pt->ext.srna, pt);
+ RNA_def_struct_flag(pt->ext.srna, STRUCT_NO_IDPROPERTIES);
pt->poll= (have_function[0])? panel_poll: NULL;
pt->draw= (have_function[1])? panel_draw: NULL;
@@ -418,6 +419,7 @@ static StructRNA *rna_Menu_register(const bContext *C, ReportList *reports, void
mt->ext.call= call;
mt->ext.free= free;
RNA_struct_blender_type_set(mt->ext.srna, mt);
+ RNA_def_struct_flag(mt->ext.srna, STRUCT_NO_IDPROPERTIES);
mt->poll= (have_function[0])? menu_poll: NULL;
mt->draw= (have_function[1])? menu_draw: NULL;
@@ -712,7 +714,7 @@ static void rna_def_menu(BlenderRNA *brna)
/* poll */
func= RNA_def_function(srna, "poll", NULL);
- RNA_def_function_ui_description(func, "If this method returns a non-null output, then the menu can be drawn. This is a static method, hence it is not possible to use 'self' in it.");
+ RNA_def_function_ui_description(func, "If this method returns a non-null output, then the menu can be drawn.");
RNA_def_function_flag(func, FUNC_NO_SELF|FUNC_REGISTER|FUNC_REGISTER_OPTIONAL);
RNA_def_function_return(func, RNA_def_boolean(func, "visible", 1, "", ""));
parm= RNA_def_pointer(func, "context", "Context", "", "");
diff --git a/source/blender/makesrna/intern/rna_ui_api.c b/source/blender/makesrna/intern/rna_ui_api.c
index 032aa731e0f..720666a6180 100644
--- a/source/blender/makesrna/intern/rna_ui_api.c
+++ b/source/blender/makesrna/intern/rna_ui_api.c
@@ -41,7 +41,7 @@ static void rna_uiItemR(uiLayout *layout, PointerRNA *ptr, char *propname, char
int flag= 0;
if(!prop) {
- printf("rna_uiItemR: property not found: %s\n", propname);
+ printf("rna_uiItemR: property not found: %s.%s\n", RNA_struct_identifier(ptr->type), propname);
return;
}
@@ -318,7 +318,6 @@ void RNA_api_ui_layout(StructRNA *srna)
RNA_def_property_flag(parm, PROP_REQUIRED|PROP_RNAPTR|PROP_NEVER_NULL);
parm= RNA_def_pointer(func, "layout", "UILayout", "", "Sub-layout to put items in.");
RNA_def_function_return(func, parm);
- RNA_def_boolean(func, "compact", 0, "", "Show a smaller version of the template, split on two lines.");
func= RNA_def_function(srna, "template_constraint", "uiTemplateConstraint");
RNA_def_function_ui_description(func, "Layout . Generates the UI layout for constraints.");
@@ -326,7 +325,6 @@ void RNA_api_ui_layout(StructRNA *srna)
RNA_def_property_flag(parm, PROP_REQUIRED|PROP_RNAPTR|PROP_NEVER_NULL);
parm= RNA_def_pointer(func, "layout", "UILayout", "", "Sub-layout to put items in.");
RNA_def_function_return(func, parm);
- RNA_def_boolean(func, "compact", 0, "", "Show a smaller version of the template, split on two lines.");
func= RNA_def_function(srna, "template_preview", "uiTemplatePreview");
RNA_def_function_ui_description(func, "Item. A preview window for materials, textures, lamps, etc.");
diff --git a/source/blender/makesrna/intern/rna_userdef.c b/source/blender/makesrna/intern/rna_userdef.c
index 356d55b8120..fb1b48b9344 100644
--- a/source/blender/makesrna/intern/rna_userdef.c
+++ b/source/blender/makesrna/intern/rna_userdef.c
@@ -257,12 +257,14 @@ static void rna_def_userdef_theme_ui_font_style(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Shadow Size", "Shadow size in pixels (0, 3 and 5 supported)");
RNA_def_property_update(prop, 0, "rna_userdef_update");
- prop= RNA_def_property(srna, "shadx", PROP_INT, PROP_NONE);
+ prop= RNA_def_property(srna, "shadow_offset_x", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "shadx");
RNA_def_property_range(prop, -10, 10);
RNA_def_property_ui_text(prop, "Shadow X Offset", "Shadow offset in pixels");
RNA_def_property_update(prop, 0, "rna_userdef_update");
- prop= RNA_def_property(srna, "shady", PROP_INT, PROP_NONE);
+ prop= RNA_def_property(srna, "shadow_offset_y", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "shady");
RNA_def_property_range(prop, -10, 10);
RNA_def_property_ui_text(prop, "Shadow Y Offset", "Shadow offset in pixels");
RNA_def_property_update(prop, 0, "rna_userdef_update");
@@ -293,21 +295,21 @@ static void rna_def_userdef_theme_ui_style(BlenderRNA *brna)
RNA_def_property_range(prop, 0.5, 2.0);
RNA_def_property_ui_text(prop, "Panel Zoom", "Default zoom level for panel areas");
- prop= RNA_def_property(srna, "paneltitle", PROP_POINTER, PROP_NONE);
+ prop= RNA_def_property(srna, "panel_title", PROP_POINTER, PROP_NONE);
RNA_def_property_flag(prop, PROP_NEVER_NULL);
RNA_def_property_pointer_sdna(prop, NULL, "paneltitle");
RNA_def_property_struct_type(prop, "ThemeFontStyle");
RNA_def_property_ui_text(prop, "Panel Font", "");
RNA_def_property_update(prop, 0, "rna_userdef_update");
- prop= RNA_def_property(srna, "grouplabel", PROP_POINTER, PROP_NONE);
+ prop= RNA_def_property(srna, "group_label", PROP_POINTER, PROP_NONE);
RNA_def_property_flag(prop, PROP_NEVER_NULL);
RNA_def_property_pointer_sdna(prop, NULL, "grouplabel");
RNA_def_property_struct_type(prop, "ThemeFontStyle");
RNA_def_property_ui_text(prop, "Group Label Font", "");
RNA_def_property_update(prop, 0, "rna_userdef_update");
- prop= RNA_def_property(srna, "widgetlabel", PROP_POINTER, PROP_NONE);
+ prop= RNA_def_property(srna, "widget_label", PROP_POINTER, PROP_NONE);
RNA_def_property_flag(prop, PROP_NEVER_NULL);
RNA_def_property_pointer_sdna(prop, NULL, "widgetlabel");
RNA_def_property_struct_type(prop, "ThemeFontStyle");
@@ -362,7 +364,7 @@ static void rna_def_userdef_theme_ui_wcol(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Text Selected", "");
RNA_def_property_update(prop, 0, "rna_userdef_update");
- prop= RNA_def_property(srna, "shaded", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_shaded", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "shaded", 1);
RNA_def_property_ui_text(prop, "Shaded", "");
RNA_def_property_update(prop, 0, "rna_userdef_update");
@@ -1211,7 +1213,7 @@ static void rna_def_userdef_theme_space_node(BlenderRNA *brna)
rna_def_userdef_theme_spaces_main(srna, SPACE_NODE);
- prop= RNA_def_property(srna, "wires", PROP_FLOAT, PROP_COLOR);
+ prop= RNA_def_property(srna, "wire", PROP_FLOAT, PROP_COLOR);
RNA_def_property_float_sdna(prop, NULL, "wire");
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Wires", "");
@@ -1639,7 +1641,7 @@ static void rna_def_userdef_theme_colorset(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Active", "Color used for active bones");
RNA_def_property_update(prop, 0, "rna_userdef_update");
- prop= RNA_def_property(srna, "colored_constraints", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_colored_constraints", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", TH_WIRECOLOR_CONSTCOLS);
RNA_def_property_ui_text(prop, "Colored Constraints", "Allow the use of colors indicating constraints/keyed status");
RNA_def_property_update(prop, 0, "rna_userdef_update");
@@ -1843,7 +1845,7 @@ static void rna_def_userdef_solidlight(BlenderRNA *brna)
RNA_def_struct_sdna(srna, "SolidLight");
RNA_def_struct_ui_text(srna, "Solid Light", "Light used for OpenGL lighting in solid draw mode");
- prop= RNA_def_property(srna, "enabled", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", 1);
RNA_def_property_ui_text(prop, "Enabled", "Enable this OpenGL light in solid draw mode");
RNA_def_property_update(prop, 0, "rna_UserDef_viewport_lights_update");
@@ -1888,21 +1890,21 @@ static void rna_def_userdef_view(BlenderRNA *brna)
/* View */
/* display */
- prop= RNA_def_property(srna, "tooltips", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_tooltips", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", USER_TOOLTIPS);
RNA_def_property_ui_text(prop, "Tooltips", "Display tooltips");
- prop= RNA_def_property(srna, "display_object_info", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_object_info", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_DRAWVIEWINFO);
RNA_def_property_ui_text(prop, "Display Object Info", "Display objects name and frame number in 3D view");
RNA_def_property_update(prop, 0, "rna_userdef_update");
- prop= RNA_def_property(srna, "global_scene", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_global_scene", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", USER_SCENEGLOBAL);
RNA_def_property_ui_text(prop, "Global Scene", "Forces the current Scene to be displayed in all Screens");
RNA_def_property_update(prop, 0, "rna_userdef_update");
- prop= RNA_def_property(srna, "use_large_cursors", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_large_cursors", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "curssize", 0);
RNA_def_property_ui_text(prop, "Large Cursors", "Use large mouse cursors when available");
RNA_def_property_update(prop, 0, "rna_userdef_update");
@@ -1922,7 +1924,7 @@ static void rna_def_userdef_view(BlenderRNA *brna)
RNA_def_property_update(prop, 0, "rna_userdef_update");
/* menus */
- prop= RNA_def_property(srna, "open_mouse_over", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_mouse_over_open", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_MENUOPENAUTO);
RNA_def_property_ui_text(prop, "Open On Mouse Over", "Open menu buttons and pulldowns automatically when the mouse is hovering");
@@ -1947,33 +1949,33 @@ static void rna_def_userdef_view(BlenderRNA *brna)
RNA_def_property_range(prop, 1, 40);
RNA_def_property_ui_text(prop, "Hold RMB Open Toolbox Delay", "Time in 1/10 seconds to hold the Right Mouse Button before opening the toolbox");
- prop= RNA_def_property(srna, "use_column_layout", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_column_layout", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_PLAINMENUS);
RNA_def_property_ui_text(prop, "Toolbox Column Layout", "Use a column layout for toolbox");
- prop= RNA_def_property(srna, "directional_menus", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_directional_menus", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "uiflag", USER_MENUFIXEDORDER);
RNA_def_property_ui_text(prop, "Contents Follow Opening Direction", "Otherwise menus, etc will always be top to bottom, left to right, no matter opening direction");
- prop= RNA_def_property(srna, "global_pivot", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_global_pivot", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_LOCKAROUND);
RNA_def_property_ui_text(prop, "Global Pivot", "Lock the same rotation/scaling pivot in all 3D Views");
- prop= RNA_def_property(srna, "auto_depth", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_mouse_auto_depth", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_ORBIT_ZBUF);
RNA_def_property_ui_text(prop, "Auto Depth", "Use the depth under the mouse to improve view pan/rotate/zoom functionality");
/* view zoom */
- prop= RNA_def_property(srna, "zoom_to_mouse", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_zoom_to_mouse", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_ZOOM_TO_MOUSEPOS);
RNA_def_property_ui_text(prop, "Zoom To Mouse Position", "Zoom in towards the mouse pointer's position in the 3D view, rather than the 2D window center");
/* view rotation */
- prop= RNA_def_property(srna, "auto_perspective", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_auto_perspective", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_AUTOPERSP);
RNA_def_property_ui_text(prop, "Auto Perspective", "Automatically switch between orthographic and perspective when changing from top/front/side views");
- prop= RNA_def_property(srna, "rotate_around_selection", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_rotate_around_active", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_ORBIT_SELECTION);
RNA_def_property_ui_text(prop, "Rotate Around Selection", "Use selection as the pivot point");
@@ -2006,7 +2008,7 @@ static void rna_def_userdef_view(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Rotation Angle", "The rotation step for numerical pad keys (2 4 6 8)");
/* 3D transform widget */
- prop= RNA_def_property(srna, "use_manipulator", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_manipulator", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "tw_flag", 1);
RNA_def_property_ui_text(prop, "Manipulator", "Use 3D transform manipulator");
RNA_def_property_update(prop, 0, "rna_userdef_update");
@@ -2035,7 +2037,7 @@ static void rna_def_userdef_view(BlenderRNA *brna)
RNA_def_property_update(prop, 0, "rna_userdef_update");
/* View2D Grid Displays */
- prop= RNA_def_property(srna, "view2d_grid_minimum_spacing", PROP_INT, PROP_NONE);
+ prop= RNA_def_property(srna, "view2d_grid_spacing_min", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "v2d_min_gridsize");
RNA_def_property_range(prop, 1, 500); // XXX: perhaps the lower range should only go down to 5?
RNA_def_property_ui_text(prop, "2D View Minimum Grid Spacing", "Minimum number of pixels between each gridline in 2D Viewports");
@@ -2087,11 +2089,11 @@ static void rna_def_userdef_edit(BlenderRNA *brna)
RNA_def_property_enum_items(prop, object_align_items);
RNA_def_property_ui_text(prop, "Align Object To", "When adding objects from a 3D View menu, either align them to that view's direction or the world coordinates");
- prop= RNA_def_property(srna, "enter_edit_mode", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_enter_edit_mode", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", USER_ADD_EDITMODE);
RNA_def_property_ui_text(prop, "Enter Edit Mode", "Enter Edit Mode automatically after adding a new object");
- prop= RNA_def_property(srna, "drag_immediately", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_drag_immediately", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", USER_RELEASECONFIRM);
RNA_def_property_ui_text(prop, "Release confirm", "Moving things with a mouse drag confirms when releasing the button");
@@ -2106,7 +2108,7 @@ static void rna_def_userdef_edit(BlenderRNA *brna)
RNA_def_property_range(prop, 0, 32767);
RNA_def_property_ui_text(prop, "Undo Memory Size", "Maximum memory usage in megabytes (0 means unlimited)");
- prop= RNA_def_property(srna, "global_undo", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_global_undo", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_GLOBALUNDO);
RNA_def_property_ui_text(prop, "Global Undo", "Global undo works by keeping a full copy of the file itself in memory, so takes extra memory");
@@ -2121,16 +2123,16 @@ static void rna_def_userdef_edit(BlenderRNA *brna)
RNA_def_property_enum_funcs(prop, "rna_userdef_autokeymode_get", "rna_userdef_autokeymode_set", NULL);
RNA_def_property_ui_text(prop, "Auto Keying Mode", "Mode of automatic keyframe insertion for Objects and Bones");
- prop= RNA_def_property(srna, "auto_keyframe_insert_available", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_keyframe_insert_available", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "autokey_flag", AUTOKEY_FLAG_INSERTAVAIL);
RNA_def_property_ui_text(prop, "Auto Keyframe Insert Available", "Automatic keyframe insertion in available curves");
- prop= RNA_def_property(srna, "auto_keyframe_insert_keyingset", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_keyframe_insert_keyingset", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "autokey_flag", AUTOKEY_FLAG_ONLYKEYINGSET);
RNA_def_property_ui_text(prop, "Auto Keyframe Insert Keying Set", "Automatic keyframe insertion using active Keying Set");
/* keyframing settings */
- prop= RNA_def_property(srna, "keyframe_insert_needed", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_keyframe_insert_needed", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "autokey_flag", AUTOKEY_FLAG_INSERTNEEDED);
RNA_def_property_ui_text(prop, "Keyframe Insert Needed", "Keyframe insertion only when keyframe needed");
@@ -2138,7 +2140,7 @@ static void rna_def_userdef_edit(BlenderRNA *brna)
RNA_def_property_boolean_sdna(prop, NULL, "autokey_flag", AUTOKEY_FLAG_AUTOMATKEY);
RNA_def_property_ui_text(prop, "Visual Keying", "Use Visual keying automatically for constrained objects");
- prop= RNA_def_property(srna, "insertkey_xyz_to_rgb", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_insertkey_xyz_to_rgb", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "autokey_flag", AUTOKEY_FLAG_XYZ2RGB);
RNA_def_property_ui_text(prop, "New F-Curve Colors - XYZ to RGB", "Color for newly added transformation F-Curves (Location, Rotation, Scale) and also Color is based on the transform axis");
@@ -2168,11 +2170,11 @@ static void rna_def_userdef_edit(BlenderRNA *brna)
RNA_def_property_range(prop, 0, 100);
RNA_def_property_ui_text(prop, "Grease Pencil Euclidean Distance", "Distance moved by mouse when drawing stroke (in pixels) to include");
- prop= RNA_def_property(srna, "grease_pencil_smooth_stroke", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_grease_pencil_smooth_stroke", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "gp_settings", GP_PAINT_DOSMOOTH);
RNA_def_property_ui_text(prop, "Grease Pencil Smooth Stroke", "Smooth the final stroke");
- prop= RNA_def_property(srna, "grease_pencil_simplify_stroke", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_grease_pencil_simplify_stroke", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "gp_settings", GP_PAINT_DOSIMPLIFY);
RNA_def_property_ui_text(prop, "Grease Pencil Simplify Stroke", "Simplify the final stroke");
@@ -2183,58 +2185,58 @@ static void rna_def_userdef_edit(BlenderRNA *brna)
/* sculpt and paint */
- prop= RNA_def_property(srna, "sculpt_paint_overlay_col", PROP_FLOAT, PROP_COLOR);
+ prop= RNA_def_property(srna, "sculpt_paint_overlay_color", PROP_FLOAT, PROP_COLOR);
RNA_def_property_float_sdna(prop, NULL, "sculpt_paint_overlay_col");
RNA_def_property_array(prop, 3);
RNA_def_property_ui_text(prop, "Sculpt/Paint Overlay Color", "Color of texture overlay");
/* duplication linking */
- prop= RNA_def_property(srna, "duplicate_mesh", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_duplicate_mesh", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "dupflag", USER_DUP_MESH);
RNA_def_property_ui_text(prop, "Duplicate Mesh", "Causes mesh data to be duplicated with the object");
- prop= RNA_def_property(srna, "duplicate_surface", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_duplicate_surface", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "dupflag", USER_DUP_SURF);
RNA_def_property_ui_text(prop, "Duplicate Surface", "Causes surface data to be duplicated with the object");
- prop= RNA_def_property(srna, "duplicate_curve", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_duplicate_curve", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "dupflag", USER_DUP_CURVE);
RNA_def_property_ui_text(prop, "Duplicate Curve", "Causes curve data to be duplicated with the object");
- prop= RNA_def_property(srna, "duplicate_text", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_duplicate_text", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "dupflag", USER_DUP_FONT);
RNA_def_property_ui_text(prop, "Duplicate Text", "Causes text data to be duplicated with the object");
- prop= RNA_def_property(srna, "duplicate_metaball", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_duplicate_metaball", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "dupflag", USER_DUP_MBALL);
RNA_def_property_ui_text(prop, "Duplicate Metaball", "Causes metaball data to be duplicated with the object");
- prop= RNA_def_property(srna, "duplicate_armature", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_duplicate_armature", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "dupflag", USER_DUP_ARM);
RNA_def_property_ui_text(prop, "Duplicate Armature", "Causes armature data to be duplicated with the object");
- prop= RNA_def_property(srna, "duplicate_lamp", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_duplicate_lamp", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "dupflag", USER_DUP_LAMP);
RNA_def_property_ui_text(prop, "Duplicate Lamp", "Causes lamp data to be duplicated with the object");
- prop= RNA_def_property(srna, "duplicate_material", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_duplicate_material", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "dupflag", USER_DUP_MAT);
RNA_def_property_ui_text(prop, "Duplicate Material", "Causes material data to be duplicated with the object");
- prop= RNA_def_property(srna, "duplicate_texture", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_duplicate_texture", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "dupflag", USER_DUP_TEX);
RNA_def_property_ui_text(prop, "Duplicate Texture", "Causes texture data to be duplicated with the object");
// xxx
- prop= RNA_def_property(srna, "duplicate_fcurve", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_duplicate_fcurve", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "dupflag", USER_DUP_IPO);
RNA_def_property_ui_text(prop, "Duplicate F-Curve", "Causes F-curve data to be duplicated with the object");
// xxx
- prop= RNA_def_property(srna, "duplicate_action", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_duplicate_action", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "dupflag", USER_DUP_ACT);
RNA_def_property_ui_text(prop, "Duplicate Action", "Causes actions to be duplicated with the object");
- prop= RNA_def_property(srna, "duplicate_particle", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_duplicate_particle", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "dupflag", USER_DUP_PSYS);
RNA_def_property_ui_text(prop, "Duplicate Particle", "Causes particle systems to be duplicated with the object");
}
@@ -2358,7 +2360,7 @@ static void rna_def_userdef_system(BlenderRNA *brna)
/* Language */
- prop= RNA_def_property(srna, "international_fonts", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_international_fonts", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "transopts", USER_DOTRANSLATE);
RNA_def_property_ui_text(prop, "International Fonts", "Use international fonts");
RNA_def_property_update(prop, 0, "rna_userdef_update");
@@ -2381,17 +2383,17 @@ static void rna_def_userdef_system(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Language", "Language use for translation");
RNA_def_property_update(prop, 0, "rna_userdef_update");
- prop= RNA_def_property(srna, "translate_tooltips", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_translate_tooltips", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "transopts", USER_TR_TOOLTIPS);
RNA_def_property_ui_text(prop, "Translate Tooltips", "Translate Tooltips");
RNA_def_property_update(prop, 0, "rna_userdef_update");
- prop= RNA_def_property(srna, "translate_buttons", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_translate_buttons", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "transopts", USER_TR_BUTTONS);
RNA_def_property_ui_text(prop, "Translate Buttons", "Translate button labels");
RNA_def_property_update(prop, 0, "rna_userdef_update");
- prop= RNA_def_property(srna, "translate_toolbox", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_translate_toolbox", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "transopts", USER_TR_MENUS);
RNA_def_property_ui_text(prop, "Translate Toolbox", "Translate toolbox menu");
RNA_def_property_update(prop, 0, "rna_userdef_update");
@@ -2425,16 +2427,16 @@ static void rna_def_userdef_system(BlenderRNA *brna)
RNA_def_property_enum_sdna(prop, NULL, "color_picker_type");
RNA_def_property_ui_text(prop, "Color Picker Type", "Different styles of displaying the color picker widget");
- prop= RNA_def_property(srna, "enable_all_codecs", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_preview_images", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_ALLWINCODECS);
RNA_def_property_ui_text(prop, "Enable All Codecs", "Enables automatic saving of preview images in the .blend file (Windows only)");
- prop= RNA_def_property(srna, "auto_execute_scripts", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_scripts_auto_execute", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", USER_SCRIPT_AUTOEXEC_DISABLE);
RNA_def_property_ui_text(prop, "Auto Run Python Scripts", "Allow any .blend file to run scripts automatically (unsafe with blend files from an untrusted source)");
RNA_def_property_update(prop, 0, "rna_userdef_script_autoexec_update");
- prop= RNA_def_property(srna, "tabs_as_spaces", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_tabs_as_spaces", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", USER_TXT_TABSTOSPACES_DISABLE);
RNA_def_property_ui_text(prop, "Tabs as Spaces", "Automatically converts all new tabs into spaces for new and loaded text files");
@@ -2454,7 +2456,7 @@ static void rna_def_userdef_system(BlenderRNA *brna)
RNA_def_property_range(prop, 0, 32727);
RNA_def_property_ui_text(prop, "Frame Server Port", "Frameserver Port for Frameserver Rendering");
- prop= RNA_def_property(srna, "clip_alpha", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "gl_clip_alpha", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "glalphaclip");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Clip Alpha", "Clip alpha below this threshold in the 3D textured view");
@@ -2465,7 +2467,7 @@ static void rna_def_userdef_system(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Mipmaps", "Scale textures for the 3D View (looks nicer but uses more memory and slows image reloading)");
RNA_def_property_update(prop, 0, "rna_userdef_mipmap_update");
- prop= RNA_def_property(srna, "use_vbos", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_vertex_buffer_objects", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "gameflags", USER_DISABLE_VBO);
RNA_def_property_ui_text(prop, "VBOs", "Use Vertex Buffer Objects (or Vertex Arrays, if unsupported) for viewport rendering");
@@ -2583,26 +2585,26 @@ static void rna_def_userdef_input(BlenderRNA *brna)
RNA_def_property_enum_funcs(prop, NULL, "rna_userdef_select_mouse_set", NULL);
RNA_def_property_ui_text(prop, "Select Mouse", "The mouse button used for selection");
- prop= RNA_def_property(srna, "zoom_style", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "view_zoom_method", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "viewzoom");
RNA_def_property_enum_items(prop, view_zoom_styles);
RNA_def_property_ui_text(prop, "Zoom Style", "Which style to use for viewport scaling");
- prop= RNA_def_property(srna, "zoom_axis", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "view_zoom_axis", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_bitflag_sdna(prop, NULL, "uiflag");
RNA_def_property_enum_items(prop, view_zoom_axes);
RNA_def_property_ui_text(prop, "Zoom Axis", "Axis of mouse movement to zoom in or out on");
- prop= RNA_def_property(srna, "invert_zoom_direction", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "invert_mouse_wheel_zoom", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_ZOOM_INVERT);
RNA_def_property_ui_text(prop, "Invert Zoom Direction", "Invert the axis of mouse movement for zooming");
- prop= RNA_def_property(srna, "view_rotation", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "view_rotate_method", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_bitflag_sdna(prop, NULL, "flag");
RNA_def_property_enum_items(prop, view_rotation_items);
RNA_def_property_ui_text(prop, "View Rotation", "Rotation style in the viewport");
- prop= RNA_def_property(srna, "continuous_mouse", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_mouse_continuous", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_CONTINUOUS_MOUSE);
RNA_def_property_ui_text(prop, "Continuous Grab", "Allow moving the mouse outside the view on some manipulations (transform, ui control drag)");
@@ -2616,25 +2618,25 @@ static void rna_def_userdef_input(BlenderRNA *brna)
RNA_def_property_range(prop, 0, 200);
RNA_def_property_ui_text(prop, "NDof Rotation Speed", "The overall rotation speed of an NDOF device, as percent of standard");
- prop= RNA_def_property(srna, "double_click_time", PROP_INT, PROP_NONE);
+ prop= RNA_def_property(srna, "mouse_double_click_time", PROP_INT, PROP_NONE);
RNA_def_property_int_sdna(prop, NULL, "dbl_click_time");
RNA_def_property_range(prop, 1, 1000);
RNA_def_property_ui_text(prop, "Double Click Timeout", "The time (in ms) for a double click");
- prop= RNA_def_property(srna, "emulate_3_button_mouse", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_mouse_emulate_3_button", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", USER_TWOBUTTONMOUSE);
RNA_def_property_ui_text(prop, "Emulate 3 Button Mouse", "Emulates Middle Mouse with Alt+LeftMouse (doesn't work with Left Mouse Select option)");
- prop= RNA_def_property(srna, "emulate_numpad", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_emulate_numpad", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", USER_NONUMPAD);
RNA_def_property_ui_text(prop, "Emulate Numpad", "Causes the 1 to 0 keys to act as the numpad (useful for laptops)");
/* middle mouse button */
- prop= RNA_def_property(srna, "use_middle_mouse_paste", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_mouse_mmb_paste", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_MMB_PASTE);
RNA_def_property_ui_text(prop, "Middle Mouse Paste", "In text window, paste with middle mouse button instead of panning");
- prop= RNA_def_property(srna, "wheel_invert_zoom", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "invert_zoom_wheel", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_WHEELZOOMDIR);
RNA_def_property_ui_text(prop, "Wheel Invert Zoom", "Swap the Mouse Wheel zoom direction");
@@ -2670,11 +2672,11 @@ static void rna_def_userdef_filepaths(BlenderRNA *brna)
RNA_def_struct_nested(brna, srna, "UserPreferences");
RNA_def_struct_ui_text(srna, "File Paths", "Default paths for external files");
- prop= RNA_def_property(srna, "hide_dot_files_datablocks", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_hidden_files_datablocks", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_HIDE_DOT);
RNA_def_property_ui_text(prop, "Hide Dot Files/Datablocks", "Hide files/datablocks that start with a dot(.*)");
- prop= RNA_def_property(srna, "filter_file_extensions", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_filter_files", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "uiflag", USER_FILTERFILEEXTS);
RNA_def_property_ui_text(prop, "Filter File Extensions", "Display only files with extensions in the image select window");
@@ -2682,19 +2684,19 @@ static void rna_def_userdef_filepaths(BlenderRNA *brna)
RNA_def_property_boolean_sdna(prop, NULL, "flag", USER_RELPATHS);
RNA_def_property_ui_text(prop, "Relative Paths", "Default relative path option for the file selector");
- prop= RNA_def_property(srna, "compress_file", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_file_compression", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", USER_FILECOMPRESS);
RNA_def_property_ui_text(prop, "Compress File", "Enable file compression when saving .blend files");
- prop= RNA_def_property(srna, "load_ui", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_load_ui", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_negative_sdna(prop, NULL, "flag", USER_FILENOUI);
RNA_def_property_ui_text(prop, "Load UI", "Load user interface setup when loading .blend files");
- prop= RNA_def_property(srna, "fonts_directory", PROP_STRING, PROP_DIRPATH);
+ prop= RNA_def_property(srna, "font_directory", PROP_STRING, PROP_DIRPATH);
RNA_def_property_string_sdna(prop, NULL, "fontdir");
RNA_def_property_ui_text(prop, "Fonts Directory", "The default directory to search for loading fonts");
- prop= RNA_def_property(srna, "textures_directory", PROP_STRING, PROP_DIRPATH);
+ prop= RNA_def_property(srna, "texture_directory", PROP_STRING, PROP_DIRPATH);
RNA_def_property_string_sdna(prop, NULL, "textudir");
RNA_def_property_ui_text(prop, "Textures Directory", "The default directory to search for textures");
@@ -2710,11 +2712,11 @@ static void rna_def_userdef_filepaths(BlenderRNA *brna)
RNA_def_property_string_sdna(prop, NULL, "renderdir");
RNA_def_property_ui_text(prop, "Render Output Directory", "The default directory for rendering output");
- prop= RNA_def_property(srna, "python_scripts_directory", PROP_STRING, PROP_DIRPATH);
+ prop= RNA_def_property(srna, "script_directory", PROP_STRING, PROP_DIRPATH);
RNA_def_property_string_sdna(prop, NULL, "pythondir");
RNA_def_property_ui_text(prop, "Python Scripts Directory", "The default directory to search for Python scripts (resets python module search path: sys.path)");
- prop= RNA_def_property(srna, "sounds_directory", PROP_STRING, PROP_DIRPATH);
+ prop= RNA_def_property(srna, "sound_directory", PROP_STRING, PROP_DIRPATH);
RNA_def_property_string_sdna(prop, NULL, "sounddir");
RNA_def_property_ui_text(prop, "Sounds Directory", "The default directory to search for sounds");
@@ -2744,7 +2746,7 @@ static void rna_def_userdef_filepaths(BlenderRNA *brna)
RNA_def_property_range(prop, 0, 32);
RNA_def_property_ui_text(prop, "Save Versions", "The number of old versions to maintain in the current directory, when manually saving");
- prop= RNA_def_property(srna, "auto_save_temporary_files", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_auto_save_temporary_files", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", USER_AUTOSAVE);
RNA_def_property_ui_text(prop, "Auto Save Temporary Files", "Automatic saving of temporary files");
RNA_def_property_update(prop, 0, "rna_userdef_autosave_update");
@@ -2759,7 +2761,7 @@ static void rna_def_userdef_filepaths(BlenderRNA *brna)
RNA_def_property_range(prop, 0, 30);
RNA_def_property_ui_text(prop, "Recent Files", "Maximum number of recently opened files to remember");
- prop= RNA_def_property(srna, "save_preview_images", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_save_preview_images", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", USER_SAVE_PREVIEWS);
RNA_def_property_ui_text(prop, "Save Preview Images", "Enables automatic saving of preview images in the .blend file");
}
@@ -2821,7 +2823,7 @@ void RNA_def_userdef(BlenderRNA *brna)
RNA_def_property_struct_type(prop, "Theme");
RNA_def_property_ui_text(prop, "Themes", "");
- prop= RNA_def_property(srna, "uistyles", PROP_COLLECTION, PROP_NONE);
+ prop= RNA_def_property(srna, "ui_styles", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_sdna(prop, NULL, "uistyles", NULL);
RNA_def_property_struct_type(prop, "ThemeStyle");
RNA_def_property_ui_text(prop, "Styles", "");
diff --git a/source/blender/makesrna/intern/rna_vfont.c b/source/blender/makesrna/intern/rna_vfont.c
index c19fbd7d5d3..41387e806b9 100644
--- a/source/blender/makesrna/intern/rna_vfont.c
+++ b/source/blender/makesrna/intern/rna_vfont.c
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
- * Contributor(s): Blender Foundation (2008), Juho Vepsäläinen
+ * Contributor(s): Blender Foundation (2008), Juho Vepsäläinen
*
* ***** END GPL LICENSE BLOCK *****
*/
diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c
index eeac6813f78..67b8ca057c8 100644
--- a/source/blender/makesrna/intern/rna_wm.c
+++ b/source/blender/makesrna/intern/rna_wm.c
@@ -324,7 +324,7 @@ static StructRNA *rna_OperatorProperties_refine(PointerRNA *ptr)
return ptr->type;
}
-static IDProperty *rna_OperatorProperties_idproperties(PointerRNA *ptr, int create)
+static IDProperty *rna_OperatorProperties_idprops(PointerRNA *ptr, int create)
{
if(create && !ptr->data) {
IDPropertyTemplate val = {0};
@@ -361,7 +361,7 @@ static PointerRNA rna_Operator_properties_get(PointerRNA *ptr)
static PointerRNA rna_OperatorTypeMacro_properties_get(PointerRNA *ptr)
{
wmOperatorTypeMacro *otmacro= (wmOperatorTypeMacro*)ptr->data;
- wmOperatorType *ot = WM_operatortype_exists(otmacro->idname);
+ wmOperatorType *ot = WM_operatortype_find(otmacro->idname, TRUE);
return rna_pointer_inherit_refine(ptr, ot->srna, otmacro->properties);
}
@@ -796,7 +796,7 @@ static StructRNA *rna_Operator_register(const bContext *C, ReportList *reports,
/* check if we have registered this operator type before, and remove it */
{
- wmOperatorType *ot= WM_operatortype_exists(dummyot.idname);
+ wmOperatorType *ot= WM_operatortype_find(dummyot.idname, TRUE);
if(ot && ot->ext.srna)
rna_Operator_unregister(C, ot->ext.srna);
}
@@ -865,7 +865,7 @@ static StructRNA *rna_MacroOperator_register(const bContext *C, ReportList *repo
/* check if we have registered this operator type before, and remove it */
{
- wmOperatorType *ot= WM_operatortype_exists(dummyot.idname);
+ wmOperatorType *ot= WM_operatortype_find(dummyot.idname, TRUE);
if(ot && ot->ext.srna)
rna_Operator_unregister(C, ot->ext.srna);
}
@@ -1023,7 +1023,7 @@ static void rna_def_operator(BlenderRNA *brna)
srna= RNA_def_struct(brna, "OperatorProperties", NULL);
RNA_def_struct_ui_text(srna, "Operator Properties", "Input properties of an Operator");
RNA_def_struct_refine_func(srna, "rna_OperatorProperties_refine");
- RNA_def_struct_idproperties_func(srna, "rna_OperatorProperties_idproperties");
+ RNA_def_struct_idprops_func(srna, "rna_OperatorProperties_idprops");
}
static void rna_def_macro_operator(BlenderRNA *brna)
@@ -1352,7 +1352,7 @@ static void rna_def_keyconfig(BlenderRNA *brna)
RNA_def_property_struct_type(prop, "KeyMap");
RNA_def_property_ui_text(prop, "Key Maps", "Key maps configured as part of this configuration");
- prop= RNA_def_property(srna, "user_defined", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "is_user_defined", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", KEYCONF_USER);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "User Defined", "Indicates that a keyconfig was defined by the user");
@@ -1387,21 +1387,21 @@ static void rna_def_keyconfig(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Items", "Items in the keymap, linking an operator to an input event");
rna_def_keymap_items(brna, prop);
- prop= RNA_def_property(srna, "user_defined", PROP_BOOLEAN, PROP_NEVER_NULL);
+ prop= RNA_def_property(srna, "is_user_defined", PROP_BOOLEAN, PROP_NEVER_NULL);
RNA_def_property_boolean_sdna(prop, NULL, "flag", KEYMAP_USER);
RNA_def_property_ui_text(prop, "User Defined", "Keymap is defined by the user");
- prop= RNA_def_property(srna, "modal", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "is_modal", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", KEYMAP_MODAL);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
RNA_def_property_ui_text(prop, "Modal Keymap", "Indicates that a keymap is used for translate modal events for an operator");
- prop= RNA_def_property(srna, "items_expanded", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_expanded_items", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", KEYMAP_EXPANDED);
RNA_def_property_ui_text(prop, "Items Expanded", "Expanded in the user interface");
RNA_def_property_ui_icon(prop, ICON_TRIA_RIGHT, 1);
- prop= RNA_def_property(srna, "children_expanded", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_expanded_children", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", KEYMAP_CHILDREN_EXPANDED);
RNA_def_property_ui_text(prop, "Children Expanded", "Children expanded in the user interface");
RNA_def_property_ui_icon(prop, ICON_TRIA_RIGHT, 1);
@@ -1486,7 +1486,7 @@ static void rna_def_keyconfig(BlenderRNA *brna)
RNA_def_property_enum_items(prop, event_type_items);
RNA_def_property_ui_text(prop, "Key Modifier", "Regular key pressed as a modifier");
- prop= RNA_def_property(srna, "expanded", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "show_expanded", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", KMI_EXPANDED);
RNA_def_property_ui_text(prop, "Expanded", "Show key map event and property details in the user interface");
RNA_def_property_ui_icon(prop, ICON_TRIA_RIGHT, 1);
diff --git a/source/blender/makesrna/intern/rna_world.c b/source/blender/makesrna/intern/rna_world.c
index f4517c8a5ee..421044f68d6 100644
--- a/source/blender/makesrna/intern/rna_world.c
+++ b/source/blender/makesrna/intern/rna_world.c
@@ -119,22 +119,22 @@ static void rna_def_world_mtex(BlenderRNA *brna)
RNA_def_struct_ui_text(srna, "World Texture Slot", "Texture slot for textures in a World datablock");
/* map to */
- prop= RNA_def_property(srna, "map_blend", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_map_blend", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mapto", WOMAP_BLEND);
RNA_def_property_ui_text(prop, "Blend", "Affect the color progression of the background");
RNA_def_property_update(prop, 0, "rna_World_update");
- prop= RNA_def_property(srna, "map_horizon", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_map_horizon", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mapto", WOMAP_HORIZ);
RNA_def_property_ui_text(prop, "Horizon", "Affect the color of the horizon");
RNA_def_property_update(prop, 0, "rna_World_update");
- prop= RNA_def_property(srna, "map_zenith_up", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_map_zenith_up", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mapto", WOMAP_ZENUP);
RNA_def_property_ui_text(prop, "Zenith Up", "Affect the color of the zenith above");
RNA_def_property_update(prop, 0, "rna_World_update");
- prop= RNA_def_property(srna, "map_zenith_down", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_map_zenith_down", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mapto", WOMAP_ZENDOWN);
RNA_def_property_ui_text(prop, "Zenith Down", "Affect the color of the zenith below");
RNA_def_property_update(prop, 0, "rna_World_update");
@@ -144,7 +144,7 @@ static void rna_def_world_mtex(BlenderRNA *brna)
RNA_def_property_boolean_sdna(prop, NULL, "mapto", WOMAP_MIST);
RNA_def_property_ui_text(prop, "Mist", "Causes the texture to affect the intensity of the mist");*/
- prop= RNA_def_property(srna, "texture_coordinates", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "texture_coords", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "texco");
RNA_def_property_enum_items(prop, texco_items);
RNA_def_property_ui_text(prop, "Texture Coordinates", "Texture coordinates used to map the texture onto the background");
@@ -227,14 +227,14 @@ static void rna_def_lighting(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Factor", "Factor for ambient occlusion blending");
RNA_def_property_update(prop, 0, "rna_World_update");
- prop= RNA_def_property(srna, "ao_blend_mode", PROP_ENUM, PROP_NONE);
+ prop= RNA_def_property(srna, "ao_blend_type", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "aomix");
RNA_def_property_enum_items(prop, blend_mode_items);
RNA_def_property_ui_text(prop, "Blend Mode", "Defines how AO mixes with material shading");
RNA_def_property_update(prop, 0, "rna_World_update");
/* environment lighting */
- prop= RNA_def_property(srna, "use_environment_lighting", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_environment_light", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", WO_ENV_LIGHT);
RNA_def_property_ui_text(prop, "Use Environment Lighting", "Add light coming from the environment");
RNA_def_property_update(prop, 0, "rna_World_update");
@@ -252,7 +252,7 @@ static void rna_def_lighting(BlenderRNA *brna)
RNA_def_property_update(prop, 0, "rna_World_update");
/* indirect lighting */
- prop= RNA_def_property(srna, "use_indirect_lighting", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_indirect_light", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "mode", WO_INDIRECT_LIGHT);
RNA_def_property_ui_text(prop, "Use Indirect Lighting", "Add indirect light bouncing of surrounding objects");
RNA_def_property_update(prop, 0, "rna_World_update");
@@ -311,7 +311,7 @@ static void rna_def_lighting(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Adapt To Speed", "Use the speed vector pass to reduce AO samples in fast moving pixels. Higher values result in more aggressive sample reduction. Requires Vec pass enabled (for Raytrace Adaptive QMC)");
RNA_def_property_update(prop, 0, "rna_World_update");
- prop= RNA_def_property(srna, "error_tolerance", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "error_threshold", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "ao_approx_error");
RNA_def_property_range(prop, 0.0001, 10);
RNA_def_property_ui_text(prop, "Error Tolerance", "Low values are slower and higher quality (for Approximate)");
@@ -329,7 +329,7 @@ static void rna_def_lighting(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Falloff", "");
RNA_def_property_update(prop, 0, "rna_World_update");
- prop= RNA_def_property(srna, "pixel_cache", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_cache", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "aomode", WO_AOCACHE);
RNA_def_property_ui_text(prop, "Pixel Cache", "Cache AO results in pixels and interpolate over neighbouring pixels for speedup (for Approximate)");
RNA_def_property_update(prop, 0, "rna_World_update");
@@ -422,7 +422,7 @@ static void rna_def_world_stars(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Size", "Average screen dimension of stars");
RNA_def_property_update(prop, 0, "rna_World_update");
- prop= RNA_def_property(srna, "min_distance", PROP_FLOAT, PROP_DISTANCE);
+ prop= RNA_def_property(srna, "distance_min", PROP_FLOAT, PROP_DISTANCE);
RNA_def_property_float_sdna(prop, NULL, "starmindist");
RNA_def_property_range(prop, 0, 1000);
RNA_def_property_ui_text(prop, "Minimum Distance", "Minimum distance to the camera for stars");
@@ -434,7 +434,7 @@ static void rna_def_world_stars(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Average Separation", "Average distance between any two stars");
RNA_def_property_update(prop, 0, "rna_World_draw_update");
- prop= RNA_def_property(srna, "color_randomization", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "color_random", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "starcolnoise");
RNA_def_property_range(prop, 0, 1);
RNA_def_property_ui_text(prop, "Color Randomization", "Randomize star colors");
@@ -509,17 +509,17 @@ void RNA_def_world(BlenderRNA *brna)
RNA_def_property_update(prop, 0, "rna_World_update");
/* sky type */
- prop= RNA_def_property(srna, "blend_sky", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_sky_blend", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "skytype", WO_SKYBLEND);
RNA_def_property_ui_text(prop, "Blend Sky", "Render background with natural progression from horizon to zenith");
RNA_def_property_update(prop, 0, "rna_World_update");
- prop= RNA_def_property(srna, "paper_sky", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_sky_paper", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "skytype", WO_SKYPAPER);
RNA_def_property_ui_text(prop, "Paper Sky", "Flatten blend or texture coordinates");
RNA_def_property_update(prop, 0, "rna_World_update");
- prop= RNA_def_property(srna, "real_sky", PROP_BOOLEAN, PROP_NONE);
+ prop= RNA_def_property(srna, "use_sky_real", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "skytype", WO_SKYREAL);
RNA_def_property_ui_text(prop, "Real Sky", "Render background with a real horizon, relative to the camera angle");
RNA_def_property_update(prop, 0, "rna_World_update");
diff --git a/source/blender/makesrna/rna_cleanup/rna_cleaner.py b/source/blender/makesrna/rna_cleanup/rna_cleaner.py
index f623b1c673d..ae17ade36d7 100755
--- a/source/blender/makesrna/rna_cleanup/rna_cleaner.py
+++ b/source/blender/makesrna/rna_cleanup/rna_cleaner.py
@@ -8,7 +8,7 @@ Typical line in the input file (elements in [] are optional).
[comment *] ToolSettings.snap_align_rotation -> use_snap_align_rotation: boolean [Align rotation with the snapping target]
Geterate output format from blender run this:
- ./blender.bin --background --python ./release/scripts/modules/rna_info.py > source/blender/makesrna/rna_cleanup/out.txt
+ ./blender.bin --background --python ./release/scripts/modules/rna_info.py 2> source/blender/makesrna/rna_cleanup/out.txt
"""
@@ -109,14 +109,25 @@ def get_props_from_txt(input_filename):
props_list=[]
props_length_max=[0,0,0,0,0,0,0,0]
- for line in file_lines:
+
+ done_text = "+"
+ done = 0
+ tot = 0
+
+ for iii, line in enumerate(file_lines):
# debug
#print(line)
-
+ line_strip = line.strip()
# empty line or comment
- if not line.strip() or line.startswith('#'):
+ if not line_strip:
continue
+
+ if line_strip == "EOF":
+ break
+
+ if line.startswith("#"):
+ line = line[1:]
# class
[bclass, tail] = [x.strip() for x in line.split('.', 1)]
@@ -141,8 +152,8 @@ def get_props_from_txt(input_filename):
# type, description
try:
[btype, description] = tail.split(None, 1)
- if '"' in description:
- description.replace('"', "'")
+ # make life easy and strip quotes
+ description = description.replace("'", "").replace('"', "").replace("\\", "").strip()
except ValueError:
[btype, description] = [tail,'NO DESCRIPTION']
@@ -153,10 +164,16 @@ def get_props_from_txt(input_filename):
changed = check_if_changed(bfrom, bto)
# lists formatting
- props=[comment, changed, bclass, bfrom, bto, kwcheck, btype, repr(description)]
+ props=[comment, changed, bclass, bfrom, bto, kwcheck, btype, description]
props_list.append(props)
props_length_max=list(map(max,zip(props_length_max,list(map(len,props)))))
+ if done_text in comment:
+ done += 1
+ tot += 1
+
+ print("Total done %.2f" % (done / tot * 100.0) )
+
return (props_list,props_length_max)
@@ -174,6 +191,7 @@ def get_props_from_py(input_filename):
kwcheck = check_prefix(bto, btype) # keyword-check
changed = check_if_changed(bfrom, bto) # changed?
description = repr(description)
+ description = description.replace("'", "").replace('"', "").replace("\\", "").strip()
rna_api[index] = [comment, changed, bclass, bfrom, bto, kwcheck, btype, description]
props_length = list(map(len,props)) # lengths
props_length_max = list(map(max,zip(props_length_max,props_length))) # max lengths
@@ -195,8 +213,8 @@ def sort(props_list, sort_priority):
"""
# order based on the i-th element in lists
- if sort_priority == "class.from":
- props_list = sorted(props_list, key=lambda p: (p[2], p[3]))
+ if sort_priority == "class.to":
+ props_list = sorted(props_list, key=lambda p: (p[2], p[4]))
else:
i = sort_choices.index(sort_priority)
if i == 0:
@@ -242,16 +260,21 @@ def write_files(basename, props_list, props_length_max):
props_list = [['NOTE', 'CHANGED', 'CLASS', 'FROM', 'TO', 'KEYWORD-CHECK', 'TYPE', 'DESCRIPTION']] + props_list
for props in props_list:
#txt
+
+ # quick way we can tell if it changed
+ if props[3] == props[4]: txt += "#"
+ else: txt += " "
+
if props[0] != '': txt += '%s * ' % props[0] # comment
- txt += '%s.%s -> %s: %s %s\n' % tuple(props[2:5] + props[6:]) # skipping keyword-check
+ txt += '%s.%s -> %s: %s "%s"\n' % tuple(props[2:5] + props[6:]) # skipping keyword-check
# rna_api
if props[0] == 'NOTE': indent = '# '
else: indent = ' '
- rna += indent + '("%s", "%s", "%s", "%s", %s),\n' % tuple(props[2:5] + props[6:]) # description is already string formatted
+ rna += indent + '("%s", "%s", "%s", "%s", "%s"),\n' % tuple(props[2:5] + props[6:]) # description is already string formatted
# py
blanks = [' '* (x[0]-x[1]) for x in zip(props_length_max,list(map(len,props)))]
props = [('"%s"%s' if props[-1] != x[0] else "%s%s") % (x[0],x[1]) for x in zip(props,blanks)]
- py += indent + '(%s, %s, %s, %s, %s, %s, %s, %s),\n' % tuple(props)
+ py += indent + '(%s, %s, %s, %s, %s, %s, %s, "%s"),\n' % tuple(props)
f_txt.write(txt)
f_py.write("rna_api = [\n%s]\n" % py)
@@ -275,7 +298,7 @@ def main():
global sort_choices, default_sort_choice
global kw_prefixes, kw
- sort_choices = ['note','changed','class','from','to','kw', 'class.from']
+ sort_choices = ['note','changed','class','from','to','kw', 'class.to']
default_sort_choice = sort_choices[-1]
kw_prefixes = [ 'active','apply','bl','exclude','has','invert','is','lock', \
'pressed','show','show_only','use','use_only','layers','states', 'select']
diff --git a/source/blender/makesrna/rna_cleanup/rna_cleaner_merge.py b/source/blender/makesrna/rna_cleanup/rna_cleaner_merge.py
index 90b8f021d01..8d2fe07b774 100755
--- a/source/blender/makesrna/rna_cleanup/rna_cleaner_merge.py
+++ b/source/blender/makesrna/rna_cleanup/rna_cleaner_merge.py
@@ -27,17 +27,16 @@ def main():
for key, val_orig in mod_to_dict.items():
try:
- val = mod_from_dict.pop(key)
+ val_new = mod_from_dict.pop(key)
except:
# print("not found", key)
- val = val_orig
+ val_new = val_orig
# always take the class from the base
- val = list(val)
- val[2] = val_orig[2]
- print(val_orig[2])
+ val = list(val_orig)
+ val[0] = val_new[0] # comment
+ val[4] = val_new[4] # -> to
val = tuple(val)
-
rna_api_new.append(val)
def write_work_file(file_path, rna_api):
diff --git a/source/blender/makesrna/rna_cleanup/rna_properties.txt b/source/blender/makesrna/rna_cleanup/rna_properties.txt
index 1d68aa0b669..18f6af11876 100644
--- a/source/blender/makesrna/rna_cleanup/rna_properties.txt
+++ b/source/blender/makesrna/rna_cleanup/rna_properties.txt
@@ -1,4605 +1,4612 @@
-NOTE * CLASS.FROM -> TO: TYPE DESCRIPTION
-+ * ActionGroup.channels -> channels: collection, "'(read-only) F-Curves in this group'"
-+ * ActionGroup.custom_color -> custom_color: int "'Index of custom color set'"
-+ * ActionGroup.expanded -> show_expanded: boolean "'Action Group is expanded'"
-+ * ActionGroup.lock -> lock: boolean "'Action Group is locked'"
-+ * ActionGroup.name -> name: string "'NO DESCRIPTION'"
-+ * ActionGroup.select -> select: boolean "'Action Group is selected'"
-+ * Actuator.expanded -> show_expanded: boolean "'Set actuator expanded in the user interface'"
-+ * Actuator.name -> name: string "'NO DESCRIPTION'"
-+ * Actuator.pinned -> pinned: boolean "'Display when not linked to a visible states controller'"
-+ * Actuator.type -> type: enum "'NO DESCRIPTION'"
-+ * Actuator|ActionActuator.action -> action: pointer "'NO DESCRIPTION'"
-+ * Actuator|ActionActuator.blendin -> frame_blend_in: int "'Number of frames of motion blending'"
-+ * Actuator|ActionActuator.continue_last_frame -> use_continue_last_frame: boolean "'Restore last frame when switching on/off, otherwise play from the start each time'"
-+ * Actuator|ActionActuator.frame_end -> frame_end: int "'NO DESCRIPTION'"
-+ * Actuator|ActionActuator.frame_property -> frame_property: string '"Assign the action\'s current frame number to this property"'
-+ * Actuator|ActionActuator.frame_start -> frame_start: int "'NO DESCRIPTION'"
-+ * Actuator|ActionActuator.mode -> play_mode: enum "'Action playback type'"
-+ * Actuator|ActionActuator.priority -> priority: int "'Execution priority - lower numbers will override actions with higher numbers. With 2 or more actions at once, the overriding channels must be lower in the stack'"
-+ * Actuator|ActionActuator.property -> property: string "'Use this property to define the Action position'"
-+ * Actuator|ArmatureActuator.bone -> bone: string "'Bone on which the constraint is defined'"
-+ * Actuator|ArmatureActuator.constraint -> constraint: string "'Name of the constraint you want to control'"
-+ * Actuator|ArmatureActuator.mode -> mode: enum "'NO DESCRIPTION'"
-+ * Actuator|ArmatureActuator.secondary_target -> secondary_target: pointer "'Set weight of this constraint'"
-+ * Actuator|ArmatureActuator.target -> target: pointer "'Set this object as the target of the constraint'"
-+ * Actuator|ArmatureActuator.weight -> weight: float "'Set weight of this constraint'"
-+ * Actuator|CameraActuator.axis -> axis: enum "'Specify the axis the Camera will try to get behind'"
-+ * Actuator|CameraActuator.height -> height: float "'NO DESCRIPTION'"
-+ * Actuator|CameraActuator.max -> max: float "'NO DESCRIPTION'"
-+ * Actuator|CameraActuator.min -> min: float "'NO DESCRIPTION'"
-+ * Actuator|CameraActuator.object -> object: pointer "'Look at this Object'"
-Actuator|ConstraintActuator.damping -> damping: int "'Damping factor: time constant (in frame) of low pass filter'"
-Actuator|ConstraintActuator.damping_rotation -> damping_rotation: int "'Use a different damping for orientation'"
-Actuator|ConstraintActuator.detect_material -> use_material_detect: boolean "'Detect material instead of property'"
-Actuator|ConstraintActuator.direction -> direction: enum "'Set the direction of the ray'"
-Actuator|ConstraintActuator.direction_axis -> direction_axis: enum "'Select the axis to be aligned along the reference direction'"
-Actuator|ConstraintActuator.distance -> distance: float "'Set the maximum length of ray'"
-Actuator|ConstraintActuator.fh_damping -> fh_damping: float "'Damping factor of the Fh spring force'"
-Actuator|ConstraintActuator.fh_height -> fh_height: float "'Height of the Fh area'"
-Actuator|ConstraintActuator.fh_normal -> use_fh_normal: boolean "'Add a horizontal spring force on slopes'"
-Actuator|ConstraintActuator.fh_paralel_axis -> use_fh_paralel_axis: boolean "'Keep object axis parallel to normal'"
-Actuator|ConstraintActuator.force_distance -> use_force_distance: boolean "'Force distance of object to point of impact of ray'"
-Actuator|ConstraintActuator.limit -> limit: enum "'NO DESCRIPTION'"
-Actuator|ConstraintActuator.limit_max -> limit_max: float "'NO DESCRIPTION'"
-Actuator|ConstraintActuator.limit_min -> limit_min: float "'NO DESCRIPTION'"
-Actuator|ConstraintActuator.local -> use_local: boolean '"Set ray along object\'s axis or global axis"'
-Actuator|ConstraintActuator.material -> material: string "'Ray detects only Objects with this material'"
-Actuator|ConstraintActuator.max_angle -> angle_max: float "'Maximum angle (in degree) allowed with target direction. No correction is done if angle with target direction is between min and max'"
-Actuator|ConstraintActuator.max_rotation -> rotation_max: float "'Reference Direction'"
-Actuator|ConstraintActuator.min_angle -> angle_min: float "'Minimum angle (in degree) to maintain with target direction. No correction is done if angle with target direction is between min and max'"
-Actuator|ConstraintActuator.mode -> mode: enum "'The type of the constraint'"
-Actuator|ConstraintActuator.normal -> use_normal: boolean "'Set object axis along (local axis) or parallel (global axis) to the normal at hit position'"
-Actuator|ConstraintActuator.persistent -> use_persistent: boolean "'Persistent actuator: stays active even if ray does not reach target'"
-Actuator|ConstraintActuator.property -> property: string "'Ray detect only Objects with this property'"
-Actuator|ConstraintActuator.range -> range: float "'Set the maximum length of ray'"
-Actuator|ConstraintActuator.spring -> spring: float "'Spring force within the Fh area'"
-Actuator|ConstraintActuator.time -> time: int "'Maximum activation time in frame, 0 for unlimited'"
-Actuator|EditObjectActuator.angular_velocity -> angular_velocity: float "'Angular velocity upon creation'"
-Actuator|EditObjectActuator.dynamic_operation -> dynamic_operation: enum "'NO DESCRIPTION'"
-Actuator|EditObjectActuator.enable_3d_tracking -> use_3d_tracking: boolean "'Enable 3D tracking'"
-Actuator|EditObjectActuator.linear_velocity -> linear_velocity: float "'Velocity upon creation'"
-Actuator|EditObjectActuator.local_angular_velocity -> use_local_angular_velocity: boolean "'Apply the rotation locally'"
-Actuator|EditObjectActuator.local_linear_velocity -> use_local_linear_velocity: boolean "'Apply the transformation locally'"
-Actuator|EditObjectActuator.mass -> mass: float "'The mass of the object'"
-Actuator|EditObjectActuator.mesh -> mesh: pointer '"Replace the existing, when left blank \'Phys\' will remake the existing physics mesh"'
-Actuator|EditObjectActuator.mode -> mode: enum "'The mode of the actuator'"
-Actuator|EditObjectActuator.object -> object: pointer "'Add this Object and all its children (cant be on an visible layer)'"
-Actuator|EditObjectActuator.replace_display_mesh -> use_replace_display_mesh: boolean "'Replace the display mesh'"
-Actuator|EditObjectActuator.replace_physics_mesh -> use_replace_physics_mesh: boolean "'Replace the physics mesh (triangle bounds only - compound shapes not supported)'"
-Actuator|EditObjectActuator.time -> time: int "'Duration the new Object lives or the track takes'"
-Actuator|EditObjectActuator.track_object -> track_object: pointer "'Track to this Object'"
-Actuator|FcurveActuator.add -> use_add: boolean "'F-Curve is added to the current loc/rot/scale in global or local coordinate according to Local flag'"
-Actuator|FcurveActuator.child -> apply_to_children: boolean "'Update F-Curve on all children Objects as well'"
-Actuator|FcurveActuator.force -> use_force: boolean "'Apply F-Curve as a global or local force depending on the local option (dynamic objects only)'"
-Actuator|FcurveActuator.frame_end -> frame_end: int "'NO DESCRIPTION'"
-Actuator|FcurveActuator.frame_property -> frame_property: string '"Assign the action\'s current frame number to this property"'
-Actuator|FcurveActuator.frame_start -> frame_start: int "'NO DESCRIPTION'"
-Actuator|FcurveActuator.local -> use_local: boolean "'Let the F-Curve act in local coordinates, used in Force and Add mode'"
-Actuator|FcurveActuator.play_type -> play_type: enum "'Specify the way you want to play the animation'"
-Actuator|FcurveActuator.property -> property: string "'Use this property to define the F-Curve position'"
-Actuator|Filter2DActuator.enable_motion_blur -> use_motion_blur: boolean "'Enable/Disable Motion Blur'"
-Actuator|Filter2DActuator.filter_pass -> filter_pass: int "'Set filter order'"
-Actuator|Filter2DActuator.glsl_shader -> glsl_shader: pointer "'NO DESCRIPTION'"
-Actuator|Filter2DActuator.mode -> mode: enum "'NO DESCRIPTION'"
-Actuator|Filter2DActuator.motion_blur_factor -> motion_blur_factor: float "'Set motion blur factor'"
-Actuator|GameActuator.filename -> filename: string 'Load this blend file, use the "//" prefix for a path relative to the current blend file'
-Actuator|GameActuator.mode -> mode: enum "'NO DESCRIPTION'"
-Actuator|MessageActuator.body_message -> body_message: string "'Optional message body Text'"
-Actuator|MessageActuator.body_property -> body_property: string "'The message body will be set by the Property Value'"
-Actuator|MessageActuator.body_type -> body_type: enum "'Toggle message type: either Text or a PropertyName'"
-Actuator|MessageActuator.subject -> subject: string "'Optional message subject. This is what can be filtered on'"
-Actuator|MessageActuator.to_property -> to_property: string "'Optional send message to objects with this name only, or empty to broadcast'"
-Actuator|ObjectActuator.add_linear_velocity -> use_add_linear_velocity: boolean "'Toggles between ADD and SET linV'"
-Actuator|ObjectActuator.angular_velocity -> angular_velocity: float "'Sets the angular velocity'"
-Actuator|ObjectActuator.damping -> damping: int "'Number of frames to reach the target velocity'"
-Actuator|ObjectActuator.derivate_coefficient -> derivate_coefficient: float "'Not required, high values can cause instability'"
-Actuator|ObjectActuator.force -> force: float "'Sets the force'"
-Actuator|ObjectActuator.force_max_x -> force_max_x: float "'Set the upper limit for force'"
-Actuator|ObjectActuator.force_max_y -> force_max_y: float "'Set the upper limit for force'"
-Actuator|ObjectActuator.force_max_z -> force_max_z: float "'Set the upper limit for force'"
-Actuator|ObjectActuator.force_min_x -> force_min_x: float "'Set the lower limit for force'"
-Actuator|ObjectActuator.force_min_y -> force_min_y: float "'Set the lower limit for force'"
-Actuator|ObjectActuator.force_min_z -> force_min_z: float "'Set the lower limit for force'"
-Actuator|ObjectActuator.integral_coefficient -> integral_coefficient: float "'Low value (0.01) for slow response, high value (0.5) for fast response'"
-Actuator|ObjectActuator.linear_velocity -> linear_velocity: float "'Sets the linear velocity (in Servo mode it sets the target relative linear velocity, it will be achieved by automatic application of force. Null velocity is a valid target)'"
-Actuator|ObjectActuator.loc -> loc: float "'Sets the location'"
-Actuator|ObjectActuator.local_angular_velocity -> use_local_angular_velocity: boolean "'Angular velocity is defined in local coordinates'"
-Actuator|ObjectActuator.local_force -> use_local_force: boolean "'Force is defined in local coordinates'"
-Actuator|ObjectActuator.local_linear_velocity -> use_local_linear_velocity: boolean "'Velocity is defined in local coordinates'"
-Actuator|ObjectActuator.local_location -> use_local_location: boolean "'Location is defined in local coordinates'"
-Actuator|ObjectActuator.local_rotation -> use_local_rotation: boolean "'Rotation is defined in local coordinates'"
-Actuator|ObjectActuator.local_torque -> use_local_torque: boolean "'Torque is defined in local coordinates'"
-Actuator|ObjectActuator.mode -> mode: enum "'Specify the motion system'"
-Actuator|ObjectActuator.proportional_coefficient -> proportional_coefficient: float "'Typical value is 60x integral coefficient'"
-Actuator|ObjectActuator.reference_object -> reference_object: pointer "'Reference object for velocity calculation, leave empty for world reference'"
-Actuator|ObjectActuator.rot -> rot: float "'Sets the rotation'"
-Actuator|ObjectActuator.servo_limit_x -> use_servo_limit_x: boolean "'Set limit to force along the X axis'"
-Actuator|ObjectActuator.servo_limit_y -> use_servo_limit_y: boolean "'Set limit to force along the Y axis'"
-Actuator|ObjectActuator.servo_limit_z -> use_servo_limit_z: boolean "'Set limit to force along the Z axis'"
-Actuator|ObjectActuator.torque -> torque: float "'Sets the torque'"
-Actuator|ParentActuator.compound -> use_compound: boolean "'Add this object shape to the parent shape (only if the parent shape is already compound)'"
-Actuator|ParentActuator.ghost -> use_ghost: boolean "'Make this object ghost while parented (only if not compound)'"
-Actuator|ParentActuator.mode -> mode: enum "'NO DESCRIPTION'"
-Actuator|ParentActuator.object -> object: pointer "'Set this object as parent'"
-Actuator|PropertyActuator.mode -> mode: enum "'NO DESCRIPTION'"
-Actuator|PropertyActuator.object -> object: pointer "'Copy from this Object'"
-Actuator|PropertyActuator.object_property -> object_property: string "'Copy this property'"
-Actuator|PropertyActuator.property -> property: string "'The name of the property'"
-Actuator|PropertyActuator.value -> value: string 'The value to use, use "" around strings'
-Actuator|RandomActuator.always_true -> use_always_true: boolean "'Always false or always true'"
-Actuator|RandomActuator.chance -> chance: float "'Pick a number between 0 and 1. Success if you stay below this value'"
-Actuator|RandomActuator.distribution -> distribution: enum "'Choose the type of distribution'"
-Actuator|RandomActuator.float_max -> float_max: float "'Choose a number from a range. Upper boundary of the range'"
-Actuator|RandomActuator.float_mean -> float_mean: float "'A normal distribution. Mean of the distribution'"
-Actuator|RandomActuator.float_min -> float_min: float "'Choose a number from a range. Lower boundary of the range'"
-Actuator|RandomActuator.float_value -> float_value: float "'Always return this number'"
-Actuator|RandomActuator.half_life_time -> half_life_time: float "'Negative exponential dropoff'"
-Actuator|RandomActuator.int_max -> int_max: int "'Choose a number from a range. Upper boundary of the range'"
-Actuator|RandomActuator.int_mean -> int_mean: float "'Expected mean value of the distribution'"
-Actuator|RandomActuator.int_min -> int_min: int "'Choose a number from a range. Lower boundary of the range'"
-Actuator|RandomActuator.int_value -> int_value: int "'Always return this number'"
-Actuator|RandomActuator.property -> property: string "'Assign the random value to this property'"
-Actuator|RandomActuator.seed -> seed: int "'Initial seed of the random generator. Use Python for more freedom (choose 0 for not random)'"
-Actuator|RandomActuator.standard_derivation -> standard_derivation: float "'A normal distribution. Standard deviation of the distribution'"
-Actuator|SceneActuator.camera -> camera: pointer "'Set this Camera. Leave empty to refer to self object'"
-Actuator|SceneActuator.mode -> mode: enum "'NO DESCRIPTION'"
-Actuator|SceneActuator.scene -> scene: pointer "'Set the Scene to be added/removed/paused/resumed'"
-Actuator|ShapeActionActuator.action -> action: pointer "'NO DESCRIPTION'"
-Actuator|ShapeActionActuator.blendin -> blendin: int "'Number of frames of motion blending'"
-Actuator|ShapeActionActuator.continue_last_frame -> use_continue_last_frame: boolean "'Restore last frame when switching on/off, otherwise play from the start each time'"
-Actuator|ShapeActionActuator.frame_end -> frame_end: int "'NO DESCRIPTION'"
-Actuator|ShapeActionActuator.frame_property -> frame_property: string '"Assign the action\'s current frame number to this property"'
-Actuator|ShapeActionActuator.frame_start -> frame_start: int "'NO DESCRIPTION'"
-Actuator|ShapeActionActuator.mode -> mode: enum "'Action playback type'"
-Actuator|ShapeActionActuator.priority -> priority: int "'Execution priority - lower numbers will override actions with higher numbers. With 2 or more actions at once, the overriding channels must be lower in the stack'"
-Actuator|ShapeActionActuator.property -> property: string "'Use this property to define the Action position'"
-Actuator|SoundActuator.cone_inner_angle_3d -> cone_inner_angle_3d: float "'The angle of the inner cone'"
-Actuator|SoundActuator.cone_outer_angle_3d -> cone_outer_angle_3d: float "'The angle of the outer cone'"
-Actuator|SoundActuator.cone_outer_gain_3d -> cone_outer_gain_3d: float "'The gain outside the outer cone. The gain in the outer cone will be interpolated between this value and the normal gain in the inner cone'"
-Actuator|SoundActuator.enable_sound_3d -> use_3d_sound: boolean "'Enable/Disable 3D Sound'"
-Actuator|SoundActuator.max_distance_3d -> distance_3d_max: float "'The maximum distance at which you can hear the sound'"
-Actuator|SoundActuator.maximum_gain_3d -> gain_3d_max: float "'The maximum gain of the sound, no matter how near it is'"
-Actuator|SoundActuator.minimum_gain_3d -> gain_3d_min: float "'The minimum gain of the sound, no matter how far it is away'"
-Actuator|SoundActuator.mode -> mode: enum "'NO DESCRIPTION'"
-Actuator|SoundActuator.pitch -> pitch: float "'Sets the pitch of the sound'"
-Actuator|SoundActuator.reference_distance_3d -> reference_distance_3d: float "'The distance where the sound has a gain of 1.0'"
-Actuator|SoundActuator.rolloff_factor_3d -> rolloff_factor_3d: float "'The influence factor on volume depending on distance'"
-Actuator|SoundActuator.sound -> sound: pointer "'NO DESCRIPTION'"
-Actuator|SoundActuator.volume -> volume: float "'Sets the initial volume of the sound'"
-Actuator|StateActuator.operation -> operation: enum "'Select the bit operation on object state mask'"
-Actuator|StateActuator.state -> states: boolean "'NO DESCRIPTION'"
-Actuator|VisibilityActuator.children -> apply_to_children: boolean "'Set all the children of this object to the same visibility/occlusion recursively'"
-Actuator|VisibilityActuator.occlusion -> use_occlusion: boolean "'Set the object to occlude objects behind it. Initialized from the object type in physics button'"
-Actuator|VisibilityActuator.visible -> use_visible: boolean "'Set the objects visible. Initialized from the objects render restriction toggle (access in the outliner)'"
-+ * Addon.module -> module: string "'Module name'"
-+ * AnimData.action -> action: pointer "'Active Action for this datablock'"
-+ * AnimData.action_blending -> action_blend_type: enum '"Method used for combining Active Action\'s result with result of NLA stack"'
-+ * AnimData.action_extrapolation -> action_extrapolation: enum '"Action to take for gaps past the Active Action\'s range (when evaluating with NLA)"'
-+ * AnimData.action_influence -> action_influence: float "'Amount the Active Action contributes to the result of the NLA stack'"
-+ * AnimData.drivers -> drivers: collection, "'(read-only) The Drivers/Expressions for this datablock'"
-+ * AnimData.nla_enabled -> use_nla: boolean "'NLA stack is evaluated when evaluating this block'"
-+ * AnimData.nla_tracks -> nla_tracks: collection, "'(read-only) NLA Tracks (i.e. Animation Layers)'"
-+ * AnimViz.motion_paths -> motion_path: pointer, "'(read-only) Motion Path settings for visualisation'"
-+ * AnimViz.onion_skinning -> onion_skin_frames: pointer, "'(read-only) Onion Skinning (ghosting) settings for visualisation'"
-+ * AnimVizMotionPaths.after_current -> frame_after: int '"Number of frames to show after the current frame (only for \'Around Current Frame\' Onion-skinning method)"'
-+ * AnimVizMotionPaths.bake_location -> bake_location: enum "'When calculating Bone Paths, use Head or Tips'"
-+ * AnimVizMotionPaths.before_current -> frame_before: int '"Number of frames to show before the current frame (only for \'Around Current Frame\' Onion-skinning method)"'
-+ * AnimVizMotionPaths.frame_end -> frame_end: int '"End frame of range of paths to display/calculate (not for \'Around Current Frame\' Onion-skinning method)"'
-+ * AnimVizMotionPaths.frame_start -> frame_start: int '"Starting frame of range of paths to display/calculate (not for \'Around Current Frame\' Onion-skinning method)"'
-+ * AnimVizMotionPaths.frame_step -> frame_step: int '"Number of frames between paths shown (not for \'On Keyframes\' Onion-skinning method)"'
-+ * AnimVizMotionPaths.highlight_keyframes -> show_keyframe_highlight: boolean "'Emphasize position of keyframes on Motion Paths'"
-+ * AnimVizMotionPaths.search_all_action_keyframes -> show_keyframe_action_all: boolean "'For bone motion paths, search whole Action for keyframes instead of in group with matching name only (is slower)'"
-+ * AnimVizMotionPaths.show_frame_numbers -> show_frame_numbers: boolean "'Show frame numbers on Motion Paths'"
-+ * AnimVizMotionPaths.show_keyframe_numbers -> show_keyframe_numbers: boolean "'Show frame numbers of Keyframes on Motion Paths'"
-+ * AnimVizMotionPaths.type -> type: enum "'Type of range to show for Motion Paths'"
-+ * AnimVizOnionSkinning.after_current -> frame_after: int '"Number of frames to show after the current frame (only for \'Around Current Frame\' Onion-skinning method)"'
-+ * AnimVizOnionSkinning.before_current -> frame_before: int '"Number of frames to show before the current frame (only for \'Around Current Frame\' Onion-skinning method)"'
-+ * AnimVizOnionSkinning.frame_end -> frame_end: int '"End frame of range of Ghosts to display (not for \'Around Current Frame\' Onion-skinning method)"'
-+ * AnimVizOnionSkinning.frame_start -> frame_start: int '"Starting frame of range of Ghosts to display (not for \'Around Current Frame\' Onion-skinning method)"'
-+ * AnimVizOnionSkinning.frame_step -> frame_step: int '"Number of frames between ghosts shown (not for \'On Keyframes\' Onion-skinning method)"'
-+ * AnimVizOnionSkinning.only_selected -> show_only_selected: boolean "'For Pose-Mode drawing, only draw ghosts for selected bones'"
-+ * AnimVizOnionSkinning.type -> type: enum "'Method used for determining what ghosts get drawn'"
-MAKE PROPERTY OF A COLLECTION * Area.active_space -> active_space: pointer, '(read-only) Space currently being displayed in this area'
-+ * Area.regions -> regions: collection, "'(read-only) Regions this area is subdivided in'"
-+ * Area.show_menus -> show_menus: boolean "'Show menus in the header'"
-+ * Area.spaces -> spaces: collection, "'(read-only) Spaces contained in this area, the first space is active'"
-+ * Area.type -> type: enum "'Space type'"
-+ * ArmatureBones.active -> active: pointer "'Armatures active bone'"
-+ * ArmatureEditBones.active -> active: pointer "'Armatures active edit bone'"
-+ * BackgroundImage.image -> image: pointer "'Image displayed and edited in this space'"
-+ * BackgroundImage.image_user -> image_user: pointer, "'(read-only) Parameters defining which layer, pass and frame of the image is displayed'"
-+ * BackgroundImage.offset_x -> offset_x: float "'Offsets image horizontally from the world origin'"
-+ * BackgroundImage.offset_y -> offset_y: float "'Offsets image vertically from the world origin'"
-+ * BackgroundImage.show_expanded -> show_expanded: boolean "'Show the expanded in the user interface'"
-+ * BackgroundImage.size -> size: float "'Scaling factor for the background image'"
-+ * BackgroundImage.transparency -> transparency: float "'Amount to blend the image against the background color'"
-+ * BackgroundImage.view_axis -> view_axis: enum "'The axis to display the image on'"
-+ * BezierSplinePoint.co -> co: float "'Coordinates of the control point'"
-+ * BezierSplinePoint.handle1 -> handle_left: float "'Coordinates of the first handle'"
-+ * BezierSplinePoint.handle1_type -> handle_left_type: enum "'Handle types'"
-+ * BezierSplinePoint.handle2 -> handle_right: float "'Coordinates of the second handle'"
-+ * BezierSplinePoint.handle2_type -> handle_right_type: enum "'Handle types'"
-+ * BezierSplinePoint.hide -> hide: boolean "'Visibility status'"
-+ * BezierSplinePoint.radius -> radius: float, "'(read-only) Radius for bevelling'"
-+ * BezierSplinePoint.select_control_point -> select_control_point: boolean "'Control point selection status'"
-+ * BezierSplinePoint.select_left_handle -> select_left_handle: boolean "'Handle 1 selection status'"
-+ * BezierSplinePoint.select_right_handle -> select_right_handle: boolean "'Handle 2 selection status'"
-+ * BezierSplinePoint.tilt -> tilt: float "'Tilt in 3D View'"
-+ * BezierSplinePoint.weight -> weight: float "'Softbody goal weight'"
-+ * BlenderRNA.structs -> structs: collection, "'(read-only)'"
-+ * BoidRule.in_air -> use_in_air: boolean "'Use rule when boid is flying'"
-+ * BoidRule.name -> name: string "'Boid rule name'"
-+ * BoidRule.on_land -> use_on_land: boolean "'Use rule when boid is on land'"
-+ * BoidRule.type -> type: enum, "'(read-only)'"
-+ * BoidRule|BoidRuleAverageSpeed.level -> level: float '"How much velocity\'s z-component is kept constant"'
-+ * BoidRule|BoidRuleAverageSpeed.speed -> speed: float "'Percentage of maximum speed'"
-+ * BoidRule|BoidRuleAverageSpeed.wander -> wander: float '"How fast velocity\'s direction is randomized"'
-+ * BoidRule|BoidRuleAvoid.fear_factor -> fear_factor: float "'Avoid object if danger from it is above this threshold'"
-+ * BoidRule|BoidRuleAvoid.object -> object: pointer "'Object to avoid'"
-+ * BoidRule|BoidRuleAvoid.predict -> use_predict: boolean "'Predict target movement'"
-+ * BoidRule|BoidRuleAvoidCollision.boids -> use_avoid: boolean "'Avoid collision with other boids'"
-+ * BoidRule|BoidRuleAvoidCollision.deflectors -> use_avoid_collision: boolean "'Avoid collision with deflector objects'"
-+ * BoidRule|BoidRuleAvoidCollision.look_ahead -> look_ahead: float "'Time to look ahead in seconds'"
-+ * BoidRule|BoidRuleFight.distance -> distance: float "'Attack boids at max this distance'"
-+ * BoidRule|BoidRuleFight.flee_distance -> flee_distance: float "'Flee to this distance'"
-+ * BoidRule|BoidRuleFollowLeader.distance -> distance: float "'Distance behind leader to follow'"
-+ * BoidRule|BoidRuleFollowLeader.line -> use_line: boolean "'Follow leader in a line'"
-+ * BoidRule|BoidRuleFollowLeader.object -> object: pointer "'Follow this object instead of a boid'"
-+ * BoidRule|BoidRuleFollowLeader.queue_size -> queue_count: int "'How many boids in a line'"
-+ * BoidRule|BoidRuleGoal.object -> object: pointer "'Goal object'"
-+ * BoidRule|BoidRuleGoal.predict -> use_predict: boolean "'Predict target movement'"
-+ * BoidSettings.accuracy -> accuracy: float "'Accuracy of attack'"
-+ * BoidSettings.active_boid_state -> active_boid_state: pointer, "'(read-only)'"
-+ * BoidSettings.active_boid_state_index -> active_boid_state_index: int "'NO DESCRIPTION'"
-+ * BoidSettings.aggression -> aggression: float "'Boid will fight this times stronger enemy'"
-+ * BoidSettings.air_max_acc -> air_acc_max: float "'Maximum acceleration in air (relative to maximum speed)'"
-+ * BoidSettings.air_max_ave -> air_ave_max: float "'Maximum angular velocity in air (relative to 180 degrees)'"
-+ * BoidSettings.air_max_speed -> air_speed_max: float "'Maximum speed in air'"
-+ * BoidSettings.air_min_speed -> air_speed_min: float "'Minimum speed in air (relative to maximum speed)'"
-+ * BoidSettings.air_personal_space -> air_personal_space: float "'Radius of boids personal space in air (% of particle size)'"
-+ * BoidSettings.allow_climb -> use_climb: boolean "'Allow boids to climb goal objects'"
-+ * BoidSettings.allow_flight -> use_flight: boolean "'Allow boids to move in air'"
-+ * BoidSettings.allow_land -> use_land: boolean "'Allow boids to move on land'"
-+ * BoidSettings.banking -> bank: float "'Amount of rotation around velocity vector on turns'"
-+ * BoidSettings.health -> health: float "'Initial boid health when born'"
-+ * BoidSettings.height -> height: float "'Boid height relative to particle size'"
-+ * BoidSettings.land_jump_speed -> land_jump_speed: float "'Maximum speed for jumping'"
-+ * BoidSettings.land_max_acc -> land_acc_max: float "'Maximum acceleration on land (relative to maximum speed)'"
-+ * BoidSettings.land_max_ave -> land_ave_max: float "'Maximum angular velocity on land (relative to 180 degrees)'"
-+ * BoidSettings.land_max_speed -> land_speed_max: float "'Maximum speed on land'"
-+ * BoidSettings.land_personal_space -> land_personal_space: float "'Radius of boids personal space on land (% of particle size)'"
-+ * BoidSettings.land_stick_force -> land_stick_force: float "'How strong a force must be to start effecting a boid on land'"
-+ * BoidSettings.landing_smoothness -> land_smooth: float "'How smoothly the boids land'"
-+ * BoidSettings.range -> range: float "'The maximum distance from which a boid can attack'"
-+ * BoidSettings.states -> states: collection, "'(read-only)'"
-+ * BoidSettings.strength -> strength: float "'Maximum caused damage on attack per second'"
-+ * BoidState.active_boid_rule -> active_boid_rule: pointer, "'(read-only)'"
-+ * BoidState.active_boid_rule_index -> active_boid_rule_index: int "'NO DESCRIPTION'"
-+ * BoidState.falloff -> falloff: float "'NO DESCRIPTION'"
-+ * BoidState.name -> name: string "'Boid state name'"
-+ * BoidState.rule_fuzziness -> rule_fuzzy: float "'NO DESCRIPTION'"
-+ * BoidState.rules -> rules: collection, "'(read-only)'"
-+ * BoidState.ruleset_type -> ruleset_type: enum "'How the rules in the list are evaluated'"
-+ * BoidState.volume -> volume: float "'NO DESCRIPTION'"
-+ * Bone.bbone_in -> bbone_in: float "'Length of first Bezier Handle (for B-Bones only)'"
-+ * Bone.bbone_out -> bbone_out: float "'Length of second Bezier Handle (for B-Bones only)'"
-+ * Bone.bbone_segments -> bbone_segments: int "'Number of subdivisions of bone (for B-Bones only)'"
-+ * Bone.children -> children: collection, "'(read-only) Bones which are children of this bone'"
-+ * Bone.connected -> use_connect: boolean, '"(read-only) When bone has a parent, bone\'s head is struck to the parent\'s tail"'
-+ * Bone.cyclic_offset -> use_cyclic_offset: boolean '"When bone doesn\'t have a parent, it receives cyclic offset effects"'
-+ * Bone.deform -> use_deform: boolean "'Bone does not deform any geometry'"
-+ * Bone.draw_wire -> show_wire: boolean "'Bone is always drawn as Wireframe regardless of viewport draw mode. Useful for non-obstructive custom bone shapes'"
-+ * Bone.envelope_distance -> envelope_distance: float "'Bone deformation distance (for Envelope deform only)'"
-+ * Bone.envelope_weight -> envelope_weight: float "'Bone deformation weight (for Envelope deform only)'"
-+ * Bone.head -> head: float "'Location of head end of the bone relative to its parent'"
-+ * Bone.head_local -> head_local: float "'Location of head end of the bone relative to armature'"
-+ * Bone.head_radius -> head_radius: float "'Radius of head of bone (for Envelope deform only)'"
-+ * Bone.hide -> hide: boolean "'Bone is not visible when it is not in Edit Mode (i.e. in Object or Pose Modes)'"
-+ * Bone.hide_select -> hide_select: boolean "'Bone is able to be selected'"
-+ * Bone.hinge -> use_hinge: boolean "'Bone inherits rotation or scale from parent bone'"
-+ * Bone.inherit_scale -> use_inherit_scale: boolean "'Bone inherits scaling from parent bone'"
-+ * Bone.layer -> layers: boolean "'Layers bone exists in'"
-+ * Bone.local_location -> use_local_location: boolean "'Bone location is set in local space'"
-+ * Bone.matrix -> matrix: float "'3x3 bone matrix'"
-+ * Bone.matrix_local -> matrix_local: float "'4x4 bone matrix relative to armature'"
-+ * Bone.multiply_vertexgroup_with_envelope -> use_envelope_multiply: boolean "'When deforming bone, multiply effects of Vertex Group weights with Envelope influence'"
-+ * Bone.name -> name: string "'NO DESCRIPTION'"
-+ * Bone.parent -> parent: pointer, "'(read-only) Parent bone (in same Armature)'"
-+ * Bone.select -> select: boolean "'NO DESCRIPTION'"
-+ * Bone.tail -> tail: float "'Location of tail end of the bone'"
-+ * Bone.tail_local -> tail_local: float "'Location of tail end of the bone relative to armature'"
-+ * Bone.tail_radius -> tail_radius: float "'Radius of tail of bone (for Envelope deform only)'"
-+ * BoneGroup.color_set -> color_set: enum "'Custom color set to use'"
-+ * BoneGroup.colors -> colors: pointer, '"(read-only) Copy of the colors associated with the group\'s color set"'
-+ * BoneGroup.name -> name: string "'NO DESCRIPTION'"
-+ * ClothCollisionSettings.collision_quality -> collision_quality: int "'How many collision iterations should be done. (higher is better quality but slower)'"
-+ * ClothCollisionSettings.enable_collision -> use_collision: boolean "'Enable collisions with other objects'"
-+ * ClothCollisionSettings.enable_self_collision -> use_self_collision: boolean "'Enable self collisions'"
-+ * ClothCollisionSettings.friction -> friction: float "'Friction force if a collision happened. (higher = less movement)'"
-+ * ClothCollisionSettings.group -> group: pointer "'Limit colliders to this Group'"
-+ * ClothCollisionSettings.min_distance -> distance_min: float "'Minimum distance between collision objects before collision response takes in'"
-+ * ClothCollisionSettings.self_collision_quality -> self_collision_quality: int "'How many self collision iterations should be done. (higher is better quality but slower)'"
-+ * ClothCollisionSettings.self_friction -> self_friction: float "'Friction/damping with self contact'"
-+ * ClothCollisionSettings.self_min_distance -> self_distance_min: float "'0.5 means no distance at all, 1.0 is maximum distance'"
-+ * ClothSettings.air_damping -> air_damping: float "'Air has normally some thickness which slows falling things down'"
-+ * ClothSettings.bending_stiffness -> bending_stiffness: float "'Wrinkle coefficient. (higher = less smaller but more big wrinkles)'"
-+ * ClothSettings.bending_stiffness_max -> bending_stiffness_max: float "'Maximum bending stiffness value'"
-+ * ClothSettings.bending_vertex_group -> bending_vertex_group: string "'Vertex group for fine control over bending stiffness'"
-+ * ClothSettings.collider_friction -> collider_friction: float "'NO DESCRIPTION'"
-+ * ClothSettings.effector_weights -> effector_weights: pointer, "'(read-only)'"
-+ * ClothSettings.goal_default -> goal_default: float "'Default Goal (vertex target position) value, when no Vertex Group used'"
-+ * ClothSettings.goal_friction -> goal_friction: float "'Goal (vertex target position) friction'"
-+ * ClothSettings.goal_max -> goal_max: float "'Goal maximum, vertex group weights are scaled to match this range'"
-+ * ClothSettings.goal_min -> goal_min: float "'Goal minimum, vertex group weights are scaled to match this range'"
-+ * ClothSettings.goal_spring -> goal_spring: float "'Goal (vertex target position) spring stiffness'"
-+ * ClothSettings.gravity -> gravity: float "'Gravity or external force vector'"
-+ * ClothSettings.internal_friction -> internal_friction: float "'NO DESCRIPTION'"
-+ * ClothSettings.mass -> mass: float "'Mass of cloth material'"
-+ * ClothSettings.mass_vertex_group -> mass_vertex_group: string "'Vertex Group for pinning of vertices'"
-+ * ClothSettings.pin_cloth -> use_pin_cloth: boolean "'Enable pinning of cloth vertices to other objects/positions'"
-+ * ClothSettings.pin_stiffness -> pin_stiffness: float "'Pin (vertex target position) spring stiffness'"
-+ * ClothSettings.pre_roll -> pre_roll: int "'Simulation starts on this frame'"
-+ * ClothSettings.quality -> quality: int "'Quality of the simulation in steps per frame. (higher is better quality but slower)'"
-+ * ClothSettings.rest_shape_key -> rest_shape_key: pointer "'Shape key to use the rest spring lengths from'"
-+ * ClothSettings.spring_damping -> spring_damping: float "'Damping of cloth velocity. (higher = more smooth, less jiggling)'"
-+ * ClothSettings.stiffness_scaling -> use_stiffness_scale: boolean "'If enabled, stiffness can be scaled along a weight painted vertex group'"
-+ * ClothSettings.structural_stiffness -> structural_stiffness: float "'Overall stiffness of structure'"
-+ * ClothSettings.structural_stiffness_max -> structural_stiffness_max: float "'Maximum structural stiffness value'"
-+ * ClothSettings.structural_stiffness_vertex_group -> structural_stiffness_vertex_group: string "'Vertex group for fine control over structural stiffness'"
-+ * CollisionSettings.absorption -> absorption: float "'How much of effector force gets lost during collision with this object (in percent)'"
-+ * CollisionSettings.damping -> damping: float "'Amount of damping during collision'"
-+ * CollisionSettings.damping_factor -> damping_factor: float "'Amount of damping during particle collision'"
-+ * CollisionSettings.enabled -> use: boolean "'Enable this objects as a collider for physics systems'"
-+ * CollisionSettings.friction_factor -> friction_factor: float "'Amount of friction during particle collision'"
-+ * CollisionSettings.inner_thickness -> thickness_inner: float "'Inner face thickness'"
-+ * CollisionSettings.kill_particles -> use_particle_kill: boolean "'Kill colliding particles'"
-+ * CollisionSettings.outer_thickness -> thickness_outer: float "'Outer face thickness'"
-+ * CollisionSettings.permeability -> permeability: float "'Chance that the particle will pass through the mesh'"
-+ * CollisionSettings.random_damping -> random_damping: float "'Random variation of damping'"
-+ * CollisionSettings.random_friction -> random_friction: float "'Random variation of friction'"
-+ * CollisionSettings.stickness -> stickness: float "'Amount of stickness to surface collision'"
-+ * ColorRamp.elements -> elements: collection, "'(read-only)'"
-+ * ColorRamp.interpolation -> interpolation: enum "'NO DESCRIPTION'"
-+ * ColorRamp.total -> count: int, "'(read-only) Total number of elements'"
-+ * ColorRampElement.color -> color: float "'NO DESCRIPTION'"
-+ * ColorRampElement.position -> position: float "'NO DESCRIPTION'"
-ConsoleLine.current_character -> current_character: int "'NO DESCRIPTION'"
-ConsoleLine.line -> line: string "'Text in the line'"
-Constraint.active -> active: boolean "'Constraint is the one being edited'"
-Constraint.disabled -> is_valid: boolean, "'(read-only) Constraint has invalid settings and will not be evaluated'"
-Constraint.enabled -> enabled: boolean "'Enable/Disable Constraint'"
-Constraint.expanded -> show_expanded: boolean '"Constraint\'s panel is expanded in UI"'
-Constraint.influence -> influence: float "'Amount of influence constraint will have on the final solution'"
-Constraint.lin_error -> lin_error: float, "'(read-only) Amount of residual error in Blender space unit for constraints that work on position'"
-Constraint.name -> name: string "'Constraint name'"
-Constraint.owner_space -> owner_space: enum "'Space that owner is evaluated in'"
-Constraint.proxy_local -> is_proxy_local: boolean "'Constraint was added in this proxy instance (i.e. did not belong to source Armature)'"
-Constraint.rot_error -> rot_error: float, "'(read-only) Amount of residual error in radiant for constraints that work on orientation'"
-Constraint.target_space -> target_space: enum "'Space that target is evaluated in'"
-Constraint.type -> type: enum, "'(read-only)'"
-ConstraintTarget.subtarget -> subtarget: string "'NO DESCRIPTION'"
-ConstraintTarget.target -> target: pointer "'Target Object'"
-+ * Constraint|ActionConstraint.action -> action: pointer "'NO DESCRIPTION'"
-+ * Constraint|ActionConstraint.frame_end -> frame_end: int "'Last frame of the Action to use'"
-+ * Constraint|ActionConstraint.frame_start -> frame_start: int "'First frame of the Action to use'"
-+ * Constraint|ActionConstraint.maximum -> max: float "'Maximum value for target channel range'"
-+ * Constraint|ActionConstraint.minimum -> min: float "'Minimum value for target channel range'"
-+ * Constraint|ActionConstraint.subtarget -> subtarget: string "'NO DESCRIPTION'"
-+ * Constraint|ActionConstraint.target -> target: pointer "'Target Object'"
-+ * Constraint|ActionConstraint.transform_channel -> transform_channel: enum "'Transformation channel from the target that is used to key the Action'"
-+ * Constraint|ChildOfConstraint.subtarget -> subtarget: string "'NO DESCRIPTION'"
-+ * Constraint|ChildOfConstraint.target -> target: pointer "'Target Object'"
-+ * Constraint|ChildOfConstraint.use_location_x -> use_location_x: boolean "'Use X Location of Parent'"
-+ * Constraint|ChildOfConstraint.use_location_y -> use_location_y: boolean "'Use Y Location of Parent'"
-+ * Constraint|ChildOfConstraint.use_location_z -> use_location_z: boolean "'Use Z Location of Parent'"
-+ * Constraint|ChildOfConstraint.use_rotation_x -> use_rotation_x: boolean "'Use X Rotation of Parent'"
-+ * Constraint|ChildOfConstraint.use_rotation_y -> use_rotation_y: boolean "'Use Y Rotation of Parent'"
-+ * Constraint|ChildOfConstraint.use_rotation_z -> use_rotation_z: boolean "'Use Z Rotation of Parent'"
-+ * Constraint|ChildOfConstraint.use_scale_x -> use_scale_x: boolean "'Use X Scale of Parent'"
-+ * Constraint|ChildOfConstraint.use_scale_y -> use_scale_y: boolean "'Use Y Scale of Parent'"
-+ * Constraint|ChildOfConstraint.use_scale_z -> use_scale_z: boolean "'Use Z Scale of Parent'"
-+ * Constraint|ClampToConstraint.cyclic -> use_cyclic: boolean "'Treat curve as cyclic curve (no clamping to curve bounding box'"
-+ * Constraint|ClampToConstraint.main_axis -> main_axis: enum "'Main axis of movement'"
-+ * Constraint|ClampToConstraint.target -> target: pointer "'Target Object'"
-Constraint|CopyLocationConstraint.head_tail -> head_tail: float "'Target along length of bone: Head=0, Tail=1'"
-Constraint|CopyLocationConstraint.invert_x -> invert_x: boolean "'Invert the X location'"
-Constraint|CopyLocationConstraint.invert_y -> invert_y: boolean "'Invert the Y location'"
-Constraint|CopyLocationConstraint.invert_z -> invert_z: boolean "'Invert the Z location'"
-Constraint|CopyLocationConstraint.subtarget -> subtarget: string "'NO DESCRIPTION'"
-Constraint|CopyLocationConstraint.target -> target: pointer "'Target Object'"
-Constraint|CopyLocationConstraint.use_offset -> use_offset: boolean "'Add original location into copied location'"
-Constraint|CopyLocationConstraint.use_x -> use_x: boolean '"Copy the target\'s X location"'
-Constraint|CopyLocationConstraint.use_y -> use_y: boolean '"Copy the target\'s Y location"'
-Constraint|CopyLocationConstraint.use_z -> use_z: boolean '"Copy the target\'s Z location"'
-Constraint|CopyRotationConstraint.invert_x -> invert_x: boolean "'Invert the X rotation'"
-Constraint|CopyRotationConstraint.invert_y -> invert_y: boolean "'Invert the Y rotation'"
-Constraint|CopyRotationConstraint.invert_z -> invert_z: boolean "'Invert the Z rotation'"
-Constraint|CopyRotationConstraint.subtarget -> subtarget: string "'NO DESCRIPTION'"
-Constraint|CopyRotationConstraint.target -> target: pointer "'Target Object'"
-Constraint|CopyRotationConstraint.use_offset -> use_offset: boolean "'Add original rotation into copied rotation'"
-Constraint|CopyRotationConstraint.use_x -> use_x: boolean '"Copy the target\'s X rotation"'
-Constraint|CopyRotationConstraint.use_y -> use_y: boolean '"Copy the target\'s Y rotation"'
-Constraint|CopyRotationConstraint.use_z -> use_z: boolean '"Copy the target\'s Z rotation"'
-Constraint|CopyScaleConstraint.subtarget -> subtarget: string "'NO DESCRIPTION'"
-Constraint|CopyScaleConstraint.target -> target: pointer "'Target Object'"
-Constraint|CopyScaleConstraint.use_offset -> use_offset: boolean "'Add original scale into copied scale'"
-Constraint|CopyScaleConstraint.use_x -> use_x: boolean '"Copy the target\'s X scale"'
-Constraint|CopyScaleConstraint.use_y -> use_y: boolean '"Copy the target\'s Y scale"'
-Constraint|CopyScaleConstraint.use_z -> use_z: boolean '"Copy the target\'s Z scale"'
-Constraint|CopyTransformsConstraint.head_tail -> head_tail: float "'Target along length of bone: Head=0, Tail=1'"
-Constraint|CopyTransformsConstraint.subtarget -> subtarget: string "'NO DESCRIPTION'"
-Constraint|CopyTransformsConstraint.target -> target: pointer "'Target Object'"
-Constraint|DampedTrackConstraint.subtarget -> subtarget: string "'NO DESCRIPTION'"
-Constraint|DampedTrackConstraint.target -> target: pointer "'Target Object'"
-Constraint|DampedTrackConstraint.track -> track: enum "'Axis that points to the target object'"
-Constraint|FloorConstraint.floor_location -> floor_location: enum "'Location of target that object will not pass through'"
-Constraint|FloorConstraint.offset -> offset: float "'Offset of floor from object origin'"
-Constraint|FloorConstraint.sticky -> use_sticky: boolean "'Immobilize object while constrained'"
-Constraint|FloorConstraint.subtarget -> subtarget: string "'NO DESCRIPTION'"
-Constraint|FloorConstraint.target -> target: pointer "'Target Object'"
-Constraint|FloorConstraint.use_rotation -> use_rotation: boolean '"Use the target\'s rotation to determine floor"'
-Constraint|FollowPathConstraint.forward -> forward: enum "'Axis that points forward along the path'"
-Constraint|FollowPathConstraint.offset -> offset: int "'Offset from the position corresponding to the time frame'"
-Constraint|FollowPathConstraint.offset_factor -> offset_factor: float "'Percentage value defining target position along length of bone'"
-Constraint|FollowPathConstraint.target -> target: pointer "'Target Object'"
-Constraint|FollowPathConstraint.up -> up: enum "'Axis that points upward'"
-Constraint|FollowPathConstraint.use_curve_follow -> use_curve_follow: boolean "'Object will follow the heading and banking of the curve'"
-Constraint|FollowPathConstraint.use_curve_radius -> use_curve_radius: boolean "'Objects scale by the curve radius'"
-Constraint|FollowPathConstraint.use_fixed_position -> use_fixed_location: boolean "'Object will stay locked to a single point somewhere along the length of the curve regardless of time'"
-Constraint|KinematicConstraint.axis_reference -> axis_reference: enum "'Constraint axis Lock options relative to Bone or Target reference'"
-Constraint|KinematicConstraint.chain_length -> chain_length: int "'How many bones are included in the IK effect - 0 uses all bones'"
-Constraint|KinematicConstraint.distance -> distance: float "'Radius of limiting sphere'"
-Constraint|KinematicConstraint.ik_type -> ik_type: enum "'NO DESCRIPTION'"
-Constraint|KinematicConstraint.iterations -> iterations: int "'Maximum number of solving iterations'"
-Constraint|KinematicConstraint.limit_mode -> limit_mode: enum "'Distances in relation to sphere of influence to allow'"
-Constraint|KinematicConstraint.orient_weight -> orient_weight: float "'For Tree-IK: Weight of orientation control for this target'"
-Constraint|KinematicConstraint.pole_angle -> pole_angle: float "'Pole rotation offset'"
-Constraint|KinematicConstraint.pole_subtarget -> pole_subtarget: string "'NO DESCRIPTION'"
-Constraint|KinematicConstraint.pole_target -> pole_target: pointer "'Object for pole rotation'"
-Constraint|KinematicConstraint.pos_lock_x -> lock_location_x: boolean "'Constraint position along X axis'"
-Constraint|KinematicConstraint.pos_lock_y -> lock_location_y: boolean "'Constraint position along Y axis'"
-Constraint|KinematicConstraint.pos_lock_z -> lock_location_z: boolean "'Constraint position along Z axis'"
-Constraint|KinematicConstraint.rot_lock_x -> lock_rotation_x: boolean "'Constraint rotation along X axis'"
-Constraint|KinematicConstraint.rot_lock_y -> lock_rotation_y: boolean "'Constraint rotation along Y axis'"
-Constraint|KinematicConstraint.rot_lock_z -> lock_rotation_z: boolean "'Constraint rotation along Z axis'"
-Constraint|KinematicConstraint.subtarget -> subtarget: string "'NO DESCRIPTION'"
-Constraint|KinematicConstraint.target -> target: pointer "'Target Object'"
-Constraint|KinematicConstraint.use_position -> use_location: boolean "'Chain follows position of target'"
-Constraint|KinematicConstraint.use_rotation -> use_rotation: boolean "'Chain follows rotation of target'"
-Constraint|KinematicConstraint.use_stretch -> use_stretch: boolean "'Enable IK Stretching'"
-Constraint|KinematicConstraint.use_tail -> use_tail: boolean '"Include bone\'s tail as last element in chain"'
-Constraint|KinematicConstraint.use_target -> use_target: boolean "'Disable for targetless IK'"
-Constraint|KinematicConstraint.weight -> weight: float "'For Tree-IK: Weight of position control for this target'"
-Constraint|LimitDistanceConstraint.distance -> distance: float "'Radius of limiting sphere'"
-Constraint|LimitDistanceConstraint.limit_mode -> limit_mode: enum "'Distances in relation to sphere of influence to allow'"
-Constraint|LimitDistanceConstraint.subtarget -> subtarget: string "'NO DESCRIPTION'"
-Constraint|LimitDistanceConstraint.target -> target: pointer "'Target Object'"
-Constraint|LimitLocationConstraint.limit_transform -> limit_transform: boolean "'Transforms are affected by this constraint as well'"
-Constraint|LimitLocationConstraint.maximum_x -> max_x: float "'Highest X value to allow'"
-Constraint|LimitLocationConstraint.maximum_y -> max_y: float "'Highest Y value to allow'"
-Constraint|LimitLocationConstraint.maximum_z -> max_z: float "'Highest Z value to allow'"
-Constraint|LimitLocationConstraint.minimum_x -> min_x: float "'Lowest X value to allow'"
-Constraint|LimitLocationConstraint.minimum_y -> min_y: float "'Lowest Y value to allow'"
-Constraint|LimitLocationConstraint.minimum_z -> min_z: float "'Lowest Z value to allow'"
-Constraint|LimitLocationConstraint.use_maximum_x -> use_max_x: boolean "'Use the maximum X value'"
-Constraint|LimitLocationConstraint.use_maximum_y -> use_max_y: boolean "'Use the maximum Y value'"
-Constraint|LimitLocationConstraint.use_maximum_z -> use_max_z: boolean "'Use the maximum Z value'"
-Constraint|LimitLocationConstraint.use_minimum_x -> use_min_x: boolean "'Use the minimum X value'"
-Constraint|LimitLocationConstraint.use_minimum_y -> use_min_y: boolean "'Use the minimum Y value'"
-Constraint|LimitLocationConstraint.use_minimum_z -> use_min_z: boolean "'Use the minimum Z value'"
-Constraint|LimitRotationConstraint.limit_transform -> limit_transform: boolean "'Transforms are affected by this constraint as well'"
-Constraint|LimitRotationConstraint.maximum_x -> max_x: float "'Highest X value to allow'"
-Constraint|LimitRotationConstraint.maximum_y -> max_y: float "'Highest Y value to allow'"
-Constraint|LimitRotationConstraint.maximum_z -> max_z: float "'Highest Z value to allow'"
-Constraint|LimitRotationConstraint.minimum_x -> min_x: float "'Lowest X value to allow'"
-Constraint|LimitRotationConstraint.minimum_y -> min_y: float "'Lowest Y value to allow'"
-Constraint|LimitRotationConstraint.minimum_z -> min_z: float "'Lowest Z value to allow'"
-Constraint|LimitRotationConstraint.use_limit_x -> use_limit_x: boolean "'Use the minimum X value'"
-Constraint|LimitRotationConstraint.use_limit_y -> use_limit_y: boolean "'Use the minimum Y value'"
-Constraint|LimitRotationConstraint.use_limit_z -> use_limit_z: boolean "'Use the minimum Z value'"
-Constraint|LimitScaleConstraint.limit_transform -> limit_transform: boolean "'Transforms are affected by this constraint as well'"
-Constraint|LimitScaleConstraint.maximum_x -> max_x: float "'Highest X value to allow'"
-Constraint|LimitScaleConstraint.maximum_y -> max_y: float "'Highest Y value to allow'"
-Constraint|LimitScaleConstraint.maximum_z -> max_z: float "'Highest Z value to allow'"
-Constraint|LimitScaleConstraint.minimum_x -> min_x: float "'Lowest X value to allow'"
-Constraint|LimitScaleConstraint.minimum_y -> min_y: float "'Lowest Y value to allow'"
-Constraint|LimitScaleConstraint.minimum_z -> min_z: float "'Lowest Z value to allow'"
-Constraint|LimitScaleConstraint.use_maximum_x -> use_max_x: boolean "'Use the maximum X value'"
-Constraint|LimitScaleConstraint.use_maximum_y -> use_max_y: boolean "'Use the maximum Y value'"
-Constraint|LimitScaleConstraint.use_maximum_z -> use_max_z: boolean "'Use the maximum Z value'"
-Constraint|LimitScaleConstraint.use_minimum_x -> use_min_x: boolean "'Use the minimum X value'"
-Constraint|LimitScaleConstraint.use_minimum_y -> use_min_y: boolean "'Use the minimum Y value'"
-Constraint|LimitScaleConstraint.use_minimum_z -> use_min_z: boolean "'Use the minimum Z value'"
-Constraint|LockedTrackConstraint.lock -> lock: enum "'Axis that points upward'"
-Constraint|LockedTrackConstraint.subtarget -> subtarget: string "'NO DESCRIPTION'"
-Constraint|LockedTrackConstraint.target -> target: pointer "'Target Object'"
-Constraint|LockedTrackConstraint.track -> track: enum "'Axis that points to the target object'"
-Constraint|MaintainVolumeConstraint.axis -> axis: enum "'The free scaling axis of the object'"
-Constraint|MaintainVolumeConstraint.volume -> volume: float "'Volume of the bone at rest'"
-Constraint|PivotConstraint.enabled_rotation_range -> enabled_rotation_range: enum "'Rotation range on which pivoting should occur'"
-Constraint|PivotConstraint.head_tail -> head_tail: float "'Target along length of bone: Head=0, Tail=1'"
-Constraint|PivotConstraint.offset -> offset: float '"Offset of pivot from target (when set), or from owner\'s location (when Fixed Position is off), or the absolute pivot point"'
-Constraint|PivotConstraint.subtarget -> subtarget: string "'NO DESCRIPTION'"
-Constraint|PivotConstraint.target -> target: pointer "'Target Object, defining the position of the pivot when defined'"
-Constraint|PivotConstraint.use_relative_position -> use_relative_location: boolean "'Offset will be an absolute point in space instead of relative to the target'"
-Constraint|PythonConstraint.number_of_targets -> number_of_targets: int "'Usually only 1-3 are needed'"
-Constraint|PythonConstraint.script_error -> has_script_error: boolean, "'(read-only) The linked Python script has thrown an error'"
-Constraint|PythonConstraint.targets -> targets: collection, "'(read-only) Target Objects'"
-Constraint|PythonConstraint.text -> text: pointer "'The text object that contains the Python script'"
-Constraint|PythonConstraint.use_targets -> use_targets: boolean "'Use the targets indicated in the constraint panel'"
-Constraint|RigidBodyJointConstraint.axis_x -> axis_x: float "'Rotate pivot on X axis in degrees'"
-Constraint|RigidBodyJointConstraint.axis_y -> axis_y: float "'Rotate pivot on Y axis in degrees'"
-Constraint|RigidBodyJointConstraint.axis_z -> axis_z: float "'Rotate pivot on Z axis in degrees'"
-Constraint|RigidBodyJointConstraint.child -> child: pointer "'Child object'"
-NEGATE * Constraint|RigidBodyJointConstraint.disable_linked_collision -> use_linked_collision: boolean "'Disable collision between linked bodies'"
-Constraint|RigidBodyJointConstraint.draw_pivot -> show_pivot: boolean "'Display the pivot point and rotation in 3D view'"
-Constraint|RigidBodyJointConstraint.pivot_type -> pivot_type: enum "'NO DESCRIPTION'"
-Constraint|RigidBodyJointConstraint.pivot_x -> pivot_x: float "'Offset pivot on X'"
-Constraint|RigidBodyJointConstraint.pivot_y -> pivot_y: float "'Offset pivot on Y'"
-Constraint|RigidBodyJointConstraint.pivot_z -> pivot_z: float "'Offset pivot on Z'"
-Constraint|RigidBodyJointConstraint.target -> target: pointer "'Target Object'"
-Constraint|ShrinkwrapConstraint.distance -> distance: float "'Distance to Target'"
-Constraint|ShrinkwrapConstraint.shrinkwrap_type -> shrinkwrap_type: enum "'Selects type of shrinkwrap algorithm for target position'"
-Constraint|ShrinkwrapConstraint.target -> target: pointer "'Target Object'"
-Constraint|ShrinkwrapConstraint.use_x -> use_x: boolean "'Projection over X Axis'"
-Constraint|ShrinkwrapConstraint.use_y -> use_y: boolean "'Projection over Y Axis'"
-Constraint|ShrinkwrapConstraint.use_z -> use_z: boolean "'Projection over Z Axis'"
-Constraint|SplineIKConstraint.chain_length -> chain_length: int "'How many bones are included in the chain'"
-Constraint|SplineIKConstraint.chain_offset -> use_chain_offset: boolean "'Offset the entire chain relative to the root joint'"
-Constraint|SplineIKConstraint.even_divisions -> use_even_divisions: boolean "'Ignore the relative lengths of the bones when fitting to the curve'"
-Constraint|SplineIKConstraint.joint_bindings -> joint_bindings: float "'(EXPERIENCED USERS ONLY) The relative positions of the joints along the chain as percentages'"
-Constraint|SplineIKConstraint.target -> target: pointer "'Curve that controls this relationship'"
-Constraint|SplineIKConstraint.use_curve_radius -> use_curve_radius: boolean "'Average radius of the endpoints is used to tweak the X and Z Scaling of the bones, on top of XZ Scale mode'"
-Constraint|SplineIKConstraint.xz_scaling_mode -> xz_scale_mode: enum "'Method used for determining the scaling of the X and Z axes of the bones'"
-Constraint|SplineIKConstraint.y_stretch -> use_y_stretch: boolean "'Stretch the Y axis of the bones to fit the curve'"
-Constraint|StretchToConstraint.bulge -> bulge: float "'Factor between volume variation and stretching'"
-Constraint|StretchToConstraint.head_tail -> head_tail: float "'Target along length of bone: Head=0, Tail=1'"
-Constraint|StretchToConstraint.keep_axis -> keep_axis: enum "'Axis to maintain during stretch'"
-Constraint|StretchToConstraint.original_length -> original_length: float "'Length at rest position'"
-Constraint|StretchToConstraint.subtarget -> subtarget: string "'NO DESCRIPTION'"
-Constraint|StretchToConstraint.target -> target: pointer "'Target Object'"
-Constraint|StretchToConstraint.volume -> volume: enum '"Maintain the object\'s volume as it stretches"'
-Constraint|TrackToConstraint.head_tail -> head_tail: float "'Target along length of bone: Head=0, Tail=1'"
-Constraint|TrackToConstraint.subtarget -> subtarget: string "'NO DESCRIPTION'"
-Constraint|TrackToConstraint.target -> target: pointer "'Target Object'"
-Constraint|TrackToConstraint.target_z -> use_target_z: boolean '"Target\'s Z axis, not World Z axis, will constraint the Up direction"'
-Constraint|TrackToConstraint.track -> track: enum "'Axis that points to the target object'"
-Constraint|TrackToConstraint.up -> up: enum "'Axis that points upward'"
-Constraint|TransformConstraint.extrapolate_motion -> use_motion_extrapolate: boolean "'Extrapolate ranges'"
-Constraint|TransformConstraint.from_max_x -> from_max_x: float "'Top range of X axis source motion'"
-Constraint|TransformConstraint.from_max_y -> from_max_y: float "'Top range of Y axis source motion'"
-Constraint|TransformConstraint.from_max_z -> from_max_z: float "'Top range of Z axis source motion'"
-Constraint|TransformConstraint.from_min_x -> from_min_x: float "'Bottom range of X axis source motion'"
-Constraint|TransformConstraint.from_min_y -> from_min_y: float "'Bottom range of Y axis source motion'"
-Constraint|TransformConstraint.from_min_z -> from_min_z: float "'Bottom range of Z axis source motion'"
-Constraint|TransformConstraint.map_from -> map_from: enum "'The transformation type to use from the target'"
-Constraint|TransformConstraint.map_to -> map_to: enum "'The transformation type to affect of the constrained object'"
-Constraint|TransformConstraint.map_to_x_from -> map_to_x_from: enum '"The source axis constrained object\'s X axis uses"'
-Constraint|TransformConstraint.map_to_y_from -> map_to_y_from: enum '"The source axis constrained object\'s Y axis uses"'
-Constraint|TransformConstraint.map_to_z_from -> map_to_z_from: enum '"The source axis constrained object\'s Z axis uses"'
-Constraint|TransformConstraint.subtarget -> subtarget: string "'NO DESCRIPTION'"
-Constraint|TransformConstraint.target -> target: pointer "'Target Object'"
-Constraint|TransformConstraint.to_max_x -> to_max_x: float "'Top range of X axis destination motion'"
-Constraint|TransformConstraint.to_max_y -> to_max_y: float "'Top range of Y axis destination motion'"
-Constraint|TransformConstraint.to_max_z -> to_max_z: float "'Top range of Z axis destination motion'"
-Constraint|TransformConstraint.to_min_x -> to_min_x: float "'Bottom range of X axis destination motion'"
-Constraint|TransformConstraint.to_min_y -> to_min_y: float "'Bottom range of Y axis destination motion'"
-Constraint|TransformConstraint.to_min_z -> to_min_z: float "'Bottom range of Z axis destination motion'"
-Context.area -> area: pointer, "'(read-only)'"
-Context.main -> main: pointer, "'(read-only)'"
-Context.manager -> manager: pointer, "'(read-only)'"
-Context.mode -> mode: enum, "'(read-only)'"
-Context.region -> region: pointer, "'(read-only)'"
-Context.region_data -> region_data: pointer, "'(read-only)'"
-Context.scene -> scene: pointer, "'(read-only)'"
-Context.screen -> screen: pointer, "'(read-only)'"
-Context.space_data -> space_data: pointer, "'(read-only)'"
-Context.tool_settings -> tool_settings: pointer, "'(read-only)'"
-Context.user_preferences -> user_preferences: pointer, "'(read-only)'"
-Context.window -> window: pointer, "'(read-only)'"
-Controller.expanded -> show_expanded: boolean "'Set controller expanded in the user interface'"
-Controller.name -> name: string "'NO DESCRIPTION'"
-Controller.priority -> use_priority: boolean "'Mark controller for execution before all non-marked controllers (good for startup scripts)'"
-Controller.state -> states: boolean, "'(read-only) Set Controller state index (1 to 30)'"
-Controller.type -> type: enum "'NO DESCRIPTION'"
-Controller|ExpressionController.expression -> expression: string "'NO DESCRIPTION'"
-Controller|PythonController.debug -> use_debug: boolean "'Continuously reload the module from disk for editing external modules without restarting'"
-Controller|PythonController.mode -> mode: enum "'Python script type (textblock or module - faster)'"
-Controller|PythonController.module -> module: string 'Module name and function to run e.g. "someModule.main". Internal texts and external python files can be used'
-Controller|PythonController.text -> text: pointer "'Text datablock with the python script'"
-CurveMap.extend -> extend: enum, "'(read-only) Extrapolate the curve or extend it horizontally'"
-CurveMap.points -> points: collection, "'(read-only)'"
-CurveMapPoint.handle_type -> handle_type: enum, "'(read-only) Curve interpolation at this point: bezier or vector'"
-CurveMapPoint.location -> location: float, "'(read-only) X/Y coordinates of the curve point'"
-CurveMapPoint.select -> select: boolean "'Selection state of the curve point'"
-CurveMapping.black_level -> black_level: float "'For RGB curves, the color that black is mapped to'"
-CurveMapping.clip -> use_clip: boolean "'Force the curve view to fit a defined boundary'"
-CurveMapping.clip_max_x -> clip_max_x: float "'NO DESCRIPTION'"
-CurveMapping.clip_max_y -> clip_max_y: float "'NO DESCRIPTION'"
-CurveMapping.clip_min_x -> clip_min_x: float "'NO DESCRIPTION'"
-CurveMapping.clip_min_y -> clip_min_y: float "'NO DESCRIPTION'"
-CurveMapping.curves -> curves: collection, "'(read-only)'"
-CurveMapping.white_level -> white_level: float "'For RGB curves, the color that white is mapped to'"
-CurveSplines.active -> active: pointer "'Active curve spline'"
-NEGATE * DopeSheet.collapse_summary -> show_expanded_summary: boolean "'Collapse summary when shown, so all other channels get hidden. (DopeSheet Editors Only)'"
-DopeSheet.display_armature -> show_armatures: boolean "'Include visualization of Armature related Animation data'"
-DopeSheet.display_camera -> show_cameras: boolean "'Include visualization of Camera related Animation data'"
-DopeSheet.display_curve -> show_curves: boolean "'Include visualization of Curve related Animation data'"
-DopeSheet.display_hidden -> display_hidden: boolean '"Include channels from objects/bone that aren\'t visible"'
-DopeSheet.display_lamp -> show_lamps: boolean "'Include visualization of Lamp related Animation data'"
-DopeSheet.display_material -> show_materials: boolean "'Include visualization of Material related Animation data'"
-DopeSheet.display_mesh -> show_meshes: boolean "'Include visualization of Mesh related Animation data'"
-DopeSheet.display_metaball -> show_metaballs: boolean "'Include visualization of Metaball related Animation data'"
-DopeSheet.display_node -> show_nodes: boolean "'Include visualization of Node related Animation data'"
-DopeSheet.display_particle -> show_particles: boolean "'Include visualization of Particle related Animation data'"
-DopeSheet.display_scene -> show_scenes: boolean "'Include visualization of Scene related Animation data'"
-DopeSheet.display_shapekeys -> show_shapekeys: boolean "'Include visualization of ShapeKey related Animation data'"
-DopeSheet.display_summary -> show_summary: boolean '"Display an additional \'summary\' line. (DopeSheet Editors only)"'
-DopeSheet.display_texture -> show_textures: boolean "'Include visualization of Texture related Animation data'"
-DopeSheet.display_transforms -> show_transforms: boolean "'Include visualization of Object-level Animation data (mostly Transforms)'"
-DopeSheet.display_world -> show_worlds: boolean "'Include visualization of World related Animation data'"
-DopeSheet.filtering_group -> filtering_group: pointer "'Group that included Object should be a member of'"
-DopeSheet.include_missing_nla -> show_missing_nla: boolean "'Include Animation Data blocks with no NLA data. (NLA Editor only)'"
-DopeSheet.only_group_objects -> show_only_group_objects: boolean "'Only include channels from Objects in the specified Group'"
-DopeSheet.only_selected -> show_only_selected: boolean "'Only include channels relating to selected objects and data'"
-DopeSheet.source -> source: pointer, "'(read-only) ID-Block representing source data, currently ID_SCE (for Dopesheet), and ID_SC (for Grease Pencil)'"
-Driver.expression -> expression: string "'Expression to use for Scripted Expression'"
-Driver.invalid -> is_valid: boolean "'Driver could not be evaluated in past, so should be skipped'"
-Driver.show_debug_info -> show_debug_info: boolean "'Show intermediate values for the driver calculations to allow debugging of drivers'"
-Driver.type -> type: enum "'Driver type'"
-Driver.variables -> variables: collection, "'(read-only) Properties acting as inputs for this driver'"
-DriverTarget.bone_target -> bone_target: string "'Name of PoseBone to use as target'"
-DriverTarget.data_path -> data_path: string "'RNA Path (from ID-block) to property used'"
-DriverTarget.id -> id: pointer "'ID-block that the specific property used can be found from (id_type property must be set first)'"
-DriverTarget.id_type -> id_type: enum "'Type of ID-block that can be used'"
-DriverTarget.transform_type -> transform_type: enum "'Driver variable type'"
-DriverTarget.use_local_space_transforms -> use_local_space_transform: boolean "'Use transforms in Local Space (as opposed to the worldspace default)'"
-DriverVariable.name -> name: string "'Name to use in scripted expressions/functions. (No spaces or dots are allowed. Also, must not start with a symbol or digit)'"
-DriverVariable.targets -> targets: collection, "'(read-only) Sources of input data for evaluating this variable'"
-DriverVariable.type -> type: enum "'Driver variable type'"
-DupliObject.matrix -> matrix: float "'Object duplicate transformation matrix'"
-DupliObject.object -> object: pointer, "'(read-only) Object being duplicated'"
-DupliObject.object_matrix -> object_matrix: float "'Duplicated object transformation matrix'"
-EditBone.bbone_in -> bbone_in: float "'Length of first Bezier Handle (for B-Bones only)'"
-EditBone.bbone_out -> bbone_out: float "'Length of second Bezier Handle (for B-Bones only)'"
-EditBone.bbone_segments -> bbone_segments: int "'Number of subdivisions of bone (for B-Bones only)'"
-EditBone.connected -> use_connect: boolean '"When bone has a parent, bone\'s head is struck to the parent\'s tail"'
-EditBone.cyclic_offset -> use_cyclic_offset: boolean '"When bone doesn\'t have a parent, it receives cyclic offset effects"'
-EditBone.deform -> use_deform: boolean "'Bone does not deform any geometry'"
-EditBone.draw_wire -> show_wire: boolean "'Bone is always drawn as Wireframe regardless of viewport draw mode. Useful for non-obstructive custom bone shapes'"
-EditBone.envelope_distance -> envelope_distance: float "'Bone deformation distance (for Envelope deform only)'"
-EditBone.envelope_weight -> envelope_weight: float "'Bone deformation weight (for Envelope deform only)'"
-EditBone.head -> head: float "'Location of head end of the bone'"
-EditBone.head_radius -> head_radius: float "'Radius of head of bone (for Envelope deform only)'"
-EditBone.hide -> hide: boolean "'Bone is not visible when in Edit Mode'"
-EditBone.hide_select -> hide_select: boolean "'Bone is able to be selected'"
-EditBone.hinge -> use_hinge: boolean "'Bone inherits rotation or scale from parent bone'"
-EditBone.inherit_scale -> use_inherit_scale: boolean "'Bone inherits scaling from parent bone'"
-EditBone.layer -> layers: boolean "'Layers bone exists in'"
-EditBone.local_location -> use_local_location: boolean "'Bone location is set in local space'"
-EditBone.lock -> lock: boolean "'Bone is not able to be transformed when in Edit Mode'"
-EditBone.matrix -> matrix: float, "'(read-only) Read-only matrix calculated from the roll (armature space)'"
-EditBone.multiply_vertexgroup_with_envelope -> use_envelope_multiply: boolean "'When deforming bone, multiply effects of Vertex Group weights with Envelope influence'"
-EditBone.name -> name: string "'NO DESCRIPTION'"
-EditBone.parent -> parent: pointer "'Parent edit bone (in same Armature)'"
-EditBone.roll -> roll: float "'Bone rotation around head-tail axis'"
-EditBone.select -> select: boolean "'NO DESCRIPTION'"
-EditBone.select_head -> select_head: boolean "'NO DESCRIPTION'"
-EditBone.select_tail -> select_tail: boolean "'NO DESCRIPTION'"
-EditBone.tail -> tail: float "'Location of tail end of the bone'"
-EditBone.tail_radius -> tail_radius: float "'Radius of tail of bone (for Envelope deform only)'"
-EffectorWeights.all -> all: float '"All effector\'s weight"'
-EffectorWeights.boid -> boid: float "'Boid effector weight'"
-EffectorWeights.charge -> charge: float "'Charge effector weight'"
-EffectorWeights.curveguide -> curveguide: float "'Curve guide effector weight'"
-EffectorWeights.do_growing_hair -> apply_to_hair_growing: boolean "'Use force fields when growing hair'"
-EffectorWeights.drag -> drag: float "'Drag effector weight'"
-EffectorWeights.force -> force: float "'Force effector weight'"
-EffectorWeights.gravity -> gravity: float "'Global gravity weight'"
-EffectorWeights.group -> group: pointer "'Limit effectors to this Group'"
-EffectorWeights.harmonic -> harmonic: float "'Harmonic effector weight'"
-EffectorWeights.lennardjones -> lennardjones: float "'Lennard-Jones effector weight'"
-EffectorWeights.magnetic -> magnetic: float "'Magnetic effector weight'"
-EffectorWeights.texture -> texture: float "'Texture effector weight'"
-EffectorWeights.turbulence -> turbulence: float "'Turbulence effector weight'"
-EffectorWeights.vortex -> vortex: float "'Vortex effector weight'"
-EffectorWeights.wind -> wind: float "'Wind effector weight'"
-EnumPropertyItem.description -> description: string, '"(read-only) Description of the item\'s purpose"'
-EnumPropertyItem.identifier -> identifier: string, "'(read-only) Unique name used in the code and scripting'"
-EnumPropertyItem.name -> name: string, "'(read-only) Human readable name'"
-EnumPropertyItem.value -> value: int, "'(read-only) Value of the item'"
-EnvironmentMap.clip_end -> clip_end: float "'Objects further than this are not visible to map'"
-EnvironmentMap.clip_start -> clip_start: float "'Objects nearer than this are not visible to map'"
-EnvironmentMap.depth -> depth: int "'Number of times a map will be rendered recursively (mirror effects.)'"
-EnvironmentMap.ignore_layers -> layers_ignore: boolean "'Hide objects on these layers when generating the Environment Map'"
-EnvironmentMap.mapping -> mapping: enum "'NO DESCRIPTION'"
-EnvironmentMap.resolution -> resolution: int "'Pixel resolution of the rendered environment map'"
-EnvironmentMap.source -> source: enum "'NO DESCRIPTION'"
-EnvironmentMap.viewpoint_object -> viewpoint_object: pointer '"Object to use as the environment map\'s viewpoint location"'
-EnvironmentMap.zoom -> zoom: float "'NO DESCRIPTION'"
-Event.alt -> is_pressed_alt: boolean, "'(read-only) True when the Alt/Option key is held'"
-Event.ascii -> ascii: string, "'(read-only) Single ASCII character for this event'"
-Event.ctrl -> is_pressed_ctrl: boolean, "'(read-only) True when the Ctrl key is held'"
-Event.mouse_prev_x -> mouse_prev_x: int, "'(read-only) The window relative vertical location of the mouse'"
-Event.mouse_prev_y -> mouse_prev_y: int, "'(read-only) The window relative horizontal location of the mouse'"
-Event.mouse_region_x -> mouse_region_x: int, "'(read-only) The region relative vertical location of the mouse'"
-Event.mouse_region_y -> mouse_region_y: int, "'(read-only) The region relative horizontal location of the mouse'"
-Event.mouse_x -> mouse_x: int, "'(read-only) The window relative vertical location of the mouse'"
-Event.mouse_y -> mouse_y: int, "'(read-only) The window relative horizontal location of the mouse'"
-Event.oskey -> is_pressed_cmd: boolean, "'(read-only) True when the Cmd key is held'"
-Event.shift -> is_pressed_shift: boolean, "'(read-only) True when the Shift key is held'"
-Event.type -> type: enum, "'(read-only)'"
-Event.value -> value: enum, "'(read-only) The type of event, only applies to some'"
-FCurve.array_index -> array_index: int "'Index to the specific property affected by F-Curve if applicable'"
-FCurve.auto_clamped_handles -> use_auto_handle_clamp: boolean "'All auto-handles for F-Curve are clamped'"
-FCurve.color -> color: float "'Color of the F-Curve in the Graph Editor'"
-FCurve.color_mode -> color_mode: enum "'Method used to determine color of F-Curve in Graph Editor'"
-FCurve.data_path -> data_path: string "'RNA Path to property affected by F-Curve'"
-FCurve.driver -> driver: pointer, "'(read-only) Channel Driver (only set for Driver F-Curves)'"
-FCurve.enabled -> enabled: boolean "'False when F-Curve could not be evaluated in past, so should be skipped when evaluating'"
-FCurve.extrapolation -> extrapolation: enum "'NO DESCRIPTION'"
-FCurve.group -> group: pointer "'Action Group that this F-Curve belongs to'"
-FCurve.hide -> hide: boolean "'F-Curve and its keyframes are hidden in the Graph Editor graphs'"
-FCurve.keyframe_points -> keyframe_points: collection, "'(read-only) User-editable keyframes'"
-FCurve.lock -> lock: boolean '"F-Curve\'s settings cannot be edited"'
-FCurve.modifiers -> modifiers: collection, "'(read-only) Modifiers affecting the shape of the F-Curve'"
-FCurve.mute -> mute: boolean "'F-Curve is not evaluated'"
-FCurve.sampled_points -> sampled_points: collection, "'(read-only) Sampled animation data'"
-FCurve.select -> select: boolean "'F-Curve is selected for editing'"
-FCurveModifiers.active -> active: pointer "'Active F-Curve Modifier'"
-FCurveSample.co -> co: float "'Point coordinates'"
-FCurveSample.select -> select: boolean "'Selection status'"
-FModifier.active -> active: boolean "'F-Curve Modifier is the one being edited'"
-NEGATE * FModifier.disabled -> use: boolean, "'(read-only) F-Curve Modifier has invalid settings and will not be evaluated'"
-FModifier.expanded -> show_expanded: boolean '"F-Curve Modifier\'s panel is expanded in UI"'
-FModifier.mute -> mute: boolean "'F-Curve Modifier will not be evaluated'"
-FModifier.type -> type: enum, "'(read-only) F-Curve Modifier Type'"
-FModifierEnvelopeControlPoint.frame -> frame: float "'Frame this control-point occurs on'"
-FModifierEnvelopeControlPoint.maximum -> max: float "'Upper bound of envelope at this control-point'"
-FModifierEnvelopeControlPoint.minimum -> min: float "'Lower bound of envelope at this control-point'"
-FModifier|FModifierCycles.after_cycles -> after_cycles: float "'Maximum number of cycles to allow after last keyframe. (0 = infinite)'"
-FModifier|FModifierCycles.after_mode -> after_mode: enum "'Cycling mode to use after last keyframe'"
-FModifier|FModifierCycles.before_cycles -> before_cycles: float "'Maximum number of cycles to allow before first keyframe. (0 = infinite)'"
-FModifier|FModifierCycles.before_mode -> before_mode: enum "'Cycling mode to use before first keyframe'"
-FModifier|FModifierEnvelope.control_points -> control_points: collection, "'(read-only) Control points defining the shape of the envelope'"
-FModifier|FModifierEnvelope.default_maximum -> default_max: float "'Upper distance from Reference Value for 1:1 default influence'"
-FModifier|FModifierEnvelope.default_minimum -> default_min: float "'Lower distance from Reference Value for 1:1 default influence'"
-FModifier|FModifierEnvelope.reference_value -> reference_value: float '"Value that envelope\'s influence is centered around / based on"'
-FModifier|FModifierFunctionGenerator.additive -> use_additive: boolean "'Values generated by this modifier are applied on top of the existing values instead of overwriting them'"
-FModifier|FModifierFunctionGenerator.amplitude -> amplitude: float "'Scale factor determining the maximum/minimum values'"
-FModifier|FModifierFunctionGenerator.function_type -> function_type: enum "'Type of built-in function to use'"
-FModifier|FModifierFunctionGenerator.phase_multiplier -> phase_multiplier: float '"Scale factor determining the \'speed\' of the function"'
-FModifier|FModifierFunctionGenerator.phase_offset -> phase_offset: float "'Constant factor to offset time by for function'"
-FModifier|FModifierFunctionGenerator.value_offset -> value_offset: float "'Constant factor to offset values by'"
-FModifier|FModifierGenerator.additive -> use_additive: boolean "'Values generated by this modifier are applied on top of the existing values instead of overwriting them'"
-FModifier|FModifierGenerator.coefficients -> coefficients: float '"Coefficients for \'x\' (starting from lowest power of x^0)"'
-FModifier|FModifierGenerator.mode -> mode: enum "'Type of generator to use'"
-FModifier|FModifierGenerator.poly_order -> poly_order: int '"The highest power of \'x\' for this polynomial. (number of coefficients - 1)"'
-FModifier|FModifierLimits.maximum_x -> max_x: float "'Highest X value to allow'"
-FModifier|FModifierLimits.maximum_y -> max_y: float "'Highest Y value to allow'"
-FModifier|FModifierLimits.minimum_x -> min_x: float "'Lowest X value to allow'"
-FModifier|FModifierLimits.minimum_y -> min_y: float "'Lowest Y value to allow'"
-FModifier|FModifierLimits.use_maximum_x -> use_max_x: boolean "'Use the maximum X value'"
-FModifier|FModifierLimits.use_maximum_y -> use_max_y: boolean "'Use the maximum Y value'"
-FModifier|FModifierLimits.use_minimum_x -> use_min_x: boolean "'Use the minimum X value'"
-FModifier|FModifierLimits.use_minimum_y -> use_min_y: boolean "'Use the minimum Y value'"
-FModifier|FModifierNoise.depth -> depth: int "'Amount of fine level detail present in the noise'"
-FModifier|FModifierNoise.modification -> modification: enum "'Method of modifying the existing F-Curve'"
-FModifier|FModifierNoise.phase -> phase: float "'A random seed for the noise effect'"
-FModifier|FModifierNoise.size -> size: float "'Scaling (in time) of the noise'"
-FModifier|FModifierNoise.strength -> strength: float "'Amplitude of the noise - the amount that it modifies the underlying curve'"
-FModifier|FModifierStepped.frame_end -> frame_end: float '"Frame that modifier\'s influence ends (if applicable)"'
-FModifier|FModifierStepped.frame_start -> frame_start: float '"Frame that modifier\'s influence starts (if applicable)"'
-FModifier|FModifierStepped.offset -> offset: float '"Reference number of frames before frames get held. Use to get hold for \'1-3\' vs \'5-7\' holding patterns"'
-FModifier|FModifierStepped.step_size -> step_size: float "'Number of frames to hold each value'"
-FModifier|FModifierStepped.use_frame_end -> use_frame_end: boolean '"Restrict modifier to only act before its \'end\' frame"'
-FModifier|FModifierStepped.use_frame_start -> use_frame_start: boolean '"Restrict modifier to only act after its \'start\' frame"'
-FieldSettings.do_absorption -> use_absorption: boolean "'Force gets absorbed by collision objects'"
-FieldSettings.do_location -> apply_to_location: boolean '"Effect particles\' location"'
-FieldSettings.do_rotation -> apply_to_rotation: boolean '"Effect particles\' dynamic rotation"'
-FieldSettings.falloff_power -> falloff_power: float "'Falloff power (real gravitational falloff = 2)'"
-FieldSettings.falloff_type -> falloff_type: enum "'Fall-off shape'"
-FieldSettings.flow -> flow: float "'Convert effector force into air flow velocity'"
-FieldSettings.force_2d -> use_2d_force: boolean "'Apply force only in 2d'"
-FieldSettings.global_coordinates -> use_global_coordinates: boolean "'Use effector/global coordinates for turbulence'"
-FieldSettings.guide_clump_amount -> guide_clump_amount: float "'Amount of clumping'"
-FieldSettings.guide_clump_shape -> guide_clump_shape: float "'Shape of clumping'"
-FieldSettings.guide_free -> guide_free: float '"Guide-free time from particle life\'s end"'
-FieldSettings.guide_kink_amplitude -> guide_kink_amplitude: float "'The amplitude of the offset'"
-FieldSettings.guide_kink_axis -> guide_kink_axis: enum "'Which axis to use for offset'"
-FieldSettings.guide_kink_frequency -> guide_kink_frequency: float "'The frequency of the offset (1/total length)'"
-FieldSettings.guide_kink_shape -> guide_kink_shape: float "'Adjust the offset to the beginning/end'"
-FieldSettings.guide_kink_type -> guide_kink_type: enum "'Type of periodic offset on the curve'"
-FieldSettings.guide_minimum -> guide_minimum: float "'The distance from which particles are affected fully'"
-FieldSettings.guide_path_add -> use_guide_path_add: boolean "'Based on distance/falloff it adds a portion of the entire path'"
-FieldSettings.harmonic_damping -> harmonic_damping: float "'Damping of the harmonic force'"
-FieldSettings.inflow -> inflow: float "'Inwards component of the vortex force'"
-FieldSettings.linear_drag -> linear_drag: float "'Drag component proportional to velocity'"
-FieldSettings.maximum_distance -> distance_max: float "'Maximum distance for the field to work'"
-FieldSettings.minimum_distance -> distance_min: float '"Minimum distance for the field\'s fall-off"'
-FieldSettings.multiple_springs -> use_multiple_springs: boolean "'Every point is effected by multiple springs'"
-FieldSettings.noise -> noise: float "'Noise of the force'"
-FieldSettings.quadratic_drag -> quadratic_drag: float "'Drag component proportional to the square of velocity'"
-FieldSettings.radial_falloff -> radial_falloff: float "'Radial falloff power (real gravitational falloff = 2)'"
-FieldSettings.radial_maximum -> radial_max: float "'Maximum radial distance for the field to work'"
-FieldSettings.radial_minimum -> radial_min: float '"Minimum radial distance for the field\'s fall-off"'
-FieldSettings.rest_length -> rest_length: float "'Rest length of the harmonic force'"
-FieldSettings.root_coordinates -> use_root_coordinates: boolean "'Texture coordinates from root particle locations'"
-FieldSettings.seed -> seed: int "'Seed of the noise'"
-FieldSettings.shape -> shape: enum "'Which direction is used to calculate the effector force'"
-FieldSettings.size -> size: float "'Size of the noise'"
-FieldSettings.strength -> strength: float "'Strength of force field'"
-FieldSettings.texture -> texture: pointer "'Texture to use as force'"
-FieldSettings.texture_mode -> texture_mode: enum "'How the texture effect is calculated (RGB & Curl need a RGB texture else Gradient will be used instead)'"
-FieldSettings.texture_nabla -> texture_nabla: float "'Defines size of derivative offset used for calculating gradient and curl'"
-FieldSettings.type -> type: enum "'Type of field'"
-FieldSettings.use_coordinates -> use_object_coordinates: boolean "'Use object/global coordinates for texture'"
-FieldSettings.use_guide_path_weight -> use_guide_path_weight: boolean "'Use curve weights to influence the particle influence along the curve'"
-FieldSettings.use_max_distance -> use_max_distance: boolean "'Use a maximum distance for the field to work'"
-FieldSettings.use_min_distance -> use_min_distance: boolean '"Use a minimum distance for the field\'s fall-off"'
-FieldSettings.use_radial_max -> use_radial_max: boolean "'Use a maximum radial distance for the field to work'"
-FieldSettings.use_radial_min -> use_radial_min: boolean '"Use a minimum radial distance for the field\'s fall-off"'
-FieldSettings.z_direction -> z_direction: enum "'Effect in full or only positive/negative Z direction'"
-FileSelectParams.directory -> directory: string "'Directory displayed in the file browser'"
-FileSelectParams.display -> display: enum "'Display mode for the file list'"
-FileSelectParams.do_filter -> use_filter: boolean "'Enable filtering of files'"
-FileSelectParams.file -> file: string "'Active file in the file browser'"
-FileSelectParams.filter_blender -> use_filter_blender: boolean "'Show .blend files'"
-FileSelectParams.filter_folder -> use_filter_folder: boolean "'Show folders'"
-FileSelectParams.filter_font -> use_filter_font: boolean "'Show font files'"
-FileSelectParams.filter_image -> use_filter_image: boolean "'Show image files'"
-FileSelectParams.filter_movie -> use_filter_movie: boolean "'Show movie files'"
-FileSelectParams.filter_script -> use_filter_script: boolean "'Show script files'"
-FileSelectParams.filter_sound -> use_filter_sound: boolean "'Show sound files'"
-FileSelectParams.filter_text -> use_filter_text: boolean "'Show text files'"
-NEGATE * FileSelectParams.hide_dot -> show_hidden: boolean "'Hide hidden dot files'"
-FileSelectParams.sort -> sort: enum "'NO DESCRIPTION'"
-FileSelectParams.title -> title: string, "'(read-only) Title for the file browser'"
-FluidSettings.type -> type: enum "'Type of participation in the fluid simulation'"
-FluidSettings|ControlFluidSettings.active -> use: boolean "'Object contributes to the fluid simulation'"
-FluidSettings|ControlFluidSettings.attraction_radius -> attraction_radius: float "'Specifies the force field radius around the control object'"
-FluidSettings|ControlFluidSettings.attraction_strength -> attraction_strength: float "'Force strength for directional attraction towards the control object'"
-FluidSettings|ControlFluidSettings.end_time -> end_time: float "'Specifies time when the control particles are deactivated'"
-FluidSettings|ControlFluidSettings.quality -> quality: float "'Specifies the quality which is used for object sampling. (higher = better but slower)'"
-FluidSettings|ControlFluidSettings.reverse_frames -> use_reverse_frames: boolean "'Reverse control object movement'"
-FluidSettings|ControlFluidSettings.start_time -> start_time: float "'Specifies time when the control particles are activated'"
-FluidSettings|ControlFluidSettings.velocity_radius -> velocity_radius: float "'Specifies the force field radius around the control object'"
-FluidSettings|ControlFluidSettings.velocity_strength -> velocity_strength: float '"Force strength of how much of the control object\'s velocity is influencing the fluid velocity"'
-FluidSettings|DomainFluidSettings.compressibility -> compressibility: float "'Allowed compressibility due to gravitational force for standing fluid. (directly affects simulation step size)'"
-FluidSettings|DomainFluidSettings.end_time -> end_time: float "'Simulation time of the last blender frame'"
-FluidSettings|DomainFluidSettings.generate_particles -> generate_particles: float "'Amount of particles to generate (0=off, 1=normal, >1=more)'"
-FluidSettings|DomainFluidSettings.generate_speed_vectors -> use_speed_vectors: boolean "'Generate speed vectors for vector blur'"
-FluidSettings|DomainFluidSettings.gravity -> gravity: float "'Gravity in X, Y and Z direction'"
-FluidSettings|DomainFluidSettings.grid_levels -> grid_levels: int "'Number of coarsened grids to use (-1 for automatic)'"
-FluidSettings|DomainFluidSettings.memory_estimate -> memory_estimate: string, "'(read-only) Estimated amount of memory needed for baking the domain'"
-FluidSettings|DomainFluidSettings.override_time -> use_time_override: boolean '"Use a custom start and end time (in seconds) instead of the scene\'s timeline"'
-FluidSettings|DomainFluidSettings.partial_slip_factor -> partial_slip_factor: float "'Amount of mixing between no- and free-slip, 0 is no slip and 1 is free slip'"
-FluidSettings|DomainFluidSettings.path -> path: string "'Directory (and/or filename prefix) to store baked fluid simulation files in'"
-FluidSettings|DomainFluidSettings.preview_resolution -> preview_resolution: int "'Preview resolution in X,Y and Z direction'"
-FluidSettings|DomainFluidSettings.real_world_size -> real_world_size: float "'Size of the simulation domain in metres'"
-FluidSettings|DomainFluidSettings.render_display_mode -> render_display_mode: enum "'How to display the mesh for rendering'"
-FluidSettings|DomainFluidSettings.resolution -> resolution: int "'Domain resolution in X,Y and Z direction'"
-FluidSettings|DomainFluidSettings.reverse_frames -> use_reverse_frames: boolean "'Reverse fluid frames'"
-FluidSettings|DomainFluidSettings.slip_type -> slip_type: enum "'NO DESCRIPTION'"
-FluidSettings|DomainFluidSettings.start_time -> start_time: float "'Simulation time of the first blender frame'"
-FluidSettings|DomainFluidSettings.surface_smoothing -> surface_smooth: float "'Amount of surface smoothing. A value of 0 is off, 1 is normal smoothing and more than 1 is extra smoothing'"
-FluidSettings|DomainFluidSettings.surface_subdivisions -> surface_subdivisions: int "'Number of isosurface subdivisions. This is necessary for the inclusion of particles into the surface generation. Warning - can lead to longer computation times!'"
-FluidSettings|DomainFluidSettings.tracer_particles -> tracer_particles: int "'Number of tracer particles to generate'"
-FluidSettings|DomainFluidSettings.viewport_display_mode -> viewport_display_mode: enum "'How to display the mesh in the viewport'"
-FluidSettings|DomainFluidSettings.viscosity_base -> viscosity_base: float "'Viscosity setting: value that is multiplied by 10 to the power of (exponent*-1)'"
-FluidSettings|DomainFluidSettings.viscosity_exponent -> viscosity_exponent: int "'Negative exponent for the viscosity value (to simplify entering small values e.g. 5*10^-6.)'"
-FluidSettings|DomainFluidSettings.viscosity_preset -> viscosity_preset: enum "'Set viscosity of the fluid to a preset value, or use manual input'"
-FluidSettings|FluidFluidSettings.active -> use: boolean "'Object contributes to the fluid simulation'"
-FluidSettings|FluidFluidSettings.export_animated_mesh -> use_animated_mesh: boolean "'Export this mesh as an animated one. Slower, only use if really necessary (e.g. armatures or parented objects), animated pos/rot/scale IPOs do not require it'"
-FluidSettings|FluidFluidSettings.initial_velocity -> initial_velocity: float "'Initial velocity of fluid'"
-FluidSettings|FluidFluidSettings.volume_initialization -> volume_initialization: enum "'Volume initialization type'"
-FluidSettings|InflowFluidSettings.active -> use: boolean "'Object contributes to the fluid simulation'"
-FluidSettings|InflowFluidSettings.export_animated_mesh -> use_animated_mesh: boolean "'Export this mesh as an animated one. Slower, only use if really necessary (e.g. armatures or parented objects), animated pos/rot/scale IPOs do not require it'"
-FluidSettings|InflowFluidSettings.inflow_velocity -> inflow_velocity: float "'Initial velocity of fluid'"
-FluidSettings|InflowFluidSettings.local_coordinates -> use_local_coordinates: boolean "'Use local coordinates for inflow. (e.g. for rotating objects)'"
-FluidSettings|InflowFluidSettings.volume_initialization -> volume_initialization: enum "'Volume initialization type'"
-FluidSettings|ObstacleFluidSettings.active -> use: boolean "'Object contributes to the fluid simulation'"
-FluidSettings|ObstacleFluidSettings.export_animated_mesh -> use_animated_mesh: boolean "'Export this mesh as an animated one. Slower, only use if really necessary (e.g. armatures or parented objects), animated pos/rot/scale IPOs do not require it'"
-FluidSettings|ObstacleFluidSettings.impact_factor -> impact_factor: float "'This is an unphysical value for moving objects - it controls the impact an obstacle has on the fluid, =0 behaves a bit like outflow (deleting fluid), =1 is default, while >1 results in high forces. Can be used to tweak total mass'"
-FluidSettings|ObstacleFluidSettings.partial_slip_factor -> partial_slip_factor: float "'Amount of mixing between no- and free-slip, 0 is no slip and 1 is free slip'"
-FluidSettings|ObstacleFluidSettings.slip_type -> slip_type: enum "'NO DESCRIPTION'"
-FluidSettings|ObstacleFluidSettings.volume_initialization -> volume_initialization: enum "'Volume initialization type'"
-FluidSettings|OutflowFluidSettings.active -> use: boolean "'Object contributes to the fluid simulation'"
-FluidSettings|OutflowFluidSettings.export_animated_mesh -> use_animated_mesh: boolean "'Export this mesh as an animated one. Slower, only use if really necessary (e.g. armatures or parented objects), animated pos/rot/scale IPOs do not require it'"
-FluidSettings|OutflowFluidSettings.volume_initialization -> volume_initialization: enum "'Volume initialization type'"
-FluidSettings|ParticleFluidSettings.alpha_influence -> alpha_influence: float "'Amount of particle alpha change, inverse of size influence: 0=off (all same alpha), 1=full. (large particles get lower alphas, smaller ones higher values)'"
-FluidSettings|ParticleFluidSettings.drops -> use_drops: boolean "'Show drop particles'"
-FluidSettings|ParticleFluidSettings.floats -> use_floats: boolean "'Show floating foam particles'"
-FluidSettings|ParticleFluidSettings.particle_influence -> particle_influence: float "'Amount of particle size scaling: 0=off (all same size), 1=full (range 0.2-2.0), >1=stronger'"
-FluidSettings|ParticleFluidSettings.path -> path: string "'Directory (and/or filename prefix) to store and load particles from'"
-FluidSettings|ParticleFluidSettings.tracer -> use_tracer: boolean "'Show tracer particles'"
-Function.description -> description: string, '"(read-only) Description of the Function\'s purpose"'
-Function.identifier -> identifier: string, "'(read-only) Unique name used in the code and scripting'"
-Function.parameters -> parameters: collection, "'(read-only) Parameters for the function'"
-Function.registered -> is_registered: boolean, "'(read-only) Function is registered as callback as part of type registration'"
-Function.registered_optional -> is_registered_optional: boolean, "'(read-only) Function is optionally registered as callback part of type registration'"
-GPencilFrame.frame_number -> frame_number: int "'The frame on which this sketch appears'"
-GPencilFrame.paint_lock -> is_edited: boolean "'Frame is being edited (painted on)'"
-GPencilFrame.select -> select: boolean "'Frame is selected for editing in the DopeSheet'"
-GPencilFrame.strokes -> strokes: collection, "'(read-only) Freehand curves defining the sketch on this frame'"
-GPencilLayer.active -> active: boolean "'Set active layer for editing'"
-GPencilLayer.active_frame -> active_frame: pointer, "'(read-only) Frame currently being displayed for this layer'"
-GPencilLayer.color -> color: float "'Color for all strokes in this layer'"
-GPencilLayer.frame_lock -> lock_frame: boolean "'Lock current frame displayed by layer'"
-GPencilLayer.frames -> frames: collection, "'(read-only) Sketches for this layer on different frames'"
-GPencilLayer.hide -> hide: boolean "'Set layer Visibility'"
-GPencilLayer.info -> info: string "'Layer name'"
-GPencilLayer.line_thickness -> line_width: int "'Thickness of strokes (in pixels)'"
-GPencilLayer.lock -> lock: boolean "'Protect layer from further editing and/or frame changes'"
-GPencilLayer.max_ghost_range -> ghost_range_max: int '"Maximum number of frames on either side of the active frame to show (0 = show the \'first\' available sketch on either side)"'
-GPencilLayer.opacity -> opacity: float "'Layer Opacity'"
-GPencilLayer.select -> select: boolean "'Layer is selected for editing in the DopeSheet'"
-GPencilLayer.show_points -> show_points: boolean "'Draw the points which make up the strokes (for debugging purposes)'"
-GPencilLayer.use_onion_skinning -> use_onion_skinning: boolean "'Ghost frames on either side of frame'"
-GPencilStroke.points -> points: collection, "'(read-only) Stroke data points'"
-GPencilStrokePoint.co -> co: float "'NO DESCRIPTION'"
-GPencilStrokePoint.pressure -> pressure: float "'Pressure of tablet at point when drawing it'"
-GameObjectSettings.actor -> use_actor: boolean "'Object is detected by the Near and Radar sensor'"
-GameObjectSettings.actuators -> actuators: collection, "'(read-only) Game engine actuators to act on events'"
-GameObjectSettings.all_states -> use_all_states: boolean "'Set all state bits'"
-GameObjectSettings.anisotropic_friction -> use_anisotropic_friction: boolean "'Enable anisotropic friction'"
-GameObjectSettings.collision_bounds -> collision_bounds: enum "'Selects the collision type'"
-GameObjectSettings.collision_compound -> use_collision_compound: boolean "'Add children to form a compound collision object'"
-GameObjectSettings.collision_margin -> collision_margin: float "'Extra margin around object for collision detection, small amount required for stability'"
-GameObjectSettings.controllers -> controllers: collection, "'(read-only) Game engine controllers to process events, connecting sensor to actuators'"
-GameObjectSettings.damping -> damping: float "'General movement damping'"
-GameObjectSettings.debug_state -> show_debug_state: boolean "'Print state debug info in the game engine'"
-GameObjectSettings.form_factor -> form_factor: float "'Form factor scales the inertia tensor'"
-GameObjectSettings.friction_coefficients -> friction_coefficients: float "'Relative friction coefficient in the in the X, Y and Z directions, when anisotropic friction is enabled'"
-GameObjectSettings.ghost -> use_ghost: boolean "'Object does not restitute collisions, like a ghost'"
-GameObjectSettings.initial_state -> states_initial: boolean "'Initial state when the game starts'"
-GameObjectSettings.lock_x_axis -> lock_location_x: boolean "'Disable simulation of linear motion along the X axis'"
-GameObjectSettings.lock_x_rot_axis -> lock_rotation_x: boolean "'Disable simulation of angular motion along the X axis'"
-GameObjectSettings.lock_y_axis -> lock_location_y: boolean "'Disable simulation of linear motion along the Y axis'"
-GameObjectSettings.lock_y_rot_axis -> lock_rotation_y: boolean "'Disable simulation of angular motion along the Y axis'"
-GameObjectSettings.lock_z_axis -> lock_location_z: boolean "'Disable simulation of linear motion along the Z axis'"
-GameObjectSettings.lock_z_rot_axis -> lock_rotation_z: boolean "'Disable simulation of angular motion along the Z axis'"
-GameObjectSettings.mass -> mass: float "'Mass of the object'"
-GameObjectSettings.material_physics -> use_material_physics: boolean "'Use physics settings in materials'"
-GameObjectSettings.maximum_velocity -> velocity_max: float "'Clamp velocity to this maximum speed'"
-GameObjectSettings.minimum_velocity -> velocity_min: float "'Clamp velocity to this minimum speed (except when totally still)'"
-NEGATE * GameObjectSettings.no_sleeping -> use_sleep: boolean "'Disable auto (de)activation in physics simulation'"
-GameObjectSettings.physics_type -> physics_type: enum "'Selects the type of physical representation'"
-GameObjectSettings.properties -> properties: collection, "'(read-only) Game engine properties'"
-GameObjectSettings.radius -> radius: float "'Radius of bounding sphere and material physics'"
-GameObjectSettings.rotate_from_normal -> use_rotate_from_normal: boolean "'Use face normal to rotate object, so that it points away from the surface'"
-GameObjectSettings.rotation_damping -> rotation_damping: float "'General rotation damping'"
-GameObjectSettings.sensors -> sensors: collection, "'(read-only) Game engine sensor to detect events'"
-GameObjectSettings.show_actuators -> show_actuators: boolean "'Shows actuators for this object in the user interface'"
-GameObjectSettings.show_controllers -> show_controllers: boolean "'Shows controllers for this object in the user interface'"
-GameObjectSettings.show_sensors -> show_sensors: boolean "'Shows sensors for this object in the user interface'"
-GameObjectSettings.show_state_panel -> show_state_panel: boolean "'Show state panel'"
-GameObjectSettings.soft_body -> soft_body: pointer, "'(read-only) Settings for Bullet soft body simulation'"
-GameObjectSettings.use_activity_culling -> use_activity_culling: boolean "'Disable simulation of angular motion along the Z axis'"
-GameObjectSettings.use_collision_bounds -> use_collision_bounds: boolean "'Specify a collision bounds type other than the default'"
-GameObjectSettings.used_state -> states_used: boolean, "'(read-only) States which are being used by controllers'"
-GameObjectSettings.visible_state -> states_visible: boolean "'State determining which controllers are displayed'"
-GameProperty.debug -> show_debug: boolean "'Print debug information for this property'"
-GameProperty.name -> name: string '"Available as GameObject attributes in the game engine\'s python API"'
-GameProperty.type -> type: enum "'NO DESCRIPTION'"
-GameProperty|GameBooleanProperty.value -> value: boolean "'Property value'"
-GameProperty|GameFloatProperty.value -> value: float "'Property value'"
-GameProperty|GameIntProperty.value -> value: int "'Property value'"
-GameProperty|GameStringProperty.value -> value: string "'Property value'"
-GameProperty|GameTimerProperty.value -> value: float "'Property value'"
-GameSoftBodySettings.bending_const -> use_bending_constraints: boolean "'Enable bending constraints'"
-GameSoftBodySettings.cluster_iterations -> cluster_iterations: int "'Specify the number of cluster iterations'"
-GameSoftBodySettings.cluster_rigid_to_softbody -> use_cluster_rigid_to_softbody: boolean "'Enable cluster collision between soft and rigid body'"
-GameSoftBodySettings.cluster_soft_to_softbody -> use_cluster_soft_to_softbody: boolean "'Enable cluster collision between soft and soft body'"
-GameSoftBodySettings.dynamic_friction -> dynamic_friction: float "'Dynamic Friction'"
-GameSoftBodySettings.linstiff -> linear_stiffness: float "'Linear stiffness of the soft body links'"
-GameSoftBodySettings.margin -> margin: float "'Collision margin for soft body. Small value makes the algorithm unstable'"
-GameSoftBodySettings.position_iterations -> position_iterations: int "'Position solver iterations'"
-GameSoftBodySettings.shape_match -> use_shape_match: boolean "'Enable soft body shape matching goal'"
-GameSoftBodySettings.threshold -> threshold: float "'Shape matching threshold'"
-GameSoftBodySettings.welding -> weld_threshold: float "'Welding threshold: distance between nearby vertices to be considered equal => set to 0.0 to disable welding test and speed up scene loading (ok if the mesh has no duplicates)'"
-Header.bl_idname -> bl_idname: string "'NO DESCRIPTION'"
-Header.bl_space_type -> bl_space_type: enum "'NO DESCRIPTION'"
-Header.layout -> layout: pointer, "'(read-only)'"
-Histogram.mode -> mode: enum "'Channels to display when drawing the histogram'"
-ID.fake_user -> use_fake_user: boolean "'Saves this datablock even if it has no users'"
-ID.library -> library: pointer, "'(read-only) Library file the datablock is linked from'"
-ID.name -> name: string "'Unique datablock ID name'"
-ID.tag -> tag: boolean "'Tools can use this to tag data, (initial state is undefined)'"
-ID.users -> users: int, "'(read-only) Number of times this datablock is referenced'"
-IDProperty.collection -> collection: collection, "'(read-only)'"
-IDProperty.double -> double: float "'NO DESCRIPTION'"
-IDProperty.double_array -> double_array: float "'NO DESCRIPTION'"
-IDProperty.float -> float: float "'NO DESCRIPTION'"
-IDProperty.float_array -> float_array: float "'NO DESCRIPTION'"
-IDProperty.group -> group: pointer, "'(read-only)'"
-IDProperty.int -> int: int "'NO DESCRIPTION'"
-IDProperty.int_array -> int_array: int "'NO DESCRIPTION'"
-IDProperty.string -> string: string "'NO DESCRIPTION'"
-IDPropertyGroup.name -> name: string "'Unique name used in the code and scripting'"
-IDPropertyGroup|NetRenderJob.name -> name: string "'NO DESCRIPTION'"
-IDPropertyGroup|NetRenderSettings.active_blacklisted_slave_index -> active_blacklisted_slave_index: int "'NO DESCRIPTION'"
-IDPropertyGroup|NetRenderSettings.active_job_index -> active_job_index: int "'NO DESCRIPTION'"
-IDPropertyGroup|NetRenderSettings.active_slave_index -> active_slave_index: int "'NO DESCRIPTION'"
-IDPropertyGroup|NetRenderSettings.chunks -> chunks: int "'Number of frame to dispatch to each slave in one chunk'"
-IDPropertyGroup|NetRenderSettings.job_category -> job_category: string "'Category of the job'"
-IDPropertyGroup|NetRenderSettings.job_id -> job_id: string "'id of the last sent render job'"
-IDPropertyGroup|NetRenderSettings.job_name -> job_name: string "'Name of the job'"
-IDPropertyGroup|NetRenderSettings.jobs -> jobs: collection, "'(read-only)'"
-IDPropertyGroup|NetRenderSettings.master_broadcast -> use_master_broadcast: boolean "'broadcast master server address on local network'"
-IDPropertyGroup|NetRenderSettings.master_clear -> use_master_clear: boolean "'delete saved files on exit'"
-IDPropertyGroup|NetRenderSettings.mode -> mode: enum "'Mode of operation of this instance'"
-IDPropertyGroup|NetRenderSettings.path -> path: string "'Path for temporary files'"
-IDPropertyGroup|NetRenderSettings.priority -> priority: int "'Priority of the job'"
-IDPropertyGroup|NetRenderSettings.server_address -> server_address: string "'IP or name of the master render server'"
-IDPropertyGroup|NetRenderSettings.server_port -> server_port: int "'port of the master render server'"
-IDPropertyGroup|NetRenderSettings.slave_clear -> use_slave_clear: boolean "'delete downloaded files on exit'"
-IDPropertyGroup|NetRenderSettings.slave_outputlog -> use_slave_output_log: boolean "'Output render text log to console as well as sending it to the master'"
-IDPropertyGroup|NetRenderSettings.slave_thumb -> use_slave_thumb: boolean "'Generate thumbnails on slaves instead of master'"
-IDPropertyGroup|NetRenderSettings.slaves -> slaves: collection, "'(read-only)'"
-IDPropertyGroup|NetRenderSettings.slaves_blacklist -> slaves_blacklist: collection, "'(read-only)'"
-IDPropertyGroup|NetRenderSlave.name -> name: string "'NO DESCRIPTION'"
-IDPropertyGroup|OperatorFileListElement.name -> name: string "'the name of a file or directory within a file list'"
-IDPropertyGroup|OperatorMousePath.loc -> loc: float "'Mouse location'"
-IDPropertyGroup|OperatorMousePath.time -> time: float "'Time of mouse location'"
-IDPropertyGroup|OperatorStrokeElement.location -> location: float "'NO DESCRIPTION'"
-IDPropertyGroup|OperatorStrokeElement.mouse -> mouse: float "'NO DESCRIPTION'"
-IDPropertyGroup|OperatorStrokeElement.pen_flip -> pen_flip: boolean "'NO DESCRIPTION'"
-IDPropertyGroup|OperatorStrokeElement.pressure -> pressure: float "'Tablet pressure'"
-IDPropertyGroup|OperatorStrokeElement.time -> time: float "'NO DESCRIPTION'"
-IDPropertyGroup|PoseTemplate.name -> name: string "'NO DESCRIPTION'"
-IDPropertyGroup|PoseTemplateSettings.active_template_index -> active_template_index: int "'NO DESCRIPTION'"
-IDPropertyGroup|PoseTemplateSettings.generate_def_rig -> use_generate_deform_rig: boolean "'Create a copy of the metarig, constrainted by the generated rig'"
-IDPropertyGroup|PoseTemplateSettings.templates -> templates: collection, "'(read-only)'"
-+ * ID|Action.fcurves -> fcurves: collection, "'(read-only) The individual F-Curves that make up the Action'"
-+ * ID|Action.groups -> groups: collection, "'(read-only) Convenient groupings of F-Curves'"
-+ * ID|Action.pose_markers -> pose_markers: collection, "'(read-only) Markers specific to this Action, for labeling poses'"
-+ * ID|Armature.animation_data -> animation_data: pointer, "'(read-only) Animation data for this datablock'"
-+ * ID|Armature.auto_ik -> use_auto_ik: boolean "'Add temporaral IK constraints while grabbing bones in Pose Mode'"
-+ * ID|Armature.bones -> bones: collection, "'(read-only)'"
-+ * ID|Armature.deform_envelope -> use_deform_envelopes: boolean "'Enable Bone Envelopes when defining deform'"
-+ * ID|Armature.deform_quaternion -> use_deform_preserve_volume: boolean "'Deform rotation interpolation with quaternions'"
-+ * ID|Armature.deform_vertexgroups -> use_deform_vertex_groups: boolean "'Enable Vertex Groups when defining deform'"
-+ * ID|Armature.delay_deform -> use_deform_delay: boolean '"Don\'t deform children when manipulating bones in Pose Mode"'
-+ * ID|Armature.draw_axes -> show_axes: boolean "'Draw bone axes'"
-+ * ID|Armature.draw_custom_bone_shapes -> show_bone_custom_shapes: boolean "'Draw bones with their custom shapes'"
-+ * ID|Armature.draw_group_colors -> show_group_colors: boolean "'Draw bone group colors'"
-+ * ID|Armature.draw_names -> show_names: boolean "'Draw bone names'"
-+ * ID|Armature.drawtype -> draw_type: enum "'NO DESCRIPTION'"
-+ * ID|Armature.edit_bones -> edit_bones: collection, "'(read-only)'"
-+ * ID|Armature.ghost_frame_end -> ghost_frame_end: int '"End frame of range of Ghosts to display (not for \'Around Current Frame\' Onion-skinning method)"'
-+ * ID|Armature.ghost_frame_start -> ghost_frame_start: int '"Starting frame of range of Ghosts to display (not for \'Around Current Frame\' Onion-skinning method)"'
-+ * ID|Armature.ghost_only_selected -> show_only_ghost_selected: boolean "'NO DESCRIPTION'"
-+ * ID|Armature.ghost_size -> ghost_size: int '"Frame step for Ghosts (not for \'On Keyframes\' Onion-skinning method)"'
-+ * ID|Armature.ghost_step -> ghost_step: int '"Number of frame steps on either side of current frame to show as ghosts (only for \'Around Current Frame\' Onion-skinning method)"'
-+ * ID|Armature.ghost_type -> ghost_type: enum "'Method of Onion-skinning for active Action'"
-+ * ID|Armature.layer -> layers: boolean "'Armature layer visibility'"
-+ * ID|Armature.layer_protection -> layers_protected: boolean "'Protected layers in Proxy Instances are restored to Proxy settings on file reload and undo'"
-+ * ID|Armature.pose_position -> pose_position: enum "'Show armature in binding pose or final posed state'"
-+ * ID|Armature.x_axis_mirror -> use_mirror_x: boolean "'Apply changes to matching bone on opposite side of X-Axis'"
-+ * ID|Brush.add_col -> cursor_color_add: float "'Color of cursor when adding'"
-+ * ID|Brush.autosmooth_factor -> autosmooth_factor: float "'Amount of smoothing to automatically apply to each stroke'"
-+ * ID|Brush.blend -> blend: enum "'Brush blending mode'"
-+ * ID|Brush.clone_alpha -> clone_alpha: float "'Opacity of clone image display'"
-+ * ID|Brush.clone_image -> clone_image: pointer "'Image for clone tool'"
-+ * ID|Brush.clone_offset -> clone_offset: float "'NO DESCRIPTION'"
-+ * ID|Brush.color -> color: float "'NO DESCRIPTION'"
-+ * ID|Brush.crease_pinch_factor -> crease_pinch_factor: float "'How much the crease brush pinches'"
-+ * ID|Brush.curve -> curve: pointer, "'(read-only) Editable falloff curve'"
-+ * ID|Brush.direction -> direction: enum "'Mapping type to use for this image in the game engine'"
-+ * ID|Brush.edge_to_edge -> use_edge_to_edge: boolean "'Drag anchor brush from edge-to-edge'"
-+ * ID|Brush.icon_filepath -> icon_filepath: string "'File path to brush icon'"
-+ * ID|Brush.imagepaint_tool -> imagepaint_tool: enum "'NO DESCRIPTION'"
-+ * ID|Brush.jitter -> jitter: float "'Jitter the position of the brush while painting'"
-+ * ID|Brush.normal_weight -> normal_weight: float "'How much grab will pull vertexes out of surface during a grab'"
-+ * ID|Brush.plane_offset -> plane_offset: float "'Adjusts plane on which the brush acts towards or away from the object surface'"
-+ * ID|Brush.plane_trim -> plane_trim: float "'If a vertex is further from offset plane than this then it is not affected'"
-+ * ID|Brush.rate -> rate: float "'Interval between paints for Airbrush'"
-+ * ID|Brush.restore_mesh -> use_restore_mesh: boolean "'Allows a single dot to be carefully positioned'"
-+ * ID|Brush.sculpt_plane -> sculpt_plane: enum "'NO DESCRIPTION'"
-+ * ID|Brush.sculpt_tool -> sculpt_tool: enum "'NO DESCRIPTION'"
-+ * ID|Brush.size -> size: int "'Diameter of the brush'"
-+ * ID|Brush.smooth_stroke_factor -> smooth_stroke_factor: float "'Higher values give a smoother stroke'"
-+ * ID|Brush.smooth_stroke_radius -> smooth_stroke_radius: int "'Minimum distance from last point before stroke continues'"
-+ * ID|Brush.spacing -> spacing: float "'Spacing between brush stamps'"
-+ * ID|Brush.strength -> strength: float "'The amount of pressure on the brush'"
-+ * ID|Brush.stroke_method -> stroke_method: enum "'NO DESCRIPTION'"
-+ * ID|Brush.sub_col -> cursor_color_subtract: float "'Color of cursor when subtracting'"
-+ * ID|Brush.texture -> texture: pointer "'NO DESCRIPTION'"
-+ * ID|Brush.texture_angle_source -> texture_angle_source: enum "'NO DESCRIPTION'"
-ODD NAME CHANGE IT? * ID|Brush.texture_angle_source_no_random -> texture_angle_source_no_random: enum 'NO DESCRIPTION'
-+ * ID|Brush.texture_overlay_alpha -> texture_overlay_alpha: int "'NO DESCRIPTION'"
-+ * ID|Brush.texture_sample_bias -> texture_sample_bias: float "'Value added to texture samples'"
-+ * ID|Brush.texture_slot -> texture_slot: pointer, "'(read-only)'"
-+ * ID|Brush.unprojected_radius -> unprojected_radius: float "'Radius of brush in Blender units'"
-+ * ID|Brush.use_accumulate -> use_accumulate: boolean "'Accumulate stroke dabs on top of each other'"
-+ * ID|Brush.use_adaptive_space -> use_adaptive_space: boolean "'Space daubs according to surface orientation instead of screen space'"
-+ * ID|Brush.use_airbrush -> use_airbrush: boolean "'Keep applying paint effect while holding mouse (spray)'"
-+ * ID|Brush.use_alpha -> use_alpha: boolean "'When this is disabled, lock alpha while painting'"
-+ * ID|Brush.use_anchor -> use_anchor: boolean "'Keep the brush anchored to the initial location'"
-+ * ID|Brush.use_custom_icon -> use_custom_icon: boolean "'Set the brush icon from an image file'"
-+ * ID|Brush.use_frontface -> use_frontface: boolean "'Brush only affects vertexes that face the viewer'"
-+ * ID|Brush.use_inverse_smooth_pressure -> use_inverse_smooth_pressure: boolean "'Lighter pressure causes more smoothing to be applied'"
-+ * ID|Brush.use_jitter_pressure -> use_pressure_jitter: boolean "'Enable tablet pressure sensitivity for jitter'"
-+ * ID|Brush.use_locked_size -> use_locked_size: boolean "'When locked brush stays same size relative to object; when unlocked brush size is given in pixels'"
-+ * ID|Brush.use_offset_pressure -> use_offset_pressure: boolean "'Enable tablet pressure sensitivity for offset'"
-+ * ID|Brush.use_original_normal -> use_original_normal: boolean "'When locked keep using normal of surface where stroke was initiated'"
-+ * ID|Brush.use_paint_sculpt -> use_paint_sculpt: boolean "'Use this brush in sculpt mode'"
-+ * ID|Brush.use_paint_texture -> use_paint_texture: boolean "'Use this brush in texture paint mode'"
-+ * ID|Brush.use_paint_vertex -> use_paint_vertex: boolean "'Use this brush in vertex paint mode'"
-+ * ID|Brush.use_paint_weight -> use_paint_weight: boolean "'Use this brush in weight paint mode'"
-+ * ID|Brush.use_persistent -> use_persistent: boolean "'Sculpts on a persistent layer of the mesh'"
-+ * ID|Brush.use_plane_trim -> use_plane_trim: boolean "'Enable Plane Trim'"
-+ * ID|Brush.use_rake -> use_rake: boolean "'Rotate the brush texture to match the stroke direction'"
-+ * ID|Brush.use_random_rotation -> use_random_rotation: boolean "'Rotate the brush texture at random'"
-+ * ID|Brush.use_size_pressure -> use_pressure_size: boolean "'Enable tablet pressure sensitivity for size'"
-+ * ID|Brush.use_smooth_stroke -> use_smooth_stroke: boolean "'Brush lags behind mouse and follows a smoother path'"
-+ * ID|Brush.use_space -> use_space: boolean "'Limit brush application to the distance specified by spacing'"
-+ * ID|Brush.use_space_atten -> use_space_atten: boolean "'Automatically adjusts strength to give consistent results for different spacings'"
-+ * ID|Brush.use_spacing_pressure -> use_pressure_spacing: boolean "'Enable tablet pressure sensitivity for spacing'"
-+ * ID|Brush.use_strength_pressure -> use_pressure_strength: boolean "'Enable tablet pressure sensitivity for strength'"
-+ * ID|Brush.use_texture_overlay -> use_texture_overlay: boolean "'Show texture in viewport'"
-+ * ID|Brush.use_wrap -> use_wrap: boolean "'Enable torus wrapping while painting'"
-+ * ID|Brush.vertexpaint_tool -> vertexpaint_tool: enum "'NO DESCRIPTION'"
-+ * ID|Camera.angle -> angle: float "'Perspective Camera lens field of view in degrees'"
-+ * ID|Camera.animation_data -> animation_data: pointer, "'(read-only) Animation data for this datablock'"
-+ * ID|Camera.clip_end -> clip_end: float "'Camera far clipping distance'"
-+ * ID|Camera.clip_start -> clip_start: float "'Camera near clipping distance'"
-+ * ID|Camera.dof_distance -> dof_distance: float "'Distance to the focus point for depth of field'"
-+ * ID|Camera.dof_object -> dof_object: pointer "'Use this object to define the depth of field focal point'"
-+ * ID|Camera.draw_size -> draw_size: float "'Apparent size of the Camera object in the 3D View'"
-+ * ID|Camera.lens -> lens: float "'Perspective Camera lens value in millimeters'"
-+ * ID|Camera.lens_unit -> lens_unit: enum "'Unit to edit lens in for the user interface'"
-+ * ID|Camera.ortho_scale -> ortho_scale: float "'Orthographic Camera scale (similar to zoom)'"
-+ * ID|Camera.panorama -> use_panorama: boolean "'Render the scene with a cylindrical camera for pseudo-fisheye lens effects'"
-+ * ID|Camera.passepartout_alpha -> passepartout_alpha: float "'Opacity (alpha) of the darkened overlay in Camera view'"
-+ * ID|Camera.shift_x -> shift_x: float "'Perspective Camera horizontal shift'"
-+ * ID|Camera.shift_y -> shift_y: float "'Perspective Camera vertical shift'"
-+ * ID|Camera.show_limits -> show_limits: boolean "'Draw the clipping range and focus point on the camera'"
-+ * ID|Camera.show_mist -> show_mist: boolean "'Draw a line from the Camera to indicate the mist area'"
-+ * ID|Camera.show_name -> show_name: boolean '"Show the active Camera\'s name in Camera view"'
-+ * ID|Camera.show_passepartout -> show_passepartout: boolean "'Show a darkened overlay outside the image area in Camera view'"
-+ * ID|Camera.show_title_safe -> show_title_safe: boolean "'Show indicators for the title safe zone in Camera view'"
-+ * ID|Camera.type -> type: enum "'Camera types'"
-ID|Curve.animation_data -> animation_data: pointer, "'(read-only) Animation data for this datablock'"
-ID|Curve.auto_texspace -> use_auto_texspace: boolean '"Adjusts active object\'s texture space automatically when transforming object"'
-ID|Curve.back -> use_fill_back: boolean "'Draw filled back for extruded/beveled curves'"
-ID|Curve.bevel_depth -> bevel_depth: float "'Bevel depth when not using a bevel object'"
-ID|Curve.bevel_object -> bevel_object: pointer "'Curve object name that defines the bevel shape'"
-ID|Curve.bevel_resolution -> bevel_resolution: int "'Bevel resolution when depth is non-zero and no specific bevel object has been defined'"
-ID|Curve.dimensions -> dimensions: enum "'Select 2D or 3D curve type'"
-ID|Curve.draw_handles -> show_handles: boolean "'Display bezier handles in editmode'"
-ID|Curve.draw_normals -> show_normals: boolean "'Display 3D curve normals in editmode'"
-ID|Curve.eval_time -> eval_time: float '"Parametric position along the length of the curve that Objects \'following\' it should be at. Position is evaluated by dividing by the \'Path Length\' value"'
-ID|Curve.extrude -> extrude: float "'Amount of curve extrusion when not using a bevel object'"
-ID|Curve.front -> use_fill_front: boolean "'Draw filled front for extruded/beveled curves'"
-ID|Curve.map_along_length -> use_map_along_length: boolean "'Generate texture mapping coordinates following the curve direction, rather than the local bounding box'"
-ID|Curve.materials -> materials: collection, "'(read-only)'"
-ID|Curve.path_length -> path_length: int '"The number of frames that are needed to traverse the path, defining the maximum value for the \'Evaluation Time\' setting"'
-ID|Curve.render_resolution_u -> render_resolution_u: int "'Surface resolution in U direction used while rendering. Zero skips this property'"
-ID|Curve.render_resolution_v -> render_resolution_v: int "'Surface resolution in V direction used while rendering. Zero skips this property'"
-ID|Curve.resolution_u -> resolution_u: int "'Surface resolution in U direction'"
-ID|Curve.resolution_v -> resolution_v: int "'Surface resolution in V direction'"
-ID|Curve.shape_keys -> shape_keys: pointer, "'(read-only)'"
-ID|Curve.splines -> splines: collection, "'(read-only) Collection of splines in this curve data object'"
-ID|Curve.taper_object -> taper_object: pointer "'Curve object name that defines the taper (width)'"
-ID|Curve.texspace_loc -> texspace_loc: float "'Texture space location'"
-ID|Curve.texspace_size -> texspace_size: float "'Texture space size'"
-ID|Curve.twist_mode -> twist_mode: enum "'The type of tilt calculation for 3D Curves'"
-ID|Curve.twist_smooth -> twist_smooth: float "'Smoothing iteration for tangents'"
-ID|Curve.use_deform_bounds -> use_deform_bounds: boolean "'Use the mesh bounds to clamp the deformation'"
-ID|Curve.use_deform_fill -> use_fill_deform: boolean "'Fill curve after applying deformation'"
-ID|Curve.use_path -> use_path: boolean "'Enable the curve to become a translation path'"
-ID|Curve.use_path_follow -> use_path_follow: boolean "'Make curve path children to rotate along the path'"
-ID|Curve.use_radius -> use_radius: boolean "'Option for paths: apply the curve radius with path following it and deforming'"
-ID|Curve.use_stretch -> use_stretch: boolean "'Option for curve-deform: makes deformed child to stretch along entire path'"
-ID|Curve.use_time_offset -> use_time_offset: boolean "'Children will use Time Offset value as path distance offset'"
-ID|Curve.width -> width: float "'Scale the original width (1.0) based on given factor'"
-ID|Curve|SurfaceCurve.map_along_length -> use_map_along_length: boolean "'Generate texture mapping coordinates following the curve direction, rather than the local bounding box'"
-ID|Curve|TextCurve.active_textbox -> active_textbox: int "'NO DESCRIPTION'"
-ID|Curve|TextCurve.body -> body: string "'contents of this text object'"
-ID|Curve|TextCurve.body_format -> body_format: collection, "'(read-only) Stores the style of each character'"
-ID|Curve|TextCurve.edit_format -> edit_format: pointer, "'(read-only) Editing settings character formatting'"
-ID|Curve|TextCurve.family -> family: string "'Use Blender Objects as font characters. Give font objects a common name followed by the character it represents, eg. familya, familyb etc, and turn on Verts Duplication'"
-ID|Curve|TextCurve.fast -> use_fast_editing: boolean '"Don\'t fill polygons while editing"'
-ID|Curve|TextCurve.font -> font: pointer "'NO DESCRIPTION'"
-ID|Curve|TextCurve.line_dist -> line_distance: float "'NO DESCRIPTION'"
-ID|Curve|TextCurve.map_along_length -> use_map_along_length: boolean "'Generate texture mapping coordinates following the curve direction, rather than the local bounding box'"
-ID|Curve|TextCurve.offset_x -> offset_x: float "'Horizontal offset from the object origin'"
-ID|Curve|TextCurve.offset_y -> offset_y: float "'Vertical offset from the object origin'"
-ID|Curve|TextCurve.shear -> shear: float "'Italic angle of the characters'"
-ID|Curve|TextCurve.small_caps_scale -> small_caps_scale: float "'Scale of small capitals'"
-ID|Curve|TextCurve.spacemode -> spacemode: enum "'Text align from the object center'"
-ID|Curve|TextCurve.spacing -> spacing: float "'NO DESCRIPTION'"
-ID|Curve|TextCurve.text_on_curve -> text_on_curve: pointer "'Curve deforming text object'"
-ID|Curve|TextCurve.text_size -> text_size: float "'NO DESCRIPTION'"
-ID|Curve|TextCurve.textboxes -> textboxes: collection, "'(read-only)'"
-ID|Curve|TextCurve.ul_height -> ul_height: float "'NO DESCRIPTION'"
-ID|Curve|TextCurve.ul_position -> ul_position: float "'Vertical position of underline'"
-ID|Curve|TextCurve.word_spacing -> word_spacing: float "'NO DESCRIPTION'"
-ID|GreasePencil.draw_mode -> draw_mode: enum "'NO DESCRIPTION'"
-ID|GreasePencil.layers -> layers: collection, "'(read-only)'"
-ID|GreasePencil.use_stroke_endpoints -> use_stroke_endpoints: boolean "'Only use the first and last parts of the stroke for snapping'"
-ID|Group.dupli_offset -> dupli_offset: float "'Offset from the origin to use when instancing as DupliGroup'"
-ID|Group.layer -> layers: boolean "'Layers visible when this groups is instanced as a dupli'"
-ID|Group.objects -> objects: collection, "'(read-only) A collection of this groups objects'"
-ID|Image.animated -> use_animation: boolean "'Use as animated texture in the game engine'"
-ID|Image.animation_end -> animation_end: int "'End frame of an animated texture'"
-ID|Image.animation_speed -> animation_speed: int "'Speed of the animation in frames per second'"
-ID|Image.animation_start -> animation_start: int "'Start frame of an animated texture'"
-ID|Image.bindcode -> bindcode: int, "'(read-only) OpenGL bindcode'"
-ID|Image.clamp_x -> use_clamp_x: boolean "'Disable texture repeating horizontally'"
-ID|Image.clamp_y -> use_clamp_y: boolean "'Disable texture repeating vertically'"
-ID|Image.depth -> depth: int, "'(read-only) Image bit depth'"
-ID|Image.dirty -> is_dirty: boolean, "'(read-only) Image has changed and is not saved'"
-ID|Image.display_aspect -> display_aspect: float "'Display Aspect for this image, does not affect rendering'"
-ID|Image.field_order -> field_order: enum "'Order of video fields. Select which lines are displayed first'"
-ID|Image.fields -> use_fields: boolean "'Use fields of the image'"
-ID|Image.file_format -> file_format: enum "'Format used for re-saving this file'"
-ID|Image.filepath -> filepath: string "'Image/Movie file name'"
-ID|Image.filepath_raw -> filepath_raw: string "'Image/Movie file name (without data refreshing)'"
-ID|Image.generated_height -> generated_height: int "'Generated image height'"
-ID|Image.generated_type -> generated_type: enum "'Generated image type'"
-ID|Image.generated_width -> generated_width: int "'Generated image width'"
-ID|Image.has_data -> has_data: boolean, "'(read-only) True if this image has data'"
-ID|Image.mapping -> mapping: enum "'Mapping type to use for this image in the game engine'"
-ID|Image.packed_file -> packed_file: pointer, "'(read-only)'"
-ID|Image.premultiply -> use_premultiply: boolean "'Convert RGB from key alpha to premultiplied alpha'"
-ID|Image.size -> size: int, "'(read-only) Width and height in pixels, zero when image data cant be loaded'"
-ID|Image.source -> source: enum "'Where the image comes from'"
-ID|Image.tiles -> use_tiles: boolean "'Use of tilemode for faces (default shift-LMB to pick the tile for selected faces)'"
-ID|Image.tiles_x -> tiles_x: int "'Degree of repetition in the X direction'"
-ID|Image.tiles_y -> tiles_y: int "'Degree of repetition in the Y direction'"
-ID|Image.type -> type: enum, "'(read-only) How to generate the image'"
-ID|Key.animation_data -> animation_data: pointer, "'(read-only) Animation data for this datablock'"
-ID|Key.keys -> keys: collection, "'(read-only) Shape keys'"
-ID|Key.reference_key -> reference_key: pointer, "'(read-only)'"
-ID|Key.relative -> use_relative: boolean "'Makes shape keys relative'"
-ID|Key.slurph -> slurph: int "'Creates a delay in amount of frames in applying keypositions, first vertex goes first'"
-ID|Key.user -> user: pointer, "'(read-only) Datablock using these shape keys'"
-ID|Lamp.active_texture -> active_texture: pointer "'Active texture slot being displayed'"
-ID|Lamp.active_texture_index -> active_texture_index: int "'Index of active texture slot'"
-ID|Lamp.animation_data -> animation_data: pointer, "'(read-only) Animation data for this datablock'"
-ID|Lamp.color -> color: float "'Light color'"
-ID|Lamp.diffuse -> use_diffuse: boolean "'Lamp does diffuse shading'"
-ID|Lamp.distance -> distance: float "'Falloff distance - the light is at half the original intensity at this point'"
-ID|Lamp.energy -> energy: float "'Amount of light that the lamp emits'"
-ID|Lamp.layer -> use_own_layer: boolean "'Illuminates objects only on the same layer the lamp is on'"
-ID|Lamp.negative -> use_negative: boolean "'Lamp casts negative light'"
-ID|Lamp.specular -> use_specular: boolean "'Lamp creates specular highlights'"
-ID|Lamp.texture_slots -> texture_slots: collection, "'(read-only) Texture slots defining the mapping and influence of textures'"
-ID|Lamp.type -> type: enum "'Type of Lamp'"
-+ * ID|Lamp|AreaLamp.dither -> use_dither: boolean "'Use 2x2 dithering for sampling (Constant Jittered sampling)'"
-+ * ID|Lamp|AreaLamp.gamma -> gamma: float "'Light gamma correction value'"
-+ * ID|Lamp|AreaLamp.jitter -> use_jitter: boolean "'Use noise for sampling (Constant Jittered sampling)'"
-+ * ID|Lamp|AreaLamp.only_shadow -> use_only_shadow: boolean "'Causes light to cast shadows only without illuminating objects'"
-+ * ID|Lamp|AreaLamp.shadow_adaptive_threshold -> shadow_adaptive_threshold: float "'Threshold for Adaptive Sampling (Raytraced shadows)'"
-+ * ID|Lamp|AreaLamp.shadow_color -> shadow_color: float "'Color of shadows cast by the lamp'"
-+ * ID|Lamp|AreaLamp.shadow_layer -> use_shadow_layer: boolean "'Causes only objects on the same layer to cast shadows'"
-+ * ID|Lamp|AreaLamp.shadow_method -> shadow_method: enum "'Method to compute lamp shadow with'"
-+ * ID|Lamp|AreaLamp.shadow_ray_samples_x -> shadow_ray_samples_x: int "'Amount of samples taken extra (samples x samples)'"
-+ * ID|Lamp|AreaLamp.shadow_ray_samples_y -> shadow_ray_samples_y: int "'Amount of samples taken extra (samples x samples)'"
-+ * ID|Lamp|AreaLamp.shadow_ray_sampling_method -> shadow_ray_sample_method: enum "'Method for generating shadow samples: Adaptive QMC is fastest, Constant QMC is less noisy but slower'"
-+ * ID|Lamp|AreaLamp.shadow_soft_size -> shadow_soft_size: float "'Light size for ray shadow sampling (Raytraced shadows)'"
-+ * ID|Lamp|AreaLamp.shape -> shape: enum "'Shape of the area lamp'"
-+ * ID|Lamp|AreaLamp.size -> size: float "'Size of the area of the area Lamp, X direction size for Rectangle shapes'"
-+ * ID|Lamp|AreaLamp.size_y -> size_y: float "'Size of the area of the area Lamp in the Y direction for Rectangle shapes'"
-+ * ID|Lamp|AreaLamp.umbra -> use_umbra: boolean "'Emphasize parts that are fully shadowed (Constant Jittered sampling)'"
-ID|Lamp|PointLamp.falloff_curve -> falloff_curve: pointer, "'(read-only) Custom Lamp Falloff Curve'"
-ID|Lamp|PointLamp.falloff_type -> falloff_type: enum "'Intensity Decay with distance'"
-ID|Lamp|PointLamp.linear_attenuation -> linear_attenuation: float "'Linear distance attenuation'"
-ID|Lamp|PointLamp.only_shadow -> use_only_shadow: boolean "'Causes light to cast shadows only without illuminating objects'"
-ID|Lamp|PointLamp.quadratic_attenuation -> quadratic_attenuation: float "'Quadratic distance attenuation'"
-ID|Lamp|PointLamp.shadow_adaptive_threshold -> shadow_adaptive_threshold: float "'Threshold for Adaptive Sampling (Raytraced shadows)'"
-ID|Lamp|PointLamp.shadow_color -> shadow_color: float "'Color of shadows cast by the lamp'"
-ID|Lamp|PointLamp.shadow_layer -> use_shadow_layer: boolean "'Causes only objects on the same layer to cast shadows'"
-ID|Lamp|PointLamp.shadow_method -> shadow_method: enum "'Method to compute lamp shadow with'"
-ID|Lamp|PointLamp.shadow_ray_samples -> shadow_ray_samples: int "'Amount of samples taken extra (samples x samples)'"
-ID|Lamp|PointLamp.shadow_ray_sampling_method -> shadow_ray_sample_method: enum "'Method for generating shadow samples: Adaptive QMC is fastest, Constant QMC is less noisy but slower'"
-ID|Lamp|PointLamp.shadow_soft_size -> shadow_soft_size: float "'Light size for ray shadow sampling (Raytraced shadows)'"
-ID|Lamp|PointLamp.sphere -> use_sphere: boolean "'Sets light intensity to zero beyond lamp distance'"
-ID|Lamp|SpotLamp.auto_clip_end -> use_auto_clip_end: boolean "'Automatic calculation of clipping-end, based on visible vertices'"
-ID|Lamp|SpotLamp.auto_clip_start -> use_auto_clip_start: boolean "'Automatic calculation of clipping-start, based on visible vertices'"
-ID|Lamp|SpotLamp.compression_threshold -> compression_threshold: float "'Deep shadow map compression threshold'"
-ID|Lamp|SpotLamp.falloff_curve -> falloff_curve: pointer, "'(read-only) Custom Lamp Falloff Curve'"
-ID|Lamp|SpotLamp.falloff_type -> falloff_type: enum "'Intensity Decay with distance'"
-ID|Lamp|SpotLamp.halo -> use_halo: boolean "'Renders spotlight with a volumetric halo (Buffer Shadows)'"
-ID|Lamp|SpotLamp.halo_intensity -> halo_intensity: float '"Brightness of the spotlight\'s halo cone (Buffer Shadows)"'
-ID|Lamp|SpotLamp.halo_step -> halo_step: int "'Volumetric halo sampling frequency'"
-ID|Lamp|SpotLamp.linear_attenuation -> linear_attenuation: float "'Linear distance attenuation'"
-ID|Lamp|SpotLamp.only_shadow -> use_only_shadow: boolean "'Causes light to cast shadows only without illuminating objects'"
-ID|Lamp|SpotLamp.quadratic_attenuation -> quadratic_attenuation: float "'Quadratic distance attenuation'"
-ID|Lamp|SpotLamp.shadow_adaptive_threshold -> shadow_adaptive_threshold: float "'Threshold for Adaptive Sampling (Raytraced shadows)'"
-ID|Lamp|SpotLamp.shadow_buffer_bias -> shadow_buffer_bias: float "'Shadow buffer sampling bias'"
-ID|Lamp|SpotLamp.shadow_buffer_clip_end -> shadow_buffer_clip_end: float "'Shadow map clip end beyond which objects will not generate shadows'"
-ID|Lamp|SpotLamp.shadow_buffer_clip_start -> shadow_buffer_clip_start: float "'Shadow map clip start: objects closer will not generate shadows'"
-ID|Lamp|SpotLamp.shadow_buffer_samples -> shadow_buffer_samples: int "'Number of shadow buffer samples'"
-ID|Lamp|SpotLamp.shadow_buffer_size -> shadow_buffer_size: int "'Resolution of the shadow buffer, higher values give crisper shadows but use more memory'"
-ID|Lamp|SpotLamp.shadow_buffer_soft -> shadow_buffer_soft: float "'Size of shadow buffer sampling area'"
-ID|Lamp|SpotLamp.shadow_buffer_type -> shadow_buffer_type: enum "'Type of shadow buffer'"
-ID|Lamp|SpotLamp.shadow_color -> shadow_color: float "'Color of shadows cast by the lamp'"
-ID|Lamp|SpotLamp.shadow_filter_type -> shadow_filter_type: enum "'Type of shadow filter (Buffer Shadows)'"
-ID|Lamp|SpotLamp.shadow_layer -> use_shadow_layer: boolean "'Causes only objects on the same layer to cast shadows'"
-ID|Lamp|SpotLamp.shadow_method -> shadow_method: enum "'Method to compute lamp shadow with'"
-ID|Lamp|SpotLamp.shadow_ray_samples -> shadow_ray_samples: int "'Amount of samples taken extra (samples x samples)'"
-ID|Lamp|SpotLamp.shadow_ray_sampling_method -> shadow_ray_sample_method: enum "'Method for generating shadow samples: Adaptive QMC is fastest, Constant QMC is less noisy but slower'"
-ID|Lamp|SpotLamp.shadow_sample_buffers -> shadow_sample_buffers: enum "'Number of shadow buffers to render for better AA, this increases memory usage'"
-ID|Lamp|SpotLamp.shadow_soft_size -> shadow_soft_size: float "'Light size for ray shadow sampling (Raytraced shadows)'"
-ID|Lamp|SpotLamp.show_cone -> show_cone: boolean "'Draw transparent cone in 3D view to visualize which objects are contained in it'"
-ID|Lamp|SpotLamp.sphere -> use_sphere: boolean "'Sets light intensity to zero beyond lamp distance'"
-ID|Lamp|SpotLamp.spot_blend -> spot_blend: float "'The softness of the spotlight edge'"
-ID|Lamp|SpotLamp.spot_size -> spot_size: float "'Angle of the spotlight beam in degrees'"
-ID|Lamp|SpotLamp.square -> use_square: boolean "'Casts a square spot light shape'"
-ID|Lamp|SunLamp.only_shadow -> use_only_shadow: boolean "'Causes light to cast shadows only without illuminating objects'"
-ID|Lamp|SunLamp.shadow_adaptive_threshold -> shadow_adaptive_threshold: float "'Threshold for Adaptive Sampling (Raytraced shadows)'"
-ID|Lamp|SunLamp.shadow_color -> shadow_color: float "'Color of shadows cast by the lamp'"
-ID|Lamp|SunLamp.shadow_layer -> use_shadow_layer: boolean "'Causes only objects on the same layer to cast shadows'"
-ID|Lamp|SunLamp.shadow_method -> shadow_method: enum "'Method to compute lamp shadow with'"
-ID|Lamp|SunLamp.shadow_ray_samples -> shadow_ray_samples: int "'Amount of samples taken extra (samples x samples)'"
-ID|Lamp|SunLamp.shadow_ray_sampling_method -> shadow_ray_sampling_method: enum "'Method for generating shadow samples: Adaptive QMC is fastest, Constant QMC is less noisy but slower'"
-ID|Lamp|SunLamp.shadow_soft_size -> shadow_soft_size: float "'Light size for ray shadow sampling (Raytraced shadows)'"
-ID|Lamp|SunLamp.sky -> sky: pointer, "'(read-only) Sky related settings for sun lamps'"
-ID|Lattice.interpolation_type_u -> interpolation_type_u: enum "'NO DESCRIPTION'"
-ID|Lattice.interpolation_type_v -> interpolation_type_v: enum "'NO DESCRIPTION'"
-ID|Lattice.interpolation_type_w -> interpolation_type_w: enum "'NO DESCRIPTION'"
-ID|Lattice.outside -> use_outside: boolean "'Only draw, and take into account, the outer vertices'"
-ID|Lattice.points -> points: collection, "'(read-only) Points of the lattice'"
-ID|Lattice.points_u -> points_u: int "'Points in U direction'"
-ID|Lattice.points_v -> points_v: int "'Points in V direction'"
-ID|Lattice.points_w -> points_w: int "'Points in W direction'"
-ID|Lattice.shape_keys -> shape_keys: pointer, "'(read-only)'"
-ID|Lattice.vertex_group -> vertex_group: string "'Vertex group to apply the influence of the lattice'"
-ID|Library.filepath -> filepath: string "'Path to the library .blend file'"
-ID|Library.parent -> parent: pointer, "'(read-only)'"
-ID|Material.active_node_material -> active_node_material: pointer "'Active node material'"
-ID|Material.active_texture -> active_texture: pointer "'Active texture slot being displayed'"
-ID|Material.active_texture_index -> active_texture_index: int "'Index of active texture slot'"
-ID|Material.alpha -> alpha: float "'Alpha transparency of the material'"
-ID|Material.ambient -> ambient: float "'Amount of global ambient color the material receives'"
-ID|Material.animation_data -> animation_data: pointer, "'(read-only) Animation data for this datablock'"
-ID|Material.cast_approximate -> use_cast_approximate: boolean "'Allow this material to cast shadows when using approximate ambient occlusion.'"
-ID|Material.cast_buffer_shadows -> use_cast_buffer_shadows: boolean "'Allow this material to cast shadows from shadow buffer lamps'"
-ID|Material.cast_shadows_only -> use_cast_shadows_only: boolean "'Makes objects with this material appear invisible, only casting shadows (not rendered)'"
-ID|Material.cubic -> use_cubic: boolean "'Use cubic interpolation for diffuse values, for smoother transitions'"
-ID|Material.darkness -> darkness: float "'Minnaert darkness'"
-ID|Material.diffuse_color -> diffuse_color: float "'NO DESCRIPTION'"
-ID|Material.diffuse_fresnel -> diffuse_fresnel: float "'Power of Fresnel'"
-ID|Material.diffuse_fresnel_factor -> diffuse_fresnel_factor: float "'Blending factor of Fresnel'"
-ID|Material.diffuse_intensity -> diffuse_intensity: float "'Amount of diffuse reflection'"
-ID|Material.diffuse_ramp -> diffuse_ramp: pointer, "'(read-only) Color ramp used to affect diffuse shading'"
-ID|Material.diffuse_ramp_blend -> diffuse_ramp_blend: enum "'NO DESCRIPTION'"
-ID|Material.diffuse_ramp_factor -> diffuse_ramp_factor: float "'Blending factor (also uses alpha in Colorband)'"
-ID|Material.diffuse_ramp_input -> diffuse_ramp_input: enum "'NO DESCRIPTION'"
-ID|Material.diffuse_shader -> diffuse_shader: enum "'NO DESCRIPTION'"
-ID|Material.diffuse_toon_size -> diffuse_toon_size: float "'Size of diffuse toon area'"
-ID|Material.diffuse_toon_smooth -> diffuse_toon_smooth: float "'Smoothness of diffuse toon area'"
-ID|Material.emit -> emit: float "'Amount of light to emit'"
-NEGATE * ID|Material.exclude_mist -> use_mist: boolean "'Excludes this material from mist effects (in world settings)'"
-ID|Material.face_texture -> use_face_texture: boolean '"Replaces the object\'s base color with color from face assigned image textures"'
-ID|Material.face_texture_alpha -> use_face_texture_alpha: boolean '"Replaces the object\'s base alpha value with alpha from face assigned image textures"'
-ID|Material.full_oversampling -> use_full_oversampling: boolean "'Force this material to render full shading/textures for all anti-aliasing samples'"
-ID|Material.halo -> halo: pointer, "'(read-only) Halo settings for the material'"
-ID|Material.invert_z -> invert_z: boolean '"Renders material\'s faces with an inverted Z buffer (scanline only)"'
-ID|Material.light_group -> light_group: pointer "'Limit lighting to lamps in this Group'"
-ID|Material.light_group_exclusive -> use_light_group_exclusive: boolean "'Material uses the light group exclusively - these lamps are excluded from other scene lighting'"
-ID|Material.mirror_color -> mirror_color: float "'Mirror color of the material'"
-ID|Material.node_tree -> node_tree: pointer, "'(read-only) Node tree for node based materials'"
-ID|Material.object_color -> use_object_color: boolean "'Modulate the result with a per-object color'"
-ID|Material.only_shadow -> use_only_shadow: boolean '"Renders shadows as the material\'s alpha value, making materials transparent except for shadowed areas"'
-ID|Material.physics -> physics: pointer, "'(read-only) Game physics settings'"
-ID|Material.preview_render_type -> preview_render_type: enum "'Type of preview render'"
-ID|Material.ray_shadow_bias -> use_ray_shadow_bias: boolean "'Prevents raytraced shadow errors on surfaces with smooth shaded normals (terminator problem)'"
-ID|Material.raytrace_mirror -> raytrace_mirror: pointer, "'(read-only) Raytraced reflection settings for the material'"
-ID|Material.raytrace_transparency -> raytrace_transparency: pointer, "'(read-only) Raytraced transparency settings for the material'"
-ID|Material.receive_transparent_shadows -> use_transparent_shadows: boolean "'Allow this object to receive transparent shadows casted through other objects'"
-ID|Material.roughness -> rough: float "'Oren-Nayar Roughness'"
-ID|Material.shadeless -> use_shadeless: boolean "'Makes this material insensitive to light or shadow'"
-ID|Material.shadow_buffer_bias -> shadow_buffer_bias: float "'Factor to multiply shadow buffer bias with (0 is ignore.)'"
-ID|Material.shadow_casting_alpha -> shadow_cast_alpha: float "'Shadow casting alpha, in use for Irregular and Deep shadow buffer'"
-ID|Material.shadow_ray_bias -> shadow_ray_bias: float "'Shadow raytracing bias to prevent terminator problems on shadow boundary'"
-ID|Material.shadows -> use_shadows: boolean "'Allows this material to receive shadows'"
-ID|Material.specular_alpha -> specular_alpha: float "'Alpha transparency for specular areas'"
-ID|Material.specular_color -> specular_color: float "'Specular color of the material'"
-ID|Material.specular_hardness -> specular_hard: int "'NO DESCRIPTION'"
-ID|Material.specular_intensity -> specular_intensity: float "'NO DESCRIPTION'"
-ID|Material.specular_ior -> specular_ior: float "'NO DESCRIPTION'"
-ID|Material.specular_ramp -> specular_ramp: pointer, "'(read-only) Color ramp used to affect specular shading'"
-ID|Material.specular_ramp_blend -> specular_ramp_blend: enum "'NO DESCRIPTION'"
-ID|Material.specular_ramp_factor -> specular_ramp_factor: float "'Blending factor (also uses alpha in Colorband)'"
-ID|Material.specular_ramp_input -> specular_ramp_input: enum "'NO DESCRIPTION'"
-ID|Material.specular_shader -> specular_shader: enum "'NO DESCRIPTION'"
-ID|Material.specular_slope -> specular_slope: float "'The standard deviation of surface slope'"
-ID|Material.specular_toon_size -> specular_toon_size: float "'Size of specular toon area'"
-ID|Material.specular_toon_smooth -> specular_toon_smooth: float "'Smoothness of specular toon area'"
-ID|Material.strand -> strand: pointer, "'(read-only) Strand settings for the material'"
-ID|Material.subsurface_scattering -> subsurface_scattering: pointer, "'(read-only) Subsurface scattering settings for the material'"
-ID|Material.tangent_shading -> use_tangent_shading: boolean '"Use the material\'s tangent vector instead of the normal for shading - for anisotropic shading effects"'
-ID|Material.texture_slots -> texture_slots: collection, "'(read-only) Texture slots defining the mapping and influence of textures'"
-ID|Material.traceable -> use_traceable: boolean "'Include this material and geometry that uses it in ray tracing calculations'"
-ID|Material.translucency -> translucency: float "'Amount of diffuse shading on the back side'"
-ID|Material.transparency -> use_transparency: boolean "'Render material as transparent'"
-ID|Material.transparency_method -> transparency_method: enum "'Method to use for rendering transparency'"
-ID|Material.type -> type: enum "'Material type defining how the object is rendered'"
-ID|Material.use_diffuse_ramp -> use_diffuse_ramp: boolean "'Toggle diffuse ramp operations'"
-ID|Material.use_nodes -> use_nodes: boolean "'Use shader nodes to render the material'"
-ID|Material.use_sky -> use_sky: boolean "'Renders this material with zero alpha, with sky background in place (scanline only)'"
-ID|Material.use_specular_ramp -> use_specular_ramp: boolean "'Toggle specular ramp operations'"
-ID|Material.use_textures -> use_textures: boolean "'Enable/Disable each texture'"
-ID|Material.vertex_color_light -> use_vertex_color_light: boolean "'Add vertex colors as additional lighting'"
-ID|Material.vertex_color_paint -> use_vertex_color_paint: boolean '"Replaces object base color with vertex colors (multiplies with \'texture face\' face assigned textures)"'
-ID|Material.volume -> volume: pointer, "'(read-only) Volume settings for the material'"
-ID|Material.z_offset -> z_offset: float "'Gives faces an artificial offset in the Z buffer for Z transparency'"
-ID|Mesh.active_uv_texture -> active_uv_texture: pointer "'Active UV texture'"
-ID|Mesh.active_uv_texture_index -> active_uv_texture_index: int "'Active UV texture index'"
-ID|Mesh.active_vertex_color -> active_vertex_color: pointer "'Active vertex color layer'"
-ID|Mesh.active_vertex_color_index -> active_vertex_color_index: int "'Active vertex color index'"
-ID|Mesh.all_edges -> show_all_edges: boolean "'Displays all edges for wireframe in all view modes in the 3D view'"
-ID|Mesh.animation_data -> animation_data: pointer, "'(read-only) Animation data for this datablock'"
-ID|Mesh.auto_texspace -> use_auto_texspace: boolean '"Adjusts active object\'s texture space automatically when transforming object"'
-ID|Mesh.autosmooth -> use_autosmooth: boolean '"Treats all set-smoothed faces with angles less than the specified angle as \'smooth\' during render"'
-ID|Mesh.autosmooth_angle -> autosmooth_angle: int '"Defines maximum angle between face normals that \'Auto Smooth\' will operate on"'
-ID|Mesh.double_sided -> show_double_sided: boolean "'Render/display the mesh with double or single sided lighting'"
-ID|Mesh.draw_bevel_weights -> show_bevel_weights: boolean "'Displays weights created for the Bevel modifier'"
-ID|Mesh.draw_creases -> show_creases: boolean "'Displays creases created for subsurf weighting'"
-ID|Mesh.draw_edge_angle -> show_edge_angle: boolean "'Displays the angles in the selected edges in degrees'"
-ID|Mesh.draw_edge_length -> show_edge_length: boolean "'Displays selected edge lengths, Using global values when set in the transform panel'"
-ID|Mesh.draw_edges -> show_edges: boolean "'Displays selected edges using highlights in the 3D view and UV editor'"
-ID|Mesh.draw_face_area -> show_face_area: boolean "'Displays the area of selected faces'"
-ID|Mesh.draw_faces -> show_faces: boolean "'Displays all faces as shades in the 3D view and UV editor'"
-ID|Mesh.draw_normals -> show_normals: boolean "'Displays face normals as lines'"
-ID|Mesh.draw_seams -> show_seams: boolean "'Displays UV unwrapping seams'"
-ID|Mesh.draw_sharp -> show_sharp: boolean "'Displays sharp edges, used with the EdgeSplit modifier'"
-ID|Mesh.draw_vertex_normals -> show_vertex_normals: boolean "'Displays vertex normals as lines'"
-ID|Mesh.edges -> edges: collection, "'(read-only) Edges of the mesh'"
-ID|Mesh.faces -> faces: collection, "'(read-only) Faces of the mesh'"
-ID|Mesh.float_layers -> float_layers: collection, "'(read-only)'"
-ID|Mesh.int_layers -> int_layers: collection, "'(read-only)'"
-ID|Mesh.materials -> materials: collection, "'(read-only)'"
-ID|Mesh.shape_keys -> shape_keys: pointer, "'(read-only)'"
-ID|Mesh.sticky -> sticky: collection, "'(read-only) Sticky texture coordinates'"
-ID|Mesh.string_layers -> string_layers: collection, "'(read-only)'"
-ID|Mesh.texco_mesh -> texco_mesh: pointer "'Derive texture coordinates from another mesh'"
-ID|Mesh.texspace_loc -> texspace_loc: float "'Texture space location'"
-ID|Mesh.texspace_size -> texspace_size: float "'Texture space size'"
-ID|Mesh.texture_mesh -> texture_mesh: pointer "'Use another mesh for texture indices (vertex indices must be aligned)'"
-ID|Mesh.total_edge_sel -> total_edge_sel: int, "'(read-only) Selected edge count in editmode'"
-ID|Mesh.total_face_sel -> total_face_sel: int, "'(read-only) Selected face count in editmode'"
-ID|Mesh.total_vert_sel -> total_vert_sel: int, "'(read-only) Selected vertex count in editmode'"
-ID|Mesh.use_mirror_topology -> use_mirror_topology: boolean "'Use topology based mirroring'"
-ID|Mesh.use_mirror_x -> use_mirror_x: boolean "'X Axis mirror editing'"
-ID|Mesh.use_paint_mask -> use_paint_mask: boolean "'Face selection masking for painting'"
-ID|Mesh.uv_texture_clone -> uv_texture_clone: pointer "'UV texture to be used as cloning source'"
-ID|Mesh.uv_texture_clone_index -> uv_texture_clone_index: int "'Clone UV texture index'"
-ID|Mesh.uv_texture_stencil -> uv_texture_stencil: pointer "'UV texture to mask the painted area'"
-ID|Mesh.uv_texture_stencil_index -> uv_texture_stencil_index: int "'Mask UV texture index'"
-ID|Mesh.uv_textures -> uv_textures: collection, "'(read-only)'"
-ID|Mesh.vertex_colors -> vertex_colors: collection, "'(read-only)'"
-ID|Mesh.verts -> verts: collection, "'(read-only) Vertices of the mesh'"
-ID|MetaBall.active_element -> active_element: pointer, "'(read-only) Last selected element'"
-ID|MetaBall.animation_data -> animation_data: pointer, "'(read-only) Animation data for this datablock'"
-ID|MetaBall.auto_texspace -> use_auto_texspace: boolean '"Adjusts active object\'s texture space automatically when transforming object"'
-ID|MetaBall.elements -> elements: collection, "'(read-only) Meta elements'"
-ID|MetaBall.flag -> flag: enum "'Metaball edit update behavior'"
-ID|MetaBall.materials -> materials: collection, "'(read-only)'"
-ID|MetaBall.render_size -> render_size: float "'Polygonization resolution in rendering'"
-ID|MetaBall.texspace_loc -> texspace_loc: float "'Texture space location'"
-ID|MetaBall.texspace_size -> texspace_size: float "'Texture space size'"
-ID|MetaBall.threshold -> threshold: float "'Influence of meta elements'"
-ID|MetaBall.wire_size -> wire_size: float "'Polygonization resolution in the 3D viewport'"
-ID|NodeTree.animation_data -> animation_data: pointer, "'(read-only) Animation data for this datablock'"
-ID|NodeTree.grease_pencil -> grease_pencil: pointer "'Grease Pencil datablock'"
-ID|NodeTree.nodes -> nodes: collection, "'(read-only)'"
-ID|Object.active_material -> active_material: pointer "'Active material being displayed'"
-ID|Object.active_material_index -> active_material_index: int "'Index of active material slot'"
-ID|Object.active_particle_system -> active_particle_system: pointer, "'(read-only) Active particle system being displayed'"
-ID|Object.active_particle_system_index -> active_particle_system_index: int "'Index of active particle system slot'"
-ID|Object.active_shape_key -> active_shape_key: pointer, "'(read-only) Current shape key'"
-ID|Object.active_shape_key_index -> active_shape_key_index: int "'Current shape key index'"
-ID|Object.active_vertex_group -> active_vertex_group: pointer, "'(read-only) Vertex groups of the object'"
-ID|Object.active_vertex_group_index -> active_vertex_group_index: int "'Active index in vertex group array'"
-ID|Object.animation_data -> animation_data: pointer, "'(read-only) Animation data for this datablock'"
-ID|Object.animation_visualisation -> animation_visualisation: pointer, "'(read-only) Animation data for this datablock'"
-ID|Object.bound_box -> bound_box: float, "'(read-only) Objects bound box in object-space coordinates'"
-ID|Object.collision -> collision: pointer, "'(read-only) Settings for using the objects as a collider in physics simulation'"
-ID|Object.color -> color: float "'Object color and alpha, used when faces have the ObColor mode enabled'"
-ID|Object.constraints -> constraints: collection, "'(read-only) Constraints affecting the transformation of the object'"
-ID|Object.data -> data: pointer "'Object data'"
-ID|Object.delta_location -> delta_location: float "'Extra translation added to the location of the object'"
-ID|Object.delta_rotation_euler -> delta_rotation_euler: float "'Extra rotation added to the rotation of the object (when using Euler rotations)'"
-ID|Object.delta_rotation_quaternion -> delta_rotation_quaternion: float "'Extra rotation added to the rotation of the object (when using Quaternion rotations)'"
-ID|Object.delta_scale -> delta_scale: float "'Extra scaling added to the scale of the object'"
-ID|Object.dimensions -> dimensions: float "'Absolute bounding box dimensions of the object'"
-ID|Object.draw_axis -> show_axis: boolean '"Displays the object\'s origin and axis"'
-ID|Object.draw_bounds -> show_bounds: boolean '"Displays the object\'s bounds"'
-ID|Object.draw_bounds_type -> draw_bounds_type: enum "'Object boundary display type'"
-ID|Object.draw_name -> show_name: boolean '"Displays the object\'s name"'
-ID|Object.draw_texture_space -> show_texture_space: boolean '"Displays the object\'s texture space"'
-ID|Object.draw_transparent -> show_transparent: boolean "'Enables transparent materials for the object (Mesh only)'"
-ID|Object.draw_wire -> show_wire: boolean '"Adds the object\'s wireframe over solid drawing"'
-ID|Object.dupli_faces_scale -> dupli_faces_scale: float "'Scale the DupliFace objects'"
-ID|Object.dupli_frames_end -> dupli_frames_end: int "'End frame for DupliFrames'"
-ID|Object.dupli_frames_off -> dupli_frames_off: int "'Recurring frames to exclude from the Dupliframes'"
-ID|Object.dupli_frames_on -> dupli_frames_on: int "'Number of frames to use between DupOff frames'"
-ID|Object.dupli_frames_start -> dupli_frames_start: int "'Start frame for DupliFrames'"
-ID|Object.dupli_group -> dupli_group: pointer "'Instance an existing group'"
-ID|Object.dupli_list -> dupli_list: collection, "'(read-only) Object duplis'"
-ID|Object.dupli_type -> dupli_type: enum "'If not None, object duplication method to use'"
-ID|Object.duplis_used -> is_duplicator: boolean, "'(read-only)'"
-ID|Object.empty_draw_size -> empty_draw_size: float "'Size of display for empties in the viewport'"
-ID|Object.empty_draw_type -> empty_draw_type: enum "'Viewport display style for empties'"
-ID|Object.field -> field: pointer, "'(read-only) Settings for using the objects as a field in physics simulation'"
-ID|Object.game -> game: pointer, "'(read-only) Game engine related settings for the object'"
-ID|Object.grease_pencil -> grease_pencil: pointer "'Grease Pencil datablock'"
-ID|Object.hide -> hide: boolean "'Restrict visibility in the viewport'"
-ID|Object.hide_render -> hide_render: boolean "'Restrict renderability'"
-ID|Object.hide_select -> hide_select: boolean "'Restrict selection in the viewport'"
-ID|Object.layers -> layers: boolean "'Layers the object is on'"
-ID|Object.location -> location: float "'Location of the object'"
-ID|Object.lock_location -> lock_location: boolean "'Lock editing of location in the interface'"
-ID|Object.lock_rotation -> lock_rotation: boolean "'Lock editing of rotation in the interface'"
-ID|Object.lock_rotation_w -> lock_rotation_w: boolean '"Lock editing of \'angle\' component of four-component rotations in the interface"'
-ID|Object.lock_rotations_4d -> lock_rotations_4d: boolean "'Lock editing of four component rotations by components (instead of as Eulers)'"
-ID|Object.lock_scale -> lock_scale: boolean "'Lock editing of scale in the interface'"
-ID|Object.material_slots -> material_slots: collection, "'(read-only) Material slots in the object'"
-ID|Object.matrix_local -> matrix_local: float "'Parent relative transformation matrix'"
-ID|Object.matrix_world -> matrix_world: float "'Worldspace transformation matrix'"
-ID|Object.max_draw_type -> draw_type: enum "'Maximum draw type to display object with in viewport'"
-ID|Object.mode -> mode: enum, "'(read-only) Object interaction mode'"
-ID|Object.modifiers -> modifiers: collection, "'(read-only) Modifiers affecting the geometric data of the object'"
-ID|Object.motion_path -> motion_path: pointer, "'(read-only) Motion Path for this element'"
-ID|Object.parent -> parent: pointer "'Parent Object'"
-ID|Object.parent_bone -> parent_bone: string "'Name of parent bone in case of a bone parenting relation'"
-ID|Object.parent_type -> parent_type: enum "'Type of parent relation'"
-ID|Object.parent_vertices -> parent_vertices: int, "'(read-only) Indices of vertices in cases of a vertex parenting relation'"
-ID|Object.particle_systems -> particle_systems: collection, "'(read-only) Particle systems emitted from the object'"
-ID|Object.pass_index -> pass_index: int "'Index # for the IndexOB render pass'"
-ID|Object.pose -> pose: pointer, "'(read-only) Current pose for armatures'"
-ID|Object.pose_library -> pose_library: pointer, "'(read-only) Action used as a pose library for armatures'"
-ID|Object.proxy -> proxy: pointer, "'(read-only) Library object this proxy object controls'"
-ID|Object.proxy_group -> proxy_group: pointer, "'(read-only) Library group duplicator object this proxy object controls'"
-ID|Object.rotation_axis_angle -> rotation_axis_angle: float "'Angle of Rotation for Axis-Angle rotation representation'"
-ID|Object.rotation_euler -> rotation_euler: float "'Rotation in Eulers'"
-ID|Object.rotation_mode -> rotation_mode: enum "'NO DESCRIPTION'"
-ID|Object.rotation_quaternion -> rotation_quaternion: float "'Rotation in Quaternions'"
-ID|Object.scale -> scale: float "'Scaling of the object'"
-ID|Object.select -> select: boolean "'Object selection state'"
-ID|Object.shape_key_edit_mode -> use_shape_key_edit_mode: boolean "'Apply shape keys in edit mode (for Meshes only)'"
-ID|Object.shape_key_lock -> show_shape_key: boolean "'Always show the current Shape for this Object'"
-ID|Object.slow_parent -> use_slow_parent: boolean "'Create a delay in the parent relationship'"
-ID|Object.soft_body -> soft_body: pointer, "'(read-only) Settings for soft body simulation'"
-ID|Object.time_offset -> time_offset: float "'Animation offset in frames for F-Curve and dupligroup instances'"
-ID|Object.time_offset_add_parent -> use_time_offset_add_parent: boolean "'Add the parents time offset value'"
-ID|Object.time_offset_edit -> use_time_offset_edit: boolean "'Use time offset when inserting keys and display time offset for F-Curve and action views'"
-ID|Object.time_offset_parent -> use_time_offset_parent: boolean "'Apply the time offset to this objects parent relationship'"
-ID|Object.time_offset_particle -> use_time_offset_particle: boolean "'Let the time offset work on the particle effect'"
-ID|Object.track_axis -> track_axis: enum '"Axis that points in \'forward\' direction"'
-ID|Object.type -> type: enum, "'(read-only) Type of Object'"
-ID|Object.up_axis -> up_axis: enum "'Axis that points in the upward direction'"
-ID|Object.use_dupli_faces_scale -> use_dupli_faces_scale: boolean "'Scale dupli based on face size'"
-ID|Object.use_dupli_frames_speed -> use_dupli_frames_speed: boolean "'Set dupliframes to use the frame'"
-ID|Object.use_dupli_verts_rotation -> use_dupli_verts_rotation: boolean "'Rotate dupli according to vertex normal'"
-ID|Object.vertex_groups -> vertex_groups: collection, "'(read-only) Vertex groups of the object'"
-ID|Object.x_ray -> show_x_ray: boolean "'Makes the object draw in front of others'"
-ID|ParticleSettings.abs_path_time -> use_absolute_path_time: boolean "'Path timing is in absolute frames'"
-ID|ParticleSettings.active_dupliweight -> active_dupliweight: pointer, "'(read-only)'"
-ID|ParticleSettings.active_dupliweight_index -> active_dupliweight_index: int "'NO DESCRIPTION'"
-ID|ParticleSettings.adaptive_angle -> adaptive_angle: int "'How many degrees path has to curve to make another render segment'"
-ID|ParticleSettings.adaptive_pix -> adaptive_pix: int "'How many pixels path has to cover to make another render segment'"
-ID|ParticleSettings.amount -> amount: int "'Total number of particles'"
-ID|ParticleSettings.angular_velocity_factor -> angular_velocity_factor: float "'Angular velocity amount'"
-ID|ParticleSettings.angular_velocity_mode -> angular_velocity_mode: enum "'Particle angular velocity mode'"
-ID|ParticleSettings.animate_branching -> use_animate_branching: boolean "'Animate branching'"
-ID|ParticleSettings.animation_data -> animation_data: pointer, "'(read-only) Animation data for this datablock'"
-ID|ParticleSettings.billboard_align -> billboard_align: enum "'In respect to what the billboards are aligned'"
-ID|ParticleSettings.billboard_animation -> billboard_animation: enum "'How to animate billboard textures'"
-ID|ParticleSettings.billboard_lock -> lock_billboard: boolean "'Lock the billboards align axis'"
-ID|ParticleSettings.billboard_object -> billboard_object: pointer "'Billboards face this object (default is active camera)'"
-ID|ParticleSettings.billboard_offset -> billboard_offset: float "'NO DESCRIPTION'"
-ID|ParticleSettings.billboard_random_tilt -> billboard_random_tilt: float "'Random tilt of the billboards'"
-ID|ParticleSettings.billboard_split_offset -> billboard_split_offset: enum "'How to offset billboard textures'"
-ID|ParticleSettings.billboard_tilt -> billboard_tilt: float "'Tilt of the billboards'"
-ID|ParticleSettings.billboard_uv_split -> billboard_uv_split: int "'Amount of rows/columns to split UV coordinates for billboards'"
-ID|ParticleSettings.boids -> boids: pointer, "'(read-only)'"
-ID|ParticleSettings.boids_2d -> lock_boids_to_surface: boolean "'Constrain boids to a surface'"
-ID|ParticleSettings.branch_threshold -> branch_threshold: float "'Threshold of branching'"
-ID|ParticleSettings.branching -> use_branching: boolean "'Branch child paths from each other'"
-ID|ParticleSettings.brownian_factor -> brownian_factor: float "'Specify the amount of Brownian motion'"
-ID|ParticleSettings.child_effector -> apply_effector_to_children: boolean "'Apply effectors to children'"
-ID|ParticleSettings.child_guide -> apply_guide_to_children: boolean "'NO DESCRIPTION'"
-ID|ParticleSettings.child_length -> child_length: float "'Length of child paths'"
-ID|ParticleSettings.child_length_thres -> child_length_thres: float "'Amount of particles left untouched by child path length'"
-ID|ParticleSettings.child_nbr -> child_nbr: int "'Amount of children/parent'"
-ID|ParticleSettings.child_radius -> child_radius: float "'Radius of children around parent'"
-ID|ParticleSettings.child_random_size -> child_random_size: float "'Random variation to the size of the child particles'"
-ID|ParticleSettings.child_roundness -> child_roundness: float "'Roundness of children around parent'"
-ID|ParticleSettings.child_size -> child_size: float "'A multiplier for the child particle size'"
-ID|ParticleSettings.child_type -> child_type: enum "'Create child particles'"
-ID|ParticleSettings.clump_factor -> clump_factor: float "'Amount of clumping'"
-ID|ParticleSettings.clumppow -> clumppow: float "'Shape of clumping'"
-ID|ParticleSettings.damp_factor -> damp_factor: float "'Specify the amount of damping'"
-ID|ParticleSettings.die_on_collision -> use_die_on_collision: boolean "'Particles die when they collide with a deflector object'"
-ID|ParticleSettings.died -> use_died: boolean "'Show particles after they have died'"
-ID|ParticleSettings.display -> display: int "'Percentage of particles to display in 3D view'"
-ID|ParticleSettings.distribution -> distribution: enum "'How to distribute particles on selected element'"
-ID|ParticleSettings.drag_factor -> drag_factor: float "'Specify the amount of air-drag'"
-ID|ParticleSettings.draw_as -> draw_as: enum "'How particles are drawn in viewport'"
-ID|ParticleSettings.draw_health -> show_health: boolean "'Draw boid health'"
-ID|ParticleSettings.draw_size -> draw_size: int "'Size of particles on viewport in pixels (0=default)'"
-ID|ParticleSettings.draw_step -> draw_step: int "'How many steps paths are drawn with (power of 2)'"
-ID|ParticleSettings.dupli_group -> dupli_group: pointer "'Show Objects in this Group in place of particles'"
-ID|ParticleSettings.dupli_object -> dupli_object: pointer "'Show this Object in place of particles'"
-ID|ParticleSettings.dupliweights -> dupliweights: collection, "'(read-only) Weights for all of the objects in the dupli group'"
-ID|ParticleSettings.effect_hair -> effect_hair: float "'Hair stiffness for effectors'"
-ID|ParticleSettings.effector_weights -> effector_weights: pointer, "'(read-only)'"
-ID|ParticleSettings.emit_from -> emit_from: enum "'Where to emit particles from'"
-ID|ParticleSettings.emitter -> use_render_emitter: boolean "'Render emitter Object also'"
-ID|ParticleSettings.enable_simplify -> use_simplify: boolean "'Remove child strands as the object becomes smaller on the screen'"
-ID|ParticleSettings.even_distribution -> use_even_distribution: boolean "'Use even distribution from faces based on face areas or edge lengths'"
-ID|ParticleSettings.fluid -> fluid: pointer, "'(read-only)'"
-ID|ParticleSettings.force_field_1 -> force_field_1: pointer, "'(read-only)'"
-ID|ParticleSettings.force_field_2 -> force_field_2: pointer, "'(read-only)'"
-ID|ParticleSettings.frame_end -> frame_end: float "'Frame # to stop emitting particles'"
-ID|ParticleSettings.frame_start -> frame_start: float "'Frame # to start emitting particles'"
-ID|ParticleSettings.grid_invert -> invert_grid: boolean "'Invert what is considered object and what is not'"
-ID|ParticleSettings.grid_resolution -> grid_resolution: int "'The resolution of the particle grid'"
-ID|ParticleSettings.hair_bspline -> use_hair_bspline: boolean "'Interpolate hair using B-Splines'"
-ID|ParticleSettings.hair_step -> hair_step: int "'Number of hair segments'"
-ID|ParticleSettings.integrator -> integrator: enum "'Select physics integrator type'"
-ID|ParticleSettings.jitter_factor -> jitter_factor: float "'Amount of jitter applied to the sampling'"
-ID|ParticleSettings.keyed_loops -> keyed_loops: int "'Number of times the keys are looped'"
-ID|ParticleSettings.keys_step -> keys_step: int "'NO DESCRIPTION'"
-ID|ParticleSettings.kink -> kink: enum "'Type of periodic offset on the path'"
-ID|ParticleSettings.kink_amplitude -> kink_amplitude: float "'The amplitude of the offset'"
-ID|ParticleSettings.kink_axis -> kink_axis: enum "'Which axis to use for offset'"
-ID|ParticleSettings.kink_frequency -> kink_frequency: float "'The frequency of the offset (1/total length)'"
-ID|ParticleSettings.kink_shape -> kink_shape: float "'Adjust the offset to the beginning/end'"
-ID|ParticleSettings.lifetime -> lifetime: float "'Specify the life span of the particles'"
-ID|ParticleSettings.line_length_head -> line_length_head: float '"Length of the line\'s head"'
-ID|ParticleSettings.line_length_tail -> line_length_tail: float '"Length of the line\'s tail"'
-ID|ParticleSettings.mass -> mass: float "'Specify the mass of the particles'"
-ID|ParticleSettings.material -> material: int "'Specify material used for the particles'"
-ID|ParticleSettings.material_color -> show_material_color: boolean '"Draw particles using material\'s diffuse color"'
-ID|ParticleSettings.normal_factor -> normal_factor: float "'Let the surface normal give the particle a starting speed'"
-ID|ParticleSettings.num -> show_number: boolean "'Show particle number'"
-ID|ParticleSettings.object_aligned_factor -> object_aligned_factor: float "'Let the emitter object orientation give the particle a starting speed'"
-ID|ParticleSettings.object_factor -> object_factor: float "'Let the object give the particle a starting speed'"
-ID|ParticleSettings.parent -> use_parents: boolean "'Render parent particles'"
-ID|ParticleSettings.particle_factor -> particle_factor: float "'Let the target particle give the particle a starting speed'"
-ID|ParticleSettings.particle_size -> particle_size: float "'The size of the particles'"
-ID|ParticleSettings.path_end -> path_end: float "'End time of drawn path'"
-ID|ParticleSettings.path_start -> path_start: float "'Starting time of drawn path'"
-ID|ParticleSettings.phase_factor -> phase_factor: float "'Initial rotation phase'"
-ID|ParticleSettings.physics_type -> physics_type: enum "'Particle physics type'"
-ID|ParticleSettings.rand_group -> use_group_pick_random: boolean "'Pick objects from group randomly'"
-ID|ParticleSettings.random_factor -> random_factor: float "'Give the starting speed a random variation'"
-ID|ParticleSettings.random_length -> random_length: float "'Give path length a random variation'"
-ID|ParticleSettings.random_lifetime -> random_lifetime: float "'Give the particle life a random variation'"
-ID|ParticleSettings.random_phase_factor -> random_phase_factor: float "'Randomize rotation phase'"
-ID|ParticleSettings.random_rotation_factor -> random_rotation_factor: float "'Randomize rotation'"
-ID|ParticleSettings.random_size -> random_size: float "'Give the particle size a random variation'"
-ID|ParticleSettings.react_event -> react_event: enum "'The event of target particles to react on'"
-ID|ParticleSettings.react_multiple -> use_react_multiple: boolean "'React multiple times'"
-ID|ParticleSettings.react_start_end -> use_react_start_end: boolean "'Give birth to unreacted particles eventually'"
-ID|ParticleSettings.reaction_shape -> reaction_shape: float "'Power of reaction strength dependence on distance to target'"
-ID|ParticleSettings.reactor_factor -> reactor_factor: float "'Let the vector away from the target particles location give the particle a starting speed'"
-ID|ParticleSettings.ren_as -> ren_as: enum "'How particles are rendered'"
-ID|ParticleSettings.render_adaptive -> use_render_adaptive: boolean "'Use adapative rendering for paths'"
-ID|ParticleSettings.render_step -> render_step: int "'How many steps paths are rendered with (power of 2)'"
-ID|ParticleSettings.render_strand -> use_strand_primitive: boolean "'Use the strand primitive for rendering'"
-ID|ParticleSettings.rendered_child_nbr -> rendered_child_nbr: int "'Amount of children/parent for rendering'"
-ID|ParticleSettings.rotate_from -> rotate_from: enum "'NO DESCRIPTION'"
-ID|ParticleSettings.rotation_dynamic -> use_dynamic_rotation: boolean "'Sets rotation to dynamic/constant'"
-ID|ParticleSettings.rotation_mode -> rotation_mode: enum "'Particles initial rotation'"
-ID|ParticleSettings.rough1 -> rough1: float "'Amount of location dependent rough'"
-ID|ParticleSettings.rough1_size -> rough1_size: float "'Size of location dependent rough'"
-ID|ParticleSettings.rough2 -> rough2: float "'Amount of random rough'"
-ID|ParticleSettings.rough2_size -> rough2_size: float "'Size of random rough'"
-ID|ParticleSettings.rough2_thres -> rough2_thres: float "'Amount of particles left untouched by random rough'"
-ID|ParticleSettings.rough_end_shape -> rough_end_shape: float "'Shape of end point rough'"
-ID|ParticleSettings.rough_endpoint -> rough_endpoint: float "'Amount of end point rough'"
-ID|ParticleSettings.self_effect -> use_self_effect: boolean "'Particle effectors effect themselves'"
-ID|ParticleSettings.show_size -> show_size: boolean "'Show particle size'"
-ID|ParticleSettings.simplify_rate -> simplify_rate: float "'Speed of simplification'"
-ID|ParticleSettings.simplify_refsize -> simplify_refsize: int "'Reference size in pixels, after which simplification begins'"
-ID|ParticleSettings.simplify_transition -> simplify_transition: float "'Transition period for fading out strands'"
-ID|ParticleSettings.simplify_viewport -> simplify_viewport: float "'Speed of Simplification'"
-ID|ParticleSettings.size_deflect -> use_size_deflect: boolean '"Use particle\'s size in deflection"'
-ID|ParticleSettings.sizemass -> use_multiply_size_mass: boolean "'Multiply mass by particle size'"
-ID|ParticleSettings.subframes -> subframes: int "'Subframes to simulate for improved stability and finer granularity simulations'"
-ID|ParticleSettings.symmetric_branching -> use_symmetric_branching: boolean "'Start and end points are the same'"
-ID|ParticleSettings.tangent_factor -> tangent_factor: float "'Let the surface tangent give the particle a starting speed'"
-ID|ParticleSettings.tangent_phase -> tangent_phase: float "'Rotate the surface tangent'"
-ID|ParticleSettings.time_tweak -> time_tweak: float "'A multiplier for physics timestep (1.0 means one frame = 1/25 seconds)'"
-ID|ParticleSettings.trail_count -> trail_count: int "'Number of trail particles'"
-ID|ParticleSettings.trand -> use_emit_random: boolean "'Emit in random order of elements'"
-ID|ParticleSettings.type -> type: enum "'NO DESCRIPTION'"
-ID|ParticleSettings.unborn -> use_unborn: boolean "'Show particles before they are emitted'"
-ID|ParticleSettings.use_global_dupli -> use_global_dupli: boolean '"Use object\'s global coordinates for duplication"'
-ID|ParticleSettings.use_group_count -> use_group_count: boolean "'Use object multiple times in the same group'"
-ID|ParticleSettings.userjit -> userjit: int "'Emission locations / face (0 = automatic)'"
-ID|ParticleSettings.velocity -> show_velocity: boolean "'Show particle velocity'"
-ID|ParticleSettings.velocity_length -> use_velocity_length: boolean "'Multiply line length by particle speed'"
-ID|ParticleSettings.viewport -> use_simplify_viewport: boolean "'NO DESCRIPTION'"
-ID|ParticleSettings.virtual_parents -> virtual_parents: float "'Relative amount of virtual parents'"
-ID|ParticleSettings.whole_group -> use_whole_group: boolean "'Use whole group at once'"
-ID|Scene.active_keying_set -> active_keying_set: pointer "'Active Keying Set used to insert/delete keyframes'"
-ID|Scene.active_keying_set_index -> active_keying_set_index: int '"Current Keying Set index (negative for \'builtin\' and positive for \'absolute\')"'
-ID|Scene.all_keying_sets -> all_keying_sets: collection, "'(read-only) All Keying Sets available for use (builtins and Absolute Keying Sets for this Scene)'"
-ID|Scene.animation_data -> animation_data: pointer, "'(read-only) Animation data for this datablock'"
-ID|Scene.bases -> bases: collection, "'(read-only)'"
-ID|Scene.camera -> camera: pointer "'Active camera used for rendering the scene'"
-ID|Scene.cursor_location -> cursor_location: float "'3D cursor location'"
-ID|Scene.distance_model -> distance_model: enum "'Distance model for distance attenuation calculation'"
-ID|Scene.doppler_factor -> doppler_factor: float "'Pitch factor for Doppler effect calculation'"
-ID|Scene.frame_current -> frame_current: int "'NO DESCRIPTION'"
-ID|Scene.frame_drop -> use_frame_drop: boolean "'Play back dropping frames if frame display is too slow'"
-ID|Scene.frame_end -> frame_end: int "'Final frame of the playback/rendering range'"
-ID|Scene.frame_start -> frame_start: int "'First frame of the playback/rendering range'"
-ID|Scene.frame_step -> frame_step: int "'Number of frames to skip forward while rendering/playing back each frame'"
-ID|Scene.game_data -> game_data: pointer, "'(read-only)'"
-ID|Scene.gravity -> gravity: float "'Constant acceleration in a given direction'"
-ID|Scene.grease_pencil -> grease_pencil: pointer "'Grease Pencil datablock'"
-ID|Scene.keying_sets -> keying_sets: collection, "'(read-only) Absolute Keying Sets for this Scene'"
-ID|Scene.layers -> layers: boolean "'Layers visible when rendering the scene'"
-ID|Scene.mute_audio -> mute_audio: boolean "'Play back of audio from Sequence Editor will be muted'"
-ID|Scene.network_render -> network_render: pointer, "'(read-only) Network Render Settings'"
-ID|Scene.nla_tweakmode_on -> use_nla_tweakmode: boolean, "'(read-only) Indicates whether there is any action referenced by NLA being edited. Strictly read-only'"
-ID|Scene.nodetree -> nodetree: pointer, "'(read-only) Compositing node tree'"
-ID|Scene.objects -> objects: collection, "'(read-only)'"
-ID|Scene.orientations -> orientations: collection, "'(read-only)'"
-ID|Scene.pose_templates -> pose_templates: pointer, "'(read-only) Pose Template Settings'"
-ID|Scene.preview_range_frame_end -> preview_range_frame_end: int "'Alternative end frame for UI playback'"
-ID|Scene.preview_range_frame_start -> preview_range_frame_start: int "'Alternative start frame for UI playback'"
-ID|Scene.render -> render: pointer, "'(read-only)'"
-ID|Scene.scrub_audio -> use_audio_scrub: boolean "'Play audio from Sequence Editor while scrubbing'"
-ID|Scene.sequence_editor -> sequence_editor: pointer, "'(read-only)'"
-ID|Scene.set -> set: pointer "'Background set scene'"
-ID|Scene.speed_of_sound -> speed_of_sound: float "'Speed of sound for Doppler effect calculation'"
-ID|Scene.stamp_note -> stamp_note: string "'User define note for the render stamping'"
-ID|Scene.sync_audio -> use_audio_sync: boolean "'Play back and sync with audio clock, dropping frames if frame display is too slow'"
-ID|Scene.sync_mode -> sync_mode: enum "'How to sync playback'"
-ID|Scene.timeline_markers -> timeline_markers: collection, "'(read-only) Markers used in all timelines for the current scene'"
-ID|Scene.tool_settings -> tool_settings: pointer, "'(read-only)'"
-ID|Scene.unit_settings -> unit_settings: pointer, "'(read-only) Unit editing settings'"
-ID|Scene.use_gravity -> use_gravity: boolean "'Use global gravity for all dynamics'"
-ID|Scene.use_nodes -> use_nodes: boolean "'Enable the compositing node tree'"
-ID|Scene.use_preview_range -> use_preview_range: boolean "'Use an alternative start/end frame for UI playback, rather than the scene start/end frame'"
-ID|Scene.world -> world: pointer "'World used for rendering the scene'"
-ID|Screen.animation_playing -> is_animation_playing: boolean, "'(read-only) Animation playback is active'"
-ID|Screen.areas -> areas: collection, "'(read-only) Areas the screen is subdivided into'"
-ID|Screen.fullscreen -> is_fullscreen: boolean, "'(read-only) An area is maximised, filling this screen'"
-ID|Screen.scene -> scene: pointer "'Active scene to be edited in the screen'"
-ID|Sound.caching -> use_ram_cache: boolean "'The sound file is decoded and loaded into RAM'"
-ID|Sound.filepath -> filepath: string "'Sound sample file used by this Sound datablock'"
-ID|Sound.packed_file -> packed_file: pointer, "'(read-only)'"
-ID|Text.current_character -> current_character: int, "'(read-only) Index of current character in current line, and also start index of character in selection if one exists'"
-ID|Text.current_line -> current_line: pointer, "'(read-only) Current line, and start line of selection if one exists'"
-ID|Text.dirty -> is_dirty: boolean, "'(read-only) Text file has been edited since last save'"
-ID|Text.filepath -> filepath: string "'Filename of the text file'"
-ID|Text.lines -> lines: collection, "'(read-only) Lines of text'"
-ID|Text.markers -> markers: collection, "'(read-only) Text markers highlighting part of the text'"
-ID|Text.memory -> is_in_memory: boolean, "'(read-only) Text file is in memory, without a corresponding file on disk'"
-ID|Text.modified -> is_modified: boolean, "'(read-only) Text file on disk is different than the one in memory'"
-ID|Text.selection_end_character -> selection_end_character: int, "'(read-only) Index of character after end of selection in the selection end line'"
-ID|Text.selection_end_line -> selection_end_line: pointer, "'(read-only) End line of selection'"
-ID|Text.tabs_as_spaces -> use_tabs_as_spaces: boolean "'Automatically converts all new tabs into spaces'"
-ID|Text.use_module -> use_module: boolean '"Register this text as a module on loading, Text name must end with \'.py\'"'
-ID|Texture.animation_data -> animation_data: pointer, "'(read-only) Animation data for this datablock'"
-ID|Texture.brightness -> intensity: float "'NO DESCRIPTION'"
-ID|Texture.color_ramp -> color_ramp: pointer, "'(read-only)'"
-ID|Texture.contrast -> contrast: float "'NO DESCRIPTION'"
-ID|Texture.factor_blue -> factor_blue: float "'NO DESCRIPTION'"
-ID|Texture.factor_green -> factor_green: float "'NO DESCRIPTION'"
-ID|Texture.factor_red -> factor_red: float "'NO DESCRIPTION'"
-ID|Texture.node_tree -> node_tree: pointer, "'(read-only) Node tree for node-based textures'"
-ID|Texture.saturation -> saturation: float "'NO DESCRIPTION'"
-ID|Texture.type -> type: enum "'NO DESCRIPTION'"
-ID|Texture.use_color_ramp -> use_color_ramp: boolean "'Toggle color ramp operations'"
-ID|Texture.use_nodes -> use_nodes: boolean "'Make this a node-based texture'"
-ID|Texture.use_preview_alpha -> use_preview_alpha: boolean "'Show Alpha in Preview Render'"
-+ * ID|Texture|BlendTexture.flip_axis -> flip_axis: enum '"Flips the texture\'s X and Y axis"'
-+ * ID|Texture|BlendTexture.progression -> progression: enum "'Sets the style of the color blending'"
-+ * ID|Texture|CloudsTexture.nabla -> nabla: float "'Size of derivative offset used for calculating normal'"
-+ * ID|Texture|CloudsTexture.noise_basis -> noise_basis: enum "'Sets the noise basis used for turbulence'"
-+ * ID|Texture|CloudsTexture.noise_depth -> noise_depth: int "'Sets the depth of the cloud calculation'"
-+ * ID|Texture|CloudsTexture.noise_size -> noise_size: float "'Sets scaling for noise input'"
-+ * ID|Texture|CloudsTexture.noise_type -> noise_type: enum "'NO DESCRIPTION'"
-ID|Texture|CloudsTexture.stype -> stype: enum 'NO DESCRIPTION'
-ID|Texture|DistortedNoiseTexture.distortion -> distortion: float "'NO DESCRIPTION'"
-ID|Texture|DistortedNoiseTexture.nabla -> nabla: float "'Size of derivative offset used for calculating normal'"
-ID|Texture|DistortedNoiseTexture.noise_basis -> noise_basis: enum "'Sets the noise basis used for turbulence'"
-ID|Texture|DistortedNoiseTexture.noise_distortion -> noise_distortion: enum "'Sets the noise basis for the distortion'"
-ID|Texture|DistortedNoiseTexture.noise_size -> noise_size: float "'Sets scaling for noise input'"
-ID|Texture|EnvironmentMapTexture.environment_map -> environment_map: pointer, "'(read-only) Gets the environment map associated with this texture'"
-ID|Texture|EnvironmentMapTexture.filter -> filter: enum "'Texture filter to use for sampling image'"
-ID|Texture|EnvironmentMapTexture.filter_eccentricity -> filter_eccentricity: int "'Maximum eccentricity. Higher gives less blur at distant/oblique angles, but is also slower'"
-ID|Texture|EnvironmentMapTexture.filter_probes -> filter_probes: int "'Maximum number of samples. Higher gives less blur at distant/oblique angles, but is also slower'"
-ID|Texture|EnvironmentMapTexture.filter_size -> filter_size: float "'Multiplies the filter size used by MIP Map and Interpolation'"
-ID|Texture|EnvironmentMapTexture.filter_size_minimum -> use_filter_size_min: boolean "'Use Filter Size as a minimal filter value in pixels'"
-ID|Texture|EnvironmentMapTexture.image -> image: pointer "'Source image file to read the environment map from'"
-ID|Texture|EnvironmentMapTexture.image_user -> image_user: pointer, "'(read-only) Parameters defining which layer, pass and frame of the image is displayed'"
-ID|Texture|EnvironmentMapTexture.mipmap -> use_mipmap: boolean "'Uses auto-generated MIP maps for the image'"
-ID|Texture|EnvironmentMapTexture.mipmap_gauss -> use_mipmap_gauss: boolean "'Uses Gauss filter to sample down MIP maps'"
-ID|Texture|ImageTexture.calculate_alpha -> use_calculate_alpha: boolean "'Calculates an alpha channel based on RGB values in the image'"
-ID|Texture|ImageTexture.checker_distance -> checker_distance: float "'Sets distance between checker tiles'"
-ID|Texture|ImageTexture.checker_even -> use_checker_even: boolean "'Sets even checker tiles'"
-ID|Texture|ImageTexture.checker_odd -> use_checker_odd: boolean "'Sets odd checker tiles'"
-ID|Texture|ImageTexture.crop_max_x -> crop_max_x: float "'Sets maximum X value to crop the image'"
-ID|Texture|ImageTexture.crop_max_y -> crop_max_y: float "'Sets maximum Y value to crop the image'"
-ID|Texture|ImageTexture.crop_min_x -> crop_min_x: float "'Sets minimum X value to crop the image'"
-ID|Texture|ImageTexture.crop_min_y -> crop_min_y: float "'Sets minimum Y value to crop the image'"
-ID|Texture|ImageTexture.extension -> extension: enum "'Sets how the image is extrapolated past its original bounds'"
-ID|Texture|ImageTexture.filter -> filter: enum "'Texture filter to use for sampling image'"
-ID|Texture|ImageTexture.filter_eccentricity -> filter_eccentricity: int "'Maximum eccentricity. Higher gives less blur at distant/oblique angles, but is also slower'"
-ID|Texture|ImageTexture.filter_probes -> filter_probes: int "'Maximum number of samples. Higher gives less blur at distant/oblique angles, but is also slower'"
-ID|Texture|ImageTexture.filter_size -> filter_size: float "'Multiplies the filter size used by MIP Map and Interpolation'"
-ID|Texture|ImageTexture.filter_size_minimum -> use_minimum_filter_size: boolean "'Use Filter Size as a minimal filter value in pixels'"
-ID|Texture|ImageTexture.flip_axis -> use_flip_axis: boolean '"Flips the texture\'s X and Y axis"'
-ID|Texture|ImageTexture.image -> image: pointer "'NO DESCRIPTION'"
-ID|Texture|ImageTexture.image_user -> image_user: pointer, "'(read-only) Parameters defining which layer, pass and frame of the image is displayed'"
-ID|Texture|ImageTexture.interpolation -> use_interpolation: boolean "'Interpolates pixels using Area filter'"
-ID|Texture|ImageTexture.invert_alpha -> invert_alpha: boolean "'Inverts all the alpha values in the image'"
-ID|Texture|ImageTexture.mipmap -> use_mipmap: boolean "'Uses auto-generated MIP maps for the image'"
-ID|Texture|ImageTexture.mipmap_gauss -> use_mipmap_gauss: boolean "'Uses Gauss filter to sample down MIP maps'"
-ID|Texture|ImageTexture.mirror_x -> use_mirror_x: boolean "'Mirrors the image repetition on the X direction'"
-ID|Texture|ImageTexture.mirror_y -> use_mirror_y: boolean "'Mirrors the image repetition on the Y direction'"
-ID|Texture|ImageTexture.normal_map -> use_normal_map: boolean "'Uses image RGB values for normal mapping'"
-ID|Texture|ImageTexture.normal_space -> normal_space: enum "'Sets space of normal map image'"
-ID|Texture|ImageTexture.repeat_x -> repeat_x: int "'Sets a repetition multiplier in the X direction'"
-ID|Texture|ImageTexture.repeat_y -> repeat_y: int "'Sets a repetition multiplier in the Y direction'"
-ID|Texture|ImageTexture.use_alpha -> use_alpha: boolean "'Uses the alpha channel information in the image'"
-ID|Texture|MagicTexture.noise_depth -> noise_depth: int "'Sets the depth of the cloud calculation'"
-ID|Texture|MagicTexture.turbulence -> turbulence: float "'Sets the turbulence of the bandnoise and ringnoise types'"
-ID|Texture|MarbleTexture.nabla -> nabla: float "'Size of derivative offset used for calculating normal'"
-ID|Texture|MarbleTexture.noise_basis -> noise_basis: enum "'Sets the noise basis used for turbulence'"
-ID|Texture|MarbleTexture.noise_depth -> noise_depth: int "'Sets the depth of the cloud calculation'"
-ID|Texture|MarbleTexture.noise_size -> noise_size: float "'Sets scaling for noise input'"
-ID|Texture|MarbleTexture.noise_type -> noise_type: enum "'NO DESCRIPTION'"
-ID|Texture|MarbleTexture.noisebasis2 -> noisebasis2: enum "'NO DESCRIPTION'"
-ID|Texture|MarbleTexture.stype -> stype: enum "'NO DESCRIPTION'"
-ID|Texture|MarbleTexture.turbulence -> turbulence: float "'Sets the turbulence of the bandnoise and ringnoise types'"
-ID|Texture|MusgraveTexture.gain -> gain: float "'The gain multiplier'"
-ID|Texture|MusgraveTexture.highest_dimension -> highest_dimension: float "'Highest fractal dimension'"
-ID|Texture|MusgraveTexture.lacunarity -> lacunarity: float "'Gap between successive frequencies'"
-ID|Texture|MusgraveTexture.musgrave_type -> musgrave_type: enum "'NO DESCRIPTION'"
-ID|Texture|MusgraveTexture.nabla -> nabla: float "'Size of derivative offset used for calculating normal'"
-ID|Texture|MusgraveTexture.noise_basis -> noise_basis: enum "'Sets the noise basis used for turbulence'"
-ID|Texture|MusgraveTexture.noise_intensity -> noise_intensity: float "'NO DESCRIPTION'"
-ID|Texture|MusgraveTexture.noise_size -> noise_size: float "'Sets scaling for noise input'"
-ID|Texture|MusgraveTexture.octaves -> octaves: float "'Number of frequencies used'"
-ID|Texture|MusgraveTexture.offset -> offset: float "'The fractal offset'"
-ID|Texture|PointDensityTexture.pointdensity -> pointdensity: pointer, "'(read-only) The point density settings associated with this texture'"
-ID|Texture|StucciTexture.noise_basis -> noise_basis: enum "'Sets the noise basis used for turbulence'"
-ID|Texture|StucciTexture.noise_size -> noise_size: float "'Sets scaling for noise input'"
-ID|Texture|StucciTexture.noise_type -> noise_type: enum "'NO DESCRIPTION'"
-ID|Texture|StucciTexture.stype -> stype: enum "'NO DESCRIPTION'"
-ID|Texture|StucciTexture.turbulence -> turbulence: float "'Sets the turbulence of the bandnoise and ringnoise types'"
-ID|Texture|VoronoiTexture.coloring -> color_mode: enum "'NO DESCRIPTION'"
-ID|Texture|VoronoiTexture.distance_metric -> distance_metric: enum "'NO DESCRIPTION'"
-ID|Texture|VoronoiTexture.minkovsky_exponent -> minkovsky_exponent: float "'Minkovsky exponent'"
-ID|Texture|VoronoiTexture.nabla -> nabla: float "'Size of derivative offset used for calculating normal'"
-ID|Texture|VoronoiTexture.noise_intensity -> noise_intensity: float "'NO DESCRIPTION'"
-ID|Texture|VoronoiTexture.noise_size -> noise_size: float "'Sets scaling for noise input'"
-ID|Texture|VoronoiTexture.weight_1 -> weight_1: float "'Voronoi feature weight 1'"
-ID|Texture|VoronoiTexture.weight_2 -> weight_2: float "'Voronoi feature weight 2'"
-ID|Texture|VoronoiTexture.weight_3 -> weight_3: float "'Voronoi feature weight 3'"
-ID|Texture|VoronoiTexture.weight_4 -> weight_4: float "'Voronoi feature weight 4'"
-ID|Texture|VoxelDataTexture.image -> image: pointer "'NO DESCRIPTION'"
-ID|Texture|VoxelDataTexture.image_user -> image_user: pointer, "'(read-only) Parameters defining which layer, pass and frame of the image is displayed'"
-ID|Texture|VoxelDataTexture.voxeldata -> voxeldata: pointer, "'(read-only) The voxel data associated with this texture'"
-ID|Texture|WoodTexture.nabla -> nabla: float "'Size of derivative offset used for calculating normal'"
-ID|Texture|WoodTexture.noise_basis -> noise_basis: enum "'Sets the noise basis used for turbulence'"
-ID|Texture|WoodTexture.noise_size -> noise_size: float "'Sets scaling for noise input'"
-ID|Texture|WoodTexture.noise_type -> noise_type: enum "'NO DESCRIPTION'"
-ID|Texture|WoodTexture.noisebasis2 -> noisebasis2: enum "'NO DESCRIPTION'"
-ID|Texture|WoodTexture.stype -> stype: enum "'NO DESCRIPTION'"
-ID|Texture|WoodTexture.turbulence -> turbulence: float "'Sets the turbulence of the bandnoise and ringnoise types'"
-ID|VectorFont.filepath -> filepath: string, "'(read-only)'"
-ID|VectorFont.packed_file -> packed_file: pointer, "'(read-only)'"
-ID|WindowManager.active_keyconfig -> active_keyconfig: pointer "'NO DESCRIPTION'"
-ID|WindowManager.default_keyconfig -> default_keyconfig: pointer, "'(read-only)'"
-ID|WindowManager.keyconfigs -> keyconfigs: collection, "'(read-only) Registered key configurations'"
-ID|WindowManager.operators -> operators: collection, "'(read-only) Operator registry'"
-ID|WindowManager.windows -> windows: collection, "'(read-only) Open windows'"
-ID|World.active_texture -> active_texture: pointer "'Active texture slot being displayed'"
-ID|World.active_texture_index -> active_texture_index: int "'Index of active texture slot'"
-ID|World.ambient_color -> ambient_color: float "'NO DESCRIPTION'"
-ID|World.animation_data -> animation_data: pointer, "'(read-only) Animation data for this datablock'"
-ID|World.blend_sky -> use_sky_blend: boolean "'Render background with natural progression from horizon to zenith'"
-ID|World.exposure -> exposure: float "'Amount of exponential color correction for light'"
-ID|World.horizon_color -> horizon_color: float "'Color at the horizon'"
-ID|World.lighting -> lighting: pointer, "'(read-only) World lighting settings'"
-ID|World.mist -> mist: pointer, "'(read-only) World mist settings'"
-ID|World.paper_sky -> use_sky_paper: boolean "'Flatten blend or texture coordinates'"
-ID|World.range -> range: float "'The color range that will be mapped to 0-1'"
-ID|World.real_sky -> use_sky_real: boolean "'Render background with a real horizon, relative to the camera angle'"
-ID|World.stars -> stars: pointer, "'(read-only) World stars settings'"
-ID|World.texture_slots -> texture_slots: collection, "'(read-only) Texture slots defining the mapping and influence of textures'"
-ID|World.zenith_color -> zenith_color: float "'Color at the zenith'"
-IKParam.ik_solver -> ik_solver: enum, "'(read-only) IK solver for which these parameters are defined, 0 for Legacy, 1 for iTaSC'"
-IKParam|Itasc.auto_step -> use_auto_step: boolean "'Automatically determine the optimal number of steps for best performance/accuracy trade off'"
-IKParam|Itasc.dampeps -> dampeps: float "'Singular value under which damping is progressively applied. Higher values=more stability, less reactivity. Default=0.1'"
-IKParam|Itasc.dampmax -> dampmax: float "'Maximum damping coefficient when singular value is nearly 0. Higher values=more stability, less reactivity. Default=0.5'"
-IKParam|Itasc.feedback -> feedback: float "'Feedback coefficient for error correction. Average response time=1/feedback. Default=20'"
-IKParam|Itasc.max_step -> step_max: float "'Higher bound for timestep in second in case of automatic substeps'"
-IKParam|Itasc.max_velocity -> velocity_max: float "'Maximum joint velocity in rad/s. Default=50'"
-IKParam|Itasc.min_step -> step_min: float "'Lower bound for timestep in second in case of automatic substeps'"
-IKParam|Itasc.mode -> mode: enum "'NO DESCRIPTION'"
-IKParam|Itasc.num_iter -> num_iter: int "'Maximum number of iterations for convergence in case of reiteration'"
-IKParam|Itasc.num_step -> num_step: int "'Divides the frame interval into this many steps'"
-IKParam|Itasc.precision -> precision: float "'Precision of convergence in case of reiteration'"
-IKParam|Itasc.reiteration -> reiteration: enum "'Defines if the solver is allowed to reiterate (converges until precision is met) on none, first or all frames'"
-IKParam|Itasc.solver -> solver: enum "'Solving method selection: Automatic damping or manual damping'"
-ImageUser.auto_refresh -> use_auto_refresh: boolean "'Always refresh image on frame changes'"
-ImageUser.cyclic -> use_cyclic: boolean "'Cycle the images in the movie'"
-ImageUser.fields_per_frame -> fields_per_frame: int "'The number of fields per rendered frame (2 fields is 1 image)'"
-ImageUser.frame_start -> frame_start: int "'Sets the global starting frame of the movie'"
-ImageUser.frames -> frames: int "'Sets the number of images of a movie to use'"
-ImageUser.multilayer_layer -> multilayer_layer: int, "'(read-only) Layer in multilayer image'"
-ImageUser.multilayer_pass -> multilayer_pass: int, "'(read-only) Pass in multilayer image'"
-ImageUser.offset -> offset: int "'Offsets the number of the frame to use in the animation'"
-KeyConfig.keymaps -> keymaps: collection, "'(read-only) Key maps configured as part of this configuration'"
-KeyConfig.name -> name: string "'Name of the key configuration'"
-KeyConfig.user_defined -> is_user_defined: boolean, "'(read-only) Indicates that a keyconfig was defined by the user'"
-KeyMap.children_expanded -> show_expanded_children: boolean "'Children expanded in the user interface'"
-KeyMap.items -> items: collection, "'(read-only) Items in the keymap, linking an operator to an input event'"
-KeyMap.items_expanded -> show_expanded_items: boolean "'Expanded in the user interface'"
-KeyMap.modal -> is_modal: boolean, "'(read-only) Indicates that a keymap is used for translate modal events for an operator'"
-KeyMap.name -> name: string, "'(read-only) Name of the key map'"
-KeyMap.region_type -> region_type: enum, "'(read-only) Optional region type keymap is associated with'"
-KeyMap.space_type -> space_type: enum, "'(read-only) Optional space type keymap is associated with'"
-KeyMap.user_defined -> is_user_defined: boolean "'Keymap is defined by the user'"
-KeyMapItem.active -> active: boolean "'Activate or deactivate item'"
-KeyMapItem.alt -> pressed_alt: boolean "'Alt key pressed'"
-KeyMapItem.any -> pressed_any: boolean "'Any modifier keys pressed'"
-KeyMapItem.ctrl -> pressed_ctrl: boolean "'Control key pressed'"
-KeyMapItem.expanded -> show_expanded: boolean "'Show key map event and property details in the user interface'"
-KeyMapItem.id -> id: int, "'(read-only) ID of the item'"
-KeyMapItem.idname -> idname: string "'Identifier of operator to call on input event'"
-KeyMapItem.key_modifier -> key_modifier: enum "'Regular key pressed as a modifier'"
-KeyMapItem.map_type -> map_type: enum "'Type of event mapping'"
-KeyMapItem.name -> name: string, "'(read-only) Name of operator to call on input event'"
-KeyMapItem.oskey -> pressed_cmd: boolean "'Operating system key pressed'"
-KeyMapItem.properties -> properties: pointer, "'(read-only) Properties to set when the operator is called'"
-KeyMapItem.propvalue -> propvalue: enum "'The value this event translates to in a modal keymap'"
-KeyMapItem.shift -> pressed_shift: boolean "'Shift key pressed'"
-KeyMapItem.type -> type: enum "'Type of event'"
-KeyMapItem.value -> value: enum "'NO DESCRIPTION'"
-Keyframe.co -> co: float "'Coordinates of the control point'"
-Keyframe.handle1 -> handle_left: float "'Coordinates of the first handle'"
-Keyframe.handle1_type -> handle_left_type: enum "'Handle types'"
-Keyframe.handle2 -> handle_right: float "'Coordinates of the second handle'"
-Keyframe.handle2_type -> handle_right_type: enum "'Handle types'"
-Keyframe.interpolation -> interpolation: enum "'Interpolation method to use for segment of the curve from this Keyframe until the next Keyframe'"
-Keyframe.select_control_point -> select_control_point: boolean "'Control point selection status'"
-Keyframe.select_left_handle -> select_left_handle: boolean "'Handle 1 selection status'"
-Keyframe.select_right_handle -> select_right_handle: boolean "'Handle 2 selection status'"
-Keyframe.type -> type: enum "'The type of keyframe'"
-KeyingSet.absolute -> use_absolute: boolean "'Keying Set defines specific paths/settings to be keyframed (i.e. is not reliant on context info)'"
-KeyingSet.active_path -> active_path: pointer "'Active Keying Set used to insert/delete keyframes'"
-KeyingSet.active_path_index -> active_path_index: int "'Current Keying Set index'"
-KeyingSet.insertkey_needed -> use_insertkey_needed: boolean '"Only insert keyframes where they\'re needed in the relevant F-Curves"'
-KeyingSet.insertkey_visual -> use_insertkey_visual: boolean '"Insert keyframes based on \'visual transforms\'"'
-KeyingSet.insertkey_xyz_to_rgb -> use_insertkey_xyz_to_rgb: boolean "'Color for newly added transformation F-Curves (Location, Rotation, Scale) and also Color is based on the transform axis'"
-KeyingSet.name -> name: string "'NO DESCRIPTION'"
-KeyingSet.paths -> paths: collection, "'(read-only) Keying Set Paths to define settings that get keyframed together'"
-KeyingSet.type_info -> type_info: pointer, "'(read-only) Callback function defines for built-in Keying Sets'"
-KeyingSetInfo.bl_idname -> bl_idname: string "'NO DESCRIPTION'"
-KeyingSetInfo.bl_label -> bl_label: string "'NO DESCRIPTION'"
-KeyingSetInfo.insertkey_needed -> use_insertkey_needed: boolean '"Only insert keyframes where they\'re needed in the relevant F-Curves"'
-KeyingSetInfo.insertkey_visual -> use_insertkey_visual: boolean '"Insert keyframes based on \'visual transforms\'"'
-KeyingSetInfo.insertkey_xyz_to_rgb -> use_insertkey_xyz_to_rgb: boolean "'Color for newly added transformation F-Curves (Location, Rotation, Scale) and also Color is based on the transform axis'"
-KeyingSetPath.array_index -> array_index: int "'Index to the specific setting if applicable'"
-KeyingSetPath.data_path -> data_path: string "'Path to property setting'"
-KeyingSetPath.entire_array -> use_entire_array: boolean '"When an \'array/vector\' type is chosen (Location, Rotation, Color, etc.), entire array is to be used"'
-KeyingSetPath.group -> group: string "'Name of Action Group to assign setting(s) for this path to'"
-KeyingSetPath.grouping -> group_method: enum "'Method used to define which Group-name to use'"
-KeyingSetPath.id -> id: pointer "'ID-Block that keyframes for Keying Set should be added to (for Absolute Keying Sets only)'"
-KeyingSetPath.id_type -> id_type: enum "'Type of ID-block that can be used'"
-KeyingSetPath.insertkey_needed -> use_insertkey_needed: boolean '"Only insert keyframes where they\'re needed in the relevant F-Curves"'
-KeyingSetPath.insertkey_visual -> use_insertkey_visual: boolean '"Insert keyframes based on \'visual transforms\'"'
-KeyingSetPath.insertkey_xyz_to_rgb -> use_insertkey_xyz_to_rgb: boolean "'Color for newly added transformation F-Curves (Location, Rotation, Scale) and also Color is based on the transform axis'"
-LampSkySettings.atmosphere_distance_factor -> atmosphere_distance_factor: float "'Multiplier to convert blender units to physical distance'"
-LampSkySettings.atmosphere_extinction -> atmosphere_extinction: float "'Extinction scattering contribution factor'"
-LampSkySettings.atmosphere_inscattering -> atmosphere_inscattering: float "'Scatter contribution factor'"
-LampSkySettings.atmosphere_turbidity -> atmosphere_turbidity: float "'Sky turbidity'"
-LampSkySettings.backscattered_light -> backscattered_light: float "'Backscattered light'"
-LampSkySettings.horizon_brightness -> horizon_intensity: float "'Horizon brightness'"
-LampSkySettings.sky_blend -> sky_blend: float "'Blend factor with sky'"
-LampSkySettings.sky_blend_type -> sky_blend_type: enum "'Blend mode for combining sun sky with world sky'"
-LampSkySettings.sky_color_space -> sky_color_space: enum "'Color space to use for internal XYZ->RGB color conversion'"
-LampSkySettings.sky_exposure -> sky_exposure: float "'Strength of sky shading exponential exposure correction'"
-LampSkySettings.spread -> spread: float "'Horizon Spread'"
-LampSkySettings.sun_brightness -> sun_intensity: float "'Sun brightness'"
-LampSkySettings.sun_intensity -> sun_intensity: float "'Sun intensity'"
-LampSkySettings.sun_size -> sun_size: float "'Sun size'"
-LampSkySettings.use_atmosphere -> use_atmosphere: boolean "'Apply sun effect on atmosphere'"
-LampSkySettings.use_sky -> use_sky: boolean "'Apply sun effect on sky'"
-LatticePoint.co -> co: float, "'(read-only)'"
-LatticePoint.deformed_co -> deformed_co: float "'NO DESCRIPTION'"
-LatticePoint.groups -> groups: collection, "'(read-only) Weights for the vertex groups this point is member of'"
-Macro.bl_description -> bl_description: string "'NO DESCRIPTION'"
-Macro.bl_idname -> bl_idname: string "'NO DESCRIPTION'"
-Macro.bl_label -> bl_label: string "'NO DESCRIPTION'"
-Macro.bl_options -> bl_options: enum "'Options for this operator type'"
-Macro.name -> name: string, "'(read-only)'"
-Macro.properties -> properties: pointer, "'(read-only)'"
-Main.actions -> actions: collection, "'(read-only) Action datablocks.'"
-Main.armatures -> armatures: collection, "'(read-only) Armature datablocks.'"
-Main.brushes -> brushes: collection, "'(read-only) Brush datablocks.'"
-Main.cameras -> cameras: collection, "'(read-only) Camera datablocks.'"
-Main.curves -> curves: collection, "'(read-only) Curve datablocks.'"
-Main.debug -> show_debug: boolean "'Print debugging information in console'"
-Main.file_is_saved -> is_saved: boolean, "'(read-only) Has the current session been saved to disk as a .blend file'"
-Main.filepath -> filepath: string, "'(read-only) Path to the .blend file'"
-Main.fonts -> fonts: collection, "'(read-only) Vector font datablocks.'"
-Main.gpencil -> gpencil: collection, "'(read-only) Grease Pencil datablocks.'"
-Main.groups -> groups: collection, "'(read-only) Group datablocks.'"
-Main.images -> images: collection, "'(read-only) Image datablocks.'"
-Main.lamps -> lamps: collection, "'(read-only) Lamp datablocks.'"
-Main.lattices -> lattices: collection, "'(read-only) Lattice datablocks.'"
-Main.libraries -> libraries: collection, "'(read-only) Library datablocks.'"
-Main.materials -> materials: collection, "'(read-only) Material datablocks.'"
-Main.meshes -> meshes: collection, "'(read-only) Mesh datablocks.'"
-Main.metaballs -> metaballs: collection, "'(read-only) Metaball datablocks.'"
-Main.node_groups -> node_groups: collection, "'(read-only) Node group datablocks.'"
-Main.objects -> objects: collection, "'(read-only) Object datablocks.'"
-Main.particles -> particles: collection, "'(read-only) Particle datablocks.'"
-Main.scenes -> scenes: collection, "'(read-only) Scene datablocks.'"
-Main.screens -> screens: collection, "'(read-only) Screen datablocks.'"
-Main.scripts -> scripts: collection, "'(read-only) Script datablocks (DEPRECATED).'"
-Main.sounds -> sounds: collection, "'(read-only) Sound datablocks.'"
-Main.texts -> texts: collection, "'(read-only) Text datablocks.'"
-Main.textures -> textures: collection, "'(read-only) Texture datablocks.'"
-Main.window_managers -> window_managers: collection, "'(read-only) Window manager datablocks.'"
-Main.worlds -> worlds: collection, "'(read-only) World datablocks.'"
-MaterialHalo.add -> add: float "'Sets the strength of the add effect'"
-MaterialHalo.flare_boost -> flare_boost: float "'Gives the flare extra strength'"
-MaterialHalo.flare_mode -> use_flare_mode: boolean "'Renders halo as a lensflare'"
-MaterialHalo.flare_seed -> flare_seed: int "'Specifies an offset in the flare seed table'"
-MaterialHalo.flare_size -> flare_size: float "'Sets the factor by which the flare is larger than the halo'"
-MaterialHalo.flare_subsize -> flare_subsize: float "'Sets the dimension of the subflares, dots and circles'"
-MaterialHalo.flares_sub -> flares_sub: int "'Sets the number of subflares'"
-MaterialHalo.hardness -> hard: int "'Sets the hardness of the halo'"
-MaterialHalo.line_number -> line_number: int "'Sets the number of star shaped lines rendered over the halo'"
-MaterialHalo.lines -> use_lines: boolean "'Renders star shaped lines over halo'"
-MaterialHalo.ring -> use_ring: boolean "'Renders rings over halo'"
-MaterialHalo.rings -> rings: int "'Sets the number of rings rendered over the halo'"
-MaterialHalo.seed -> seed: int "'Randomizes ring dimension and line location'"
-MaterialHalo.shaded -> use_shading: boolean "'Lets halo receive light and shadows from external objects'"
-MaterialHalo.size -> size: float "'Sets the dimension of the halo'"
-MaterialHalo.soft -> use_soft: boolean "'Softens the edges of halos at intersections with other geometry'"
-MaterialHalo.star -> use_star: boolean "'Renders halo as a star'"
-MaterialHalo.star_tips -> star_tips: int "'Sets the number of points on the star shaped halo'"
-MaterialHalo.texture -> use_texture: boolean "'Gives halo a texture'"
-MaterialHalo.vertex_normal -> use_vertex_normal: boolean "'Uses the vertex normal to specify the dimension of the halo'"
-MaterialHalo.xalpha -> use_extreme_alpha: boolean "'Uses extreme alpha'"
-MaterialPhysics.align_to_normal -> use_align_to_normal: boolean "'Align dynamic game objects along the surface normal, when inside the physics distance area'"
-MaterialPhysics.damp -> damp: float "'Damping of the spring force, when inside the physics distance area'"
-MaterialPhysics.distance -> distance: float "'Distance of the physics area'"
-MaterialPhysics.elasticity -> elasticity: float "'Elasticity of collisions'"
-MaterialPhysics.force -> force: float "'Upward spring force, when inside the physics distance area'"
-MaterialPhysics.friction -> friction: float "'Coulomb friction coefficient, when inside the physics distance area'"
-MaterialRaytraceMirror.depth -> depth: int "'Maximum allowed number of light inter-reflections'"
-MaterialRaytraceMirror.distance -> distance: float "'Maximum distance of reflected rays. Reflections further than this range fade to sky color or material color'"
-MaterialRaytraceMirror.enabled -> use: boolean "'Enable raytraced reflections'"
-MaterialRaytraceMirror.fade_to -> fade_to: enum "'The color that rays with no intersection within the Max Distance take. Material color can be best for indoor scenes, sky color for outdoor'"
-MaterialRaytraceMirror.fresnel -> fresnel: float "'Power of Fresnel for mirror reflection'"
-MaterialRaytraceMirror.fresnel_factor -> fresnel_factor: float "'Blending factor for Fresnel'"
-MaterialRaytraceMirror.gloss_anisotropic -> gloss_anisotropic: float "'The shape of the reflection, from 0.0 (circular) to 1.0 (fully stretched along the tangent'"
-MaterialRaytraceMirror.gloss_factor -> gloss_factor: float "'The shininess of the reflection. Values < 1.0 give diffuse, blurry reflections'"
-MaterialRaytraceMirror.gloss_samples -> gloss_samples: int "'Number of cone samples averaged for blurry reflections'"
-MaterialRaytraceMirror.gloss_threshold -> gloss_threshold: float "'Threshold for adaptive sampling. If a sample contributes less than this amount (as a percentage), sampling is stopped'"
-MaterialRaytraceMirror.reflect_factor -> reflect_factor: float "'Sets the amount mirror reflection for raytrace'"
-MaterialRaytraceTransparency.depth -> depth: int "'Maximum allowed number of light inter-refractions'"
-MaterialRaytraceTransparency.falloff -> falloff: float "'Falloff power for transmissivity filter effect (1.0 is linear)'"
-MaterialRaytraceTransparency.filter -> filter: float '"Amount to blend in the material\'s diffuse color in raytraced transparency (simulating absorption)"'
-MaterialRaytraceTransparency.fresnel -> fresnel: float "'Power of Fresnel for transparency (Ray or ZTransp)'"
-MaterialRaytraceTransparency.fresnel_factor -> fresnel_factor: float "'Blending factor for Fresnel'"
-MaterialRaytraceTransparency.gloss_factor -> gloss_factor: float "'The clarity of the refraction. Values < 1.0 give diffuse, blurry refractions'"
-MaterialRaytraceTransparency.gloss_samples -> gloss_samples: int "'Number of cone samples averaged for blurry refractions'"
-MaterialRaytraceTransparency.gloss_threshold -> gloss_threshold: float "'Threshold for adaptive sampling. If a sample contributes less than this amount (as a percentage), sampling is stopped'"
-MaterialRaytraceTransparency.ior -> ior: float "'Sets angular index of refraction for raytraced refraction'"
-MaterialRaytraceTransparency.limit -> limit: float "'Maximum depth for light to travel through the transparent material before becoming fully filtered (0.0 is disabled)'"
-MaterialSlot.link -> link: enum '"Link material to object or the object\'s data"'
-MaterialSlot.material -> material: pointer "'Material datablock used by this material slot'"
-MaterialSlot.name -> name: string, "'(read-only) Material slot name'"
-MaterialStrand.blend_distance -> blend_distance: float "'Worldspace distance over which to blend in the surface normal'"
-MaterialStrand.blender_units -> use_blender_units: boolean "'Use Blender units for widths instead of pixels'"
-MaterialStrand.min_size -> size_min: float "'Minimum size of strands in pixels'"
-MaterialStrand.root_size -> root_size: float "'Start size of strands in pixels or Blender units'"
-MaterialStrand.shape -> shape: float "'Positive values make strands rounder, negative makes strands spiky'"
-MaterialStrand.surface_diffuse -> use_surface_diffuse: boolean "'Make diffuse shading more similar to shading the surface'"
-MaterialStrand.tangent_shading -> use_tangent_shading: boolean "'Uses direction of strands as normal for tangent-shading'"
-MaterialStrand.tip_size -> tip_size: float "'End size of strands in pixels or Blender units'"
-MaterialStrand.uv_layer -> uv_layer: string "'Name of UV layer to override'"
-MaterialStrand.width_fade -> width_fade: float "'Transparency along the width of the strand'"
-MaterialSubsurfaceScattering.back -> back: float "'Back scattering weight'"
-MaterialSubsurfaceScattering.color -> color: float "'Scattering color'"
-MaterialSubsurfaceScattering.color_factor -> color_factor: float "'Blend factor for SSS colors'"
-MaterialSubsurfaceScattering.enabled -> use: boolean "'Enable diffuse subsurface scatting effects in a material'"
-MaterialSubsurfaceScattering.error_tolerance -> error_tolerance: float "'Error tolerance (low values are slower and higher quality)'"
-MaterialSubsurfaceScattering.front -> front: float "'Front scattering weight'"
-MaterialSubsurfaceScattering.ior -> ior: float "'Index of refraction (higher values are denser)'"
-MaterialSubsurfaceScattering.radius -> radius: float "'Mean red/green/blue scattering path length'"
-MaterialSubsurfaceScattering.scale -> scale: float "'Object scale factor'"
-MaterialSubsurfaceScattering.texture_factor -> texture_factor: float "'Texture scatting blend factor'"
-MaterialVolume.asymmetry -> asymmetry: float "'Back scattering (-1.0) to Forward scattering (1.0) and the range in between'"
-MaterialVolume.cache_resolution -> cache_resolution: int "'Resolution of the voxel grid, low resolutions are faster, high resolutions use more memory'"
-MaterialVolume.density -> density: float "'The base density of the volume'"
-MaterialVolume.density_scale -> density_scale: float '"Multiplier for the material\'s density"'
-MaterialVolume.depth_cutoff -> depth_cutoff: float "'Stop ray marching early if transmission drops below this luminance - higher values give speedups in dense volumes at the expense of accuracy'"
-MaterialVolume.emission -> emission: float "'Amount of light that gets emitted by the volume'"
-MaterialVolume.emission_color -> emission_color: float "'NO DESCRIPTION'"
-MaterialVolume.external_shadows -> use_external_shadows: boolean "'Receive shadows from sources outside the volume (temporary)'"
-MaterialVolume.light_cache -> use_light_cache: boolean "'Pre-calculate the shading information into a voxel grid, speeds up shading at slightly less accuracy'"
-MaterialVolume.lighting_mode -> light_mode: enum "'Method of shading, attenuating, and scattering light through the volume'"
-MaterialVolume.ms_diffusion -> ms_diffusion: float "'Diffusion factor, the strength of the blurring effect'"
-MaterialVolume.ms_intensity -> ms_intensity: float "'Multiplier for multiple scattered light energy'"
-MaterialVolume.ms_spread -> ms_spread: float "'Proportional distance over which the light is diffused'"
-MaterialVolume.reflection -> reflection: float "'Multiplier to make out-scattered light brighter or darker (non-physically correct)'"
-MaterialVolume.reflection_color -> reflection_color: float "'Colour of light scattered out of the volume (does not affect transmission)'"
-MaterialVolume.scattering -> scattering: float "'Amount of light that gets scattered out by the volume - the more out-scattering, the shallower the light will penetrate'"
-MaterialVolume.step_calculation -> step_calculation: enum "'Method of calculating the steps through the volume'"
-MaterialVolume.step_size -> step_size: float "'Distance between subsequent volume depth samples'"
-MaterialVolume.transmission_color -> transmission_color: float "'Result color of the volume, after other light has been scattered/absorbed'"
-Menu.bl_idname -> bl_idname: string "'NO DESCRIPTION'"
-Menu.bl_label -> bl_label: string "'NO DESCRIPTION'"
-Menu.layout -> layout: pointer, "'(read-only)'"
-MeshColor.color1 -> color1: float "'NO DESCRIPTION'"
-MeshColor.color2 -> color2: float "'NO DESCRIPTION'"
-MeshColor.color3 -> color3: float "'NO DESCRIPTION'"
-MeshColor.color4 -> color4: float "'NO DESCRIPTION'"
-MeshColorLayer.active -> active: boolean "'Sets the layer as active for display and editing'"
-MeshColorLayer.active_render -> active_render: boolean "'Sets the layer as active for rendering'"
-MeshColorLayer.data -> data: collection, "'(read-only)'"
-MeshColorLayer.name -> name: string "'NO DESCRIPTION'"
-MeshEdge.bevel_weight -> bevel_weight: float "'Weight used by the Bevel modifier'"
-MeshEdge.crease -> crease: float "'Weight used by the Subsurf modifier for creasing'"
-MeshEdge.fgon -> is_fgon: boolean, "'(read-only) Fgon edge'"
-MeshEdge.hide -> hide: boolean "'NO DESCRIPTION'"
-MeshEdge.index -> index: int, "'(read-only) Index number of the vertex'"
-MeshEdge.loose -> is_loose: boolean, "'(read-only) Loose edge'"
-MeshEdge.seam -> use_seam: boolean "'Seam edge for UV unwrapping'"
-MeshEdge.select -> select: boolean "'NO DESCRIPTION'"
-MeshEdge.sharp -> use_sharp: boolean "'Sharp edge for the EdgeSplit modifier'"
-MeshEdge.verts -> verts: int "'Vertex indices'"
-MeshFace.area -> area: float, "'(read-only) read only area of the face'"
-MeshFace.hide -> hide: boolean "'NO DESCRIPTION'"
-MeshFace.index -> index: int, "'(read-only) Index number of the vertex'"
-MeshFace.material_index -> material_index: int "'NO DESCRIPTION'"
-MeshFace.normal -> normal: float, "'(read-only) local space unit length normal vector for this face'"
-MeshFace.select -> select: boolean "'NO DESCRIPTION'"
-MeshFace.smooth -> use_smooth: boolean "'NO DESCRIPTION'"
-MeshFace.verts -> verts: int "'Vertex indices'"
-MeshFace.verts_raw -> verts_raw: int "'Fixed size vertex indices array'"
-MeshFaces.active -> active: int "'The active face for this mesh'"
-MeshFaces.active_tface -> active_tface: pointer, "'(read-only) Active Texture Face'"
-MeshFloatProperty.value -> value: float "'NO DESCRIPTION'"
-MeshFloatPropertyLayer.data -> data: collection, "'(read-only)'"
-MeshFloatPropertyLayer.name -> name: string "'NO DESCRIPTION'"
-MeshIntProperty.value -> value: int "'NO DESCRIPTION'"
-MeshIntPropertyLayer.data -> data: collection, "'(read-only)'"
-MeshIntPropertyLayer.name -> name: string "'NO DESCRIPTION'"
-MeshSticky.co -> co: float "'Sticky texture coordinate location'"
-MeshStringProperty.value -> value: string "'NO DESCRIPTION'"
-MeshStringPropertyLayer.data -> data: collection, "'(read-only)'"
-MeshStringPropertyLayer.name -> name: string "'NO DESCRIPTION'"
-MeshTextureFace.alpha_sort -> use_alpha_sort: boolean "'Enable sorting of faces for correct alpha drawing (slow, use Clip Alpha instead when possible)'"
-MeshTextureFace.billboard -> use_billboard: boolean "'Billboard with Z-axis constraint'"
-MeshTextureFace.collision -> use_collision: boolean "'Use face for collision and ray-sensor detection'"
-MeshTextureFace.halo -> use_halo: boolean "'Screen aligned billboard'"
-MeshTextureFace.image -> image: pointer "'NO DESCRIPTION'"
-MeshTextureFace.invisible -> hide: boolean "'Make face invisible'"
-MeshTextureFace.light -> use_light: boolean "'Use light for face'"
-MeshTextureFace.object_color -> use_object_color: boolean "'Use ObColor instead of vertex colors'"
-MeshTextureFace.select_uv -> select_uv: boolean "'NO DESCRIPTION'"
-MeshTextureFace.shadow -> use_shadow_face: boolean "'Face is used for shadow'"
-MeshTextureFace.shared -> use_blend_shared: boolean "'Blend vertex colors across face when vertices are shared'"
-MeshTextureFace.tex -> use_texture: boolean "'Render face with texture'"
-MeshTextureFace.text -> use_bitmap_text: boolean "'Enable bitmap text on face'"
-MeshTextureFace.transp -> transp: enum "'Transparency blending mode'"
-MeshTextureFace.twoside -> use_twoside: boolean "'Render face two-sided'"
-MeshTextureFace.uv -> uv: float "'NO DESCRIPTION'"
-MeshTextureFace.uv1 -> uv1: float "'NO DESCRIPTION'"
-MeshTextureFace.uv2 -> uv2: float "'NO DESCRIPTION'"
-MeshTextureFace.uv3 -> uv3: float "'NO DESCRIPTION'"
-MeshTextureFace.uv4 -> uv4: float "'NO DESCRIPTION'"
-MeshTextureFace.uv_pinned -> pin_uv: boolean "'NO DESCRIPTION'"
-MeshTextureFace.uv_raw -> uv_raw: float "'Fixed size UV coordinates array'"
-MeshTextureFaceLayer.active -> active: boolean "'Sets the layer as active for display and editing'"
-MeshTextureFaceLayer.active_clone -> active_clone: boolean "'Sets the layer as active for cloning'"
-MeshTextureFaceLayer.active_render -> active_render: boolean "'Sets the layer as active for rendering'"
-MeshTextureFaceLayer.data -> data: collection, "'(read-only)'"
-MeshTextureFaceLayer.name -> name: string "'NO DESCRIPTION'"
-MeshVertex.bevel_weight -> bevel_weight: float '"Weight used by the Bevel modifier \'Only Vertices\' option"'
-MeshVertex.co -> co: float "'NO DESCRIPTION'"
-MeshVertex.groups -> groups: collection, "'(read-only) Weights for the vertex groups this vertex is member of'"
-MeshVertex.hide -> hide: boolean "'NO DESCRIPTION'"
-MeshVertex.index -> index: int, "'(read-only) Index number of the vertex'"
-MeshVertex.normal -> normal: float "'Vertex Normal'"
-MeshVertex.select -> select: boolean "'NO DESCRIPTION'"
-MetaElement.hide -> hide: boolean "'Hide element'"
-MetaElement.location -> location: float "'NO DESCRIPTION'"
-MetaElement.negative -> use_negative: boolean "'Set metaball as negative one'"
-MetaElement.radius -> radius: float "'NO DESCRIPTION'"
-MetaElement.rotation -> rotation: float "'NO DESCRIPTION'"
-MetaElement.size_x -> size_x: float "'Size of element, use of components depends on element type'"
-MetaElement.size_y -> size_y: float "'Size of element, use of components depends on element type'"
-MetaElement.size_z -> size_z: float "'Size of element, use of components depends on element type'"
-MetaElement.stiffness -> stiffness: float "'Stiffness defines how much of the element to fill'"
-MetaElement.type -> type: enum "'Metaball types'"
-Modifier.editmode -> show_in_editmode: boolean "'Use modifier while in the edit mode'"
-Modifier.expanded -> show_expanded: boolean "'Set modifier expanded in the user interface'"
-Modifier.name -> name: string "'Modifier name'"
-Modifier.on_cage -> show_on_cage: boolean "'Enable direct editing of modifier control cage'"
-Modifier.realtime -> show_realtime: boolean "'Realtime display of a modifier'"
-Modifier.render -> use_render: boolean "'Use modifier during rendering'"
-Modifier.type -> type: enum, "'(read-only)'"
-+ * Modifier|ArmatureModifier.invert -> invert_vertex_group: boolean "'Invert vertex group influence'"
-+ * Modifier|ArmatureModifier.multi_modifier -> use_multi_modifier: boolean "'Use same input as previous modifier, and mix results using overall vgroup'"
-+ * Modifier|ArmatureModifier.object -> object: pointer "'Armature object to deform with'"
-+ * Modifier|ArmatureModifier.quaternion -> use_deform_preserve_volume: boolean "'Deform rotation interpolation with quaternions'"
-+ * Modifier|ArmatureModifier.use_bone_envelopes -> use_bone_envelopes: boolean "'NO DESCRIPTION'"
-+ * Modifier|ArmatureModifier.use_vertex_groups -> use_vertex_groups: boolean "'NO DESCRIPTION'"
-+ * Modifier|ArmatureModifier.vertex_group -> vertex_group: string "'Vertex group name'"
-+ * Modifier|ArrayModifier.add_offset_object -> use_object_offset: boolean '"Add another object\'s transformation to the total offset"'
-+ * Modifier|ArrayModifier.constant_offset -> use_constant_offset: boolean "'Add a constant offset'"
-+ * Modifier|ArrayModifier.constant_offset_displacement -> constant_offset_displace: float "'NO DESCRIPTION'"
-CHECK WITH SIMILAR * Modifier|ArrayModifier.count -> count: int 'Number of duplicates to make'
-+ * Modifier|ArrayModifier.curve -> curve: pointer "'Curve object to fit array length to'"
-+ * Modifier|ArrayModifier.end_cap -> end_cap: pointer "'Mesh object to use as an end cap'"
-+ * Modifier|ArrayModifier.fit_type -> fit_type: enum "'Array length calculation method'"
-+ * Modifier|ArrayModifier.length -> fit_length: float "'Length to fit array within'"
-+ * Modifier|ArrayModifier.merge_adjacent_vertices -> use_merge_vertices: boolean "'Merge vertices in adjacent duplicates'"
-+ * Modifier|ArrayModifier.merge_distance -> merge_threshold: float "'Limit below which to merge vertices'"
-+ * Modifier|ArrayModifier.merge_end_vertices -> use_merge_vertices_cap: boolean "'Merge vertices in first and last duplicates'"
-+ * Modifier|ArrayModifier.offset_object -> offset_object: pointer "'NO DESCRIPTION'"
-+ * Modifier|ArrayModifier.relative_offset -> use_relative_offset: boolean '"Add an offset relative to the object\'s bounding box"'
-+ * Modifier|ArrayModifier.relative_offset_displacement -> relative_offset_displace: float "'NO DESCRIPTION'"
-+ * Modifier|ArrayModifier.start_cap -> start_cap: pointer "'Mesh object to use as a start cap'"
-+ * Modifier|BevelModifier.angle -> angle_limit: float "'Angle above which to bevel edges'"
-+ * Modifier|BevelModifier.edge_weight_method -> edge_weight_method: enum "'What edge weight to use for weighting a vertex'"
-+ * Modifier|BevelModifier.limit_method -> limit_method: enum "'NO DESCRIPTION'"
-+ * Modifier|BevelModifier.only_vertices -> use_only_vertices: boolean "'Bevel verts/corners, not edges'"
-+ * Modifier|BevelModifier.width -> width: float "'Bevel value/amount'"
-+ * Modifier|BooleanModifier.object -> object: pointer "'Mesh object to use for Boolean operation'"
-+ * Modifier|BooleanModifier.operation -> operation: enum "'NO DESCRIPTION'"
-+ * Modifier|BuildModifier.frame_start -> frame_start: float "'Specify the start frame of the effect'"
-+ * Modifier|BuildModifier.length -> frame_length: float "'Specify the total time the build effect requires'"
-+ * Modifier|BuildModifier.randomize -> use_random_order: boolean "'Randomize the faces or edges during build'"
-+ * Modifier|BuildModifier.seed -> seed: int "'Specify the seed for random if used'"
-+ * Modifier|CastModifier.cast_type -> cast_type: enum "'NO DESCRIPTION'"
-+ * Modifier|CastModifier.factor -> factor: float "'NO DESCRIPTION'"
-+ * Modifier|CastModifier.from_radius -> use_radius_as_size: boolean "'Use radius as size of projection shape (0 = auto)'"
-+ * Modifier|CastModifier.object -> object: pointer "'Control object: if available, its location determines the center of the effect'"
-+ * Modifier|CastModifier.radius -> radius: float "'Only deform vertices within this distance from the center of the effect (leave as 0 for infinite.)'"
-+ * Modifier|CastModifier.size -> size: float "'Size of projection shape (leave as 0 for auto.)'"
-+ * Modifier|CastModifier.use_transform -> use_transform: boolean "'Use object transform to control projection shape'"
-+ * Modifier|CastModifier.vertex_group -> vertex_group: string "'Vertex group name'"
-+ * Modifier|CastModifier.x -> use_x: boolean "'NO DESCRIPTION'"
-+ * Modifier|CastModifier.y -> use_y: boolean "'NO DESCRIPTION'"
-+ * Modifier|CastModifier.z -> use_z: boolean "'NO DESCRIPTION'"
-+ * Modifier|ClothModifier.collision_settings -> collision_settings: pointer, "'(read-only)'"
-+ * Modifier|ClothModifier.point_cache -> point_cache: pointer, "'(read-only)'"
-+ * Modifier|ClothModifier.settings -> settings: pointer, "'(read-only)'"
-+ * Modifier|CollisionModifier.settings -> settings: pointer, "'(read-only)'"
-Modifier|CurveModifier.deform_axis -> deform_axis: enum "'The axis that the curve deforms along'"
-Modifier|CurveModifier.object -> object: pointer "'Curve object to deform with'"
-Modifier|CurveModifier.vertex_group -> vertex_group: string "'Vertex group name'"
-Modifier|DecimateModifier.face_count -> face_count: int, "'(read-only) The current number of faces in the decimated mesh'"
-Modifier|DecimateModifier.ratio -> ratio: float "'Defines the ratio of triangles to reduce to'"
-Modifier|DisplaceModifier.direction -> direction: enum "'NO DESCRIPTION'"
-Modifier|DisplaceModifier.midlevel -> midlevel: float "'Material value that gives no displacement'"
-Modifier|DisplaceModifier.strength -> strength: float "'NO DESCRIPTION'"
-Modifier|DisplaceModifier.texture -> texture: pointer "'NO DESCRIPTION'"
-Modifier|DisplaceModifier.texture_coordinate_object -> texture_coordinate_object: pointer "'NO DESCRIPTION'"
-Modifier|DisplaceModifier.texture_coordinates -> texture_coordinates: enum "'NO DESCRIPTION'"
-Modifier|DisplaceModifier.uv_layer -> uv_layer: string "'UV layer name'"
-Modifier|DisplaceModifier.vertex_group -> vertex_group: string "'Vertex group name'"
-Modifier|EdgeSplitModifier.split_angle -> split_angle: float "'Angle above which to split edges'"
-Modifier|EdgeSplitModifier.use_edge_angle -> use_edge_angle: boolean "'Split edges with high angle between faces'"
-Modifier|EdgeSplitModifier.use_sharp -> use_edge_sharp: boolean "'Split edges that are marked as sharp'"
-Modifier|ExplodeModifier.alive -> show_alive: boolean "'Show mesh when particles are alive'"
-Modifier|ExplodeModifier.dead -> show_dead: boolean "'Show mesh when particles are dead'"
-Modifier|ExplodeModifier.protect -> protect: float "'Clean vertex group edges'"
-Modifier|ExplodeModifier.size -> use_size: boolean "'Use particle size for the shrapnel'"
-Modifier|ExplodeModifier.split_edges -> use_edge_split: boolean "'Split face edges for nicer shrapnel'"
-Modifier|ExplodeModifier.unborn -> show_unborn: boolean "'Show mesh when particles are unborn'"
-Modifier|ExplodeModifier.vertex_group -> vertex_group: string "'NO DESCRIPTION'"
-Modifier|FluidSimulationModifier.settings -> settings: pointer, "'(read-only) Settings for how this object is used in the fluid simulation'"
-Modifier|HookModifier.falloff -> falloff: float "'If not zero, the distance from the hook where influence ends'"
-Modifier|HookModifier.force -> force: float "'Relative force of the hook'"
-Modifier|HookModifier.object -> object: pointer "'Parent Object for hook, also recalculates and clears offset'"
-Modifier|HookModifier.subtarget -> subtarget: string "'Name of Parent Bone for hook (if applicable), also recalculates and clears offset'"
-Modifier|HookModifier.vertex_group -> vertex_group: string "'Vertex group name'"
-Modifier|LatticeModifier.object -> object: pointer "'Lattice object to deform with'"
-Modifier|LatticeModifier.vertex_group -> vertex_group: string "'Vertex group name'"
-Modifier|MaskModifier.armature -> armature: pointer "'Armature to use as source of bones to mask'"
-Modifier|MaskModifier.invert -> invert_vertex_group: boolean "'Use vertices that are not part of region defined'"
-Modifier|MaskModifier.mode -> mode: enum "'NO DESCRIPTION'"
-Modifier|MaskModifier.vertex_group -> vertex_group: string "'Vertex group name'"
-Modifier|MeshDeformModifier.dynamic -> use_dynamic_bind: boolean "'Recompute binding dynamically on top of other deformers (slower and more memory consuming.)'"
-Modifier|MeshDeformModifier.invert -> invert_vertex_group: boolean "'Invert vertex group influence'"
-Modifier|MeshDeformModifier.is_bound -> is_bound: boolean, "'(read-only) Whether geometry has been bound to control cage'"
-Modifier|MeshDeformModifier.object -> object: pointer "'Mesh object to deform with'"
-Modifier|MeshDeformModifier.precision -> precision: int "'The grid size for binding'"
-Modifier|MeshDeformModifier.vertex_group -> vertex_group: string "'Vertex group name'"
-Modifier|MirrorModifier.clip -> use_clip: boolean "'Prevents vertices from going through the mirror during transform'"
-Modifier|MirrorModifier.merge_limit -> merge_limit: float "'Distance from axis within which mirrored vertices are merged'"
-Modifier|MirrorModifier.mirror_object -> mirror_object: pointer "'Object to use as mirror'"
-Modifier|MirrorModifier.mirror_u -> use_mirror_u: boolean "'Mirror the U texture coordinate around the 0.5 point'"
-Modifier|MirrorModifier.mirror_v -> use_mirror_v: boolean "'Mirror the V texture coordinate around the 0.5 point'"
-Modifier|MirrorModifier.mirror_vertex_groups -> use_mirror_vertex_groups: boolean "'Mirror vertex groups (e.g. .R->.L)'"
-Modifier|MirrorModifier.x -> use_x: boolean "'Enable X axis mirror'"
-Modifier|MirrorModifier.y -> use_y: boolean "'Enable Y axis mirror'"
-Modifier|MirrorModifier.z -> use_z: boolean "'Enable Z axis mirror'"
-Modifier|MultiresModifier.external -> is_external: boolean, "'(read-only) Store multires displacements outside the .blend file, to save memory'"
-Modifier|MultiresModifier.filepath -> filepath: string "'Path to external displacements file'"
-Modifier|MultiresModifier.levels -> levels: int "'Number of subdivisions to use in the viewport'"
-Modifier|MultiresModifier.optimal_display -> show_only_control_edges: boolean "'Skip drawing/rendering of interior subdivided edges'"
-Modifier|MultiresModifier.render_levels -> render_levels: int "'NO DESCRIPTION'"
-Modifier|MultiresModifier.sculpt_levels -> sculpt_levels: int "'Number of subdivisions to use in sculpt mode'"
-Modifier|MultiresModifier.subdivision_type -> subdivision_type: enum "'Selects type of subdivision algorithm'"
-Modifier|MultiresModifier.total_levels -> total_levels: int, "'(read-only) Number of subdivisions for which displacements are stored'"
-Modifier|ParticleInstanceModifier.alive -> use_alive: boolean "'Show instances when particles are alive'"
-Modifier|ParticleInstanceModifier.axis -> axis: enum "'Pole axis for rotation'"
-Modifier|ParticleInstanceModifier.children -> use_children: boolean "'Create instances from child particles'"
-Modifier|ParticleInstanceModifier.dead -> use_dead: boolean "'Show instances when particles are dead'"
-Modifier|ParticleInstanceModifier.keep_shape -> use_preserve_shape: boolean '"Don\'t stretch the object"'
-Modifier|ParticleInstanceModifier.normal -> use_normal: boolean "'Create instances from normal particles'"
-Modifier|ParticleInstanceModifier.object -> object: pointer "'Object that has the particle system'"
-Modifier|ParticleInstanceModifier.particle_system_number -> particle_system_number: int "'NO DESCRIPTION'"
-Modifier|ParticleInstanceModifier.position -> position: float "'Position along path'"
-Modifier|ParticleInstanceModifier.random_position -> random_position: float "'Randomize position along path'"
-Modifier|ParticleInstanceModifier.size -> use_size: boolean "'Use particle size to scale the instances'"
-Modifier|ParticleInstanceModifier.unborn -> use_unborn: boolean "'Show instances when particles are unborn'"
-Modifier|ParticleInstanceModifier.use_path -> use_path: boolean "'Create instances along particle paths'"
-Modifier|ParticleSystemModifier.particle_system -> particle_system: pointer, "'(read-only) Particle System that this modifier controls'"
-Modifier|ScrewModifier.angle -> angle: float "'Angle of revolution'"
-Modifier|ScrewModifier.axis -> axis: enum "'Screw axis'"
-Modifier|ScrewModifier.iterations -> iterations: int "'Number of times to apply the screw operation'"
-Modifier|ScrewModifier.object -> object: pointer "'Object to define the screw axis'"
-Modifier|ScrewModifier.render_steps -> render_steps: int "'Number of steps in the revolution'"
-Modifier|ScrewModifier.screw_offset -> screw_offset: float "'Offset the revolution along its axis'"
-Modifier|ScrewModifier.steps -> steps: int "'Number of steps in the revolution'"
-Modifier|ScrewModifier.use_normal_calculate -> use_normal_calculate: boolean "'Calculate the order of edges (needed for meshes, but not curves)'"
-Modifier|ScrewModifier.use_normal_flip -> use_normal_flip: boolean "'Flip normals of lathed faces'"
-Modifier|ScrewModifier.use_object_screw_offset -> use_object_screw_offset: boolean "'Use the distance between the objects to make a screw'"
-Modifier|ShrinkwrapModifier.auxiliary_target -> auxiliary_target: pointer "'Additional mesh target to shrink to'"
-Modifier|ShrinkwrapModifier.cull_back_faces -> use_cull_back_faces: boolean "'Stop vertices from projecting to a back face on the target'"
-Modifier|ShrinkwrapModifier.cull_front_faces -> use_cull_front_faces: boolean "'Stop vertices from projecting to a front face on the target'"
-Modifier|ShrinkwrapModifier.keep_above_surface -> use_keep_above_surface: boolean "'NO DESCRIPTION'"
-Modifier|ShrinkwrapModifier.mode -> mode: enum "'NO DESCRIPTION'"
-Modifier|ShrinkwrapModifier.negative -> use_negative_direction: boolean "'Allow vertices to move in the negative direction of axis'"
-Modifier|ShrinkwrapModifier.offset -> offset: float "'Distance to keep from the target'"
-Modifier|ShrinkwrapModifier.positive -> use_positive_direction: boolean "'Allow vertices to move in the positive direction of axis'"
-Modifier|ShrinkwrapModifier.subsurf_levels -> subsurf_levels: int '"Number of subdivisions that must be performed before extracting vertices\' positions and normals"'
-Modifier|ShrinkwrapModifier.target -> target: pointer "'Mesh target to shrink to'"
-Modifier|ShrinkwrapModifier.vertex_group -> vertex_group: string "'Vertex group name'"
-Modifier|ShrinkwrapModifier.x -> use_project_x: boolean "'NO DESCRIPTION'"
-Modifier|ShrinkwrapModifier.y -> use_project_y: boolean "'NO DESCRIPTION'"
-Modifier|ShrinkwrapModifier.z -> use_project_z: boolean "'NO DESCRIPTION'"
-Modifier|SimpleDeformModifier.factor -> factor: float "'NO DESCRIPTION'"
-Modifier|SimpleDeformModifier.limits -> limits: float "'Lower/Upper limits for deform'"
-Modifier|SimpleDeformModifier.lock_x_axis -> lock_x: boolean "'NO DESCRIPTION'"
-Modifier|SimpleDeformModifier.lock_y_axis -> lock_y: boolean "'NO DESCRIPTION'"
-Modifier|SimpleDeformModifier.mode -> mode: enum "'NO DESCRIPTION'"
-Modifier|SimpleDeformModifier.origin -> origin: pointer "'Origin of modifier space coordinates'"
-Modifier|SimpleDeformModifier.relative -> use_relative: boolean "'Sets the origin of deform space to be relative to the object'"
-Modifier|SimpleDeformModifier.vertex_group -> vertex_group: string "'Vertex group name'"
-Modifier|SmokeModifier.coll_settings -> coll_settings: pointer, "'(read-only)'"
-Modifier|SmokeModifier.domain_settings -> domain_settings: pointer, "'(read-only)'"
-Modifier|SmokeModifier.flow_settings -> flow_settings: pointer, "'(read-only)'"
-Modifier|SmokeModifier.smoke_type -> smoke_type: enum "'NO DESCRIPTION'"
-Modifier|SmoothModifier.factor -> factor: float "'NO DESCRIPTION'"
-Modifier|SmoothModifier.repeat -> repeat: int "'NO DESCRIPTION'"
-Modifier|SmoothModifier.vertex_group -> vertex_group: string "'Vertex group name'"
-Modifier|SmoothModifier.x -> use_x: boolean "'NO DESCRIPTION'"
-Modifier|SmoothModifier.y -> use_y: boolean "'NO DESCRIPTION'"
-Modifier|SmoothModifier.z -> use_z: boolean "'NO DESCRIPTION'"
-Modifier|SoftBodyModifier.point_cache -> point_cache: pointer, "'(read-only)'"
-Modifier|SoftBodyModifier.settings -> settings: pointer, "'(read-only)'"
-Modifier|SolidifyModifier.edge_crease_inner -> edge_crease_inner: float "'Assign a crease to inner edges'"
-Modifier|SolidifyModifier.edge_crease_outer -> edge_crease_outer: float "'Assign a crease to outer edges'"
-Modifier|SolidifyModifier.edge_crease_rim -> edge_crease_rim: float "'Assign a crease to the edges making up the rim'"
-Modifier|SolidifyModifier.invert -> invert_vertex_group: boolean "'Invert the vertex group influence'"
-Modifier|SolidifyModifier.offset -> offset: float "'NO DESCRIPTION'"
-Modifier|SolidifyModifier.thickness -> thickness: float "'Thickness of the shell'"
-Modifier|SolidifyModifier.use_even_offset -> use_even_offset: boolean "'Maintain thickness by adjusting for sharp corners (slow, disable when not needed)'"
-Modifier|SolidifyModifier.use_quality_normals -> use_quality_normals: boolean "'Calculate normals which result in more even thickness (slow, disable when not needed)'"
-Modifier|SolidifyModifier.use_rim -> use_rim: boolean "'Create edge loops between the inner and outer surfaces on face edges (slow, disable when not needed)'"
-Modifier|SolidifyModifier.use_rim_material -> use_rim_material: boolean "'Use in the next material for rim faces'"
-Modifier|SolidifyModifier.vertex_group -> vertex_group: string "'Vertex group name'"
-Modifier|SubsurfModifier.levels -> levels: int "'Number of subdivisions to perform'"
-Modifier|SubsurfModifier.optimal_display -> show_only_control_edges: boolean "'Skip drawing/rendering of interior subdivided edges'"
-Modifier|SubsurfModifier.render_levels -> render_levels: int "'Number of subdivisions to perform when rendering'"
-Modifier|SubsurfModifier.subdivision_type -> subdivision_type: enum "'Selects type of subdivision algorithm'"
-Modifier|SubsurfModifier.subsurf_uv -> use_subsurf_uv: boolean "'Use subsurf to subdivide UVs'"
-Modifier|UVProjectModifier.aspect_x -> aspect_x: float "'NO DESCRIPTION'"
-Modifier|UVProjectModifier.aspect_y -> aspect_y: float "'NO DESCRIPTION'"
-Modifier|UVProjectModifier.image -> image: pointer "'NO DESCRIPTION'"
-Modifier|UVProjectModifier.num_projectors -> num_projectors: int "'Number of projectors to use'"
-Modifier|UVProjectModifier.override_image -> use_image_override: boolean '"Override faces\' current images with the given image"'
-Modifier|UVProjectModifier.projectors -> projectors: collection, "'(read-only)'"
-Modifier|UVProjectModifier.scale_x -> scale_x: float "'NO DESCRIPTION'"
-Modifier|UVProjectModifier.scale_y -> scale_y: float "'NO DESCRIPTION'"
-Modifier|UVProjectModifier.uv_layer -> uv_layer: string "'UV layer name'"
-Modifier|WaveModifier.cyclic -> use_cyclic: boolean "'Cyclic wave effect'"
-Modifier|WaveModifier.damping_time -> damping_time: float "'NO DESCRIPTION'"
-Modifier|WaveModifier.falloff_radius -> falloff_radius: float "'NO DESCRIPTION'"
-Modifier|WaveModifier.height -> height: float "'NO DESCRIPTION'"
-Modifier|WaveModifier.lifetime -> lifetime: float "'NO DESCRIPTION'"
-Modifier|WaveModifier.narrowness -> narrowness: float "'NO DESCRIPTION'"
-Modifier|WaveModifier.normals -> use_normal: boolean "'Displace along normal'"
-Modifier|WaveModifier.speed -> speed: float "'NO DESCRIPTION'"
-Modifier|WaveModifier.start_position_object -> start_position_object: pointer "'NO DESCRIPTION'"
-Modifier|WaveModifier.start_position_x -> start_position_x: float "'NO DESCRIPTION'"
-Modifier|WaveModifier.start_position_y -> start_position_y: float "'NO DESCRIPTION'"
-Modifier|WaveModifier.texture -> texture: pointer "'Texture for modulating the wave'"
-Modifier|WaveModifier.texture_coordinates -> texture_coordinates: enum "'Texture coordinates used for modulating input'"
-Modifier|WaveModifier.texture_coordinates_object -> texture_coordinates_object: pointer "'NO DESCRIPTION'"
-Modifier|WaveModifier.time_offset -> time_offset: float "'Either the starting frame (for positive speed) or ending frame (for negative speed.)'"
-Modifier|WaveModifier.uv_layer -> uv_layer: string "'UV layer name'"
-Modifier|WaveModifier.vertex_group -> vertex_group: string "'Vertex group name for modulating the wave'"
-Modifier|WaveModifier.width -> width: float "'NO DESCRIPTION'"
-Modifier|WaveModifier.x -> use_x: boolean "'X axis motion'"
-Modifier|WaveModifier.x_normal -> use_normal_x: boolean "'Enable displacement along the X normal'"
-Modifier|WaveModifier.y -> use_y: boolean "'Y axis motion'"
-Modifier|WaveModifier.y_normal -> use_normal_y: boolean "'Enable displacement along the Y normal'"
-Modifier|WaveModifier.z_normal -> use_normal_z: boolean "'Enable displacement along the Z normal'"
-MotionPath.editing -> is_edited: boolean "'Path is being edited'"
-MotionPath.frame_end -> frame_end: int, "'(read-only) End frame of the stored range'"
-MotionPath.frame_start -> frame_start: int, "'(read-only) Starting frame of the stored range'"
-MotionPath.length -> length: int, "'(read-only) Number of frames cached'"
-MotionPath.points -> points: collection, "'(read-only) Cached positions per frame'"
-MotionPath.use_bone_head -> use_bone_head: boolean, "'(read-only) For PoseBone paths, use the bone head location when calculating this path'"
-MotionPathVert.co -> co: float "'NO DESCRIPTION'"
-MotionPathVert.select -> select: boolean "'Path point is selected for editing'"
-NlaStrip.action -> action: pointer "'Action referenced by this strip'"
-NlaStrip.action_frame_end -> action_frame_end: float "'NO DESCRIPTION'"
-NlaStrip.action_frame_start -> action_frame_start: float "'NO DESCRIPTION'"
-NlaStrip.active -> active: boolean, "'(read-only) NLA Strip is active'"
-NlaStrip.animated_influence -> use_animated_influence: boolean "'Influence setting is controlled by an F-Curve rather than automatically determined'"
-NlaStrip.animated_time -> use_animated_time: boolean "'Strip time is controlled by an F-Curve rather than automatically determined'"
-NlaStrip.animated_time_cyclic -> use_animated_time_cyclic: boolean "'Cycle the animated time within the action start & end'"
-NlaStrip.auto_blending -> use_auto_blend: boolean "'Number of frames for Blending In/Out is automatically determined from overlapping strips'"
-NlaStrip.blend_in -> blend_in: float "'Number of frames at start of strip to fade in influence'"
-NlaStrip.blend_out -> blend_out: float "'NO DESCRIPTION'"
-NlaStrip.blending -> blend_type: enum '"Method used for combining strip\'s result with accumulated result"'
-NlaStrip.extrapolation -> extrapolation: enum "'Action to take for gaps past the strip extents'"
-NlaStrip.fcurves -> fcurves: collection, '"(read-only) F-Curves for controlling the strip\'s influence and timing"'
-NlaStrip.frame_end -> frame_end: float "'NO DESCRIPTION'"
-NlaStrip.frame_start -> frame_start: float "'NO DESCRIPTION'"
-NlaStrip.influence -> influence: float "'Amount the strip contributes to the current result'"
-NlaStrip.modifiers -> modifiers: collection, "'(read-only) Modifiers affecting all the F-Curves in the referenced Action'"
-NlaStrip.mute -> mute: boolean "'NLA Strip is not evaluated'"
-NlaStrip.name -> name: string "'NO DESCRIPTION'"
-NlaStrip.repeat -> repeat: float "'Number of times to repeat the action range'"
-NlaStrip.reversed -> use_reverse: boolean "'NLA Strip is played back in reverse order (only when timing is automatically determined)'"
-NlaStrip.scale -> scale: float "'Scaling factor for action'"
-NlaStrip.select -> select: boolean "'NLA Strip is selected'"
-NlaStrip.strip_time -> strip_time: float "'Frame of referenced Action to evaluate'"
-NlaStrip.strips -> strips: collection, "'(read-only) NLA Strips that this strip acts as a container for (if it is of type Meta)'"
-NlaStrip.type -> type: enum, "'(read-only) Type of NLA Strip'"
-NlaTrack.active -> active: boolean, "'(read-only) NLA Track is active'"
-NlaTrack.lock -> lock: boolean "'NLA Track is locked'"
-NlaTrack.mute -> mute: boolean "'NLA Track is not evaluated'"
-NlaTrack.name -> name: string "'NO DESCRIPTION'"
-NlaTrack.select -> select: boolean "'NLA Track is selected'"
-NlaTrack.solo -> is_solo: boolean, "'(read-only) NLA Track is evaluated itself (i.e. active Action and all other NLA Tracks in the same AnimData block are disabled)'"
-NlaTrack.strips -> strips: collection, "'(read-only) NLA Strips on this NLA-track'"
-Node.inputs -> inputs: collection, "'(read-only)'"
-Node.location -> location: float "'NO DESCRIPTION'"
-Node.name -> name: string "'Node name'"
-Node.outputs -> outputs: collection, "'(read-only)'"
-+ * Node|CompositorNode.type -> type: enum, "'(read-only)'"
-+ * Node|CompositorNode|CompositorNodeAlphaOver.convert_premul -> use_premultiply: boolean "'NO DESCRIPTION'"
-+ * Node|CompositorNode|CompositorNodeAlphaOver.premul -> premul: float "'Mix Factor'"
-+ * Node|CompositorNode|CompositorNodeBilateralblur.iterations -> iterations: int "'NO DESCRIPTION'"
-+ * Node|CompositorNode|CompositorNodeBilateralblur.sigma_color -> sigma_color: float "'NO DESCRIPTION'"
-+ * Node|CompositorNode|CompositorNodeBilateralblur.sigma_space -> sigma_space: float "'NO DESCRIPTION'"
-+ * Node|CompositorNode|CompositorNodeBlur.bokeh -> use_bokeh: boolean "'NO DESCRIPTION'"
-+ * Node|CompositorNode|CompositorNodeBlur.factor -> factor: float "'NO DESCRIPTION'"
-+ * Node|CompositorNode|CompositorNodeBlur.factor_x -> factor_x: float "'NO DESCRIPTION'"
-+ * Node|CompositorNode|CompositorNodeBlur.factor_y -> factor_y: float "'NO DESCRIPTION'"
-+ * Node|CompositorNode|CompositorNodeBlur.filter_type -> filter_type: enum "'NO DESCRIPTION'"
-+ * Node|CompositorNode|CompositorNodeBlur.gamma -> use_gamma_correction: boolean "'NO DESCRIPTION'"
-+ * Node|CompositorNode|CompositorNodeBlur.relative -> use_relative: boolean "'NO DESCRIPTION'"
-+ * Node|CompositorNode|CompositorNodeBlur.sizex -> size_x: int "'NO DESCRIPTION'"
-+ * Node|CompositorNode|CompositorNodeBlur.sizey -> size_y: int "'NO DESCRIPTION'"
-+ * Node|CompositorNode|CompositorNodeChannelMatte.algorithm -> limit_method: enum "'Algorithm to use to limit channel'"
-+ * Node|CompositorNode|CompositorNodeChannelMatte.channel -> matte_channel: enum "'Channel used to determine matte'"
-+ * Node|CompositorNode|CompositorNodeChannelMatte.color_space -> color_space: enum "'NO DESCRIPTION'"
-+ * Node|CompositorNode|CompositorNodeChannelMatte.high -> limit_max: float "'Values higher than this setting are 100% opaque'"
-+ * Node|CompositorNode|CompositorNodeChannelMatte.limit_channel -> limit_channel: enum "'Limit by this channels value'"
-+ * Node|CompositorNode|CompositorNodeChannelMatte.low -> limit_min: float "'Values lower than this setting are 100% keyed'"
-TODO * Node|CompositorNode|CompositorNodeChromaMatte.acceptance -> acceptance: float 'Tolerance for a color to be considered a keying color'
-TODO * Node|CompositorNode|CompositorNodeChromaMatte.cutoff -> cutoff: float 'Tolerance below which colors will be considered as exact matches'
-Node|CompositorNode|CompositorNodeChromaMatte.gain -> gain: float "'Alpha gain'"
-Node|CompositorNode|CompositorNodeChromaMatte.lift -> lift: float "'Alpha lift'"
-Node|CompositorNode|CompositorNodeChromaMatte.shadow_adjust -> shadow_adjust: float "'Adjusts the brightness of any shadows captured'"
-Node|CompositorNode|CompositorNodeColorBalance.correction_formula -> correction_formula: enum "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeColorBalance.gain -> gain: float "'Correction for Highlights'"
-Node|CompositorNode|CompositorNodeColorBalance.gamma -> gamma: float "'Correction for Midtones'"
-Node|CompositorNode|CompositorNodeColorBalance.lift -> lift: float "'Correction for Shadows'"
-Node|CompositorNode|CompositorNodeColorBalance.offset -> offset: float "'Correction for Shadows'"
-Node|CompositorNode|CompositorNodeColorBalance.power -> power: float "'Correction for Midtones'"
-Node|CompositorNode|CompositorNodeColorBalance.slope -> slope: float "'Correction for Highlights'"
-Node|CompositorNode|CompositorNodeColorMatte.h -> h: float "'Hue tolerance for colors to be considered a keying color'"
-Node|CompositorNode|CompositorNodeColorMatte.s -> s: float "'Saturation Tolerance for the color'"
-Node|CompositorNode|CompositorNodeColorMatte.v -> v: float "'Value Tolerance for the color'"
-Node|CompositorNode|CompositorNodeColorSpill.algorithm -> algorithm: enum "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeColorSpill.channel -> channel: enum "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeColorSpill.limit_channel -> limit_channel: enum "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeColorSpill.ratio -> ratio: float "'Scale limit by value'"
-Node|CompositorNode|CompositorNodeColorSpill.unspill -> use_unspill: boolean "'Compensate all channels (diffenrently) by hand'"
-Node|CompositorNode|CompositorNodeColorSpill.unspill_blue -> unspill_blue: float "'Blue spillmap scale'"
-Node|CompositorNode|CompositorNodeColorSpill.unspill_green -> unspill_green: float "'Green spillmap scale'"
-Node|CompositorNode|CompositorNodeColorSpill.unspill_red -> unspill_red: float "'Red spillmap scale'"
-Node|CompositorNode|CompositorNodeCrop.crop_size -> use_crop_size: boolean "'Whether to crop the size of the input image'"
-Node|CompositorNode|CompositorNodeCrop.x1 -> x1: int "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeCrop.x2 -> x2: int "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeCrop.y1 -> y1: int "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeCrop.y2 -> y2: int "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeCurveRGB.mapping -> mapping: pointer, "'(read-only)'"
-Node|CompositorNode|CompositorNodeCurveVec.mapping -> mapping: pointer, "'(read-only)'"
-Node|CompositorNode|CompositorNodeDBlur.angle -> angle: float "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeDBlur.center_x -> center_x: float "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeDBlur.center_y -> center_y: float "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeDBlur.distance -> distance: float "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeDBlur.iterations -> iterations: int "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeDBlur.spin -> spin: float "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeDBlur.wrap -> use_wrap: boolean "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeDBlur.zoom -> zoom: float "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeDefocus.angle -> angle: int "'Bokeh shape rotation offset in degrees'"
-Node|CompositorNode|CompositorNodeDefocus.bokeh -> bokeh: enum "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeDefocus.f_stop -> f_stop: float "'Amount of focal blur, 128=infinity=perfect focus, half the value doubles the blur radius'"
-Node|CompositorNode|CompositorNodeDefocus.gamma_correction -> use_gamma_correction: boolean "'Enable gamma correction before and after main process'"
-Node|CompositorNode|CompositorNodeDefocus.max_blur -> blur_max: float "'blur limit, maximum CoC radius, 0=no limit'"
-Node|CompositorNode|CompositorNodeDefocus.preview -> use_preview: boolean "'Enable sampling mode, useful for preview when using low samplecounts'"
-Node|CompositorNode|CompositorNodeDefocus.samples -> samples: int "'Number of samples (16=grainy, higher=less noise)'"
-Node|CompositorNode|CompositorNodeDefocus.threshold -> threshold: float "'CoC radius threshold, prevents background bleed on in-focus midground, 0=off'"
-Node|CompositorNode|CompositorNodeDefocus.use_zbuffer -> use_zbuffer: boolean "'Disable when using an image as input instead of actual zbuffer (auto enabled if node not image based, eg. time node)'"
-Node|CompositorNode|CompositorNodeDefocus.z_scale -> z_scale: float "'Scales the Z input when not using a zbuffer, controls maximum blur designated by the color white or input value 1'"
-Node|CompositorNode|CompositorNodeDiffMatte.falloff -> falloff: float "'Color distances below this additional threshold are partially keyed'"
-Node|CompositorNode|CompositorNodeDiffMatte.tolerance -> tolerance: float "'Color distances below this threshold are keyed'"
-Node|CompositorNode|CompositorNodeDilateErode.distance -> distance: int "'Distance to grow/shrink (number of iterations)'"
-Node|CompositorNode|CompositorNodeDistanceMatte.falloff -> falloff: float "'Color distances below this additional threshold are partially keyed'"
-Node|CompositorNode|CompositorNodeDistanceMatte.tolerance -> tolerance: float "'Color distances below this threshold are keyed'"
-Node|CompositorNode|CompositorNodeFilter.filter_type -> filter_type: enum "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeFlip.axis -> axis: enum "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeGlare.angle_offset -> angle_offset: float "'Streak angle offset in degrees'"
-Node|CompositorNode|CompositorNodeGlare.color_modulation -> color_modulation: float "'Amount of Color Modulation, modulates colors of streaks and ghosts for a spectral dispersion effect'"
-Node|CompositorNode|CompositorNodeGlare.fade -> fade: float "'Streak fade-out factor'"
-Node|CompositorNode|CompositorNodeGlare.glare_type -> glare_type: enum "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeGlare.iterations -> iterations: int "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeGlare.mix -> mix: float "'-1 is original image only, 0 is exact 50/50 mix, 1 is processed image only'"
-Node|CompositorNode|CompositorNodeGlare.quality -> quality: enum "'If not set to high quality, the effect will be applied to a low-res copy of the source image'"
-Node|CompositorNode|CompositorNodeGlare.rotate_45 -> use_rotate_45: boolean "'Simple star filter: add 45 degree rotation offset'"
-Node|CompositorNode|CompositorNodeGlare.size -> size: int "'Glow/glare size (not actual size; relative to initial size of bright area of pixels)'"
-Node|CompositorNode|CompositorNodeGlare.streaks -> streaks: int "'Total number of streaks'"
-Node|CompositorNode|CompositorNodeGlare.threshold -> threshold: float "'The glare filter will only be applied to pixels brighter than this value'"
-Node|CompositorNode|CompositorNodeHueCorrect.mapping -> mapping: pointer, "'(read-only)'"
-Node|CompositorNode|CompositorNodeHueSat.hue -> hue: float "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeHueSat.sat -> sat: float "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeHueSat.val -> val: float "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeIDMask.index -> index: int "'Pass index number to convert to alpha'"
-Node|CompositorNode|CompositorNodeImage.auto_refresh -> use_auto_refresh: boolean "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeImage.cyclic -> use_cyclic: boolean "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeImage.frames -> frames: int "'Number of images used in animation'"
-Node|CompositorNode|CompositorNodeImage.image -> image: pointer "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeImage.layer -> layer: enum "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeImage.offset -> offset: int "'Offsets the number of the frame to use in the animation'"
-Node|CompositorNode|CompositorNodeImage.start -> start: int "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeInvert.alpha -> invert_alpha: boolean "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeInvert.rgb -> invert_rgb: boolean "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeLensdist.fit -> use_fit: boolean "'For positive distortion factor only: scale image such that black areas are not visible'"
-Node|CompositorNode|CompositorNodeLensdist.jitter -> use_jitter: boolean "'Enable/disable jittering; faster, but also noisier'"
-Node|CompositorNode|CompositorNodeLensdist.projector -> use_projector: boolean "'Enable/disable projector mode. Effect is applied in horizontal direction only'"
-Node|CompositorNode|CompositorNodeLevels.channel -> channel: enum "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeLumaMatte.high -> high: float "'Values higher than this setting are 100% opaque'"
-Node|CompositorNode|CompositorNodeLumaMatte.low -> low: float "'Values lower than this setting are 100% keyed'"
-Node|CompositorNode|CompositorNodeMapUV.alpha -> alpha: int "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeMapValue.max -> max: float "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeMapValue.min -> min: float "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeMapValue.offset -> offset: float "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeMapValue.size -> size: float "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeMapValue.use_max -> use_max: boolean "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeMapValue.use_min -> use_min: boolean "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeMath.operation -> operation: enum "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeMixRGB.alpha -> use_alpha: boolean "'Include alpha of second input in this operation'"
-Node|CompositorNode|CompositorNodeMixRGB.blend_type -> blend_type: enum "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeOutputFile.exr_codec -> exr_codec: enum "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeOutputFile.exr_half -> use_exr_half: boolean "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeOutputFile.filepath -> filepath: string "'Output path for the image, same functionality as render output.'"
-Node|CompositorNode|CompositorNodeOutputFile.frame_end -> frame_end: int "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeOutputFile.frame_start -> frame_start: int "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeOutputFile.image_type -> image_type: enum "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeOutputFile.quality -> quality: int "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodePremulKey.mapping -> mapping: enum "'Conversion between premultiplied alpha and key alpha'"
-Node|CompositorNode|CompositorNodeRLayers.layer -> layer: enum "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeRLayers.scene -> scene: pointer "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeRotate.filter -> filter: enum "'Method to use to filter rotation'"
-Node|CompositorNode|CompositorNodeScale.space -> space: enum "'Coordinate space to scale relative to'"
-Node|CompositorNode|CompositorNodeSplitViewer.axis -> axis: enum "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeSplitViewer.factor -> factor: int "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeTexture.node_output -> node_output: int "'For node-based textures, which output node to use'"
-Node|CompositorNode|CompositorNodeTexture.texture -> texture: pointer "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeTime.curve -> curve: pointer, "'(read-only)'"
-Node|CompositorNode|CompositorNodeTime.end -> end: int "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeTime.start -> start: int "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeTonemap.adaptation -> adaptation: float "'If 0, global; if 1, based on pixel intensity'"
-Node|CompositorNode|CompositorNodeTonemap.contrast -> contrast: float "'Set to 0 to use estimate from input image'"
-Node|CompositorNode|CompositorNodeTonemap.correction -> correction: float "'If 0, same for all channels; if 1, each independent'"
-Node|CompositorNode|CompositorNodeTonemap.gamma -> gamma: float "'If not used, set to 1'"
-Node|CompositorNode|CompositorNodeTonemap.intensity -> intensity: float "'If less than zero, darkens image; otherwise, makes it brighter'"
-Node|CompositorNode|CompositorNodeTonemap.key -> key: float "'The value the average luminance is mapped to'"
-Node|CompositorNode|CompositorNodeTonemap.offset -> offset: float "'Normally always 1, but can be used as an extra control to alter the brightness curve'"
-Node|CompositorNode|CompositorNodeTonemap.tonemap_type -> tonemap_type: enum "'NO DESCRIPTION'"
-Node|CompositorNode|CompositorNodeValToRGB.color_ramp -> color_ramp: pointer, "'(read-only)'"
-Node|CompositorNode|CompositorNodeVecBlur.curved -> use_curved: boolean "'Interpolate between frames in a bezier curve, rather than linearly'"
-Node|CompositorNode|CompositorNodeVecBlur.factor -> factor: float '"Scaling factor for motion vectors; actually \'shutter speed\' in frames"'
-Node|CompositorNode|CompositorNodeVecBlur.max_speed -> speed_max: int "'Maximum speed, or zero for none'"
-Node|CompositorNode|CompositorNodeVecBlur.min_speed -> speed_min: int "'Minimum speed for a pixel to be blurred; used to separate background from foreground'"
-Node|CompositorNode|CompositorNodeVecBlur.samples -> samples: int "'NO DESCRIPTION'"
-Node|NodeGroup.nodetree -> nodetree: pointer "'NO DESCRIPTION'"
-Node|ShaderNode.type -> type: enum, "'(read-only)'"
-Node|ShaderNode|ShaderNodeExtendedMaterial.diffuse -> use_diffuse: boolean "'Material Node outputs Diffuse'"
-Node|ShaderNode|ShaderNodeExtendedMaterial.invert_normal -> invert_normal: boolean "'Material Node uses inverted normal'"
-Node|ShaderNode|ShaderNodeExtendedMaterial.material -> material: pointer "'NO DESCRIPTION'"
-Node|ShaderNode|ShaderNodeExtendedMaterial.specular -> use_specular: boolean "'Material Node outputs Specular'"
-Node|ShaderNode|ShaderNodeGeometry.color_layer -> color_layer: string "'NO DESCRIPTION'"
-Node|ShaderNode|ShaderNodeGeometry.uv_layer -> uv_layer: string "'NO DESCRIPTION'"
-Node|ShaderNode|ShaderNodeMapping.clamp_maximum -> use_max: boolean "'Clamp the output coordinate to a maximum value'"
-Node|ShaderNode|ShaderNodeMapping.clamp_minimum -> use_min: boolean "'Clamp the output coordinate to a minimum value'"
-Node|ShaderNode|ShaderNodeMapping.location -> location: float "'Location offset for the input coordinate'"
-Node|ShaderNode|ShaderNodeMapping.maximum -> max: float "'Maximum value to clamp coordinate to'"
-Node|ShaderNode|ShaderNodeMapping.minimum -> min: float "'Minimum value to clamp coordinate to'"
-Node|ShaderNode|ShaderNodeMapping.rotation -> rotation: float "'Rotation offset for the input coordinate'"
-Node|ShaderNode|ShaderNodeMapping.scale -> scale: float "'Scale adjustment for the input coordinate'"
-Node|ShaderNode|ShaderNodeMaterial.diffuse -> use_diffuse: boolean "'Material Node outputs Diffuse'"
-Node|ShaderNode|ShaderNodeMaterial.invert_normal -> invert_normal: boolean "'Material Node uses inverted normal'"
-Node|ShaderNode|ShaderNodeMaterial.material -> material: pointer "'NO DESCRIPTION'"
-Node|ShaderNode|ShaderNodeMaterial.specular -> use_specular: boolean "'Material Node outputs Specular'"
-Node|ShaderNode|ShaderNodeMath.operation -> operation: enum "'NO DESCRIPTION'"
-Node|ShaderNode|ShaderNodeMixRGB.alpha -> use_alpha: boolean "'Include alpha of second input in this operation'"
-Node|ShaderNode|ShaderNodeMixRGB.blend_type -> blend_type: enum "'NO DESCRIPTION'"
-Node|ShaderNode|ShaderNodeRGBCurve.mapping -> mapping: pointer, "'(read-only)'"
-Node|ShaderNode|ShaderNodeTexture.node_output -> node_output: int "'For node-based textures, which output node to use'"
-Node|ShaderNode|ShaderNodeTexture.texture -> texture: pointer "'NO DESCRIPTION'"
-Node|ShaderNode|ShaderNodeValToRGB.color_ramp -> color_ramp: pointer, "'(read-only)'"
-Node|ShaderNode|ShaderNodeVectorCurve.mapping -> mapping: pointer, "'(read-only)'"
-Node|ShaderNode|ShaderNodeVectorMath.operation -> operation: enum "'NO DESCRIPTION'"
-Node|TextureNode.type -> type: enum, "'(read-only)'"
-Node|TextureNode|TextureNodeBricks.offset -> offset: float "'NO DESCRIPTION'"
-Node|TextureNode|TextureNodeBricks.offset_frequency -> offset_frequency: int "'Offset every N rows'"
-Node|TextureNode|TextureNodeBricks.squash -> squash: float "'NO DESCRIPTION'"
-Node|TextureNode|TextureNodeBricks.squash_frequency -> squash_frequency: int "'Squash every N rows'"
-Node|TextureNode|TextureNodeCurveRGB.mapping -> mapping: pointer, "'(read-only)'"
-Node|TextureNode|TextureNodeCurveTime.curve -> curve: pointer, "'(read-only)'"
-Node|TextureNode|TextureNodeCurveTime.end -> end: int "'NO DESCRIPTION'"
-Node|TextureNode|TextureNodeCurveTime.start -> start: int "'NO DESCRIPTION'"
-Node|TextureNode|TextureNodeImage.image -> image: pointer "'NO DESCRIPTION'"
-Node|TextureNode|TextureNodeMath.operation -> operation: enum "'NO DESCRIPTION'"
-Node|TextureNode|TextureNodeMixRGB.alpha -> use_alpha: boolean "'Include alpha of second input in this operation'"
-Node|TextureNode|TextureNodeMixRGB.blend_type -> blend_type: enum "'NO DESCRIPTION'"
-Node|TextureNode|TextureNodeOutput.output_name -> output_name: string "'NO DESCRIPTION'"
-Node|TextureNode|TextureNodeTexture.node_output -> node_output: int "'For node-based textures, which output node to use'"
-Node|TextureNode|TextureNodeTexture.texture -> texture: pointer "'NO DESCRIPTION'"
-Node|TextureNode|TextureNodeValToRGB.color_ramp -> color_ramp: pointer, "'(read-only)'"
-ObjectBase.layers -> layers: boolean "'Layers the object base is on'"
-ObjectBase.object -> object: pointer, "'(read-only) Object this base links to'"
-ObjectBase.select -> select: boolean "'Object base selection state'"
-ObjectConstraints.active -> active: pointer "'Active Object constraint'"
-Operator.bl_description -> bl_description: string "'NO DESCRIPTION'"
-Operator.bl_idname -> bl_idname: string "'NO DESCRIPTION'"
-Operator.bl_label -> bl_label: string "'NO DESCRIPTION'"
-Operator.bl_options -> bl_options: enum "'Options for this operator type'"
-Operator.has_reports -> has_reports: boolean, "'(read-only) Operator has a set of reports (warnings and errors) from last execution'"
-Operator.layout -> layout: pointer, "'(read-only)'"
-Operator.name -> name: string, "'(read-only)'"
-Operator.properties -> properties: pointer, "'(read-only)'"
-OperatorTypeMacro.properties -> properties: pointer, "'(read-only)'"
-PackedFile.size -> size: int, "'(read-only) Size of packed file in bytes'"
-Paint.brush -> brush: pointer "'Active paint brush'"
-Paint.fast_navigate -> show_low_resolution: boolean "'For multires, show low resolution while navigating the view'"
-Paint.show_brush -> show_brush: boolean "'NO DESCRIPTION'"
-Paint.show_brush_on_surface -> show_brush_on_surface: boolean "'NO DESCRIPTION'"
-Paint|ImagePaint.invert_stencil -> invert_stencil: boolean "'Invert the stencil layer'"
-Paint|ImagePaint.normal_angle -> normal_angle: int "'Paint most on faces pointing towards the view according to this angle'"
-Paint|ImagePaint.screen_grab_size -> screen_grab_size: int "'Size to capture the image for re-projecting'"
-Paint|ImagePaint.seam_bleed -> seam_bleed: int "'Extend paint beyond the faces UVs to reduce seams (in pixels, slower)'"
-Paint|ImagePaint.show_brush -> show_brush: boolean "'Enables brush shape while not drawing'"
-Paint|ImagePaint.show_brush_draw -> show_brush_draw: boolean "'Enables brush shape while drawing'"
-Paint|ImagePaint.use_backface_cull -> use_backface_culling: boolean "'Ignore faces pointing away from the view (faster)'"
-Paint|ImagePaint.use_clone_layer -> use_clone_layer: boolean "'Use another UV layer as clone source, otherwise use 3D the cursor as the source'"
-Paint|ImagePaint.use_normal_falloff -> use_normal_falloff: boolean "'Paint most on faces pointing towards the view'"
-Paint|ImagePaint.use_occlude -> use_occlude: boolean "'Only paint onto the faces directly under the brush (slower)'"
-Paint|ImagePaint.use_projection -> use_projection: boolean "'Use projection painting for improved consistency in the brush strokes'"
-Paint|ImagePaint.use_stencil_layer -> use_stencil_layer: boolean "'Set the mask layer from the UV layer buttons'"
-Paint|Sculpt.lock_x -> lock_x: boolean "'Disallow changes to the X axis of vertices'"
-Paint|Sculpt.lock_y -> lock_y: boolean "'Disallow changes to the Y axis of vertices'"
-Paint|Sculpt.lock_z -> lock_z: boolean "'Disallow changes to the Z axis of vertices'"
-Paint|Sculpt.radial_symm -> radial_symm: int "'Number of times to copy strokes across the surface'"
-Paint|Sculpt.symmetry_x -> use_symmetry_x: boolean "'Mirror brush across the X axis'"
-Paint|Sculpt.symmetry_y -> use_symmetry_y: boolean "'Mirror brush across the Y axis'"
-Paint|Sculpt.symmetry_z -> use_symmetry_z: boolean "'Mirror brush across the Z axis'"
-Paint|Sculpt.use_openmp -> use_openmp: boolean "'Take advantage of multiple CPU cores to improve sculpting performance'"
-Paint|Sculpt.use_symmetry_feather -> use_symmetry_feather: boolean "'Reduce the strength of the brush where it overlaps symmetrical daubs'"
-Paint|VertexPaint.all_faces -> use_all_faces: boolean "'Paint on all faces inside brush'"
-Paint|VertexPaint.normals -> use_normal: boolean "'Applies the vertex normal before painting'"
-Paint|VertexPaint.spray -> use_spray: boolean "'Keep applying paint effect while holding mouse'"
-Panel.bl_context -> bl_context: string "'NO DESCRIPTION'"
-Panel.bl_default_closed -> bl_use_closed: boolean "'NO DESCRIPTION'"
-Panel.bl_idname -> bl_idname: string "'NO DESCRIPTION'"
-Panel.bl_label -> bl_label: string "'NO DESCRIPTION'"
-Panel.bl_region_type -> bl_region_type: enum "'NO DESCRIPTION'"
-Panel.bl_show_header -> bl_show_header: boolean "'NO DESCRIPTION'"
-Panel.bl_space_type -> bl_space_type: enum "'NO DESCRIPTION'"
-Panel.layout -> layout: pointer, "'(read-only)'"
-Panel.text -> text: string "'NO DESCRIPTION'"
-Particle.alive_state -> alive_state: enum "'NO DESCRIPTION'"
-Particle.angular_velocity -> angular_velocity: float "'NO DESCRIPTION'"
-Particle.birthtime -> birthtime: float "'NO DESCRIPTION'"
-Particle.die_time -> die_time: float "'NO DESCRIPTION'"
-Particle.hair -> hair: collection, "'(read-only)'"
-Particle.is_existing -> is_existing: boolean, "'(read-only)'"
-Particle.is_visible -> is_visible: boolean, "'(read-only)'"
-Particle.keys -> keys: collection, "'(read-only)'"
-Particle.lifetime -> lifetime: float "'NO DESCRIPTION'"
-Particle.location -> location: float "'NO DESCRIPTION'"
-Particle.prev_angular_velocity -> prev_angular_velocity: float "'NO DESCRIPTION'"
-Particle.prev_location -> prev_location: float "'NO DESCRIPTION'"
-Particle.prev_rotation -> prev_rotation: float "'NO DESCRIPTION'"
-Particle.prev_velocity -> prev_velocity: float "'NO DESCRIPTION'"
-Particle.rotation -> rotation: float "'NO DESCRIPTION'"
-Particle.size -> size: float "'NO DESCRIPTION'"
-Particle.velocity -> velocity: float "'NO DESCRIPTION'"
-ParticleBrush.count -> count: int "'Particle count'"
-ParticleBrush.curve -> curve: pointer, "'(read-only)'"
-ParticleBrush.length_mode -> length_mode: enum "'NO DESCRIPTION'"
-ParticleBrush.puff_mode -> puff_mode: enum "'NO DESCRIPTION'"
-ParticleBrush.size -> size: int "'Brush size'"
-ParticleBrush.steps -> steps: int "'Brush steps'"
-ParticleBrush.strength -> strength: float "'Brush strength'"
-ParticleBrush.use_puff_volume -> use_puff_volume: boolean "'Apply puff to unselected end-points, (helps maintain hair volume when puffing root)'"
-ParticleDupliWeight.count -> count: int "'The number of times this object is repeated with respect to other objects'"
-ParticleDupliWeight.name -> name: string, "'(read-only) Particle dupliobject name'"
-ParticleEdit.add_interpolate -> use_add_interpolate: boolean "'Interpolate new particles from the existing ones'"
-ParticleEdit.add_keys -> add_keys: int "'How many keys to make new particles with'"
-ParticleEdit.auto_velocity -> use_auto_velocity: boolean "'Calculate point velocities automatically'"
-ParticleEdit.brush -> brush: pointer, "'(read-only)'"
-ParticleEdit.draw_particles -> show_particles: boolean "'Draw actual particles'"
-ParticleEdit.draw_step -> draw_step: int "'How many steps to draw the path with'"
-ParticleEdit.editable -> is_editable: boolean, "'(read-only) A valid edit mode exists'"
-ParticleEdit.emitter_deflect -> use_emitter_deflect: boolean "'Keep paths from intersecting the emitter'"
-ParticleEdit.emitter_distance -> emitter_distance: float "'Distance to keep particles away from the emitter'"
-ParticleEdit.fade_frames -> fade_frames: int "'How many frames to fade'"
-ParticleEdit.fade_time -> use_fade_time: boolean "'Fade paths and keys further away from current frame'"
-ParticleEdit.hair -> is_hair: boolean, "'(read-only) Editing hair'"
-ParticleEdit.keep_lengths -> use_preserve_lengths: boolean "'Keep path lengths constant'"
-ParticleEdit.keep_root -> use_preserve_root: boolean "'Keep root keys unmodified'"
-ParticleEdit.object -> object: pointer, "'(read-only) The edited object'"
-ParticleEdit.selection_mode -> selection_mode: enum "'Particle select and display mode'"
-ParticleEdit.tool -> tool: enum "'NO DESCRIPTION'"
-ParticleEdit.type -> type: enum "'NO DESCRIPTION'"
-ParticleHairKey.location -> location: float "'Location of the hair key in object space'"
-ParticleHairKey.location_hairspace -> location_hairspace: float "'Location of the hair key in its internal coordinate system, relative to the emitting face'"
-ParticleHairKey.time -> time: float "'Relative time of key over hair length'"
-ParticleHairKey.weight -> weight: float "'Weight for cloth simulation'"
-ParticleKey.angular_velocity -> angular_velocity: float "'Key angular velocity'"
-ParticleKey.location -> location: float "'Key location'"
-ParticleKey.rotation -> rotation: float "'Key rotation quaterion'"
-ParticleKey.time -> time: float "'Time of key over the simulation'"
-ParticleKey.velocity -> velocity: float "'Key velocity'"
-ParticleSystem.active_particle_target -> active_particle_target: pointer, "'(read-only)'"
-ParticleSystem.active_particle_target_index -> active_particle_target_index: int "'NO DESCRIPTION'"
-ParticleSystem.billboard_normal_uv -> billboard_normal_uv: string "'UV Layer to control billboard normals'"
-ParticleSystem.billboard_split_uv -> billboard_split_uv: string "'UV Layer to control billboard splitting'"
-ParticleSystem.billboard_time_index_uv -> billboard_time_index_uv: string "'UV Layer to control billboard time index (X-Y)'"
-ParticleSystem.child_particles -> child_particles: collection, "'(read-only) Child particles generated by the particle system'"
-ParticleSystem.cloth -> cloth: pointer, "'(read-only) Cloth dynamics for hair'"
-ParticleSystem.editable -> is_editable: boolean, "'(read-only) Particle system can be edited in particle mode'"
-ParticleSystem.edited -> is_edited: boolean, "'(read-only) Particle system has been edited in particle mode'"
-ParticleSystem.global_hair -> is_global_hair: boolean, "'(read-only) Hair keys are in global coordinate space'"
-ParticleSystem.hair_dynamics -> use_hair_dynamics: boolean "'Enable hair dynamics using cloth simulation'"
-ParticleSystem.keyed_timing -> use_keyed_timing: boolean "'Use key times'"
-ParticleSystem.multiple_caches -> has_multiple_caches: boolean, "'(read-only) Particle system has multiple point caches'"
-ParticleSystem.name -> name: string "'Particle system name'"
-ParticleSystem.parent -> parent: pointer '"Use this object\'s coordinate system instead of global coordinate system"'
-ParticleSystem.particles -> particles: collection, "'(read-only) Particles generated by the particle system'"
-ParticleSystem.point_cache -> point_cache: pointer, "'(read-only)'"
-ParticleSystem.reactor_target_object -> reactor_target_object: pointer "'For reactor systems, the object that has the target particle system (empty if same object)'"
-ParticleSystem.reactor_target_particle_system -> reactor_target_particle_system: int "'For reactor systems, index of particle system on the target object'"
-ParticleSystem.seed -> seed: int "'Offset in the random number table, to get a different randomized result'"
-ParticleSystem.settings -> settings: pointer "'Particle system settings'"
-ParticleSystem.targets -> targets: collection, "'(read-only) Target particle systems'"
-ParticleSystem.vertex_group_clump -> vertex_group_clump: string "'Vertex group to control clump'"
-ParticleSystem.vertex_group_clump_negate -> invert_vertex_group_clump: boolean "'Negate the effect of the clump vertex group'"
-ParticleSystem.vertex_group_density -> vertex_group_density: string "'Vertex group to control density'"
-ParticleSystem.vertex_group_density_negate -> invert_vertex_group_density: boolean "'Negate the effect of the density vertex group'"
-ParticleSystem.vertex_group_field -> vertex_group_field: string "'Vertex group to control field'"
-ParticleSystem.vertex_group_field_negate -> invert_vertex_group_field: boolean "'Negate the effect of the field vertex group'"
-ParticleSystem.vertex_group_kink -> vertex_group_kink: string "'Vertex group to control kink'"
-ParticleSystem.vertex_group_kink_negate -> invert_vertex_group_kink: boolean "'Negate the effect of the kink vertex group'"
-ParticleSystem.vertex_group_length -> vertex_group_length: string "'Vertex group to control length'"
-ParticleSystem.vertex_group_length_negate -> invert_vertex_group_length: boolean "'Negate the effect of the length vertex group'"
-ParticleSystem.vertex_group_rotation -> vertex_group_rotation: string "'Vertex group to control rotation'"
-ParticleSystem.vertex_group_rotation_negate -> invert_vertex_group_rotation: boolean "'Negate the effect of the rotation vertex group'"
-ParticleSystem.vertex_group_roughness1 -> vertex_group_rough1: string "'Vertex group to control roughness 1'"
-ParticleSystem.vertex_group_roughness1_negate -> invert_vertex_group_roughness1: boolean "'Negate the effect of the roughness 1 vertex group'"
-ParticleSystem.vertex_group_roughness2 -> vertex_group_rough2: string "'Vertex group to control roughness 2'"
-ParticleSystem.vertex_group_roughness2_negate -> invert_vertex_group_roughness2: boolean "'Negate the effect of the roughness 2 vertex group'"
-ParticleSystem.vertex_group_roughness_end -> vertex_group_rough_end: string "'Vertex group to control roughness end'"
-ParticleSystem.vertex_group_roughness_end_negate -> invert_vertex_group_roughness_end: boolean "'Negate the effect of the roughness end vertex group'"
-ParticleSystem.vertex_group_size -> vertex_group_size: string "'Vertex group to control size'"
-ParticleSystem.vertex_group_size_negate -> invert_vertex_group_size: boolean "'Negate the effect of the size vertex group'"
-ParticleSystem.vertex_group_tangent -> vertex_group_tangent: string "'Vertex group to control tangent'"
-ParticleSystem.vertex_group_tangent_negate -> invert_vertex_group_tangent: boolean "'Negate the effect of the tangent vertex group'"
-ParticleSystem.vertex_group_velocity -> vertex_group_velocity: string "'Vertex group to control velocity'"
-ParticleSystem.vertex_group_velocity_negate -> invert_vertex_group_velocity: boolean "'Negate the effect of the velocity vertex group'"
-ParticleTarget.duration -> duration: float "'NO DESCRIPTION'"
-ParticleTarget.mode -> mode: enum "'NO DESCRIPTION'"
-ParticleTarget.name -> name: string, "'(read-only) Particle target name'"
-ParticleTarget.object -> object: pointer "'The object that has the target particle system (empty if same object)'"
-ParticleTarget.system -> system: int "'The index of particle system on the target object'"
-ParticleTarget.time -> time: float "'NO DESCRIPTION'"
-ParticleTarget.valid -> is_valid: boolean "'Keyed particles target is valid'"
-PointCache.active_point_cache_index -> active_point_cache_index: int "'NO DESCRIPTION'"
-PointCache.baked -> is_baked: boolean, "'(read-only)'"
-PointCache.baking -> is_baking: boolean, "'(read-only)'"
-PointCache.disk_cache -> use_disk_cache: boolean "'Save cache files to disk (.blend file must be saved first)'"
-PointCache.external -> use_external: boolean "'Read cache from an external location'"
-PointCache.filepath -> filepath: string "'Cache file path'"
-PointCache.frame_end -> frame_end: int "'Frame on which the simulation stops'"
-PointCache.frame_start -> frame_start: int "'Frame on which the simulation starts'"
-PointCache.frames_skipped -> frames_skipped: boolean, "'(read-only)'"
-PointCache.index -> index: int "'Index number of cache files'"
-PointCache.info -> info: string, "'(read-only) Info on current cache status'"
-PointCache.name -> name: string "'Cache name'"
-PointCache.outdated -> is_outdated: boolean, "'(read-only)'"
-PointCache.point_cache_list -> point_cache_list: collection, "'(read-only) Point cache list'"
-PointCache.quick_cache -> use_quick_cache: boolean "'Update simulation with cache steps'"
-PointCache.step -> step: int "'Number of frames between cached frames'"
-PointCache.use_library_path -> use_library_path: boolean "'Use this files path when library linked into another file.'"
-PointDensity.color_ramp -> color_ramp: pointer, "'(read-only)'"
-PointDensity.color_source -> color_source: enum "'Data to derive color results from'"
-PointDensity.falloff -> falloff: enum "'Method of attenuating density by distance from the point'"
-PointDensity.falloff_softness -> falloff_soft: float '"Softness of the \'soft\' falloff option"'
-PointDensity.noise_basis -> noise_basis: enum "'Noise formula used for turbulence'"
-PointDensity.object -> object: pointer "'Object to take point data from'"
-PointDensity.particle_cache -> particle_cache: enum "'Co-ordinate system to cache particles in'"
-PointDensity.particle_system -> particle_system: pointer "'Particle System to render as points'"
-PointDensity.point_source -> point_source: enum "'Point data to use as renderable point density'"
-PointDensity.radius -> radius: float "'Radius from the shaded sample to look for points within'"
-PointDensity.speed_scale -> speed_scale: float "'Multiplier to bring particle speed within an acceptable range'"
-PointDensity.turbulence -> use_turbulence: boolean "'Add directed noise to the density at render-time'"
-PointDensity.turbulence_depth -> turbulence_depth: int "'Level of detail in the added turbulent noise'"
-PointDensity.turbulence_influence -> turbulence_influence: enum "'Method for driving added turbulent noise'"
-PointDensity.turbulence_size -> turbulence_size: float "'Scale of the added turbulent noise'"
-PointDensity.turbulence_strength -> turbulence_strength: float "'NO DESCRIPTION'"
-PointDensity.vertices_cache -> vertices_cache: enum "'Co-ordinate system to cache vertices in'"
-Pose.active_bone_group -> active_bone_group: pointer "'Active bone group for this pose'"
-Pose.active_bone_group_index -> active_bone_group_index: int "'Active index in bone groups array'"
-Pose.animation_visualisation -> animation_visualisation: pointer, "'(read-only) Animation data for this datablock'"
-Pose.bone_groups -> bone_groups: collection, "'(read-only) Groups of the bones'"
-Pose.bones -> bones: collection, "'(read-only) Individual pose bones for the armature'"
-Pose.ik_param -> ik_param: pointer, "'(read-only) Parameters for IK solver'"
-Pose.ik_solver -> ik_solver: enum "'Selection of IK solver for IK chain, current choice is 0 for Legacy, 1 for iTaSC'"
-PoseBone.bone -> bone: pointer, "'(read-only) Bone associated with this PoseBone'"
-PoseBone.bone_group -> bone_group: pointer "'Bone Group this pose channel belongs to'"
-PoseBone.bone_group_index -> bone_group_index: int "'Bone Group this pose channel belongs to (0=no group)'"
-PoseBone.child -> child: pointer, "'(read-only) Child of this pose bone'"
-PoseBone.constraints -> constraints: collection, "'(read-only) Constraints that act on this PoseChannel'"
-PoseBone.custom_shape -> custom_shape: pointer "'Object that defines custom draw type for this bone'"
-PoseBone.custom_shape_transform -> custom_shape_transform: pointer "'Bone that defines the display transform of this custom shape'"
-PoseBone.has_ik -> is_in_ik_chain: boolean, "'(read-only) Is part of an IK chain'"
-PoseBone.head -> head: float, '"(read-only) Location of head of the channel\'s bone"'
-NEGATE * PoseBone.ik_dof_x -> lock_ik_x: boolean "'Allow movement around the X axis'"
-NEGATE * PoseBone.ik_dof_y -> lock_ik_y: boolean "'Allow movement around the Y axis'"
-NEGATE * PoseBone.ik_dof_z -> lock_ik_z: boolean "'Allow movement around the Z axis'"
-PoseBone.ik_limit_x -> lock_ik_x: boolean "'Limit movement around the X axis'"
-PoseBone.ik_limit_y -> lock_ik_y: boolean "'Limit movement around the Y axis'"
-PoseBone.ik_limit_z -> lock_ik_z: boolean "'Limit movement around the Z axis'"
-PoseBone.ik_lin_control -> use_ik_lin_control: boolean "'Apply channel size as IK constraint if stretching is enabled'"
-PoseBone.ik_lin_weight -> ik_lin_weight: float "'Weight of scale constraint for IK'"
-PoseBone.ik_max_x -> ik_max_x: float "'Maximum angles for IK Limit'"
-PoseBone.ik_max_y -> ik_max_y: float "'Maximum angles for IK Limit'"
-PoseBone.ik_max_z -> ik_max_z: float "'Maximum angles for IK Limit'"
-PoseBone.ik_min_x -> ik_min_x: float "'Minimum angles for IK Limit'"
-PoseBone.ik_min_y -> ik_min_y: float "'Minimum angles for IK Limit'"
-PoseBone.ik_min_z -> ik_min_z: float "'Minimum angles for IK Limit'"
-PoseBone.ik_rot_control -> use_ik_rot_control: boolean "'Apply channel rotation as IK constraint'"
-PoseBone.ik_rot_weight -> ik_rot_weight: float "'Weight of rotation constraint for IK'"
-PoseBone.ik_stiffness_x -> ik_stiffness_x: float "'IK stiffness around the X axis'"
-PoseBone.ik_stiffness_y -> ik_stiffness_y: float "'IK stiffness around the Y axis'"
-PoseBone.ik_stiffness_z -> ik_stiffness_z: float "'IK stiffness around the Z axis'"
-PoseBone.ik_stretch -> ik_stretch: float "'Allow scaling of the bone for IK'"
-PoseBone.location -> location: float "'NO DESCRIPTION'"
-PoseBone.lock_location -> lock_location: boolean "'Lock editing of location in the interface'"
-PoseBone.lock_rotation -> lock_rotation: boolean "'Lock editing of rotation in the interface'"
-PoseBone.lock_rotation_w -> lock_rotation_w: boolean '"Lock editing of \'angle\' component of four-component rotations in the interface"'
-PoseBone.lock_rotations_4d -> lock_rotations_4d: boolean "'Lock editing of four component rotations by components (instead of as Eulers)'"
-PoseBone.lock_scale -> lock_scale: boolean "'Lock editing of scale in the interface'"
-PoseBone.matrix -> matrix: float, "'(read-only) Final 4x4 matrix for this channel'"
-PoseBone.matrix_channel -> matrix_channel: float, "'(read-only) 4x4 matrix, before constraints'"
-PoseBone.matrix_local -> matrix_local: float "'Matrix representing the parent relative location, scale and rotation. Provides an alternative access to these properties.'"
-PoseBone.motion_path -> motion_path: pointer, "'(read-only) Motion Path for this element'"
-PoseBone.name -> name: string "'NO DESCRIPTION'"
-PoseBone.parent -> parent: pointer, "'(read-only) Parent of this pose bone'"
-PoseBone.rotation_axis_angle -> rotation_axis_angle: float "'Angle of Rotation for Axis-Angle rotation representation'"
-PoseBone.rotation_euler -> rotation_euler: float "'Rotation in Eulers'"
-PoseBone.rotation_mode -> rotation_mode: enum "'NO DESCRIPTION'"
-PoseBone.rotation_quaternion -> rotation_quaternion: float "'Rotation in Quaternions'"
-PoseBone.scale -> scale: float "'NO DESCRIPTION'"
-PoseBone.select -> select: boolean "'NO DESCRIPTION'"
-PoseBone.tail -> tail: float, '"(read-only) Location of tail of the channel\'s bone"'
-PoseBoneConstraints.active -> active: pointer "'Active PoseChannel constraint'"
-Property.description -> description: string, "'(read-only) Description of the property for tooltips'"
-Property.identifier -> identifier: string, "'(read-only) Unique name used in the code and scripting'"
-Property.is_never_none -> is_never_none: boolean, '"(read-only) True when this value can\'t be set to None"'
-Property.is_readonly -> is_readonly: boolean, "'(read-only) Property is editable through RNA'"
-Property.is_required -> is_required: boolean, "'(read-only) False when this property is an optional argument in an RNA function'"
-Property.name -> name: string, "'(read-only) Human readable name'"
-Property.registered -> is_registered: boolean, "'(read-only) Property is registered as part of type registration'"
-Property.registered_optional -> is_registered_optional: boolean, "'(read-only) Property is optionally registered as part of type registration'"
-Property.srna -> srna: pointer, "'(read-only) Struct definition used for properties assigned to this item'"
-Property.subtype -> subtype: enum, "'(read-only) Semantic interpretation of the property'"
-Property.type -> type: enum, "'(read-only) Data type of the property'"
-Property.unit -> unit: enum, "'(read-only) Type of units for this property'"
-Property.use_output -> is_output: boolean, "'(read-only) True when this property is an output value from an RNA function'"
-+ * Property|BooleanProperty.array_length -> array_length: int, "'(read-only) Maximum length of the array, 0 means unlimited'"
-+ * Property|BooleanProperty.default -> default: boolean, "'(read-only) Default value for this number'"
-+ * Property|BooleanProperty.default_array -> default_array: boolean, "'(read-only) Default value for this array'"
-+ * Property|CollectionProperty.fixed_type -> fixed_type: pointer, "'(read-only) Fixed pointer type, empty if variable type'"
-Property|EnumProperty.default -> default: enum, "'(read-only) Default value for this enum'"
-Property|EnumProperty.items -> items: collection, "'(read-only) Possible values for the property'"
-Property|FloatProperty.array_length -> array_length: int, "'(read-only) Maximum length of the array, 0 means unlimited'"
-Property|FloatProperty.default -> default: float, "'(read-only) Default value for this number'"
-Property|FloatProperty.default_array -> default_array: float, "'(read-only) Default value for this array'"
-Property|FloatProperty.hard_max -> hard_max: float, "'(read-only) Maximum value used by buttons'"
-Property|FloatProperty.hard_min -> hard_min: float, "'(read-only) Minimum value used by buttons'"
-Property|FloatProperty.precision -> precision: int, "'(read-only) Number of digits after the dot used by buttons'"
-Property|FloatProperty.soft_max -> soft_max: float, "'(read-only) Maximum value used by buttons'"
-Property|FloatProperty.soft_min -> soft_min: float, "'(read-only) Minimum value used by buttons'"
-Property|FloatProperty.step -> step: float, "'(read-only) Step size used by number buttons, for floats 1/100th of the step size'"
-Property|IntProperty.array_length -> array_length: int, "'(read-only) Maximum length of the array, 0 means unlimited'"
-Property|IntProperty.default -> default: int, "'(read-only) Default value for this number'"
-Property|IntProperty.default_array -> default_array: int, "'(read-only) Default value for this array'"
-Property|IntProperty.hard_max -> hard_max: int, "'(read-only) Maximum value used by buttons'"
-Property|IntProperty.hard_min -> hard_min: int, "'(read-only) Minimum value used by buttons'"
-Property|IntProperty.soft_max -> soft_max: int, "'(read-only) Maximum value used by buttons'"
-Property|IntProperty.soft_min -> soft_min: int, "'(read-only) Minimum value used by buttons'"
-Property|IntProperty.step -> step: int, "'(read-only) Step size used by number buttons, for floats 1/100th of the step size'"
-Property|PointerProperty.fixed_type -> fixed_type: pointer, "'(read-only) Fixed pointer type, empty if variable type'"
-Property|StringProperty.default -> default: string, "'(read-only) string default value'"
-Property|StringProperty.max_length -> length_max: int, "'(read-only) Maximum length of the string, 0 means unlimited'"
-RGBANodeSocket.default_value -> default_value: float "'Default value of the socket when no link is attached'"
-RGBANodeSocket.name -> name: string, "'(read-only) Socket name'"
-Region.height -> height: int, "'(read-only) Region height'"
-Region.id -> id: int, "'(read-only) Unique ID for this region'"
-Region.type -> type: enum, "'(read-only) Type of this region'"
-Region.width -> width: int, "'(read-only) Region width'"
-RegionView3D.box_clip -> use_box_clip: boolean '"Clip objects based on what\'s visible in other side views"'
-RegionView3D.box_preview -> show_synced_view: boolean "'Sync view position between side views'"
-RegionView3D.lock_rotation -> lock_rotation: boolean "'Lock view rotation in side views'"
-RegionView3D.perspective_matrix -> perspective_matrix: float, "'(read-only) Current perspective matrix of the 3D region'"
-RegionView3D.view_distance -> view_distance: float "'Distance to the view location'"
-RegionView3D.view_location -> view_location: float "'View pivot location'"
-RegionView3D.view_matrix -> view_matrix: float, "'(read-only) Current view matrix of the 3D region'"
-RegionView3D.view_perspective -> view_perspective: enum "'View Perspective'"
-RegionView3D.view_rotation -> view_rotation: float "'Rotation in quaternions (keep normalized)'"
-RenderEngine.bl_idname -> bl_idname: string "'NO DESCRIPTION'"
-RenderEngine.bl_label -> bl_label: string "'NO DESCRIPTION'"
-RenderEngine.bl_postprocess -> bl_use_postprocess: boolean "'NO DESCRIPTION'"
-RenderEngine.bl_preview -> bl_use_preview: boolean "'NO DESCRIPTION'"
-RenderLayer.all_z -> use_all_z: boolean, "'(read-only) Fill in Z values for solid faces in invisible layers, for masking'"
-RenderLayer.edge -> use_edge_enhance: boolean, "'(read-only) Render Edge-enhance in this Layer (only works for Solid faces)'"
-RenderLayer.enabled -> use: boolean, "'(read-only) Disable or enable the render layer'"
-RenderLayer.halo -> use_halo: boolean, "'(read-only) Render Halos in this Layer (on top of Solid)'"
-RenderLayer.light_override -> light_override: pointer, "'(read-only) Group to override all other lights in this render layer'"
-RenderLayer.material_override -> material_override: pointer, "'(read-only) Material to override all other materials in this render layer'"
-RenderLayer.name -> name: string, "'(read-only) Render layer name'"
-RenderLayer.pass_ao -> use_pass_ambient_occlusion: boolean, "'(read-only) Deliver AO pass'"
-RenderLayer.pass_ao_exclude -> exclude_ambient_occlusion: boolean, "'(read-only) Exclude AO pass from combined'"
-RenderLayer.pass_color -> use_pass_color: boolean, "'(read-only) Deliver shade-less color pass'"
-RenderLayer.pass_combined -> use_pass_combined: boolean, "'(read-only) Deliver full combined RGBA buffer'"
-RenderLayer.pass_diffuse -> use_pass_diffuse: boolean, "'(read-only) Deliver diffuse pass'"
-RenderLayer.pass_emit -> use_pass_emit: boolean, "'(read-only) Deliver emission pass'"
-RenderLayer.pass_emit_exclude -> exclude_emit: boolean, "'(read-only) Exclude emission pass from combined'"
-RenderLayer.pass_environment -> use_pass_environment: boolean, "'(read-only) Deliver environment lighting pass'"
-RenderLayer.pass_environment_exclude -> exclude_environment: boolean, "'(read-only) Exclude environment pass from combined'"
-RenderLayer.pass_indirect -> use_pass_indirect: boolean, "'(read-only) Deliver indirect lighting pass'"
-RenderLayer.pass_indirect_exclude -> exclude_indirect: boolean, "'(read-only) Exclude indirect pass from combined'"
-RenderLayer.pass_mist -> use_pass_mist: boolean, "'(read-only) Deliver mist factor pass (0.0-1.0)'"
-RenderLayer.pass_normal -> use_pass_normal: boolean, "'(read-only) Deliver normal pass'"
-RenderLayer.pass_object_index -> use_pass_object_index: boolean, "'(read-only) Deliver object index pass'"
-RenderLayer.pass_reflection -> use_pass_reflection: boolean, "'(read-only) Deliver raytraced reflection pass'"
-RenderLayer.pass_reflection_exclude -> exclude_reflection: boolean, "'(read-only) Exclude raytraced reflection pass from combined'"
-RenderLayer.pass_refraction -> use_pass_refraction: boolean, "'(read-only) Deliver raytraced refraction pass'"
-RenderLayer.pass_refraction_exclude -> exclude_refraction: boolean, "'(read-only) Exclude raytraced refraction pass from combined'"
-RenderLayer.pass_shadow -> use_pass_shadow: boolean, "'(read-only) Deliver shadow pass'"
-RenderLayer.pass_shadow_exclude -> exclude_shadow: boolean, "'(read-only) Exclude shadow pass from combined'"
-RenderLayer.pass_specular -> use_pass_specular: boolean, "'(read-only) Deliver specular pass'"
-RenderLayer.pass_specular_exclude -> exclude_specular: boolean, "'(read-only) Exclude specular pass from combined'"
-RenderLayer.pass_uv -> use_pass_uv: boolean, "'(read-only) Deliver texture UV pass'"
-RenderLayer.pass_vector -> use_pass_vector: boolean, "'(read-only) Deliver speed vector pass'"
-RenderLayer.pass_z -> use_pass_z: boolean, "'(read-only) Deliver Z values pass'"
-RenderLayer.passes -> passes: collection, "'(read-only)'"
-RenderLayer.rect -> rect: float "'NO DESCRIPTION'"
-RenderLayer.sky -> use_sky: boolean, "'(read-only) Render Sky in this Layer'"
-RenderLayer.solid -> use_solid: boolean, "'(read-only) Render Solid faces in this Layer'"
-RenderLayer.strand -> use_strand: boolean, "'(read-only) Render Strands in this Layer'"
-RenderLayer.visible_layers -> layers: boolean, "'(read-only) Scene layers included in this render layer'"
-RenderLayer.zmask -> use_zmask: boolean, '"(read-only) Only render what\'s in front of the solid z values"'
-RenderLayer.zmask_layers -> layers_zmask: boolean, "'(read-only) Zmask scene layers'"
-RenderLayer.zmask_negate -> invert_zmask: boolean, "'(read-only) For Zmask, only render what is behind solid z values instead of in front'"
-RenderLayer.ztransp -> use_ztransp: boolean, "'(read-only) Render Z-Transparent faces in this Layer (On top of Solid and Halos)'"
-RenderPass.channel_id -> channel_id: string, "'(read-only)'"
-RenderPass.channels -> channels: int, "'(read-only)'"
-RenderPass.name -> name: string, "'(read-only)'"
-RenderPass.rect -> rect: float "'NO DESCRIPTION'"
-RenderPass.type -> type: enum, "'(read-only)'"
-RenderResult.layers -> layers: collection, "'(read-only)'"
-RenderResult.resolution_x -> resolution_x: int, "'(read-only)'"
-RenderResult.resolution_y -> resolution_y: int, "'(read-only)'"
-RenderSettings.active_layer_index -> active_layer_index: int "'Active index in render layer array'"
-RenderSettings.alpha_mode -> alpha_mode: enum "'Representation of alpha information in the RGBA pixels'"
-RenderSettings.antialiasing_samples -> antialiasing_samples: enum "'Amount of anti-aliasing samples per pixel'"
-RenderSettings.backbuf -> use_backbuf: boolean "'Render backbuffer image'"
-RenderSettings.bake_aa_mode -> bake_aa_mode: enum "'NO DESCRIPTION'"
-RenderSettings.bake_active -> use_bake_active_to_selected: boolean "'Bake shading on the surface of selected objects to the active object'"
-RenderSettings.bake_bias -> bake_bias: float "'Bias towards faces further away from the object (in blender units)'"
-RenderSettings.bake_clear -> use_bake_clear: boolean "'Clear Images before baking'"
-RenderSettings.bake_distance -> bake_distance: float "'Maximum distance from active object to other object (in blender units'"
-RenderSettings.bake_enable_aa -> use_bake_antialiasing: boolean "'Enables Anti-aliasing'"
-RenderSettings.bake_margin -> bake_margin: int "'Amount of pixels to extend the baked result with, as post process filter'"
-RenderSettings.bake_normal_space -> bake_normal_space: enum "'Choose normal space for baking'"
-RenderSettings.bake_normalized -> use_bake_normalized: boolean "'With displacement normalize to the distance, with ambient occlusion normalize without using material settings'"
-RenderSettings.bake_quad_split -> bake_quad_split: enum "'Choose the method used to split a quad into 2 triangles for baking'"
-RenderSettings.bake_type -> bake_type: enum "'Choose shading information to bake into the image'"
-RenderSettings.border_max_x -> border_max_x: float "'Sets maximum X value for the render border'"
-RenderSettings.border_max_y -> border_max_y: float "'Sets maximum Y value for the render border'"
-RenderSettings.border_min_x -> border_min_x: float "'Sets minimum X value to for the render border'"
-RenderSettings.border_min_y -> border_min_y: float "'Sets minimum Y value for the render border'"
-RenderSettings.cineon_black -> cineon_black: int "'Log conversion reference blackpoint'"
-RenderSettings.cineon_gamma -> cineon_gamma: float "'Log conversion gamma'"
-RenderSettings.cineon_log -> use_cineon_log: boolean "'Convert to logarithmic color space'"
-RenderSettings.cineon_white -> cineon_white: int "'Log conversion reference whitepoint'"
-RenderSettings.color_management -> use_color_management: boolean "'Use color profiles and gamma corrected imaging pipeline'"
-RenderSettings.color_mode -> color_mode: enum "'Choose BW for saving greyscale images, RGB for saving red, green and blue channels, AND RGBA for saving red, green, blue + alpha channels'"
-RenderSettings.crop_to_border -> use_crop_to_border: boolean "'Crop the rendered frame to the defined border size'"
-RenderSettings.display_mode -> display_mode: enum "'Select where rendered images will be displayed'"
-RenderSettings.dither_intensity -> dither_intensity: float "'Amount of dithering noise added to the rendered image to break up banding'"
-RenderSettings.edge -> use_edge_enhance: boolean "'use_Create a toon outline around the edges of geometry'"
-RenderSettings.edge_color -> edge_color: float "'NO DESCRIPTION'"
-RenderSettings.edge_threshold -> edge_threshold: int "'Threshold for drawing outlines on geometry edges'"
-RenderSettings.engine -> engine: enum "'Engine to use for rendering'"
-RenderSettings.field_order -> field_order: enum "'Order of video fields. Select which lines get rendered first, to create smooth motion for TV output'"
-RenderSettings.fields -> use_fields: boolean "'Render image to two fields per frame, for interlaced TV output'"
-RenderSettings.fields_still -> use_fields_still: boolean "'Disable the time difference between fields'"
-RenderSettings.file_extension -> file_extension: string, "'(read-only) The file extension used for saving renders'"
-RenderSettings.file_format -> file_format: enum "'File format to save the rendered images as'"
-RenderSettings.file_quality -> file_quality: int "'Quality of JPEG images, AVI Jpeg and SGI movies'"
-RenderSettings.filter_size -> filter_size: float "'Pixel width over which the reconstruction filter combines samples'"
-RenderSettings.fps -> fps: int "'Framerate, expressed in frames per second'"
-RenderSettings.fps_base -> fps_base: float "'Framerate base'"
-RenderSettings.free_image_textures -> use_free_image_textures: boolean "'Free all image texture from memory after render, to save memory before compositing'"
-RenderSettings.free_unused_nodes -> use_free_unused_nodes: boolean "'Free Nodes that are not used while compositing, to save memory'"
-RenderSettings.full_sample -> use_full_sample: boolean "'Save for every anti-aliasing sample the entire RenderLayer results. This solves anti-aliasing issues with compositing'"
-RenderSettings.is_movie_format -> is_movie_format: boolean, "'(read-only) When true the format is a movie'"
-RenderSettings.layers -> layers: collection, "'(read-only)'"
-RenderSettings.motion_blur -> use_motion_blur: boolean "'Use multi-sampled 3D scene motion blur'"
-RenderSettings.motion_blur_samples -> motion_blur_samples: int "'Number of scene samples to take with motion blur'"
-RenderSettings.motion_blur_shutter -> motion_blur_shutter: float "'Time taken in frames between shutter open and close'"
-RenderSettings.multiple_engines -> has_multiple_engines: boolean, "'(read-only) More than one rendering engine is available'"
-RenderSettings.octree_resolution -> octree_resolution: enum "'Resolution of raytrace accelerator. Use higher resolutions for larger scenes'"
-RenderSettings.output_path -> output_path: string "'Directory/name to save animations, # characters defines the position and length of frame numbers'"
-RenderSettings.parts_x -> parts_x: int "'Number of horizontal tiles to use while rendering'"
-RenderSettings.parts_y -> parts_y: int "'Number of vertical tiles to use while rendering'"
-RenderSettings.pixel_aspect_x -> pixel_aspect_x: float "'Horizontal aspect ratio - for anamorphic or non-square pixel output'"
-RenderSettings.pixel_aspect_y -> pixel_aspect_y: float "'Vertical aspect ratio - for anamorphic or non-square pixel output'"
-RenderSettings.pixel_filter -> pixel_filter: enum "'Reconstruction filter used for combining anti-aliasing samples'"
-RenderSettings.raytrace_structure -> raytrace_structure: enum "'Type of raytrace accelerator structure'"
-RenderSettings.render_antialiasing -> use_antialiasing: boolean "'Render and combine multiple samples per pixel to prevent jagged edges'"
-RenderSettings.render_stamp -> use_stamp: boolean "'Render the stamp info text in the rendered image'"
-RenderSettings.resolution_percentage -> resolution_percentage: int "'Percentage scale for render resolution'"
-RenderSettings.resolution_x -> resolution_x: int "'Number of horizontal pixels in the rendered image'"
-RenderSettings.resolution_y -> resolution_y: int "'Number of vertical pixels in the rendered image'"
-RenderSettings.save_buffers -> use_save_buffers: boolean "'Save tiles for all RenderLayers and SceneNodes to files in the temp directory (saves memory, required for Full Sample)'"
-RenderSettings.sequencer_gl_preview -> sequencer_gl_preview: enum "'Method to draw in the sequencer view'"
-RenderSettings.sequencer_gl_render -> sequencer_gl_render: enum "'Method to draw in the sequencer view'"
-RenderSettings.simplify_ao_sss -> simplify_ao_sss: float "'Global approximate AA and SSS quality factor'"
-RenderSettings.simplify_child_particles -> simplify_child_particles: float "'Global child particles percentage'"
-RenderSettings.simplify_shadow_samples -> simplify_shadow_samples: int "'Global maximum shadow samples'"
-RenderSettings.simplify_subdivision -> simplify_subdivision: int "'Global maximum subdivision level'"
-RenderSettings.simplify_triangulate -> use_simplify_triangulate: boolean "'Disables non-planer quads being triangulated'"
-RenderSettings.single_layer -> use_single_layer: boolean "'Only render the active layer'"
-RenderSettings.stamp_background -> stamp_background: float "'Color to use behind stamp text'"
-RenderSettings.stamp_camera -> use_stamp_camera: boolean "'Include the name of the active camera in image metadata'"
-RenderSettings.stamp_date -> use_stamp_date: boolean "'Include the current date in image metadata'"
-RenderSettings.stamp_filename -> use_stamp_filename: boolean "'Include the filename of the .blend file in image metadata'"
-RenderSettings.stamp_font_size -> stamp_font_size: int "'Size of the font used when rendering stamp text'"
-RenderSettings.stamp_foreground -> stamp_foreground: float "'Color to use for stamp text'"
-RenderSettings.stamp_frame -> use_stamp_frame: boolean "'Include the frame number in image metadata'"
-RenderSettings.stamp_marker -> use_stamp_marker: boolean "'Include the name of the last marker in image metadata'"
-RenderSettings.stamp_note -> use_stamp_note: boolean "'Include a custom note in image metadata'"
-RenderSettings.stamp_note_text -> stamp_note_text: string "'Custom text to appear in the stamp note'"
-RenderSettings.stamp_render_time -> use_stamp_render_time: boolean "'Include the render time in the stamp image'"
-RenderSettings.stamp_scene -> use_stamp_scene: boolean "'Include the name of the active scene in image metadata'"
-RenderSettings.stamp_sequencer_strip -> use_stamp_sequencer_strip: boolean "'Include the name of the foreground sequence strip in image metadata'"
-RenderSettings.stamp_time -> use_stamp_time: boolean "'Include the render frame as HH:MM:SS.FF in image metadata'"
-RenderSettings.threads -> threads: int "'Number of CPU threads to use simultaneously while rendering (for multi-core/CPU systems)'"
-RenderSettings.threads_mode -> threads_mode: enum "'Determine the amount of render threads used'"
-RenderSettings.tiff_bit -> use_tiff_16bit: boolean "'Save TIFF with 16 bits per channel'"
-RenderSettings.use_border -> use_border: boolean "'Render a user-defined border region, within the frame size. Note, this disables save_buffers and full_sample'"
-RenderSettings.use_compositing -> use_compositing: boolean "'Process the render result through the compositing pipeline, if compositing nodes are enabled'"
-RenderSettings.use_envmaps -> use_envmaps: boolean "'Calculate environment maps while rendering'"
-RenderSettings.use_file_extension -> use_file_extension: boolean "'Add the file format extensions to the rendered file name (eg: filename + .jpg)'"
-RenderSettings.use_game_engine -> use_game_engine: boolean, "'(read-only) Current rendering engine is a game engine'"
-RenderSettings.use_instances -> use_instances: boolean "'Instance support leads to effective memory reduction when using duplicates'"
-RenderSettings.use_local_coords -> use_local_coords: boolean "'Vertex coordinates are stored localy on each primitive. Increases memory usage, but may have impact on speed'"
-RenderSettings.use_overwrite -> use_overwrite: boolean "'Overwrite existing files while rendering'"
-RenderSettings.use_placeholder -> use_placeholder: boolean '"Create empty placeholder files while rendering frames (similar to Unix \'touch\')"'
-RenderSettings.use_radiosity -> use_radiosity: boolean "'Calculate radiosity in a pre-process before rendering'"
-RenderSettings.use_raytracing -> use_raytrace: boolean "'Pre-calculate the raytrace accelerator and render raytracing effects'"
-RenderSettings.use_sequencer -> use_sequencer: boolean "'Process the render (and composited) result through the video sequence editor pipeline, if sequencer strips exist'"
-RenderSettings.use_sequencer_gl_preview -> use_sequencer_gl_preview: boolean "'NO DESCRIPTION'"
-RenderSettings.use_sequencer_gl_render -> use_sequencer_gl_render: boolean "'NO DESCRIPTION'"
-RenderSettings.use_shadows -> use_shadows: boolean "'Calculate shadows while rendering'"
-RenderSettings.use_simplify -> use_simplify: boolean "'Enable simplification of scene for quicker preview renders'"
-RenderSettings.use_sss -> use_sss: boolean "'Calculate sub-surface scattering in materials rendering'"
-RenderSettings.use_textures -> use_textures: boolean "'Use textures to affect material properties'"
-SPHFluidSettings.buoyancy -> buoyancy: float "'NO DESCRIPTION'"
-SPHFluidSettings.fluid_radius -> fluid_radius: float "'Fluid interaction Radius'"
-SPHFluidSettings.rest_density -> rest_density: float "'Density'"
-SPHFluidSettings.rest_length -> rest_length: float "'The Spring Rest Length (factor of interaction radius)'"
-SPHFluidSettings.spring_k -> spring_k: float "'Spring force constant'"
-SPHFluidSettings.stiffness_k -> stiffness_k: float "'Constant K - Stiffness'"
-SPHFluidSettings.stiffness_knear -> stiffness_knear: float "'Repulsion factor: stiffness_knear'"
-SPHFluidSettings.viscosity_beta -> viscosity_beta: float "'Square viscosity factor'"
-SPHFluidSettings.viscosity_omega -> viscosity_omega: float "'Linear viscosity'"
-SceneBases.active -> active: pointer "'Active object base in the scene'"
-SceneGameData.activity_culling -> use_activity_culling: boolean "'Activity culling is enabled'"
-SceneGameData.activity_culling_box_radius -> activity_culling_box_radius: float "'Radius of the activity bubble, in Manhattan length. Objects outside the box are activity-culled'"
-SceneGameData.auto_start -> use_auto_start: boolean "'Automatically start game at load time'"
-SceneGameData.depth -> depth: int "'Displays bit depth of full screen display'"
-SceneGameData.dome_angle -> dome_angle: int "'Field of View of the Dome - it only works in mode Fisheye and Truncated'"
-SceneGameData.dome_buffer_resolution -> dome_buffer_resolution: float "'Buffer Resolution - decrease it to increase speed'"
-SceneGameData.dome_mode -> dome_mode: enum "'Dome physical configurations'"
-SceneGameData.dome_tesselation -> dome_tesselation: int "'Tessellation level - check the generated mesh in wireframe mode'"
-SceneGameData.dome_text -> dome_text: pointer "'Custom Warp Mesh data file'"
-SceneGameData.dome_tilt -> dome_tilt: int "'Camera rotation in horizontal axis'"
-SceneGameData.eye_separation -> eye_separation: float "'Set the distance between the eyes - the camera focal length/30 should be fine'"
-SceneGameData.fps -> fps: int "'The nominal number of game frames per second. Physics fixed timestep = 1/fps, independently of actual frame rate'"
-SceneGameData.framing_color -> frame_color: float "'Set colour of the bars'"
-SceneGameData.framing_type -> frame_type: enum "'Select the type of Framing you want'"
-SceneGameData.frequency -> frequency: int "'Displays clock frequency of fullscreen display'"
-SceneGameData.fullscreen -> show_fullscreen: boolean "'Starts player in a new fullscreen display'"
-SceneGameData.glsl_extra_textures -> use_glsl_extra_textures: boolean "'Use extra textures like normal or specular maps for GLSL rendering'"
-SceneGameData.glsl_lights -> use_glsl_lights: boolean "'Use lights for GLSL rendering'"
-SceneGameData.glsl_nodes -> use_glsl_nodes: boolean "'Use nodes for GLSL rendering'"
-SceneGameData.glsl_ramps -> use_glsl_ramps: boolean "'Use ramps for GLSL rendering'"
-SceneGameData.glsl_shaders -> use_glsl_shaders: boolean "'Use shaders for GLSL rendering'"
-SceneGameData.glsl_shadows -> use_glsl_shadows: boolean "'Use shadows for GLSL rendering'"
-SceneGameData.logic_step_max -> logic_step_max: int "'Sets the maximum number of logic frame per game frame if graphics slows down the game, higher value allows better synchronization with physics'"
-SceneGameData.material_mode -> material_mode: enum "'Material mode to use for rendering'"
-SceneGameData.occlusion_culling_resolution -> occlusion_culling_resolution: float "'The size of the occlusion buffer in pixel, use higher value for better precision (slower)'"
-SceneGameData.physics_engine -> physics_engine: enum "'Physics engine used for physics simulation in the game engine'"
-SceneGameData.physics_gravity -> physics_gravity: float "'Gravitational constant used for physics simulation in the game engine'"
-SceneGameData.physics_step_max -> physics_step_max: int "'Sets the maximum number of physics step per game frame if graphics slows down the game, higher value allows physics to keep up with realtime'"
-SceneGameData.physics_step_sub -> physics_step_sub: int "'Sets the number of simulation substep per physic timestep, higher value give better physics precision'"
-SceneGameData.resolution_x -> resolution_x: int "'Number of horizontal pixels in the screen'"
-SceneGameData.resolution_y -> resolution_y: int "'Number of vertical pixels in the screen'"
-SceneGameData.show_debug_properties -> show_debug_properties: boolean "'Show properties marked for debugging while the game runs'"
-SceneGameData.show_framerate_profile -> show_framerate_profile: boolean "'Show framerate and profiling information while the game runs'"
-SceneGameData.show_physics_visualization -> show_physics_visualization: boolean "'Show a visualization of physics bounds and interactions'"
-SceneGameData.stereo -> stereo: enum "'NO DESCRIPTION'"
-SceneGameData.stereo_mode -> stereo_mode: enum "'Stereographic techniques'"
-SceneGameData.use_animation_record -> use_animation_record: boolean "'Record animation to fcurves'"
-SceneGameData.use_deprecation_warnings -> use_deprecation_warnings: boolean "'Print warnings when using deprecated features in the python API'"
-SceneGameData.use_display_lists -> use_display_lists: boolean "'Use display lists to speed up rendering by keeping geometry on the GPU'"
-SceneGameData.use_frame_rate -> use_frame_rate: boolean "'Respect the frame rate rather than rendering as many frames as possible'"
-SceneGameData.use_occlusion_culling -> use_occlusion_culling: boolean "'Use optimized Bullet DBVT tree for view frustum and occlusion culling'"
-SceneObjects.active -> active: pointer "'Active object for this scene'"
-SceneRenderLayer.all_z -> use_all_z: boolean "'Fill in Z values for solid faces in invisible layers, for masking'"
-SceneRenderLayer.edge -> use_edge_enhance: boolean "'Render Edge-enhance in this Layer (only works for Solid faces)'"
-SceneRenderLayer.enabled -> use: boolean "'Disable or enable the render layer'"
-SceneRenderLayer.halo -> use_halo: boolean "'Render Halos in this Layer (on top of Solid)'"
-SceneRenderLayer.light_override -> light_override: pointer "'Group to override all other lights in this render layer'"
-SceneRenderLayer.material_override -> material_override: pointer "'Material to override all other materials in this render layer'"
-SceneRenderLayer.name -> name: string "'Render layer name'"
-SceneRenderLayer.pass_ao -> use_pass_ambient_occlusion: boolean "'Deliver AO pass'"
-SceneRenderLayer.pass_ao_exclude -> exclude_ambient_occlusion: boolean "'Exclude AO pass from combined'"
-SceneRenderLayer.pass_color -> use_pass_color: boolean "'Deliver shade-less color pass'"
-SceneRenderLayer.pass_combined -> use_pass_combined: boolean "'Deliver full combined RGBA buffer'"
-SceneRenderLayer.pass_diffuse -> use_pass_diffuse: boolean "'Deliver diffuse pass'"
-SceneRenderLayer.pass_emit -> use_pass_emit: boolean "'Deliver emission pass'"
-SceneRenderLayer.pass_emit_exclude -> exclude_emit: boolean "'Exclude emission pass from combined'"
-SceneRenderLayer.pass_environment -> use_pass_environment: boolean "'Deliver environment lighting pass'"
-SceneRenderLayer.pass_environment_exclude -> exclude_environment: boolean "'Exclude environment pass from combined'"
-SceneRenderLayer.pass_indirect -> use_pass_indirect: boolean "'Deliver indirect lighting pass'"
-SceneRenderLayer.pass_indirect_exclude -> exclude_indirect: boolean "'Exclude indirect pass from combined'"
-SceneRenderLayer.pass_mist -> use_pass_mist: boolean "'Deliver mist factor pass (0.0-1.0)'"
-SceneRenderLayer.pass_normal -> use_pass_normal: boolean "'Deliver normal pass'"
-SceneRenderLayer.pass_object_index -> use_pass_object_index: boolean "'Deliver object index pass'"
-SceneRenderLayer.pass_reflection -> use_pass_reflection: boolean "'Deliver raytraced reflection pass'"
-SceneRenderLayer.pass_reflection_exclude -> exclude_reflection: boolean "'Exclude raytraced reflection pass from combined'"
-SceneRenderLayer.pass_refraction -> use_pass_refraction: boolean "'Deliver raytraced refraction pass'"
-SceneRenderLayer.pass_refraction_exclude -> exclude_refraction: boolean "'Exclude raytraced refraction pass from combined'"
-SceneRenderLayer.pass_shadow -> use_pass_shadow: boolean "'Deliver shadow pass'"
-SceneRenderLayer.pass_shadow_exclude -> exclude_shadow: boolean "'Exclude shadow pass from combined'"
-SceneRenderLayer.pass_specular -> use_pass_specular: boolean "'Deliver specular pass'"
-SceneRenderLayer.pass_specular_exclude -> exclude_specular: boolean "'Exclude specular pass from combined'"
-SceneRenderLayer.pass_uv -> use_pass_uv: boolean "'Deliver texture UV pass'"
-SceneRenderLayer.pass_vector -> use_pass_vector: boolean "'Deliver speed vector pass'"
-SceneRenderLayer.pass_z -> use_pass_z: boolean "'Deliver Z values pass'"
-SceneRenderLayer.sky -> use_sky: boolean "'Render Sky in this Layer'"
-SceneRenderLayer.solid -> use_solid: boolean "'Render Solid faces in this Layer'"
-SceneRenderLayer.strand -> use_strand: boolean "'Render Strands in this Layer'"
-SceneRenderLayer.visible_layers -> layers: boolean "'Scene layers included in this render layer'"
-SceneRenderLayer.zmask -> use_zmask: boolean '"Only render what\'s in front of the solid z values"'
-SceneRenderLayer.zmask_layers -> layers_zmask: boolean "'Zmask scene layers'"
-SceneRenderLayer.zmask_negate -> invert_zmask: boolean "'For Zmask, only render what is behind solid z values instead of in front'"
-SceneRenderLayer.ztransp -> use_ztransp: boolean "'Render Z-Transparent faces in this Layer (On top of Solid and Halos)'"
-Scopes.accuracy -> accuracy: float "'Proportion of original image source pixel lines to sample'"
-Scopes.histogram -> histogram: pointer, "'(read-only) Histogram for viewing image statistics'"
-Scopes.use_full_resolution -> use_full_resolution: boolean "'Sample every pixel of the image'"
-Scopes.vectorscope_alpha -> vectorscope_alpha: float "'Opacity of the points'"
-Scopes.waveform_alpha -> waveform_alpha: float "'Opacity of the points'"
-Scopes.waveform_mode -> waveform_mode: enum "'NO DESCRIPTION'"
-Sensor.expanded -> show_expanded: boolean "'Set sensor expanded in the user interface'"
-Sensor.frequency -> frequency: int "'Delay between repeated pulses(in logic tics, 0=no delay)'"
-Sensor.invert -> invert: boolean "'Invert the level(output) of this sensor'"
-Sensor.level -> use_level: boolean "'Level detector, trigger controllers of new states (only applicable upon logic state transition)'"
-Sensor.name -> name: string "'Sensor name'"
-Sensor.pinned -> pinned: boolean "'Display when not linked to a visible states controller'"
-Sensor.pulse_false_level -> use_pulse_false_level: boolean "'Activate FALSE level triggering (pulse mode)'"
-Sensor.pulse_true_level -> use_pulse_true_level: boolean "'Activate TRUE level triggering (pulse mode)'"
-Sensor.tap -> use_tap: boolean "'Trigger controllers only for an instant, even while the sensor remains true'"
-Sensor.type -> type: enum "'NO DESCRIPTION'"
-+ * Sensor|ActuatorSensor.actuator -> actuator: string "'Actuator name, actuator active state modifications will be detected'"
-+ * Sensor|ArmatureSensor.bone -> bone: string "'Identify the bone to check value from'"
-+ * Sensor|ArmatureSensor.constraint -> constraint: string "'Identify the bone constraint to check value from'"
-+ * Sensor|ArmatureSensor.test_type -> test_type: enum "'Type of value and test'"
-+ * Sensor|ArmatureSensor.value -> value: float "'Specify value to be used in comparison'"
-+ * Sensor|CollisionSensor.collision_type -> use_material: boolean "'Use material instead of property'"
-+ * Sensor|CollisionSensor.material -> material: string "'Only look for Objects with this material'"
-+ * Sensor|CollisionSensor.property -> property: string "'Only look for Objects with this property'"
-+ * Sensor|CollisionSensor.pulse -> use_pulse: boolean "'Changes to the set of colliding objects generates pulse'"
-Sensor|DelaySensor.delay -> delay: int "'Delay in number of logic tics before the positive trigger (default 60 per second)'"
-Sensor|DelaySensor.duration -> duration: int "'If >0, delay in number of logic tics before the negative trigger following the positive trigger'"
-Sensor|DelaySensor.repeat -> use_repeat: boolean "'Toggle repeat option. If selected, the sensor restarts after Delay+Dur logic tics'"
-Sensor|JoystickSensor.all_events -> use_all_events: boolean "'Triggered by all events on this joysticks current type (axis/button/hat)'"
-Sensor|JoystickSensor.axis_direction -> axis_direction: enum "'The direction of the axis'"
-Sensor|JoystickSensor.axis_number -> axis_number: int "'Specify which axis pair to use, 1 is usually the main direction input'"
-Sensor|JoystickSensor.axis_threshold -> axis_threshold: int "'Specify the precision of the axis'"
-Sensor|JoystickSensor.button_number -> button_number: int "'Specify which button to use'"
-Sensor|JoystickSensor.event_type -> event_type: enum "'The type of event this joystick sensor is triggered on'"
-Sensor|JoystickSensor.hat_direction -> hat_direction: enum "'Specify hat direction'"
-Sensor|JoystickSensor.hat_number -> hat_number: int "'Specify which hat to use'"
-Sensor|JoystickSensor.joystick_index -> joystick_index: int "'Specify which joystick to use'"
-Sensor|JoystickSensor.single_axis_number -> single_axis_number: int "'Specify a single axis (verticle/horizontal/other) to detect'"
-Sensor|KeyboardSensor.all_keys -> use_all_keys: boolean "'Trigger this sensor on any keystroke'"
-Sensor|KeyboardSensor.key -> key: enum "'NO DESCRIPTION'"
-Sensor|KeyboardSensor.log -> log: string "'Property that receive the keystrokes in case a string is logged'"
-Sensor|KeyboardSensor.modifier_key -> modifier_key: enum "'Modifier key code'"
-Sensor|KeyboardSensor.second_modifier_key -> second_modifier_key: enum "'Modifier key code'"
-Sensor|KeyboardSensor.target -> target: string "'Property that indicates whether to log keystrokes as a string'"
-Sensor|MessageSensor.subject -> subject: string "'Optional subject filter: only accept messages with this subject, or empty for all'"
-Sensor|MouseSensor.mouse_event -> mouse_event: enum "'Specify the type of event this mouse sensor should trigger on'"
-Sensor|NearSensor.distance -> distance: float "'Trigger distance'"
-Sensor|NearSensor.property -> property: string "'Only look for objects with this property'"
-Sensor|NearSensor.reset_distance -> reset_distance: float "'NO DESCRIPTION'"
-Sensor|PropertySensor.evaluation_type -> evaluation_type: enum "'Type of property evaluation'"
-Sensor|PropertySensor.max_value -> value_max: string "'Specify maximum value in Interval type'"
-Sensor|PropertySensor.min_value -> value_min: string "'Specify minimum value in Interval type'"
-Sensor|PropertySensor.property -> property: string "'NO DESCRIPTION'"
-Sensor|PropertySensor.value -> value: string "'Check for this value in types in Equal or Not Equal types'"
-Sensor|RadarSensor.angle -> angle: float "'Opening angle of the radar cone'"
-Sensor|RadarSensor.axis -> axis: enum "'Specify along which axis the radar cone is cast'"
-Sensor|RadarSensor.distance -> distance: float "'Depth of the radar cone'"
-Sensor|RadarSensor.property -> property: string "'Only look for Objects with this property'"
-Sensor|RandomSensor.seed -> seed: int "'Initial seed of the generator. (Choose 0 for not random)'"
-Sensor|RaySensor.axis -> axis: enum "'Specify along which axis the ray is cast'"
-Sensor|RaySensor.material -> material: string "'Only look for Objects with this material'"
-Sensor|RaySensor.property -> property: string "'Only look for Objects with this property'"
-Sensor|RaySensor.range -> range: float "'Sense objects no farther than this distance'"
-Sensor|RaySensor.ray_type -> ray_type: enum "'Toggle collision on material or property'"
-Sensor|RaySensor.x_ray_mode -> use_x_ray: boolean '"See through objects that don\'t have the property"'
-Sensor|TouchSensor.material -> material: pointer "'Only look for objects with this material'"
-Sequence.blend_mode -> blend_type: enum "'NO DESCRIPTION'"
-Sequence.blend_opacity -> blend_opacity: float "'NO DESCRIPTION'"
-Sequence.channel -> channel: int "'Y position of the sequence strip'"
-Sequence.effect_fader -> effect_fader: float "'NO DESCRIPTION'"
-Sequence.frame_final_end -> frame_final_end: int "'End frame displayed in the sequence editor after offsets are applied'"
-Sequence.frame_final_length -> frame_final_length: int "'The length of the contents of this strip before the handles are applied'"
-Sequence.frame_final_start -> frame_final_start: int "'Start frame displayed in the sequence editor after offsets are applied, setting this is equivalent to moving the handle, not the actual start frame'"
-Sequence.frame_length -> frame_length: int, "'(read-only) The length of the contents of this strip before the handles are applied'"
-Sequence.frame_offset_end -> frame_offset_end: int, "'(read-only)'"
-Sequence.frame_offset_start -> frame_offset_start: int, "'(read-only)'"
-Sequence.frame_start -> frame_start: int "'NO DESCRIPTION'"
-Sequence.frame_still_end -> frame_still_end: int, "'(read-only)'"
-Sequence.frame_still_start -> frame_still_start: int, "'(read-only)'"
-Sequence.lock -> lock: boolean '"Lock strip so that it can\'t be transformed"'
-Sequence.mute -> mute: boolean "'NO DESCRIPTION'"
-Sequence.name -> name: string "'NO DESCRIPTION'"
-Sequence.select -> select: boolean "'NO DESCRIPTION'"
-Sequence.select_left_handle -> select_left_handle: boolean "'NO DESCRIPTION'"
-Sequence.select_right_handle -> select_right_handle: boolean "'NO DESCRIPTION'"
-Sequence.speed_fader -> speed_fader: float "'NO DESCRIPTION'"
-Sequence.type -> type: enum, "'(read-only)'"
-Sequence.use_effect_default_fade -> use_default_fade: boolean "'Fade effect using the built-in default (usually make transition as long as effect strip)'"
-SequenceColorBalance.gain -> gain: float "'Color balance gain (highlights)'"
-SequenceColorBalance.gamma -> gamma: float "'Color balance gamma (midtones)'"
-SequenceColorBalance.inverse_gain -> invert_gain: boolean "'NO DESCRIPTION'"
-SequenceColorBalance.inverse_gamma -> invert_gamma: boolean "'NO DESCRIPTION'"
-SequenceColorBalance.inverse_lift -> invert_lift: boolean "'NO DESCRIPTION'"
-SequenceColorBalance.lift -> lift: float "'Color balance lift (shadows)'"
-SequenceCrop.bottom -> bottom: int "'NO DESCRIPTION'"
-SequenceCrop.left -> left: int "'NO DESCRIPTION'"
-SequenceCrop.right -> right: int "'NO DESCRIPTION'"
-SequenceCrop.top -> top: int "'NO DESCRIPTION'"
-SequenceEditor.active_strip -> active_strip: pointer "'NO DESCRIPTION'"
-SequenceEditor.meta_stack -> meta_stack: collection, "'(read-only) Meta strip stack, last is currently edited meta strip'"
-SequenceEditor.overlay_frame -> overlay_frame: int "'Sequencers active strip'"
-SequenceEditor.overlay_lock -> overlay_lock: boolean "'NO DESCRIPTION'"
-SequenceEditor.sequences -> sequences: collection, "'(read-only)'"
-SequenceEditor.sequences_all -> sequences_all: collection, "'(read-only)'"
-SequenceEditor.show_overlay -> show_overlay: boolean "'Partial overlay ontop of the sequencer'"
-SequenceElement.filename -> filename: string "'NO DESCRIPTION'"
-SequenceProxy.directory -> directory: string "'Location to store the proxy files'"
-SequenceProxy.filepath -> filepath: string "'Location of custom proxy file'"
-SequenceTransform.offset_x -> offset_x: int "'NO DESCRIPTION'"
-SequenceTransform.offset_y -> offset_y: int "'NO DESCRIPTION'"
-Sequence|EffectSequence.color_balance -> color_balance: pointer, "'(read-only)'"
-Sequence|EffectSequence.color_saturation -> color_saturation: float "'NO DESCRIPTION'"
-Sequence|EffectSequence.convert_float -> use_float: boolean "'Convert input to float data'"
-Sequence|EffectSequence.crop -> crop: pointer, "'(read-only)'"
-Sequence|EffectSequence.de_interlace -> use_deinterlace: boolean "'For video movies to remove fields'"
-Sequence|EffectSequence.flip_x -> use_flip_x: boolean "'Flip on the X axis'"
-Sequence|EffectSequence.flip_y -> use_flip_y: boolean "'Flip on the Y axis'"
-Sequence|EffectSequence.multiply_colors -> color_multiply: float "'NO DESCRIPTION'"
-Sequence|EffectSequence.premultiply -> use_premultiply: boolean "'Convert RGB from key alpha to premultiplied alpha'"
-Sequence|EffectSequence.proxy -> proxy: pointer, "'(read-only)'"
-Sequence|EffectSequence.proxy_custom_directory -> use_proxy_custom_directory: boolean "'Use a custom directory to store data'"
-Sequence|EffectSequence.proxy_custom_file -> use_proxy_custom_file: boolean "'Use a custom file to read proxy data from'"
-Sequence|EffectSequence.reverse_frames -> use_reverse_frames: boolean "'Reverse frame order'"
-Sequence|EffectSequence.strobe -> strobe: float "'Only display every nth frame'"
-Sequence|EffectSequence.transform -> transform: pointer, "'(read-only)'"
-Sequence|EffectSequence.use_color_balance -> use_color_balance: boolean "'(3-Way color correction) on input'"
-Sequence|EffectSequence.use_crop -> use_crop: boolean "'Crop image before processing'"
-Sequence|EffectSequence.use_proxy -> use_proxy: boolean "'Use a preview proxy for this strip'"
-Sequence|EffectSequence.use_translation -> use_translation: boolean "'Translate image before processing'"
-+ * Sequence|EffectSequence|ColorSequence.color -> color: float "'NO DESCRIPTION'"
-Sequence|EffectSequence|GlowSequence.blur_distance -> blur_distance: float "'Radius of glow effect'"
-Sequence|EffectSequence|GlowSequence.boost_factor -> boost_factor: float "'Brightness multiplier'"
-Sequence|EffectSequence|GlowSequence.clamp -> clamp: float "'rightness limit of intensity'"
-Sequence|EffectSequence|GlowSequence.only_boost -> use_only_boost: boolean "'Show the glow buffer only'"
-Sequence|EffectSequence|GlowSequence.quality -> quality: int "'Accuracy of the blur effect'"
-Sequence|EffectSequence|GlowSequence.threshold -> threshold: float "'Minimum intensity to trigger a glow'"
-Sequence|EffectSequence|PluginSequence.filename -> filename: string, "'(read-only)'"
-Sequence|EffectSequence|SpeedControlSequence.curve_compress_y -> use_curve_compress_y: boolean "'Scale F-Curve value to get the target frame number, F-Curve value runs from 0.0 to 1.0'"
-Sequence|EffectSequence|SpeedControlSequence.curve_velocity -> use_curve_velocity: boolean "'Interpret the F-Curve value as a velocity instead of a frame number'"
-Sequence|EffectSequence|SpeedControlSequence.frame_blending -> use_frame_blend: boolean "'Blend two frames into the target for a smoother result'"
-Sequence|EffectSequence|SpeedControlSequence.global_speed -> global_speed: float "'NO DESCRIPTION'"
-Sequence|EffectSequence|TransformSequence.interpolation -> interpolation: enum "'NO DESCRIPTION'"
-Sequence|EffectSequence|TransformSequence.rotation_start -> rotation_start: float "'NO DESCRIPTION'"
-Sequence|EffectSequence|TransformSequence.scale_start_x -> scale_start_x: float "'NO DESCRIPTION'"
-Sequence|EffectSequence|TransformSequence.scale_start_y -> scale_start_y: float "'NO DESCRIPTION'"
-Sequence|EffectSequence|TransformSequence.translate_start_x -> translate_start_x: float "'NO DESCRIPTION'"
-Sequence|EffectSequence|TransformSequence.translate_start_y -> translate_start_y: float "'NO DESCRIPTION'"
-Sequence|EffectSequence|TransformSequence.translation_unit -> translation_unit: enum "'NO DESCRIPTION'"
-Sequence|EffectSequence|TransformSequence.uniform_scale -> use_uniform_scale: boolean "'Scale uniformly, preserving aspect ratio'"
-Sequence|EffectSequence|WipeSequence.angle -> angle: float "'Edge angle'"
-Sequence|EffectSequence|WipeSequence.blur_width -> blur_width: float "'Width of the blur edge, in percentage relative to the image size'"
-Sequence|EffectSequence|WipeSequence.direction -> direction: enum "'Wipe direction'"
-Sequence|EffectSequence|WipeSequence.transition_type -> transition_type: enum "'NO DESCRIPTION'"
-Sequence|ImageSequence.animation_end_offset -> animation_end_offset: int "'Animation end offset (trim end)'"
-Sequence|ImageSequence.animation_start_offset -> animation_start_offset: int "'Animation start offset (trim start)'"
-Sequence|ImageSequence.color_balance -> color_balance: pointer, "'(read-only)'"
-Sequence|ImageSequence.color_saturation -> color_saturation: float "'NO DESCRIPTION'"
-Sequence|ImageSequence.convert_float -> use_float: boolean "'Convert input to float data'"
-Sequence|ImageSequence.crop -> crop: pointer, "'(read-only)'"
-Sequence|ImageSequence.de_interlace -> use_deinterlace: boolean "'For video movies to remove fields'"
-Sequence|ImageSequence.directory -> directory: string "'NO DESCRIPTION'"
-Sequence|ImageSequence.elements -> elements: collection, "'(read-only)'"
-Sequence|ImageSequence.flip_x -> use_flip_x: boolean "'Flip on the X axis'"
-Sequence|ImageSequence.flip_y -> use_flip_y: boolean "'Flip on the Y axis'"
-Sequence|ImageSequence.multiply_colors -> multiply_colors: float "'NO DESCRIPTION'"
-Sequence|ImageSequence.premultiply -> use_premultiply: boolean "'Convert RGB from key alpha to premultiplied alpha'"
-Sequence|ImageSequence.proxy -> proxy: pointer, "'(read-only)'"
-Sequence|ImageSequence.proxy_custom_directory -> use_proxy_custom_directory: boolean "'Use a custom directory to store data'"
-Sequence|ImageSequence.proxy_custom_file -> use_proxy_custom_file: boolean "'Use a custom file to read proxy data from'"
-Sequence|ImageSequence.reverse_frames -> use_reverse_frames: boolean "'Reverse frame order'"
-Sequence|ImageSequence.strobe -> strobe: float "'Only display every nth frame'"
-Sequence|ImageSequence.transform -> transform: pointer, "'(read-only)'"
-Sequence|ImageSequence.use_color_balance -> use_color_balance: boolean "'(3-Way color correction) on input'"
-Sequence|ImageSequence.use_crop -> use_crop: boolean "'Crop image before processing'"
-Sequence|ImageSequence.use_proxy -> use_proxy: boolean "'Use a preview proxy for this strip'"
-Sequence|ImageSequence.use_translation -> use_translation: boolean "'Translate image before processing'"
-Sequence|MetaSequence.animation_end_offset -> animation_end_offset: int "'Animation end offset (trim end)'"
-Sequence|MetaSequence.animation_start_offset -> animation_start_offset: int "'Animation start offset (trim start)'"
-Sequence|MetaSequence.color_balance -> color_balance: pointer, "'(read-only)'"
-Sequence|MetaSequence.color_saturation -> color_saturation: float "'NO DESCRIPTION'"
-Sequence|MetaSequence.convert_float -> use_float: boolean "'Convert input to float data'"
-Sequence|MetaSequence.crop -> crop: pointer, "'(read-only)'"
-Sequence|MetaSequence.de_interlace -> use_deinterlace: boolean "'For video movies to remove fields'"
-Sequence|MetaSequence.flip_x -> use_flip_x: boolean "'Flip on the X axis'"
-Sequence|MetaSequence.flip_y -> use_flip_y: boolean "'Flip on the Y axis'"
-Sequence|MetaSequence.multiply_colors -> multiply_colors: float "'NO DESCRIPTION'"
-Sequence|MetaSequence.premultiply -> use_premultiply: boolean "'Convert RGB from key alpha to premultiplied alpha'"
-Sequence|MetaSequence.proxy -> proxy: pointer, "'(read-only)'"
-Sequence|MetaSequence.proxy_custom_directory -> use_proxy_custom_directory: boolean "'Use a custom directory to store data'"
-Sequence|MetaSequence.proxy_custom_file -> use_proxy_custom_file: boolean "'Use a custom file to read proxy data from'"
-Sequence|MetaSequence.reverse_frames -> use_reverse_frames: boolean "'Reverse frame order'"
-Sequence|MetaSequence.sequences -> sequences: collection, "'(read-only)'"
-Sequence|MetaSequence.strobe -> strobe: float "'Only display every nth frame'"
-Sequence|MetaSequence.transform -> transform: pointer, "'(read-only)'"
-Sequence|MetaSequence.use_color_balance -> use_color_balance: boolean "'(3-Way color correction) on input'"
-Sequence|MetaSequence.use_crop -> use_crop: boolean "'Crop image before processing'"
-Sequence|MetaSequence.use_proxy -> use_proxy: boolean "'Use a preview proxy for this strip'"
-Sequence|MetaSequence.use_translation -> use_translation: boolean "'Translate image before processing'"
-Sequence|MovieSequence.animation_end_offset -> animation_end_offset: int "'Animation end offset (trim end)'"
-Sequence|MovieSequence.animation_start_offset -> animation_start_offset: int "'Animation start offset (trim start)'"
-Sequence|MovieSequence.color_balance -> color_balance: pointer, "'(read-only)'"
-Sequence|MovieSequence.color_saturation -> color_saturation: float "'NO DESCRIPTION'"
-Sequence|MovieSequence.convert_float -> use_float: boolean "'Convert input to float data'"
-Sequence|MovieSequence.crop -> crop: pointer, "'(read-only)'"
-Sequence|MovieSequence.de_interlace -> use_deinterlace: boolean "'For video movies to remove fields'"
-Sequence|MovieSequence.filepath -> filepath: string "'NO DESCRIPTION'"
-Sequence|MovieSequence.flip_x -> use_flip_x: boolean "'Flip on the X axis'"
-Sequence|MovieSequence.flip_y -> use_flip_y: boolean "'Flip on the Y axis'"
-Sequence|MovieSequence.mpeg_preseek -> mpeg_preseek: int "'For MPEG movies, preseek this many frames'"
-Sequence|MovieSequence.multiply_colors -> multiply_colors: float "'NO DESCRIPTION'"
-Sequence|MovieSequence.premultiply -> use_premultiply: boolean "'Convert RGB from key alpha to premultiplied alpha'"
-Sequence|MovieSequence.proxy -> proxy: pointer, "'(read-only)'"
-Sequence|MovieSequence.proxy_custom_directory -> use_proxy_custom_directory: boolean "'Use a custom directory to store data'"
-Sequence|MovieSequence.proxy_custom_file -> use_proxy_custom_file: boolean "'Use a custom file to read proxy data from'"
-Sequence|MovieSequence.reverse_frames -> use_reverse_frames: boolean "'Reverse frame order'"
-Sequence|MovieSequence.strobe -> strobe: float "'Only display every nth frame'"
-Sequence|MovieSequence.transform -> transform: pointer, "'(read-only)'"
-Sequence|MovieSequence.use_color_balance -> use_color_balance: boolean "'(3-Way color correction) on input'"
-Sequence|MovieSequence.use_crop -> use_crop: boolean "'Crop image before processing'"
-Sequence|MovieSequence.use_proxy -> use_proxy: boolean "'Use a preview proxy for this strip'"
-Sequence|MovieSequence.use_translation -> use_translation: boolean "'Translate image before processing'"
-Sequence|MulticamSequence.animation_end_offset -> animation_end_offset: int "'Animation end offset (trim end)'"
-Sequence|MulticamSequence.animation_start_offset -> animation_start_offset: int "'Animation start offset (trim start)'"
-Sequence|MulticamSequence.color_balance -> color_balance: pointer, "'(read-only)'"
-Sequence|MulticamSequence.color_saturation -> color_saturation: float "'NO DESCRIPTION'"
-Sequence|MulticamSequence.convert_float -> use_float: boolean "'Convert input to float data'"
-Sequence|MulticamSequence.crop -> crop: pointer, "'(read-only)'"
-Sequence|MulticamSequence.de_interlace -> use_deinterlace: boolean "'For video movies to remove fields'"
-Sequence|MulticamSequence.flip_x -> use_flip_x: boolean "'Flip on the X axis'"
-Sequence|MulticamSequence.flip_y -> use_flip_y: boolean "'Flip on the Y axis'"
-Sequence|MulticamSequence.multicam_source -> multicam_source: int "'NO DESCRIPTION'"
-Sequence|MulticamSequence.multiply_colors -> multiply_colors: float "'NO DESCRIPTION'"
-Sequence|MulticamSequence.premultiply -> use_premultiply: boolean "'Convert RGB from key alpha to premultiplied alpha'"
-Sequence|MulticamSequence.proxy -> proxy: pointer, "'(read-only)'"
-Sequence|MulticamSequence.proxy_custom_directory -> use_proxy_custom_directory: boolean "'Use a custom directory to store data'"
-Sequence|MulticamSequence.proxy_custom_file -> use_proxy_custom_file: boolean "'Use a custom file to read proxy data from'"
-Sequence|MulticamSequence.reverse_frames -> use_reverse_frames: boolean "'Reverse frame order'"
-Sequence|MulticamSequence.strobe -> strobe: float "'Only display every nth frame'"
-Sequence|MulticamSequence.transform -> transform: pointer, "'(read-only)'"
-Sequence|MulticamSequence.use_color_balance -> use_color_balance: boolean "'(3-Way color correction) on input'"
-Sequence|MulticamSequence.use_crop -> use_crop: boolean "'Crop image before processing'"
-Sequence|MulticamSequence.use_proxy -> use_proxy: boolean "'Use a preview proxy for this strip'"
-Sequence|MulticamSequence.use_translation -> use_translation: boolean "'Translate image before processing'"
-Sequence|SceneSequence.animation_end_offset -> animation_end_offset: int "'Animation end offset (trim end)'"
-Sequence|SceneSequence.animation_start_offset -> animation_start_offset: int "'Animation start offset (trim start)'"
-Sequence|SceneSequence.color_balance -> color_balance: pointer, "'(read-only)'"
-Sequence|SceneSequence.color_saturation -> color_saturation: float "'NO DESCRIPTION'"
-Sequence|SceneSequence.convert_float -> use_float: boolean "'Convert input to float data'"
-Sequence|SceneSequence.crop -> crop: pointer, "'(read-only)'"
-Sequence|SceneSequence.de_interlace -> use_deinterlace: boolean "'For video movies to remove fields'"
-Sequence|SceneSequence.flip_x -> use_flip_x: boolean "'Flip on the X axis'"
-Sequence|SceneSequence.flip_y -> use_flip_y: boolean "'Flip on the Y axis'"
-Sequence|SceneSequence.multiply_colors -> multiply_colors: float "'NO DESCRIPTION'"
-Sequence|SceneSequence.premultiply -> use_premultiply: boolean "'Convert RGB from key alpha to premultiplied alpha'"
-Sequence|SceneSequence.proxy -> proxy: pointer, "'(read-only)'"
-Sequence|SceneSequence.proxy_custom_directory -> use_proxy_custom_directory: boolean "'Use a custom directory to store data'"
-Sequence|SceneSequence.proxy_custom_file -> use_proxy_custom_file: boolean "'Use a custom file to read proxy data from'"
-Sequence|SceneSequence.reverse_frames -> use_reverse_frames: boolean "'Reverse frame order'"
-Sequence|SceneSequence.scene -> scene: pointer "'Scene that this sequence uses'"
-Sequence|SceneSequence.scene_camera -> scene_camera: pointer "'Override the scenes active camera'"
-Sequence|SceneSequence.strobe -> strobe: float "'Only display every nth frame'"
-Sequence|SceneSequence.transform -> transform: pointer, "'(read-only)'"
-Sequence|SceneSequence.use_color_balance -> use_color_balance: boolean "'(3-Way color correction) on input'"
-Sequence|SceneSequence.use_crop -> use_crop: boolean "'Crop image before processing'"
-Sequence|SceneSequence.use_proxy -> use_proxy: boolean "'Use a preview proxy for this strip'"
-Sequence|SceneSequence.use_translation -> use_translation: boolean "'Translate image before processing'"
-Sequence|SoundSequence.animation_end_offset -> animation_end_offset: int "'Animation end offset (trim end)'"
-Sequence|SoundSequence.animation_start_offset -> animation_start_offset: int "'Animation start offset (trim start)'"
-Sequence|SoundSequence.attenuation -> attenuation: float "'Attenuation in dezibel'"
-Sequence|SoundSequence.filepath -> filepath: string "'NO DESCRIPTION'"
-Sequence|SoundSequence.sound -> sound: pointer, "'(read-only) Sound datablock used by this sequence'"
-Sequence|SoundSequence.volume -> volume: float "'Playback volume of the sound'"
-ShapeKey.data -> data: collection, "'(read-only)'"
-ShapeKey.frame -> frame: float, "'(read-only) Frame for absolute keys'"
-ShapeKey.interpolation -> interpolation: enum "'Interpolation type'"
-ShapeKey.mute -> mute: boolean "'Mute this shape key'"
-ShapeKey.name -> name: string "'NO DESCRIPTION'"
-ShapeKey.relative_key -> relative_key: pointer "'Shape used as a relative key'"
-ShapeKey.slider_max -> slider_max: float "'Maximum for slider'"
-ShapeKey.slider_min -> slider_min: float "'Minimum for slider'"
-ShapeKey.value -> value: float "'Value of shape key at the current frame'"
-ShapeKey.vertex_group -> vertex_group: string "'Vertex weight group, to blend with basis shape'"
-ShapeKeyBezierPoint.co -> co: float "'NO DESCRIPTION'"
-ShapeKeyBezierPoint.handle_1_co -> handle_1_co: float "'NO DESCRIPTION'"
-ShapeKeyBezierPoint.handle_2_co -> handle_2_co: float "'NO DESCRIPTION'"
-ShapeKeyCurvePoint.co -> co: float "'NO DESCRIPTION'"
-ShapeKeyCurvePoint.tilt -> tilt: float "'NO DESCRIPTION'"
-ShapeKeyPoint.co -> co: float "'NO DESCRIPTION'"
-SmokeDomainSettings.alpha -> alpha: float "'Higher value results in sinking smoke'"
-SmokeDomainSettings.amplify -> amplify: int "'Enhance the resolution of smoke by this factor using noise'"
-SmokeDomainSettings.beta -> beta: float "'Higher value results in faster rising smoke'"
-SmokeDomainSettings.coll_group -> coll_group: pointer "'Limit collisions to this group'"
-SmokeDomainSettings.dissolve_smoke -> use_dissolve_smoke: boolean "'Enable smoke to disappear over time'"
-SmokeDomainSettings.dissolve_smoke_log -> use_dissolve_smoke_log: boolean "'Using 1/x'"
-SmokeDomainSettings.dissolve_speed -> dissolve_speed: int "'Dissolve Speed'"
-SmokeDomainSettings.eff_group -> eff_group: pointer "'Limit effectors to this group'"
-SmokeDomainSettings.effector_weights -> effector_weights: pointer, "'(read-only)'"
-SmokeDomainSettings.fluid_group -> fluid_group: pointer "'Limit fluid objects to this group'"
-SmokeDomainSettings.highres -> use_high_resolution: boolean "'Enable high resolution (using amplification)'"
-SmokeDomainSettings.maxres -> maxres: int "'Maximal resolution used in the fluid domain'"
-SmokeDomainSettings.noise_type -> noise_type: enum "'Noise method which is used for creating the high resolution'"
-SmokeDomainSettings.point_cache_high -> point_cache_high: pointer, "'(read-only)'"
-SmokeDomainSettings.point_cache_low -> point_cache_low: pointer, "'(read-only)'"
-SmokeDomainSettings.smoke_cache_comp -> smoke_cache_comp: enum "'Compression method to be used'"
-SmokeDomainSettings.smoke_cache_high_comp -> smoke_cache_high_comp: enum "'Compression method to be used'"
-SmokeDomainSettings.smoke_domain_colli -> smoke_domain_colli: enum "'Selects which domain border will be treated as collision object.'"
-SmokeDomainSettings.smoothemitter -> smoothemitter: boolean "'Smoothens emitted smoke to avoid blockiness.'"
-SmokeDomainSettings.strength -> strength: float "'Strength of wavelet noise'"
-SmokeDomainSettings.time_scale -> time_scale: float "'Adjust simulation speed.'"
-SmokeDomainSettings.viewhighres -> show_high_resolution: boolean "'Show high resolution (using amplification)'"
-SmokeDomainSettings.vorticity -> vorticity: float "'Amount of turbulence/rotation in fluid.'"
-SmokeFlowSettings.absolute -> absolute: boolean "'Only allows given density value in emitter area.'"
-SmokeFlowSettings.density -> density: float "'NO DESCRIPTION'"
-SmokeFlowSettings.initial_velocity -> initial_velocity: boolean '"Smoke inherits it\'s velocity from the emitter particle"'
-NEGATE * SmokeFlowSettings.outflow -> use_outflow: boolean "'Deletes smoke from simulation'"
-SmokeFlowSettings.psys -> psys: pointer "'Particle systems emitted from the object'"
-SmokeFlowSettings.temperature -> temperature: float "'Temperature difference to ambient temperature'"
-SmokeFlowSettings.velocity_multiplier -> velocity_multiplier: float "'Multiplier to adjust velocity passed to smoke'"
-SoftBodySettings.aero -> aero: float '"Make edges \'sail\'"'
-SoftBodySettings.aerodynamics_type -> aerodynamics_type: enum "'Method of calculating aerodynamic interaction'"
-SoftBodySettings.auto_step -> use_auto_step: boolean "'Use velocities for automagic step sizes'"
-SoftBodySettings.ball_damp -> ball_damp: float "'Blending to inelastic collision'"
-SoftBodySettings.ball_size -> ball_size: float "'Absolute ball size or factor if not manual adjusted'"
-SoftBodySettings.ball_stiff -> ball_stiff: float "'Ball inflating pressure'"
-SoftBodySettings.bending -> bend: float "'Bending Stiffness'"
-SoftBodySettings.choke -> choke: int '"\'Viscosity\' inside collision target"'
-SoftBodySettings.collision_type -> collision_type: enum "'Choose Collision Type'"
-SoftBodySettings.damp -> damp: float "'Edge spring friction'"
-SoftBodySettings.diagnose -> use_diagnose: boolean "'Turn on SB diagnose console prints'"
-SoftBodySettings.edge_collision -> use_edge_collision: boolean "'Edges collide too'"
-SoftBodySettings.effector_weights -> effector_weights: pointer, "'(read-only)'"
-SoftBodySettings.error_limit -> error_limit: float "'The Runge-Kutta ODE solver error limit, low value gives more precision, high values speed'"
-SoftBodySettings.estimate_matrix -> use_estimate_matrix: boolean "'estimate matrix .. split to COM , ROT ,SCALE'"
-SoftBodySettings.face_collision -> use_face_collision: boolean "'Faces collide too, SLOOOOOW warning'"
-SoftBodySettings.friction -> friction: float "'General media friction for point movements'"
-SoftBodySettings.fuzzy -> fuzzy: int "'Fuzziness while on collision, high values make collsion handling faster but less stable'"
-SoftBodySettings.goal_default -> goal_default: float "'Default Goal (vertex target position) value, when no Vertex Group used'"
-SoftBodySettings.goal_friction -> goal_friction: float "'Goal (vertex target position) friction'"
-SoftBodySettings.goal_max -> goal_max: float "'Goal maximum, vertex weights are scaled to match this range'"
-SoftBodySettings.goal_min -> goal_min: float "'Goal minimum, vertex weights are scaled to match this range'"
-SoftBodySettings.goal_spring -> goal_spring: float "'Goal (vertex target position) spring stiffness'"
-SoftBodySettings.goal_vertex_group -> goal_vertex_group: string "'Control point weight values'"
-SoftBodySettings.gravity -> gravity: float "'Apply gravitation to point movement'"
-SoftBodySettings.lcom -> lcom: float "'Location of Center of mass'"
-SoftBodySettings.lrot -> lrot: float "'Estimated rotation matrix'"
-SoftBodySettings.lscale -> lscale: float "'Estimated scale matrix'"
-SoftBodySettings.mass -> mass: float "'General Mass value'"
-SoftBodySettings.mass_vertex_group -> mass_vertex_group: string "'Control point mass values'"
-SoftBodySettings.maxstep -> step_max: int "'Maximal # solver steps/frame'"
-SoftBodySettings.minstep -> step_min: int "'Minimal # solver steps/frame'"
-SoftBodySettings.plastic -> plastic: float "'Permanent deform'"
-SoftBodySettings.pull -> pull: float "'Edge spring stiffness when longer than rest length'"
-SoftBodySettings.push -> push: float "'Edge spring stiffness when shorter than rest length'"
-SoftBodySettings.self_collision -> use_self_collision: boolean "'Enable naive vertex ball self collision'"
-SoftBodySettings.shear -> shear: float "'Shear Stiffness'"
-SoftBodySettings.speed -> speed: float "'Tweak timing for physics to control frequency and speed'"
-SoftBodySettings.spring_length -> spring_length: float "'Alter spring length to shrink/blow up (unit %) 0 to disable'"
-SoftBodySettings.spring_vertex_group -> spring_vertex_group: string "'Control point spring strength values'"
-SoftBodySettings.stiff_quads -> use_stiff_quads: boolean "'Adds diagonal springs on 4-gons'"
-SoftBodySettings.use_edges -> use_edges: boolean "'Use Edges as springs'"
-SoftBodySettings.use_goal -> use_goal: boolean "'Define forces for vertices to stick to animated position'"
-Space.type -> type: enum, "'(read-only) Space data type'"
-SpaceUVEditor.constrain_to_image_bounds -> use_constrain_to_image_bounds: boolean "'Constraint to stay within the image bounds while editing'"
-SpaceUVEditor.cursor_location -> cursor_location: float "'2D cursor location for this view'"
-SpaceUVEditor.draw_modified_edges -> show_modified_edges: boolean "'Draw edges after modifiers are applied'"
-SpaceUVEditor.draw_other_objects -> show_other_objects: boolean "'Draw other selected objects that share the same image'"
-SpaceUVEditor.draw_smooth_edges -> show_smooth_edges: boolean "'Draw UV edges anti-aliased'"
-SpaceUVEditor.draw_stretch -> show_stretch: boolean "'Draw faces colored according to the difference in shape between UVs and their 3D coordinates (blue for low distortion, red for high distortion)'"
-SpaceUVEditor.draw_stretch_type -> draw_stretch_type: enum "'Type of stretch to draw'"
-SpaceUVEditor.edge_draw_type -> edge_draw_type: enum "'Draw type for drawing UV edges'"
-SpaceUVEditor.live_unwrap -> use_live_unwrap: boolean "'Continuously unwrap the selected UV island while transforming pinned vertices'"
-SpaceUVEditor.normalized_coordinates -> show_normalized_coordinates: boolean "'Display UV coordinates from 0.0 to 1.0 rather than in pixels'"
-SpaceUVEditor.pivot -> pivot: enum "'Rotation/Scaling Pivot'"
-SpaceUVEditor.snap_to_pixels -> use_snap_to_pixels: boolean "'Snap UVs to pixel locations while editing'"
-SpaceUVEditor.sticky_selection_mode -> sticky_selection_mode: enum "'Automatically select also UVs sharing the same vertex as the ones being selected'"
-Space|SpaceConsole.console_type -> console_type: enum "'Console type'"
-Space|SpaceConsole.font_size -> font_size: int "'Font size to use for displaying the text'"
-Space|SpaceConsole.history -> history: collection, "'(read-only) Command history'"
-Space|SpaceConsole.language -> language: string "'Command line prompt language'"
-Space|SpaceConsole.prompt -> prompt: string "'Command line prompt'"
-Space|SpaceConsole.scrollback -> scrollback: collection, "'(read-only) Command output'"
-Space|SpaceConsole.selection_end -> selection_end: int "'NO DESCRIPTION'"
-Space|SpaceConsole.selection_start -> selection_start: int "'NO DESCRIPTION'"
-Space|SpaceConsole.show_report_debug -> show_report_debug: boolean "'Display debug reporting info'"
-Space|SpaceConsole.show_report_error -> show_report_error: boolean "'Display error text'"
-Space|SpaceConsole.show_report_info -> show_report_info: boolean "'Display general information'"
-Space|SpaceConsole.show_report_operator -> show_report_operator: boolean "'Display the operator log'"
-Space|SpaceConsole.show_report_warn -> show_report_warning: boolean "'Display warnings'"
-Space|SpaceDopeSheetEditor.action -> action: pointer "'Action displayed and edited in this space'"
-Space|SpaceDopeSheetEditor.automerge_keyframes -> use_automerge_keyframes: boolean "'Automatically merge nearby keyframes'"
-Space|SpaceDopeSheetEditor.autosnap -> autosnap: enum "'Automatic time snapping settings for transformations'"
-Space|SpaceDopeSheetEditor.dopesheet -> dopesheet: pointer, "'(read-only) Settings for filtering animation data'"
-Space|SpaceDopeSheetEditor.mode -> mode: enum "'Editing context being displayed'"
-Space|SpaceDopeSheetEditor.realtime_updates -> use_realtime_updates: boolean "'When transforming keyframes, changes to the animation data are flushed to other views'"
-Space|SpaceDopeSheetEditor.show_cframe_indicator -> show_frame_indicator: boolean "'Show frame number beside the current frame indicator line'"
-Space|SpaceDopeSheetEditor.show_seconds -> show_seconds: boolean, "'(read-only) Show timing in seconds not frames'"
-Space|SpaceDopeSheetEditor.show_sliders -> show_sliders: boolean "'Show sliders beside F-Curve channels'"
-Space|SpaceDopeSheetEditor.use_marker_sync -> use_marker_sync: boolean "'Sync Markers with keyframe edits'"
-Space|SpaceFileBrowser.params -> params: pointer, "'(read-only) Parameters and Settings for the Filebrowser'"
-Space|SpaceGraphEditor.automerge_keyframes -> use_automerge_keyframes: boolean "'Automatically merge nearby keyframes'"
-Space|SpaceGraphEditor.autosnap -> autosnap: enum "'Automatic time snapping settings for transformations'"
-Space|SpaceGraphEditor.cursor_value -> cursor_value: float "'Graph Editor 2D-Value cursor - Y-Value component'"
-Space|SpaceGraphEditor.dopesheet -> dopesheet: pointer, "'(read-only) Settings for filtering animation data'"
-Space|SpaceGraphEditor.has_ghost_curves -> has_ghost_curves: boolean "'Graph Editor instance has some ghost curves stored'"
-Space|SpaceGraphEditor.mode -> mode: enum "'Editing context being displayed'"
-Space|SpaceGraphEditor.only_selected_curves_handles -> use_only_selected_curves_handles: boolean "'Only keyframes of selected F-Curves are visible and editable'"
-Space|SpaceGraphEditor.only_selected_keyframe_handles -> use_only_selected_keyframe_handles: boolean "'Only show and edit handles of selected keyframes'"
-Space|SpaceGraphEditor.pivot_point -> pivot_point: enum "'Pivot center for rotation/scaling'"
-Space|SpaceGraphEditor.realtime_updates -> use_realtime_updates: boolean "'When transforming keyframes, changes to the animation data are flushed to other views'"
-Space|SpaceGraphEditor.show_cframe_indicator -> show_frame_indicator: boolean "'Show frame number beside the current frame indicator line'"
-Space|SpaceGraphEditor.show_cursor -> show_cursor: boolean "'Show 2D cursor'"
-Space|SpaceGraphEditor.show_handles -> show_handles: boolean "'Show handles of Bezier control points'"
-Space|SpaceGraphEditor.show_seconds -> show_seconds: boolean, "'(read-only) Show timing in seconds not frames'"
-Space|SpaceGraphEditor.show_sliders -> show_sliders: boolean "'Show sliders beside F-Curve channels'"
-Space|SpaceImageEditor.curves -> curves: pointer, "'(read-only) Color curve mapping to use for displaying the image'"
-Space|SpaceImageEditor.draw_channels -> draw_channels: enum "'Channels of the image to draw'"
-Space|SpaceImageEditor.draw_repeated -> show_repeated: boolean "'Draw the image repeated outside of the main view'"
-Space|SpaceImageEditor.grease_pencil -> grease_pencil: pointer "'Grease pencil data for this space'"
-Space|SpaceImageEditor.image -> image: pointer "'Image displayed and edited in this space'"
-Space|SpaceImageEditor.image_painting -> use_image_paint: boolean "'Enable image painting mode'"
-Space|SpaceImageEditor.image_pin -> use_image_pin: boolean "'Display current image regardless of object selection'"
-Space|SpaceImageEditor.image_user -> image_user: pointer, "'(read-only) Parameters defining which layer, pass and frame of the image is displayed'"
-Space|SpaceImageEditor.sample_histogram -> sample_histogram: pointer, "'(read-only) Sampled colors along line'"
-Space|SpaceImageEditor.scopes -> scopes: pointer, "'(read-only) Scopes to visualize image statistics.'"
-Space|SpaceImageEditor.show_paint -> show_paint: boolean, "'(read-only) Show paint related properties'"
-Space|SpaceImageEditor.show_render -> show_render: boolean, "'(read-only) Show render related properties'"
-Space|SpaceImageEditor.show_uvedit -> show_uvedit: boolean, "'(read-only) Show UV editing related properties'"
-Space|SpaceImageEditor.update_automatically -> use_realtime_updates: boolean "'Update other affected window spaces automatically to reflect changes during interactive operations such as transform'"
-Space|SpaceImageEditor.use_grease_pencil -> use_grease_pencil: boolean "'Display and edit the grease pencil freehand annotations overlay'"
-Space|SpaceImageEditor.uv_editor -> uv_editor: pointer, "'(read-only) UV editor settings'"
-Space|SpaceLogicEditor.actuators_show_active_objects -> show_actuators_active_objects: boolean "'Show actuators of active object'"
-Space|SpaceLogicEditor.actuators_show_active_states -> show_actuators_active_states: boolean "'Show only actuators connected to active states'"
-Space|SpaceLogicEditor.actuators_show_linked_controller -> show_actuators_linked_controller: boolean "'Show linked objects to the actuator'"
-Space|SpaceLogicEditor.actuators_show_selected_objects -> show_actuators_selected_objects: boolean "'Show actuators of all selected objects'"
-Space|SpaceLogicEditor.controllers_show_active_objects -> show_controllers_active_objects: boolean "'Show controllers of active object'"
-Space|SpaceLogicEditor.controllers_show_linked_controller -> show_controllers_linked_controller: boolean "'Show linked objects to sensor/actuator'"
-Space|SpaceLogicEditor.controllers_show_selected_objects -> show_controllers_selected_objects: boolean "'Show controllers of all selected objects'"
-Space|SpaceLogicEditor.sensors_show_active_objects -> show_sensors_active_objects: boolean "'Show sensors of active object'"
-Space|SpaceLogicEditor.sensors_show_active_states -> show_sensors_active_states: boolean "'Show only sensors connected to active states'"
-Space|SpaceLogicEditor.sensors_show_linked_controller -> show_sensors_linked_controller: boolean "'Show linked objects to the controller'"
-Space|SpaceLogicEditor.sensors_show_selected_objects -> show_sensors_selected_objects: boolean "'Show sensors of all selected objects'"
-Space|SpaceNLA.autosnap -> autosnap: enum "'Automatic time snapping settings for transformations'"
-Space|SpaceNLA.dopesheet -> dopesheet: pointer, "'(read-only) Settings for filtering animation data'"
-Space|SpaceNLA.realtime_updates -> use_realtime_updates: boolean "'When transforming strips, changes to the animation data are flushed to other views'"
-Space|SpaceNLA.show_cframe_indicator -> show_frame_indicator: boolean "'Show frame number beside the current frame indicator line'"
-Space|SpaceNLA.show_seconds -> show_seconds: boolean, "'(read-only) Show timing in seconds not frames'"
-Space|SpaceNLA.show_strip_curves -> show_strip_curves: boolean "'Show influence curves on strips'"
-Space|SpaceNodeEditor.backdrop -> show_backdrop: boolean "'Use active Viewer Node output as backdrop for compositing nodes'"
-Space|SpaceNodeEditor.id -> id: pointer, "'(read-only) Datablock whose nodes are being edited'"
-Space|SpaceNodeEditor.id_from -> id_from: pointer, "'(read-only) Datablock from which the edited datablock is linked'"
-Space|SpaceNodeEditor.nodetree -> nodetree: pointer, "'(read-only) Node tree being displayed and edited'"
-Space|SpaceNodeEditor.texture_type -> texture_type: enum "'Type of data to take texture from'"
-Space|SpaceNodeEditor.tree_type -> tree_type: enum "'Node tree type to display and edit'"
-Space|SpaceOutliner.display_filter -> display_filter: string "'Live search filtering string'"
-Space|SpaceOutliner.display_mode -> display_mode: enum "'Type of information to display'"
-Space|SpaceOutliner.match_case_sensitive -> use_match_case_sensitive: boolean "'Only use case sensitive matches of search string'"
-Space|SpaceOutliner.match_complete -> use_match_complete: boolean "'Only use complete matches of search string'"
-Space|SpaceOutliner.show_restriction_columns -> show_restriction_columns: boolean "'Show column'"
-Space|SpaceProperties.align -> align: enum "'Arrangement of the panels'"
-Space|SpaceProperties.brush_texture -> show_brush_texture: boolean "'Show brush textures'"
-Space|SpaceProperties.context -> context: enum "'Type of active data to display and edit'"
-Space|SpaceProperties.pin_id -> pin_id: pointer "'NO DESCRIPTION'"
-Space|SpaceProperties.use_pin_id -> use_pin_id: boolean "'Use the pinned context'"
-Space|SpaceSequenceEditor.display_channel -> display_channel: int "'The channel number shown in the image preview. 0 is the result of all strips combined'"
-Space|SpaceSequenceEditor.display_mode -> display_mode: enum "'The view mode to use for displaying sequencer output'"
-Space|SpaceSequenceEditor.draw_frames -> show_frames: boolean "'Draw frames rather than seconds'"
-Space|SpaceSequenceEditor.draw_overexposed -> draw_overexposed: int "'Show overexposed areas with zebra stripes'"
-Space|SpaceSequenceEditor.draw_safe_margin -> show_safe_margin: boolean "'Draw title safe margins in preview'"
-Space|SpaceSequenceEditor.grease_pencil -> grease_pencil: pointer, "'(read-only) Grease pencil data for this space'"
-Space|SpaceSequenceEditor.offset_x -> offset_x: float "'Offsets image horizontally from the view center'"
-Space|SpaceSequenceEditor.offset_y -> offset_y: float "'Offsets image horizontally from the view center'"
-Space|SpaceSequenceEditor.proxy_render_size -> proxy_render_size: enum "'Draw preview using full resolution or different proxy resolutions'"
-Space|SpaceSequenceEditor.separate_color_preview -> show_separate_color: boolean "'Separate color channels in preview'"
-Space|SpaceSequenceEditor.show_cframe_indicator -> show_frame_indicator: boolean "'Show frame number beside the current frame indicator line'"
-Space|SpaceSequenceEditor.use_grease_pencil -> use_grease_pencil: boolean "'Display and edit the grease pencil freehand annotations overlay'"
-Space|SpaceSequenceEditor.use_marker_sync -> use_marker_sync: boolean "'Transform markers as well as strips'"
-Space|SpaceSequenceEditor.view_type -> view_type: enum "'The type of the Sequencer view (sequencer, preview or both)'"
-Space|SpaceSequenceEditor.zoom -> zoom: float "'Display zoom level'"
-Space|SpaceTextEditor.find_all -> use_find_all: boolean "'Search in all text datablocks, instead of only the active one'"
-Space|SpaceTextEditor.find_text -> find_text: string "'Text to search for with the find tool'"
-Space|SpaceTextEditor.find_wrap -> use_find_wrap: boolean "'Search again from the start of the file when reaching the end'"
-Space|SpaceTextEditor.font_size -> font_size: int "'Font size to use for displaying the text'"
-Space|SpaceTextEditor.line_numbers -> show_line_numbers: boolean "'Show line numbers next to the text'"
-Space|SpaceTextEditor.live_edit -> use_live_edit: boolean "'Run python while editing'"
-Space|SpaceTextEditor.overwrite -> use_overwrite: boolean "'Overwrite characters when typing rather than inserting them'"
-Space|SpaceTextEditor.replace_text -> replace_text: string "'Text to replace selected text with using the replace tool'"
-Space|SpaceTextEditor.syntax_highlight -> show_syntax_highlight: boolean "'Syntax highlight for scripting'"
-Space|SpaceTextEditor.tab_width -> tab_width: int "'Number of spaces to display tabs with'"
-Space|SpaceTextEditor.text -> text: pointer "'Text displayed and edited in this space'"
-Space|SpaceTextEditor.word_wrap -> use_word_wrap: boolean "'Wrap words if there is not enough horizontal space'"
-Space|SpaceTimeline.cache_cloth -> cache_cloth: boolean '"Show the active object\'s cloth point cache"'
-Space|SpaceTimeline.cache_particles -> cache_particles: boolean '"Show the active object\'s particle point cache"'
-Space|SpaceTimeline.cache_smoke -> cache_smoke: boolean '"Show the active object\'s smoke cache"'
-Space|SpaceTimeline.cache_softbody -> cache_softbody: boolean '"Show the active object\'s softbody point cache"'
-Space|SpaceTimeline.only_selected -> show_only_selected: boolean "'Show keyframes for active Object and/or its selected channels only'"
-Space|SpaceTimeline.play_all_3d -> use_play_3d_editors: boolean "'NO DESCRIPTION'"
-Space|SpaceTimeline.play_anim -> use_play_animation_editors: boolean "'NO DESCRIPTION'"
-Space|SpaceTimeline.play_buttons -> use_play_properties_editors: boolean "'NO DESCRIPTION'"
-Space|SpaceTimeline.play_image -> use_play_image_editors: boolean "'NO DESCRIPTION'"
-Space|SpaceTimeline.play_nodes -> use_play_node_editors: boolean "'NO DESCRIPTION'"
-Space|SpaceTimeline.play_sequencer -> use_play_sequence_editors: boolean "'NO DESCRIPTION'"
-Space|SpaceTimeline.play_top_left -> use_play_top_left_3d_editor: boolean "'NO DESCRIPTION'"
-Space|SpaceTimeline.show_cache -> show_cache: boolean "'Show the status of cached frames in the timeline'"
-Space|SpaceTimeline.show_cframe_indicator -> show_frame_indicator: boolean "'Show frame number beside the current frame indicator line'"
-Space|SpaceUserPreferences.filter -> filter: string "'Search term for filtering in the UI'"
-Space|SpaceView3D.all_object_origins -> show_all_objects_origin: boolean "'Show the object origin center dot for all (selected and unselected) objects'"
-Space|SpaceView3D.background_images -> background_images: collection, "'(read-only) List of background images'"
-Space|SpaceView3D.camera -> camera: pointer '"Active camera used in this view (when unlocked from the scene\'s active camera)"'
-Space|SpaceView3D.clip_end -> clip_end: float "'3D View far clipping distance'"
-Space|SpaceView3D.clip_start -> clip_start: float "'3D View near clipping distance'"
-Space|SpaceView3D.current_orientation -> current_orientation: pointer, "'(read-only) Current Transformation orientation'"
-Space|SpaceView3D.cursor_location -> cursor_location: float "'3D cursor location for this view (dependent on local view setting)'"
-Space|SpaceView3D.display_background_images -> show_background_images: boolean "'Display reference images behind objects in the 3D View'"
-Space|SpaceView3D.display_floor -> show_floor: boolean "'Show the ground plane grid in perspective view'"
-Space|SpaceView3D.display_render_override -> show_only_render: boolean "'Display only objects which will be rendered'"
-Space|SpaceView3D.display_x_axis -> show_axis_x: boolean "'Show the X axis line in perspective view'"
-Space|SpaceView3D.display_y_axis -> show_axis_y: boolean "'Show the Y axis line in perspective view'"
-Space|SpaceView3D.display_z_axis -> show_axis_z: boolean "'Show the Z axis line in perspective view'"
-Space|SpaceView3D.grid_lines -> grid_lines: int "'The number of grid lines to display in perspective view'"
-Space|SpaceView3D.grid_spacing -> grid_spacing: float "'The distance between 3D View grid lines'"
-Space|SpaceView3D.grid_subdivisions -> grid_subdivisions: int "'The number of subdivisions between grid lines'"
-Space|SpaceView3D.layers -> layers: boolean "'Layers visible in this 3D View'"
-Space|SpaceView3D.lens -> lens: float "'Lens angle (mm) in perspective view'"
-Space|SpaceView3D.local_view -> local_view: pointer, "'(read-only) Display an isolated sub-set of objects, apart from the scene visibility'"
-Space|SpaceView3D.lock_bone -> lock_bone: string '"3D View center is locked to this bone\'s position"'
-Space|SpaceView3D.lock_camera_and_layers -> lock_camera_and_layers: boolean '"Use the scene\'s active camera and layers in this view, rather than local layers"'
-Space|SpaceView3D.lock_object -> lock_object: pointer '"3D View center is locked to this object\'s position"'
-Space|SpaceView3D.manipulator -> use_manipulator: boolean "'Use a 3D manipulator widget for controlling transforms'"
-Space|SpaceView3D.manipulator_rotate -> use_manipulator_rotate: boolean "'Use the manipulator for rotation transformations'"
-Space|SpaceView3D.manipulator_scale -> use_manipulator_scale: boolean "'Use the manipulator for scale transformations'"
-Space|SpaceView3D.manipulator_translate -> use_manipulator_translate: boolean "'Use the manipulator for movement transformations'"
-Space|SpaceView3D.occlude_geometry -> use_occlude_geometry: boolean "'Limit selection to visible (clipped with depth buffer)'"
-Space|SpaceView3D.outline_selected -> show_outline_selected: boolean "'Show an outline highlight around selected objects in non-wireframe views'"
-Space|SpaceView3D.pivot_point -> pivot_point: enum "'Pivot center for rotation/scaling'"
-Space|SpaceView3D.pivot_point_align -> use_pivot_point_align: boolean "'Manipulate object centers only'"
-Space|SpaceView3D.region_3d -> region_3d: pointer, "'(read-only) 3D region in this space, in case of quad view the camera region'"
-Space|SpaceView3D.region_quadview -> region_quadview: pointer, "'(read-only) 3D region that defines the quad view settings'"
-Space|SpaceView3D.relationship_lines -> show_relationship_lines: boolean "'Show dashed lines indicating parent or constraint relationships'"
-Space|SpaceView3D.textured_solid -> show_textured_solid: boolean "'Display face-assigned textures in solid view'"
-Space|SpaceView3D.transform_orientation -> transform_orientation: enum "'Transformation orientation'"
-Space|SpaceView3D.used_layers -> layers_used: boolean, "'(read-only) Layers that contain something'"
-Space|SpaceView3D.viewport_shading -> viewport_shade: enum "'Method to display/shade objects in the 3D View'"
-Spline.bezier_points -> bezier_points: collection, "'(read-only) Collection of points for bezier curves only'"
-Spline.bezier_u -> use_bezier_u: boolean "'Make this nurbs curve or surface act like a bezier spline in the U direction (Order U must be 3 or 4, Cyclic U must be disabled)'"
-Spline.bezier_v -> use_bezier_v: boolean "'Make this nurbs surface act like a bezier spline in the V direction (Order V must be 3 or 4, Cyclic V must be disabled)'"
-Spline.character_index -> character_index: int, "'(read-only) Location of this character in the text data (only for text curves)'"
-Spline.cyclic_u -> use_cyclic_u: boolean "'Make this curve or surface a closed loop in the U direction'"
-Spline.cyclic_v -> use_cyclic_v: boolean "'Make this surface a closed loop in the V direction'"
-Spline.endpoint_u -> use_endpoint_u: boolean "'Make this nurbs curve or surface meet the endpoints in the U direction (Cyclic U must be disabled)'"
-Spline.endpoint_v -> use_endpoint_v: boolean "'Make this nurbs surface meet the endpoints in the V direction (Cyclic V must be disabled)'"
-Spline.hide -> hide: boolean "'Hide this curve in editmode'"
-Spline.material_index -> material_index: int "'NO DESCRIPTION'"
-Spline.order_u -> order_u: int "'Nurbs order in the U direction (For splines and surfaces), Higher values let points influence a greater area'"
-Spline.order_v -> order_v: int "'Nurbs order in the V direction (For surfaces only), Higher values let points influence a greater area'"
-Spline.point_count_u -> point_count_u: int, "'(read-only) Total number points for the curve or surface in the U direction'"
-Spline.point_count_v -> point_count_v: int, "'(read-only) Total number points for the surface on the V direction'"
-Spline.points -> points: collection, "'(read-only) Collection of points that make up this poly or nurbs spline'"
-Spline.radius_interpolation -> radius_interpolation: enum "'The type of radius interpolation for Bezier curves'"
-Spline.resolution_u -> resolution_u: int "'Curve or Surface subdivisions per segment'"
-Spline.resolution_v -> resolution_v: int "'Surface subdivisions per segment'"
-Spline.smooth -> use_smooth: boolean "'Smooth the normals of the surface or beveled curve'"
-Spline.tilt_interpolation -> tilt_interpolation: enum "'The type of tilt interpolation for 3D, Bezier curves'"
-Spline.type -> type: enum "'The interpolation type for this curve element'"
-SplinePoint.co -> co: float "'Point coordinates'"
-SplinePoint.hide -> hide: boolean "'Visibility status'"
-SplinePoint.radius -> radius: float, "'(read-only) Radius for bevelling'"
-SplinePoint.select -> select: boolean "'Selection status'"
-SplinePoint.tilt -> tilt: float "'Tilt in 3D View'"
-SplinePoint.weight -> weight: float "'Nurbs weight'"
-SplinePoint.weight_softbody -> weight_softbody: float "'Softbody goal weight'"
-Struct.base -> base: pointer, "'(read-only) Struct definition this is derived from'"
-Struct.description -> description: string, '"(read-only) Description of the Struct\'s purpose"'
-Struct.functions -> functions: collection, "'(read-only)'"
-Struct.identifier -> identifier: string, "'(read-only) Unique name used in the code and scripting'"
-Struct.name -> name: string, "'(read-only) Human readable name'"
-Struct.name_property -> name_property: pointer, "'(read-only) Property that gives the name of the struct'"
-Struct.nested -> nested: pointer, "'(read-only) Struct in which this struct is always nested, and to which it logically belongs'"
-Struct.properties -> properties: collection, "'(read-only) Properties in the struct'"
-TexMapping.has_maximum -> use_max: boolean "'Whether to use maximum clipping value'"
-TexMapping.has_minimum -> use_min: boolean "'Whether to use minimum clipping value'"
-TexMapping.location -> location: float "'NO DESCRIPTION'"
-TexMapping.maximum -> max: float "'Maximum value for clipping'"
-TexMapping.minimum -> min: float "'Minimum value for clipping'"
-TexMapping.rotation -> rotation: float "'NO DESCRIPTION'"
-TexMapping.scale -> scale: float "'NO DESCRIPTION'"
-TextBox.height -> height: float "'NO DESCRIPTION'"
-TextBox.width -> width: float "'NO DESCRIPTION'"
-TextBox.x -> x: float "'NO DESCRIPTION'"
-TextBox.y -> y: float "'NO DESCRIPTION'"
-TextCharacterFormat.bold -> use_bold: boolean "'NO DESCRIPTION'"
-TextCharacterFormat.italic -> use_italic: boolean "'NO DESCRIPTION'"
-TextCharacterFormat.underline -> use_underline: boolean "'NO DESCRIPTION'"
-TextCharacterFormat.use_small_caps -> use_small_caps: boolean "'NO DESCRIPTION'"
-TextLine.line -> line: string "'Text in the line'"
-TextMarker.color -> color: float "'Color to display the marker with'"
-TextMarker.edit_all -> use_edit_all: boolean, "'(read-only) Edit all markers of the same group as one'"
-TextMarker.end -> end: int, "'(read-only) Start position of the marker in the line'"
-TextMarker.group -> group: int, "'(read-only)'"
-TextMarker.line -> line: int, "'(read-only) Line in which the marker is located'"
-TextMarker.start -> start: int, "'(read-only) Start position of the marker in the line'"
-TextMarker.temporary -> is_temporary: boolean, "'(read-only) Marker is temporary'"
-TextureSlot.blend_type -> blend_type: enum "'NO DESCRIPTION'"
-TextureSlot.color -> color: float '"The default color for textures that don\'t return RGB"'
-TextureSlot.default_value -> default_value: float "'Value to use for Ref, Spec, Amb, Emit, Alpha, RayMir, TransLu and Hard'"
-TextureSlot.name -> name: string, "'(read-only) Texture slot name'"
-TextureSlot.negate -> invert: boolean "'Inverts the values of the texture to reverse its effect'"
-TextureSlot.offset -> offset: float "'Fine tunes texture mapping X, Y and Z locations'"
-TextureSlot.output_node -> output_node: enum "'Which output node to use, for node-based textures'"
-TextureSlot.rgb_to_intensity -> use_rgb_to_intensity: boolean "'Converts texture RGB values to intensity (gray) values'"
-TextureSlot.size -> size: float '"Sets scaling for the texture\'s X, Y and Z sizes"'
-TextureSlot.stencil -> use_stencil: boolean "'Use this texture as a blending value on the next texture'"
-TextureSlot.texture -> texture: pointer "'Texture datablock used by this texture slot'"
-+ * TextureSlot|BrushTextureSlot.angle -> angle: float "'Defines brush texture rotation'"
-+ * TextureSlot|BrushTextureSlot.map_mode -> map_mode: enum "'NO DESCRIPTION'"
-TextureSlot|LampTextureSlot.color_factor -> color_factor: float "'Amount texture affects color values'"
-TextureSlot|LampTextureSlot.map_color -> use_map_color: boolean "'Lets the texture affect the basic color of the lamp'"
-TextureSlot|LampTextureSlot.map_shadow -> use_map_shadow: boolean "'Lets the texture affect the shadow color of the lamp'"
-TextureSlot|LampTextureSlot.object -> object: pointer "'Object to use for mapping with Object texture coordinates'"
-TextureSlot|LampTextureSlot.shadow_factor -> shadow_factor: float "'Amount texture affects shadow'"
-TextureSlot|LampTextureSlot.texture_coordinates -> texture_coordinates: enum "'NO DESCRIPTION'"
-TextureSlot|MaterialTextureSlot.alpha_factor -> alpha_factor: float "'Amount texture affects alpha'"
-TextureSlot|MaterialTextureSlot.ambient_factor -> ambient_factor: float "'Amount texture affects ambient'"
-TextureSlot|MaterialTextureSlot.colordiff_factor -> colordiff_factor: float "'Amount texture affects diffuse color'"
-TextureSlot|MaterialTextureSlot.coloremission_factor -> coloremission_factor: float "'Amount texture affects emission color'"
-TextureSlot|MaterialTextureSlot.colorreflection_factor -> colorreflection_factor: float "'Amount texture affects color of out-scattered light'"
-TextureSlot|MaterialTextureSlot.colorspec_factor -> colorspec_factor: float "'Amount texture affects specular color'"
-TextureSlot|MaterialTextureSlot.colortransmission_factor -> colortransmission_factor: float "'Amount texture affects result color after light has been scattered/absorbed'"
-TextureSlot|MaterialTextureSlot.density_factor -> density_factor: float "'Amount texture affects density'"
-TextureSlot|MaterialTextureSlot.diffuse_factor -> diffuse_factor: float "'Amount texture affects diffuse reflectivity'"
-TextureSlot|MaterialTextureSlot.displacement_factor -> displacement_factor: float "'Amount texture displaces the surface'"
-TextureSlot|MaterialTextureSlot.emission_factor -> emission_factor: float "'Amount texture affects emission'"
-TextureSlot|MaterialTextureSlot.emit_factor -> emit_factor: float "'Amount texture affects emission'"
-TextureSlot|MaterialTextureSlot.enabled -> use: boolean "'Enable this material texture slot'"
-TextureSlot|MaterialTextureSlot.from_dupli -> use_from_dupli: boolean '"Dupli\'s instanced from verts, faces or particles, inherit texture coordinate from their parent"'
-TextureSlot|MaterialTextureSlot.from_original -> use_from_original: boolean '"Dupli\'s derive their object coordinates from the original objects transformation"'
-TextureSlot|MaterialTextureSlot.hardness_factor -> hard_factor: float "'Amount texture affects hardness'"
-TextureSlot|MaterialTextureSlot.map_alpha -> use_map_alpha: boolean "'Causes the texture to affect the alpha value'"
-TextureSlot|MaterialTextureSlot.map_ambient -> use_map_ambient: boolean "'Causes the texture to affect the value of ambient'"
-TextureSlot|MaterialTextureSlot.map_colordiff -> use_map_colordiff: boolean "'Causes the texture to affect basic color of the material'"
-TextureSlot|MaterialTextureSlot.map_coloremission -> use_map_coloremission: boolean "'Causes the texture to affect the color of emission'"
-TextureSlot|MaterialTextureSlot.map_colorreflection -> use_map_colorreflection: boolean "'Causes the texture to affect the color of scattered light'"
-TextureSlot|MaterialTextureSlot.map_colorspec -> use_map_colorspec: boolean "'Causes the texture to affect the specularity color'"
-TextureSlot|MaterialTextureSlot.map_colortransmission -> use_map_colortransmission: boolean "'Causes the texture to affect the result color after other light has been scattered/absorbed'"
-TextureSlot|MaterialTextureSlot.map_density -> use_map_density: boolean '"Causes the texture to affect the volume\'s density"'
-TextureSlot|MaterialTextureSlot.map_diffuse -> use_map_diffuse: boolean "'Causes the texture to affect the value of the materials diffuse reflectivity'"
-TextureSlot|MaterialTextureSlot.map_displacement -> use_map_displacement: boolean "'Let the texture displace the surface'"
-TextureSlot|MaterialTextureSlot.map_emission -> use_map_emission: boolean '"Causes the texture to affect the volume\'s emission"'
-TextureSlot|MaterialTextureSlot.map_emit -> use_map_emit: boolean "'Causes the texture to affect the emit value'"
-TextureSlot|MaterialTextureSlot.map_hardness -> use_map_hardness: boolean "'Causes the texture to affect the hardness value'"
-TextureSlot|MaterialTextureSlot.map_mirror -> use_map_mirror: boolean "'Causes the texture to affect the mirror color'"
-TextureSlot|MaterialTextureSlot.map_normal -> use_map_normal: boolean "'Causes the texture to affect the rendered normal'"
-TextureSlot|MaterialTextureSlot.map_raymir -> use_map_raymir: boolean "'Causes the texture to affect the ray-mirror value'"
-TextureSlot|MaterialTextureSlot.map_reflection -> use_map_reflect: boolean '"Causes the texture to affect the reflected light\'s brightness"'
-TextureSlot|MaterialTextureSlot.map_scattering -> use_map_scatter: boolean '"Causes the texture to affect the volume\'s scattering"'
-TextureSlot|MaterialTextureSlot.map_specular -> use_map_specular: boolean "'Causes the texture to affect the value of specular reflectivity'"
-TextureSlot|MaterialTextureSlot.map_translucency -> use_map_translucency: boolean "'Causes the texture to affect the translucency value'"
-TextureSlot|MaterialTextureSlot.map_warp -> use_map_warp: boolean "'Let the texture warp texture coordinates of next channels'"
-TextureSlot|MaterialTextureSlot.mapping -> mapping: enum "'NO DESCRIPTION'"
-TextureSlot|MaterialTextureSlot.mirror_factor -> mirror_factor: float "'Amount texture affects mirror color'"
-TextureSlot|MaterialTextureSlot.new_bump -> use_new_bump: boolean "'Use new, corrected bump mapping code (backwards compatibility option)'"
-TextureSlot|MaterialTextureSlot.normal_factor -> normal_factor: float "'Amount texture affects normal values'"
-TextureSlot|MaterialTextureSlot.normal_map_space -> normal_map_space: enum "'NO DESCRIPTION'"
-TextureSlot|MaterialTextureSlot.object -> object: pointer "'Object to use for mapping with Object texture coordinates'"
-TextureSlot|MaterialTextureSlot.raymir_factor -> raymir_factor: float "'Amount texture affects ray mirror'"
-TextureSlot|MaterialTextureSlot.reflection_factor -> reflection_factor: float "'Amount texture affects brightness of out-scattered light'"
-TextureSlot|MaterialTextureSlot.scattering_factor -> scattering_factor: float "'Amount texture affects scattering'"
-TextureSlot|MaterialTextureSlot.specular_factor -> specular_factor: float "'Amount texture affects specular reflectivity'"
-TextureSlot|MaterialTextureSlot.texture_coordinates -> texture_coordinates: enum "'NO DESCRIPTION'"
-TextureSlot|MaterialTextureSlot.translucency_factor -> translucency_factor: float "'Amount texture affects translucency'"
-TextureSlot|MaterialTextureSlot.uv_layer -> uv_layer: string "'UV layer to use for mapping with UV texture coordinates'"
-TextureSlot|MaterialTextureSlot.warp_factor -> warp_factor: float "'Amount texture affects texture coordinates of next channels'"
-TextureSlot|MaterialTextureSlot.x_mapping -> x_mapping: enum "'NO DESCRIPTION'"
-TextureSlot|MaterialTextureSlot.y_mapping -> y_mapping: enum "'NO DESCRIPTION'"
-TextureSlot|MaterialTextureSlot.z_mapping -> z_mapping: enum "'NO DESCRIPTION'"
-TextureSlot|WorldTextureSlot.blend_factor -> blend_factor: float "'Amount texture affects color progression of the background'"
-TextureSlot|WorldTextureSlot.horizon_factor -> horizon_factor: float "'Amount texture affects color of the horizon'"
-TextureSlot|WorldTextureSlot.map_blend -> use_map_blend: boolean "'Affect the color progression of the background'"
-TextureSlot|WorldTextureSlot.map_horizon -> use_map_horizon: boolean "'Affect the color of the horizon'"
-TextureSlot|WorldTextureSlot.map_zenith_down -> use_map_zenith_down: boolean "'Affect the color of the zenith below'"
-TextureSlot|WorldTextureSlot.map_zenith_up -> use_map_zenith_up: boolean "'Affect the color of the zenith above'"
-TextureSlot|WorldTextureSlot.object -> object: pointer "'Object to use for mapping with Object texture coordinates'"
-TextureSlot|WorldTextureSlot.texture_coordinates -> texture_coordinates: enum "'Texture coordinates used to map the texture onto the background'"
-TextureSlot|WorldTextureSlot.zenith_down_factor -> zenith_down_factor: float "'Amount texture affects color of the zenith below'"
-TextureSlot|WorldTextureSlot.zenith_up_factor -> zenith_up_factor: float "'Amount texture affects color of the zenith above'"
-Theme.bone_color_sets -> bone_color_sets: collection, "'(read-only)'"
-Theme.console -> console: pointer, "'(read-only)'"
-Theme.dopesheet_editor -> dopesheet_editor: pointer, "'(read-only)'"
-Theme.file_browser -> file_browser: pointer, "'(read-only)'"
-Theme.graph_editor -> graph_editor: pointer, "'(read-only)'"
-Theme.image_editor -> image_editor: pointer, "'(read-only)'"
-Theme.info -> info: pointer, "'(read-only)'"
-Theme.logic_editor -> logic_editor: pointer, "'(read-only)'"
-Theme.name -> name: string "'Name of the theme'"
-Theme.nla_editor -> nla_editor: pointer, "'(read-only)'"
-Theme.node_editor -> node_editor: pointer, "'(read-only)'"
-Theme.outliner -> outliner: pointer, "'(read-only)'"
-Theme.properties -> properties: pointer, "'(read-only)'"
-Theme.sequence_editor -> sequence_editor: pointer, "'(read-only)'"
-Theme.text_editor -> text_editor: pointer, "'(read-only)'"
-Theme.theme_area -> theme_area: enum "'NO DESCRIPTION'"
-Theme.timeline -> timeline: pointer, "'(read-only)'"
-Theme.user_interface -> user_interface: pointer, "'(read-only)'"
-Theme.user_preferences -> user_preferences: pointer, "'(read-only)'"
-Theme.view_3d -> view_3d: pointer, "'(read-only)'"
-ThemeAudioWindow.back -> back: float "'NO DESCRIPTION'"
-ThemeAudioWindow.button -> button: float "'NO DESCRIPTION'"
-ThemeAudioWindow.button_text -> button_text: float "'NO DESCRIPTION'"
-ThemeAudioWindow.button_text_hi -> button_text_hi: float "'NO DESCRIPTION'"
-ThemeAudioWindow.button_title -> button_title: float "'NO DESCRIPTION'"
-ThemeAudioWindow.frame_current -> frame_current: float "'NO DESCRIPTION'"
-ThemeAudioWindow.grid -> grid: float "'NO DESCRIPTION'"
-ThemeAudioWindow.header -> header: float "'NO DESCRIPTION'"
-ThemeAudioWindow.header_text -> header_text: float "'NO DESCRIPTION'"
-ThemeAudioWindow.header_text_hi -> header_text_hi: float "'NO DESCRIPTION'"
-ThemeAudioWindow.text -> text: float "'NO DESCRIPTION'"
-ThemeAudioWindow.text_hi -> text_hi: float "'NO DESCRIPTION'"
-ThemeAudioWindow.title -> title: float "'NO DESCRIPTION'"
-ThemeAudioWindow.window_sliders -> window_sliders: float "'NO DESCRIPTION'"
-ThemeBoneColorSet.active -> active: float "'Color used for active bones'"
-ThemeBoneColorSet.colored_constraints -> show_colored_constraints: boolean "'Allow the use of colors indicating constraints/keyed status'"
-ThemeBoneColorSet.normal -> normal: float "'Color used for the surface of bones'"
-ThemeBoneColorSet.select -> select: float "'Color used for selected bones'"
-ThemeConsole.back -> back: float "'NO DESCRIPTION'"
-ThemeConsole.button -> button: float "'NO DESCRIPTION'"
-ThemeConsole.button_text -> button_text: float "'NO DESCRIPTION'"
-ThemeConsole.button_text_hi -> button_text_hi: float "'NO DESCRIPTION'"
-ThemeConsole.button_title -> button_title: float "'NO DESCRIPTION'"
-ThemeConsole.cursor -> cursor: float "'NO DESCRIPTION'"
-ThemeConsole.header -> header: float "'NO DESCRIPTION'"
-ThemeConsole.header_text -> header_text: float "'NO DESCRIPTION'"
-ThemeConsole.header_text_hi -> header_text_hi: float "'NO DESCRIPTION'"
-ThemeConsole.line_error -> line_error: float "'NO DESCRIPTION'"
-ThemeConsole.line_info -> line_info: float "'NO DESCRIPTION'"
-ThemeConsole.line_input -> line_input: float "'NO DESCRIPTION'"
-ThemeConsole.line_output -> line_output: float "'NO DESCRIPTION'"
-ThemeConsole.text -> text: float "'NO DESCRIPTION'"
-ThemeConsole.text_hi -> text_hi: float "'NO DESCRIPTION'"
-ThemeConsole.title -> title: float "'NO DESCRIPTION'"
-ThemeDopeSheet.active_channels_group -> active_channels_group: float "'NO DESCRIPTION'"
-ThemeDopeSheet.back -> back: float "'NO DESCRIPTION'"
-ThemeDopeSheet.button -> button: float "'NO DESCRIPTION'"
-ThemeDopeSheet.button_text -> button_text: float "'NO DESCRIPTION'"
-ThemeDopeSheet.button_text_hi -> button_text_hi: float "'NO DESCRIPTION'"
-ThemeDopeSheet.button_title -> button_title: float "'NO DESCRIPTION'"
-ThemeDopeSheet.channel_group -> channel_group: float "'NO DESCRIPTION'"
-ThemeDopeSheet.channels -> channels: float "'NO DESCRIPTION'"
-ThemeDopeSheet.channels_selected -> channels_selected: float "'NO DESCRIPTION'"
-ThemeDopeSheet.dopesheet_channel -> dopesheet_channel: float "'NO DESCRIPTION'"
-ThemeDopeSheet.dopesheet_subchannel -> dopesheet_subchannel: float "'NO DESCRIPTION'"
-ThemeDopeSheet.frame_current -> frame_current: float "'NO DESCRIPTION'"
-ThemeDopeSheet.grid -> grid: float "'NO DESCRIPTION'"
-ThemeDopeSheet.header -> header: float "'NO DESCRIPTION'"
-ThemeDopeSheet.header_text -> header_text: float "'NO DESCRIPTION'"
-ThemeDopeSheet.header_text_hi -> header_text_hi: float "'NO DESCRIPTION'"
-ThemeDopeSheet.list -> list: float "'NO DESCRIPTION'"
-ThemeDopeSheet.list_text -> list_text: float "'NO DESCRIPTION'"
-ThemeDopeSheet.list_text_hi -> list_text_hi: float "'NO DESCRIPTION'"
-ThemeDopeSheet.list_title -> list_title: float "'NO DESCRIPTION'"
-ThemeDopeSheet.long_key -> long_key: float "'NO DESCRIPTION'"
-ThemeDopeSheet.long_key_selected -> long_key_selected: float "'NO DESCRIPTION'"
-ThemeDopeSheet.text -> text: float "'NO DESCRIPTION'"
-ThemeDopeSheet.text_hi -> text_hi: float "'NO DESCRIPTION'"
-ThemeDopeSheet.title -> title: float "'NO DESCRIPTION'"
-ThemeDopeSheet.value_sliders -> value_sliders: float "'NO DESCRIPTION'"
-ThemeDopeSheet.view_sliders -> view_sliders: float "'NO DESCRIPTION'"
-ThemeFileBrowser.active_file -> active_file: float "'NO DESCRIPTION'"
-ThemeFileBrowser.active_file_text -> active_file_text: float "'NO DESCRIPTION'"
-ThemeFileBrowser.back -> back: float "'NO DESCRIPTION'"
-ThemeFileBrowser.button -> button: float "'NO DESCRIPTION'"
-ThemeFileBrowser.button_text -> button_text: float "'NO DESCRIPTION'"
-ThemeFileBrowser.button_text_hi -> button_text_hi: float "'NO DESCRIPTION'"
-ThemeFileBrowser.button_title -> button_title: float "'NO DESCRIPTION'"
-ThemeFileBrowser.header -> header: float "'NO DESCRIPTION'"
-ThemeFileBrowser.header_text -> header_text: float "'NO DESCRIPTION'"
-ThemeFileBrowser.header_text_hi -> header_text_hi: float "'NO DESCRIPTION'"
-ThemeFileBrowser.list -> list: float "'NO DESCRIPTION'"
-ThemeFileBrowser.list_text -> list_text: float "'NO DESCRIPTION'"
-ThemeFileBrowser.list_text_hi -> list_text_hi: float "'NO DESCRIPTION'"
-ThemeFileBrowser.list_title -> list_title: float "'NO DESCRIPTION'"
-ThemeFileBrowser.scroll_handle -> scroll_handle: float "'NO DESCRIPTION'"
-ThemeFileBrowser.scrollbar -> scrollbar: float "'NO DESCRIPTION'"
-ThemeFileBrowser.selected_file -> selected_file: float "'NO DESCRIPTION'"
-ThemeFileBrowser.text -> text: float "'NO DESCRIPTION'"
-ThemeFileBrowser.text_hi -> text_hi: float "'NO DESCRIPTION'"
-ThemeFileBrowser.tiles -> tiles: float "'NO DESCRIPTION'"
-ThemeFileBrowser.title -> title: float "'NO DESCRIPTION'"
-ThemeFontStyle.font_kerning_style -> font_kerning_style: enum "'Which style to use for font kerning'"
-ThemeFontStyle.points -> points: int "'NO DESCRIPTION'"
-ThemeFontStyle.shadow -> shadow: int "'Shadow size in pixels (0, 3 and 5 supported)'"
-ThemeFontStyle.shadowalpha -> shadowalpha: float "'NO DESCRIPTION'"
-ThemeFontStyle.shadowcolor -> shadowcolor: float "'Shadow color in grey value'"
-ThemeFontStyle.shadx -> shadow_offset_x: int "'Shadow offset in pixels'"
-ThemeFontStyle.shady -> shadow_offset_y: int "'Shadow offset in pixels'"
-ThemeGraphEditor.active_channels_group -> active_channels_group: float "'NO DESCRIPTION'"
-ThemeGraphEditor.back -> back: float "'NO DESCRIPTION'"
-ThemeGraphEditor.button -> button: float "'NO DESCRIPTION'"
-ThemeGraphEditor.button_text -> button_text: float "'NO DESCRIPTION'"
-ThemeGraphEditor.button_text_hi -> button_text_hi: float "'NO DESCRIPTION'"
-ThemeGraphEditor.button_title -> button_title: float "'NO DESCRIPTION'"
-ThemeGraphEditor.channel_group -> channel_group: float "'NO DESCRIPTION'"
-ThemeGraphEditor.channels_region -> channels_region: float "'NO DESCRIPTION'"
-ThemeGraphEditor.dopesheet_channel -> dopesheet_channel: float "'NO DESCRIPTION'"
-ThemeGraphEditor.dopesheet_subchannel -> dopesheet_subchannel: float "'NO DESCRIPTION'"
-ThemeGraphEditor.frame_current -> frame_current: float "'NO DESCRIPTION'"
-ThemeGraphEditor.grid -> grid: float "'NO DESCRIPTION'"
-ThemeGraphEditor.handle_align -> handle_align: float "'NO DESCRIPTION'"
-ThemeGraphEditor.handle_auto -> handle_auto: float "'NO DESCRIPTION'"
-ThemeGraphEditor.handle_free -> handle_free: float "'NO DESCRIPTION'"
-ThemeGraphEditor.handle_sel_align -> handle_sel_align: float "'NO DESCRIPTION'"
-ThemeGraphEditor.handle_sel_auto -> handle_sel_auto: float "'NO DESCRIPTION'"
-ThemeGraphEditor.handle_sel_free -> handle_sel_free: float "'NO DESCRIPTION'"
-ThemeGraphEditor.handle_sel_vect -> handle_sel_vect: float "'NO DESCRIPTION'"
-ThemeGraphEditor.handle_vect -> handle_vect: float "'NO DESCRIPTION'"
-ThemeGraphEditor.handle_vertex -> handle_vertex: float "'NO DESCRIPTION'"
-ThemeGraphEditor.handle_vertex_select -> handle_vertex_select: float "'NO DESCRIPTION'"
-ThemeGraphEditor.handle_vertex_size -> handle_vertex_size: int "'NO DESCRIPTION'"
-ThemeGraphEditor.header -> header: float "'NO DESCRIPTION'"
-ThemeGraphEditor.header_text -> header_text: float "'NO DESCRIPTION'"
-ThemeGraphEditor.header_text_hi -> header_text_hi: float "'NO DESCRIPTION'"
-ThemeGraphEditor.lastsel_point -> lastsel_point: float "'NO DESCRIPTION'"
-ThemeGraphEditor.list -> list: float "'NO DESCRIPTION'"
-ThemeGraphEditor.list_text -> list_text: float "'NO DESCRIPTION'"
-ThemeGraphEditor.list_text_hi -> list_text_hi: float "'NO DESCRIPTION'"
-ThemeGraphEditor.list_title -> list_title: float "'NO DESCRIPTION'"
-ThemeGraphEditor.panel -> panel: float "'NO DESCRIPTION'"
-ThemeGraphEditor.text -> text: float "'NO DESCRIPTION'"
-ThemeGraphEditor.text_hi -> text_hi: float "'NO DESCRIPTION'"
-ThemeGraphEditor.title -> title: float "'NO DESCRIPTION'"
-ThemeGraphEditor.vertex -> vertex: float "'NO DESCRIPTION'"
-ThemeGraphEditor.vertex_select -> vertex_select: float "'NO DESCRIPTION'"
-ThemeGraphEditor.vertex_size -> vertex_size: int "'NO DESCRIPTION'"
-ThemeGraphEditor.window_sliders -> window_sliders: float "'NO DESCRIPTION'"
-ThemeImageEditor.back -> back: float "'NO DESCRIPTION'"
-ThemeImageEditor.button -> button: float "'NO DESCRIPTION'"
-ThemeImageEditor.button_text -> button_text: float "'NO DESCRIPTION'"
-ThemeImageEditor.button_text_hi -> button_text_hi: float "'NO DESCRIPTION'"
-ThemeImageEditor.button_title -> button_title: float "'NO DESCRIPTION'"
-ThemeImageEditor.editmesh_active -> editmesh_active: float "'NO DESCRIPTION'"
-ThemeImageEditor.face -> face: float "'NO DESCRIPTION'"
-ThemeImageEditor.face_dot -> face_dot: float "'NO DESCRIPTION'"
-ThemeImageEditor.face_select -> face_select: float "'NO DESCRIPTION'"
-ThemeImageEditor.facedot_size -> facedot_size: int "'NO DESCRIPTION'"
-ThemeImageEditor.header -> header: float "'NO DESCRIPTION'"
-ThemeImageEditor.header_text -> header_text: float "'NO DESCRIPTION'"
-ThemeImageEditor.header_text_hi -> header_text_hi: float "'NO DESCRIPTION'"
-ThemeImageEditor.scope_back -> scope_back: float "'NO DESCRIPTION'"
-ThemeImageEditor.text -> text: float "'NO DESCRIPTION'"
-ThemeImageEditor.text_hi -> text_hi: float "'NO DESCRIPTION'"
-ThemeImageEditor.title -> title: float "'NO DESCRIPTION'"
-ThemeImageEditor.vertex -> vertex: float "'NO DESCRIPTION'"
-ThemeImageEditor.vertex_select -> vertex_select: float "'NO DESCRIPTION'"
-ThemeImageEditor.vertex_size -> vertex_size: int "'NO DESCRIPTION'"
-ThemeInfo.back -> back: float "'NO DESCRIPTION'"
-ThemeInfo.button -> button: float "'NO DESCRIPTION'"
-ThemeInfo.button_text -> button_text: float "'NO DESCRIPTION'"
-ThemeInfo.button_text_hi -> button_text_hi: float "'NO DESCRIPTION'"
-ThemeInfo.button_title -> button_title: float "'NO DESCRIPTION'"
-ThemeInfo.header -> header: float "'NO DESCRIPTION'"
-ThemeInfo.header_text -> header_text: float "'NO DESCRIPTION'"
-ThemeInfo.header_text_hi -> header_text_hi: float "'NO DESCRIPTION'"
-ThemeInfo.text -> text: float "'NO DESCRIPTION'"
-ThemeInfo.text_hi -> text_hi: float "'NO DESCRIPTION'"
-ThemeInfo.title -> title: float "'NO DESCRIPTION'"
-ThemeLogicEditor.back -> back: float "'NO DESCRIPTION'"
-ThemeLogicEditor.button -> button: float "'NO DESCRIPTION'"
-ThemeLogicEditor.button_text -> button_text: float "'NO DESCRIPTION'"
-ThemeLogicEditor.button_text_hi -> button_text_hi: float "'NO DESCRIPTION'"
-ThemeLogicEditor.button_title -> button_title: float "'NO DESCRIPTION'"
-ThemeLogicEditor.header -> header: float "'NO DESCRIPTION'"
-ThemeLogicEditor.header_text -> header_text: float "'NO DESCRIPTION'"
-ThemeLogicEditor.header_text_hi -> header_text_hi: float "'NO DESCRIPTION'"
-ThemeLogicEditor.panel -> panel: float "'NO DESCRIPTION'"
-ThemeLogicEditor.text -> text: float "'NO DESCRIPTION'"
-ThemeLogicEditor.text_hi -> text_hi: float "'NO DESCRIPTION'"
-ThemeLogicEditor.title -> title: float "'NO DESCRIPTION'"
-ThemeNLAEditor.back -> back: float "'NO DESCRIPTION'"
-ThemeNLAEditor.bars -> bars: float "'NO DESCRIPTION'"
-ThemeNLAEditor.bars_selected -> bars_selected: float "'NO DESCRIPTION'"
-ThemeNLAEditor.button -> button: float "'NO DESCRIPTION'"
-ThemeNLAEditor.button_text -> button_text: float "'NO DESCRIPTION'"
-ThemeNLAEditor.button_text_hi -> button_text_hi: float "'NO DESCRIPTION'"
-ThemeNLAEditor.button_title -> button_title: float "'NO DESCRIPTION'"
-ThemeNLAEditor.frame_current -> frame_current: float "'NO DESCRIPTION'"
-ThemeNLAEditor.grid -> grid: float "'NO DESCRIPTION'"
-ThemeNLAEditor.header -> header: float "'NO DESCRIPTION'"
-ThemeNLAEditor.header_text -> header_text: float "'NO DESCRIPTION'"
-ThemeNLAEditor.header_text_hi -> header_text_hi: float "'NO DESCRIPTION'"
-ThemeNLAEditor.list -> list: float "'NO DESCRIPTION'"
-ThemeNLAEditor.list_text -> list_text: float "'NO DESCRIPTION'"
-ThemeNLAEditor.list_text_hi -> list_text_hi: float "'NO DESCRIPTION'"
-ThemeNLAEditor.list_title -> list_title: float "'NO DESCRIPTION'"
-ThemeNLAEditor.strips -> strips: float "'NO DESCRIPTION'"
-ThemeNLAEditor.strips_selected -> strips_selected: float "'NO DESCRIPTION'"
-ThemeNLAEditor.text -> text: float "'NO DESCRIPTION'"
-ThemeNLAEditor.text_hi -> text_hi: float "'NO DESCRIPTION'"
-ThemeNLAEditor.title -> title: float "'NO DESCRIPTION'"
-ThemeNLAEditor.view_sliders -> view_sliders: float "'NO DESCRIPTION'"
-ThemeNodeEditor.back -> back: float "'NO DESCRIPTION'"
-ThemeNodeEditor.button -> button: float "'NO DESCRIPTION'"
-ThemeNodeEditor.button_text -> button_text: float "'NO DESCRIPTION'"
-ThemeNodeEditor.button_text_hi -> button_text_hi: float "'NO DESCRIPTION'"
-ThemeNodeEditor.button_title -> button_title: float "'NO DESCRIPTION'"
-ThemeNodeEditor.converter_node -> converter_node: float "'NO DESCRIPTION'"
-ThemeNodeEditor.group_node -> group_node: float "'NO DESCRIPTION'"
-ThemeNodeEditor.header -> header: float "'NO DESCRIPTION'"
-ThemeNodeEditor.header_text -> header_text: float "'NO DESCRIPTION'"
-ThemeNodeEditor.header_text_hi -> header_text_hi: float "'NO DESCRIPTION'"
-ThemeNodeEditor.in_out_node -> in_out_node: float "'NO DESCRIPTION'"
-ThemeNodeEditor.list -> list: float "'NO DESCRIPTION'"
-ThemeNodeEditor.list_text -> list_text: float "'NO DESCRIPTION'"
-ThemeNodeEditor.list_text_hi -> list_text_hi: float "'NO DESCRIPTION'"
-ThemeNodeEditor.list_title -> list_title: float "'NO DESCRIPTION'"
-ThemeNodeEditor.node_backdrop -> node_backdrop: float "'NO DESCRIPTION'"
-ThemeNodeEditor.operator_node -> operator_node: float "'NO DESCRIPTION'"
-ThemeNodeEditor.selected_text -> selected_text: float "'NO DESCRIPTION'"
-ThemeNodeEditor.text -> text: float "'NO DESCRIPTION'"
-ThemeNodeEditor.text_hi -> text_hi: float "'NO DESCRIPTION'"
-ThemeNodeEditor.title -> title: float "'NO DESCRIPTION'"
-ThemeNodeEditor.wire_select -> wire_select: float "'NO DESCRIPTION'"
-ThemeNodeEditor.wires -> wires: float "'NO DESCRIPTION'"
-ThemeOutliner.back -> back: float "'NO DESCRIPTION'"
-ThemeOutliner.button -> button: float "'NO DESCRIPTION'"
-ThemeOutliner.button_text -> button_text: float "'NO DESCRIPTION'"
-ThemeOutliner.button_text_hi -> button_text_hi: float "'NO DESCRIPTION'"
-ThemeOutliner.button_title -> button_title: float "'NO DESCRIPTION'"
-ThemeOutliner.header -> header: float "'NO DESCRIPTION'"
-ThemeOutliner.header_text -> header_text: float "'NO DESCRIPTION'"
-ThemeOutliner.header_text_hi -> header_text_hi: float "'NO DESCRIPTION'"
-ThemeOutliner.text -> text: float "'NO DESCRIPTION'"
-ThemeOutliner.text_hi -> text_hi: float "'NO DESCRIPTION'"
-ThemeOutliner.title -> title: float "'NO DESCRIPTION'"
-ThemeProperties.back -> back: float "'NO DESCRIPTION'"
-ThemeProperties.button -> button: float "'NO DESCRIPTION'"
-ThemeProperties.button_text -> button_text: float "'NO DESCRIPTION'"
-ThemeProperties.button_text_hi -> button_text_hi: float "'NO DESCRIPTION'"
-ThemeProperties.button_title -> button_title: float "'NO DESCRIPTION'"
-ThemeProperties.header -> header: float "'NO DESCRIPTION'"
-ThemeProperties.header_text -> header_text: float "'NO DESCRIPTION'"
-ThemeProperties.header_text_hi -> header_text_hi: float "'NO DESCRIPTION'"
-ThemeProperties.panel -> panel: float "'NO DESCRIPTION'"
-ThemeProperties.text -> text: float "'NO DESCRIPTION'"
-ThemeProperties.text_hi -> text_hi: float "'NO DESCRIPTION'"
-ThemeProperties.title -> title: float "'NO DESCRIPTION'"
-ThemeSequenceEditor.audio_strip -> audio_strip: float "'NO DESCRIPTION'"
-ThemeSequenceEditor.back -> back: float "'NO DESCRIPTION'"
-ThemeSequenceEditor.button -> button: float "'NO DESCRIPTION'"
-ThemeSequenceEditor.button_text -> button_text: float "'NO DESCRIPTION'"
-ThemeSequenceEditor.button_text_hi -> button_text_hi: float "'NO DESCRIPTION'"
-ThemeSequenceEditor.button_title -> button_title: float "'NO DESCRIPTION'"
-ThemeSequenceEditor.draw_action -> draw_action: float "'NO DESCRIPTION'"
-ThemeSequenceEditor.effect_strip -> effect_strip: float "'NO DESCRIPTION'"
-ThemeSequenceEditor.frame_current -> frame_current: float "'NO DESCRIPTION'"
-ThemeSequenceEditor.grid -> grid: float "'NO DESCRIPTION'"
-ThemeSequenceEditor.header -> header: float "'NO DESCRIPTION'"
-ThemeSequenceEditor.header_text -> header_text: float "'NO DESCRIPTION'"
-ThemeSequenceEditor.header_text_hi -> header_text_hi: float "'NO DESCRIPTION'"
-ThemeSequenceEditor.image_strip -> image_strip: float "'NO DESCRIPTION'"
-ThemeSequenceEditor.keyframe -> keyframe: float "'NO DESCRIPTION'"
-ThemeSequenceEditor.meta_strip -> meta_strip: float "'NO DESCRIPTION'"
-ThemeSequenceEditor.movie_strip -> movie_strip: float "'NO DESCRIPTION'"
-ThemeSequenceEditor.plugin_strip -> plugin_strip: float "'NO DESCRIPTION'"
-ThemeSequenceEditor.scene_strip -> scene_strip: float "'NO DESCRIPTION'"
-ThemeSequenceEditor.text -> text: float "'NO DESCRIPTION'"
-ThemeSequenceEditor.text_hi -> text_hi: float "'NO DESCRIPTION'"
-ThemeSequenceEditor.title -> title: float "'NO DESCRIPTION'"
-ThemeSequenceEditor.transition_strip -> transition_strip: float "'NO DESCRIPTION'"
-ThemeSequenceEditor.window_sliders -> window_sliders: float "'NO DESCRIPTION'"
-ThemeStyle.grouplabel -> grouplabel: pointer, "'(read-only)'"
-ThemeStyle.paneltitle -> paneltitle: pointer, "'(read-only)'"
-ThemeStyle.panelzoom -> panelzoom: float "'Default zoom level for panel areas'"
-ThemeStyle.widget -> widget: pointer, "'(read-only)'"
-ThemeStyle.widgetlabel -> widgetlabel: pointer, "'(read-only)'"
-ThemeTextEditor.back -> back: float "'NO DESCRIPTION'"
-ThemeTextEditor.button -> button: float "'NO DESCRIPTION'"
-ThemeTextEditor.button_text -> button_text: float "'NO DESCRIPTION'"
-ThemeTextEditor.button_text_hi -> button_text_hi: float "'NO DESCRIPTION'"
-ThemeTextEditor.button_title -> button_title: float "'NO DESCRIPTION'"
-ThemeTextEditor.cursor -> cursor: float "'NO DESCRIPTION'"
-ThemeTextEditor.header -> header: float "'NO DESCRIPTION'"
-ThemeTextEditor.header_text -> header_text: float "'NO DESCRIPTION'"
-ThemeTextEditor.header_text_hi -> header_text_hi: float "'NO DESCRIPTION'"
-ThemeTextEditor.line_numbers_background -> line_numbers_background: float "'NO DESCRIPTION'"
-ThemeTextEditor.scroll_bar -> scroll_bar: float "'NO DESCRIPTION'"
-ThemeTextEditor.selected_text -> selected_text: float "'NO DESCRIPTION'"
-ThemeTextEditor.syntax_builtin -> syntax_builtin: float "'NO DESCRIPTION'"
-ThemeTextEditor.syntax_comment -> syntax_comment: float "'NO DESCRIPTION'"
-ThemeTextEditor.syntax_numbers -> syntax_numbers: float "'NO DESCRIPTION'"
-ThemeTextEditor.syntax_special -> syntax_special: float "'NO DESCRIPTION'"
-ThemeTextEditor.syntax_string -> syntax_string: float "'NO DESCRIPTION'"
-ThemeTextEditor.text -> text: float "'NO DESCRIPTION'"
-ThemeTextEditor.text_hi -> text_hi: float "'NO DESCRIPTION'"
-ThemeTextEditor.title -> title: float "'NO DESCRIPTION'"
-ThemeTimeline.back -> back: float "'NO DESCRIPTION'"
-ThemeTimeline.button -> button: float "'NO DESCRIPTION'"
-ThemeTimeline.button_text -> button_text: float "'NO DESCRIPTION'"
-ThemeTimeline.button_text_hi -> button_text_hi: float "'NO DESCRIPTION'"
-ThemeTimeline.button_title -> button_title: float "'NO DESCRIPTION'"
-ThemeTimeline.frame_current -> frame_current: float "'NO DESCRIPTION'"
-ThemeTimeline.grid -> grid: float "'NO DESCRIPTION'"
-ThemeTimeline.header -> header: float "'NO DESCRIPTION'"
-ThemeTimeline.header_text -> header_text: float "'NO DESCRIPTION'"
-ThemeTimeline.header_text_hi -> header_text_hi: float "'NO DESCRIPTION'"
-ThemeTimeline.text -> text: float "'NO DESCRIPTION'"
-ThemeTimeline.text_hi -> text_hi: float "'NO DESCRIPTION'"
-ThemeTimeline.title -> title: float "'NO DESCRIPTION'"
-ThemeUserInterface.icon_file -> icon_file: string "'NO DESCRIPTION'"
-ThemeUserInterface.wcol_box -> wcol_box: pointer, "'(read-only)'"
-ThemeUserInterface.wcol_list_item -> wcol_list_item: pointer, "'(read-only)'"
-ThemeUserInterface.wcol_menu -> wcol_menu: pointer, "'(read-only)'"
-ThemeUserInterface.wcol_menu_back -> wcol_menu_back: pointer, "'(read-only)'"
-ThemeUserInterface.wcol_menu_item -> wcol_menu_item: pointer, "'(read-only)'"
-ThemeUserInterface.wcol_num -> wcol_num: pointer, "'(read-only)'"
-ThemeUserInterface.wcol_numslider -> wcol_numslider: pointer, "'(read-only)'"
-ThemeUserInterface.wcol_option -> wcol_option: pointer, "'(read-only)'"
-ThemeUserInterface.wcol_progress -> wcol_progress: pointer, "'(read-only)'"
-ThemeUserInterface.wcol_pulldown -> wcol_pulldown: pointer, "'(read-only)'"
-ThemeUserInterface.wcol_radio -> wcol_radio: pointer, "'(read-only)'"
-ThemeUserInterface.wcol_regular -> wcol_regular: pointer, "'(read-only)'"
-ThemeUserInterface.wcol_scroll -> wcol_scroll: pointer, "'(read-only)'"
-ThemeUserInterface.wcol_state -> wcol_state: pointer, "'(read-only)'"
-ThemeUserInterface.wcol_text -> wcol_text: pointer, "'(read-only)'"
-ThemeUserInterface.wcol_toggle -> wcol_toggle: pointer, "'(read-only)'"
-ThemeUserInterface.wcol_tool -> wcol_tool: pointer, "'(read-only)'"
-ThemeUserPreferences.back -> back: float "'NO DESCRIPTION'"
-ThemeUserPreferences.button -> button: float "'NO DESCRIPTION'"
-ThemeUserPreferences.button_text -> button_text: float "'NO DESCRIPTION'"
-ThemeUserPreferences.button_text_hi -> button_text_hi: float "'NO DESCRIPTION'"
-ThemeUserPreferences.button_title -> button_title: float "'NO DESCRIPTION'"
-ThemeUserPreferences.header -> header: float "'NO DESCRIPTION'"
-ThemeUserPreferences.header_text -> header_text: float "'NO DESCRIPTION'"
-ThemeUserPreferences.header_text_hi -> header_text_hi: float "'NO DESCRIPTION'"
-ThemeUserPreferences.text -> text: float "'NO DESCRIPTION'"
-ThemeUserPreferences.text_hi -> text_hi: float "'NO DESCRIPTION'"
-ThemeUserPreferences.title -> title: float "'NO DESCRIPTION'"
-ThemeView3D.act_spline -> act_spline: float "'NO DESCRIPTION'"
-ThemeView3D.back -> back: float "'NO DESCRIPTION'"
-ThemeView3D.bone_pose -> bone_pose: float "'NO DESCRIPTION'"
-ThemeView3D.bone_solid -> bone_solid: float "'NO DESCRIPTION'"
-ThemeView3D.button -> button: float "'NO DESCRIPTION'"
-ThemeView3D.button_text -> button_text: float "'NO DESCRIPTION'"
-ThemeView3D.button_text_hi -> button_text_hi: float "'NO DESCRIPTION'"
-ThemeView3D.button_title -> button_title: float "'NO DESCRIPTION'"
-ThemeView3D.edge_crease -> edge_crease: float "'NO DESCRIPTION'"
-ThemeView3D.edge_facesel -> edge_facesel: float "'NO DESCRIPTION'"
-ThemeView3D.edge_seam -> edge_seam: float "'NO DESCRIPTION'"
-ThemeView3D.edge_select -> edge_select: float "'NO DESCRIPTION'"
-ThemeView3D.edge_sharp -> edge_sharp: float "'NO DESCRIPTION'"
-ThemeView3D.editmesh_active -> editmesh_active: float "'NO DESCRIPTION'"
-ThemeView3D.face -> face: float "'NO DESCRIPTION'"
-ThemeView3D.face_dot -> face_dot: float "'NO DESCRIPTION'"
-ThemeView3D.face_select -> face_select: float "'NO DESCRIPTION'"
-ThemeView3D.facedot_size -> facedot_size: int "'NO DESCRIPTION'"
-ThemeView3D.frame_current -> frame_current: float "'NO DESCRIPTION'"
-ThemeView3D.grid -> grid: float "'NO DESCRIPTION'"
-ThemeView3D.handle_align -> handle_align: float "'NO DESCRIPTION'"
-ThemeView3D.handle_auto -> handle_auto: float "'NO DESCRIPTION'"
-ThemeView3D.handle_free -> handle_free: float "'NO DESCRIPTION'"
-ThemeView3D.handle_sel_align -> handle_sel_align: float "'NO DESCRIPTION'"
-ThemeView3D.handle_sel_auto -> handle_sel_auto: float "'NO DESCRIPTION'"
-ThemeView3D.handle_sel_free -> handle_sel_free: float "'NO DESCRIPTION'"
-ThemeView3D.handle_sel_vect -> handle_sel_vect: float "'NO DESCRIPTION'"
-ThemeView3D.handle_vect -> handle_vect: float "'NO DESCRIPTION'"
-ThemeView3D.header -> header: float "'NO DESCRIPTION'"
-ThemeView3D.header_text -> header_text: float "'NO DESCRIPTION'"
-ThemeView3D.header_text_hi -> header_text_hi: float "'NO DESCRIPTION'"
-ThemeView3D.lamp -> lamp: float "'NO DESCRIPTION'"
-ThemeView3D.lastsel_point -> lastsel_point: float "'NO DESCRIPTION'"
-ThemeView3D.normal -> normal: float "'NO DESCRIPTION'"
-ThemeView3D.nurb_sel_uline -> nurb_sel_uline: float "'NO DESCRIPTION'"
-ThemeView3D.nurb_sel_vline -> nurb_sel_vline: float "'NO DESCRIPTION'"
-ThemeView3D.nurb_uline -> nurb_uline: float "'NO DESCRIPTION'"
-ThemeView3D.nurb_vline -> nurb_vline: float "'NO DESCRIPTION'"
-ThemeView3D.object_active -> object_active: float "'NO DESCRIPTION'"
-ThemeView3D.object_grouped -> object_grouped: float "'NO DESCRIPTION'"
-ThemeView3D.object_grouped_active -> object_grouped_active: float "'NO DESCRIPTION'"
-ThemeView3D.object_selected -> object_selected: float "'NO DESCRIPTION'"
-ThemeView3D.panel -> panel: float "'NO DESCRIPTION'"
-ThemeView3D.text -> text: float "'NO DESCRIPTION'"
-ThemeView3D.text_hi -> text_hi: float "'NO DESCRIPTION'"
-ThemeView3D.title -> title: float "'NO DESCRIPTION'"
-ThemeView3D.transform -> transform: float "'NO DESCRIPTION'"
-ThemeView3D.vertex -> vertex: float "'NO DESCRIPTION'"
-ThemeView3D.vertex_normal -> vertex_normal: float "'NO DESCRIPTION'"
-ThemeView3D.vertex_select -> vertex_select: float "'NO DESCRIPTION'"
-ThemeView3D.vertex_size -> vertex_size: int "'NO DESCRIPTION'"
-ThemeView3D.wire -> wire: float "'NO DESCRIPTION'"
-ThemeWidgetColors.inner -> inner: float "'NO DESCRIPTION'"
-ThemeWidgetColors.inner_sel -> inner_sel: float "'NO DESCRIPTION'"
-ThemeWidgetColors.item -> item: float "'NO DESCRIPTION'"
-ThemeWidgetColors.outline -> outline: float "'NO DESCRIPTION'"
-ThemeWidgetColors.shaded -> show_shaded: boolean "'NO DESCRIPTION'"
-ThemeWidgetColors.shadedown -> shadedown: int "'NO DESCRIPTION'"
-ThemeWidgetColors.shadetop -> shadetop: int "'NO DESCRIPTION'"
-ThemeWidgetColors.text -> text: float "'NO DESCRIPTION'"
-ThemeWidgetColors.text_sel -> text_sel: float "'NO DESCRIPTION'"
-ThemeWidgetStateColors.blend -> blend: float "'NO DESCRIPTION'"
-ThemeWidgetStateColors.inner_anim -> inner_anim: float "'NO DESCRIPTION'"
-ThemeWidgetStateColors.inner_anim_sel -> inner_anim_sel: float "'NO DESCRIPTION'"
-ThemeWidgetStateColors.inner_driven -> inner_driven: float "'NO DESCRIPTION'"
-ThemeWidgetStateColors.inner_driven_sel -> inner_driven_sel: float "'NO DESCRIPTION'"
-ThemeWidgetStateColors.inner_key -> inner_key: float "'NO DESCRIPTION'"
-ThemeWidgetStateColors.inner_key_sel -> inner_key_sel: float "'NO DESCRIPTION'"
-TimelineMarker.camera -> camera: pointer "'Camera this timeline sets to active'"
-TimelineMarker.frame -> frame: int "'The frame on which the timeline marker appears'"
-TimelineMarker.name -> name: string "'NO DESCRIPTION'"
-TimelineMarker.select -> select: boolean "'Marker selection state'"
-ToolSettings.auto_normalize -> use_auto_normalize: boolean "'Ensure all bone-deforming vertex groups add up to 1.0 while weight painting'"
-ToolSettings.autokey_mode -> autokey_mode: enum "'Mode of automatic keyframe insertion for Objects and Bones'"
-ToolSettings.automerge_editing -> use_automerge_editing: boolean "'Automatically merge vertices moved to the same location'"
-ToolSettings.bone_sketching -> use_bone_sketching: boolean "'DOC BROKEN'"
-ToolSettings.edge_path_mode -> edge_path_mode: enum "'The edge flag to tag when selecting the shortest path'"
-ToolSettings.etch_adaptive_limit -> etch_adaptive_limit: float "'Number of bones in the subdivided stroke'"
-ToolSettings.etch_autoname -> use_etch_autoname: boolean "'DOC BROKEN'"
-ToolSettings.etch_convert_mode -> etch_convert_mode: enum "'Method used to convert stroke to bones'"
-ToolSettings.etch_length_limit -> etch_length_limit: float "'Number of bones in the subdivided stroke'"
-ToolSettings.etch_number -> etch_number: string "'DOC BROKEN'"
-ToolSettings.etch_overdraw -> use_etch_overdraw: boolean "'DOC BROKEN'"
-ToolSettings.etch_quick -> use_etch_quick: boolean "'DOC BROKEN'"
-ToolSettings.etch_roll_mode -> etch_roll_mode: enum "'Method used to adjust the roll of bones when retargeting'"
-ToolSettings.etch_side -> etch_side: string "'DOC BROKEN'"
-ToolSettings.etch_subdivision_number -> etch_subdivision_number: int "'Number of bones in the subdivided stroke'"
-ToolSettings.etch_template -> etch_template: pointer "'Template armature that will be retargeted to the stroke'"
-ToolSettings.image_paint -> image_paint: pointer, "'(read-only)'"
-ToolSettings.mesh_selection_mode -> mesh_selection_mode: boolean "'Which mesh elements selection works on'"
-ToolSettings.normal_size -> normal_size: float "'Display size for normals in the 3D view'"
-ToolSettings.particle_edit -> particle_edit: pointer, "'(read-only)'"
-ToolSettings.proportional_editing -> proportional_edit: enum "'Proportional editing mode'"
-ToolSettings.proportional_editing_falloff -> proportional_edit_falloff: enum "'Falloff type for proportional editing mode'"
-ToolSettings.proportional_editing_objects -> proportional_editing_objects: boolean "'Proportional editing object mode'"
-ToolSettings.record_with_nla -> use_record_with_nla: boolean "'Add a new NLA Track + Strip for every loop/pass made over the animation to allow non-destructive tweaking'"
-ToolSettings.sculpt -> sculpt: pointer, "'(read-only)'"
-ToolSettings.sculpt_paint_use_unified_size -> sculpt_paint_use_unified_size: boolean "'Instead of per brush radius, the radius is shared across brushes'"
-ToolSettings.sculpt_paint_use_unified_strength -> sculpt_paint_use_unified_strength: boolean "'Instead of per brush strength, the strength is shared across brushes'"
-ToolSettings.snap -> use_snap: boolean "'Snap during transform'"
-ToolSettings.snap_align_rotation -> use_snap_align_rotation: boolean "'Align rotation with the snapping target'"
-ToolSettings.snap_element -> snap_element: enum "'Type of element to snap to'"
-ToolSettings.snap_peel_object -> use_snap_peel_object: boolean "'Consider objects as whole when finding volume center'"
-ToolSettings.snap_project -> use_snap_project: boolean "'Project vertices on the surface of other objects'"
-ToolSettings.snap_target -> snap_target: enum "'Which part to snap onto the target'"
-ToolSettings.use_auto_keying -> use_keyframe_insert_auto: boolean "'Automatic keyframe insertion for Objects and Bones'"
-ToolSettings.uv_local_view -> show_local_view: boolean "'Draw only faces with the currently displayed image assigned'"
-ToolSettings.uv_selection_mode -> uv_selection_mode: enum "'UV selection and display mode'"
-ToolSettings.uv_sync_selection -> use_uv_sync_selection: boolean "'Keep UV and edit mode mesh selection in sync'"
-ToolSettings.vertex_group_weight -> vertex_group_weight: float "'Weight to assign in vertex groups'"
-ToolSettings.vertex_paint -> vertex_paint: pointer, "'(read-only)'"
-ToolSettings.weight_paint -> weight_paint: pointer, "'(read-only)'"
-TransformOrientation.matrix -> matrix: float "'NO DESCRIPTION'"
-TransformOrientation.name -> name: string "'NO DESCRIPTION'"
-UILayout.active -> show_active: boolean "'NO DESCRIPTION'"
-UILayout.alignment -> alignment: enum "'NO DESCRIPTION'"
-UILayout.enabled -> show_enabled: boolean "'NO DESCRIPTION'"
-UILayout.operator_context -> operator_context: enum "'NO DESCRIPTION'"
-UILayout.scale_x -> scale_x: float "'NO DESCRIPTION'"
-UILayout.scale_y -> scale_y: float "'NO DESCRIPTION'"
-UVProjector.object -> object: pointer "'Object to use as projector transform'"
-UnitSettings.rotation_units -> rotation_units: enum "'Unit to use for displaying/editing rotation values'"
-UnitSettings.scale_length -> scale_length: float "'Scale to use when converting between blender units and dimensions'"
-UnitSettings.system -> system: enum "'The unit system to use for button display'"
-UnitSettings.use_separate -> use_separate: boolean "'Display units in pairs'"
-UserPreferences.active_section -> active_section: enum "'Active section of the user preferences shown in the user interface'"
-UserPreferences.addons -> addons: collection, "'(read-only)'"
-UserPreferences.edit -> edit: pointer, "'(read-only) Settings for interacting with Blender data'"
-UserPreferences.filepaths -> filepaths: pointer, "'(read-only) Default paths for external files'"
-UserPreferences.inputs -> inputs: pointer, "'(read-only) Settings for input devices'"
-UserPreferences.system -> system: pointer, "'(read-only) Graphics driver and operating system settings'"
-UserPreferences.themes -> themes: collection, "'(read-only)'"
-UserPreferences.uistyles -> uistyles: collection, "'(read-only)'"
-UserPreferences.view -> view: pointer, "'(read-only) Preferences related to viewing data'"
-UserPreferencesEdit.auto_keyframe_insert_available -> use_keyframe_insert_available: boolean "'Automatic keyframe insertion in available curves'"
-UserPreferencesEdit.auto_keyframe_insert_keyingset -> use_keyframe_insert_keyingset: boolean "'Automatic keyframe insertion using active Keying Set'"
-UserPreferencesEdit.auto_keying_mode -> auto_keying_mode: enum "'Mode of automatic keyframe insertion for Objects and Bones'"
-UserPreferencesEdit.drag_immediately -> use_drag_immediately: boolean "'Moving things with a mouse drag confirms when releasing the button'"
-UserPreferencesEdit.duplicate_action -> use_duplicate_action: boolean "'Causes actions to be duplicated with the object'"
-UserPreferencesEdit.duplicate_armature -> use_duplicate_armature: boolean "'Causes armature data to be duplicated with the object'"
-UserPreferencesEdit.duplicate_curve -> use_duplicate_curve: boolean "'Causes curve data to be duplicated with the object'"
-UserPreferencesEdit.duplicate_fcurve -> use_duplicate_fcurve: boolean "'Causes F-curve data to be duplicated with the object'"
-UserPreferencesEdit.duplicate_lamp -> use_duplicate_lamp: boolean "'Causes lamp data to be duplicated with the object'"
-UserPreferencesEdit.duplicate_material -> use_duplicate_material: boolean "'Causes material data to be duplicated with the object'"
-UserPreferencesEdit.duplicate_mesh -> use_duplicate_mesh: boolean "'Causes mesh data to be duplicated with the object'"
-UserPreferencesEdit.duplicate_metaball -> use_duplicate_metaball: boolean "'Causes metaball data to be duplicated with the object'"
-UserPreferencesEdit.duplicate_particle -> use_duplicate_particle: boolean "'Causes particle systems to be duplicated with the object'"
-UserPreferencesEdit.duplicate_surface -> use_duplicate_surface: boolean "'Causes surface data to be duplicated with the object'"
-UserPreferencesEdit.duplicate_text -> use_duplicate_text: boolean "'Causes text data to be duplicated with the object'"
-UserPreferencesEdit.duplicate_texture -> use_duplicate_texture: boolean "'Causes texture data to be duplicated with the object'"
-UserPreferencesEdit.enter_edit_mode -> use_enter_edit_mode: boolean "'Enter Edit Mode automatically after adding a new object'"
-UserPreferencesEdit.global_undo -> use_global_undo: boolean "'Global undo works by keeping a full copy of the file itself in memory, so takes extra memory'"
-UserPreferencesEdit.grease_pencil_eraser_radius -> grease_pencil_eraser_radius: int '"Radius of eraser \'brush\'"'
-UserPreferencesEdit.grease_pencil_euclidean_distance -> grease_pencil_euclidean_distance: int "'Distance moved by mouse when drawing stroke (in pixels) to include'"
-UserPreferencesEdit.grease_pencil_manhattan_distance -> grease_pencil_manhattan_distance: int "'Pixels moved by mouse per axis when drawing stroke'"
-UserPreferencesEdit.grease_pencil_simplify_stroke -> use_grease_pencil_simplify_stroke: boolean "'Simplify the final stroke'"
-UserPreferencesEdit.grease_pencil_smooth_stroke -> use_grease_pencil_smooth_stroke: boolean "'Smooth the final stroke'"
-UserPreferencesEdit.insertkey_xyz_to_rgb -> use_insertkey_xyz_to_rgb: boolean "'Color for newly added transformation F-Curves (Location, Rotation, Scale) and also Color is based on the transform axis'"
-UserPreferencesEdit.keyframe_insert_needed -> use_keyframe_insert_needed: boolean "'Keyframe insertion only when keyframe needed'"
-UserPreferencesEdit.keyframe_new_handle_type -> keyframe_new_handle_type: enum "'NO DESCRIPTION'"
-UserPreferencesEdit.keyframe_new_interpolation_type -> keyframe_new_interpolation_type: enum "'NO DESCRIPTION'"
-UserPreferencesEdit.material_link -> material_link: enum "'Toggle whether the material is linked to object data or the object block'"
-UserPreferencesEdit.object_align -> object_align: enum '"When adding objects from a 3D View menu, either align them to that view\'s direction or the world coordinates"'
-UserPreferencesEdit.sculpt_paint_overlay_col -> sculpt_paint_overlay_col: float "'Color of texture overlay'"
-UserPreferencesEdit.undo_memory_limit -> undo_memory_limit: int "'Maximum memory usage in megabytes (0 means unlimited)'"
-UserPreferencesEdit.undo_steps -> undo_steps: int "'Number of undo steps available (smaller values conserve memory)'"
-UserPreferencesEdit.use_auto_keying -> use_auto_keying: boolean "'Automatic keyframe insertion for Objects and Bones'"
-UserPreferencesEdit.use_negative_frames -> use_negative_frames: boolean "'Current frame number can be manually set to a negative value'"
-UserPreferencesEdit.use_visual_keying -> use_visual_keying: boolean "'Use Visual keying automatically for constrained objects'"
-UserPreferencesFilePaths.animation_player -> animation_player: string "'Path to a custom animation/frame sequence player'"
-UserPreferencesFilePaths.animation_player_preset -> animation_player_preset: enum "'Preset configs for external animation players'"
-UserPreferencesFilePaths.auto_save_temporary_files -> use_auto_save_temporary_files: boolean "'Automatic saving of temporary files'"
-UserPreferencesFilePaths.auto_save_time -> auto_save_time: int "'The time (in minutes) to wait between automatic temporary saves'"
-UserPreferencesFilePaths.compress_file -> use_file_compression: boolean "'Enable file compression when saving .blend files'"
-UserPreferencesFilePaths.filter_file_extensions -> use_filter_files: boolean "'Display only files with extensions in the image select window'"
-UserPreferencesFilePaths.fonts_directory -> fonts_directory: string "'The default directory to search for loading fonts'"
-UserPreferencesFilePaths.hide_dot_files_datablocks -> show_hidden_files_datablocks: boolean "'Hide files/datablocks that start with a dot(.*)'"
-UserPreferencesFilePaths.image_editor -> image_editor: string "'Path to an image editor'"
-UserPreferencesFilePaths.load_ui -> use_load_ui: boolean "'Load user interface setup when loading .blend files'"
-UserPreferencesFilePaths.python_scripts_directory -> python_scripts_directory: string "'The default directory to search for Python scripts (resets python module search path: sys.path)'"
-UserPreferencesFilePaths.recent_files -> recent_files: int "'Maximum number of recently opened files to remember'"
-UserPreferencesFilePaths.render_output_directory -> render_output_directory: string "'The default directory for rendering output'"
-UserPreferencesFilePaths.save_preview_images -> use_save_preview_images: boolean "'Enables automatic saving of preview images in the .blend file'"
-UserPreferencesFilePaths.save_version -> save_version: int "'The number of old versions to maintain in the current directory, when manually saving'"
-UserPreferencesFilePaths.sequence_plugin_directory -> sequence_plugin_directory: string "'The default directory to search for sequence plugins'"
-UserPreferencesFilePaths.sounds_directory -> sounds_directory: string "'The default directory to search for sounds'"
-UserPreferencesFilePaths.temporary_directory -> temporary_directory: string "'The directory for storing temporary save files'"
-UserPreferencesFilePaths.texture_plugin_directory -> texture_plugin_directory: string "'The default directory to search for texture plugins'"
-UserPreferencesFilePaths.textures_directory -> textures_directory: string "'The default directory to search for textures'"
-UserPreferencesFilePaths.use_relative_paths -> use_relative_paths: boolean "'Default relative path option for the file selector'"
-UserPreferencesInput.continuous_mouse -> use_continuous_mouse: boolean "'Allow moving the mouse outside the view on some manipulations (transform, ui control drag)'"
-UserPreferencesInput.double_click_time -> double_click_time: int "'The time (in ms) for a double click'"
-UserPreferencesInput.edited_keymaps -> edited_keymaps: collection, "'(read-only)'"
-UserPreferencesInput.emulate_3_button_mouse -> use_emulate_3_button_mouse: boolean '"Emulates Middle Mouse with Alt+LeftMouse (doesn\'t work with Left Mouse Select option)"'
-UserPreferencesInput.emulate_numpad -> use_emulate_numpad: boolean "'Causes the 1 to 0 keys to act as the numpad (useful for laptops)'"
-UserPreferencesInput.invert_zoom_direction -> invert_mouse_wheel_zoom: boolean "'Invert the axis of mouse movement for zooming'"
-UserPreferencesInput.ndof_pan_speed -> ndof_pan_speed: int "'The overall panning speed of an NDOF device, as percent of standard'"
-UserPreferencesInput.ndof_rotate_speed -> ndof_rotate_speed: int "'The overall rotation speed of an NDOF device, as percent of standard'"
-UserPreferencesInput.select_mouse -> select_mouse: enum "'The mouse button used for selection'"
-UserPreferencesInput.use_middle_mouse_paste -> use_mouse_mmb_paste: boolean "'In text window, paste with middle mouse button instead of panning'"
-UserPreferencesInput.view_rotation -> view_rotation: enum "'Rotation style in the viewport'"
-UserPreferencesInput.wheel_invert_zoom -> wheel_invert_zoom: boolean "'Swap the Mouse Wheel zoom direction'"
-UserPreferencesInput.wheel_scroll_lines -> wheel_scroll_lines: int "'The number of lines scrolled at a time with the mouse wheel'"
-UserPreferencesInput.zoom_axis -> zoom_axis: enum "'Axis of mouse movement to zoom in or out on'"
-UserPreferencesInput.zoom_style -> zoom_style: enum "'Which style to use for viewport scaling'"
-UserPreferencesSystem.audio_channels -> audio_channels: enum "'Sets the audio channel count'"
-UserPreferencesSystem.audio_device -> audio_device: enum "'Sets the audio output device'"
-UserPreferencesSystem.audio_mixing_buffer -> audio_mixing_buffer: enum "'Sets the number of samples used by the audio mixing buffer'"
-UserPreferencesSystem.audio_sample_format -> audio_sample_format: enum "'Sets the audio sample format'"
-UserPreferencesSystem.audio_sample_rate -> audio_sample_rate: enum "'Sets the audio sample rate'"
-UserPreferencesSystem.auto_execute_scripts -> use_scripts_auto_execute: boolean "'Allow any .blend file to run scripts automatically (unsafe with blend files from an untrusted source)'"
-UserPreferencesSystem.clip_alpha -> clip_alpha: float "'Clip alpha below this threshold in the 3D textured view'"
-UserPreferencesSystem.color_picker_type -> color_picker_type: enum "'Different styles of displaying the color picker widget'"
-UserPreferencesSystem.dpi -> dpi: int "'Font size and resolution for display'"
-UserPreferencesSystem.enable_all_codecs -> use_preview_images: boolean "'Enables automatic saving of preview images in the .blend file (Windows only)'"
-UserPreferencesSystem.frame_server_port -> frame_server_port: int "'Frameserver Port for Frameserver Rendering'"
-UserPreferencesSystem.gl_texture_limit -> gl_texture_limit: enum "'Limit the texture size to save graphics memory'"
-UserPreferencesSystem.international_fonts -> use_international_fonts: boolean "'Use international fonts'"
-UserPreferencesSystem.language -> language: enum "'Language use for translation'"
-UserPreferencesSystem.memory_cache_limit -> memory_cache_limit: int "'Memory cache limit in sequencer (megabytes)'"
-UserPreferencesSystem.prefetch_frames -> prefetch_frames: int "'Number of frames to render ahead during playback'"
-UserPreferencesSystem.screencast_fps -> screencast_fps: int "'Frame rate for the screencast to be played back'"
-UserPreferencesSystem.screencast_wait_time -> screencast_wait_time: int "'Time in milliseconds between each frame recorded for screencast'"
-UserPreferencesSystem.scrollback -> scrollback: int "'Maximum number of lines to store for the console buffer'"
-UserPreferencesSystem.solid_lights -> solid_lights: collection, "'(read-only) Lights user to display objects in solid draw mode'"
-UserPreferencesSystem.tabs_as_spaces -> use_tabs_as_spaces: boolean "'Automatically converts all new tabs into spaces for new and loaded text files'"
-UserPreferencesSystem.texture_collection_rate -> texture_collection_rate: int "'Number of seconds between each run of the GL texture garbage collector'"
-UserPreferencesSystem.texture_time_out -> texture_time_out: int "'Time since last access of a GL texture in seconds after which it is freed. (Set to 0 to keep textures allocated.)'"
-UserPreferencesSystem.translate_buttons -> use_translate_buttons: boolean "'Translate button labels'"
-UserPreferencesSystem.translate_toolbox -> use_translate_toolbox: boolean "'Translate toolbox menu'"
-UserPreferencesSystem.translate_tooltips -> use_translate_tooltips: boolean "'Translate Tooltips'"
-UserPreferencesSystem.use_antialiasing -> use_antialiasing: boolean "'Use anti-aliasing for the 3D view (may impact redraw performance)'"
-UserPreferencesSystem.use_mipmaps -> use_mipmaps: boolean "'Scale textures for the 3D View (looks nicer but uses more memory and slows image reloading)'"
-UserPreferencesSystem.use_textured_fonts -> use_textured_fonts: boolean "'Use textures for drawing international fonts'"
-UserPreferencesSystem.use_vbos -> use_vertex_buffer_objects: boolean "'Use Vertex Buffer Objects (or Vertex Arrays, if unsupported) for viewport rendering'"
-UserPreferencesSystem.use_weight_color_range -> use_weight_color_range: boolean "'Enable color range used for weight visualization in weight painting mode'"
-UserPreferencesSystem.weight_color_range -> weight_color_range: pointer, "'(read-only) Color range used for weight visualization in weight painting mode'"
-UserPreferencesSystem.window_draw_method -> window_draw_method: enum "'Drawing method used by the window manager'"
-UserPreferencesView.auto_depth -> use_mouse_auto_depth: boolean "'Use the depth under the mouse to improve view pan/rotate/zoom functionality'"
-UserPreferencesView.auto_perspective -> use_auto_perspective: boolean "'Automatically switch between orthographic and perspective when changing from top/front/side views'"
-UserPreferencesView.directional_menus -> use_directional_menus: boolean "'Otherwise menus, etc will always be top to bottom, left to right, no matter opening direction'"
-UserPreferencesView.display_object_info -> show_object_info: boolean "'Display objects name and frame number in 3D view'"
-UserPreferencesView.global_pivot -> use_global_pivot: boolean "'Lock the same rotation/scaling pivot in all 3D Views'"
-UserPreferencesView.global_scene -> use_global_scene: boolean "'Forces the current Scene to be displayed in all Screens'"
-UserPreferencesView.manipulator_handle_size -> manipulator_handle_size: int "'Size of widget handles as percentage of widget radius'"
-UserPreferencesView.manipulator_hotspot -> manipulator_hotspot: int "'Hotspot in pixels for clicking widget handles'"
-UserPreferencesView.manipulator_size -> manipulator_size: int "'Diameter of widget, in 10 pixel units'"
-UserPreferencesView.mini_axis_brightness -> mini_axis_brightness: int "'The brightness of the icon'"
-UserPreferencesView.mini_axis_size -> mini_axis_size: int '"The axis icon\'s size"'
-UserPreferencesView.object_origin_size -> object_origin_size: int "'Diameter in Pixels for Object/Lamp origin display'"
-UserPreferencesView.open_left_mouse_delay -> open_left_mouse_delay: int "'Time in 1/10 seconds to hold the Left Mouse Button before opening the toolbox'"
-UserPreferencesView.open_mouse_over -> use_mouse_over_open: boolean "'Open menu buttons and pulldowns automatically when the mouse is hovering'"
-UserPreferencesView.open_right_mouse_delay -> open_right_mouse_delay: int "'Time in 1/10 seconds to hold the Right Mouse Button before opening the toolbox'"
-UserPreferencesView.open_sublevel_delay -> open_sublevel_delay: int "'Time delay in 1/10 seconds before automatically opening sub level menus'"
-UserPreferencesView.open_toplevel_delay -> open_toplevel_delay: int "'Time delay in 1/10 seconds before automatically opening top level menus'"
-UserPreferencesView.rotate_around_selection -> use_rotate_around_selection: boolean "'Use selection as the pivot point'"
-UserPreferencesView.rotation_angle -> rotation_angle: int "'The rotation step for numerical pad keys (2 4 6 8)'"
-UserPreferencesView.show_mini_axis -> show_mini_axis: boolean "'Show a small rotating 3D axis in the bottom left corner of the 3D View'"
-UserPreferencesView.show_playback_fps -> show_playback_fps: boolean "'Show the frames per second screen refresh rate, while animation is played back'"
-UserPreferencesView.show_splash -> show_splash: boolean "'Display splash screen on startup'"
-UserPreferencesView.show_view_name -> show_view_name: boolean '"Show the name of the view\'s direction in each 3D View"'
-UserPreferencesView.smooth_view -> smooth_view: int "'The time to animate the view in milliseconds, zero to disable'"
-UserPreferencesView.timecode_style -> timecode_style: enum "'Format of Time Codes displayed when not displaying timing in terms of frames'"
-UserPreferencesView.tooltips -> show_tooltips: boolean "'Display tooltips'"
-UserPreferencesView.use_column_layout -> show_column_layout: boolean "'Use a column layout for toolbox'"
-UserPreferencesView.use_large_cursors -> show_large_cursors: boolean "'Use large mouse cursors when available'"
-UserPreferencesView.use_manipulator -> show_manipulator: boolean "'Use 3D transform manipulator'"
-UserPreferencesView.view2d_grid_minimum_spacing -> view2d_grid_spacing_min: int "'Minimum number of pixels between each gridline in 2D Viewports'"
-UserPreferencesView.zoom_to_mouse -> use_zoom_to_mouse: boolean '"Zoom in towards the mouse pointer\'s position in the 3D view, rather than the 2D window center"'
-UserSolidLight.diffuse_color -> diffuse_color: float "'The diffuse color of the OpenGL light'"
-UserSolidLight.direction -> direction: float "'The direction that the OpenGL light is shining'"
-UserSolidLight.enabled -> use: boolean "'Enable this OpenGL light in solid draw mode'"
-UserSolidLight.specular_color -> specular_color: float "'The color of the lights specular highlight'"
-ValueNodeSocket.default_value -> default_value: float "'Default value of the socket when no link is attached'"
-ValueNodeSocket.name -> name: string, "'(read-only) Socket name'"
-VectorNodeSocket.default_value -> default_value: float "'Default value of the socket when no link is attached'"
-VectorNodeSocket.name -> name: string, "'(read-only) Socket name'"
-VertexGroup.index -> index: int, "'(read-only) Index number of the vertex group'"
-VertexGroup.name -> name: string "'Vertex group name'"
-VertexGroupElement.group -> group: int, "'(read-only)'"
-VertexGroupElement.weight -> weight: float "'Vertex Weight'"
-VoxelData.domain_object -> domain_object: pointer "'Object used as the smoke simulation domain'"
-VoxelData.extension -> extension: enum "'Sets how the texture is extrapolated past its original bounds'"
-VoxelData.file_format -> file_format: enum "'Format of the source data set to render'"
-VoxelData.intensity -> intensity: float "'Multiplier for intensity values'"
-VoxelData.interpolation -> interpolation: enum "'Method to interpolate/smooth values between voxel cells'"
-VoxelData.resolution -> resolution: int "'Resolution of the voxel grid'"
-VoxelData.smoke_data_type -> smoke_data_type: enum "'Simulation value to be used as a texture'"
-VoxelData.source_path -> source_path: string "'The external source data file to use'"
-VoxelData.still -> use_still_frame: boolean "'Always render a still frame from the voxel data sequence'"
-VoxelData.still_frame_number -> still_frame_number: int "'The frame number to always use'"
-Window.screen -> screen: pointer "'Active screen showing in the window'"
-WorldLighting.adapt_to_speed -> adapt_to_speed: float "'Use the speed vector pass to reduce AO samples in fast moving pixels. Higher values result in more aggressive sample reduction. Requires Vec pass enabled (for Raytrace Adaptive QMC)'"
-WorldLighting.ao_blend_mode -> ao_blend_type: enum "'Defines how AO mixes with material shading'"
-WorldLighting.ao_factor -> ao_factor: float "'Factor for ambient occlusion blending'"
-WorldLighting.bias -> bias: float "'Bias (in radians) to prevent smoothed faces from showing banding (for Raytrace Constant Jittered)'"
-WorldLighting.correction -> correction: float "'Ad-hoc correction for over-occlusion due to the approximation (for Approximate)'"
-WorldLighting.distance -> distance: float "'Length of rays, defines how far away other faces give occlusion effect'"
-WorldLighting.environment_color -> environment_color: enum "'Defines where the color of the environment light comes from'"
-WorldLighting.environment_energy -> environment_energy: float "'Defines the strength of environment light'"
-WorldLighting.error_tolerance -> error_tolerance: float "'Low values are slower and higher quality (for Approximate)'"
-WorldLighting.falloff -> use_falloff: boolean "'NO DESCRIPTION'"
-WorldLighting.falloff_strength -> falloff_strength: float '"Distance attenuation factor, the higher, the \'shorter\' the shadows"'
-WorldLighting.gather_method -> gather_method: enum "'NO DESCRIPTION'"
-WorldLighting.indirect_bounces -> indirect_bounces: int "'Number of indirect diffuse light bounces to use for approximate ambient occlusion'"
-WorldLighting.indirect_factor -> indirect_factor: float "'Factor for how much surrounding objects contribute to light'"
-WorldLighting.passes -> passes: int "'Number of preprocessing passes to reduce overocclusion (for approximate ambient occlusion)'"
-WorldLighting.pixel_cache -> use_cache: boolean "'Cache AO results in pixels and interpolate over neighbouring pixels for speedup (for Approximate)'"
-WorldLighting.sample_method -> sample_method: enum "'Method for generating shadow samples (for Raytrace)'"
-WorldLighting.samples -> samples: int "'Amount of ray samples. Higher values give smoother results and longer rendering times'"
-WorldLighting.threshold -> threshold: float "'Samples below this threshold will be considered fully shadowed/unshadowed and skipped (for Raytrace Adaptive QMC)'"
-WorldLighting.use_ambient_occlusion -> use_ambient_occlusian: boolean "'Use Ambient Occlusion to add shadowing based on distance between objects'"
-WorldLighting.use_environment_lighting -> use_environment_lighting: boolean "'Add light coming from the environment'"
-WorldLighting.use_indirect_lighting -> use_indirect_lighting: boolean "'Add indirect light bouncing of surrounding objects'"
-WorldMistSettings.depth -> depth: float "'The distance over which the mist effect fades in'"
-WorldMistSettings.falloff -> falloff: enum "'Type of transition used to fade mist'"
-WorldMistSettings.height -> height: float "'Control how much mist density decreases with height'"
-WorldMistSettings.intensity -> intensity: float "'Intensity of the mist effect'"
-WorldMistSettings.start -> start: float "'Starting distance of the mist, measured from the camera'"
-WorldMistSettings.use_mist -> use_mist: boolean "'Occlude objects with the environment color as they are further away'"
-WorldStarsSettings.average_separation -> average_separation: float "'Average distance between any two stars'"
-WorldStarsSettings.color_randomization -> color_randomization: float "'Randomize star colors'"
-WorldStarsSettings.min_distance -> distance_min: float "'Minimum distance to the camera for stars'"
-WorldStarsSettings.size -> size: float "'Average screen dimension of stars'"
-WorldStarsSettings.use_stars -> use_stars: boolean "'Enable starfield generation'"
+ NOTE * CLASS.FROM -> TO: TYPE "DESCRIPTION"
+#+ * ActionGroup.channels -> channels: collection, "(read-only) F-Curves in this group"
+#+ * ActionGroup.custom_color -> custom_color: int "Index of custom color set"
+#+ * ActionGroup.lock -> lock: boolean "Action Group is locked"
+#+ * ActionGroup.name -> name: string "NO DESCRIPTION"
+#+ * ActionGroup.select -> select: boolean "Action Group is selected"
+#ActionGroup.show_expanded -> show_expanded: boolean "Action Group is expanded"
+#+ * Actuator.name -> name: string "NO DESCRIPTION"
+#Actuator.pin -> pin: boolean "Display when not linked to a visible states controller"
+#Actuator.show_expanded -> show_expanded: boolean "Set actuator expanded in the user interface"
+#+ * Actuator.type -> type: enum "NO DESCRIPTION"
+#+ * Actuator|ActionActuator.action -> action: pointer "NO DESCRIPTION"
+#Actuator|ActionActuator.frame_blend_in -> frame_blend_in: int "Number of frames of motion blending"
+#+ * Actuator|ActionActuator.frame_end -> frame_end: int "NO DESCRIPTION"
+#+ * Actuator|ActionActuator.frame_property -> frame_property: string "Assign the actions current frame number to this property"
+#+ * Actuator|ActionActuator.frame_start -> frame_start: int "NO DESCRIPTION"
+#Actuator|ActionActuator.play_mode -> play_mode: enum "Action playback type"
+#+ * Actuator|ActionActuator.priority -> priority: int "Execution priority - lower numbers will override actions with higher numbers. With 2 or more actions at once, the overriding channels must be lower in the stack"
+#+ * Actuator|ActionActuator.property -> property: string "Use this property to define the Action position"
+#Actuator|ActionActuator.use_continue_last_frame -> use_continue_last_frame: boolean "Restore last frame when switching on/off, otherwise play from the start each time"
+#+ * Actuator|ArmatureActuator.bone -> bone: string "Bone on which the constraint is defined"
+#+ * Actuator|ArmatureActuator.constraint -> constraint: string "Name of the constraint you want to control"
+#+ * Actuator|ArmatureActuator.mode -> mode: enum "NO DESCRIPTION"
+#+ * Actuator|ArmatureActuator.secondary_target -> secondary_target: pointer "Set weight of this constraint"
+#+ * Actuator|ArmatureActuator.target -> target: pointer "Set this object as the target of the constraint"
+#+ * Actuator|ArmatureActuator.weight -> weight: float "Set weight of this constraint"
+#+ * Actuator|CameraActuator.axis -> axis: enum "Specify the axis the Camera will try to get behind"
+#+ * Actuator|CameraActuator.height -> height: float "NO DESCRIPTION"
+#+ * Actuator|CameraActuator.max -> max: float "NO DESCRIPTION"
+#+ * Actuator|CameraActuator.min -> min: float "NO DESCRIPTION"
+#+ * Actuator|CameraActuator.object -> object: pointer "Look at this Object"
+#Actuator|ConstraintActuator.angle_max -> angle_max: float "Maximum angle (in degree) allowed with target direction. No correction is done if angle with target direction is between min and max"
+#Actuator|ConstraintActuator.angle_min -> angle_min: float "Minimum angle (in degree) to maintain with target direction. No correction is done if angle with target direction is between min and max"
+#+ * Actuator|ConstraintActuator.damping -> damping: int "Damping factor: time constant (in frame) of low pass filter"
+#+ * Actuator|ConstraintActuator.damping_rotation -> damping_rotation: int "Use a different damping for orientation"
+#+ * Actuator|ConstraintActuator.direction -> direction: enum "Set the direction of the ray"
+#+ * Actuator|ConstraintActuator.direction_axis -> direction_axis: enum "Select the axis to be aligned along the reference direction"
+#+ * Actuator|ConstraintActuator.distance -> distance: float "Set the maximum length of ray"
+#+ * Actuator|ConstraintActuator.fh_damping -> fh_damping: float "Damping factor of the Fh spring force"
+#+ * Actuator|ConstraintActuator.fh_height -> fh_height: float "Height of the Fh area"
+#+ * Actuator|ConstraintActuator.limit -> limit: enum "NO DESCRIPTION"
+#+ * Actuator|ConstraintActuator.limit_max -> limit_max: float "NO DESCRIPTION"
+#+ * Actuator|ConstraintActuator.limit_min -> limit_min: float "NO DESCRIPTION"
+#+ * Actuator|ConstraintActuator.material -> material: string "Ray detects only Objects with this material"
+#+ * Actuator|ConstraintActuator.mode -> mode: enum "The type of the constraint"
+#+ * Actuator|ConstraintActuator.property -> property: string "Ray detect only Objects with this property"
+#+ * Actuator|ConstraintActuator.range -> range: float "Set the maximum length of ray"
+#Actuator|ConstraintActuator.rotation_max -> rotation_max: float[3] "Reference Direction"
+#+ * Actuator|ConstraintActuator.spring -> spring: float "Spring force within the Fh area"
+#+ * Actuator|ConstraintActuator.time -> time: int "Maximum activation time in frame, 0 for unlimited"
+#Actuator|ConstraintActuator.use_fh_normal -> use_fh_normal: boolean "Add a horizontal spring force on slopes"
+#Actuator|ConstraintActuator.use_fh_paralel_axis -> use_fh_paralel_axis: boolean "Keep object axis parallel to normal"
+#Actuator|ConstraintActuator.use_force_distance -> use_force_distance: boolean "Force distance of object to point of impact of ray"
+#Actuator|ConstraintActuator.use_local -> use_local: boolean "Set ray along objects axis or global axis"
+#Actuator|ConstraintActuator.use_material_detect -> use_material_detect: boolean "Detect material instead of property"
+#Actuator|ConstraintActuator.use_normal -> use_normal: boolean "Set object axis along (local axis) or parallel (global axis) to the normal at hit position"
+#Actuator|ConstraintActuator.use_persistent -> use_persistent: boolean "Persistent actuator: stays active even if ray does not reach target"
+#+ * Actuator|EditObjectActuator.angular_velocity -> angular_velocity: float[3] "Angular velocity upon creation"
+#+ * Actuator|EditObjectActuator.dynamic_operation -> dynamic_operation: enum "NO DESCRIPTION"
+#+ * Actuator|EditObjectActuator.linear_velocity -> linear_velocity: float[3] "Velocity upon creation"
+#+ * Actuator|EditObjectActuator.mass -> mass: float "The mass of the object"
+#+ * Actuator|EditObjectActuator.mesh -> mesh: pointer "Replace the existing, when left blank Phys will remake the existing physics mesh"
+#+ * Actuator|EditObjectActuator.mode -> mode: enum "The mode of the actuator"
+#+ * Actuator|EditObjectActuator.object -> object: pointer "Add this Object and all its children (cant be on an visible layer)"
+#+ * Actuator|EditObjectActuator.time -> time: int "Duration the new Object lives or the track takes"
+#+ * Actuator|EditObjectActuator.track_object -> track_object: pointer "Track to this Object"
+#Actuator|EditObjectActuator.use_3d_tracking -> use_3d_tracking: boolean "Enable 3D tracking"
+#Actuator|EditObjectActuator.use_local_angular_velocity -> use_local_angular_velocity: boolean "Apply the rotation locally"
+#Actuator|EditObjectActuator.use_local_linear_velocity -> use_local_linear_velocity: boolean "Apply the transformation locally"
+#Actuator|EditObjectActuator.use_replace_display_mesh -> use_replace_display_mesh: boolean "Replace the display mesh"
+#Actuator|EditObjectActuator.use_replace_physics_mesh -> use_replace_physics_mesh: boolean "Replace the physics mesh (triangle bounds only - compound shapes not supported)"
+#Actuator|FCurveActuator.apply_to_children -> apply_to_children: boolean "Update F-Curve on all children Objects as well"
+#Actuator|FCurveActuator.frame_end -> frame_end: int "NO DESCRIPTION"
+#Actuator|FCurveActuator.frame_property -> frame_property: string "Assign the actions current frame number to this property"
+#Actuator|FCurveActuator.frame_start -> frame_start: int "NO DESCRIPTION"
+#Actuator|FCurveActuator.play_type -> play_type: enum "Specify the way you want to play the animation"
+#Actuator|FCurveActuator.property -> property: string "Use this property to define the F-Curve position"
+#Actuator|FCurveActuator.use_additive -> use_additive: boolean "F-Curve is added to the current loc/rot/scale in global or local coordinate according to Local flag"
+#Actuator|FCurveActuator.use_force -> use_force: boolean "Apply F-Curve as a global or local force depending on the local option (dynamic objects only)"
+#Actuator|FCurveActuator.use_local -> use_local: boolean "Let the F-Curve act in local coordinates, used in Force and Add mode"
+#+ * Actuator|Filter2DActuator.filter_pass -> filter_pass: int "Set filter order"
+#+ * Actuator|Filter2DActuator.glsl_shader -> glsl_shader: pointer "NO DESCRIPTION"
+#+ * Actuator|Filter2DActuator.mode -> mode: enum "NO DESCRIPTION"
+#+ * Actuator|Filter2DActuator.motion_blur_factor -> motion_blur_factor: float "Set motion blur factor"
+#Actuator|Filter2DActuator.use_motion_blur -> use_motion_blur: boolean "Enable/Disable Motion Blur"
+#+ * Actuator|GameActuator.filename -> filename: string "Load this blend file, use the // prefix for a path relative to the current blend file"
+#+ * Actuator|GameActuator.mode -> mode: enum "NO DESCRIPTION"
+#+ * Actuator|MessageActuator.body_message -> body_message: string "Optional message body Text"
+#+ * Actuator|MessageActuator.body_property -> body_property: string "The message body will be set by the Property Value"
+#+ * Actuator|MessageActuator.body_type -> body_type: enum "Toggle message type: either Text or a PropertyName"
+#+ * Actuator|MessageActuator.subject -> subject: string "Optional message subject. This is what can be filtered on"
+#+ * Actuator|MessageActuator.to_property -> to_property: string "Optional send message to objects with this name only, or empty to broadcast"
+#+ * Actuator|ObjectActuator.angular_velocity -> angular_velocity: float[3] "Sets the angular velocity"
+#+ * Actuator|ObjectActuator.damping -> damping: int "Number of frames to reach the target velocity"
+#+ * Actuator|ObjectActuator.derivate_coefficient -> derivate_coefficient: float "Not required, high values can cause instability"
+#+ * Actuator|ObjectActuator.force -> force: float[3] "Sets the force"
+#+ * Actuator|ObjectActuator.force_max_x -> force_max_x: float "Set the upper limit for force"
+#+ * Actuator|ObjectActuator.force_max_y -> force_max_y: float "Set the upper limit for force"
+#+ * Actuator|ObjectActuator.force_max_z -> force_max_z: float "Set the upper limit for force"
+#+ * Actuator|ObjectActuator.force_min_x -> force_min_x: float "Set the lower limit for force"
+#+ * Actuator|ObjectActuator.force_min_y -> force_min_y: float "Set the lower limit for force"
+#+ * Actuator|ObjectActuator.force_min_z -> force_min_z: float "Set the lower limit for force"
+#+ * Actuator|ObjectActuator.integral_coefficient -> integral_coefficient: float "Low value (0.01) for slow response, high value (0.5) for fast response"
+#+ * Actuator|ObjectActuator.linear_velocity -> linear_velocity: float[3] "Sets the linear velocity (in Servo mode it sets the target relative linear velocity, it will be achieved by automatic application of force. Null velocity is a valid target)"
+#+ * Actuator|ObjectActuator.mode -> mode: enum "Specify the motion system"
+#Actuator|ObjectActuator.offset_location -> offset_location: float[3] "Sets the location"
+#Actuator|ObjectActuator.offset_rotation -> offset_rotation: float[3] "Sets the rotation"
+#+ * Actuator|ObjectActuator.proportional_coefficient -> proportional_coefficient: float "Typical value is 60x integral coefficient"
+#+ * Actuator|ObjectActuator.reference_object -> reference_object: pointer "Reference object for velocity calculation, leave empty for world reference"
+#+ * Actuator|ObjectActuator.torque -> torque: float[3] "Sets the torque"
+#Actuator|ObjectActuator.use_add_linear_velocity -> use_add_linear_velocity: boolean "Toggles between ADD and SET linV"
+#Actuator|ObjectActuator.use_local_angular_velocity -> use_local_angular_velocity: boolean "Angular velocity is defined in local coordinates"
+#Actuator|ObjectActuator.use_local_force -> use_local_force: boolean "Force is defined in local coordinates"
+#Actuator|ObjectActuator.use_local_linear_velocity -> use_local_linear_velocity: boolean "Velocity is defined in local coordinates"
+#Actuator|ObjectActuator.use_local_location -> use_local_location: boolean "Location is defined in local coordinates"
+#Actuator|ObjectActuator.use_local_rotation -> use_local_rotation: boolean "Rotation is defined in local coordinates"
+#Actuator|ObjectActuator.use_local_torque -> use_local_torque: boolean "Torque is defined in local coordinates"
+#Actuator|ObjectActuator.use_servo_limit_x -> use_servo_limit_x: boolean "Set limit to force along the X axis"
+#Actuator|ObjectActuator.use_servo_limit_y -> use_servo_limit_y: boolean "Set limit to force along the Y axis"
+#Actuator|ObjectActuator.use_servo_limit_z -> use_servo_limit_z: boolean "Set limit to force along the Z axis"
+#+ * Actuator|ParentActuator.mode -> mode: enum "NO DESCRIPTION"
+#+ * Actuator|ParentActuator.object -> object: pointer "Set this object as parent"
+#Actuator|ParentActuator.use_compound -> use_compound: boolean "Add this object shape to the parent shape (only if the parent shape is already compound)"
+#Actuator|ParentActuator.use_ghost -> use_ghost: boolean "Make this object ghost while parented (only if not compound)"
+#+ * Actuator|PropertyActuator.mode -> mode: enum "NO DESCRIPTION"
+#+ * Actuator|PropertyActuator.object -> object: pointer "Copy from this Object"
+#+ * Actuator|PropertyActuator.object_property -> object_property: string "Copy this property"
+#+ * Actuator|PropertyActuator.property -> property: string "The name of the property"
+#+ * Actuator|PropertyActuator.value -> value: string "The value to use, use around strings"
+#+ * Actuator|RandomActuator.chance -> chance: float "Pick a number between 0 and 1. Success if you stay below this value"
+#+ * Actuator|RandomActuator.distribution -> distribution: enum "Choose the type of distribution"
+#+ * Actuator|RandomActuator.float_max -> float_max: float "Choose a number from a range. Upper boundary of the range"
+#+ * Actuator|RandomActuator.float_mean -> float_mean: float "A normal distribution. Mean of the distribution"
+#+ * Actuator|RandomActuator.float_min -> float_min: float "Choose a number from a range. Lower boundary of the range"
+#+ * Actuator|RandomActuator.float_value -> float_value: float "Always return this number"
+#+ * Actuator|RandomActuator.half_life_time -> half_life_time: float "Negative exponential dropoff"
+#+ * Actuator|RandomActuator.int_max -> int_max: int "Choose a number from a range. Upper boundary of the range"
+#+ * Actuator|RandomActuator.int_mean -> int_mean: float "Expected mean value of the distribution"
+#+ * Actuator|RandomActuator.int_min -> int_min: int "Choose a number from a range. Lower boundary of the range"
+#+ * Actuator|RandomActuator.int_value -> int_value: int "Always return this number"
+#+ * Actuator|RandomActuator.property -> property: string "Assign the random value to this property"
+#+ * Actuator|RandomActuator.seed -> seed: int "Initial seed of the random generator. Use Python for more freedom (choose 0 for not random)"
+#+ * Actuator|RandomActuator.standard_derivation -> standard_derivation: float "A normal distribution. Standard deviation of the distribution"
+#Actuator|RandomActuator.use_always_true -> use_always_true: boolean "Always false or always true"
+#+ * Actuator|SceneActuator.camera -> camera: pointer "Set this Camera. Leave empty to refer to self object"
+#+ * Actuator|SceneActuator.mode -> mode: enum "NO DESCRIPTION"
+#+ * Actuator|SceneActuator.scene -> scene: pointer "Set the Scene to be added/removed/paused/resumed"
+#+ * Actuator|ShapeActionActuator.action -> action: pointer "NO DESCRIPTION"
+#Actuator|ShapeActionActuator.frame_blend_in -> frame_blend_in: int "Number of frames of motion blending"
+#+ * Actuator|ShapeActionActuator.frame_end -> frame_end: int "NO DESCRIPTION"
+#+ * Actuator|ShapeActionActuator.frame_property -> frame_property: string "Assign the actions current frame number to this property"
+#+ * Actuator|ShapeActionActuator.frame_start -> frame_start: int "NO DESCRIPTION"
+#+ * Actuator|ShapeActionActuator.mode -> mode: enum "Action playback type"
+#+ * Actuator|ShapeActionActuator.priority -> priority: int "Execution priority - lower numbers will override actions with higher numbers. With 2 or more actions at once, the overriding channels must be lower in the stack"
+#+ * Actuator|ShapeActionActuator.property -> property: string "Use this property to define the Action position"
+#Actuator|ShapeActionActuator.use_continue_last_frame -> use_continue_last_frame: boolean "Restore last frame when switching on/off, otherwise play from the start each time"
+#+ * Actuator|SoundActuator.cone_inner_angle_3d -> cone_inner_angle_3d: float "The angle of the inner cone"
+#+ * Actuator|SoundActuator.cone_outer_angle_3d -> cone_outer_angle_3d: float "The angle of the outer cone"
+#+ * Actuator|SoundActuator.cone_outer_gain_3d -> cone_outer_gain_3d: float "The gain outside the outer cone. The gain in the outer cone will be interpolated between this value and the normal gain in the inner cone"
+#Actuator|SoundActuator.distance_3d_max -> distance_3d_max: float "The maximum distance at which you can hear the sound"
+#Actuator|SoundActuator.distance_3d_reference -> distance_3d_reference: float "The distance where the sound has a gain of 1.0"
+#Actuator|SoundActuator.gain_3d_max -> gain_3d_max: float "The maximum gain of the sound, no matter how near it is"
+#Actuator|SoundActuator.gain_3d_min -> gain_3d_min: float "The minimum gain of the sound, no matter how far it is away"
+#+ * Actuator|SoundActuator.mode -> mode: enum "NO DESCRIPTION"
+#+ * Actuator|SoundActuator.pitch -> pitch: float "Sets the pitch of the sound"
+#+ * Actuator|SoundActuator.rolloff_factor_3d -> rolloff_factor_3d: float "The influence factor on volume depending on distance"
+#+ * Actuator|SoundActuator.sound -> sound: pointer "NO DESCRIPTION"
+#Actuator|SoundActuator.use_sound_3d -> use_sound_3d: boolean "Enable/Disable 3D Sound"
+#+ * Actuator|SoundActuator.volume -> volume: float "Sets the initial volume of the sound"
+#+ * Actuator|StateActuator.operation -> operation: enum "Select the bit operation on object state mask"
+#Actuator|StateActuator.states -> states: boolean[30] "NO DESCRIPTION"
+#Actuator|VisibilityActuator.apply_to_children -> apply_to_children: boolean "Set all the children of this object to the same visibility/occlusion recursively"
+#Actuator|VisibilityActuator.use_occlusion -> use_occlusion: boolean "Set the object to occlude objects behind it. Initialized from the object type in physics button"
+#Actuator|VisibilityActuator.use_visible -> use_visible: boolean "Set the objects visible. Initialized from the objects render restriction toggle (access in the outliner)"
+#+ * Addon.module -> module: string "Module name"
+#+ * AnimData.action -> action: pointer "Active Action for this datablock"
+#AnimData.action_blend_type -> action_blend_type: enum "Method used for combining Active Actions result with result of NLA stack"
+#+ * AnimData.action_extrapolation -> action_extrapolation: enum "Action to take for gaps past the Active Actions range (when evaluating with NLA)"
+#+ * AnimData.action_influence -> action_influence: float "Amount the Active Action contributes to the result of the NLA stack"
+#+ * AnimData.drivers -> drivers: collection, "(read-only) The Drivers/Expressions for this datablock"
+#+ * AnimData.nla_tracks -> nla_tracks: collection, "(read-only) NLA Tracks (i.e. Animation Layers)"
+#AnimData.use_nla -> use_nla: boolean "NLA stack is evaluated when evaluating this block"
+#AnimViz.motion_path -> motion_path: pointer, "(read-only) Motion Path settings for visualisation"
+#AnimViz.onion_skin_frames -> onion_skin_frames: pointer, "(read-only) Onion Skinning (ghosting) settings for visualisation"
+#+ * AnimVizMotionPaths.bake_location -> bake_location: enum "When calculating Bone Paths, use Head or Tips"
+#AnimVizMotionPaths.frame_after -> frame_after: int "Number of frames to show after the current frame (only for Around Current Frame Onion-skinning method)"
+#AnimVizMotionPaths.frame_before -> frame_before: int "Number of frames to show before the current frame (only for Around Current Frame Onion-skinning method)"
+#+ * AnimVizMotionPaths.frame_end -> frame_end: int "End frame of range of paths to display/calculate (not for Around Current Frame Onion-skinning method)"
+#+ * AnimVizMotionPaths.frame_start -> frame_start: int "Starting frame of range of paths to display/calculate (not for Around Current Frame Onion-skinning method)"
+#+ * AnimVizMotionPaths.frame_step -> frame_step: int "Number of frames between paths shown (not for On Keyframes Onion-skinning method)"
+#+ * AnimVizMotionPaths.show_frame_numbers -> show_frame_numbers: boolean "Show frame numbers on Motion Paths"
+#AnimVizMotionPaths.show_keyframe_action_all -> show_keyframe_action_all: boolean "For bone motion paths, search whole Action for keyframes instead of in group with matching name only (is slower)"
+#AnimVizMotionPaths.show_keyframe_highlight -> show_keyframe_highlight: boolean "Emphasize position of keyframes on Motion Paths"
+#+ * AnimVizMotionPaths.show_keyframe_numbers -> show_keyframe_numbers: boolean "Show frame numbers of Keyframes on Motion Paths"
+#+ * AnimVizMotionPaths.type -> type: enum "Type of range to show for Motion Paths"
+#AnimVizOnionSkinning.frame_after -> frame_after: int "Number of frames to show after the current frame (only for Around Current Frame Onion-skinning method)"
+#AnimVizOnionSkinning.frame_before -> frame_before: int "Number of frames to show before the current frame (only for Around Current Frame Onion-skinning method)"
+#+ * AnimVizOnionSkinning.frame_end -> frame_end: int "End frame of range of Ghosts to display (not for Around Current Frame Onion-skinning method)"
+#+ * AnimVizOnionSkinning.frame_start -> frame_start: int "Starting frame of range of Ghosts to display (not for Around Current Frame Onion-skinning method)"
+#+ * AnimVizOnionSkinning.frame_step -> frame_step: int "Number of frames between ghosts shown (not for On Keyframes Onion-skinning method)"
+#AnimVizOnionSkinning.show_only_selected -> show_only_selected: boolean "For Pose-Mode drawing, only draw ghosts for selected bones"
+#+ * AnimVizOnionSkinning.type -> type: enum "Method used for determining what ghosts get drawn"
+#MAKE PROPERTY OF A COLLECTION * Area.active_space -> active_space: pointer, "(read-only) Space currently being displayed in this area"
+#+ * Area.regions -> regions: collection, "(read-only) Regions this area is subdivided in"
+#+ * Area.show_menus -> show_menus: boolean "Show menus in the header"
+#+ * Area.spaces -> spaces: collection, "(read-only) Spaces contained in this area, the first space is active"
+#+ * Area.type -> type: enum "Space type"
+#+ * ArmatureBones.active -> active: pointer "Armatures active bone"
+#+ * ArmatureEditBones.active -> active: pointer "Armatures active edit bone"
+#+ * BackgroundImage.image -> image: pointer "Image displayed and edited in this space"
+#+ * BackgroundImage.image_user -> image_user: pointer, "(read-only) Parameters defining which layer, pass and frame of the image is displayed"
+#+ * BackgroundImage.offset_x -> offset_x: float "Offsets image horizontally from the world origin"
+#+ * BackgroundImage.offset_y -> offset_y: float "Offsets image vertically from the world origin"
+#+ * BackgroundImage.show_expanded -> show_expanded: boolean "Show the expanded in the user interface"
+#+ * BackgroundImage.size -> size: float "Scaling factor for the background image"
+#+ * BackgroundImage.transparency -> transparency: float "Amount to blend the image against the background color"
+#+ * BackgroundImage.view_axis -> view_axis: enum "The axis to display the image on"
+#+ * BezierSplinePoint.co -> co: float[3] "Coordinates of the control point"
+#BezierSplinePoint.handle_left -> handle_left: float[3] "Coordinates of the first handle"
+#BezierSplinePoint.handle_left_type -> handle_left_type: enum "Handle types"
+#BezierSplinePoint.handle_right -> handle_right: float[3] "Coordinates of the second handle"
+#BezierSplinePoint.handle_right_type -> handle_right_type: enum "Handle types"
+#+ * BezierSplinePoint.hide -> hide: boolean "Visibility status"
+#+ * BezierSplinePoint.radius -> radius: float, "(read-only) Radius for bevelling"
+#+ * BezierSplinePoint.select_control_point -> select_control_point: boolean "Control point selection status"
+#+ * BezierSplinePoint.select_left_handle -> select_left_handle: boolean "Handle 1 selection status"
+#+ * BezierSplinePoint.select_right_handle -> select_right_handle: boolean "Handle 2 selection status"
+#+ * BezierSplinePoint.tilt -> tilt: float "Tilt in 3D View"
+#+ * BezierSplinePoint.weight -> weight: float "Softbody goal weight"
+#+ * BlenderRNA.structs -> structs: collection, "(read-only)"
+#+ * BoidRule.name -> name: string "Boid rule name"
+#+ * BoidRule.type -> type: enum, "(read-only)"
+#BoidRule.use_in_air -> use_in_air: boolean "Use rule when boid is flying"
+#BoidRule.use_on_land -> use_on_land: boolean "Use rule when boid is on land"
+#+ * BoidRule|BoidRuleAverageSpeed.level -> level: float "How much velocitys z-component is kept constant"
+#+ * BoidRule|BoidRuleAverageSpeed.speed -> speed: float "Percentage of maximum speed"
+#+ * BoidRule|BoidRuleAverageSpeed.wander -> wander: float "How fast velocitys direction is randomized"
+#+ * BoidRule|BoidRuleAvoid.fear_factor -> fear_factor: float "Avoid object if danger from it is above this threshold"
+#+ * BoidRule|BoidRuleAvoid.object -> object: pointer "Object to avoid"
+#BoidRule|BoidRuleAvoid.use_predict -> use_predict: boolean "Predict target movement"
+#+ * BoidRule|BoidRuleAvoidCollision.look_ahead -> look_ahead: float "Time to look ahead in seconds"
+#BoidRule|BoidRuleAvoidCollision.use_avoid -> use_avoid: boolean "Avoid collision with other boids"
+#BoidRule|BoidRuleAvoidCollision.use_avoid_collision -> use_avoid_collision: boolean "Avoid collision with deflector objects"
+#+ * BoidRule|BoidRuleFight.distance -> distance: float "Attack boids at max this distance"
+#+ * BoidRule|BoidRuleFight.flee_distance -> flee_distance: float "Flee to this distance"
+#+ * BoidRule|BoidRuleFollowLeader.distance -> distance: float "Distance behind leader to follow"
+#+ * BoidRule|BoidRuleFollowLeader.object -> object: pointer "Follow this object instead of a boid"
+#BoidRule|BoidRuleFollowLeader.queue_count -> queue_count: int "How many boids in a line"
+#BoidRule|BoidRuleFollowLeader.use_line -> use_line: boolean "Follow leader in a line"
+#+ * BoidRule|BoidRuleGoal.object -> object: pointer "Goal object"
+#BoidRule|BoidRuleGoal.use_predict -> use_predict: boolean "Predict target movement"
+#+ * BoidSettings.accuracy -> accuracy: float "Accuracy of attack"
+#+ * BoidSettings.active_boid_state -> active_boid_state: pointer, "(read-only)"
+#+ * BoidSettings.active_boid_state_index -> active_boid_state_index: int "NO DESCRIPTION"
+#+ * BoidSettings.aggression -> aggression: float "Boid will fight this times stronger enemy"
+#BoidSettings.air_acc_max -> air_acc_max: float "Maximum acceleration in air (relative to maximum speed)"
+#BoidSettings.air_ave_max -> air_ave_max: float "Maximum angular velocity in air (relative to 180 degrees)"
+#+ * BoidSettings.air_personal_space -> air_personal_space: float "Radius of boids personal space in air (% of particle size)"
+#BoidSettings.air_speed_max -> air_speed_max: float "Maximum speed in air"
+#BoidSettings.air_speed_min -> air_speed_min: float "Minimum speed in air (relative to maximum speed)"
+#BoidSettings.bank -> bank: float "Amount of rotation around velocity vector on turns"
+#+ * BoidSettings.health -> health: float "Initial boid health when born"
+#+ * BoidSettings.height -> height: float "Boid height relative to particle size"
+#BoidSettings.land_acc_max -> land_acc_max: float "Maximum acceleration on land (relative to maximum speed)"
+#BoidSettings.land_ave_max -> land_ave_max: float "Maximum angular velocity on land (relative to 180 degrees)"
+#+ * BoidSettings.land_jump_speed -> land_jump_speed: float "Maximum speed for jumping"
+#+ * BoidSettings.land_personal_space -> land_personal_space: float "Radius of boids personal space on land (% of particle size)"
+#BoidSettings.land_smooth -> land_smooth: float "How smoothly the boids land"
+#BoidSettings.land_speed_max -> land_speed_max: float "Maximum speed on land"
+#+ * BoidSettings.land_stick_force -> land_stick_force: float "How strong a force must be to start effecting a boid on land"
+#+ * BoidSettings.range -> range: float "The maximum distance from which a boid can attack"
+#+ * BoidSettings.states -> states: collection, "(read-only)"
+#+ * BoidSettings.strength -> strength: float "Maximum caused damage on attack per second"
+#BoidSettings.use_climb -> use_climb: boolean "Allow boids to climb goal objects"
+#BoidSettings.use_flight -> use_flight: boolean "Allow boids to move in air"
+#BoidSettings.use_land -> use_land: boolean "Allow boids to move on land"
+#+ * BoidState.active_boid_rule -> active_boid_rule: pointer, "(read-only)"
+#+ * BoidState.active_boid_rule_index -> active_boid_rule_index: int "NO DESCRIPTION"
+#+ * BoidState.falloff -> falloff: float "NO DESCRIPTION"
+#+ * BoidState.name -> name: string "Boid state name"
+#BoidState.rule_fuzzy -> rule_fuzzy: float "NO DESCRIPTION"
+#+ * BoidState.rules -> rules: collection, "(read-only)"
+#+ * BoidState.ruleset_type -> ruleset_type: enum "How the rules in the list are evaluated"
+#+ * BoidState.volume -> volume: float "NO DESCRIPTION"
+#+ * Bone.bbone_in -> bbone_in: float "Length of first Bezier Handle (for B-Bones only)"
+#+ * Bone.bbone_out -> bbone_out: float "Length of second Bezier Handle (for B-Bones only)"
+#+ * Bone.bbone_segments -> bbone_segments: int "Number of subdivisions of bone (for B-Bones only)"
+#+ * Bone.children -> children: collection, "(read-only) Bones which are children of this bone"
+#+ * Bone.envelope_distance -> envelope_distance: float "Bone deformation distance (for Envelope deform only)"
+#+ * Bone.envelope_weight -> envelope_weight: float "Bone deformation weight (for Envelope deform only)"
+#+ * Bone.head -> head: float[3] "Location of head end of the bone relative to its parent"
+#+ * Bone.head_local -> head_local: float[3] "Location of head end of the bone relative to armature"
+#+ * Bone.head_radius -> head_radius: float "Radius of head of bone (for Envelope deform only)"
+#+ * Bone.hide -> hide: boolean "Bone is not visible when it is not in Edit Mode (i.e. in Object or Pose Modes)"
+#+ * Bone.hide_select -> hide_select: boolean "Bone is able to be selected"
+#Bone.layers -> layers: boolean[32] "Layers bone exists in"
+#+ * Bone.matrix -> matrix: float[9] "3x3 bone matrix"
+#+ * Bone.matrix_local -> matrix_local: float[16] "4x4 bone matrix relative to armature"
+#+ * Bone.name -> name: string "NO DESCRIPTION"
+#+ * Bone.parent -> parent: pointer, "(read-only) Parent bone (in same Armature)"
+#+ * Bone.select -> select: boolean "NO DESCRIPTION"
+#Bone.show_wire -> show_wire: boolean "Bone is always drawn as Wireframe regardless of viewport draw mode. Useful for non-obstructive custom bone shapes"
+#+ * Bone.tail -> tail: float[3] "Location of tail end of the bone"
+#+ * Bone.tail_local -> tail_local: float[3] "Location of tail end of the bone relative to armature"
+#+ * Bone.tail_radius -> tail_radius: float "Radius of tail of bone (for Envelope deform only)"
+#Bone.use_connect -> use_connect: boolean, "(read-only) When bone has a parent, bones head is struck to the parents tail"
+#Bone.use_cyclic_offset -> use_cyclic_offset: boolean "When bone doesnt have a parent, it receives cyclic offset effects"
+#Bone.use_deform -> use_deform: boolean "Bone does not deform any geometry"
+#Bone.use_envelope_multiply -> use_envelope_multiply: boolean "When deforming bone, multiply effects of Vertex Group weights with Envelope influence"
+#Bone.use_hinge -> use_hinge: boolean "Bone inherits rotation or scale from parent bone"
+#Bone.use_inherit_scale -> use_inherit_scale: boolean "Bone inherits scaling from parent bone"
+#Bone.use_local_location -> use_local_location: boolean "Bone location is set in local space"
+#+ * BoneGroup.color_set -> color_set: enum "Custom color set to use"
+#+ * BoneGroup.colors -> colors: pointer, "(read-only) Copy of the colors associated with the groups color set"
+#+ * BoneGroup.name -> name: string "NO DESCRIPTION"
+#+ * ClothCollisionSettings.collision_quality -> collision_quality: int "How many collision iterations should be done. (higher is better quality but slower)"
+#ClothCollisionSettings.distance_min -> distance_min: float "Minimum distance between collision objects before collision response takes in"
+#+ * ClothCollisionSettings.friction -> friction: float "Friction force if a collision happened. (higher = less movement)"
+#+ * ClothCollisionSettings.group -> group: pointer "Limit colliders to this Group"
+#+ * ClothCollisionSettings.self_collision_quality -> self_collision_quality: int "How many self collision iterations should be done. (higher is better quality but slower)"
+#ClothCollisionSettings.self_distance_min -> self_distance_min: float "0.5 means no distance at all, 1.0 is maximum distance"
+#+ * ClothCollisionSettings.self_friction -> self_friction: float "Friction/damping with self contact"
+#ClothCollisionSettings.use_collision -> use_collision: boolean "Enable collisions with other objects"
+#ClothCollisionSettings.use_self_collision -> use_self_collision: boolean "Enable self collisions"
+#+ * ClothSettings.air_damping -> air_damping: float "Air has normally some thickness which slows falling things down"
+#+ * ClothSettings.bending_stiffness -> bending_stiffness: float "Wrinkle coefficient. (higher = less smaller but more big wrinkles)"
+#+ * ClothSettings.bending_stiffness_max -> bending_stiffness_max: float "Maximum bending stiffness value"
+#+ * ClothSettings.bending_vertex_group -> bending_vertex_group: string "Vertex group for fine control over bending stiffness"
+#+ * ClothSettings.collider_friction -> collider_friction: float "NO DESCRIPTION"
+#+ * ClothSettings.effector_weights -> effector_weights: pointer, "(read-only)"
+#+ * ClothSettings.goal_default -> goal_default: float "Default Goal (vertex target position) value, when no Vertex Group used"
+#+ * ClothSettings.goal_friction -> goal_friction: float "Goal (vertex target position) friction"
+#+ * ClothSettings.goal_max -> goal_max: float "Goal maximum, vertex group weights are scaled to match this range"
+#+ * ClothSettings.goal_min -> goal_min: float "Goal minimum, vertex group weights are scaled to match this range"
+#+ * ClothSettings.goal_spring -> goal_spring: float "Goal (vertex target position) spring stiffness"
+#+ * ClothSettings.gravity -> gravity: float[3] "Gravity or external force vector"
+#+ * ClothSettings.internal_friction -> internal_friction: float "NO DESCRIPTION"
+#+ * ClothSettings.mass -> mass: float "Mass of cloth material"
+#+ * ClothSettings.mass_vertex_group -> mass_vertex_group: string "Vertex Group for pinning of vertices"
+#+ * ClothSettings.pin_stiffness -> pin_stiffness: float "Pin (vertex target position) spring stiffness"
+#+ * ClothSettings.pre_roll -> pre_roll: int "Simulation starts on this frame"
+#+ * ClothSettings.quality -> quality: int "Quality of the simulation in steps per frame. (higher is better quality but slower)"
+#+ * ClothSettings.rest_shape_key -> rest_shape_key: pointer "Shape key to use the rest spring lengths from"
+#+ * ClothSettings.spring_damping -> spring_damping: float "Damping of cloth velocity. (higher = more smooth, less jiggling)"
+#+ * ClothSettings.structural_stiffness -> structural_stiffness: float "Overall stiffness of structure"
+#+ * ClothSettings.structural_stiffness_max -> structural_stiffness_max: float "Maximum structural stiffness value"
+#+ * ClothSettings.structural_stiffness_vertex_group -> structural_stiffness_vertex_group: string "Vertex group for fine control over structural stiffness"
+#ClothSettings.use_pin_cloth -> use_pin_cloth: boolean "Enable pinning of cloth vertices to other objects/positions"
+#ClothSettings.use_stiffness_scale -> use_stiffness_scale: boolean "If enabled, stiffness can be scaled along a weight painted vertex group"
+#+ * CollisionSettings.absorption -> absorption: float "How much of effector force gets lost during collision with this object (in percent)"
+#+ * CollisionSettings.damping -> damping: float "Amount of damping during collision"
+#+ * CollisionSettings.damping_factor -> damping_factor: float "Amount of damping during particle collision"
+#CollisionSettings.damping_random -> damping_random: float "Random variation of damping"
+#+ * CollisionSettings.friction_factor -> friction_factor: float "Amount of friction during particle collision"
+#CollisionSettings.friction_random -> friction_random: float "Random variation of friction"
+#+ * CollisionSettings.permeability -> permeability: float "Chance that the particle will pass through the mesh"
+#+ * CollisionSettings.stickness -> stickness: float "Amount of stickness to surface collision"
+#CollisionSettings.thickness_inner -> thickness_inner: float "Inner face thickness"
+#CollisionSettings.thickness_outer -> thickness_outer: float "Outer face thickness"
+#+ * CollisionSettings.use -> use: boolean "Enable this objects as a collider for physics systems"
+#CollisionSettings.use_particle_kill -> use_particle_kill: boolean "Kill collided particles"
+#+ * ColorRamp.elements -> elements: collection, "(read-only)"
+#+ * ColorRamp.interpolation -> interpolation: enum "NO DESCRIPTION"
+#+ * ColorRampElement.color -> color: float[4] "NO DESCRIPTION"
+#+ * ColorRampElement.position -> position: float "NO DESCRIPTION"
+#ConsoleLine.body -> body: string "Text in the line"
+#+ * ConsoleLine.current_character -> current_character: int "NO DESCRIPTION"
+#+ * Constraint.active -> active: boolean "Constraint is the one being edited"
+#Constraint.error_location -> error_location: float, "(read-only) Amount of residual error in Blender space unit for constraints that work on position"
+#Constraint.error_rotation -> error_rotation: float, "(read-only) Amount of residual error in radiant for constraints that work on orientation"
+#+ * Constraint.influence -> influence: float "Amount of influence constraint will have on the final solution"
+#Constraint.is_proxy_local -> is_proxy_local: boolean "Constraint was added in this proxy instance (i.e. did not belong to source Armature)"
+ + * Constraint.disabled -> is_valid: boolean, "(read-only) Constraint has invalid settings and will not be evaluated"
+#+ * Constraint.mute -> mute: boolean "Enable/Disable Constraint"
+#+ * Constraint.name -> name: string "Constraint name"
+#+ * Constraint.owner_space -> owner_space: enum "Space that owner is evaluated in"
+#Constraint.show_expanded -> show_expanded: boolean "Constraints panel is expanded in UI"
+#+ * Constraint.target_space -> target_space: enum "Space that target is evaluated in"
+#+ * Constraint.type -> type: enum, "(read-only)"
+#+ * ConstraintTarget.subtarget -> subtarget: string "NO DESCRIPTION"
+#+ * ConstraintTarget.target -> target: pointer "Target Object"
+#+ * Constraint|ActionConstraint.action -> action: pointer "NO DESCRIPTION"
+#+ * Constraint|ActionConstraint.frame_end -> frame_end: int "Last frame of the Action to use"
+#+ * Constraint|ActionConstraint.frame_start -> frame_start: int "First frame of the Action to use"
+#Constraint|ActionConstraint.max -> max: float "Maximum value for target channel range"
+#Constraint|ActionConstraint.min -> min: float "Minimum value for target channel range"
+#+ * Constraint|ActionConstraint.subtarget -> subtarget: string "NO DESCRIPTION"
+#+ * Constraint|ActionConstraint.target -> target: pointer "Target Object"
+#+ * Constraint|ActionConstraint.transform_channel -> transform_channel: enum "Transformation channel from the target that is used to key the Action"
+#+ * Constraint|ChildOfConstraint.subtarget -> subtarget: string "NO DESCRIPTION"
+#+ * Constraint|ChildOfConstraint.target -> target: pointer "Target Object"
+#+ * Constraint|ChildOfConstraint.use_location_x -> use_location_x: boolean "Use X Location of Parent"
+#+ * Constraint|ChildOfConstraint.use_location_y -> use_location_y: boolean "Use Y Location of Parent"
+#+ * Constraint|ChildOfConstraint.use_location_z -> use_location_z: boolean "Use Z Location of Parent"
+#+ * Constraint|ChildOfConstraint.use_rotation_x -> use_rotation_x: boolean "Use X Rotation of Parent"
+#+ * Constraint|ChildOfConstraint.use_rotation_y -> use_rotation_y: boolean "Use Y Rotation of Parent"
+#+ * Constraint|ChildOfConstraint.use_rotation_z -> use_rotation_z: boolean "Use Z Rotation of Parent"
+#+ * Constraint|ChildOfConstraint.use_scale_x -> use_scale_x: boolean "Use X Scale of Parent"
+#+ * Constraint|ChildOfConstraint.use_scale_y -> use_scale_y: boolean "Use Y Scale of Parent"
+#+ * Constraint|ChildOfConstraint.use_scale_z -> use_scale_z: boolean "Use Z Scale of Parent"
+#+ * Constraint|ClampToConstraint.main_axis -> main_axis: enum "Main axis of movement"
+#+ * Constraint|ClampToConstraint.target -> target: pointer "Target Object"
+ + * Constraint|ClampToConstraint.cyclic -> use_cyclic: boolean "Treat curve as cyclic curve (no clamping to curve bounding box"
+#+ * Constraint|CopyLocationConstraint.head_tail -> head_tail: float "Target along length of bone: Head=0, Tail=1"
+#+ * Constraint|CopyLocationConstraint.invert_x -> invert_x: boolean "Invert the X location"
+#+ * Constraint|CopyLocationConstraint.invert_y -> invert_y: boolean "Invert the Y location"
+#+ * Constraint|CopyLocationConstraint.invert_z -> invert_z: boolean "Invert the Z location"
+#+ * Constraint|CopyLocationConstraint.subtarget -> subtarget: string "NO DESCRIPTION"
+#+ * Constraint|CopyLocationConstraint.target -> target: pointer "Target Object"
+#+ * Constraint|CopyLocationConstraint.use_offset -> use_offset: boolean "Add original location into copied location"
+#+ * Constraint|CopyLocationConstraint.use_x -> use_x: boolean "Copy the targets X location"
+#+ * Constraint|CopyLocationConstraint.use_y -> use_y: boolean "Copy the targets Y location"
+#+ * Constraint|CopyLocationConstraint.use_z -> use_z: boolean "Copy the targets Z location"
+#+ * Constraint|CopyRotationConstraint.invert_x -> invert_x: boolean "Invert the X rotation"
+#+ * Constraint|CopyRotationConstraint.invert_y -> invert_y: boolean "Invert the Y rotation"
+#+ * Constraint|CopyRotationConstraint.invert_z -> invert_z: boolean "Invert the Z rotation"
+#+ * Constraint|CopyRotationConstraint.subtarget -> subtarget: string "NO DESCRIPTION"
+#+ * Constraint|CopyRotationConstraint.target -> target: pointer "Target Object"
+#+ * Constraint|CopyRotationConstraint.use_offset -> use_offset: boolean "Add original rotation into copied rotation"
+#+ * Constraint|CopyRotationConstraint.use_x -> use_x: boolean "Copy the targets X rotation"
+#+ * Constraint|CopyRotationConstraint.use_y -> use_y: boolean "Copy the targets Y rotation"
+#+ * Constraint|CopyRotationConstraint.use_z -> use_z: boolean "Copy the targets Z rotation"
+#+ * Constraint|CopyScaleConstraint.subtarget -> subtarget: string "NO DESCRIPTION"
+#+ * Constraint|CopyScaleConstraint.target -> target: pointer "Target Object"
+#+ * Constraint|CopyScaleConstraint.use_offset -> use_offset: boolean "Add original scale into copied scale"
+#+ * Constraint|CopyScaleConstraint.use_x -> use_x: boolean "Copy the targets X scale"
+#+ * Constraint|CopyScaleConstraint.use_y -> use_y: boolean "Copy the targets Y scale"
+#+ * Constraint|CopyScaleConstraint.use_z -> use_z: boolean "Copy the targets Z scale"
+#+ * Constraint|CopyTransformsConstraint.head_tail -> head_tail: float "Target along length of bone: Head=0, Tail=1"
+#+ * Constraint|CopyTransformsConstraint.subtarget -> subtarget: string "NO DESCRIPTION"
+#+ * Constraint|CopyTransformsConstraint.target -> target: pointer "Target Object"
+#+ * Constraint|DampedTrackConstraint.subtarget -> subtarget: string "NO DESCRIPTION"
+#+ * Constraint|DampedTrackConstraint.target -> target: pointer "Target Object"
+ + * Constraint|DampedTrackConstraint.track -> track_axis: enum "Axis that points to the target object"
+#+ * Constraint|FloorConstraint.floor_location -> floor_location: enum "Location of target that object will not pass through"
+#+ * Constraint|FloorConstraint.offset -> offset: float "Offset of floor from object origin"
+#+ * Constraint|FloorConstraint.subtarget -> subtarget: string "NO DESCRIPTION"
+#+ * Constraint|FloorConstraint.target -> target: pointer "Target Object"
+#+ * Constraint|FloorConstraint.use_rotation -> use_rotation: boolean "Use the targets rotation to determine floor"
+ + * Constraint|FloorConstraint.sticky -> use_sticky: boolean "Immobilize object while constrained"
+ + * Constraint|FollowPathConstraint.forward -> forward_axis: enum "Axis that points forward along the path"
+#+ * Constraint|FollowPathConstraint.offset -> offset: int "Offset from the position corresponding to the time frame"
+#+ * Constraint|FollowPathConstraint.offset_factor -> offset_factor: float "Percentage value defining target position along length of bone"
+#+ * Constraint|FollowPathConstraint.target -> target: pointer "Target Object"
+ + * Constraint|FollowPathConstraint.up -> up_axis: enum "Axis that points upward"
+#+ * Constraint|FollowPathConstraint.use_curve_follow -> use_curve_follow: boolean "Object will follow the heading and banking of the curve"
+#+ * Constraint|FollowPathConstraint.use_curve_radius -> use_curve_radius: boolean "Objects scale by the curve radius"
+#Constraint|FollowPathConstraint.use_fixed_location -> use_fixed_location: boolean "Object will stay locked to a single point somewhere along the length of the curve regardless of time"
+#Constraint|KinematicConstraint.chain_count -> chain_count: int "How many bones are included in the IK effect - 0 uses all bones"
+#+ * Constraint|KinematicConstraint.distance -> distance: float "Radius of limiting sphere"
+#+ * Constraint|KinematicConstraint.ik_type -> ik_type: enum "NO DESCRIPTION"
+#+ * Constraint|KinematicConstraint.iterations -> iterations: int "Maximum number of solving iterations"
+#+ * Constraint|KinematicConstraint.limit_mode -> limit_mode: enum "Distances in relation to sphere of influence to allow"
+#Constraint|KinematicConstraint.lock_location_x -> lock_location_x: boolean "Constraint position along X axis"
+#Constraint|KinematicConstraint.lock_location_y -> lock_location_y: boolean "Constraint position along Y axis"
+#Constraint|KinematicConstraint.lock_location_z -> lock_location_z: boolean "Constraint position along Z axis"
+#Constraint|KinematicConstraint.lock_rotation_x -> lock_rotation_x: boolean "Constraint rotation along X axis"
+#Constraint|KinematicConstraint.lock_rotation_y -> lock_rotation_y: boolean "Constraint rotation along Y axis"
+#Constraint|KinematicConstraint.lock_rotation_z -> lock_rotation_z: boolean "Constraint rotation along Z axis"
+#+ * Constraint|KinematicConstraint.orient_weight -> orient_weight: float "For Tree-IK: Weight of orientation control for this target"
+#+ * Constraint|KinematicConstraint.pole_angle -> pole_angle: float "Pole rotation offset"
+#+ * Constraint|KinematicConstraint.pole_subtarget -> pole_subtarget: string "NO DESCRIPTION"
+#+ * Constraint|KinematicConstraint.pole_target -> pole_target: pointer "Object for pole rotation"
+#Constraint|KinematicConstraint.reference_axis -> reference_axis: enum "Constraint axis Lock options relative to Bone or Target reference"
+#+ * Constraint|KinematicConstraint.subtarget -> subtarget: string "NO DESCRIPTION"
+#+ * Constraint|KinematicConstraint.target -> target: pointer "Target Object"
+#Constraint|KinematicConstraint.use_location -> use_location: boolean "Chain follows position of target"
+#+ * Constraint|KinematicConstraint.use_rotation -> use_rotation: boolean "Chain follows rotation of target"
+#+ * Constraint|KinematicConstraint.use_stretch -> use_stretch: boolean "Enable IK Stretching"
+#+ * Constraint|KinematicConstraint.use_tail -> use_tail: boolean "Include bones tail as last element in chain"
+#+ * Constraint|KinematicConstraint.use_target -> use_target: boolean "Disable for targetless IK"
+#+ * Constraint|KinematicConstraint.weight -> weight: float "For Tree-IK: Weight of position control for this target"
+#+ * Constraint|LimitDistanceConstraint.distance -> distance: float "Radius of limiting sphere"
+#+ * Constraint|LimitDistanceConstraint.limit_mode -> limit_mode: enum "Distances in relation to sphere of influence to allow"
+#+ * Constraint|LimitDistanceConstraint.subtarget -> subtarget: string "NO DESCRIPTION"
+#+ * Constraint|LimitDistanceConstraint.target -> target: pointer "Target Object"
+#Constraint|LimitLocationConstraint.max_x -> max_x: float "Highest X value to allow"
+#Constraint|LimitLocationConstraint.max_y -> max_y: float "Highest Y value to allow"
+#Constraint|LimitLocationConstraint.max_z -> max_z: float "Highest Z value to allow"
+#Constraint|LimitLocationConstraint.min_x -> min_x: float "Lowest X value to allow"
+#Constraint|LimitLocationConstraint.min_y -> min_y: float "Lowest Y value to allow"
+#Constraint|LimitLocationConstraint.min_z -> min_z: float "Lowest Z value to allow"
+#Constraint|LimitLocationConstraint.use_max_x -> use_max_x: boolean "Use the maximum X value"
+#Constraint|LimitLocationConstraint.use_max_y -> use_max_y: boolean "Use the maximum Y value"
+#Constraint|LimitLocationConstraint.use_max_z -> use_max_z: boolean "Use the maximum Z value"
+#Constraint|LimitLocationConstraint.use_min_x -> use_min_x: boolean "Use the minimum X value"
+#Constraint|LimitLocationConstraint.use_min_y -> use_min_y: boolean "Use the minimum Y value"
+#Constraint|LimitLocationConstraint.use_min_z -> use_min_z: boolean "Use the minimum Z value"
+#Constraint|LimitLocationConstraint.use_transform_limit -> use_transform_limit: boolean "Transforms are affected by this constraint as well"
+#Constraint|LimitRotationConstraint.max_x -> max_x: float "Highest X value to allow"
+#Constraint|LimitRotationConstraint.max_y -> max_y: float "Highest Y value to allow"
+#Constraint|LimitRotationConstraint.max_z -> max_z: float "Highest Z value to allow"
+#Constraint|LimitRotationConstraint.min_x -> min_x: float "Lowest X value to allow"
+#Constraint|LimitRotationConstraint.min_y -> min_y: float "Lowest Y value to allow"
+#Constraint|LimitRotationConstraint.min_z -> min_z: float "Lowest Z value to allow"
+#+ * Constraint|LimitRotationConstraint.use_limit_x -> use_limit_x: boolean "Use the minimum X value"
+#+ * Constraint|LimitRotationConstraint.use_limit_y -> use_limit_y: boolean "Use the minimum Y value"
+#+ * Constraint|LimitRotationConstraint.use_limit_z -> use_limit_z: boolean "Use the minimum Z value"
+#Constraint|LimitRotationConstraint.use_transform_limit -> use_transform_limit: boolean "Transforms are affected by this constraint as well"
+#Constraint|LimitScaleConstraint.max_x -> max_x: float "Highest X value to allow"
+#Constraint|LimitScaleConstraint.max_y -> max_y: float "Highest Y value to allow"
+#Constraint|LimitScaleConstraint.max_z -> max_z: float "Highest Z value to allow"
+#Constraint|LimitScaleConstraint.min_x -> min_x: float "Lowest X value to allow"
+#Constraint|LimitScaleConstraint.min_y -> min_y: float "Lowest Y value to allow"
+#Constraint|LimitScaleConstraint.min_z -> min_z: float "Lowest Z value to allow"
+#Constraint|LimitScaleConstraint.use_max_x -> use_max_x: boolean "Use the maximum X value"
+#Constraint|LimitScaleConstraint.use_max_y -> use_max_y: boolean "Use the maximum Y value"
+#Constraint|LimitScaleConstraint.use_max_z -> use_max_z: boolean "Use the maximum Z value"
+#Constraint|LimitScaleConstraint.use_min_x -> use_min_x: boolean "Use the minimum X value"
+#Constraint|LimitScaleConstraint.use_min_y -> use_min_y: boolean "Use the minimum Y value"
+#Constraint|LimitScaleConstraint.use_min_z -> use_min_z: boolean "Use the minimum Z value"
+#Constraint|LimitScaleConstraint.use_transform_limit -> use_transform_limit: boolean "Transforms are affected by this constraint as well"
+ + * Constraint|LockedTrackConstraint.lock -> lock_axis: enum "Axis that points upward"
+#+ * Constraint|LockedTrackConstraint.subtarget -> subtarget: string "NO DESCRIPTION"
+#+ * Constraint|LockedTrackConstraint.target -> target: pointer "Target Object"
+ + * Constraint|LockedTrackConstraint.track -> track_axis: enum "Axis that points to the target object"
+ + * Constraint|MaintainVolumeConstraint.axis -> free_axis: enum "The free scaling axis of the object"
+#+ * Constraint|MaintainVolumeConstraint.volume -> volume: float "Volume of the bone at rest"
+#+ * Constraint|PivotConstraint.head_tail -> head_tail: float "Target along length of bone: Head=0, Tail=1"
+#+ * Constraint|PivotConstraint.offset -> offset: float[3] "Offset of pivot from target (when set), or from owners location (when Fixed Position is off), or the absolute pivot point"
+#Constraint|PivotConstraint.rotation_range -> rotation_range: enum "Rotation range on which pivoting should occur"
+#+ * Constraint|PivotConstraint.subtarget -> subtarget: string "NO DESCRIPTION"
+#+ * Constraint|PivotConstraint.target -> target: pointer "Target Object, defining the position of the pivot when defined"
+#Constraint|PivotConstraint.use_relative_location -> use_relative_location: boolean "Offset will be an absolute point in space instead of relative to the target"
+#Constraint|PythonConstraint.has_script_error -> has_script_error: boolean, "(read-only) The linked Python script has thrown an error"
+#Constraint|PythonConstraint.target_count -> target_count: int "Usually only 1-3 are needed"
+#+ * Constraint|PythonConstraint.targets -> targets: collection, "(read-only) Target Objects"
+#+ * Constraint|PythonConstraint.text -> text: pointer "The text object that contains the Python script"
+#+ * Constraint|PythonConstraint.use_targets -> use_targets: boolean "Use the targets indicated in the constraint panel"
+#+ * Constraint|RigidBodyJointConstraint.axis_x -> axis_x: float "Rotate pivot on X axis in degrees"
+#+ * Constraint|RigidBodyJointConstraint.axis_y -> axis_y: float "Rotate pivot on Y axis in degrees"
+#+ * Constraint|RigidBodyJointConstraint.axis_z -> axis_z: float "Rotate pivot on Z axis in degrees"
+#+ * Constraint|RigidBodyJointConstraint.child -> child: pointer "Child object"
+#+ * Constraint|RigidBodyJointConstraint.pivot_type -> pivot_type: enum "NO DESCRIPTION"
+#+ * Constraint|RigidBodyJointConstraint.pivot_x -> pivot_x: float "Offset pivot on X"
+#+ * Constraint|RigidBodyJointConstraint.pivot_y -> pivot_y: float "Offset pivot on Y"
+#+ * Constraint|RigidBodyJointConstraint.pivot_z -> pivot_z: float "Offset pivot on Z"
+#Constraint|RigidBodyJointConstraint.show_pivot -> show_pivot: boolean "Display the pivot point and rotation in 3D view"
+#+ * Constraint|RigidBodyJointConstraint.target -> target: pointer "Target Object"
+#Constraint|RigidBodyJointConstraint.use_linked_collision -> use_linked_collision: boolean "Disable collision between linked bodies"
+#+ * Constraint|ShrinkwrapConstraint.distance -> distance: float "Distance to Target"
+#+ * Constraint|ShrinkwrapConstraint.shrinkwrap_type -> shrinkwrap_type: enum "Selects type of shrinkwrap algorithm for target position"
+#+ * Constraint|ShrinkwrapConstraint.target -> target: pointer "Target Object"
+#+ * Constraint|ShrinkwrapConstraint.use_x -> use_x: boolean "Projection over X Axis"
+#+ * Constraint|ShrinkwrapConstraint.use_y -> use_y: boolean "Projection over Y Axis"
+#+ * Constraint|ShrinkwrapConstraint.use_z -> use_z: boolean "Projection over Z Axis"
+#Constraint|SplineIKConstraint.chain_count -> chain_count: int "How many bones are included in the chain"
+#+ * Constraint|SplineIKConstraint.joint_bindings -> joint_bindings: float[32] "(EXPERIENCED USERS ONLY) The relative positions of the joints along the chain as percentages"
+#+ * Constraint|SplineIKConstraint.target -> target: pointer "Curve that controls this relationship"
+#Constraint|SplineIKConstraint.use_chain_offset -> use_chain_offset: boolean "Offset the entire chain relative to the root joint"
+#+ * Constraint|SplineIKConstraint.use_curve_radius -> use_curve_radius: boolean "Average radius of the endpoints is used to tweak the X and Z Scaling of the bones, on top of XZ Scale mode"
+#Constraint|SplineIKConstraint.use_even_divisions -> use_even_divisions: boolean "Ignore the relative lengths of the bones when fitting to the curve"
+#Constraint|SplineIKConstraint.use_y_stretch -> use_y_stretch: boolean "Stretch the Y axis of the bones to fit the curve"
+#Constraint|SplineIKConstraint.xz_scale_mode -> xz_scale_mode: enum "Method used for determining the scaling of the X and Z axes of the bones"
+#+ * Constraint|StretchToConstraint.bulge -> bulge: float "Factor between volume variation and stretching"
+#+ * Constraint|StretchToConstraint.head_tail -> head_tail: float "Target along length of bone: Head=0, Tail=1"
+#+ * Constraint|StretchToConstraint.keep_axis -> keep_axis: enum "Axis to maintain during stretch"
+#Constraint|StretchToConstraint.rest_length -> rest_length: float "Length at rest position"
+#+ * Constraint|StretchToConstraint.subtarget -> subtarget: string "NO DESCRIPTION"
+#+ * Constraint|StretchToConstraint.target -> target: pointer "Target Object"
+#+ * Constraint|StretchToConstraint.volume -> volume: enum "Maintain the objects volume as it stretches"
+#+ * Constraint|TrackToConstraint.head_tail -> head_tail: float "Target along length of bone: Head=0, Tail=1"
+#+ * Constraint|TrackToConstraint.subtarget -> subtarget: string "NO DESCRIPTION"
+#+ * Constraint|TrackToConstraint.target -> target: pointer "Target Object"
+ + * Constraint|TrackToConstraint.track -> track_axis: enum "Axis that points to the target object"
+ + * Constraint|TrackToConstraint.up -> up_axis: enum "Axis that points upward"
+#Constraint|TrackToConstraint.use_target_z -> use_target_z: boolean "Targets Z axis, not World Z axis, will constraint the Up direction"
+#+ * Constraint|TransformConstraint.from_max_x -> from_max_x: float "Top range of X axis source motion"
+#+ * Constraint|TransformConstraint.from_max_y -> from_max_y: float "Top range of Y axis source motion"
+#+ * Constraint|TransformConstraint.from_max_z -> from_max_z: float "Top range of Z axis source motion"
+#+ * Constraint|TransformConstraint.from_min_x -> from_min_x: float "Bottom range of X axis source motion"
+#+ * Constraint|TransformConstraint.from_min_y -> from_min_y: float "Bottom range of Y axis source motion"
+#+ * Constraint|TransformConstraint.from_min_z -> from_min_z: float "Bottom range of Z axis source motion"
+#+ * Constraint|TransformConstraint.map_from -> map_from: enum "The transformation type to use from the target"
+#+ * Constraint|TransformConstraint.map_to -> map_to: enum "The transformation type to affect of the constrained object"
+#+ * Constraint|TransformConstraint.map_to_x_from -> map_to_x_from: enum "The source axis constrained objects X axis uses"
+#+ * Constraint|TransformConstraint.map_to_y_from -> map_to_y_from: enum "The source axis constrained objects Y axis uses"
+#+ * Constraint|TransformConstraint.map_to_z_from -> map_to_z_from: enum "The source axis constrained objects Z axis uses"
+#+ * Constraint|TransformConstraint.subtarget -> subtarget: string "NO DESCRIPTION"
+#+ * Constraint|TransformConstraint.target -> target: pointer "Target Object"
+#+ * Constraint|TransformConstraint.to_max_x -> to_max_x: float "Top range of X axis destination motion"
+#+ * Constraint|TransformConstraint.to_max_y -> to_max_y: float "Top range of Y axis destination motion"
+#+ * Constraint|TransformConstraint.to_max_z -> to_max_z: float "Top range of Z axis destination motion"
+#+ * Constraint|TransformConstraint.to_min_x -> to_min_x: float "Bottom range of X axis destination motion"
+#+ * Constraint|TransformConstraint.to_min_y -> to_min_y: float "Bottom range of Y axis destination motion"
+#+ * Constraint|TransformConstraint.to_min_z -> to_min_z: float "Bottom range of Z axis destination motion"
+#Constraint|TransformConstraint.use_motion_extrapolate -> use_motion_extrapolate: boolean "Extrapolate ranges"
+#+ * Context.area -> area: pointer, "(read-only)"
+#+ * Context.main -> main: pointer, "(read-only)"
+#+ * Context.mode -> mode: enum, "(read-only)"
+#+ * Context.region -> region: pointer, "(read-only)"
+#+ * Context.region_data -> region_data: pointer, "(read-only)"
+#+ * Context.scene -> scene: pointer, "(read-only)"
+#+ * Context.screen -> screen: pointer, "(read-only)"
+#+ * Context.space_data -> space_data: pointer, "(read-only)"
+#+ * Context.tool_settings -> tool_settings: pointer, "(read-only)"
+#+ * Context.user_preferences -> user_preferences: pointer, "(read-only)"
+#+ * Context.window -> window: pointer, "(read-only)"
+ + * Context.manager -> wm: pointer, "(read-only)"
+#+ * Controller.name -> name: string "NO DESCRIPTION"
+#Controller.show_expanded -> show_expanded: boolean "Set controller expanded in the user interface"
+#Controller.states -> states: int "Set Controller state index (1 to 30)"
+#+ * Controller.type -> type: enum "NO DESCRIPTION"
+#Controller.use_priority -> use_priority: boolean "Mark controller for execution before all non-marked controllers (good for startup scripts)"
+#+ * Controller|ExpressionController.expression -> expression: string "NO DESCRIPTION"
+#+ * Controller|PythonController.mode -> mode: enum "Python script type (textblock or module - faster)"
+#+ * Controller|PythonController.module -> module: string "Module name and function to run e.g. someModule.main. Internal texts and external python files can be used"
+#+ * Controller|PythonController.text -> text: pointer "Text datablock with the python script"
+#Controller|PythonController.use_debug -> use_debug: boolean "Continuously reload the module from disk for editing external modules without restarting"
+#+ * CurveMap.extend -> extend: enum, "(read-only) Extrapolate the curve or extend it horizontally"
+#+ * CurveMap.points -> points: collection, "(read-only)"
+#+ * CurveMapPoint.handle_type -> handle_type: enum, "(read-only) Curve interpolation at this point: bezier or vector"
+#+ * CurveMapPoint.location -> location: float[2], "(read-only) X/Y coordinates of the curve point"
+#+ * CurveMapPoint.select -> select: boolean "Selection state of the curve point"
+#+ * CurveMapping.black_level -> black_level: float[3] "For RGB curves, the color that black is mapped to"
+#+ * CurveMapping.clip_max_x -> clip_max_x: float "NO DESCRIPTION"
+#+ * CurveMapping.clip_max_y -> clip_max_y: float "NO DESCRIPTION"
+#+ * CurveMapping.clip_min_x -> clip_min_x: float "NO DESCRIPTION"
+#+ * CurveMapping.clip_min_y -> clip_min_y: float "NO DESCRIPTION"
+#+ * CurveMapping.curves -> curves: collection, "(read-only)"
+#CurveMapping.use_clip -> use_clip: boolean "Force the curve view to fit a defined boundary"
+#+ * CurveMapping.white_level -> white_level: float[3] "For RGB curves, the color that white is mapped to"
+#TODO MOVE TO COLLECTION * CurveSplines.active -> active: pointer "Active curve spline"
+#DopeSheet.filter_group -> filter_group: pointer "Group that included Object should be a member of"
+#DopeSheet.show_armatures -> show_armatures: boolean "Include visualization of Armature related Animation data"
+#DopeSheet.show_cameras -> show_cameras: boolean "Include visualization of Camera related Animation data"
+#DopeSheet.show_curves -> show_curves: boolean "Include visualization of Curve related Animation data"
+#DopeSheet.show_expanded_summary -> show_expanded_summary: boolean "Collapse summary when shown, so all other channels get hidden. (DopeSheet Editors Only)"
+#DopeSheet.show_hidden -> show_hidden: boolean "Include channels from objects/bone that arent visible"
+#DopeSheet.show_lamps -> show_lamps: boolean "Include visualization of Lamp related Animation data"
+#DopeSheet.show_materials -> show_materials: boolean "Include visualization of Material related Animation data"
+#DopeSheet.show_meshes -> show_meshes: boolean "Include visualization of Mesh related Animation data"
+#DopeSheet.show_metaballs -> show_metaballs: boolean "Include visualization of Metaball related Animation data"
+#DopeSheet.show_missing_nla -> show_missing_nla: boolean "Include Animation Data blocks with no NLA data. (NLA Editor only)"
+#DopeSheet.show_nodes -> show_nodes: boolean "Include visualization of Node related Animation data"
+#DopeSheet.show_only_group_objects -> show_only_group_objects: boolean "Only include channels from Objects in the specified Group"
+#DopeSheet.show_only_selected -> show_only_selected: boolean "Only include channels relating to selected objects and data"
+#DopeSheet.show_particles -> show_particles: boolean "Include visualization of Particle related Animation data"
+#DopeSheet.show_scenes -> show_scenes: boolean "Include visualization of Scene related Animation data"
+#DopeSheet.show_shapekeys -> show_shapekeys: boolean "Include visualization of ShapeKey related Animation data"
+#DopeSheet.show_summary -> show_summary: boolean "Display an additional summary line. (DopeSheet Editors only)"
+#DopeSheet.show_textures -> show_textures: boolean "Include visualization of Texture related Animation data"
+#DopeSheet.show_transforms -> show_transforms: boolean "Include visualization of Object-level Animation data (mostly Transforms)"
+#DopeSheet.show_worlds -> show_worlds: boolean "Include visualization of World related Animation data"
+#+ * DopeSheet.source -> source: pointer, "(read-only) ID-Block representing source data, currently ID_SCE (for Dopesheet), and ID_SC (for Grease Pencil)"
+#+ * Driver.expression -> expression: string "Expression to use for Scripted Expression"
+#Driver.is_valid -> is_valid: boolean "Driver could not be evaluated in past, so should be skipped"
+#+ * Driver.show_debug_info -> show_debug_info: boolean "Show intermediate values for the driver calculations to allow debugging of drivers"
+#+ * Driver.type -> type: enum "Driver type"
+#+ * Driver.variables -> variables: collection, "(read-only) Properties acting as inputs for this driver"
+#+ * DriverTarget.bone_target -> bone_target: string "Name of PoseBone to use as target"
+#+ * DriverTarget.data_path -> data_path: string "RNA Path (from ID-block) to property used"
+#+ * DriverTarget.id -> id: pointer "ID-block that the specific property used can be found from (id_type property must be set first)"
+#+ * DriverTarget.id_type -> id_type: enum "Type of ID-block that can be used"
+#+ * DriverTarget.transform_type -> transform_type: enum "Driver variable type"
+#DriverTarget.use_local_space_transform -> use_local_space_transform: boolean "Use transforms in Local Space (as opposed to the worldspace default)"
+#+ * DriverVariable.name -> name: string "Name to use in scripted expressions/functions. (No spaces or dots are allowed. Also, must not start with a symbol or digit)"
+#+ * DriverVariable.targets -> targets: collection, "(read-only) Sources of input data for evaluating this variable"
+#+ * DriverVariable.type -> type: enum "Driver variable type"
+#+ * DupliObject.matrix -> matrix: float[16] "Object duplicate transformation matrix"
+#+ * DupliObject.matrix_original -> matrix_original: float[16] "The original matrix of this object before it was duplicated"
+#+ * DupliObject.object -> object: pointer, "(read-only) Object being duplicated"
+#+ * EditBone.bbone_in -> bbone_in: float "Length of first Bezier Handle (for B-Bones only)"
+#+ * EditBone.bbone_out -> bbone_out: float "Length of second Bezier Handle (for B-Bones only)"
+#+ * EditBone.bbone_segments -> bbone_segments: int "Number of subdivisions of bone (for B-Bones only)"
+#+ * EditBone.envelope_distance -> envelope_distance: float "Bone deformation distance (for Envelope deform only)"
+#+ * EditBone.envelope_weight -> envelope_weight: float "Bone deformation weight (for Envelope deform only)"
+#+ * EditBone.head -> head: float[3] "Location of head end of the bone"
+#+ * EditBone.head_radius -> head_radius: float "Radius of head of bone (for Envelope deform only)"
+#+ * EditBone.hide -> hide: boolean "Bone is not visible when in Edit Mode"
+#+ * EditBone.hide_select -> hide_select: boolean "Bone is able to be selected"
+#EditBone.layers -> layers: boolean[32] "Layers bone exists in"
+#+ * EditBone.lock -> lock: boolean "Bone is not able to be transformed when in Edit Mode"
+#+ * EditBone.matrix -> matrix: float[16], "(read-only) Read-only matrix calculated from the roll (armature space)"
+#+ * EditBone.name -> name: string "NO DESCRIPTION"
+#+ * EditBone.parent -> parent: pointer "Parent edit bone (in same Armature)"
+#+ * EditBone.roll -> roll: float "Bone rotation around head-tail axis"
+#+ * EditBone.select -> select: boolean "NO DESCRIPTION"
+#+ * EditBone.select_head -> select_head: boolean "NO DESCRIPTION"
+#+ * EditBone.select_tail -> select_tail: boolean "NO DESCRIPTION"
+#EditBone.show_wire -> show_wire: boolean "Bone is always drawn as Wireframe regardless of viewport draw mode. Useful for non-obstructive custom bone shapes"
+#+ * EditBone.tail -> tail: float[3] "Location of tail end of the bone"
+#+ * EditBone.tail_radius -> tail_radius: float "Radius of tail of bone (for Envelope deform only)"
+#EditBone.use_connect -> use_connect: boolean "When bone has a parent, bones head is struck to the parents tail"
+#EditBone.use_cyclic_offset -> use_cyclic_offset: boolean "When bone doesnt have a parent, it receives cyclic offset effects"
+#EditBone.use_deform -> use_deform: boolean "Bone does not deform any geometry"
+#EditBone.use_envelope_multiply -> use_envelope_multiply: boolean "When deforming bone, multiply effects of Vertex Group weights with Envelope influence"
+#EditBone.use_hinge -> use_hinge: boolean "Bone inherits rotation or scale from parent bone"
+#EditBone.use_inherit_scale -> use_inherit_scale: boolean "Bone inherits scaling from parent bone"
+#EditBone.use_local_location -> use_local_location: boolean "Bone location is set in local space"
+#+ * EffectorWeights.all -> all: float "All effectors weight"
+#EffectorWeights.apply_to_hair_growing -> apply_to_hair_growing: boolean "Use force fields when growing hair"
+#+ * EffectorWeights.boid -> boid: float "Boid effector weight"
+#+ * EffectorWeights.charge -> charge: float "Charge effector weight"
+#EffectorWeights.curve_guide -> curve_guide: float "Curve guide effector weight"
+#+ * EffectorWeights.drag -> drag: float "Drag effector weight"
+#+ * EffectorWeights.force -> force: float "Force effector weight"
+#+ * EffectorWeights.gravity -> gravity: float "Global gravity weight"
+#+ * EffectorWeights.group -> group: pointer "Limit effectors to this Group"
+#+ * EffectorWeights.harmonic -> harmonic: float "Harmonic effector weight"
+#+ * EffectorWeights.lennardjones -> lennardjones: float "Lennard-Jones effector weight"
+#+ * EffectorWeights.magnetic -> magnetic: float "Magnetic effector weight"
+#+ * EffectorWeights.texture -> texture: float "Texture effector weight"
+#+ * EffectorWeights.turbulence -> turbulence: float "Turbulence effector weight"
+#+ * EffectorWeights.vortex -> vortex: float "Vortex effector weight"
+#+ * EffectorWeights.wind -> wind: float "Wind effector weight"
+#+ * EnumPropertyItem.description -> description: string, "(read-only) Description of the items purpose"
+#+ * EnumPropertyItem.identifier -> identifier: string, "(read-only) Unique name used in the code and scripting"
+#+ * EnumPropertyItem.name -> name: string, "(read-only) Human readable name"
+#+ * EnumPropertyItem.value -> value: int, "(read-only) Value of the item"
+#+ * EnvironmentMap.clip_end -> clip_end: float "Objects further than this are not visible to map"
+#+ * EnvironmentMap.clip_start -> clip_start: float "Objects nearer than this are not visible to map"
+#+ * EnvironmentMap.depth -> depth: int "Number of times a map will be rendered recursively (mirror effects.)"
+#EnvironmentMap.layers_ignore -> layers_ignore: boolean[20] "Hide objects on these layers when generating the Environment Map"
+#+ * EnvironmentMap.mapping -> mapping: enum "NO DESCRIPTION"
+#+ * EnvironmentMap.resolution -> resolution: int "Pixel resolution of the rendered environment map"
+#+ * EnvironmentMap.source -> source: enum "NO DESCRIPTION"
+#+ * EnvironmentMap.viewpoint_object -> viewpoint_object: pointer "Object to use as the environment maps viewpoint location"
+#+ * EnvironmentMap.zoom -> zoom: float "NO DESCRIPTION"
+#+ * Event.ascii -> ascii: string, "(read-only) Single ASCII character for this event"
+ + * Event.alt -> is_pressed_alt: boolean, "(read-only) True when the Alt/Option key is held"
+ + * Event.oskey -> is_pressed_cmd: boolean, "(read-only) True when the Cmd key is held"
+ + * Event.ctrl -> is_pressed_ctrl: boolean, "(read-only) True when the Ctrl key is held"
+ + * Event.shift -> is_pressed_shift: boolean, "(read-only) True when the Shift key is held"
+#+ * Event.mouse_prev_x -> mouse_prev_x: int, "(read-only) The window relative vertical location of the mouse"
+#+ * Event.mouse_prev_y -> mouse_prev_y: int, "(read-only) The window relative horizontal location of the mouse"
+#+ * Event.mouse_region_x -> mouse_region_x: int, "(read-only) The region relative vertical location of the mouse"
+#+ * Event.mouse_region_y -> mouse_region_y: int, "(read-only) The region relative horizontal location of the mouse"
+#+ * Event.mouse_x -> mouse_x: int, "(read-only) The window relative vertical location of the mouse"
+#+ * Event.mouse_y -> mouse_y: int, "(read-only) The window relative horizontal location of the mouse"
+#+ * Event.type -> type: enum, "(read-only)"
+#+ * Event.value -> value: enum, "(read-only) The type of event, only applies to some"
+#+ * FCurve.array_index -> array_index: int "Index to the specific property affected by F-Curve if applicable"
+#+ * FCurve.color -> color: float[3] "Color of the F-Curve in the Graph Editor"
+#+ * FCurve.color_mode -> color_mode: enum "Method used to determine color of F-Curve in Graph Editor"
+#+ * FCurve.data_path -> data_path: string "RNA Path to property affected by F-Curve"
+#+ * FCurve.driver -> driver: pointer, "(read-only) Channel Driver (only set for Driver F-Curves)"
+#+ * FCurve.extrapolation -> extrapolation: enum "NO DESCRIPTION"
+#+ * FCurve.group -> group: pointer "Action Group that this F-Curve belongs to"
+#+ * FCurve.hide -> hide: boolean "F-Curve and its keyframes are hidden in the Graph Editor graphs"
+#+ * FCurve.is_valid -> is_valid: boolean "False when F-Curve could not be evaluated in past, so should be skipped when evaluating"
+#+ * FCurve.keyframe_points -> keyframe_points: collection, "(read-only) User-editable keyframes"
+#+ * FCurve.lock -> lock: boolean "F-Curves settings cannot be edited"
+#+ * FCurve.modifiers -> modifiers: collection, "(read-only) Modifiers affecting the shape of the F-Curve"
+#+ * FCurve.mute -> mute: boolean "F-Curve is not evaluated"
+#+ * FCurve.sampled_points -> sampled_points: collection, "(read-only) Sampled animation data"
+#+ * FCurve.select -> select: boolean "F-Curve is selected for editing"
+#+ * FCurve.use_auto_handle_clamp -> use_auto_handle_clamp: boolean "All auto-handles for F-Curve are clamped"
+#+ * FCurveModifiers.active -> active: pointer "Active F-Curve Modifier"
+#+ * FCurveSample.co -> co: float[2] "Point coordinates"
+#+ * FCurveSample.select -> select: boolean "Selection status"
+#REMOVE * FModifier.active -> active: boolean "F-Curve Modifier is the one being edited"
+#FModifier.is_valid -> is_valid: boolean, "(read-only) F-Curve Modifier has invalid settings and will not be evaluated"
+#+ * FModifier.mute -> mute: boolean "F-Curve Modifier will not be evaluated"
+#FModifier.show_expanded -> show_expanded: boolean "F-Curve Modifiers panel is expanded in UI"
+#+ * FModifier.type -> type: enum, "(read-only) F-Curve Modifier Type"
+#+ * FModifierEnvelopeControlPoint.frame -> frame: float "Frame this control-point occurs on"
+#FModifierEnvelopeControlPoint.max -> max: float "Upper bound of envelope at this control-point"
+#FModifierEnvelopeControlPoint.min -> min: float "Lower bound of envelope at this control-point"
+#FModifier|FModifierCycles.cycles_after -> cycles_after: float "Maximum number of cycles to allow after last keyframe. (0 = infinite)"
+#FModifier|FModifierCycles.cycles_before -> cycles_before: float "Maximum number of cycles to allow before first keyframe. (0 = infinite)"
+#FModifier|FModifierCycles.mode_after -> mode_after: enum "Cycling mode to use after last keyframe"
+#FModifier|FModifierCycles.mode_before -> mode_before: enum "Cycling mode to use before first keyframe"
+#+ * FModifier|FModifierEnvelope.control_points -> control_points: collection, "(read-only) Control points defining the shape of the envelope"
+#FModifier|FModifierEnvelope.default_max -> default_max: float "Upper distance from Reference Value for 1:1 default influence"
+#FModifier|FModifierEnvelope.default_min -> default_min: float "Lower distance from Reference Value for 1:1 default influence"
+#+ * FModifier|FModifierEnvelope.reference_value -> reference_value: float "Value that envelopes influence is centered around / based on"
+#+ * FModifier|FModifierFunctionGenerator.amplitude -> amplitude: float "Scale factor determining the maximum/minimum values"
+#+ * FModifier|FModifierFunctionGenerator.function_type -> function_type: enum "Type of built-in function to use"
+#+ * FModifier|FModifierFunctionGenerator.phase_multiplier -> phase_multiplier: float "Scale factor determining the speed of the function"
+#+ * FModifier|FModifierFunctionGenerator.phase_offset -> phase_offset: float "Constant factor to offset time by for function"
+#FModifier|FModifierFunctionGenerator.use_additive -> use_additive: boolean "Values generated by this modifier are applied on top of the existing values instead of overwriting them"
+#+ * FModifier|FModifierFunctionGenerator.value_offset -> value_offset: float "Constant factor to offset values by"
+#+ * FModifier|FModifierGenerator.coefficients -> coefficients: float[32] "Coefficients for x (starting from lowest power of x^0)"
+#+ * FModifier|FModifierGenerator.mode -> mode: enum "Type of generator to use"
+#+ * FModifier|FModifierGenerator.poly_order -> poly_order: int "The highest power of x for this polynomial. (number of coefficients - 1)"
+#FModifier|FModifierGenerator.use_additive -> use_additive: boolean "Values generated by this modifier are applied on top of the existing values instead of overwriting them"
+#FModifier|FModifierLimits.max_x -> max_x: float "Highest X value to allow"
+#FModifier|FModifierLimits.max_y -> max_y: float "Highest Y value to allow"
+#FModifier|FModifierLimits.min_x -> min_x: float "Lowest X value to allow"
+#FModifier|FModifierLimits.min_y -> min_y: float "Lowest Y value to allow"
+#FModifier|FModifierLimits.use_max_x -> use_max_x: boolean "Use the maximum X value"
+#FModifier|FModifierLimits.use_max_y -> use_max_y: boolean "Use the maximum Y value"
+#FModifier|FModifierLimits.use_min_x -> use_min_x: boolean "Use the minimum X value"
+#FModifier|FModifierLimits.use_min_y -> use_min_y: boolean "Use the minimum Y value"
+#FModifier|FModifierNoise.blend_type -> blend_type: enum "Method of modifying the existing F-Curve"
+#+ * FModifier|FModifierNoise.depth -> depth: int "Amount of fine level detail present in the noise"
+#+ * FModifier|FModifierNoise.phase -> phase: float "A random seed for the noise effect"
+#FModifier|FModifierNoise.scale -> scale: float "Scaling (in time) of the noise"
+#+ * FModifier|FModifierNoise.strength -> strength: float "Amplitude of the noise - the amount that it modifies the underlying curve"
+#+ * FModifier|FModifierStepped.frame_end -> frame_end: float "Frame that modifiers influence ends (if applicable)"
+#FModifier|FModifierStepped.frame_offset -> frame_offset: float "Reference number of frames before frames get held. Use to get hold for 1-3 vs 5-7 holding patterns"
+#+ * FModifier|FModifierStepped.frame_start -> frame_start: float "Frame that modifiers influence starts (if applicable)"
+#FModifier|FModifierStepped.frame_step -> frame_step: float "Number of frames to hold each value"
+#+ * FModifier|FModifierStepped.use_frame_end -> use_frame_end: boolean "Restrict modifier to only act before its end frame"
+#+ * FModifier|FModifierStepped.use_frame_start -> use_frame_start: boolean "Restrict modifier to only act after its start frame"
+#FieldSettings.apply_to_location -> apply_to_location: boolean "Effect particles location"
+#FieldSettings.apply_to_rotation -> apply_to_rotation: boolean "Effect particles dynamic rotation"
+#FieldSettings.distance_max -> distance_max: float "Maximum distance for the field to work"
+#FieldSettings.distance_min -> distance_min: float "Minimum distance for the fields fall-off"
+#+ * FieldSettings.falloff_power -> falloff_power: float "Falloff power (real gravitational falloff = 2)"
+#+ * FieldSettings.falloff_type -> falloff_type: enum "Fall-off shape"
+#+ * FieldSettings.flow -> flow: float "Convert effector force into air flow velocity"
+#+ * FieldSettings.guide_clump_amount -> guide_clump_amount: float "Amount of clumping"
+#+ * FieldSettings.guide_clump_shape -> guide_clump_shape: float "Shape of clumping"
+#+ * FieldSettings.guide_free -> guide_free: float "Guide-free time from particle lifes end"
+#+ * FieldSettings.guide_kink_amplitude -> guide_kink_amplitude: float "The amplitude of the offset"
+#+ * FieldSettings.guide_kink_axis -> guide_kink_axis: enum "Which axis to use for offset"
+#+ * FieldSettings.guide_kink_frequency -> guide_kink_frequency: float "The frequency of the offset (1/total length)"
+#+ * FieldSettings.guide_kink_shape -> guide_kink_shape: float "Adjust the offset to the beginning/end"
+#+ * FieldSettings.guide_kink_type -> guide_kink_type: enum "Type of periodic offset on the curve"
+#+ * FieldSettings.guide_minimum -> guide_minimum: float "The distance from which particles are affected fully"
+#+ * FieldSettings.harmonic_damping -> harmonic_damping: float "Damping of the harmonic force"
+#+ * FieldSettings.inflow -> inflow: float "Inwards component of the vortex force"
+#+ * FieldSettings.linear_drag -> linear_drag: float "Drag component proportional to velocity"
+#+ * FieldSettings.noise -> noise: float "Noise of the force"
+#+ * FieldSettings.quadratic_drag -> quadratic_drag: float "Drag component proportional to the square of velocity"
+#+ * FieldSettings.radial_falloff -> radial_falloff: float "Radial falloff power (real gravitational falloff = 2)"
+#FieldSettings.radial_max -> radial_max: float "Maximum radial distance for the field to work"
+#FieldSettings.radial_min -> radial_min: float "Minimum radial distance for the fields fall-off"
+#+ * FieldSettings.rest_length -> rest_length: float "Rest length of the harmonic force"
+#+ * FieldSettings.seed -> seed: int "Seed of the noise"
+#+ * FieldSettings.shape -> shape: enum "Which direction is used to calculate the effector force"
+#+ * FieldSettings.size -> size: float "Size of the noise"
+#+ * FieldSettings.strength -> strength: float "Strength of force field"
+#+ * FieldSettings.texture -> texture: pointer "Texture to use as force"
+#+ * FieldSettings.texture_mode -> texture_mode: enum "How the texture effect is calculated (RGB & Curl need a RGB texture else Gradient will be used instead)"
+#+ * FieldSettings.texture_nabla -> texture_nabla: float "Defines size of derivative offset used for calculating gradient and curl"
+#+ * FieldSettings.type -> type: enum "Type of field"
+#FieldSettings.use_2d_force -> use_2d_force: boolean "Apply force only in 2d"
+#FieldSettings.use_absorption -> use_absorption: boolean "Force gets absorbed by collision objects"
+#FieldSettings.use_global_coords -> use_global_coords: boolean "Use effector/global coordinates for turbulence"
+#FieldSettings.use_guide_path_add -> use_guide_path_add: boolean "Based on distance/falloff it adds a portion of the entire path"
+#+ * FieldSettings.use_guide_path_weight -> use_guide_path_weight: boolean "Use curve weights to influence the particle influence along the curve"
+#+ * FieldSettings.use_max_distance -> use_max_distance: boolean "Use a maximum distance for the field to work"
+#+ * FieldSettings.use_min_distance -> use_min_distance: boolean "Use a minimum distance for the fields fall-off"
+#FieldSettings.use_multiple_springs -> use_multiple_springs: boolean "Every point is effected by multiple springs"
+#FieldSettings.use_object_coords -> use_object_coords: boolean "Use object/global coordinates for texture"
+#+ * FieldSettings.use_radial_max -> use_radial_max: boolean "Use a maximum radial distance for the field to work"
+#+ * FieldSettings.use_radial_min -> use_radial_min: boolean "Use a minimum radial distance for the fields fall-off"
+#FieldSettings.use_root_coords -> use_root_coords: boolean "Texture coordinates from root particle locations"
+#+ * FieldSettings.z_direction -> z_direction: enum "Effect in full or only positive/negative Z direction"
+#+ * FileSelectParams.directory -> directory: string "Directory displayed in the file browser"
+#FileSelectParams.display_type -> display_type: enum "Display mode for the file list"
+#FileSelectParams.filename -> filename: string "Active file in the file browser"
+#FileSelectParams.show_hidden -> show_hidden: boolean "Hide hidden dot files"
+#FileSelectParams.sort_method -> sort_method: enum "NO DESCRIPTION"
+#+ * FileSelectParams.title -> title: string, "(read-only) Title for the file browser"
+#FileSelectParams.use_filter -> use_filter: boolean "Enable filtering of files"
+#FileSelectParams.use_filter_blender -> use_filter_blender: boolean "Show .blend files"
+#FileSelectParams.use_filter_folder -> use_filter_folder: boolean "Show folders"
+#FileSelectParams.use_filter_font -> use_filter_font: boolean "Show font files"
+#FileSelectParams.use_filter_image -> use_filter_image: boolean "Show image files"
+#FileSelectParams.use_filter_movie -> use_filter_movie: boolean "Show movie files"
+#FileSelectParams.use_filter_script -> use_filter_script: boolean "Show script files"
+#FileSelectParams.use_filter_sound -> use_filter_sound: boolean "Show sound files"
+#FileSelectParams.use_filter_text -> use_filter_text: boolean "Show text files"
+#+ * FluidSettings.type -> type: enum "Type of participation in the fluid simulation"
+#+ * FluidSettings|ControlFluidSettings.attraction_radius -> attraction_radius: float "Specifies the force field radius around the control object"
+#+ * FluidSettings|ControlFluidSettings.attraction_strength -> attraction_strength: float "Force strength for directional attraction towards the control object"
+#+ * FluidSettings|ControlFluidSettings.end_time -> end_time: float "Specifies time when the control particles are deactivated"
+#+ * FluidSettings|ControlFluidSettings.quality -> quality: float "Specifies the quality which is used for object sampling. (higher = better but slower)"
+#+ * FluidSettings|ControlFluidSettings.start_time -> start_time: float "Specifies time when the control particles are activated"
+#FluidSettings|ControlFluidSettings.use -> use: boolean "Object contributes to the fluid simulation"
+#FluidSettings|ControlFluidSettings.use_reverse_frames -> use_reverse_frames: boolean "Reverse control object movement"
+#+ * FluidSettings|ControlFluidSettings.velocity_radius -> velocity_radius: float "Specifies the force field radius around the control object"
+#+ * FluidSettings|ControlFluidSettings.velocity_strength -> velocity_strength: float "Force strength of how much of the control objects velocity is influencing the fluid velocity"
+#+ * FluidSettings|DomainFluidSettings.compressibility -> compressibility: float "Allowed compressibility due to gravitational force for standing fluid. (directly affects simulation step size)"
+#+ * FluidSettings|DomainFluidSettings.end_time -> end_time: float "Simulation time of the last blender frame (in seconds)"
+#FluidSettings|DomainFluidSettings.filepath -> filepath: string "Directory (and/or filename prefix) to store baked fluid simulation files in"
+#+ * FluidSettings|DomainFluidSettings.generate_particles -> generate_particles: float "Amount of particles to generate (0=off, 1=normal, >1=more)"
+#+ * FluidSettings|DomainFluidSettings.gravity -> gravity: float[3] "Gravity in X, Y and Z direction"
+#+ * FluidSettings|DomainFluidSettings.grid_levels -> grid_levels: int "Number of coarsened grids to use (-1 for automatic)"
+#+ * FluidSettings|DomainFluidSettings.memory_estimate -> memory_estimate: string, "(read-only) Estimated amount of memory needed for baking the domain"
+#+ * FluidSettings|DomainFluidSettings.partial_slip_factor -> partial_slip_factor: float "Amount of mixing between no- and free-slip, 0 is no slip and 1 is free slip"
+#+ * FluidSettings|DomainFluidSettings.preview_resolution -> preview_resolution: int "Preview resolution in X,Y and Z direction"
+#+ * FluidSettings|DomainFluidSettings.render_display_mode -> render_display_mode: enum "How to display the mesh for rendering"
+#+ * FluidSettings|DomainFluidSettings.resolution -> resolution: int "Domain resolution in X,Y and Z direction"
+#FluidSettings|DomainFluidSettings.simulation_scale -> simulation_scale: float "Size of the simulation domain in metres"
+#+ * FluidSettings|DomainFluidSettings.slip_type -> slip_type: enum "NO DESCRIPTION"
+#+ * FluidSettings|DomainFluidSettings.start_time -> start_time: float "Simulation time of the first blender frame (in seconds)"
+#FluidSettings|DomainFluidSettings.surface_smooth -> surface_smooth: float "Amount of surface smoothing. A value of 0 is off, 1 is normal smoothing and more than 1 is extra smoothing"
+#+ * FluidSettings|DomainFluidSettings.surface_subdivisions -> surface_subdivisions: int "Number of isosurface subdivisions. This is necessary for the inclusion of particles into the surface generation. Warning - can lead to longer computation times!"
+#+ * FluidSettings|DomainFluidSettings.tracer_particles -> tracer_particles: int "Number of tracer particles to generate"
+#FluidSettings|DomainFluidSettings.use_reverse_frames -> use_reverse_frames: boolean "Reverse fluid frames"
+#FluidSettings|DomainFluidSettings.use_speed_vectors -> use_speed_vectors: boolean "Generate speed vectors for vector blur"
+#FluidSettings|DomainFluidSettings.use_time_override -> use_time_override: boolean "Use a custom start and end time (in seconds) instead of the scenes timeline"
+#+ * FluidSettings|DomainFluidSettings.viewport_display_mode -> viewport_display_mode: enum "How to display the mesh in the viewport"
+#+ * FluidSettings|DomainFluidSettings.viscosity_base -> viscosity_base: float "Viscosity setting: value that is multiplied by 10 to the power of (exponent*-1)"
+#+ * FluidSettings|DomainFluidSettings.viscosity_exponent -> viscosity_exponent: int "Negative exponent for the viscosity value (to simplify entering small values e.g. 5*10^-6.)"
+#+ * FluidSettings|DomainFluidSettings.viscosity_preset -> viscosity_preset: enum "Set viscosity of the fluid to a preset value, or use manual input"
+#+ * FluidSettings|FluidFluidSettings.initial_velocity -> initial_velocity: float[3] "Initial velocity of fluid"
+#FluidSettings|FluidFluidSettings.use -> use: boolean "Object contributes to the fluid simulation"
+#FluidSettings|FluidFluidSettings.use_animated_mesh -> use_animated_mesh: boolean "Export this mesh as an animated one. Slower, only use if really necessary (e.g. armatures or parented objects), animated pos/rot/scale IPOs do not require it"
+#+ * FluidSettings|FluidFluidSettings.volume_initialization -> volume_initialization: enum "Volume initialization type"
+#+ * FluidSettings|InflowFluidSettings.inflow_velocity -> inflow_velocity: float[3] "Initial velocity of fluid"
+#FluidSettings|InflowFluidSettings.use -> use: boolean "Object contributes to the fluid simulation"
+#FluidSettings|InflowFluidSettings.use_animated_mesh -> use_animated_mesh: boolean "Export this mesh as an animated one. Slower, only use if really necessary (e.g. armatures or parented objects), animated pos/rot/scale IPOs do not require it"
+#FluidSettings|InflowFluidSettings.use_local_coords -> use_local_coords: boolean "Use local coordinates for inflow. (e.g. for rotating objects)"
+#+ * FluidSettings|InflowFluidSettings.volume_initialization -> volume_initialization: enum "Volume initialization type"
+#+ * FluidSettings|ObstacleFluidSettings.impact_factor -> impact_factor: float "This is an unphysical value for moving objects - it controls the impact an obstacle has on the fluid, =0 behaves a bit like outflow (deleting fluid), =1 is default, while >1 results in high forces. Can be used to tweak total mass"
+#+ * FluidSettings|ObstacleFluidSettings.partial_slip_factor -> partial_slip_factor: float "Amount of mixing between no- and free-slip, 0 is no slip and 1 is free slip"
+#+ * FluidSettings|ObstacleFluidSettings.slip_type -> slip_type: enum "NO DESCRIPTION"
+#FluidSettings|ObstacleFluidSettings.use -> use: boolean "Object contributes to the fluid simulation"
+#FluidSettings|ObstacleFluidSettings.use_animated_mesh -> use_animated_mesh: boolean "Export this mesh as an animated one. Slower, only use if really necessary (e.g. armatures or parented objects), animated pos/rot/scale IPOs do not require it"
+#+ * FluidSettings|ObstacleFluidSettings.volume_initialization -> volume_initialization: enum "Volume initialization type"
+#FluidSettings|OutflowFluidSettings.use -> use: boolean "Object contributes to the fluid simulation"
+#FluidSettings|OutflowFluidSettings.use_animated_mesh -> use_animated_mesh: boolean "Export this mesh as an animated one. Slower, only use if really necessary (e.g. armatures or parented objects), animated pos/rot/scale IPOs do not require it"
+#+ * FluidSettings|OutflowFluidSettings.volume_initialization -> volume_initialization: enum "Volume initialization type"
+#+ * FluidSettings|ParticleFluidSettings.alpha_influence -> alpha_influence: float "Amount of particle alpha change, inverse of size influence: 0=off (all same alpha), 1=full. (large particles get lower alphas, smaller ones higher values)"
+#FluidSettings|ParticleFluidSettings.filepath -> filepath: string "Directory (and/or filename prefix) to store and load particles from"
+#+ * FluidSettings|ParticleFluidSettings.particle_influence -> particle_influence: float "Amount of particle size scaling: 0=off (all same size), 1=full (range 0.2-2.0), >1=stronger"
+#FluidSettings|ParticleFluidSettings.show_tracer -> show_tracer: boolean "Show tracer particles"
+#FluidSettings|ParticleFluidSettings.use_drops -> use_drops: boolean "Show drop particles"
+#FluidSettings|ParticleFluidSettings.use_floats -> use_floats: boolean "Show floating foam particles"
+#+ * Function.description -> description: string, "(read-only) Description of the Functions purpose"
+#+ * Function.identifier -> identifier: string, "(read-only) Unique name used in the code and scripting"
+#Function.is_registered -> is_registered: boolean, "(read-only) Function is registered as callback as part of type registration"
+#Function.is_registered_optional -> is_registered_optional: boolean, "(read-only) Function is optionally registered as callback part of type registration"
+#+ * Function.parameters -> parameters: collection, "(read-only) Parameters for the function"
+#Function.use_self -> use_self: boolean, "(read-only) Function does not pass its self as an argument (becomes a class method in python)"
+#+ * GPencilFrame.frame_number -> frame_number: int "The frame on which this sketch appears"
+#GPencilFrame.is_edited -> is_edited: boolean "Frame is being edited (painted on)"
+#+ * GPencilFrame.select -> select: boolean "Frame is selected for editing in the DopeSheet"
+#+ * GPencilFrame.strokes -> strokes: collection, "(read-only) Freehand curves defining the sketch on this frame"
+#+ * GPencilLayer.active -> active: boolean "Set active layer for editing"
+#+ * GPencilLayer.active_frame -> active_frame: pointer, "(read-only) Frame currently being displayed for this layer"
+#GPencilLayer.alpha -> alpha: float "Layer Opacity"
+#+ * GPencilLayer.color -> color: float[3] "Color for all strokes in this layer"
+#+ * GPencilLayer.frames -> frames: collection, "(read-only) Sketches for this layer on different frames"
+#GPencilLayer.ghost_range_max -> ghost_range_max: int "Maximum number of frames on either side of the active frame to show (0 = show the first available sketch on either side)"
+#+ * GPencilLayer.hide -> hide: boolean "Set layer Visibility"
+#+ * GPencilLayer.info -> info: string "Layer name"
+#GPencilLayer.line_width -> line_width: int "Thickness of strokes (in pixels)"
+#+ * GPencilLayer.lock -> lock: boolean "Protect layer from further editing and/or frame changes"
+#GPencilLayer.lock_frame -> lock_frame: boolean "Lock current frame displayed by layer"
+#+ * GPencilLayer.select -> select: boolean "Layer is selected for editing in the DopeSheet"
+#+ * GPencilLayer.show_points -> show_points: boolean "Draw the points which make up the strokes (for debugging purposes)"
+#+ * GPencilLayer.use_onion_skinning -> use_onion_skinning: boolean "Ghost frames on either side of frame"
+#+ * GPencilStroke.points -> points: collection, "(read-only) Stroke data points"
+#+ * GPencilStrokePoint.co -> co: float[3] "NO DESCRIPTION"
+#+ * GPencilStrokePoint.pressure -> pressure: float "Pressure of tablet at point when drawing it"
+#+ * GameObjectSettings.actuators -> actuators: collection, "(read-only) Game engine actuators to act on events"
+#GameObjectSettings.collision_bounds_type -> collision_bounds_type: enum "Selects the collision type"
+#+ * GameObjectSettings.collision_margin -> collision_margin: float "Extra margin around object for collision detection, small amount required for stability"
+#+ * GameObjectSettings.controllers -> controllers: collection, "(read-only) Game engine controllers to process events, connecting sensor to actuators"
+#+ * GameObjectSettings.damping -> damping: float "General movement damping"
+#+ * GameObjectSettings.form_factor -> form_factor: float "Form factor scales the inertia tensor"
+#+ * GameObjectSettings.friction_coefficients -> friction_coefficients: float[3] "Relative friction coefficient in the in the X, Y and Z directions, when anisotropic friction is enabled"
+#GameObjectSettings.lock_location_x -> lock_location_x: boolean "Disable simulation of linear motion along the X axis"
+#GameObjectSettings.lock_location_y -> lock_location_y: boolean "Disable simulation of linear motion along the Y axis"
+#GameObjectSettings.lock_location_z -> lock_location_z: boolean "Disable simulation of linear motion along the Z axis"
+#GameObjectSettings.lock_rotation_x -> lock_rotation_x: boolean "Disable simulation of angular motion along the X axis"
+#GameObjectSettings.lock_rotation_y -> lock_rotation_y: boolean "Disable simulation of angular motion along the Y axis"
+#GameObjectSettings.lock_rotation_z -> lock_rotation_z: boolean "Disable simulation of angular motion along the Z axis"
+#+ * GameObjectSettings.mass -> mass: float "Mass of the object"
+#+ * GameObjectSettings.physics_type -> physics_type: enum "Selects the type of physical representation"
+#+ * GameObjectSettings.properties -> properties: collection, "(read-only) Game engine properties"
+#+ * GameObjectSettings.radius -> radius: float "Radius of bounding sphere and material physics"
+#+ * GameObjectSettings.rotation_damping -> rotation_damping: float "General rotation damping"
+#+ * GameObjectSettings.sensors -> sensors: collection, "(read-only) Game engine sensor to detect events"
+#+ * GameObjectSettings.show_actuators -> show_actuators: boolean "Shows actuators for this object in the user interface"
+#+ * GameObjectSettings.show_controllers -> show_controllers: boolean "Shows controllers for this object in the user interface"
+#GameObjectSettings.show_debug_state -> show_debug_state: boolean "Print state debug info in the game engine"
+#+ * GameObjectSettings.show_sensors -> show_sensors: boolean "Shows sensors for this object in the user interface"
+#+ * GameObjectSettings.show_state_panel -> show_state_panel: boolean "Show state panel"
+#+ * GameObjectSettings.soft_body -> soft_body: pointer, "(read-only) Settings for Bullet soft body simulation"
+#GameObjectSettings.states_initial -> states_initial: boolean[30] "Initial state when the game starts"
+#GameObjectSettings.states_visible -> states_visible: boolean[30] "State determining which controllers are displayed"
+#+ * GameObjectSettings.use_activity_culling -> use_activity_culling: boolean "Disable simulation of angular motion along the Z axis"
+#GameObjectSettings.use_actor -> use_actor: boolean "Object is detected by the Near and Radar sensor"
+#GameObjectSettings.use_all_states -> use_all_states: boolean "Set all state bits"
+#GameObjectSettings.use_anisotropic_friction -> use_anisotropic_friction: boolean "Enable anisotropic friction"
+#+ * GameObjectSettings.use_collision_bounds -> use_collision_bounds: boolean "Specify a collision bounds type other than the default"
+#GameObjectSettings.use_collision_compound -> use_collision_compound: boolean "Add children to form a compound collision object"
+#GameObjectSettings.use_ghost -> use_ghost: boolean "Object does not restitute collisions, like a ghost"
+#GameObjectSettings.use_material_physics -> use_material_physics: boolean "Use physics settings in materials"
+#GameObjectSettings.use_rotate_from_normal -> use_rotate_from_normal: boolean "Use face normal to rotate object, so that it points away from the surface"
+#GameObjectSettings.use_sleep -> use_sleep: boolean "Disable auto (de)activation in physics simulation"
+#GameObjectSettings.used_states -> used_states: boolean[30], "(read-only) States which are being used by controllers"
+#GameObjectSettings.velocity_max -> velocity_max: float "Clamp velocity to this maximum speed"
+#GameObjectSettings.velocity_min -> velocity_min: float "Clamp velocity to this minimum speed (except when totally still)"
+#+ * GameProperty.name -> name: string "Available as GameObject attributes in the game engines python API"
+ + * GameProperty.debug -> show_debug: boolean "Print debug information for this property"
+#+ * GameProperty.type -> type: enum "NO DESCRIPTION"
+#+ * GameProperty|GameBooleanProperty.value -> value: boolean "Property value"
+#+ * GameProperty|GameFloatProperty.value -> value: float "Property value"
+#+ * GameProperty|GameIntProperty.value -> value: int "Property value"
+#+ * GameProperty|GameStringProperty.value -> value: string "Property value"
+#+ * GameProperty|GameTimerProperty.value -> value: float "Property value"
+#+ * GameSoftBodySettings.cluster_iterations -> cluster_iterations: int "Specify the number of cluster iterations"
+#GameSoftBodySettings.collision_margin -> collision_margin: float "Collision margin for soft body. Small value makes the algorithm unstable"
+#+ * GameSoftBodySettings.dynamic_friction -> dynamic_friction: float "Dynamic Friction"
+#GameSoftBodySettings.linear_stiffness -> linear_stiffness: float "Linear stiffness of the soft body links"
+#GameSoftBodySettings.location_iterations -> location_iterations: int "Position solver iterations"
+#GameSoftBodySettings.shape_threshold -> shape_threshold: float "Shape matching threshold"
+#GameSoftBodySettings.use_bending_constraints -> use_bending_constraints: boolean "Enable bending constraints"
+#GameSoftBodySettings.use_cluster_rigid_to_softbody -> use_cluster_rigid_to_softbody: boolean "Enable cluster collision between soft and rigid body"
+#GameSoftBodySettings.use_cluster_soft_to_softbody -> use_cluster_soft_to_softbody: boolean "Enable cluster collision between soft and soft body"
+#GameSoftBodySettings.use_shape_match -> use_shape_match: boolean "Enable soft body shape matching goal"
+#GameSoftBodySettings.weld_threshold -> weld_threshold: float "Welding threshold: distance between nearby vertices to be considered equal => set to 0.0 to disable welding test and speed up scene loading (ok if the mesh has no duplicates)"
+#+ * Header.bl_idname -> bl_idname: string "If this is set, the header gets a custom ID, otherwise it takes the name of the class used to define the panel. For example, if the class name is OBJECT_HT_hello, and bl_idname is not set by the script, then bl_idname = OBJECT_HT_hello"
+#+ * Header.bl_space_type -> bl_space_type: enum "The space where the header is going to be used in."
+#+ * Header.layout -> layout: pointer, "(read-only) Defines the structure of the header in the UI."
+#+ * Histogram.mode -> mode: enum "Channels to display when drawing the histogram"
+#+ * ID.library -> library: pointer, "(read-only) Library file the datablock is linked from"
+#+ * ID.name -> name: string "Unique datablock ID name"
+#+ * ID.tag -> tag: boolean "Tools can use this to tag data, (initial state is undefined)"
+#ID.use_fake_user -> use_fake_user: boolean "Saves this datablock even if it has no users"
+#+ * ID.users -> users: int, "(read-only) Number of times this datablock is referenced"
+#+ * IDProperty.collection -> collection: collection, "(read-only)"
+#+ * IDProperty.double -> double: float "NO DESCRIPTION"
+#+ * IDProperty.double_array -> double_array: float[1] "NO DESCRIPTION"
+#+ * IDProperty.float -> float: float "NO DESCRIPTION"
+#+ * IDProperty.float_array -> float_array: float[1] "NO DESCRIPTION"
+#+ * IDProperty.group -> group: pointer, "(read-only)"
+#+ * IDProperty.int -> int: int "NO DESCRIPTION"
+#+ * IDProperty.int_array -> int_array: int[1] "NO DESCRIPTION"
+#+ * IDProperty.string -> string: string "NO DESCRIPTION"
+#+ * IDPropertyGroup.name -> name: string "Unique name used in the code and scripting"
+#+ * IDPropertyGroup|NetRenderJob.name -> name: string "NO DESCRIPTION"
+#+ * IDPropertyGroup|NetRenderSettings.active_blacklisted_slave_index -> active_blacklisted_slave_index: int "NO DESCRIPTION"
+#+ * IDPropertyGroup|NetRenderSettings.active_job_index -> active_job_index: int "NO DESCRIPTION"
+#+ * IDPropertyGroup|NetRenderSettings.active_slave_index -> active_slave_index: int "NO DESCRIPTION"
+#+ * IDPropertyGroup|NetRenderSettings.chunks -> chunks: int "Number of frame to dispatch to each slave in one chunk"
+#+ * IDPropertyGroup|NetRenderSettings.job_category -> job_category: string "Category of the job"
+#+ * IDPropertyGroup|NetRenderSettings.job_id -> job_id: string "id of the last sent render job"
+#+ * IDPropertyGroup|NetRenderSettings.job_name -> job_name: string "Name of the job"
+#+ * IDPropertyGroup|NetRenderSettings.jobs -> jobs: collection, "(read-only)"
+#+ * IDPropertyGroup|NetRenderSettings.mode -> mode: enum "Mode of operation of this instance"
+#+ * IDPropertyGroup|NetRenderSettings.path -> path: string "Path for temporary files"
+#+ * IDPropertyGroup|NetRenderSettings.priority -> priority: int "Priority of the job"
+#+ * IDPropertyGroup|NetRenderSettings.server_address -> server_address: string "IP or name of the master render server"
+#+ * IDPropertyGroup|NetRenderSettings.server_port -> server_port: int "port of the master render server"
+#+ * IDPropertyGroup|NetRenderSettings.slaves -> slaves: collection, "(read-only)"
+#+ * IDPropertyGroup|NetRenderSettings.slaves_blacklist -> slaves_blacklist: collection, "(read-only)"
+#IDPropertyGroup|NetRenderSettings.use_master_broadcast -> use_master_broadcast: boolean "broadcast master server address on local network"
+#IDPropertyGroup|NetRenderSettings.use_master_clear -> use_master_clear: boolean "delete saved files on exit"
+#IDPropertyGroup|NetRenderSettings.use_slave_clear -> use_slave_clear: boolean "delete downloaded files on exit"
+#IDPropertyGroup|NetRenderSettings.use_slave_output_log -> use_slave_output_log: boolean "Output render text log to console as well as sending it to the master"
+#IDPropertyGroup|NetRenderSettings.use_slave_thumb -> use_slave_thumb: boolean "Generate thumbnails on slaves instead of master"
+#+ * IDPropertyGroup|NetRenderSlave.name -> name: string "NO DESCRIPTION"
+#+ * IDPropertyGroup|OperatorFileListElement.name -> name: string "the name of a file or directory within a file list"
+#+ * IDPropertyGroup|OperatorMousePath.loc -> loc: float[2] "Mouse location"
+#+ * IDPropertyGroup|OperatorMousePath.time -> time: float "Time of mouse location"
+#+ * IDPropertyGroup|OperatorStrokeElement.location -> location: float[3] "NO DESCRIPTION"
+#+ * IDPropertyGroup|OperatorStrokeElement.mouse -> mouse: float[2] "NO DESCRIPTION"
+#+ * IDPropertyGroup|OperatorStrokeElement.pen_flip -> pen_flip: boolean "NO DESCRIPTION"
+#+ * IDPropertyGroup|OperatorStrokeElement.pressure -> pressure: float "Tablet pressure"
+#+ * IDPropertyGroup|OperatorStrokeElement.time -> time: float "NO DESCRIPTION"
+#+ * IDPropertyGroup|PoseTemplate.name -> name: string "NO DESCRIPTION"
+#+ * IDPropertyGroup|PoseTemplateSettings.active_template_index -> active_template_index: int "NO DESCRIPTION"
+#+ * IDPropertyGroup|PoseTemplateSettings.templates -> templates: collection, "(read-only)"
+#IDPropertyGroup|PoseTemplateSettings.use_generate_deform_rig -> use_generate_deform_rig: boolean "Create a copy of the metarig, constrainted by the generated rig"
+#+ * ID|Action.fcurves -> fcurves: collection, "(read-only) The individual F-Curves that make up the Action"
+#+ * ID|Action.groups -> groups: collection, "(read-only) Convenient groupings of F-Curves"
+#+ * ID|Action.pose_markers -> pose_markers: collection, "(read-only) Markers specific to this Action, for labeling poses"
+#+ * ID|Armature.animation_data -> animation_data: pointer, "(read-only) Animation data for this datablock"
+#+ * ID|Armature.bones -> bones: collection, "(read-only)"
+#ID|Armature.draw_type -> draw_type: enum "NO DESCRIPTION"
+#+ * ID|Armature.edit_bones -> edit_bones: collection, "(read-only)"
+#+ * ID|Armature.ghost_frame_end -> ghost_frame_end: int "End frame of range of Ghosts to display (not for Around Current Frame Onion-skinning method)"
+#+ * ID|Armature.ghost_frame_start -> ghost_frame_start: int "Starting frame of range of Ghosts to display (not for Around Current Frame Onion-skinning method)"
+#+ * ID|Armature.ghost_size -> ghost_size: int "Frame step for Ghosts (not for On Keyframes Onion-skinning method)"
+#+ * ID|Armature.ghost_step -> ghost_step: int "Number of frame steps on either side of current frame to show as ghosts (only for Around Current Frame Onion-skinning method)"
+#+ * ID|Armature.ghost_type -> ghost_type: enum "Method of Onion-skinning for active Action"
+#ID|Armature.layers -> layers: boolean[32] "Armature layer visibility"
+#ID|Armature.layers_protected -> layers_protected: boolean[32] "Protected layers in Proxy Instances are restored to Proxy settings on file reload and undo"
+#+ * ID|Armature.pose_position -> pose_position: enum "Show armature in binding pose or final posed state"
+#ID|Armature.show_axes -> show_axes: boolean "Draw bone axes"
+#ID|Armature.show_bone_custom_shapes -> show_bone_custom_shapes: boolean "Draw bones with their custom shapes"
+#ID|Armature.show_group_colors -> show_group_colors: boolean "Draw bone group colors"
+#ID|Armature.show_names -> show_names: boolean "Draw bone names"
+#ID|Armature.show_only_ghost_selected -> show_only_ghost_selected: boolean "NO DESCRIPTION"
+#ID|Armature.use_auto_ik -> use_auto_ik: boolean "Add temporaral IK constraints while grabbing bones in Pose Mode"
+#ID|Armature.use_deform_delay -> use_deform_delay: boolean "Dont deform children when manipulating bones in Pose Mode"
+#ID|Armature.use_deform_envelopes -> use_deform_envelopes: boolean "Enable Bone Envelopes when defining deform"
+#ID|Armature.use_deform_preserve_volume -> use_deform_preserve_volume: boolean "Enable deform rotation with Quaternions"
+#ID|Armature.use_deform_vertex_groups -> use_deform_vertex_groups: boolean "Enable Vertex Groups when defining deform"
+#ID|Armature.use_mirror_x -> use_mirror_x: boolean "Apply changes to matching bone on opposite side of X-Axis"
+#ID|Brush.auto_smooth_factor -> auto_smooth_factor: float "Amount of smoothing to automatically apply to each stroke"
+#+ * ID|Brush.blend -> blend: enum "Brush blending mode"
+#+ * ID|Brush.clone_alpha -> clone_alpha: float "Opacity of clone image display"
+#+ * ID|Brush.clone_image -> clone_image: pointer "Image for clone tool"
+#+ * ID|Brush.clone_offset -> clone_offset: float[2] "NO DESCRIPTION"
+#+ * ID|Brush.color -> color: float[3] "NO DESCRIPTION"
+#+ * ID|Brush.crease_pinch_factor -> crease_pinch_factor: float "How much the crease brush pinches"
+#ID|Brush.cursor_color_add -> cursor_color_add: float[3] "Color of cursor when adding"
+#ID|Brush.cursor_color_subtract -> cursor_color_subtract: float[3] "Color of cursor when subtracting"
+#+ * ID|Brush.curve -> curve: pointer, "(read-only) Editable falloff curve"
+#+ * ID|Brush.direction -> direction: enum "NO DESCRIPTION"
+#+ * ID|Brush.icon_filepath -> icon_filepath: string "File path to brush icon"
+#+ * ID|Brush.imagepaint_tool -> imagepaint_tool: enum "NO DESCRIPTION"
+#+ * ID|Brush.jitter -> jitter: float "Jitter the position of the brush while painting"
+#+ * ID|Brush.normal_weight -> normal_weight: float "How much grab will pull vertexes out of surface during a grab"
+#+ * ID|Brush.plane_offset -> plane_offset: float "Adjusts plane on which the brush acts towards or away from the object surface"
+#+ * ID|Brush.plane_trim -> plane_trim: float "If a vertex is further from offset plane than this then it is not affected"
+#+ * ID|Brush.rate -> rate: float "Interval between paints for Airbrush"
+#+ * ID|Brush.sculpt_plane -> sculpt_plane: enum "NO DESCRIPTION"
+#+ * ID|Brush.sculpt_tool -> sculpt_tool: enum "NO DESCRIPTION"
+#+ * ID|Brush.size -> size: int "Radius of the brush in pixels"
+#+ * ID|Brush.smooth_stroke_factor -> smooth_stroke_factor: float "Higher values give a smoother stroke"
+#+ * ID|Brush.smooth_stroke_radius -> smooth_stroke_radius: int "Minimum distance from last point before stroke continues"
+#ID|Brush.spacing -> spacing: int "Spacing between brush daubs as a percentage of brush diameter"
+#+ * ID|Brush.strength -> strength: float "How powerful the effect of the brush is when applied"
+#+ * ID|Brush.stroke_method -> stroke_method: enum "NO DESCRIPTION"
+#+ * ID|Brush.texture -> texture: pointer "NO DESCRIPTION"
+#ID|Brush.texture_angle_source_no_random -> texture_angle_source_no_random: enum "NO DESCRIPTION"
+#ID|Brush.texture_angle_source_random -> texture_angle_source_random: enum "NO DESCRIPTION"
+#+ * ID|Brush.texture_overlay_alpha -> texture_overlay_alpha: int "NO DESCRIPTION"
+#+ * ID|Brush.texture_sample_bias -> texture_sample_bias: float "Value added to texture samples"
+#+ * ID|Brush.texture_slot -> texture_slot: pointer, "(read-only)"
+#+ * ID|Brush.unprojected_radius -> unprojected_radius: float "Radius of brush in Blender units"
+#+ * ID|Brush.use_accumulate -> use_accumulate: boolean "Accumulate stroke dabs on top of each other"
+#+ * ID|Brush.use_adaptive_space -> use_adaptive_space: boolean "Space daubs according to surface orientation instead of screen space"
+#+ * ID|Brush.use_airbrush -> use_airbrush: boolean "Keep applying paint effect while holding mouse (spray)"
+#+ * ID|Brush.use_alpha -> use_alpha: boolean "When this is disabled, lock alpha while painting"
+#+ * ID|Brush.use_anchor -> use_anchor: boolean "Keep the brush anchored to the initial location"
+#+ * ID|Brush.use_custom_icon -> use_custom_icon: boolean "Set the brush icon from an image file"
+#ID|Brush.use_edge_to_edge -> use_edge_to_edge: boolean "Drag anchor brush from edge-to-edge"
+#+ * ID|Brush.use_frontface -> use_frontface: boolean "Brush only affects vertexes that face the viewer"
+#+ * ID|Brush.use_inverse_smooth_pressure -> use_inverse_smooth_pressure: boolean "Lighter pressure causes more smoothing to be applied"
+#+ * ID|Brush.use_locked_size -> use_locked_size: boolean "When locked brush stays same size relative to object; when unlocked brush size is given in pixels"
+#+ * ID|Brush.use_offset_pressure -> use_offset_pressure: boolean "Enable tablet pressure sensitivity for offset"
+#+ * ID|Brush.use_original_normal -> use_original_normal: boolean "When locked keep using normal of surface where stroke was initiated"
+#+ * ID|Brush.use_paint_sculpt -> use_paint_sculpt: boolean "Use this brush in sculpt mode"
+#+ * ID|Brush.use_paint_texture -> use_paint_texture: boolean "Use this brush in texture paint mode"
+#+ * ID|Brush.use_paint_vertex -> use_paint_vertex: boolean "Use this brush in vertex paint mode"
+#+ * ID|Brush.use_paint_weight -> use_paint_weight: boolean "Use this brush in weight paint mode"
+#+ * ID|Brush.use_persistent -> use_persistent: boolean "Sculpts on a persistent layer of the mesh"
+#+ * ID|Brush.use_plane_trim -> use_plane_trim: boolean "Enable Plane Trim"
+#ID|Brush.use_pressure_jitter -> use_pressure_jitter: boolean "Enable tablet pressure sensitivity for jitter"
+#ID|Brush.use_pressure_size -> use_pressure_size: boolean "Enable tablet pressure sensitivity for size"
+#ID|Brush.use_pressure_spacing -> use_pressure_spacing: boolean "Enable tablet pressure sensitivity for spacing"
+#ID|Brush.use_pressure_strength -> use_pressure_strength: boolean "Enable tablet pressure sensitivity for strength"
+#+ * ID|Brush.use_rake -> use_rake: boolean "Rotate the brush texture to match the stroke direction"
+#+ * ID|Brush.use_random_rotation -> use_random_rotation: boolean "Rotate the brush texture at random"
+#ID|Brush.use_restore_mesh -> use_restore_mesh: boolean "Allows a single dot to be carefully positioned"
+#+ * ID|Brush.use_smooth_stroke -> use_smooth_stroke: boolean "Brush lags behind mouse and follows a smoother path"
+#+ * ID|Brush.use_space -> use_space: boolean "Limit brush application to the distance specified by spacing"
+#+ * ID|Brush.use_space_atten -> use_space_atten: boolean "Automatically adjusts strength to give consistent results for different spacings"
+#+ * ID|Brush.use_texture_overlay -> use_texture_overlay: boolean "Show texture in viewport"
+#+ * ID|Brush.use_wrap -> use_wrap: boolean "Enable torus wrapping while painting"
+#+ * ID|Brush.vertexpaint_tool -> vertexpaint_tool: enum "NO DESCRIPTION"
+#+ * ID|Camera.angle -> angle: float "Perspective Camera lens field of view in degrees"
+#+ * ID|Camera.animation_data -> animation_data: pointer, "(read-only) Animation data for this datablock"
+#+ * ID|Camera.clip_end -> clip_end: float "Camera far clipping distance"
+#+ * ID|Camera.clip_start -> clip_start: float "Camera near clipping distance"
+#+ * ID|Camera.dof_distance -> dof_distance: float "Distance to the focus point for depth of field"
+#+ * ID|Camera.dof_object -> dof_object: pointer "Use this object to define the depth of field focal point"
+#+ * ID|Camera.draw_size -> draw_size: float "Apparent size of the Camera object in the 3D View"
+#+ * ID|Camera.lens -> lens: float "Perspective Camera lens value in millimeters"
+#+ * ID|Camera.lens_unit -> lens_unit: enum "Unit to edit lens in for the user interface"
+#+ * ID|Camera.ortho_scale -> ortho_scale: float "Orthographic Camera scale (similar to zoom)"
+#+ * ID|Camera.passepartout_alpha -> passepartout_alpha: float "Opacity (alpha) of the darkened overlay in Camera view"
+#+ * ID|Camera.shift_x -> shift_x: float "Perspective Camera horizontal shift"
+#+ * ID|Camera.shift_y -> shift_y: float "Perspective Camera vertical shift"
+#+ * ID|Camera.show_limits -> show_limits: boolean "Draw the clipping range and focus point on the camera"
+#+ * ID|Camera.show_mist -> show_mist: boolean "Draw a line from the Camera to indicate the mist area"
+#+ * ID|Camera.show_name -> show_name: boolean "Show the active Cameras name in Camera view"
+#+ * ID|Camera.show_passepartout -> show_passepartout: boolean "Show a darkened overlay outside the image area in Camera view"
+#+ * ID|Camera.show_title_safe -> show_title_safe: boolean "Show indicators for the title safe zone in Camera view"
+#+ * ID|Camera.type -> type: enum "Camera types"
+#ID|Camera.use_panorama -> use_panorama: boolean "Render the scene with a cylindrical camera for pseudo-fisheye lens effects"
+#+ * ID|Curve.animation_data -> animation_data: pointer, "(read-only) Animation data for this datablock"
+#+ * ID|Curve.bevel_depth -> bevel_depth: float "Bevel depth when not using a bevel object"
+#+ * ID|Curve.bevel_object -> bevel_object: pointer "Curve object name that defines the bevel shape"
+#+ * ID|Curve.bevel_resolution -> bevel_resolution: int "Bevel resolution when depth is non-zero and no specific bevel object has been defined"
+#+ * ID|Curve.dimensions -> dimensions: enum "Select 2D or 3D curve type"
+#+ * ID|Curve.eval_time -> eval_time: float "Parametric position along the length of the curve that Objects following it should be at. Position is evaluated by dividing by the Path Length value"
+#+ * ID|Curve.extrude -> extrude: float "Amount of curve extrusion when not using a bevel object"
+#+ * ID|Curve.materials -> materials: collection, "(read-only)"
+#ID|Curve.offset -> offset: float "Scale the original width (1.0) based on given factor"
+#ID|Curve.path_duration -> path_duration: int "The number of frames that are needed to traverse the path, defining the maximum value for the Evaluation Time setting"
+#+ * ID|Curve.render_resolution_u -> render_resolution_u: int "Surface resolution in U direction used while rendering. Zero skips this property"
+#+ * ID|Curve.render_resolution_v -> render_resolution_v: int "Surface resolution in V direction used while rendering. Zero skips this property"
+#+ * ID|Curve.resolution_u -> resolution_u: int "Surface resolution in U direction"
+#+ * ID|Curve.resolution_v -> resolution_v: int "Surface resolution in V direction"
+#+ * ID|Curve.shape_keys -> shape_keys: pointer, "(read-only)"
+#ID|Curve.show_handles -> show_handles: boolean "Display bezier handles in editmode"
+#ID|Curve.show_normal_face -> show_normal_face: boolean "Display 3D curve normals in editmode"
+#+ * ID|Curve.splines -> splines: collection, "(read-only) Collection of splines in this curve data object"
+#+ * ID|Curve.taper_object -> taper_object: pointer "Curve object name that defines the taper (width)"
+#ID|Curve.texspace_location -> texspace_location: float[3] "Texture space location"
+#+ * ID|Curve.texspace_size -> texspace_size: float[3] "Texture space size"
+#+ * ID|Curve.twist_mode -> twist_mode: enum "The type of tilt calculation for 3D Curves"
+#+ * ID|Curve.twist_smooth -> twist_smooth: float "Smoothing iteration for tangents"
+#ID|Curve.use_auto_texspace -> use_auto_texspace: boolean "Adjusts active objects texture space automatically when transforming object"
+#+ * ID|Curve.use_deform_bounds -> use_deform_bounds: boolean "Use the mesh bounds to clamp the deformation"
+#ID|Curve.use_fill_back -> use_fill_back: boolean "Draw filled back for extruded/beveled curves"
+#ID|Curve.use_fill_deform -> use_fill_deform: boolean "Fill curve after applying deformation"
+#ID|Curve.use_fill_front -> use_fill_front: boolean "Draw filled front for extruded/beveled curves"
+#ID|Curve.use_map_on_length -> use_map_on_length: boolean "Generate texture mapping coordinates following the curve direction, rather than the local bounding box"
+#+ * ID|Curve.use_path -> use_path: boolean "Enable the curve to become a translation path"
+#+ * ID|Curve.use_path_follow -> use_path_follow: boolean "Make curve path children to rotate along the path"
+#+ * ID|Curve.use_radius -> use_radius: boolean "Option for paths: apply the curve radius with path following it and deforming"
+#+ * ID|Curve.use_stretch -> use_stretch: boolean "Option for curve-deform: makes deformed child to stretch along entire path"
+#+ * ID|Curve.use_time_offset -> use_time_offset: boolean "Children will use TimeOffs value as path distance offset"
+#ID|Curve|SurfaceCurve.use_map_on_length -> use_map_on_length: boolean "Generate texture mapping coordinates following the curve direction, rather than the local bounding box"
+#MAKE COLLECTION ATTR * ID|Curve|TextCurve.active_textbox -> active_textbox: int "NO DESCRIPTION"
+#ID|Curve|TextCurve.align -> align: enum "Text align from the object center"
+#+ * ID|Curve|TextCurve.body -> body: string "contents of this text object"
+#+ * ID|Curve|TextCurve.body_format -> body_format: collection, "(read-only) Stores the style of each character"
+#+ * ID|Curve|TextCurve.edit_format -> edit_format: pointer, "(read-only) Editing settings character formatting"
+#+ * ID|Curve|TextCurve.family -> family: string "Use Blender Objects as font characters. Give font objects a common name followed by the character it represents, eg. familya, familyb etc, and turn on Verts Duplication"
+#ID|Curve|TextCurve.follow_curve -> follow_curve: pointer "Curve deforming text object"
+#+ * ID|Curve|TextCurve.font -> font: pointer "NO DESCRIPTION"
+#+ * ID|Curve|TextCurve.offset_x -> offset_x: float "Horizontal offset from the object origin"
+#+ * ID|Curve|TextCurve.offset_y -> offset_y: float "Vertical offset from the object origin"
+#+ * ID|Curve|TextCurve.shear -> shear: float "Italic angle of the characters"
+#ID|Curve|TextCurve.size -> size: float "NO DESCRIPTION"
+#+ * ID|Curve|TextCurve.small_caps_scale -> small_caps_scale: float "Scale of small capitals"
+#ID|Curve|TextCurve.space_character -> space_character: float "NO DESCRIPTION"
+#ID|Curve|TextCurve.space_line -> space_line: float "NO DESCRIPTION"
+#ID|Curve|TextCurve.space_word -> space_word: float "NO DESCRIPTION"
+#ID|Curve|TextCurve.text_boxes -> text_boxes: collection, "(read-only)"
+#ID|Curve|TextCurve.underline_height -> underline_height: float "NO DESCRIPTION"
+#ID|Curve|TextCurve.underline_position -> underline_position: float "Vertical position of underline"
+#ID|Curve|TextCurve.use_fast_edit -> use_fast_edit: boolean "Dont fill polygons while editing"
+#ID|Curve|TextCurve.use_map_on_length -> use_map_on_length: boolean "Generate texture mapping coordinates following the curve direction, rather than the local bounding box"
+#+ * ID|GreasePencil.draw_mode -> draw_mode: enum "NO DESCRIPTION"
+#+ * ID|GreasePencil.layers -> layers: collection, "(read-only)"
+#+ * ID|GreasePencil.use_stroke_endpoints -> use_stroke_endpoints: boolean "Only use the first and last parts of the stroke for snapping"
+#+ * ID|Group.dupli_offset -> dupli_offset: float[3] "Offset from the origin to use when instancing as DupliGroup"
+#ID|Group.layers -> layers: boolean[20] "Layers visible when this groups is instanced as a dupli"
+#+ * ID|Group.objects -> objects: collection, "(read-only) A collection of this groups objects"
+#+ * ID|Image.bindcode -> bindcode: int, "(read-only) OpenGL bindcode"
+#+ * ID|Image.depth -> depth: int, "(read-only) Image bit depth"
+#+ * ID|Image.display_aspect -> display_aspect: float[2] "Display Aspect for this image, does not affect rendering"
+#+ * ID|Image.field_order -> field_order: enum "Order of video fields. Select which lines are displayed first"
+#+ * ID|Image.file_format -> file_format: enum "Format used for re-saving this file"
+#+ * ID|Image.filepath -> filepath: string "Image/Movie file name"
+#+ * ID|Image.filepath_raw -> filepath_raw: string "Image/Movie file name (without data refreshing)"
+#ID|Image.fps -> fps: int "Speed of the animation in frames per second"
+#ID|Image.frame_end -> frame_end: int "End frame of an animated texture"
+#ID|Image.frame_start -> frame_start: int "Start frame of an animated texture"
+#+ * ID|Image.generated_height -> generated_height: int "Generated image height"
+#+ * ID|Image.generated_type -> generated_type: enum "Generated image type"
+#+ * ID|Image.generated_width -> generated_width: int "Generated image width"
+#+ * ID|Image.has_data -> has_data: boolean, "(read-only) True if this image has data"
+#ID|Image.is_dirty -> is_dirty: boolean, "(read-only) Image has changed and is not saved"
+#+ * ID|Image.mapping -> mapping: enum "Mapping type to use for this image in the game engine"
+#+ * ID|Image.packed_file -> packed_file: pointer, "(read-only)"
+#+ * ID|Image.size -> size: int[2], "(read-only) Width and height in pixels, zero when image data cant be loaded"
+#+ * ID|Image.source -> source: enum "Where the image comes from"
+#+ * ID|Image.tiles_x -> tiles_x: int "Degree of repetition in the X direction"
+#+ * ID|Image.tiles_y -> tiles_y: int "Degree of repetition in the Y direction"
+#+ * ID|Image.type -> type: enum, "(read-only) How to generate the image"
+#ID|Image.use_animation -> use_animation: boolean "Use as animated texture in the game engine"
+#ID|Image.use_clamp_x -> use_clamp_x: boolean "Disable texture repeating horizontally"
+#ID|Image.use_clamp_y -> use_clamp_y: boolean "Disable texture repeating vertically"
+#ID|Image.use_fields -> use_fields: boolean "Use fields of the image"
+#ID|Image.use_premultiply -> use_premultiply: boolean "Convert RGB from key alpha to premultiplied alpha"
+ + * ID|Image.tiles -> use_tiles: boolean "Use of tilemode for faces (default shift-LMB to pick the tile for selected faces)"
+#+ * ID|Key.animation_data -> animation_data: pointer, "(read-only) Animation data for this datablock"
+#+ * ID|Key.keys -> keys: collection, "(read-only) Shape keys"
+#+ * ID|Key.reference_key -> reference_key: pointer, "(read-only)"
+#+ * ID|Key.slurph -> slurph: int "Creates a delay in amount of frames in applying keypositions, first vertex goes first"
+#ID|Key.use_relative -> use_relative: boolean "Makes shape keys relative"
+#+ * ID|Key.user -> user: pointer, "(read-only) Datablock using these shape keys"
+#+ * ID|Lamp.active_texture -> active_texture: pointer "Active texture slot being displayed"
+#+ * ID|Lamp.active_texture_index -> active_texture_index: int "Index of active texture slot"
+#+ * ID|Lamp.animation_data -> animation_data: pointer, "(read-only) Animation data for this datablock"
+#+ * ID|Lamp.color -> color: float[3] "Light color"
+#+ * ID|Lamp.distance -> distance: float "Falloff distance - the light is at half the original intensity at this point"
+#+ * ID|Lamp.energy -> energy: float "Amount of light that the lamp emits"
+#+ * ID|Lamp.texture_slots -> texture_slots: collection, "(read-only) Texture slots defining the mapping and influence of textures"
+#+ * ID|Lamp.type -> type: enum "Type of Lamp"
+ + * ID|Lamp.diffuse -> use_diffuse: boolean "Lamp does diffuse shading"
+ + * ID|Lamp.negative -> use_negative: boolean "Lamp casts negative light"
+ + * ID|Lamp.layer -> use_own_layer: boolean "Illuminates objects only on the same layer the lamp is on"
+ + * ID|Lamp.specular -> use_specular: boolean "Lamp creates specular highlights"
+#+ * ID|Lamp|AreaLamp.gamma -> gamma: float "Light gamma correction value"
+#+ * ID|Lamp|AreaLamp.shadow_adaptive_threshold -> shadow_adaptive_threshold: float "Threshold for Adaptive Sampling (Raytraced shadows)"
+#+ * ID|Lamp|AreaLamp.shadow_color -> shadow_color: float[3] "Color of shadows cast by the lamp"
+#+ * ID|Lamp|AreaLamp.shadow_method -> shadow_method: enum "Method to compute lamp shadow with"
+#ID|Lamp|AreaLamp.shadow_ray_sample_method -> shadow_ray_sample_method: enum "Method for generating shadow samples: Adaptive QMC is fastest, Constant QMC is less noisy but slower"
+#+ * ID|Lamp|AreaLamp.shadow_ray_samples_x -> shadow_ray_samples_x: int "Amount of samples taken extra (samples x samples)"
+#+ * ID|Lamp|AreaLamp.shadow_ray_samples_y -> shadow_ray_samples_y: int "Amount of samples taken extra (samples x samples)"
+#+ * ID|Lamp|AreaLamp.shadow_soft_size -> shadow_soft_size: float "Light size for ray shadow sampling (Raytraced shadows)"
+#+ * ID|Lamp|AreaLamp.shape -> shape: enum "Shape of the area lamp"
+#+ * ID|Lamp|AreaLamp.size -> size: float "Size of the area of the area Lamp, X direction size for Rectangle shapes"
+#+ * ID|Lamp|AreaLamp.size_y -> size_y: float "Size of the area of the area Lamp in the Y direction for Rectangle shapes"
+ + * ID|Lamp|AreaLamp.dither -> use_dither: boolean "Use 2x2 dithering for sampling (Constant Jittered sampling)"
+ + * ID|Lamp|AreaLamp.jitter -> use_jitter: boolean "Use noise for sampling (Constant Jittered sampling)"
+#ID|Lamp|AreaLamp.use_only_shadow -> use_only_shadow: boolean "Causes light to cast shadows only without illuminating objects"
+#ID|Lamp|AreaLamp.use_shadow_layer -> use_shadow_layer: boolean "Causes only objects on the same layer to cast shadows"
+#ID|Lamp|AreaLamp.use_umbra -> use_umbra: boolean "Emphasize parts that are fully shadowed (Constant Jittered sampling)"
+#+ * ID|Lamp|PointLamp.falloff_curve -> falloff_curve: pointer, "(read-only) Custom Lamp Falloff Curve"
+#+ * ID|Lamp|PointLamp.falloff_type -> falloff_type: enum "Intensity Decay with distance"
+#+ * ID|Lamp|PointLamp.linear_attenuation -> linear_attenuation: float "Linear distance attenuation"
+#+ * ID|Lamp|PointLamp.quadratic_attenuation -> quadratic_attenuation: float "Quadratic distance attenuation"
+#+ * ID|Lamp|PointLamp.shadow_adaptive_threshold -> shadow_adaptive_threshold: float "Threshold for Adaptive Sampling (Raytraced shadows)"
+#+ * ID|Lamp|PointLamp.shadow_color -> shadow_color: float[3] "Color of shadows cast by the lamp"
+#+ * ID|Lamp|PointLamp.shadow_method -> shadow_method: enum "Method to compute lamp shadow with"
+#ID|Lamp|PointLamp.shadow_ray_sample_method -> shadow_ray_sample_method: enum "Method for generating shadow samples: Adaptive QMC is fastest, Constant QMC is less noisy but slower"
+#+ * ID|Lamp|PointLamp.shadow_ray_samples -> shadow_ray_samples: int "Amount of samples taken extra (samples x samples)"
+#+ * ID|Lamp|PointLamp.shadow_soft_size -> shadow_soft_size: float "Light size for ray shadow sampling (Raytraced shadows)"
+#ID|Lamp|PointLamp.use_only_shadow -> use_only_shadow: boolean "Causes light to cast shadows only without illuminating objects"
+#ID|Lamp|PointLamp.use_shadow_layer -> use_shadow_layer: boolean "Causes only objects on the same layer to cast shadows"
+#ID|Lamp|PointLamp.use_sphere -> use_sphere: boolean "Sets light intensity to zero beyond lamp distance"
+#+ * ID|Lamp|SpotLamp.compression_threshold -> compression_threshold: float "Deep shadow map compression threshold"
+#+ * ID|Lamp|SpotLamp.falloff_curve -> falloff_curve: pointer, "(read-only) Custom Lamp Falloff Curve"
+#+ * ID|Lamp|SpotLamp.falloff_type -> falloff_type: enum "Intensity Decay with distance"
+#+ * ID|Lamp|SpotLamp.halo_intensity -> halo_intensity: float "Brightness of the spotlights halo cone (Buffer Shadows)"
+#+ * ID|Lamp|SpotLamp.halo_step -> halo_step: int "Volumetric halo sampling frequency"
+#+ * ID|Lamp|SpotLamp.linear_attenuation -> linear_attenuation: float "Linear distance attenuation"
+#+ * ID|Lamp|SpotLamp.quadratic_attenuation -> quadratic_attenuation: float "Quadratic distance attenuation"
+#+ * ID|Lamp|SpotLamp.shadow_adaptive_threshold -> shadow_adaptive_threshold: float "Threshold for Adaptive Sampling (Raytraced shadows)"
+#+ * ID|Lamp|SpotLamp.shadow_buffer_bias -> shadow_buffer_bias: float "Shadow buffer sampling bias"
+#+ * ID|Lamp|SpotLamp.shadow_buffer_clip_end -> shadow_buffer_clip_end: float "Shadow map clip end beyond which objects will not generate shadows"
+#+ * ID|Lamp|SpotLamp.shadow_buffer_clip_start -> shadow_buffer_clip_start: float "Shadow map clip start: objects closer will not generate shadows"
+#+ * ID|Lamp|SpotLamp.shadow_buffer_samples -> shadow_buffer_samples: int "Number of shadow buffer samples"
+#+ * ID|Lamp|SpotLamp.shadow_buffer_size -> shadow_buffer_size: int "Resolution of the shadow buffer, higher values give crisper shadows but use more memory"
+#+ * ID|Lamp|SpotLamp.shadow_buffer_soft -> shadow_buffer_soft: float "Size of shadow buffer sampling area"
+#+ * ID|Lamp|SpotLamp.shadow_buffer_type -> shadow_buffer_type: enum "Type of shadow buffer"
+#+ * ID|Lamp|SpotLamp.shadow_color -> shadow_color: float[3] "Color of shadows cast by the lamp"
+#+ * ID|Lamp|SpotLamp.shadow_filter_type -> shadow_filter_type: enum "Type of shadow filter (Buffer Shadows)"
+#+ * ID|Lamp|SpotLamp.shadow_method -> shadow_method: enum "Method to compute lamp shadow with"
+#ID|Lamp|SpotLamp.shadow_ray_sample_method -> shadow_ray_sample_method: enum "Method for generating shadow samples: Adaptive QMC is fastest, Constant QMC is less noisy but slower"
+#+ * ID|Lamp|SpotLamp.shadow_ray_samples -> shadow_ray_samples: int "Amount of samples taken extra (samples x samples)"
+#+ * ID|Lamp|SpotLamp.shadow_sample_buffers -> shadow_sample_buffers: enum "Number of shadow buffers to render for better AA, this increases memory usage"
+#+ * ID|Lamp|SpotLamp.shadow_soft_size -> shadow_soft_size: float "Light size for ray shadow sampling (Raytraced shadows)"
+#+ * ID|Lamp|SpotLamp.show_cone -> show_cone: boolean "Draw transparent cone in 3D view to visualize which objects are contained in it"
+#+ * ID|Lamp|SpotLamp.spot_blend -> spot_blend: float "The softness of the spotlight edge"
+#+ * ID|Lamp|SpotLamp.spot_size -> spot_size: float "Angle of the spotlight beam in degrees"
+#ID|Lamp|SpotLamp.use_auto_clip_end -> use_auto_clip_end: boolean "Automatic calculation of clipping-end, based on visible vertices"
+#ID|Lamp|SpotLamp.use_auto_clip_start -> use_auto_clip_start: boolean "Automatic calculation of clipping-start, based on visible vertices"
+#ID|Lamp|SpotLamp.use_halo -> use_halo: boolean "Renders spotlight with a volumetric halo (Buffer Shadows)"
+#ID|Lamp|SpotLamp.use_only_shadow -> use_only_shadow: boolean "Causes light to cast shadows only without illuminating objects"
+#ID|Lamp|SpotLamp.use_shadow_layer -> use_shadow_layer: boolean "Causes only objects on the same layer to cast shadows"
+#ID|Lamp|SpotLamp.use_sphere -> use_sphere: boolean "Sets light intensity to zero beyond lamp distance"
+ + * ID|Lamp|SpotLamp.square -> use_square: boolean "Casts a square spot light shape"
+#+ * ID|Lamp|SunLamp.shadow_adaptive_threshold -> shadow_adaptive_threshold: float "Threshold for Adaptive Sampling (Raytraced shadows)"
+#+ * ID|Lamp|SunLamp.shadow_color -> shadow_color: float[3] "Color of shadows cast by the lamp"
+#+ * ID|Lamp|SunLamp.shadow_method -> shadow_method: enum "Method to compute lamp shadow with"
+#ID|Lamp|SunLamp.shadow_ray_sample_method -> shadow_ray_sample_method: enum "Method for generating shadow samples: Adaptive QMC is fastest, Constant QMC is less noisy but slower"
+#+ * ID|Lamp|SunLamp.shadow_ray_samples -> shadow_ray_samples: int "Amount of samples taken extra (samples x samples)"
+#+ * ID|Lamp|SunLamp.shadow_soft_size -> shadow_soft_size: float "Light size for ray shadow sampling (Raytraced shadows)"
+#+ * ID|Lamp|SunLamp.sky -> sky: pointer, "(read-only) Sky related settings for sun lamps"
+#ID|Lamp|SunLamp.use_only_shadow -> use_only_shadow: boolean "Causes light to cast shadows only without illuminating objects"
+#ID|Lamp|SunLamp.use_shadow_layer -> use_shadow_layer: boolean "Causes only objects on the same layer to cast shadows"
+#+ * ID|Lattice.interpolation_type_u -> interpolation_type_u: enum "NO DESCRIPTION"
+#+ * ID|Lattice.interpolation_type_v -> interpolation_type_v: enum "NO DESCRIPTION"
+#+ * ID|Lattice.interpolation_type_w -> interpolation_type_w: enum "NO DESCRIPTION"
+#+ * ID|Lattice.points -> points: collection, "(read-only) Points of the lattice"
+#+ * ID|Lattice.points_u -> points_u: int "Points in U direction (cant be changed when there are shape keys)"
+#+ * ID|Lattice.points_v -> points_v: int "Points in V direction (cant be changed when there are shape keys)"
+#+ * ID|Lattice.points_w -> points_w: int "Points in W direction (cant be changed when there are shape keys)"
+#+ * ID|Lattice.shape_keys -> shape_keys: pointer, "(read-only)"
+#ID|Lattice.use_outside -> use_outside: boolean "Only draw, and take into account, the outer vertices"
+#+ * ID|Lattice.vertex_group -> vertex_group: string "Vertex group to apply the influence of the lattice"
+#+ * ID|Library.filepath -> filepath: string "Path to the library .blend file"
+#+ * ID|Library.parent -> parent: pointer, "(read-only)"
+#+ * ID|Material.active_node_material -> active_node_material: pointer "Active node material"
+#+ * ID|Material.active_texture -> active_texture: pointer "Active texture slot being displayed"
+#+ * ID|Material.active_texture_index -> active_texture_index: int "Index of active texture slot"
+#+ * ID|Material.alpha -> alpha: float "Alpha transparency of the material"
+#+ * ID|Material.ambient -> ambient: float "Amount of global ambient color the material receives"
+#+ * ID|Material.animation_data -> animation_data: pointer, "(read-only) Animation data for this datablock"
+#+ * ID|Material.darkness -> darkness: float "Minnaert darkness"
+#+ * ID|Material.diffuse_color -> diffuse_color: float[3] "NO DESCRIPTION"
+#+ * ID|Material.diffuse_fresnel -> diffuse_fresnel: float "Power of Fresnel"
+#+ * ID|Material.diffuse_fresnel_factor -> diffuse_fresnel_factor: float "Blending factor of Fresnel"
+#+ * ID|Material.diffuse_intensity -> diffuse_intensity: float "Amount of diffuse reflection"
+#+ * ID|Material.diffuse_ramp -> diffuse_ramp: pointer, "(read-only) Color ramp used to affect diffuse shading"
+#+ * ID|Material.diffuse_ramp_blend -> diffuse_ramp_blend: enum "NO DESCRIPTION"
+#+ * ID|Material.diffuse_ramp_factor -> diffuse_ramp_factor: float "Blending factor (also uses alpha in Colorband)"
+#+ * ID|Material.diffuse_ramp_input -> diffuse_ramp_input: enum "NO DESCRIPTION"
+#+ * ID|Material.diffuse_shader -> diffuse_shader: enum "NO DESCRIPTION"
+#+ * ID|Material.diffuse_toon_size -> diffuse_toon_size: float "Size of diffuse toon area"
+#+ * ID|Material.diffuse_toon_smooth -> diffuse_toon_smooth: float "Smoothness of diffuse toon area"
+#+ * ID|Material.emit -> emit: float "Amount of light to emit"
+#+ * ID|Material.halo -> halo: pointer, "(read-only) Halo settings for the material"
+#+ * ID|Material.invert_z -> invert_z: boolean "Renders materials faces with an inverted Z buffer (scanline only)"
+#+ * ID|Material.light_group -> light_group: pointer "Limit lighting to lamps in this Group"
+#+ * ID|Material.mirror_color -> mirror_color: float[3] "Mirror color of the material"
+#+ * ID|Material.node_tree -> node_tree: pointer, "(read-only) Node tree for node based materials"
+#ID|Material.offset_z -> offset_z: float "Gives faces an artificial offset in the Z buffer for Z transparency"
+#+ * ID|Material.physics -> physics: pointer, "(read-only) Game physics settings"
+#+ * ID|Material.preview_render_type -> preview_render_type: enum "Type of preview render"
+#+ * ID|Material.raytrace_mirror -> raytrace_mirror: pointer, "(read-only) Raytraced reflection settings for the material"
+#+ * ID|Material.raytrace_transparency -> raytrace_transparency: pointer, "(read-only) Raytraced transparency settings for the material"
+#+ * ID|Material.roughness -> roughness: float "Oren-Nayar Roughness"
+#+ * ID|Material.shadow_buffer_bias -> shadow_buffer_bias: float "Factor to multiply shadow buffer bias with (0 is ignore.)"
+#ID|Material.shadow_cast_alpha -> shadow_cast_alpha: float "Shadow casting alpha, in use for Irregular and Deep shadow buffer"
+#+ * ID|Material.shadow_ray_bias -> shadow_ray_bias: float "Shadow raytracing bias to prevent terminator problems on shadow boundary"
+#+ * ID|Material.specular_alpha -> specular_alpha: float "Alpha transparency for specular areas"
+#+ * ID|Material.specular_color -> specular_color: float[3] "Specular color of the material"
+#+ * ID|Material.specular_hardness -> specular_hardness: int "NO DESCRIPTION"
+#+ * ID|Material.specular_intensity -> specular_intensity: float "NO DESCRIPTION"
+#+ * ID|Material.specular_ior -> specular_ior: float "NO DESCRIPTION"
+#+ * ID|Material.specular_ramp -> specular_ramp: pointer, "(read-only) Color ramp used to affect specular shading"
+#+ * ID|Material.specular_ramp_blend -> specular_ramp_blend: enum "NO DESCRIPTION"
+#+ * ID|Material.specular_ramp_factor -> specular_ramp_factor: float "Blending factor (also uses alpha in Colorband)"
+#+ * ID|Material.specular_ramp_input -> specular_ramp_input: enum "NO DESCRIPTION"
+#+ * ID|Material.specular_shader -> specular_shader: enum "NO DESCRIPTION"
+#+ * ID|Material.specular_slope -> specular_slope: float "The standard deviation of surface slope"
+#+ * ID|Material.specular_toon_size -> specular_toon_size: float "Size of specular toon area"
+#+ * ID|Material.specular_toon_smooth -> specular_toon_smooth: float "Smoothness of specular toon area"
+#+ * ID|Material.strand -> strand: pointer, "(read-only) Strand settings for the material"
+#+ * ID|Material.subsurface_scattering -> subsurface_scattering: pointer, "(read-only) Subsurface scattering settings for the material"
+#+ * ID|Material.texture_slots -> texture_slots: collection, "(read-only) Texture slots defining the mapping and influence of textures"
+#+ * ID|Material.translucency -> translucency: float "Amount of diffuse shading on the back side"
+#+ * ID|Material.transparency_method -> transparency_method: enum "Method to use for rendering transparency"
+#+ * ID|Material.type -> type: enum "Material type defining how the object is rendered"
+#ID|Material.use_cast_approximate -> use_cast_approximate: boolean "Allow this material to cast shadows when using approximate ambient occlusion."
+#ID|Material.use_cast_buffer_shadows -> use_cast_buffer_shadows: boolean "Allow this material to cast shadows from shadow buffer lamps"
+#ID|Material.use_cast_shadows_only -> use_cast_shadows_only: boolean "Makes objects with this material appear invisible, only casting shadows (not rendered)"
+ + * ID|Material.cubic -> use_cubic: boolean "Use cubic interpolation for diffuse values, for smoother transitions"
+#+ * ID|Material.use_diffuse_ramp -> use_diffuse_ramp: boolean "Toggle diffuse ramp operations"
+#ID|Material.use_face_texture -> use_face_texture: boolean "Replaces the objects base color with color from face assigned image textures"
+#ID|Material.use_face_texture_alpha -> use_face_texture_alpha: boolean "Replaces the objects base alpha value with alpha from face assigned image textures"
+#ID|Material.use_full_oversampling -> use_full_oversampling: boolean "Force this material to render full shading/textures for all anti-aliasing samples"
+#ID|Material.use_light_group_exclusive -> use_light_group_exclusive: boolean "Material uses the light group exclusively - these lamps are excluded from other scene lighting"
+#ID|Material.use_mist -> use_mist: boolean "Use mist with this material (in world settings)"
+#+ * ID|Material.use_nodes -> use_nodes: boolean "Use shader nodes to render the material"
+#ID|Material.use_object_color -> use_object_color: boolean "Modulate the result with a per-object color"
+#ID|Material.use_only_shadow -> use_only_shadow: boolean "Renders shadows as the materials alpha value, making materials transparent except for shadowed areas"
+#ID|Material.use_ray_shadow_bias -> use_ray_shadow_bias: boolean "Prevents raytraced shadow errors on surfaces with smooth shaded normals (terminator problem)"
+#ID|Material.use_raytrace -> use_raytrace: boolean "Include this material and geometry that uses it in ray tracing calculations"
+#ID|Material.use_shadeless -> use_shadeless: boolean "Makes this material insensitive to light or shadow"
+ + * ID|Material.shadows -> use_shadows: boolean "Allows this material to receive shadows"
+#+ * ID|Material.use_sky -> use_sky: boolean "Renders this material with zero alpha, with sky background in place (scanline only)"
+#+ * ID|Material.use_specular_ramp -> use_specular_ramp: boolean "Toggle specular ramp operations"
+#ID|Material.use_tangent_shading -> use_tangent_shading: boolean "Use the materials tangent vector instead of the normal for shading - for anisotropic shading effects"
+#+ * ID|Material.use_textures -> use_textures: boolean[18] "Enable/Disable each texture"
+#ID|Material.use_transparency -> use_transparency: boolean "Render material as transparent"
+#ID|Material.use_transparent_shadows -> use_transparent_shadows: boolean "Allow this object to receive transparent shadows casted through other objects"
+#ID|Material.use_vertex_color_light -> use_vertex_color_light: boolean "Add vertex colors as additional lighting"
+#ID|Material.use_vertex_color_paint -> use_vertex_color_paint: boolean "Replaces object base color with vertex colors (multiplies with texture face face assigned textures)"
+#+ * ID|Material.volume -> volume: pointer, "(read-only) Volume settings for the material"
+#+ * ID|Mesh.active_uv_texture -> active_uv_texture: pointer "Active UV texture"
+#+ * ID|Mesh.active_uv_texture_index -> active_uv_texture_index: int "Active UV texture index"
+#+ * ID|Mesh.active_vertex_color -> active_vertex_color: pointer "Active vertex color layer"
+#+ * ID|Mesh.active_vertex_color_index -> active_vertex_color_index: int "Active vertex color index"
+#+ * ID|Mesh.animation_data -> animation_data: pointer, "(read-only) Animation data for this datablock"
+#ID|Mesh.auto_smooth_angle -> auto_smooth_angle: int "Defines maximum angle between face normals that Auto Smooth will operate on"
+#+ * ID|Mesh.edges -> edges: collection, "(read-only) Edges of the mesh"
+#+ * ID|Mesh.faces -> faces: collection, "(read-only) Faces of the mesh"
+#ID|Mesh.layers_float -> layers_float: collection, "(read-only)"
+#ID|Mesh.layers_int -> layers_int: collection, "(read-only)"
+#ID|Mesh.layers_string -> layers_string: collection, "(read-only)"
+#+ * ID|Mesh.materials -> materials: collection, "(read-only)"
+#+ * ID|Mesh.shape_keys -> shape_keys: pointer, "(read-only)"
+#ID|Mesh.show_all_edges -> show_all_edges: boolean "Displays all edges for wireframe in all view modes in the 3D view"
+#ID|Mesh.show_double_sided -> show_double_sided: boolean "Render/display the mesh with double or single sided lighting"
+#ID|Mesh.show_edge_bevel_weight -> show_edge_bevel_weight: boolean "Displays weights created for the Bevel modifier"
+#ID|Mesh.show_edge_crease -> show_edge_crease: boolean "Displays creases created for subsurf weighting"
+#ID|Mesh.show_edge_seams -> show_edge_seams: boolean "Displays UV unwrapping seams"
+#ID|Mesh.show_edge_sharp -> show_edge_sharp: boolean "Displays sharp edges, used with the EdgeSplit modifier"
+#ID|Mesh.show_edges -> show_edges: boolean "Displays selected edges using highlights in the 3D view and UV editor"
+#ID|Mesh.show_extra_edge_angle -> show_extra_edge_angle: boolean "Displays the angles in the selected edges in degrees, Using global values when set in the transform panel"
+#ID|Mesh.show_extra_edge_length -> show_extra_edge_length: boolean "Displays selected edge lengths, Using global values when set in the transform panel"
+#ID|Mesh.show_extra_face_area -> show_extra_face_area: boolean "Displays the area of selected faces, Using global values when set in the transform panel"
+#ID|Mesh.show_faces -> show_faces: boolean "Displays all faces as shades in the 3D view and UV editor"
+#ID|Mesh.show_normal_face -> show_normal_face: boolean "Displays face normals as lines"
+#ID|Mesh.show_normal_vertex -> show_normal_vertex: boolean "Displays vertex normals as lines"
+#+ * ID|Mesh.sticky -> sticky: collection, "(read-only) Sticky texture coordinates"
+#+ * ID|Mesh.texco_mesh -> texco_mesh: pointer "Derive texture coordinates from another mesh"
+#ID|Mesh.texspace_location -> texspace_location: float[3] "Texture space location"
+#+ * ID|Mesh.texspace_size -> texspace_size: float[3] "Texture space size"
+#+ * ID|Mesh.texture_mesh -> texture_mesh: pointer "Use another mesh for texture indices (vertex indices must be aligned)"
+#+ * ID|Mesh.total_edge_sel -> total_edge_sel: int, "(read-only) Selected edge count in editmode"
+#+ * ID|Mesh.total_face_sel -> total_face_sel: int, "(read-only) Selected face count in editmode"
+#+ * ID|Mesh.total_vert_sel -> total_vert_sel: int, "(read-only) Selected vertex count in editmode"
+#ID|Mesh.use_auto_smooth -> use_auto_smooth: boolean "Treats all set-smoothed faces with angles less than the specified angle as smooth during render"
+#ID|Mesh.use_auto_texspace -> use_auto_texspace: boolean "Adjusts active objects texture space automatically when transforming object"
+#+ * ID|Mesh.use_mirror_topology -> use_mirror_topology: boolean "Use topology based mirroring"
+#+ * ID|Mesh.use_mirror_x -> use_mirror_x: boolean "X Axis mirror editing"
+#+ * ID|Mesh.use_paint_mask -> use_paint_mask: boolean "Face selection masking for painting"
+#+ * ID|Mesh.uv_texture_clone -> uv_texture_clone: pointer "UV texture to be used as cloning source"
+#+ * ID|Mesh.uv_texture_clone_index -> uv_texture_clone_index: int "Clone UV texture index"
+#+ * ID|Mesh.uv_texture_stencil -> uv_texture_stencil: pointer "UV texture to mask the painted area"
+#+ * ID|Mesh.uv_texture_stencil_index -> uv_texture_stencil_index: int "Mask UV texture index"
+#+ * ID|Mesh.uv_textures -> uv_textures: collection, "(read-only)"
+#+ * ID|Mesh.vertex_colors -> vertex_colors: collection, "(read-only)"
+#ID|Mesh.vertices -> vertices: collection, "(read-only) Vertices of the mesh"
+#TODO MOVE TO ELEMENTS * ID|MetaBall.active_element -> active_element: pointer, "(read-only) Last selected element"
+#+ * ID|MetaBall.animation_data -> animation_data: pointer, "(read-only) Animation data for this datablock"
+#+ * ID|MetaBall.elements -> elements: collection, "(read-only) Meta elements"
+#+ * ID|MetaBall.materials -> materials: collection, "(read-only)"
+#ID|MetaBall.render_resolution -> render_resolution: float "Polygonization resolution in rendering"
+#ID|MetaBall.resolution -> resolution: float "Polygonization resolution in the 3D viewport"
+#ID|MetaBall.texspace_location -> texspace_location: float[3] "Texture space location"
+#+ * ID|MetaBall.texspace_size -> texspace_size: float[3] "Texture space size"
+#+ * ID|MetaBall.threshold -> threshold: float "Influence of meta elements"
+#ID|MetaBall.update_method -> update_method: enum "Metaball edit update behavior"
+#ID|MetaBall.use_auto_texspace -> use_auto_texspace: boolean "Adjusts active objects texture space automatically when transforming object"
+#+ * ID|NodeTree.animation_data -> animation_data: pointer, "(read-only) Animation data for this datablock"
+#+ * ID|NodeTree.grease_pencil -> grease_pencil: pointer "Grease Pencil datablock"
+#+ * ID|NodeTree.nodes -> nodes: collection, "(read-only)"
+#+ * ID|Object.active_material -> active_material: pointer "Active material being displayed"
+#+ * ID|Object.active_material_index -> active_material_index: int "Index of active material slot"
+#+ * ID|Object.active_particle_system -> active_particle_system: pointer, "(read-only) Active particle system being displayed"
+#+ * ID|Object.active_particle_system_index -> active_particle_system_index: int "Index of active particle system slot"
+#+ * ID|Object.active_shape_key -> active_shape_key: pointer, "(read-only) Current shape key"
+#+ * ID|Object.active_shape_key_index -> active_shape_key_index: int "Current shape key index"
+#+ * ID|Object.active_vertex_group -> active_vertex_group: pointer, "(read-only) Vertex groups of the object"
+#+ * ID|Object.active_vertex_group_index -> active_vertex_group_index: int "Active index in vertex group array"
+#+ * ID|Object.animation_data -> animation_data: pointer, "(read-only) Animation data for this datablock"
+#+ * ID|Object.animation_visualisation -> animation_visualisation: pointer, "(read-only) Animation data for this datablock"
+#+ * ID|Object.bound_box -> bound_box: float[24], "(read-only) Objects bound box in object-space coordinates"
+#+ * ID|Object.collision -> collision: pointer, "(read-only) Settings for using the objects as a collider in physics simulation"
+#+ * ID|Object.color -> color: float[4] "Object color and alpha, used when faces have the ObColor mode enabled"
+#+ * ID|Object.constraints -> constraints: collection, "(read-only) Constraints affecting the transformation of the object"
+#+ * ID|Object.data -> data: pointer "Object data"
+#+ * ID|Object.delta_location -> delta_location: float[3] "Extra translation added to the location of the object"
+#+ * ID|Object.delta_rotation_euler -> delta_rotation_euler: float[3] "Extra rotation added to the rotation of the object (when using Euler rotations)"
+#+ * ID|Object.delta_rotation_quaternion -> delta_rotation_quaternion: float[4] "Extra rotation added to the rotation of the object (when using Quaternion rotations)"
+#+ * ID|Object.delta_scale -> delta_scale: float[3] "Extra scaling added to the scale of the object"
+#+ * ID|Object.dimensions -> dimensions: float[3] "Absolute bounding box dimensions of the object"
+#+ * ID|Object.draw_bounds_type -> draw_bounds_type: enum "Object boundary display type"
+#ID|Object.draw_type -> draw_type: enum "Maximum draw type to display object with in viewport"
+#+ * ID|Object.dupli_faces_scale -> dupli_faces_scale: float "Scale the DupliFace objects"
+#+ * ID|Object.dupli_frames_end -> dupli_frames_end: int "End frame for DupliFrames"
+#+ * ID|Object.dupli_frames_off -> dupli_frames_off: int "Recurring frames to exclude from the Dupliframes"
+#+ * ID|Object.dupli_frames_on -> dupli_frames_on: int "Number of frames to use between DupOff frames"
+#+ * ID|Object.dupli_frames_start -> dupli_frames_start: int "Start frame for DupliFrames"
+#+ * ID|Object.dupli_group -> dupli_group: pointer "Instance an existing group"
+#+ * ID|Object.dupli_list -> dupli_list: collection, "(read-only) Object duplis"
+#+ * ID|Object.dupli_type -> dupli_type: enum "If not None, object duplication method to use"
+#+ * ID|Object.empty_draw_size -> empty_draw_size: float "Size of display for empties in the viewport"
+#+ * ID|Object.empty_draw_type -> empty_draw_type: enum "Viewport display style for empties"
+#+ * ID|Object.field -> field: pointer, "(read-only) Settings for using the objects as a field in physics simulation"
+#+ * ID|Object.game -> game: pointer, "(read-only) Game engine related settings for the object"
+#+ * ID|Object.grease_pencil -> grease_pencil: pointer "Grease Pencil datablock"
+#+ * ID|Object.hide -> hide: boolean "Restrict visibility in the viewport"
+#+ * ID|Object.hide_render -> hide_render: boolean "Restrict renderability"
+#+ * ID|Object.hide_select -> hide_select: boolean "Restrict selection in the viewport"
+#ID|Object.is_duplicator -> is_duplicator: boolean, "(read-only)"
+#+ * ID|Object.layers -> layers: boolean[20] "Layers the object is on"
+#+ * ID|Object.location -> location: float[3] "Location of the object"
+#+ * ID|Object.lock_location -> lock_location: boolean[3] "Lock editing of location in the interface"
+#+ * ID|Object.lock_rotation -> lock_rotation: boolean[3] "Lock editing of rotation in the interface"
+#+ * ID|Object.lock_rotation_w -> lock_rotation_w: boolean "Lock editing of angle component of four-component rotations in the interface"
+#+ * ID|Object.lock_rotations_4d -> lock_rotations_4d: boolean "Lock editing of four component rotations by components (instead of as Eulers)"
+#+ * ID|Object.lock_scale -> lock_scale: boolean[3] "Lock editing of scale in the interface"
+#+ * ID|Object.material_slots -> material_slots: collection, "(read-only) Material slots in the object"
+#+ * ID|Object.matrix_local -> matrix_local: float[16] "Parent relative transformation matrix"
+#+ * ID|Object.matrix_world -> matrix_world: float[16] "Worldspace transformation matrix"
+#+ * ID|Object.mode -> mode: enum, "(read-only) Object interaction mode"
+#+ * ID|Object.modifiers -> modifiers: collection, "(read-only) Modifiers affecting the geometric data of the object"
+#+ * ID|Object.motion_path -> motion_path: pointer, "(read-only) Motion Path for this element"
+#+ * ID|Object.parent -> parent: pointer "Parent Object"
+#+ * ID|Object.parent_bone -> parent_bone: string "Name of parent bone in case of a bone parenting relation"
+#+ * ID|Object.parent_type -> parent_type: enum "Type of parent relation"
+#+ * ID|Object.parent_vertices -> parent_vertices: int[3], "(read-only) Indices of vertices in cases of a vertex parenting relation"
+#+ * ID|Object.particle_systems -> particle_systems: collection, "(read-only) Particle systems emitted from the object"
+#+ * ID|Object.pass_index -> pass_index: int "Index # for the IndexOB render pass"
+#+ * ID|Object.pose -> pose: pointer, "(read-only) Current pose for armatures"
+#+ * ID|Object.pose_library -> pose_library: pointer, "(read-only) Action used as a pose library for armatures"
+#+ * ID|Object.proxy -> proxy: pointer, "(read-only) Library object this proxy object controls"
+#+ * ID|Object.proxy_group -> proxy_group: pointer, "(read-only) Library group duplicator object this proxy object controls"
+#+ * ID|Object.rotation_axis_angle -> rotation_axis_angle: float[4] "Angle of Rotation for Axis-Angle rotation representation"
+#+ * ID|Object.rotation_euler -> rotation_euler: float[3] "Rotation in Eulers"
+#+ * ID|Object.rotation_mode -> rotation_mode: enum "NO DESCRIPTION"
+#+ * ID|Object.rotation_quaternion -> rotation_quaternion: float[4] "Rotation in Quaternions"
+#+ * ID|Object.scale -> scale: float[3] "Scaling of the object"
+#+ * ID|Object.select -> select: boolean "Object selection state"
+#ID|Object.show_axis -> show_axis: boolean "Displays the objects origin and axis"
+#ID|Object.show_bounds -> show_bounds: boolean "Displays the objects bounds"
+#ID|Object.show_name -> show_name: boolean "Displays the objects name"
+#ID|Object.show_shape_key -> show_shape_key: boolean "Always show the current Shape for this Object"
+#ID|Object.show_texture_space -> show_texture_space: boolean "Displays the objects texture space"
+#ID|Object.show_transparent -> show_transparent: boolean "Enables transparent materials for the object (Mesh only)"
+#ID|Object.show_wire -> show_wire: boolean "Adds the objects wireframe over solid drawing"
+#ID|Object.show_x_ray -> show_x_ray: boolean "Makes the object draw in front of others"
+#+ * ID|Object.soft_body -> soft_body: pointer, "(read-only) Settings for soft body simulation"
+#+ * ID|Object.time_offset -> time_offset: float "Animation offset in frames for F-Curve and dupligroup instances"
+#+ * ID|Object.track_axis -> track_axis: enum "Axis that points in forward direction"
+#+ * ID|Object.type -> type: enum, "(read-only) Type of Object"
+#+ * ID|Object.up_axis -> up_axis: enum "Axis that points in the upward direction"
+#+ * ID|Object.use_dupli_faces_scale -> use_dupli_faces_scale: boolean "Scale dupli based on face size"
+#+ * ID|Object.use_dupli_frames_speed -> use_dupli_frames_speed: boolean "Set dupliframes to use the frame"
+#ID|Object.use_dupli_vertices_rotation -> use_dupli_vertices_rotation: boolean "Rotate dupli according to vertex normal"
+#ID|Object.use_shape_key_edit_mode -> use_shape_key_edit_mode: boolean "Apply shape keys in edit mode (for Meshes only)"
+#ID|Object.use_slow_parent -> use_slow_parent: boolean "Create a delay in the parent relationship"
+#ID|Object.use_time_offset_add_parent -> use_time_offset_add_parent: boolean "Add the parents time offset value"
+#ID|Object.use_time_offset_edit -> use_time_offset_edit: boolean "Use time offset when inserting keys and display time offset for F-Curve and action views"
+#ID|Object.use_time_offset_parent -> use_time_offset_parent: boolean "Apply the time offset to this objects parent relationship"
+#ID|Object.use_time_offset_particle -> use_time_offset_particle: boolean "Let the time offset work on the particle effect"
+#+ * ID|Object.vertex_groups -> vertex_groups: collection, "(read-only) Vertex groups of the object"
+#+ * ID|ParticleSettings.active_dupliweight -> active_dupliweight: pointer, "(read-only)"
+#+ * ID|ParticleSettings.active_dupliweight_index -> active_dupliweight_index: int "NO DESCRIPTION"
+#+ * ID|ParticleSettings.adaptive_angle -> adaptive_angle: int "How many degrees path has to curve to make another render segment"
+#ID|ParticleSettings.adaptive_pixel -> adaptive_pixel: int "How many pixels path has to cover to make another render segment"
+#+ * ID|ParticleSettings.angular_velocity_factor -> angular_velocity_factor: float "Angular velocity amount"
+#+ * ID|ParticleSettings.angular_velocity_mode -> angular_velocity_mode: enum "Particle angular velocity mode"
+#+ * ID|ParticleSettings.animation_data -> animation_data: pointer, "(read-only) Animation data for this datablock"
+#ID|ParticleSettings.apply_effector_to_children -> apply_effector_to_children: boolean "Apply effectors to children"
+#ID|ParticleSettings.apply_guide_to_children -> apply_guide_to_children: boolean "NO DESCRIPTION"
+#+ * ID|ParticleSettings.billboard_align -> billboard_align: enum "In respect to what the billboards are aligned"
+#+ * ID|ParticleSettings.billboard_animation -> billboard_animation: enum "How to animate billboard textures"
+#+ * ID|ParticleSettings.billboard_object -> billboard_object: pointer "Billboards face this object (default is active camera)"
+#+ * ID|ParticleSettings.billboard_offset -> billboard_offset: float[2] "NO DESCRIPTION"
+#ID|ParticleSettings.billboard_offset_split -> billboard_offset_split: enum "How to offset billboard textures"
+#+ * ID|ParticleSettings.billboard_tilt -> billboard_tilt: float "Tilt of the billboards"
+#ID|ParticleSettings.billboard_tilt_random -> billboard_tilt_random: float "Random tilt of the billboards"
+#+ * ID|ParticleSettings.billboard_uv_split -> billboard_uv_split: int "Amount of rows/columns to split UV coordinates for billboards"
+#+ * ID|ParticleSettings.boids -> boids: pointer, "(read-only)"
+#+ * ID|ParticleSettings.branch_threshold -> branch_threshold: float "Threshold of branching"
+#+ * ID|ParticleSettings.brownian_factor -> brownian_factor: float "Specify the amount of Brownian motion"
+#+ * ID|ParticleSettings.child_length -> child_length: float "Length of child paths"
+#ID|ParticleSettings.child_length_threshold -> child_length_threshold: float "Amount of particles left untouched by child path length"
+#+ * ID|ParticleSettings.child_nbr -> child_nbr: int "Amount of children/parent"
+#+ * ID|ParticleSettings.child_radius -> child_radius: float "Radius of children around parent"
+#+ * ID|ParticleSettings.child_roundness -> child_roundness: float "Roundness of children around parent"
+#+ * ID|ParticleSettings.child_size -> child_size: float "A multiplier for the child particle size"
+#ID|ParticleSettings.child_size_random -> child_size_random: float "Random variation to the size of the child particles"
+#+ * ID|ParticleSettings.child_type -> child_type: enum "Create child particles"
+#+ * ID|ParticleSettings.clump_factor -> clump_factor: float "Amount of clumping"
+#ID|ParticleSettings.clump_shape -> clump_shape: float "Shape of clumping"
+ + * ID|ParticleSettings.amount -> count: int "Total number of particles"
+#ID|ParticleSettings.damping -> damping: float "Specify the amount of damping"
+#+ * ID|ParticleSettings.distribution -> distribution: enum "How to distribute particles on selected element"
+#+ * ID|ParticleSettings.drag_factor -> drag_factor: float "Specify the amount of air-drag"
+#ID|ParticleSettings.draw_method -> draw_method: enum "How particles are drawn in viewport"
+ + * ID|ParticleSettings.display -> draw_percentage: int "Percentage of particles to display in 3D view"
+#+ * ID|ParticleSettings.draw_size -> draw_size: int "Size of particles on viewport in pixels (0=default)"
+#+ * ID|ParticleSettings.draw_step -> draw_step: int "How many steps paths are drawn with (power of 2)"
+#+ * ID|ParticleSettings.dupli_group -> dupli_group: pointer "Show Objects in this Group in place of particles"
+#+ * ID|ParticleSettings.dupli_object -> dupli_object: pointer "Show this Object in place of particles"
+#ID|ParticleSettings.dupli_weights -> dupli_weights: collection, "(read-only) Weights for all of the objects in the dupli group"
+#+ * ID|ParticleSettings.effect_hair -> effect_hair: float "Hair stiffness for effectors"
+#+ * ID|ParticleSettings.effector_weights -> effector_weights: pointer, "(read-only)"
+#+ * ID|ParticleSettings.emit_from -> emit_from: enum "Where to emit particles from"
+#ID|ParticleSettings.factor_random -> factor_random: float "Give the starting speed a random variation"
+#+ * ID|ParticleSettings.fluid -> fluid: pointer, "(read-only)"
+#+ * ID|ParticleSettings.force_field_1 -> force_field_1: pointer, "(read-only)"
+#+ * ID|ParticleSettings.force_field_2 -> force_field_2: pointer, "(read-only)"
+#+ * ID|ParticleSettings.frame_end -> frame_end: float "Frame # to stop emitting particles"
+#+ * ID|ParticleSettings.frame_start -> frame_start: float "Frame # to start emitting particles"
+#+ * ID|ParticleSettings.grid_resolution -> grid_resolution: int "The resolution of the particle grid"
+#+ * ID|ParticleSettings.hair_step -> hair_step: int "Number of hair segments"
+#+ * ID|ParticleSettings.integrator -> integrator: enum "Select physics integrator type"
+#ID|ParticleSettings.invert_grid -> invert_grid: boolean "Invert what is considered object and what is not"
+#+ * ID|ParticleSettings.jitter_factor -> jitter_factor: float "Amount of jitter applied to the sampling"
+#+ * ID|ParticleSettings.keyed_loops -> keyed_loops: int "Number of times the keys are looped"
+#+ * ID|ParticleSettings.keys_step -> keys_step: int "NO DESCRIPTION"
+#+ * ID|ParticleSettings.kink -> kink: enum "Type of periodic offset on the path"
+#+ * ID|ParticleSettings.kink_amplitude -> kink_amplitude: float "The amplitude of the offset"
+#+ * ID|ParticleSettings.kink_axis -> kink_axis: enum "Which axis to use for offset"
+#+ * ID|ParticleSettings.kink_frequency -> kink_frequency: float "The frequency of the offset (1/total length)"
+#+ * ID|ParticleSettings.kink_shape -> kink_shape: float "Adjust the offset to the beginning/end"
+#ID|ParticleSettings.length_random -> length_random: float "Give path length a random variation"
+#+ * ID|ParticleSettings.lifetime -> lifetime: float "Specify the life span of the particles"
+#ID|ParticleSettings.lifetime_random -> lifetime_random: float "Give the particle life a random variation"
+#+ * ID|ParticleSettings.line_length_head -> line_length_head: float "Length of the lines head"
+#+ * ID|ParticleSettings.line_length_tail -> line_length_tail: float "Length of the lines tail"
+#ID|ParticleSettings.lock_billboard -> lock_billboard: boolean "Lock the billboards align axis"
+#ID|ParticleSettings.lock_boids_to_surface -> lock_boids_to_surface: boolean "Constrain boids to a surface"
+#+ * ID|ParticleSettings.mass -> mass: float "Specify the mass of the particles"
+#+ * ID|ParticleSettings.material -> material: int "Specify material used for the particles"
+#+ * ID|ParticleSettings.normal_factor -> normal_factor: float "Let the surface normal give the particle a starting speed"
+#ID|ParticleSettings.object_align_factor -> object_align_factor: float[3] "Let the emitter object orientation give the particle a starting speed"
+#+ * ID|ParticleSettings.object_factor -> object_factor: float "Let the object give the particle a starting speed"
+#+ * ID|ParticleSettings.particle_factor -> particle_factor: float "Let the target particle give the particle a starting speed"
+#+ * ID|ParticleSettings.particle_size -> particle_size: float "The size of the particles"
+#+ * ID|ParticleSettings.path_end -> path_end: float "End time of drawn path"
+#+ * ID|ParticleSettings.path_start -> path_start: float "Starting time of drawn path"
+#+ * ID|ParticleSettings.phase_factor -> phase_factor: float "Initial rotation phase"
+#ID|ParticleSettings.phase_factor_random -> phase_factor_random: float "Randomize rotation phase"
+#+ * ID|ParticleSettings.physics_type -> physics_type: enum "Particle physics type"
+#+ * ID|ParticleSettings.react_event -> react_event: enum "The event of target particles to react on"
+#+ * ID|ParticleSettings.reaction_shape -> reaction_shape: float "Power of reaction strength dependence on distance to target"
+#+ * ID|ParticleSettings.reactor_factor -> reactor_factor: float "Let the vector away from the target particles location give the particle a starting speed"
+#+ * ID|ParticleSettings.render_step -> render_step: int "How many steps paths are rendered with (power of 2)"
+#ID|ParticleSettings.render_type -> render_type: enum "How particles are rendered"
+#ID|ParticleSettings.rendered_child_count -> rendered_child_count: int "Amount of children/parent for rendering"
+#ID|ParticleSettings.rotation_factor_random -> rotation_factor_random: float "Randomize rotation"
+#+ * ID|ParticleSettings.rotation_mode -> rotation_mode: enum "Particles initial rotation"
+#ID|ParticleSettings.roughness_1 -> roughness_1: float "Amount of location dependent rough"
+#ID|ParticleSettings.roughness_1_size -> roughness_1_size: float "Size of location dependent rough"
+#ID|ParticleSettings.roughness_2 -> roughness_2: float "Amount of random rough"
+#ID|ParticleSettings.roughness_2_size -> roughness_2_size: float "Size of random rough"
+#ID|ParticleSettings.roughness_2_threshold -> roughness_2_threshold: float "Amount of particles left untouched by random rough"
+#ID|ParticleSettings.roughness_end_shape -> roughness_end_shape: float "Shape of end point rough"
+#ID|ParticleSettings.roughness_endpoint -> roughness_endpoint: float "Amount of end point rough"
+#ID|ParticleSettings.show_health -> show_health: boolean "Draw boid health"
+#ID|ParticleSettings.show_material_color -> show_material_color: boolean "Draw particles using materials diffuse color"
+#ID|ParticleSettings.show_number -> show_number: boolean "Show particle number"
+#+ * ID|ParticleSettings.show_size -> show_size: boolean "Show particle size"
+#ID|ParticleSettings.show_unborn -> show_unborn: boolean "Show particles before they are emitted"
+ + * ID|ParticleSettings.velocity -> show_velocity: boolean "Show particle velocity"
+#+ * ID|ParticleSettings.simplify_rate -> simplify_rate: float "Speed of simplification"
+#+ * ID|ParticleSettings.simplify_refsize -> simplify_refsize: int "Reference size in pixels, after which simplification begins"
+#+ * ID|ParticleSettings.simplify_transition -> simplify_transition: float "Transition period for fading out strands"
+#+ * ID|ParticleSettings.simplify_viewport -> simplify_viewport: float "Speed of Simplification"
+#ID|ParticleSettings.size_random -> size_random: float "Give the particle size a random variation"
+#+ * ID|ParticleSettings.subframes -> subframes: int "Subframes to simulate for improved stability and finer granularity simulations"
+#+ * ID|ParticleSettings.tangent_factor -> tangent_factor: float "Let the surface tangent give the particle a starting speed"
+#+ * ID|ParticleSettings.tangent_phase -> tangent_phase: float "Rotate the surface tangent"
+#+ * ID|ParticleSettings.time_tweak -> time_tweak: float "A multiplier for physics timestep (1.0 means one frame = 1/25 seconds)"
+#+ * ID|ParticleSettings.trail_count -> trail_count: int "Number of trail particles"
+#+ * ID|ParticleSettings.type -> type: enum "NO DESCRIPTION"
+#ID|ParticleSettings.use_absolute_path_time -> use_absolute_path_time: boolean "Path timing is in absolute frames"
+#ID|ParticleSettings.use_animate_branching -> use_animate_branching: boolean "Animate branching"
+#ID|ParticleSettings.use_branching -> use_branching: boolean "Branch child paths from each other"
+#ID|ParticleSettings.use_dead -> use_dead: boolean "Show particles after they have died"
+#ID|ParticleSettings.use_die_on_collision -> use_die_on_collision: boolean "Particles die when they collide with a deflector object"
+#ID|ParticleSettings.use_dynamic_rotation -> use_dynamic_rotation: boolean "Sets rotation to dynamic/constant"
+ + * ID|ParticleSettings.trand -> use_emit_random: boolean "Emit in random order of elements"
+#ID|ParticleSettings.use_even_distribution -> use_even_distribution: boolean "Use even distribution from faces based on face areas or edge lengths"
+#+ * ID|ParticleSettings.use_global_dupli -> use_global_dupli: boolean "Use objects global coordinates for duplication"
+#+ * ID|ParticleSettings.use_group_count -> use_group_count: boolean "Use object multiple times in the same group"
+#ID|ParticleSettings.use_group_pick_random -> use_group_pick_random: boolean "Pick objects from group randomly"
+#ID|ParticleSettings.use_hair_bspline -> use_hair_bspline: boolean "Interpolate hair using B-Splines"
+#ID|ParticleSettings.use_multiply_size_mass -> use_multiply_size_mass: boolean "Multiply mass by particle size"
+ + * ID|ParticleSettings.parent -> use_parent_particles: boolean "Render parent particles"
+#ID|ParticleSettings.use_react_multiple -> use_react_multiple: boolean "React multiple times"
+#ID|ParticleSettings.use_react_start_end -> use_react_start_end: boolean "Give birth to unreacted particles eventually"
+#ID|ParticleSettings.use_render_adaptive -> use_render_adaptive: boolean "Draw steps of the particle path"
+ + * ID|ParticleSettings.emitter -> use_render_emitter: boolean "Render emitter Object also"
+#ID|ParticleSettings.use_self_effect -> use_self_effect: boolean "Particle effectors effect themselves"
+#ID|ParticleSettings.use_simplify -> use_simplify: boolean "Remove child strands as the object becomes smaller on the screen"
+ + * ID|ParticleSettings.viewport -> use_simplify_viewport: boolean "NO DESCRIPTION"
+#ID|ParticleSettings.use_size_deflect -> use_size_deflect: boolean "Use particles size in deflection"
+#ID|ParticleSettings.use_strand_primitive -> use_strand_primitive: boolean "Use the strand primitive for rendering"
+#ID|ParticleSettings.use_symmetric_branching -> use_symmetric_branching: boolean "Start and end points are the same"
+#ID|ParticleSettings.use_velocity_length -> use_velocity_length: boolean "Multiply line length by particle speed"
+#ID|ParticleSettings.use_whole_group -> use_whole_group: boolean "Use whole group at once"
+#+ * ID|ParticleSettings.userjit -> userjit: int "Emission locations / face (0 = automatic)"
+#+ * ID|ParticleSettings.virtual_parents -> virtual_parents: float "Relative amount of virtual parents"
+#+ * ID|Scene.active_keying_set -> active_keying_set: pointer "Active Keying Set used to insert/delete keyframes"
+#+ * ID|Scene.active_keying_set_index -> active_keying_set_index: int "Current Keying Set index (negative for builtin and positive for absolute)"
+#+ * ID|Scene.animation_data -> animation_data: pointer, "(read-only) Animation data for this datablock"
+#ID|Scene.audio_distance_model -> audio_distance_model: enum "Distance model for distance attenuation calculation"
+#ID|Scene.audio_doppler_factor -> audio_doppler_factor: float "Pitch factor for Doppler effect calculation"
+#ID|Scene.audio_doppler_speed -> audio_doppler_speed: float "Speed of sound for Doppler effect calculation"
+#ID|Scene.background_set -> background_set: pointer "Background set scene"
+#+ * ID|Scene.camera -> camera: pointer "Active camera used for rendering the scene"
+#+ * ID|Scene.cursor_location -> cursor_location: float[3] "3D cursor location"
+#+ * ID|Scene.frame_current -> frame_current: int "NO DESCRIPTION"
+#+ * ID|Scene.frame_end -> frame_end: int "Final frame of the playback/rendering range"
+#ID|Scene.frame_preview_end -> frame_preview_end: int "Alternative end frame for UI playback"
+#ID|Scene.frame_preview_start -> frame_preview_start: int "Alternative start frame for UI playback"
+#+ * ID|Scene.frame_start -> frame_start: int "First frame of the playback/rendering range"
+#+ * ID|Scene.frame_step -> frame_step: int "Number of frames to skip forward while rendering/playing back each frame"
+#ID|Scene.game_settings -> game_settings: pointer, "(read-only)"
+#+ * ID|Scene.gravity -> gravity: float[3] "Constant acceleration in a given direction"
+#+ * ID|Scene.grease_pencil -> grease_pencil: pointer "Grease Pencil datablock"
+#ID|Scene.is_nla_tweakmode -> is_nla_tweakmode: boolean, "(read-only) Indicates whether there is any action referenced by NLA being edited. Strictly read-only"
+#+ * ID|Scene.keying_sets -> keying_sets: collection, "(read-only) Absolute Keying Sets for this Scene"
+#ID|Scene.keying_sets_all -> keying_sets_all: collection, "(read-only) All Keying Sets available for use (builtins and Absolute Keying Sets for this Scene)"
+#+ * ID|Scene.layers -> layers: boolean[20] "Layers visible when rendering the scene"
+#+ * ID|Scene.network_render -> network_render: pointer, "(read-only) Network Render Settings"
+#+ * ID|Scene.nodetree -> nodetree: pointer, "(read-only) Compositing node tree"
+#ID|Scene.object_bases -> object_bases: collection, "(read-only)"
+#+ * ID|Scene.objects -> objects: collection, "(read-only)"
+#+ * ID|Scene.orientations -> orientations: collection, "(read-only)"
+#+ * ID|Scene.pose_templates -> pose_templates: pointer, "(read-only) Pose Template Settings"
+#+ * ID|Scene.render -> render: pointer, "(read-only)"
+#+ * ID|Scene.sequence_editor -> sequence_editor: pointer, "(read-only)"
+#+ * ID|Scene.sync_mode -> sync_mode: enum "How to sync playback"
+#+ * ID|Scene.timeline_markers -> timeline_markers: collection, "(read-only) Markers used in all timelines for the current scene"
+#+ * ID|Scene.tool_settings -> tool_settings: pointer, "(read-only)"
+#+ * ID|Scene.unit_settings -> unit_settings: pointer, "(read-only) Unit editing settings"
+#ID|Scene.use_audio -> use_audio: boolean "Play back of audio from Sequence Editor will be muted"
+#ID|Scene.use_audio_scrub -> use_audio_scrub: boolean "Play audio from Sequence Editor while scrubbing"
+#ID|Scene.use_audio_sync -> use_audio_sync: boolean "Play back and sync with audio clock, dropping frames if frame display is too slow"
+#ID|Scene.use_frame_drop -> use_frame_drop: boolean "Play back dropping frames if frame display is too slow"
+#+ * ID|Scene.use_gravity -> use_gravity: boolean "Use global gravity for all dynamics"
+#+ * ID|Scene.use_nodes -> use_nodes: boolean "Enable the compositing node tree"
+#+ * ID|Scene.use_preview_range -> use_preview_range: boolean "Use an alternative start/end frame for UI playback, rather than the scene start/end frame"
+#ID|Scene.use_stamp_note -> use_stamp_note: string "User define note for the render stamping"
+#+ * ID|Scene.world -> world: pointer "World used for rendering the scene"
+#+ * ID|Screen.areas -> areas: collection, "(read-only) Areas the screen is subdivided into"
+#ID|Screen.is_animation_playing -> is_animation_playing: boolean, "(read-only) Animation playback is active"
+#+ * ID|Screen.scene -> scene: pointer "Active scene to be edited in the screen"
+#ID|Screen.show_fullscreen -> show_fullscreen: boolean, "(read-only) An area is maximised, filling this screen"
+#+ * ID|Sound.filepath -> filepath: string "Sound sample file used by this Sound datablock"
+#+ * ID|Sound.packed_file -> packed_file: pointer, "(read-only)"
+#ID|Sound.use_memory_cache -> use_memory_cache: boolean "The sound file is decoded and loaded into RAM"
+#+ * ID|Text.current_character -> current_character: int, "(read-only) Index of current character in current line, and also start index of character in selection if one exists"
+#+ * ID|Text.current_line -> current_line: pointer, "(read-only) Current line, and start line of selection if one exists"
+#+ * ID|Text.filepath -> filepath: string "Filename of the text file"
+#ID|Text.is_dirty -> is_dirty: boolean, "(read-only) Text file has been edited since last save"
+#ID|Text.is_in_memory -> is_in_memory: boolean, "(read-only) Text file is in memory, without a corresponding file on disk"
+#ID|Text.is_modified -> is_modified: boolean, "(read-only) Text file on disk is different than the one in memory"
+#+ * ID|Text.lines -> lines: collection, "(read-only) Lines of text"
+#+ * ID|Text.markers -> markers: collection, "(read-only) Text markers highlighting part of the text"
+#ID|Text.select_end_character -> select_end_character: int, "(read-only) Index of character after end of selection in the selection end line"
+#ID|Text.select_end_line -> select_end_line: pointer, "(read-only) End line of selection"
+#+ * ID|Text.use_module -> use_module: boolean "Register this text as a module on loading, Text name must end with .py"
+#ID|Text.use_tabs_as_spaces -> use_tabs_as_spaces: boolean "Automatically converts all new tabs into spaces"
+#+ * ID|Texture.animation_data -> animation_data: pointer, "(read-only) Animation data for this datablock"
+#+ * ID|Texture.color_ramp -> color_ramp: pointer, "(read-only)"
+#+ * ID|Texture.contrast -> contrast: float "NO DESCRIPTION"
+#+TODO MAKE COLOR * ID|Texture.factor_blue -> factor_blue: float "NO DESCRIPTION"
+#+TODO MAKE COLOR * ID|Texture.factor_green -> factor_green: float "NO DESCRIPTION"
+#+TODO MAKE COLOR * ID|Texture.factor_red -> factor_red: float "NO DESCRIPTION"
+ + * ID|Texture.brightness -> intensity: float "NO DESCRIPTION"
+#+ * ID|Texture.node_tree -> node_tree: pointer, "(read-only) Node tree for node-based textures"
+#+ * ID|Texture.saturation -> saturation: float "NO DESCRIPTION"
+#+ * ID|Texture.type -> type: enum "NO DESCRIPTION"
+#+ * ID|Texture.use_color_ramp -> use_color_ramp: boolean "Toggle color ramp operations"
+#+ * ID|Texture.use_nodes -> use_nodes: boolean "Make this a node-based texture"
+#+ * ID|Texture.use_preview_alpha -> use_preview_alpha: boolean "Show Alpha in Preview Render"
+#+ * ID|Texture|BlendTexture.progression -> progression: enum "Sets the style of the color blending"
+#ID|Texture|BlendTexture.use_flip_axis -> use_flip_axis: enum "Flips the textures X and Y axis"
+ + * ID|Texture|CloudsTexture.stype -> cloud_type: enum "NO DESCRIPTION"
+#+ * ID|Texture|CloudsTexture.nabla -> nabla: float "Size of derivative offset used for calculating normal"
+#+ * ID|Texture|CloudsTexture.noise_basis -> noise_basis: enum "Sets the noise basis used for turbulence"
+#+ * ID|Texture|CloudsTexture.noise_depth -> noise_depth: int "Sets the depth of the cloud calculation"
+#ID|Texture|CloudsTexture.noise_scale -> noise_scale: float "Sets scaling for noise input"
+#+ * ID|Texture|CloudsTexture.noise_type -> noise_type: enum "NO DESCRIPTION"
+#+ * ID|Texture|DistortedNoiseTexture.distortion -> distortion: float "NO DESCRIPTION"
+#+ * ID|Texture|DistortedNoiseTexture.nabla -> nabla: float "Size of derivative offset used for calculating normal"
+#+ * ID|Texture|DistortedNoiseTexture.noise_basis -> noise_basis: enum "Sets the noise basis used for turbulence"
+#+ * ID|Texture|DistortedNoiseTexture.noise_distortion -> noise_distortion: enum "Sets the noise basis for the distortion"
+#ID|Texture|DistortedNoiseTexture.noise_scale -> noise_scale: float "Sets scaling for noise input"
+#+ * ID|Texture|EnvironmentMapTexture.environment_map -> environment_map: pointer, "(read-only) Gets the environment map associated with this texture"
+#+ * ID|Texture|EnvironmentMapTexture.filter_eccentricity -> filter_eccentricity: int "Maximum eccentricity. Higher gives less blur at distant/oblique angles, but is also slower"
+#+ * ID|Texture|EnvironmentMapTexture.filter_probes -> filter_probes: int "Maximum number of samples. Higher gives less blur at distant/oblique angles, but is also slower"
+#+ * ID|Texture|EnvironmentMapTexture.filter_size -> filter_size: float "Multiplies the filter size used by MIP Map and Interpolation"
+ + * ID|Texture|EnvironmentMapTexture.filter -> filter_type: enum "Texture filter to use for sampling image"
+#+ * ID|Texture|EnvironmentMapTexture.image -> image: pointer "Source image file to read the environment map from"
+#+ * ID|Texture|EnvironmentMapTexture.image_user -> image_user: pointer, "(read-only) Parameters defining which layer, pass and frame of the image is displayed"
+#ID|Texture|EnvironmentMapTexture.use_filter_size_min -> use_filter_size_min: boolean "Use Filter Size as a minimal filter value in pixels"
+ + * ID|Texture|EnvironmentMapTexture.mipmap -> use_mipmap: boolean "Uses auto-generated MIP maps for the image"
+#ID|Texture|EnvironmentMapTexture.use_mipmap_gauss -> use_mipmap_gauss: boolean "Uses Gauss filter to sample down MIP maps"
+#+ * ID|Texture|ImageTexture.checker_distance -> checker_distance: float "Sets distance between checker tiles"
+#+ * ID|Texture|ImageTexture.crop_max_x -> crop_max_x: float "Sets maximum X value to crop the image"
+#+ * ID|Texture|ImageTexture.crop_max_y -> crop_max_y: float "Sets maximum Y value to crop the image"
+#+ * ID|Texture|ImageTexture.crop_min_x -> crop_min_x: float "Sets minimum X value to crop the image"
+#+ * ID|Texture|ImageTexture.crop_min_y -> crop_min_y: float "Sets minimum Y value to crop the image"
+#+ * ID|Texture|ImageTexture.extension -> extension: enum "Sets how the image is extrapolated past its original bounds"
+#+ * ID|Texture|ImageTexture.filter_eccentricity -> filter_eccentricity: int "Maximum eccentricity. Higher gives less blur at distant/oblique angles, but is also slower"
+#+ * ID|Texture|ImageTexture.filter_probes -> filter_probes: int "Maximum number of samples. Higher gives less blur at distant/oblique angles, but is also slower"
+#+ * ID|Texture|ImageTexture.filter_size -> filter_size: float "Multiplies the filter size used by MIP Map and Interpolation"
+ + * ID|Texture|ImageTexture.filter -> filter_type: enum "Texture filter to use for sampling image"
+#+ * ID|Texture|ImageTexture.image -> image: pointer "NO DESCRIPTION"
+#+ * ID|Texture|ImageTexture.image_user -> image_user: pointer, "(read-only) Parameters defining which layer, pass and frame of the image is displayed"
+#+ * ID|Texture|ImageTexture.invert_alpha -> invert_alpha: boolean "Inverts all the alpha values in the image"
+#+ * ID|Texture|ImageTexture.normal_space -> normal_space: enum "Sets space of normal map image"
+#+ * ID|Texture|ImageTexture.repeat_x -> repeat_x: int "Sets a repetition multiplier in the X direction"
+#+ * ID|Texture|ImageTexture.repeat_y -> repeat_y: int "Sets a repetition multiplier in the Y direction"
+#+ * ID|Texture|ImageTexture.use_alpha -> use_alpha: boolean "Uses the alpha channel information in the image"
+#ID|Texture|ImageTexture.use_calculate_alpha -> use_calculate_alpha: boolean "Calculates an alpha channel based on RGB values in the image"
+#ID|Texture|ImageTexture.use_checker_even -> use_checker_even: boolean "Sets even checker tiles"
+#ID|Texture|ImageTexture.use_checker_odd -> use_checker_odd: boolean "Sets odd checker tiles"
+#ID|Texture|ImageTexture.use_filter_size_min -> use_filter_size_min: boolean "Use Filter Size as a minimal filter value in pixels"
+#ID|Texture|ImageTexture.use_flip_axis -> use_flip_axis: boolean "Flips the textures X and Y axis"
+ + * ID|Texture|ImageTexture.interpolation -> use_interpolation: boolean "Interpolates pixels using Area filter"
+ + * ID|Texture|ImageTexture.mipmap -> use_mipmap: boolean "Uses auto-generated MIP maps for the image"
+#ID|Texture|ImageTexture.use_mipmap_gauss -> use_mipmap_gauss: boolean "Uses Gauss filter to sample down MIP maps"
+#ID|Texture|ImageTexture.use_mirror_x -> use_mirror_x: boolean "Mirrors the image repetition on the X direction"
+#ID|Texture|ImageTexture.use_mirror_y -> use_mirror_y: boolean "Mirrors the image repetition on the Y direction"
+#ID|Texture|ImageTexture.use_normal_map -> use_normal_map: boolean "Uses image RGB values for normal mapping"
+#+ * ID|Texture|MagicTexture.noise_depth -> noise_depth: int "Sets the depth of the cloud calculation"
+#+ * ID|Texture|MagicTexture.turbulence -> turbulence: float "Sets the turbulence of the bandnoise and ringnoise types"
+ + * ID|Texture|MarbleTexture.stype -> marble_type: enum "NO DESCRIPTION"
+#+ * ID|Texture|MarbleTexture.nabla -> nabla: float "Size of derivative offset used for calculating normal"
+#+ * ID|Texture|MarbleTexture.noise_basis -> noise_basis: enum "Sets the noise basis used for turbulence"
+#+ * ID|Texture|MarbleTexture.noise_depth -> noise_depth: int "Sets the depth of the cloud calculation"
+#ID|Texture|MarbleTexture.noise_scale -> noise_scale: float "Sets scaling for noise input"
+#+ * ID|Texture|MarbleTexture.noise_type -> noise_type: enum "NO DESCRIPTION"
+#ID|Texture|MarbleTexture.noisebasis_2 -> noisebasis_2: enum "NO DESCRIPTION"
+#+ * ID|Texture|MarbleTexture.turbulence -> turbulence: float "Sets the turbulence of the bandnoise and ringnoise types"
+#ID|Texture|MusgraveTexture.dimension_max -> dimension_max: float "Highest fractal dimension"
+#+ * ID|Texture|MusgraveTexture.gain -> gain: float "The gain multiplier"
+#+ * ID|Texture|MusgraveTexture.lacunarity -> lacunarity: float "Gap between successive frequencies"
+#+ * ID|Texture|MusgraveTexture.musgrave_type -> musgrave_type: enum "NO DESCRIPTION"
+#+ * ID|Texture|MusgraveTexture.nabla -> nabla: float "Size of derivative offset used for calculating normal"
+#+ * ID|Texture|MusgraveTexture.noise_basis -> noise_basis: enum "Sets the noise basis used for turbulence"
+#+ * ID|Texture|MusgraveTexture.noise_intensity -> noise_intensity: float "NO DESCRIPTION"
+#ID|Texture|MusgraveTexture.noise_scale -> noise_scale: float "Sets scaling for noise input"
+#+ * ID|Texture|MusgraveTexture.octaves -> octaves: float "Number of frequencies used"
+#+ * ID|Texture|MusgraveTexture.offset -> offset: float "The fractal offset"
+#ID|Texture|PointDensityTexture.point_density -> point_density: pointer, "(read-only) The point density settings associated with this texture"
+#+ * ID|Texture|StucciTexture.noise_basis -> noise_basis: enum "Sets the noise basis used for turbulence"
+#ID|Texture|StucciTexture.noise_scale -> noise_scale: float "Sets scaling for noise input"
+#+ * ID|Texture|StucciTexture.noise_type -> noise_type: enum "NO DESCRIPTION"
+ + * ID|Texture|StucciTexture.stype -> stucci_type: enum "NO DESCRIPTION"
+#+ * ID|Texture|StucciTexture.turbulence -> turbulence: float "Sets the turbulence of the bandnoise and ringnoise types"
+#ID|Texture|VoronoiTexture.color_mode -> color_mode: enum "NO DESCRIPTION"
+#+ * ID|Texture|VoronoiTexture.distance_metric -> distance_metric: enum "NO DESCRIPTION"
+#+ * ID|Texture|VoronoiTexture.minkovsky_exponent -> minkovsky_exponent: float "Minkovsky exponent"
+#+ * ID|Texture|VoronoiTexture.nabla -> nabla: float "Size of derivative offset used for calculating normal"
+#+ * ID|Texture|VoronoiTexture.noise_intensity -> noise_intensity: float "NO DESCRIPTION"
+#ID|Texture|VoronoiTexture.noise_scale -> noise_scale: float "Sets scaling for noise input"
+#+ * ID|Texture|VoronoiTexture.weight_1 -> weight_1: float "Voronoi feature weight 1"
+#+ * ID|Texture|VoronoiTexture.weight_2 -> weight_2: float "Voronoi feature weight 2"
+#+ * ID|Texture|VoronoiTexture.weight_3 -> weight_3: float "Voronoi feature weight 3"
+#+ * ID|Texture|VoronoiTexture.weight_4 -> weight_4: float "Voronoi feature weight 4"
+#+ * ID|Texture|VoxelDataTexture.image -> image: pointer "NO DESCRIPTION"
+#+ * ID|Texture|VoxelDataTexture.image_user -> image_user: pointer, "(read-only) Parameters defining which layer, pass and frame of the image is displayed"
+#ID|Texture|VoxelDataTexture.voxel_data -> voxel_data: pointer, "(read-only) The voxel data associated with this texture"
+#+ * ID|Texture|WoodTexture.nabla -> nabla: float "Size of derivative offset used for calculating normal"
+#+ * ID|Texture|WoodTexture.noise_basis -> noise_basis: enum "Sets the noise basis used for turbulence"
+#ID|Texture|WoodTexture.noise_scale -> noise_scale: float "Sets scaling for noise input"
+#+ * ID|Texture|WoodTexture.noise_type -> noise_type: enum "NO DESCRIPTION"
+#ID|Texture|WoodTexture.noisebasis_2 -> noisebasis_2: enum "NO DESCRIPTION"
+#+ * ID|Texture|WoodTexture.turbulence -> turbulence: float "Sets the turbulence of the bandnoise and ringnoise types"
+ + * ID|Texture|WoodTexture.stype -> wood_type: enum "NO DESCRIPTION"
+#+ * ID|VectorFont.filepath -> filepath: string, "(read-only)"
+#+ * ID|VectorFont.packed_file -> packed_file: pointer, "(read-only)"
+#TODO, move into collectin * ID|WindowManager.active_keyconfig -> active_keyconfig: pointer "NO DESCRIPTION"
+#+ * ID|WindowManager.default_keyconfig -> default_keyconfig: pointer, "(read-only)"
+#+ * ID|WindowManager.keyconfigs -> keyconfigs: collection, "(read-only) Registered key configurations"
+#+ * ID|WindowManager.operators -> operators: collection, "(read-only) Operator registry"
+#+ * ID|WindowManager.windows -> windows: collection, "(read-only) Open windows"
+#+ * ID|World.active_texture -> active_texture: pointer "Active texture slot being displayed"
+#+ * ID|World.active_texture_index -> active_texture_index: int "Index of active texture slot"
+#+ * ID|World.ambient_color -> ambient_color: float[3] "NO DESCRIPTION"
+#+ * ID|World.animation_data -> animation_data: pointer, "(read-only) Animation data for this datablock"
+ + * ID|World.range -> color_range: float "The color range that will be mapped to 0-1"
+#+ * ID|World.exposure -> exposure: float "Amount of exponential color correction for light"
+#+ * ID|World.horizon_color -> horizon_color: float[3] "Color at the horizon"
+ + * ID|World.lighting -> light_settings: pointer, "(read-only) World lighting settings"
+ + * ID|World.mist -> mist_settings: pointer, "(read-only) World mist settings"
+ + * ID|World.stars -> star_settings: pointer, "(read-only) World stars settings"
+#+ * ID|World.texture_slots -> texture_slots: collection, "(read-only) Texture slots defining the mapping and influence of textures"
+#ID|World.use_sky_blend -> use_sky_blend: boolean "Render background with natural progression from horizon to zenith"
+#ID|World.use_sky_paper -> use_sky_paper: boolean "Flatten blend or texture coordinates"
+#ID|World.use_sky_real -> use_sky_real: boolean "Render background with a real horizon, relative to the camera angle"
+#+ * ID|World.zenith_color -> zenith_color: float[3] "Color at the zenith"
+#+ * IKParam.ik_solver -> ik_solver: enum, "(read-only) IK solver for which these parameters are defined, 0 for Legacy, 1 for iTaSC"
+#IKParam|Itasc.damping_epsilon -> damping_epsilon: float "Singular value under which damping is progressively applied. Higher values=more stability, less reactivity. Default=0.1"
+#IKParam|Itasc.damping_max -> damping_max: float "Maximum damping coefficient when singular value is nearly 0. Higher values=more stability, less reactivity. Default=0.5"
+#+ * IKParam|Itasc.feedback -> feedback: float "Feedback coefficient for error correction. Average response time=1/feedback. Default=20"
+#IKParam|Itasc.iterations -> iterations: int "Maximum number of iterations for convergence in case of reiteration"
+#+ * IKParam|Itasc.mode -> mode: enum "NO DESCRIPTION"
+#+ * IKParam|Itasc.precision -> precision: float "Precision of convergence in case of reiteration"
+#IKParam|Itasc.reiteration_method -> reiteration_method: enum "Defines if the solver is allowed to reiterate (converges until precision is met) on none, first or all frames"
+#+ * IKParam|Itasc.solver -> solver: enum "Solving method selection: Automatic damping or manual damping"
+#IKParam|Itasc.step_count -> step_count: int "Divides the frame interval into this many steps"
+#IKParam|Itasc.step_max -> step_max: float "Higher bound for timestep in second in case of automatic substeps"
+#IKParam|Itasc.step_min -> step_min: float "Lower bound for timestep in second in case of automatic substeps"
+#IKParam|Itasc.use_auto_step -> use_auto_step: boolean "Automatically determine the optimal number of steps for best performance/accuracy trade off"
+#IKParam|Itasc.velocity_max -> velocity_max: float "Maximum joint velocity in rad/s. Default=50"
+#+ * ImageUser.fields_per_frame -> fields_per_frame: int "The number of fields per rendered frame (2 fields is 1 image)"
+ + * ImageUser.frames -> frame_duration: int "Sets the number of images of a movie to use"
+ + * ImageUser.offset -> frame_offset: int "Offsets the number of the frame to use in the animation"
+#+ * ImageUser.frame_start -> frame_start: int "Sets the global starting frame of the movie"
+#+ * ImageUser.multilayer_layer -> multilayer_layer: int, "(read-only) Layer in multilayer image"
+#+ * ImageUser.multilayer_pass -> multilayer_pass: int, "(read-only) Pass in multilayer image"
+#ImageUser.use_auto_refresh -> use_auto_refresh: boolean "Always refresh image on frame changes"
+ + * ImageUser.cyclic -> use_cyclic: boolean "Cycle the images in the movie"
+#KeyConfig.is_user_defined -> is_user_defined: boolean, "(read-only) Indicates that a keyconfig was defined by the user"
+#+ * KeyConfig.keymaps -> keymaps: collection, "(read-only) Key maps configured as part of this configuration"
+#+ * KeyConfig.name -> name: string "Name of the key configuration"
+#KeyMap.is_modal -> is_modal: boolean, "(read-only) Indicates that a keymap is used for translate modal events for an operator"
+#KeyMap.is_user_defined -> is_user_defined: boolean "Keymap is defined by the user"
+#+ * KeyMap.items -> items: collection, "(read-only) Items in the keymap, linking an operator to an input event"
+#+ * KeyMap.name -> name: string, "(read-only) Name of the key map"
+#+ * KeyMap.region_type -> region_type: enum, "(read-only) Optional region type keymap is associated with"
+#KeyMap.show_expanded_children -> show_expanded_children: boolean "Children expanded in the user interface"
+#KeyMap.show_expanded_items -> show_expanded_items: boolean "Expanded in the user interface"
+#+ * KeyMap.space_type -> space_type: enum, "(read-only) Optional space type keymap is associated with"
+#TODO MOVE TO COLLECTION * KeyMapItem.active -> active: boolean "Activate or deactivate item"
+#+ * KeyMapItem.id -> id: int, "(read-only) ID of the item"
+#+ * KeyMapItem.idname -> idname: string "Identifier of operator to call on input event"
+#+ * KeyMapItem.key_modifier -> key_modifier: enum "Regular key pressed as a modifier"
+#+ * KeyMapItem.map_type -> map_type: enum "Type of event mapping"
+#+ * KeyMapItem.name -> name: string, "(read-only) Name of operator to call on input event"
+ + * KeyMapItem.alt -> pressed_alt: boolean "Alt key pressed"
+ + * KeyMapItem.any -> pressed_any: boolean "Any modifier keys pressed"
+ + * KeyMapItem.ctrl -> pressed_ctrl: boolean "Control key pressed"
+ + * KeyMapItem.oskey -> pressed_oskey: boolean "Operating system key pressed"
+ + * KeyMapItem.shift -> pressed_shift: boolean "Shift key pressed"
+#+ * KeyMapItem.properties -> properties: pointer, "(read-only) Properties to set when the operator is called"
+#TODO * KeyMapItem.propvalue -> propvalue: enum "The value this event translates to in a modal keymap"
+#KeyMapItem.show_expanded -> show_expanded: boolean "Show key map event and property details in the user interface"
+#+ * KeyMapItem.type -> type: enum "Type of event"
+#+ * KeyMapItem.value -> value: enum "NO DESCRIPTION"
+#+ * Keyframe.co -> co: float[2] "Coordinates of the control point"
+#Keyframe.handle_left -> handle_left: float[2] "Coordinates of the first handle"
+#Keyframe.handle_left_type -> handle_left_type: enum "Handle types"
+#Keyframe.handle_right -> handle_right: float[2] "Coordinates of the second handle"
+#Keyframe.handle_right_type -> handle_right_type: enum "Handle types"
+#+ * Keyframe.interpolation -> interpolation: enum "Interpolation method to use for segment of the curve from this Keyframe until the next Keyframe"
+#+ * Keyframe.select_control_point -> select_control_point: boolean "Control point selection status"
+#+ * Keyframe.select_left_handle -> select_left_handle: boolean "Handle 1 selection status"
+#+ * Keyframe.select_right_handle -> select_right_handle: boolean "Handle 2 selection status"
+#+ * Keyframe.type -> type: enum "The type of keyframe"
+#TODO MOVE TO COLLECTION * KeyingSet.active_path -> active_path: pointer "Active Keying Set used to insert/delete keyframes"
+#+ * KeyingSet.active_path_index -> active_path_index: int "Current Keying Set index"
+#KeyingSet.is_path_absolute -> is_path_absolute: boolean, "(read-only) Keying Set defines specific paths/settings to be keyframed (i.e. is not reliant on context info)"
+#+ * KeyingSet.name -> name: string "NO DESCRIPTION"
+#+ * KeyingSet.paths -> paths: collection, "(read-only) Keying Set Paths to define settings that get keyframed together"
+#+ * KeyingSet.type_info -> type_info: pointer, "(read-only) Callback function defines for built-in Keying Sets"
+#KeyingSet.use_insertkey_needed -> use_insertkey_needed: boolean "Only insert keyframes where theyre needed in the relevant F-Curves"
+#KeyingSet.use_insertkey_visual -> use_insertkey_visual: boolean "Insert keyframes based on visual transforms"
+#KeyingSet.use_insertkey_xyz_to_rgb -> use_insertkey_xyz_to_rgb: boolean "Color for newly added transformation F-Curves (Location, Rotation, Scale) and also Color is based on the transform axis"
+#+ * KeyingSetInfo.bl_idname -> bl_idname: string "NO DESCRIPTION"
+#+ * KeyingSetInfo.bl_label -> bl_label: string "NO DESCRIPTION"
+#KeyingSetInfo.use_insertkey_needed -> use_insertkey_needed: boolean "Only insert keyframes where theyre needed in the relevant F-Curves"
+#KeyingSetInfo.use_insertkey_visual -> use_insertkey_visual: boolean "Insert keyframes based on visual transforms"
+#KeyingSetInfo.use_insertkey_xyz_to_rgb -> use_insertkey_xyz_to_rgb: boolean "Color for newly added transformation F-Curves (Location, Rotation, Scale) and also Color is based on the transform axis"
+#+ * KeyingSetPath.array_index -> array_index: int "Index to the specific setting if applicable"
+#+ * KeyingSetPath.data_path -> data_path: string "Path to property setting"
+#+ * KeyingSetPath.group -> group: string "Name of Action Group to assign setting(s) for this path to"
+#KeyingSetPath.group_method -> group_method: enum "Method used to define which Group-name to use"
+#+ * KeyingSetPath.id -> id: pointer "ID-Block that keyframes for Keying Set should be added to (for Absolute Keying Sets only)"
+#+ * KeyingSetPath.id_type -> id_type: enum "Type of ID-block that can be used"
+#KeyingSetPath.use_entire_array -> use_entire_array: boolean "When an array/vector type is chosen (Location, Rotation, Color, etc.), entire array is to be used"
+#KeyingSetPath.use_insertkey_needed -> use_insertkey_needed: boolean "Only insert keyframes where theyre needed in the relevant F-Curves"
+#KeyingSetPath.use_insertkey_visual -> use_insertkey_visual: boolean "Insert keyframes based on visual transforms"
+#KeyingSetPath.use_insertkey_xyz_to_rgb -> use_insertkey_xyz_to_rgb: boolean "Color for newly added transformation F-Curves (Location, Rotation, Scale) and also Color is based on the transform axis"
+#+ * LampSkySettings.atmosphere_distance_factor -> atmosphere_distance_factor: float "Multiplier to convert blender units to physical distance"
+#+ * LampSkySettings.atmosphere_extinction -> atmosphere_extinction: float "Extinction scattering contribution factor"
+#+ * LampSkySettings.atmosphere_inscattering -> atmosphere_inscattering: float "Scatter contribution factor"
+#+ * LampSkySettings.atmosphere_turbidity -> atmosphere_turbidity: float "Sky turbidity"
+#+ * LampSkySettings.backscattered_light -> backscattered_light: float "Backscattered light"
+ + * LampSkySettings.horizon_brightness -> horizon_intensity: float "Horizon brightness"
+#+ * LampSkySettings.sky_blend -> sky_blend: float "Blend factor with sky"
+#+ * LampSkySettings.sky_blend_type -> sky_blend_type: enum "Blend mode for combining sun sky with world sky"
+#+ * LampSkySettings.sky_color_space -> sky_color_space: enum "Color space to use for internal XYZ->RGB color conversion"
+#+ * LampSkySettings.sky_exposure -> sky_exposure: float "Strength of sky shading exponential exposure correction"
+#+ * LampSkySettings.spread -> spread: float "Horizon Spread"
+#+ * LampSkySettings.sun_brightness -> sun_brightness: float "Sun brightness"
+#+ * LampSkySettings.sun_intensity -> sun_intensity: float "Sun intensity"
+#+ * LampSkySettings.sun_size -> sun_size: float "Sun size"
+#+ * LampSkySettings.use_atmosphere -> use_atmosphere: boolean "Apply sun effect on atmosphere"
+#+ * LampSkySettings.use_sky -> use_sky: boolean "Apply sun effect on sky"
+#+ * LatticePoint.co -> co: float[3], "(read-only)"
+#LatticePoint.co_deform -> co_deform: float[3] "NO DESCRIPTION"
+#+ * LatticePoint.groups -> groups: collection, "(read-only) Weights for the vertex groups this point is member of"
+#+ * Macro.bl_description -> bl_description: string "NO DESCRIPTION"
+#+ * Macro.bl_idname -> bl_idname: string "NO DESCRIPTION"
+#+ * Macro.bl_label -> bl_label: string "NO DESCRIPTION"
+#+ * Macro.bl_options -> bl_options: enum "Options for this operator type"
+#+ * Macro.name -> name: string, "(read-only)"
+#+ * Macro.properties -> properties: pointer, "(read-only)"
+#+ * Main.actions -> actions: collection, "(read-only) Action datablocks."
+#+ * Main.armatures -> armatures: collection, "(read-only) Armature datablocks."
+#+ * Main.brushes -> brushes: collection, "(read-only) Brush datablocks."
+#+ * Main.cameras -> cameras: collection, "(read-only) Camera datablocks."
+#+ * Main.curves -> curves: collection, "(read-only) Curve datablocks."
+#+ * Main.filepath -> filepath: string, "(read-only) Path to the .blend file"
+#+ * Main.fonts -> fonts: collection, "(read-only) Vector font datablocks."
+#Main.grease_pencil -> grease_pencil: collection, "(read-only) Grease Pencil datablocks."
+#+ * Main.groups -> groups: collection, "(read-only) Group datablocks."
+#+ * Main.images -> images: collection, "(read-only) Image datablocks."
+#Main.is_dirty -> is_dirty: boolean, "(read-only) Has the current session been saved to disk as a .blend file"
+#+ * Main.lamps -> lamps: collection, "(read-only) Lamp datablocks."
+#+ * Main.lattices -> lattices: collection, "(read-only) Lattice datablocks."
+#+ * Main.libraries -> libraries: collection, "(read-only) Library datablocks."
+#+ * Main.materials -> materials: collection, "(read-only) Material datablocks."
+#+ * Main.meshes -> meshes: collection, "(read-only) Mesh datablocks."
+#+ * Main.metaballs -> metaballs: collection, "(read-only) Metaball datablocks."
+#+ * Main.node_groups -> node_groups: collection, "(read-only) Node group datablocks."
+#+ * Main.objects -> objects: collection, "(read-only) Object datablocks."
+#+ * Main.particles -> particles: collection, "(read-only) Particle datablocks."
+#+ * Main.scenes -> scenes: collection, "(read-only) Scene datablocks."
+#+ * Main.screens -> screens: collection, "(read-only) Screen datablocks."
+#+ * Main.scripts -> scripts: collection, "(read-only) Script datablocks (DEPRECATED)."
+ + * Main.debug -> show_debug: boolean "Print debugging information in console"
+#+ * Main.sounds -> sounds: collection, "(read-only) Sound datablocks."
+#+ * Main.texts -> texts: collection, "(read-only) Text datablocks."
+#+ * Main.textures -> textures: collection, "(read-only) Texture datablocks."
+#+ * Main.window_managers -> window_managers: collection, "(read-only) Window manager datablocks."
+#+ * Main.worlds -> worlds: collection, "(read-only) World datablocks."
+#+ * MaterialHalo.add -> add: float "Sets the strength of the add effect"
+#+ * MaterialHalo.flare_boost -> flare_boost: float "Gives the flare extra strength"
+#+ * MaterialHalo.flare_seed -> flare_seed: int "Specifies an offset in the flare seed table"
+#+ * MaterialHalo.flare_size -> flare_size: float "Sets the factor by which the flare is larger than the halo"
+#MaterialHalo.flare_subflare_count -> flare_subflare_count: int "Sets the number of subflares"
+#MaterialHalo.flare_subflare_size -> flare_subflare_size: float "Sets the dimension of the subflares, dots and circles"
+#+ * MaterialHalo.hardness -> hardness: int "Sets the hardness of the halo"
+#MaterialHalo.line_count -> line_count: int "Sets the number of star shaped lines rendered over the halo"
+#MaterialHalo.ring_count -> ring_count: int "Sets the number of rings rendered over the halo"
+#+ * MaterialHalo.seed -> seed: int "Randomizes ring dimension and line location"
+#MaterialHalo.show_shaded -> show_shaded: boolean "Lets halo receive light and shadows from external objects"
+#+ * MaterialHalo.size -> size: float "Sets the dimension of the halo"
+#MaterialHalo.star_tip_count -> star_tip_count: int "Sets the number of points on the star shaped halo"
+#MaterialHalo.use_extreme_alpha -> use_extreme_alpha: boolean "Uses extreme alpha"
+#MaterialHalo.use_flare_mode -> use_flare_mode: boolean "Renders halo as a lensflare"
+ + * MaterialHalo.lines -> use_lines: boolean "Renders star shaped lines over halo"
+ + * MaterialHalo.ring -> use_ring: boolean "Renders rings over halo"
+ + * MaterialHalo.soft -> use_soft: boolean "Softens the edges of halos at intersections with other geometry"
+ + * MaterialHalo.star -> use_star: boolean "Renders halo as a star"
+ + * MaterialHalo.texture -> use_texture: boolean "Gives halo a texture"
+#MaterialHalo.use_vertex_normal -> use_vertex_normal: boolean "Uses the vertex normal to specify the dimension of the halo"
+ + * MaterialPhysics.damp -> damping: float "Damping of the spring force, when inside the physics distance area"
+#+ * MaterialPhysics.distance -> distance: float "Distance of the physics area"
+#+ * MaterialPhysics.elasticity -> elasticity: float "Elasticity of collisions"
+#+ * MaterialPhysics.force -> force: float "Upward spring force, when inside the physics distance area"
+#+ * MaterialPhysics.friction -> friction: float "Coulomb friction coefficient, when inside the physics distance area"
+#MaterialPhysics.use_normal_align -> use_normal_align: boolean "Align dynamic game objects along the surface normal, when inside the physics distance area"
+#+ * MaterialRaytraceMirror.depth -> depth: int "Maximum allowed number of light inter-reflections"
+#+ * MaterialRaytraceMirror.distance -> distance: float "Maximum distance of reflected rays. Reflections further than this range fade to sky color or material color"
+#+ * MaterialRaytraceMirror.fade_to -> fade_to: enum "The color that rays with no intersection within the Max Distance take. Material color can be best for indoor scenes, sky color for outdoor"
+#+ * MaterialRaytraceMirror.fresnel -> fresnel: float "Power of Fresnel for mirror reflection"
+#+ * MaterialRaytraceMirror.fresnel_factor -> fresnel_factor: float "Blending factor for Fresnel"
+#+ * MaterialRaytraceMirror.gloss_anisotropic -> gloss_anisotropic: float "The shape of the reflection, from 0.0 (circular) to 1.0 (fully stretched along the tangent"
+#+ * MaterialRaytraceMirror.gloss_factor -> gloss_factor: float "The shininess of the reflection. Values < 1.0 give diffuse, blurry reflections"
+#+ * MaterialRaytraceMirror.gloss_samples -> gloss_samples: int "Number of cone samples averaged for blurry reflections"
+#+ * MaterialRaytraceMirror.gloss_threshold -> gloss_threshold: float "Threshold for adaptive sampling. If a sample contributes less than this amount (as a percentage), sampling is stopped"
+#+ * MaterialRaytraceMirror.reflect_factor -> reflect_factor: float "Sets the amount mirror reflection for raytrace"
+#+ * MaterialRaytraceMirror.use -> use: boolean "Enable raytraced reflections"
+#+ * MaterialRaytraceTransparency.depth -> depth: int "Maximum allowed number of light inter-refractions"
+ + * MaterialRaytraceTransparency.limit -> depth_max: float "Maximum depth for light to travel through the transparent material before becoming fully filtered (0.0 is disabled)"
+#+ * MaterialRaytraceTransparency.falloff -> falloff: float "Falloff power for transmissivity filter effect (1.0 is linear)"
+#+ * MaterialRaytraceTransparency.filter -> filter: float "Amount to blend in the materials diffuse color in raytraced transparency (simulating absorption)"
+#+ * MaterialRaytraceTransparency.fresnel -> fresnel: float "Power of Fresnel for transparency (Ray or ZTransp)"
+#+ * MaterialRaytraceTransparency.fresnel_factor -> fresnel_factor: float "Blending factor for Fresnel"
+#+ * MaterialRaytraceTransparency.gloss_factor -> gloss_factor: float "The clarity of the refraction. Values < 1.0 give diffuse, blurry refractions"
+#+ * MaterialRaytraceTransparency.gloss_samples -> gloss_samples: int "Number of cone samples averaged for blurry refractions"
+#+ * MaterialRaytraceTransparency.gloss_threshold -> gloss_threshold: float "Threshold for adaptive sampling. If a sample contributes less than this amount (as a percentage), sampling is stopped"
+#+ * MaterialRaytraceTransparency.ior -> ior: float "Sets angular index of refraction for raytraced refraction"
+#+ * MaterialSlot.link -> link: enum "Link material to object or the objects data"
+#+ * MaterialSlot.material -> material: pointer "Material datablock used by this material slot"
+#+ * MaterialSlot.name -> name: string, "(read-only) Material slot name"
+#+ * MaterialStrand.blend_distance -> blend_distance: float "Worldspace distance over which to blend in the surface normal"
+#+ * MaterialStrand.root_size -> root_size: float "Start size of strands in pixels or Blender units"
+#+ * MaterialStrand.shape -> shape: float "Positive values make strands rounder, negative makes strands spiky"
+#MaterialStrand.size_min -> size_min: float "Minimum size of strands in pixels"
+#+ * MaterialStrand.tip_size -> tip_size: float "End size of strands in pixels or Blender units"
+#MaterialStrand.use_blender_units -> use_blender_units: boolean "Use Blender units for widths instead of pixels"
+#MaterialStrand.use_surface_diffuse -> use_surface_diffuse: boolean "Make diffuse shading more similar to shading the surface"
+#MaterialStrand.use_tangent_shading -> use_tangent_shading: boolean "Uses direction of strands as normal for tangent-shading"
+#+ * MaterialStrand.uv_layer -> uv_layer: string "Name of UV layer to override"
+#+ * MaterialStrand.width_fade -> width_fade: float "Transparency along the width of the strand"
+#+ * MaterialSubsurfaceScattering.back -> back: float "Back scattering weight"
+#+ * MaterialSubsurfaceScattering.color -> color: float[3] "Scattering color"
+#+ * MaterialSubsurfaceScattering.color_factor -> color_factor: float "Blend factor for SSS colors"
+#MaterialSubsurfaceScattering.error_threshold -> error_threshold: float "Error tolerance (low values are slower and higher quality)"
+#+ * MaterialSubsurfaceScattering.front -> front: float "Front scattering weight"
+#+ * MaterialSubsurfaceScattering.ior -> ior: float "Index of refraction (higher values are denser)"
+#+ * MaterialSubsurfaceScattering.radius -> radius: float[3] "Mean red/green/blue scattering path length"
+#+ * MaterialSubsurfaceScattering.scale -> scale: float "Object scale factor"
+#+ * MaterialSubsurfaceScattering.texture_factor -> texture_factor: float "Texture scatting blend factor"
+#+ * MaterialSubsurfaceScattering.use -> use: boolean "Enable diffuse subsurface scatting effects in a material"
+#+ * MaterialVolume.asymmetry -> asymmetry: float "Back scattering (-1.0) to Forward scattering (1.0) and the range in between"
+#+ * MaterialVolume.cache_resolution -> cache_resolution: int "Resolution of the voxel grid, low resolutions are faster, high resolutions use more memory"
+#+ * MaterialVolume.density -> density: float "The base density of the volume"
+#+ * MaterialVolume.density_scale -> density_scale: float "Multiplier for the materials density"
+#MaterialVolume.depth_threshold -> depth_threshold: float "Stop ray marching early if transmission drops below this luminance - higher values give speedups in dense volumes at the expense of accuracy"
+#+ * MaterialVolume.emission -> emission: float "Amount of light that gets emitted by the volume"
+#+ * MaterialVolume.emission_color -> emission_color: float[3] "NO DESCRIPTION"
+#MaterialVolume.light_method -> light_method: enum "Method of shading, attenuating, and scattering light through the volume"
+#+ * MaterialVolume.ms_diffusion -> ms_diffusion: float "Diffusion factor, the strength of the blurring effect"
+#+ * MaterialVolume.ms_intensity -> ms_intensity: float "Multiplier for multiple scattered light energy"
+#+ * MaterialVolume.ms_spread -> ms_spread: float "Proportional distance over which the light is diffused"
+#+ * MaterialVolume.reflection -> reflection: float "Multiplier to make out-scattered light brighter or darker (non-physically correct)"
+#+ * MaterialVolume.reflection_color -> reflection_color: float[3] "Colour of light scattered out of the volume (does not affect transmission)"
+#+ * MaterialVolume.scattering -> scattering: float "Amount of light that gets scattered out by the volume - the more out-scattering, the shallower the light will penetrate"
+#MaterialVolume.step_method -> step_method: enum "Method of calculating the steps through the volume"
+#+ * MaterialVolume.step_size -> step_size: float "Distance between subsequent volume depth samples"
+#+ * MaterialVolume.transmission_color -> transmission_color: float[3] "Result color of the volume, after other light has been scattered/absorbed"
+#MaterialVolume.use_external_shadows -> use_external_shadows: boolean "Receive shadows from sources outside the volume (temporary)"
+#MaterialVolume.use_light_cache -> use_light_cache: boolean "Pre-calculate the shading information into a voxel grid, speeds up shading at slightly less accuracy"
+#+ * Menu.bl_idname -> bl_idname: string "If this is set, the menu gets a custom ID, otherwise it takes the name of the class used to define the panel. For example, if the class name is OBJECT_MT_hello, and bl_idname is not set by the script, then bl_idname = OBJECT_MT_hello"
+#+ * Menu.bl_label -> bl_label: string "The menu label"
+#+ * Menu.layout -> layout: pointer, "(read-only) Defines the structure of the menu in the UI."
+#+ * MeshColor.color1 -> color1: float[3] "NO DESCRIPTION"
+#+ * MeshColor.color2 -> color2: float[3] "NO DESCRIPTION"
+#+ * MeshColor.color3 -> color3: float[3] "NO DESCRIPTION"
+#+ * MeshColor.color4 -> color4: float[3] "NO DESCRIPTION"
+#+ * MeshColorLayer.active -> active: boolean "Sets the layer as active for display and editing"
+#+ * MeshColorLayer.active_render -> active_render: boolean "Sets the layer as active for rendering"
+#+ * MeshColorLayer.data -> data: collection, "(read-only)"
+#+ * MeshColorLayer.name -> name: string "NO DESCRIPTION"
+#+ * MeshEdge.bevel_weight -> bevel_weight: float "Weight used by the Bevel modifier"
+#+ * MeshEdge.crease -> crease: float "Weight used by the Subsurf modifier for creasing"
+#+ * MeshEdge.hide -> hide: boolean "NO DESCRIPTION"
+#+ * MeshEdge.index -> index: int, "(read-only) Index number of the vertex"
+#MeshEdge.is_fgon -> is_fgon: boolean "Fgon edge"
+#MeshEdge.is_loose -> is_loose: boolean "Loose edge"
+#+ * MeshEdge.select -> select: boolean "NO DESCRIPTION"
+#MeshEdge.use_edge_sharp -> use_edge_sharp: boolean "Sharp edge for the EdgeSplit modifier"
+#MeshEdge.use_seam -> use_seam: boolean "Seam edge for UV unwrapping"
+#MeshEdge.vertices -> vertices: int[2] "Vertex indices"
+#+ * MeshFace.area -> area: float, "(read-only) read only area of the face"
+#+ * MeshFace.hide -> hide: boolean "NO DESCRIPTION"
+#+ * MeshFace.index -> index: int, "(read-only) Index number of the vertex"
+#+ * MeshFace.material_index -> material_index: int "NO DESCRIPTION"
+#+ * MeshFace.normal -> normal: float[3], "(read-only) local space unit length normal vector for this face"
+#+ * MeshFace.select -> select: boolean "NO DESCRIPTION"
+#MeshFace.use_smooth -> use_smooth: boolean "NO DESCRIPTION"
+#MeshFace.vertices -> vertices: int[4] "Vertex indices"
+#MeshFace.vertices_raw -> vertices_raw: int[4] "Fixed size vertex indices array"
+#+ * MeshFaces.active -> active: int "The active face for this mesh"
+#+ * MeshFaces.active_tface -> active_tface: pointer, "(read-only) Active Texture Face"
+#+ * MeshFloatProperty.value -> value: float "NO DESCRIPTION"
+#+ * MeshFloatPropertyLayer.data -> data: collection, "(read-only)"
+#+ * MeshFloatPropertyLayer.name -> name: string "NO DESCRIPTION"
+#+ * MeshIntProperty.value -> value: int "NO DESCRIPTION"
+#+ * MeshIntPropertyLayer.data -> data: collection, "(read-only)"
+#+ * MeshIntPropertyLayer.name -> name: string "NO DESCRIPTION"
+#+ * MeshSticky.co -> co: float[2] "Sticky texture coordinate location"
+#+ * MeshStringProperty.value -> value: string "NO DESCRIPTION"
+#+ * MeshStringPropertyLayer.data -> data: collection, "(read-only)"
+#+ * MeshStringPropertyLayer.name -> name: string "NO DESCRIPTION"
+#MeshTextureFace.blend_type -> blend_type: enum "Transparency blending mode"
+#MeshTextureFace.hide -> hide: boolean "Make face invisible"
+#+ * MeshTextureFace.image -> image: pointer "NO DESCRIPTION"
+#MeshTextureFace.pin_uv -> pin_uv: boolean[4] "NO DESCRIPTION"
+#+ * MeshTextureFace.select_uv -> select_uv: boolean[4] "NO DESCRIPTION"
+#MeshTextureFace.use_alpha_sort -> use_alpha_sort: boolean "Enable sorting of faces for correct alpha drawing (slow, use Clip Alpha instead when possible)"
+#MeshTextureFace.use_billboard -> use_billboard: boolean "Billboard with Z-axis constraint"
+#MeshTextureFace.use_bitmap_text -> use_bitmap_text: boolean "Enable bitmap text on face"
+#MeshTextureFace.use_blend_shared -> use_blend_shared: boolean "Blend vertex colors across face when vertices are shared"
+#MeshTextureFace.use_collision -> use_collision: boolean "Use face for collision and ray-sensor detection"
+#MeshTextureFace.use_halo -> use_halo: boolean "Screen aligned billboard"
+#MeshTextureFace.use_image -> use_image: boolean "Render face with texture"
+#MeshTextureFace.use_light -> use_light: boolean "Use light for face"
+#MeshTextureFace.use_object_color -> use_object_color: boolean "Use ObColor instead of vertex colors"
+#MeshTextureFace.use_shadow_cast -> use_shadow_cast: boolean "Face is used for shadow"
+#MeshTextureFace.use_twoside -> use_twoside: boolean "Render face two-sided"
+#+ * MeshTextureFace.uv -> uv: float[8] "NO DESCRIPTION"
+#+ * MeshTextureFace.uv1 -> uv1: float[2] "NO DESCRIPTION"
+#+ * MeshTextureFace.uv2 -> uv2: float[2] "NO DESCRIPTION"
+#+ * MeshTextureFace.uv3 -> uv3: float[2] "NO DESCRIPTION"
+#+ * MeshTextureFace.uv4 -> uv4: float[2] "NO DESCRIPTION"
+#+ * MeshTextureFace.uv_raw -> uv_raw: float[8] "Fixed size UV coordinates array"
+#+ * MeshTextureFaceLayer.active -> active: boolean "Sets the layer as active for display and editing"
+#+ * MeshTextureFaceLayer.active_clone -> active_clone: boolean "Sets the layer as active for cloning"
+#+ * MeshTextureFaceLayer.active_render -> active_render: boolean "Sets the layer as active for rendering"
+#+ * MeshTextureFaceLayer.data -> data: collection, "(read-only)"
+#+ * MeshTextureFaceLayer.name -> name: string "NO DESCRIPTION"
+#+ * MeshVertex.bevel_weight -> bevel_weight: float "Weight used by the Bevel modifier Only Vertices option"
+#+ * MeshVertex.co -> co: float[3] "NO DESCRIPTION"
+#+ * MeshVertex.groups -> groups: collection, "(read-only) Weights for the vertex groups this vertex is member of"
+#+ * MeshVertex.hide -> hide: boolean "NO DESCRIPTION"
+#+ * MeshVertex.index -> index: int, "(read-only) Index number of the vertex"
+#+ * MeshVertex.normal -> normal: float[3] "Vertex Normal"
+#+ * MeshVertex.select -> select: boolean "NO DESCRIPTION"
+#MetaElement.co -> co: float[3] "NO DESCRIPTION"
+#+ * MetaElement.hide -> hide: boolean "Hide element"
+#+ * MetaElement.radius -> radius: float "NO DESCRIPTION"
+#+ * MetaElement.rotation -> rotation: float[4] "NO DESCRIPTION"
+#+ * MetaElement.size_x -> size_x: float "Size of element, use of components depends on element type"
+#+ * MetaElement.size_y -> size_y: float "Size of element, use of components depends on element type"
+#+ * MetaElement.size_z -> size_z: float "Size of element, use of components depends on element type"
+#+ * MetaElement.stiffness -> stiffness: float "Stiffness defines how much of the element to fill"
+#+ * MetaElement.type -> type: enum "Metaball types"
+#MetaElement.use_negative -> use_negative: boolean "Set metaball as negative one"
+#+ * Modifier.name -> name: string "Modifier name"
+#Modifier.show_expanded -> show_expanded: boolean "Set modifier expanded in the user interface"
+#Modifier.show_in_editmode -> show_in_editmode: boolean "Use modifier while in the edit mode"
+#Modifier.show_on_cage -> show_on_cage: boolean "Enable direct editing of modifier control cage"
+#Modifier.show_render -> show_render: boolean "Use modifier during rendering"
+#Modifier.show_viewport -> show_viewport: boolean "Realtime display of a modifier"
+#+ * Modifier.type -> type: enum, "(read-only)"
+ + * Modifier|ArmatureModifier.invert -> invert_vertex_group: boolean "Invert vertex group influence"
+#+ * Modifier|ArmatureModifier.object -> object: pointer "Armature object to deform with"
+#+ * Modifier|ArmatureModifier.use_bone_envelopes -> use_bone_envelopes: boolean "NO DESCRIPTION"
+ + * Modifier|ArmatureModifier.quaternion -> use_deform_preserve_volume: boolean "Deform rotation interpolation with quaternions"
+#Modifier|ArmatureModifier.use_multi_modifier -> use_multi_modifier: boolean "Use same input as previous modifier, and mix results using overall vgroup"
+#+ * Modifier|ArmatureModifier.use_vertex_groups -> use_vertex_groups: boolean "NO DESCRIPTION"
+#+ * Modifier|ArmatureModifier.vertex_group -> vertex_group: string "Vertex group name"
+#Modifier|ArrayModifier.constant_offset_displace -> constant_offset_displace: float[3] "NO DESCRIPTION"
+#+ * Modifier|ArrayModifier.count -> count: int "Number of duplicates to make"
+#+ * Modifier|ArrayModifier.curve -> curve: pointer "Curve object to fit array length to"
+#+ * Modifier|ArrayModifier.end_cap -> end_cap: pointer "Mesh object to use as an end cap"
+ + * Modifier|ArrayModifier.length -> fit_length: float "Length to fit array within"
+#+ * Modifier|ArrayModifier.fit_type -> fit_type: enum "Array length calculation method"
+#Modifier|ArrayModifier.merge_threshold -> merge_threshold: float "Limit below which to merge vertices"
+#+ * Modifier|ArrayModifier.offset_object -> offset_object: pointer "NO DESCRIPTION"
+#Modifier|ArrayModifier.relative_offset_displace -> relative_offset_displace: float[3] "NO DESCRIPTION"
+#+ * Modifier|ArrayModifier.start_cap -> start_cap: pointer "Mesh object to use as a start cap"
+#Modifier|ArrayModifier.use_constant_offset -> use_constant_offset: boolean "Add a constant offset"
+#Modifier|ArrayModifier.use_merge_vertices -> use_merge_vertices: boolean "Merge vertices in adjacent duplicates"
+#Modifier|ArrayModifier.use_merge_vertices_cap -> use_merge_vertices_cap: boolean "Merge vertices in first and last duplicates"
+#Modifier|ArrayModifier.use_object_offset -> use_object_offset: boolean "Add another objects transformation to the total offset"
+#Modifier|ArrayModifier.use_relative_offset -> use_relative_offset: boolean "Add an offset relative to the objects bounding box"
+ + * Modifier|BevelModifier.angle -> angle_limit: float "Angle above which to bevel edges"
+#+ * Modifier|BevelModifier.edge_weight_method -> edge_weight_method: enum "What edge weight to use for weighting a vertex"
+#+ * Modifier|BevelModifier.limit_method -> limit_method: enum "NO DESCRIPTION"
+#Modifier|BevelModifier.use_only_vertices -> use_only_vertices: boolean "Bevel verts/corners, not edges"
+#+ * Modifier|BevelModifier.width -> width: float "Bevel value/amount"
+#+ * Modifier|BooleanModifier.object -> object: pointer "Mesh object to use for Boolean operation"
+#+ * Modifier|BooleanModifier.operation -> operation: enum "NO DESCRIPTION"
+ + * Modifier|BuildModifier.length -> frame_duration: float "Specify the total time the build effect requires"
+#+ * Modifier|BuildModifier.frame_start -> frame_start: float "Specify the start frame of the effect"
+#+ * Modifier|BuildModifier.seed -> seed: int "Specify the seed for random if used"
+ + * Modifier|BuildModifier.randomize -> use_random_order: boolean "Randomize the faces or edges during build"
+#+ * Modifier|CastModifier.cast_type -> cast_type: enum "NO DESCRIPTION"
+#+ * Modifier|CastModifier.factor -> factor: float "NO DESCRIPTION"
+#+ * Modifier|CastModifier.object -> object: pointer "Control object: if available, its location determines the center of the effect"
+#+ * Modifier|CastModifier.radius -> radius: float "Only deform vertices within this distance from the center of the effect (leave as 0 for infinite.)"
+#+ * Modifier|CastModifier.size -> size: float "Size of projection shape (leave as 0 for auto.)"
+#Modifier|CastModifier.use_radius_as_size -> use_radius_as_size: boolean "Use radius as size of projection shape (0 = auto)"
+#+ * Modifier|CastModifier.use_transform -> use_transform: boolean "Use object transform to control projection shape"
+ + * Modifier|CastModifier.x -> use_x: boolean "NO DESCRIPTION"
+ + * Modifier|CastModifier.y -> use_y: boolean "NO DESCRIPTION"
+ + * Modifier|CastModifier.z -> use_z: boolean "NO DESCRIPTION"
+#+ * Modifier|CastModifier.vertex_group -> vertex_group: string "Vertex group name"
+#+ * Modifier|ClothModifier.collision_settings -> collision_settings: pointer, "(read-only)"
+#+ * Modifier|ClothModifier.point_cache -> point_cache: pointer, "(read-only)"
+#+ * Modifier|ClothModifier.settings -> settings: pointer, "(read-only)"
+#+ * Modifier|CollisionModifier.settings -> settings: pointer, "(read-only)"
+#+ * Modifier|CurveModifier.deform_axis -> deform_axis: enum "The axis that the curve deforms along"
+#+ * Modifier|CurveModifier.object -> object: pointer "Curve object to deform with"
+#+ * Modifier|CurveModifier.vertex_group -> vertex_group: string "Vertex group name"
+#+ * Modifier|DecimateModifier.face_count -> face_count: int, "(read-only) The current number of faces in the decimated mesh"
+#+ * Modifier|DecimateModifier.ratio -> ratio: float "Defines the ratio of triangles to reduce to"
+#+ * Modifier|DisplaceModifier.direction -> direction: enum "NO DESCRIPTION"
+#Modifier|DisplaceModifier.mid_level -> mid_level: float "Material value that gives no displacement"
+#+ * Modifier|DisplaceModifier.strength -> strength: float "NO DESCRIPTION"
+#+ * Modifier|DisplaceModifier.texture -> texture: pointer "NO DESCRIPTION"
+#+ * Modifier|DisplaceModifier.texture_coordinate_object -> texture_coordinate_object: pointer "NO DESCRIPTION"
+#Modifier|DisplaceModifier.texture_coords -> texture_coords: enum "NO DESCRIPTION"
+#+ * Modifier|DisplaceModifier.uv_layer -> uv_layer: string "UV layer name"
+#+ * Modifier|DisplaceModifier.vertex_group -> vertex_group: string "Vertex group name"
+#+ * Modifier|EdgeSplitModifier.split_angle -> split_angle: float "Angle above which to split edges"
+#+ * Modifier|EdgeSplitModifier.use_edge_angle -> use_edge_angle: boolean "Split edges with high angle between faces"
+#Modifier|EdgeSplitModifier.use_edge_sharp -> use_edge_sharp: boolean "Split edges that are marked as sharp"
+#+ * Modifier|ExplodeModifier.protect -> protect: float "Clean vertex group edges"
+#Modifier|ExplodeModifier.show_alive -> show_alive: boolean "Show mesh when particles are alive"
+#Modifier|ExplodeModifier.show_dead -> show_dead: boolean "Show mesh when particles are dead"
+#Modifier|ExplodeModifier.show_unborn -> show_unborn: boolean "Show mesh when particles are unborn"
+#Modifier|ExplodeModifier.use_edge_split -> use_edge_split: boolean "Split face edges for nicer shrapnel"
+ + * Modifier|ExplodeModifier.size -> use_size: boolean "Use particle size for the shrapnel"
+#+ * Modifier|ExplodeModifier.vertex_group -> vertex_group: string "NO DESCRIPTION"
+#+ * Modifier|FluidSimulationModifier.settings -> settings: pointer, "(read-only) Settings for how this object is used in the fluid simulation"
+#+ * Modifier|HookModifier.falloff -> falloff: float "If not zero, the distance from the hook where influence ends"
+#+ * Modifier|HookModifier.force -> force: float "Relative force of the hook"
+#+ * Modifier|HookModifier.object -> object: pointer "Parent Object for hook, also recalculates and clears offset"
+#+ * Modifier|HookModifier.subtarget -> subtarget: string "Name of Parent Bone for hook (if applicable), also recalculates and clears offset"
+#+ * Modifier|HookModifier.vertex_group -> vertex_group: string "Vertex group name"
+#+ * Modifier|LatticeModifier.object -> object: pointer "Lattice object to deform with"
+#+ * Modifier|LatticeModifier.vertex_group -> vertex_group: string "Vertex group name"
+#+ * Modifier|MaskModifier.armature -> armature: pointer "Armature to use as source of bones to mask"
+ + * Modifier|MaskModifier.invert -> invert_vertex_group: boolean "Use vertices that are not part of region defined"
+#+ * Modifier|MaskModifier.mode -> mode: enum "NO DESCRIPTION"
+#+ * Modifier|MaskModifier.vertex_group -> vertex_group: string "Vertex group name"
+ + * Modifier|MeshDeformModifier.invert -> invert_vertex_group: boolean "Invert vertex group influence"
+#+ * Modifier|MeshDeformModifier.is_bound -> is_bound: boolean, "(read-only) Whether geometry has been bound to control cage"
+#+ * Modifier|MeshDeformModifier.object -> object: pointer "Mesh object to deform with"
+#+ * Modifier|MeshDeformModifier.precision -> precision: int "The grid size for binding"
+ + * Modifier|MeshDeformModifier.dynamic -> use_dynamic_bind: boolean "Recompute binding dynamically on top of other deformers (slower and more memory consuming.)"
+#+ * Modifier|MeshDeformModifier.vertex_group -> vertex_group: string "Vertex group name"
+#Modifier|MirrorModifier.merge_threshold -> merge_threshold: float "Distance from axis within which mirrored vertices are merged"
+#+ * Modifier|MirrorModifier.mirror_object -> mirror_object: pointer "Object to use as mirror"
+ + * Modifier|MirrorModifier.clip -> use_clip: boolean "Prevents vertices from going through the mirror during transform"
+#Modifier|MirrorModifier.use_mirror_u -> use_mirror_u: boolean "Mirror the U texture coordinate around the 0.5 point"
+#Modifier|MirrorModifier.use_mirror_v -> use_mirror_v: boolean "Mirror the V texture coordinate around the 0.5 point"
+#Modifier|MirrorModifier.use_mirror_vertex_groups -> use_mirror_vertex_groups: boolean "Mirror vertex groups (e.g. .R->.L)"
+ + * Modifier|MirrorModifier.x -> use_x: boolean "Enable X axis mirror"
+ + * Modifier|MirrorModifier.y -> use_y: boolean "Enable Y axis mirror"
+ + * Modifier|MirrorModifier.z -> use_z: boolean "Enable Z axis mirror"
+#+ * Modifier|MultiresModifier.filepath -> filepath: string "Path to external displacements file"
+#Modifier|MultiresModifier.is_external -> is_external: boolean, "(read-only) Store multires displacements outside the .blend file, to save memory"
+#+ * Modifier|MultiresModifier.levels -> levels: int "Number of subdivisions to use in the viewport"
+#+ * Modifier|MultiresModifier.render_levels -> render_levels: int "NO DESCRIPTION"
+#+ * Modifier|MultiresModifier.sculpt_levels -> sculpt_levels: int "Number of subdivisions to use in sculpt mode"
+#Modifier|MultiresModifier.show_only_control_edges -> show_only_control_edges: boolean "Skip drawing/rendering of interior subdivided edges"
+#+ * Modifier|MultiresModifier.subdivision_type -> subdivision_type: enum "Selects type of subdivision algorithm"
+#+ * Modifier|MultiresModifier.total_levels -> total_levels: int, "(read-only) Number of subdivisions for which displacements are stored"
+#+ * Modifier|ParticleInstanceModifier.axis -> axis: enum "Pole axis for rotation"
+#+ * Modifier|ParticleInstanceModifier.object -> object: pointer "Object that has the particle system"
+#Modifier|ParticleInstanceModifier.particle_system_index -> particle_system_index: int "NO DESCRIPTION"
+#+ * Modifier|ParticleInstanceModifier.position -> position: float "Position along path"
+#+ * Modifier|ParticleInstanceModifier.random_position -> random_position: float "Randomize position along path"
+#Modifier|ParticleInstanceModifier.show_alive -> show_alive: boolean "Show instances when particles are alive"
+#Modifier|ParticleInstanceModifier.show_dead -> show_dead: boolean "Show instances when particles are dead"
+#Modifier|ParticleInstanceModifier.show_unborn -> show_unborn: boolean "Show instances when particles are unborn"
+ + * Modifier|ParticleInstanceModifier.children -> use_children: boolean "Create instances from child particles"
+ + * Modifier|ParticleInstanceModifier.normal -> use_normal: boolean "Create instances from normal particles"
+#+ * Modifier|ParticleInstanceModifier.use_path -> use_path: boolean "Create instances along particle paths"
+#Modifier|ParticleInstanceModifier.use_preserve_shape -> use_preserve_shape: boolean "Dont stretch the object"
+ + * Modifier|ParticleInstanceModifier.size -> use_size: boolean "Use particle size to scale the instances"
+#+ * Modifier|ParticleSystemModifier.particle_system -> particle_system: pointer, "(read-only) Particle System that this modifier controls"
+#+ * Modifier|ScrewModifier.angle -> angle: float "Angle of revolution"
+#+ * Modifier|ScrewModifier.axis -> axis: enum "Screw axis"
+#+ * Modifier|ScrewModifier.iterations -> iterations: int "Number of times to apply the screw operation"
+#+ * Modifier|ScrewModifier.object -> object: pointer "Object to define the screw axis"
+#+ * Modifier|ScrewModifier.render_steps -> render_steps: int "Number of steps in the revolution"
+#+ * Modifier|ScrewModifier.screw_offset -> screw_offset: float "Offset the revolution along its axis"
+#+ * Modifier|ScrewModifier.steps -> steps: int "Number of steps in the revolution"
+#+ * Modifier|ScrewModifier.use_normal_calculate -> use_normal_calculate: boolean "Calculate the order of edges (needed for meshes, but not curves)"
+#+ * Modifier|ScrewModifier.use_normal_flip -> use_normal_flip: boolean "Flip normals of lathed faces"
+#+ * Modifier|ScrewModifier.use_object_screw_offset -> use_object_screw_offset: boolean "Use the distance between the objects to make a screw"
+#+ * Modifier|ShrinkwrapModifier.auxiliary_target -> auxiliary_target: pointer "Additional mesh target to shrink to"
+#+ * Modifier|ShrinkwrapModifier.offset -> offset: float "Distance to keep from the target"
+#+ * Modifier|ShrinkwrapModifier.subsurf_levels -> subsurf_levels: int "Number of subdivisions that must be performed before extracting vertices positions and normals"
+#+ * Modifier|ShrinkwrapModifier.target -> target: pointer "Mesh target to shrink to"
+#Modifier|ShrinkwrapModifier.use_cull_back_faces -> use_cull_back_faces: boolean "Stop vertices from projecting to a back face on the target"
+#Modifier|ShrinkwrapModifier.use_cull_front_faces -> use_cull_front_faces: boolean "Stop vertices from projecting to a front face on the target"
+#Modifier|ShrinkwrapModifier.use_keep_above_surface -> use_keep_above_surface: boolean "NO DESCRIPTION"
+ + * Modifier|ShrinkwrapModifier.negative -> use_negative_direction: boolean "Allow vertices to move in the negative direction of axis"
+ + * Modifier|ShrinkwrapModifier.positive -> use_positive_direction: boolean "Allow vertices to move in the positive direction of axis"
+ + * Modifier|ShrinkwrapModifier.x -> use_project_x: boolean "NO DESCRIPTION"
+ + * Modifier|ShrinkwrapModifier.y -> use_project_y: boolean "NO DESCRIPTION"
+ + * Modifier|ShrinkwrapModifier.z -> use_project_z: boolean "NO DESCRIPTION"
+#+ * Modifier|ShrinkwrapModifier.vertex_group -> vertex_group: string "Vertex group name"
+ + * Modifier|ShrinkwrapModifier.mode -> wrap_method: enum "NO DESCRIPTION"
+ + * Modifier|SimpleDeformModifier.mode -> deform_method: enum "NO DESCRIPTION"
+#+ * Modifier|SimpleDeformModifier.factor -> factor: float "NO DESCRIPTION"
+#+ * Modifier|SimpleDeformModifier.limits -> limits: float[2] "Lower/Upper limits for deform"
+#Modifier|SimpleDeformModifier.lock_x -> lock_x: boolean "NO DESCRIPTION"
+#Modifier|SimpleDeformModifier.lock_y -> lock_y: boolean "NO DESCRIPTION"
+#+ * Modifier|SimpleDeformModifier.origin -> origin: pointer "Origin of modifier space coordinates"
+ + * Modifier|SimpleDeformModifier.relative -> use_relative: boolean "Sets the origin of deform space to be relative to the object"
+#+ * Modifier|SimpleDeformModifier.vertex_group -> vertex_group: string "Vertex group name"
+#+ * Modifier|SmokeModifier.coll_settings -> coll_settings: pointer, "(read-only)"
+#+ * Modifier|SmokeModifier.domain_settings -> domain_settings: pointer, "(read-only)"
+#+ * Modifier|SmokeModifier.flow_settings -> flow_settings: pointer, "(read-only)"
+#Modifier|SmokeModifier.smoke_type -> smoke_type: enum "NO DESCRIPTION"
+#+ * Modifier|SmoothModifier.factor -> factor: float "NO DESCRIPTION"
+ + * Modifier|SmoothModifier.repeat -> iterations: int "NO DESCRIPTION"
+ + * Modifier|SmoothModifier.x -> use_x: boolean "NO DESCRIPTION"
+ + * Modifier|SmoothModifier.y -> use_y: boolean "NO DESCRIPTION"
+ + * Modifier|SmoothModifier.z -> use_z: boolean "NO DESCRIPTION"
+#+ * Modifier|SmoothModifier.vertex_group -> vertex_group: string "Vertex group name"
+#+ * Modifier|SoftBodyModifier.point_cache -> point_cache: pointer, "(read-only)"
+#+ * Modifier|SoftBodyModifier.settings -> settings: pointer, "(read-only)"
+#+ * Modifier|SolidifyModifier.edge_crease_inner -> edge_crease_inner: float "Assign a crease to inner edges"
+#+ * Modifier|SolidifyModifier.edge_crease_outer -> edge_crease_outer: float "Assign a crease to outer edges"
+#+ * Modifier|SolidifyModifier.edge_crease_rim -> edge_crease_rim: float "Assign a crease to the edges making up the rim"
+ + * Modifier|SolidifyModifier.invert -> invert_vertex_group: boolean "Invert the vertex group influence"
+#+ * Modifier|SolidifyModifier.offset -> offset: float "Offset the thickness from the center"
+#+ * Modifier|SolidifyModifier.thickness -> thickness: float "Thickness of the shell"
+#+ * Modifier|SolidifyModifier.use_even_offset -> use_even_offset: boolean "Maintain thickness by adjusting for sharp corners (slow, disable when not needed)"
+#+ * Modifier|SolidifyModifier.use_quality_normals -> use_quality_normals: boolean "Calculate normals which result in more even thickness (slow, disable when not needed)"
+#+ * Modifier|SolidifyModifier.use_rim -> use_rim: boolean "Create edge loops between the inner and outer surfaces on face edges (slow, disable when not needed)"
+#+ * Modifier|SolidifyModifier.use_rim_material -> use_rim_material: boolean "Use in the next material for rim faces"
+#+ * Modifier|SolidifyModifier.vertex_group -> vertex_group: string "Vertex group name"
+#+ * Modifier|SubsurfModifier.levels -> levels: int "Number of subdivisions to perform"
+#+ * Modifier|SubsurfModifier.render_levels -> render_levels: int "Number of subdivisions to perform when rendering"
+#Modifier|SubsurfModifier.show_only_control_edges -> show_only_control_edges: boolean "Skip drawing/rendering of interior subdivided edges"
+#+ * Modifier|SubsurfModifier.subdivision_type -> subdivision_type: enum "Selects type of subdivision algorithm"
+#Modifier|SubsurfModifier.use_subsurf_uv -> use_subsurf_uv: boolean "Use subsurf to subdivide UVs"
+#+ * Modifier|UVProjectModifier.aspect_x -> aspect_x: float "NO DESCRIPTION"
+#+ * Modifier|UVProjectModifier.aspect_y -> aspect_y: float "NO DESCRIPTION"
+#+ * Modifier|UVProjectModifier.image -> image: pointer "NO DESCRIPTION"
+#Modifier|UVProjectModifier.projector_count -> projector_count: int "Number of projectors to use"
+#+ * Modifier|UVProjectModifier.projectors -> projectors: collection, "(read-only)"
+#+ * Modifier|UVProjectModifier.scale_x -> scale_x: float "NO DESCRIPTION"
+#+ * Modifier|UVProjectModifier.scale_y -> scale_y: float "NO DESCRIPTION"
+#Modifier|UVProjectModifier.use_image_override -> use_image_override: boolean "Override faces current images with the given image"
+#+ * Modifier|UVProjectModifier.uv_layer -> uv_layer: string "UV layer name"
+#+ * Modifier|WaveModifier.damping_time -> damping_time: float "NO DESCRIPTION"
+#+ * Modifier|WaveModifier.falloff_radius -> falloff_radius: float "NO DESCRIPTION"
+#+ * Modifier|WaveModifier.height -> height: float "NO DESCRIPTION"
+#+ * Modifier|WaveModifier.lifetime -> lifetime: float "NO DESCRIPTION"
+#+ * Modifier|WaveModifier.narrowness -> narrowness: float "NO DESCRIPTION"
+#+ * Modifier|WaveModifier.speed -> speed: float "NO DESCRIPTION"
+#+ * Modifier|WaveModifier.start_position_object -> start_position_object: pointer "NO DESCRIPTION"
+#+ * Modifier|WaveModifier.start_position_x -> start_position_x: float "NO DESCRIPTION"
+#+ * Modifier|WaveModifier.start_position_y -> start_position_y: float "NO DESCRIPTION"
+#+ * Modifier|WaveModifier.texture -> texture: pointer "Texture for modulating the wave"
+#Modifier|WaveModifier.texture_coords -> texture_coords: enum "Texture coordinates used for modulating input"
+#Modifier|WaveModifier.texture_coords_object -> texture_coords_object: pointer "NO DESCRIPTION"
+#+ * Modifier|WaveModifier.time_offset -> time_offset: float "Either the starting frame (for positive speed) or ending frame (for negative speed.)"
+ + * Modifier|WaveModifier.cyclic -> use_cyclic: boolean "Cyclic wave effect"
+ + * Modifier|WaveModifier.normals -> use_normal: boolean "Displace along normals"
+#Modifier|WaveModifier.use_normal_x -> use_normal_x: boolean "Enable displacement along the X normal"
+#Modifier|WaveModifier.use_normal_y -> use_normal_y: boolean "Enable displacement along the Y normal"
+#Modifier|WaveModifier.use_normal_z -> use_normal_z: boolean "Enable displacement along the Z normal"
+ + * Modifier|WaveModifier.x -> use_x: boolean "X axis motion"
+ + * Modifier|WaveModifier.y -> use_y: boolean "Y axis motion"
+#+ * Modifier|WaveModifier.uv_layer -> uv_layer: string "UV layer name"
+#+ * Modifier|WaveModifier.vertex_group -> vertex_group: string "Vertex group name for modulating the wave"
+#+ * Modifier|WaveModifier.width -> width: float "NO DESCRIPTION"
+#+ * MotionPath.frame_end -> frame_end: int, "(read-only) End frame of the stored range"
+#+ * MotionPath.frame_start -> frame_start: int, "(read-only) Starting frame of the stored range"
+#MotionPath.is_modified -> is_modified: boolean "Path is being edited"
+#+ * MotionPath.length -> length: int, "(read-only) Number of frames cached"
+#+ * MotionPath.points -> points: collection, "(read-only) Cached positions per frame"
+#+ * MotionPath.use_bone_head -> use_bone_head: boolean, "(read-only) For PoseBone paths, use the bone head location when calculating this path"
+#+ * MotionPathVert.co -> co: float[3] "NO DESCRIPTION"
+#+ * MotionPathVert.select -> select: boolean "Path point is selected for editing"
+#+ * NlaStrip.action -> action: pointer "Action referenced by this strip"
+#NlaStrip.action_frame_end -> action_frame_end: float "NO DESCRIPTION"
+#NlaStrip.action_frame_start -> action_frame_start: float "NO DESCRIPTION"
+#+ * NlaStrip.active -> active: boolean, "(read-only) NLA Strip is active"
+#+ * NlaStrip.blend_in -> blend_in: float "Number of frames at start of strip to fade in influence"
+#+ * NlaStrip.blend_out -> blend_out: float "NO DESCRIPTION"
+#NlaStrip.blend_type -> blend_type: enum "Method used for combining strips result with accumulated result"
+#+ * NlaStrip.extrapolation -> extrapolation: enum "Action to take for gaps past the strip extents"
+#+ * NlaStrip.fcurves -> fcurves: collection, "(read-only) F-Curves for controlling the strips influence and timing"
+#+ * NlaStrip.frame_end -> frame_end: float "NO DESCRIPTION"
+#+ * NlaStrip.frame_start -> frame_start: float "NO DESCRIPTION"
+#+ * NlaStrip.influence -> influence: float "Amount the strip contributes to the current result"
+#+ * NlaStrip.modifiers -> modifiers: collection, "(read-only) Modifiers affecting all the F-Curves in the referenced Action"
+#+ * NlaStrip.mute -> mute: boolean "NLA Strip is not evaluated"
+#+ * NlaStrip.name -> name: string "NO DESCRIPTION"
+#+ * NlaStrip.repeat -> repeat: float "Number of times to repeat the action range"
+#+ * NlaStrip.scale -> scale: float "Scaling factor for action"
+#+ * NlaStrip.select -> select: boolean "NLA Strip is selected"
+#+ * NlaStrip.strip_time -> strip_time: float "Frame of referenced Action to evaluate"
+#+ * NlaStrip.strips -> strips: collection, "(read-only) NLA Strips that this strip acts as a container for (if it is of type Meta)"
+#+ * NlaStrip.type -> type: enum, "(read-only) Type of NLA Strip"
+#NlaStrip.use_animated_influence -> use_animated_influence: boolean "Influence setting is controlled by an F-Curve rather than automatically determined"
+#NlaStrip.use_animated_time -> use_animated_time: boolean "Strip time is controlled by an F-Curve rather than automatically determined"
+#NlaStrip.use_animated_time_cyclic -> use_animated_time_cyclic: boolean "Cycle the animated time within the action start & end"
+#NlaStrip.use_auto_blend -> use_auto_blend: boolean "Number of frames for Blending In/Out is automatically determined from overlapping strips"
+ + * NlaStrip.reversed -> use_reverse: boolean "NLA Strip is played back in reverse order (only when timing is automatically determined)"
+#+ * NlaTrack.active -> active: boolean, "(read-only) NLA Track is active"
+#NlaTrack.is_solo -> is_solo: boolean, "(read-only) NLA Track is evaluated itself (i.e. active Action and all other NLA Tracks in the same AnimData block are disabled)"
+#+ * NlaTrack.lock -> lock: boolean "NLA Track is locked"
+#+ * NlaTrack.mute -> mute: boolean "NLA Track is not evaluated"
+#+ * NlaTrack.name -> name: string "NO DESCRIPTION"
+#+ * NlaTrack.select -> select: boolean "NLA Track is selected"
+#+ * NlaTrack.strips -> strips: collection, "(read-only) NLA Strips on this NLA-track"
+#+ * Node.inputs -> inputs: collection, "(read-only)"
+#+ * Node.location -> location: float[2] "NO DESCRIPTION"
+#+ * Node.name -> name: string "Node name"
+#+ * Node.outputs -> outputs: collection, "(read-only)"
+#+ * Node|CompositorNode.type -> type: enum, "(read-only)"
+#+ * Node|CompositorNode|CompositorNodeAlphaOver.premul -> premul: float "Mix Factor"
+#Node|CompositorNode|CompositorNodeAlphaOver.use_premultiply -> use_premultiply: boolean "NO DESCRIPTION"
+#+ * Node|CompositorNode|CompositorNodeBilateralblur.iterations -> iterations: int "NO DESCRIPTION"
+#+ * Node|CompositorNode|CompositorNodeBilateralblur.sigma_color -> sigma_color: float "NO DESCRIPTION"
+#+ * Node|CompositorNode|CompositorNodeBilateralblur.sigma_space -> sigma_space: float "NO DESCRIPTION"
+#+ * Node|CompositorNode|CompositorNodeBlur.factor -> factor: float "NO DESCRIPTION"
+#+ * Node|CompositorNode|CompositorNodeBlur.factor_x -> factor_x: float "NO DESCRIPTION"
+#+ * Node|CompositorNode|CompositorNodeBlur.factor_y -> factor_y: float "NO DESCRIPTION"
+#+ * Node|CompositorNode|CompositorNodeBlur.filter_type -> filter_type: enum "NO DESCRIPTION"
+#Node|CompositorNode|CompositorNodeBlur.size_x -> size_x: int "NO DESCRIPTION"
+#Node|CompositorNode|CompositorNodeBlur.size_y -> size_y: int "NO DESCRIPTION"
+ + * Node|CompositorNode|CompositorNodeBlur.bokeh -> use_bokeh: boolean "Uses circular filter (slower)"
+ + * Node|CompositorNode|CompositorNodeBlur.gamma -> use_gamma_correction: boolean "Applies filter on gamma corrected values"
+ + * Node|CompositorNode|CompositorNodeBlur.relative -> use_relative: boolean "Use relative (percent) values to define blur radius"
+#+ * Node|CompositorNode|CompositorNodeChannelMatte.color_space -> color_space: enum "NO DESCRIPTION"
+#+ * Node|CompositorNode|CompositorNodeChannelMatte.limit_channel -> limit_channel: enum "Limit by this channels value"
+ + * Node|CompositorNode|CompositorNodeChannelMatte.high -> limit_max: float "Values higher than this setting are 100% opaque"
+#Node|CompositorNode|CompositorNodeChannelMatte.limit_method -> limit_method: enum "Algorithm to use to limit channel"
+ + * Node|CompositorNode|CompositorNodeChannelMatte.low -> limit_min: float "Values lower than this setting are 100% keyed"
+ + * Node|CompositorNode|CompositorNodeChannelMatte.channel -> matte_channel: enum "Channel used to determine matte"
+#+ * Node|CompositorNode|CompositorNodeChromaMatte.gain -> gain: float "Alpha gain"
+#+ * Node|CompositorNode|CompositorNodeChromaMatte.lift -> lift: float "Alpha lift"
+#+ * Node|CompositorNode|CompositorNodeChromaMatte.shadow_adjust -> shadow_adjust: float "Adjusts the brightness of any shadows captured"
+ + * Node|CompositorNode|CompositorNodeChromaMatte.cutoff -> threshold: float "Tolerance below which colors will be considered as exact matches"
+#Node|CompositorNode|CompositorNodeChromaMatte.tolerance -> tolerance: float "Tolerance for a color to be considered a keying color"
+#Node|CompositorNode|CompositorNodeColorBalance.correction_method -> correction_method: enum "NO DESCRIPTION"
+#+ * Node|CompositorNode|CompositorNodeColorBalance.gain -> gain: float[3] "Correction for Highlights"
+#+ * Node|CompositorNode|CompositorNodeColorBalance.gamma -> gamma: float[3] "Correction for Midtones"
+#+ * Node|CompositorNode|CompositorNodeColorBalance.lift -> lift: float[3] "Correction for Shadows"
+#+ * Node|CompositorNode|CompositorNodeColorBalance.offset -> offset: float[3] "Correction for Shadows"
+#+ * Node|CompositorNode|CompositorNodeColorBalance.power -> power: float[3] "Correction for Midtones"
+#+ * Node|CompositorNode|CompositorNodeColorBalance.slope -> slope: float[3] "Correction for Highlights"
+ + * Node|CompositorNode|CompositorNodeColorMatte.h -> color_hue: float "Hue tolerance for colors to be considered a keying color"
+ + * Node|CompositorNode|CompositorNodeColorMatte.s -> color_saturation: float "Saturation Tolerance for the color"
+ + * Node|CompositorNode|CompositorNodeColorMatte.v -> color_value: float "Value Tolerance for the color"
+#+ * Node|CompositorNode|CompositorNodeColorSpill.channel -> channel: enum "NO DESCRIPTION"
+#+ * Node|CompositorNode|CompositorNodeColorSpill.limit_channel -> limit_channel: enum "NO DESCRIPTION"
+#Node|CompositorNode|CompositorNodeColorSpill.limit_method -> limit_method: enum "NO DESCRIPTION"
+#+ * Node|CompositorNode|CompositorNodeColorSpill.ratio -> ratio: float "Scale limit by value"
+#+ * Node|CompositorNode|CompositorNodeColorSpill.unspill_blue -> unspill_blue: float "Blue spillmap scale"
+#+ * Node|CompositorNode|CompositorNodeColorSpill.unspill_green -> unspill_green: float "Green spillmap scale"
+#+ * Node|CompositorNode|CompositorNodeColorSpill.unspill_red -> unspill_red: float "Red spillmap scale"
+#Node|CompositorNode|CompositorNodeColorSpill.use_unspill -> use_unspill: boolean "Compensate all channels (diffenrently) by hand"
+#Node|CompositorNode|CompositorNodeCrop.max_x -> max_x: int "NO DESCRIPTION"
+#Node|CompositorNode|CompositorNodeCrop.max_y -> max_y: int "NO DESCRIPTION"
+#Node|CompositorNode|CompositorNodeCrop.min_x -> min_x: int "NO DESCRIPTION"
+#Node|CompositorNode|CompositorNodeCrop.min_y -> min_y: int "NO DESCRIPTION"
+#Node|CompositorNode|CompositorNodeCrop.use_crop_size -> use_crop_size: boolean "Whether to crop the size of the input image"
+#+ * Node|CompositorNode|CompositorNodeCurveRGB.mapping -> mapping: pointer, "(read-only)"
+#+ * Node|CompositorNode|CompositorNodeCurveVec.mapping -> mapping: pointer, "(read-only)"
+#+ * Node|CompositorNode|CompositorNodeDBlur.angle -> angle: float "NO DESCRIPTION"
+#+ * Node|CompositorNode|CompositorNodeDBlur.center_x -> center_x: float "NO DESCRIPTION"
+#+ * Node|CompositorNode|CompositorNodeDBlur.center_y -> center_y: float "NO DESCRIPTION"
+#+ * Node|CompositorNode|CompositorNodeDBlur.distance -> distance: float "NO DESCRIPTION"
+#+ * Node|CompositorNode|CompositorNodeDBlur.iterations -> iterations: int "NO DESCRIPTION"
+#+ * Node|CompositorNode|CompositorNodeDBlur.spin -> spin: float "NO DESCRIPTION"
+ + * Node|CompositorNode|CompositorNodeDBlur.wrap -> use_wrap: boolean "NO DESCRIPTION"
+#+ * Node|CompositorNode|CompositorNodeDBlur.zoom -> zoom: float "NO DESCRIPTION"
+#+ * Node|CompositorNode|CompositorNodeDefocus.angle -> angle: int "Bokeh shape rotation offset in degrees"
+#Node|CompositorNode|CompositorNodeDefocus.blur_max -> blur_max: float "blur limit, maximum CoC radius, 0=no limit"
+#+ * Node|CompositorNode|CompositorNodeDefocus.bokeh -> bokeh: enum "NO DESCRIPTION"
+#+ * Node|CompositorNode|CompositorNodeDefocus.f_stop -> f_stop: float "Amount of focal blur, 128=infinity=perfect focus, half the value doubles the blur radius"
+#+ * Node|CompositorNode|CompositorNodeDefocus.samples -> samples: int "Number of samples (16=grainy, higher=less noise)"
+#+ * Node|CompositorNode|CompositorNodeDefocus.threshold -> threshold: float "CoC radius threshold, prevents background bleed on in-focus midground, 0=off"
+#Node|CompositorNode|CompositorNodeDefocus.use_gamma_correction -> use_gamma_correction: boolean "Enable gamma correction before and after main process"
+ + * Node|CompositorNode|CompositorNodeDefocus.preview -> use_preview: boolean "Enable sampling mode, useful for preview when using low samplecounts"
+#+ * Node|CompositorNode|CompositorNodeDefocus.use_zbuffer -> use_zbuffer: boolean "Disable when using an image as input instead of actual zbuffer (auto enabled if node not image based, eg. time node)"
+#+ * Node|CompositorNode|CompositorNodeDefocus.z_scale -> z_scale: float "Scales the Z input when not using a zbuffer, controls maximum blur designated by the color white or input value 1"
+#+ * Node|CompositorNode|CompositorNodeDiffMatte.falloff -> falloff: float "Color distances below this additional threshold are partially keyed"
+#+ * Node|CompositorNode|CompositorNodeDiffMatte.tolerance -> tolerance: float "Color distances below this threshold are keyed"
+#+ * Node|CompositorNode|CompositorNodeDilateErode.distance -> distance: int "Distance to grow/shrink (number of iterations)"
+#+ * Node|CompositorNode|CompositorNodeDistanceMatte.falloff -> falloff: float "Color distances below this additional threshold are partially keyed"
+#+ * Node|CompositorNode|CompositorNodeDistanceMatte.tolerance -> tolerance: float "Color distances below this threshold are keyed"
+#+ * Node|CompositorNode|CompositorNodeFilter.filter_type -> filter_type: enum "NO DESCRIPTION"
+#+ * Node|CompositorNode|CompositorNodeFlip.axis -> axis: enum "NO DESCRIPTION"
+#+ * Node|CompositorNode|CompositorNodeGlare.angle_offset -> angle_offset: float "Streak angle offset in degrees"
+#+ * Node|CompositorNode|CompositorNodeGlare.color_modulation -> color_modulation: float "Amount of Color Modulation, modulates colors of streaks and ghosts for a spectral dispersion effect"
+#+ * Node|CompositorNode|CompositorNodeGlare.fade -> fade: float "Streak fade-out factor"
+#+ * Node|CompositorNode|CompositorNodeGlare.glare_type -> glare_type: enum "NO DESCRIPTION"
+#+ * Node|CompositorNode|CompositorNodeGlare.iterations -> iterations: int "NO DESCRIPTION"
+#+ * Node|CompositorNode|CompositorNodeGlare.mix -> mix: float "-1 is original image only, 0 is exact 50/50 mix, 1 is processed image only"
+#+ * Node|CompositorNode|CompositorNodeGlare.quality -> quality: enum "If not set to high quality, the effect will be applied to a low-res copy of the source image"
+#+ * Node|CompositorNode|CompositorNodeGlare.size -> size: int "Glow/glare size (not actual size; relative to initial size of bright area of pixels)"
+#+ * Node|CompositorNode|CompositorNodeGlare.streaks -> streaks: int "Total number of streaks"
+#+ * Node|CompositorNode|CompositorNodeGlare.threshold -> threshold: float "The glare filter will only be applied to pixels brighter than this value"
+#Node|CompositorNode|CompositorNodeGlare.use_rotate_45 -> use_rotate_45: boolean "Simple star filter: add 45 degree rotation offset"
+#+ * Node|CompositorNode|CompositorNodeHueCorrect.mapping -> mapping: pointer, "(read-only)"
+ + * Node|CompositorNode|CompositorNodeHueSat.hue -> color_hue: float "NO DESCRIPTION"
+ + * Node|CompositorNode|CompositorNodeHueSat.sat -> color_saturation: float "NO DESCRIPTION"
+ + * Node|CompositorNode|CompositorNodeHueSat.val -> color_value: float "NO DESCRIPTION"
+#+ * Node|CompositorNode|CompositorNodeIDMask.index -> index: int "Pass index number to convert to alpha"
+ + * Node|CompositorNode|CompositorNodeImage.frames -> frame_duration: int "Number of images used in animation"
+ + * Node|CompositorNode|CompositorNodeImage.offset -> frame_offset: int "Offsets the number of the frame to use in the animation"
+ + * Node|CompositorNode|CompositorNodeImage.start -> frame_start: int "NO DESCRIPTION"
+#+ * Node|CompositorNode|CompositorNodeImage.image -> image: pointer "NO DESCRIPTION"
+#+ * Node|CompositorNode|CompositorNodeImage.layer -> layer: enum "NO DESCRIPTION"
+#Node|CompositorNode|CompositorNodeImage.use_auto_refresh -> use_auto_refresh: boolean "NO DESCRIPTION"
+ + * Node|CompositorNode|CompositorNodeImage.cyclic -> use_cyclic: boolean "NO DESCRIPTION"
+ + * Node|CompositorNode|CompositorNodeInvert.alpha -> invert_alpha: boolean "NO DESCRIPTION"
+ + * Node|CompositorNode|CompositorNodeInvert.rgb -> invert_rgb: boolean "NO DESCRIPTION"
+ + * Node|CompositorNode|CompositorNodeLensdist.fit -> use_fit: boolean "For positive distortion factor only: scale image such that black areas are not visible"
+ + * Node|CompositorNode|CompositorNodeLensdist.jitter -> use_jitter: boolean "Enable/disable jittering; faster, but also noisier"
+#Node|CompositorNode|CompositorNodeLensdist.use_projector -> use_projector: boolean "Enable/disable projector mode. Effect is applied in horizontal direction only"
+#+ * Node|CompositorNode|CompositorNodeLevels.channel -> channel: enum "NO DESCRIPTION"
+#+ * Node|CompositorNode|CompositorNodeLumaMatte.high -> high: float "Values higher than this setting are 100% opaque"
+#+ * Node|CompositorNode|CompositorNodeLumaMatte.low -> low: float "Values lower than this setting are 100% keyed"
+#+ * Node|CompositorNode|CompositorNodeMapUV.alpha -> alpha: int "NO DESCRIPTION"
+#+ * Node|CompositorNode|CompositorNodeMapValue.max -> max: float[1] "NO DESCRIPTION"
+#+ * Node|CompositorNode|CompositorNodeMapValue.min -> min: float[1] "NO DESCRIPTION"
+#+ * Node|CompositorNode|CompositorNodeMapValue.offset -> offset: float[1] "NO DESCRIPTION"
+#+ * Node|CompositorNode|CompositorNodeMapValue.size -> size: float[1] "NO DESCRIPTION"
+#+ * Node|CompositorNode|CompositorNodeMapValue.use_max -> use_max: boolean "NO DESCRIPTION"
+#+ * Node|CompositorNode|CompositorNodeMapValue.use_min -> use_min: boolean "NO DESCRIPTION"
+#+ * Node|CompositorNode|CompositorNodeMath.operation -> operation: enum "NO DESCRIPTION"
+#+ * Node|CompositorNode|CompositorNodeMixRGB.blend_type -> blend_type: enum "NO DESCRIPTION"
+ + * Node|CompositorNode|CompositorNodeMixRGB.alpha -> use_alpha: boolean "Include alpha of second input in this operation"
+#+ * Node|CompositorNode|CompositorNodeOutputFile.exr_codec -> exr_codec: enum "NO DESCRIPTION"
+#+ * Node|CompositorNode|CompositorNodeOutputFile.filepath -> filepath: string "Output path for the image, same functionality as render output."
+#+ * Node|CompositorNode|CompositorNodeOutputFile.frame_end -> frame_end: int "NO DESCRIPTION"
+#+ * Node|CompositorNode|CompositorNodeOutputFile.frame_start -> frame_start: int "NO DESCRIPTION"
+#+ * Node|CompositorNode|CompositorNodeOutputFile.image_type -> image_type: enum "NO DESCRIPTION"
+#+ * Node|CompositorNode|CompositorNodeOutputFile.quality -> quality: int "NO DESCRIPTION"
+#Node|CompositorNode|CompositorNodeOutputFile.use_exr_half -> use_exr_half: boolean "NO DESCRIPTION"
+#+ * Node|CompositorNode|CompositorNodePremulKey.mapping -> mapping: enum "Conversion between premultiplied alpha and key alpha"
+#+ * Node|CompositorNode|CompositorNodeRLayers.layer -> layer: enum "NO DESCRIPTION"
+#+ * Node|CompositorNode|CompositorNodeRLayers.scene -> scene: pointer "NO DESCRIPTION"
+ + * Node|CompositorNode|CompositorNodeRotate.filter -> filter_type: enum "Method to use to filter rotation"
+#+ * Node|CompositorNode|CompositorNodeScale.space -> space: enum "Coordinate space to scale relative to"
+#+ * Node|CompositorNode|CompositorNodeSplitViewer.axis -> axis: enum "NO DESCRIPTION"
+#+ * Node|CompositorNode|CompositorNodeSplitViewer.factor -> factor: int "NO DESCRIPTION"
+#+ * Node|CompositorNode|CompositorNodeTexture.node_output -> node_output: int "For node-based textures, which output node to use"
+#+ * Node|CompositorNode|CompositorNodeTexture.texture -> texture: pointer "NO DESCRIPTION"
+#+ * Node|CompositorNode|CompositorNodeTime.curve -> curve: pointer, "(read-only)"
+ + * Node|CompositorNode|CompositorNodeTime.end -> frame_end: int "NO DESCRIPTION"
+ + * Node|CompositorNode|CompositorNodeTime.start -> frame_start: int "NO DESCRIPTION"
+#+ * Node|CompositorNode|CompositorNodeTonemap.adaptation -> adaptation: float "If 0, global; if 1, based on pixel intensity"
+#+ * Node|CompositorNode|CompositorNodeTonemap.contrast -> contrast: float "Set to 0 to use estimate from input image"
+#+ * Node|CompositorNode|CompositorNodeTonemap.correction -> correction: float "If 0, same for all channels; if 1, each independent"
+#+ * Node|CompositorNode|CompositorNodeTonemap.gamma -> gamma: float "If not used, set to 1"
+#+ * Node|CompositorNode|CompositorNodeTonemap.intensity -> intensity: float "If less than zero, darkens image; otherwise, makes it brighter"
+#+ * Node|CompositorNode|CompositorNodeTonemap.key -> key: float "The value the average luminance is mapped to"
+#+ * Node|CompositorNode|CompositorNodeTonemap.offset -> offset: float "Normally always 1, but can be used as an extra control to alter the brightness curve"
+ + * Node|CompositorNode|CompositorNodeTonemap.tonemap_type -> type: enum "NO DESCRIPTION"
+#+ * Node|CompositorNode|CompositorNodeValToRGB.color_ramp -> color_ramp: pointer, "(read-only)"
+#+ * Node|CompositorNode|CompositorNodeVecBlur.factor -> factor: float "Scaling factor for motion vectors; actually shutter speed in frames"
+#+ * Node|CompositorNode|CompositorNodeVecBlur.samples -> samples: int "NO DESCRIPTION"
+#Node|CompositorNode|CompositorNodeVecBlur.speed_max -> speed_max: int "Maximum speed, or zero for none"
+#Node|CompositorNode|CompositorNodeVecBlur.speed_min -> speed_min: int "Minimum speed for a pixel to be blurred; used to separate background from foreground"
+ + * Node|CompositorNode|CompositorNodeVecBlur.curved -> use_curved: boolean "Interpolate between frames in a bezier curve, rather than linearly"
+#+ * Node|NodeGroup.nodetree -> nodetree: pointer "NO DESCRIPTION"
+#+ * Node|ShaderNode.type -> type: enum, "(read-only)"
+#+ * Node|ShaderNode|ShaderNodeExtendedMaterial.invert_normal -> invert_normal: boolean "Material Node uses inverted normal"
+#+ * Node|ShaderNode|ShaderNodeExtendedMaterial.material -> material: pointer "NO DESCRIPTION"
+ + * Node|ShaderNode|ShaderNodeExtendedMaterial.diffuse -> use_diffuse: boolean "Material Node outputs Diffuse"
+ + * Node|ShaderNode|ShaderNodeExtendedMaterial.specular -> use_specular: boolean "Material Node outputs Specular"
+#+ * Node|ShaderNode|ShaderNodeGeometry.color_layer -> color_layer: string "NO DESCRIPTION"
+#+ * Node|ShaderNode|ShaderNodeGeometry.uv_layer -> uv_layer: string "NO DESCRIPTION"
+#+ * Node|ShaderNode|ShaderNodeMapping.location -> location: float[3] "Location offset for the input coordinate"
+#Node|ShaderNode|ShaderNodeMapping.max -> max: float[3] "Maximum value to clamp coordinate to"
+#Node|ShaderNode|ShaderNodeMapping.min -> min: float[3] "Minimum value to clamp coordinate to"
+#+ * Node|ShaderNode|ShaderNodeMapping.rotation -> rotation: float[3] "Rotation offset for the input coordinate"
+#+ * Node|ShaderNode|ShaderNodeMapping.scale -> scale: float[3] "Scale adjustment for the input coordinate"
+#Node|ShaderNode|ShaderNodeMapping.use_max -> use_max: boolean "Clamp the output coordinate to a maximum value"
+#Node|ShaderNode|ShaderNodeMapping.use_min -> use_min: boolean "Clamp the output coordinate to a minimum value"
+#+ * Node|ShaderNode|ShaderNodeMaterial.invert_normal -> invert_normal: boolean "Material Node uses inverted normal"
+#+ * Node|ShaderNode|ShaderNodeMaterial.material -> material: pointer "NO DESCRIPTION"
+ + * Node|ShaderNode|ShaderNodeMaterial.diffuse -> use_diffuse: boolean "Material Node outputs Diffuse"
+ + * Node|ShaderNode|ShaderNodeMaterial.specular -> use_specular: boolean "Material Node outputs Specular"
+#+ * Node|ShaderNode|ShaderNodeMath.operation -> operation: enum "NO DESCRIPTION"
+#+ * Node|ShaderNode|ShaderNodeMixRGB.blend_type -> blend_type: enum "NO DESCRIPTION"
+ + * Node|ShaderNode|ShaderNodeMixRGB.alpha -> use_alpha: boolean "Include alpha of second input in this operation"
+#+ * Node|ShaderNode|ShaderNodeRGBCurve.mapping -> mapping: pointer, "(read-only)"
+#+ * Node|ShaderNode|ShaderNodeTexture.node_output -> node_output: int "For node-based textures, which output node to use"
+#+ * Node|ShaderNode|ShaderNodeTexture.texture -> texture: pointer "NO DESCRIPTION"
+#+ * Node|ShaderNode|ShaderNodeValToRGB.color_ramp -> color_ramp: pointer, "(read-only)"
+#+ * Node|ShaderNode|ShaderNodeVectorCurve.mapping -> mapping: pointer, "(read-only)"
+#+ * Node|ShaderNode|ShaderNodeVectorMath.operation -> operation: enum "NO DESCRIPTION"
+#+ * Node|TextureNode.type -> type: enum, "(read-only)"
+#+ * Node|TextureNode|TextureNodeBricks.offset -> offset: float "NO DESCRIPTION"
+#+ * Node|TextureNode|TextureNodeBricks.offset_frequency -> offset_frequency: int "Offset every N rows"
+#+ * Node|TextureNode|TextureNodeBricks.squash -> squash: float "NO DESCRIPTION"
+#+ * Node|TextureNode|TextureNodeBricks.squash_frequency -> squash_frequency: int "Squash every N rows"
+#+ * Node|TextureNode|TextureNodeCurveRGB.mapping -> mapping: pointer, "(read-only)"
+#+ * Node|TextureNode|TextureNodeCurveTime.curve -> curve: pointer, "(read-only)"
+ + * Node|TextureNode|TextureNodeCurveTime.end -> frame_end: int "NO DESCRIPTION"
+ + * Node|TextureNode|TextureNodeCurveTime.start -> frame_start: int "NO DESCRIPTION"
+#+ * Node|TextureNode|TextureNodeImage.image -> image: pointer "NO DESCRIPTION"
+#+ * Node|TextureNode|TextureNodeMath.operation -> operation: enum "NO DESCRIPTION"
+#+ * Node|TextureNode|TextureNodeMixRGB.blend_type -> blend_type: enum "NO DESCRIPTION"
+ + * Node|TextureNode|TextureNodeMixRGB.alpha -> use_alpha: boolean "Include alpha of second input in this operation"
+ + * Node|TextureNode|TextureNodeOutput.output_name -> filepath: string "NO DESCRIPTION"
+#+ * Node|TextureNode|TextureNodeTexture.node_output -> node_output: int "For node-based textures, which output node to use"
+#+ * Node|TextureNode|TextureNodeTexture.texture -> texture: pointer "NO DESCRIPTION"
+#+ * Node|TextureNode|TextureNodeValToRGB.color_ramp -> color_ramp: pointer, "(read-only)"
+#+ * ObjectBase.layers -> layers: boolean[20] "Layers the object base is on"
+#+ * ObjectBase.object -> object: pointer, "(read-only) Object this base links to"
+#+ * ObjectBase.select -> select: boolean "Object base selection state"
+#+ * ObjectConstraints.active -> active: pointer "Active Object constraint"
+#+ * Operator.bl_description -> bl_description: string "NO DESCRIPTION"
+#+ * Operator.bl_idname -> bl_idname: string "NO DESCRIPTION"
+#+ * Operator.bl_label -> bl_label: string "NO DESCRIPTION"
+#+ * Operator.bl_options -> bl_options: enum "Options for this operator type"
+#+ * Operator.has_reports -> has_reports: boolean, "(read-only) Operator has a set of reports (warnings and errors) from last execution"
+#+ * Operator.layout -> layout: pointer, "(read-only)"
+#+ * Operator.name -> name: string, "(read-only)"
+#+ * Operator.properties -> properties: pointer, "(read-only)"
+#+ * OperatorTypeMacro.properties -> properties: pointer, "(read-only)"
+#+ * PackedFile.size -> size: int, "(read-only) Size of packed file in bytes"
+#+ * Paint.brush -> brush: pointer "Active Brush"
+#+ * Paint.show_brush -> show_brush: boolean "NO DESCRIPTION"
+#+ * Paint.show_brush_on_surface -> show_brush_on_surface: boolean "NO DESCRIPTION"
+#Paint.show_low_resolution -> show_low_resolution: boolean "For multires, show low resolution while navigating the view"
+#+ * Paint|ImagePaint.invert_stencil -> invert_stencil: boolean "Invert the stencil layer"
+#+ * Paint|ImagePaint.normal_angle -> normal_angle: int "Paint most on faces pointing towards the view according to this angle"
+#+ * Paint|ImagePaint.screen_grab_size -> screen_grab_size: int[2] "Size to capture the image for re-projecting"
+#+ * Paint|ImagePaint.seam_bleed -> seam_bleed: int "Extend paint beyond the faces UVs to reduce seams (in pixels, slower)"
+#+ * Paint|ImagePaint.show_brush -> show_brush: boolean "Enables brush shape while not drawing"
+#+ * Paint|ImagePaint.show_brush_draw -> show_brush_draw: boolean "Enables brush shape while drawing"
+#Paint|ImagePaint.use_backface_culling -> use_backface_culling: boolean "Ignore faces pointing away from the view (faster)"
+#+ * Paint|ImagePaint.use_clone_layer -> use_clone_layer: boolean "Use another UV layer as clone source, otherwise use 3D the cursor as the source"
+#+ * Paint|ImagePaint.use_normal_falloff -> use_normal_falloff: boolean "Paint most on faces pointing towards the view"
+#+ * Paint|ImagePaint.use_occlude -> use_occlude: boolean "Only paint onto the faces directly under the brush (slower)"
+#+ * Paint|ImagePaint.use_projection -> use_projection: boolean "Use projection painting for improved consistency in the brush strokes"
+#+ * Paint|ImagePaint.use_stencil_layer -> use_stencil_layer: boolean "Set the mask layer from the UV layer buttons"
+#+ * Paint|Sculpt.lock_x -> lock_x: boolean "Disallow changes to the X axis of vertices"
+#+ * Paint|Sculpt.lock_y -> lock_y: boolean "Disallow changes to the Y axis of vertices"
+#+ * Paint|Sculpt.lock_z -> lock_z: boolean "Disallow changes to the Z axis of vertices"
+#Paint|Sculpt.radial_symmetry -> radial_symmetry: int[3] "Number of times to copy strokes across the surface"
+#+ * Paint|Sculpt.use_symmetry_feather -> use_symmetry_feather: boolean "Reduce the strength of the brush where it overlaps symmetrical daubs"
+#Paint|Sculpt.use_symmetry_x -> use_symmetry_x: boolean "Mirror brush across the X axis"
+#Paint|Sculpt.use_symmetry_y -> use_symmetry_y: boolean "Mirror brush across the Y axis"
+#Paint|Sculpt.use_symmetry_z -> use_symmetry_z: boolean "Mirror brush across the Z axis"
+#Paint|Sculpt.use_threaded -> use_threaded: boolean "Take advantage of multiple CPU cores to improve sculpting performance"
+#Paint|VertexPaint.use_all_faces -> use_all_faces: boolean "Paint on all faces inside brush"
+ + * Paint|VertexPaint.normals -> use_normal: boolean "Applies the vertex normal before painting"
+#Paint|VertexPaint.use_spray -> use_spray: boolean "Keep applying paint effect while holding mouse"
+#+ * Panel.bl_context -> bl_context: string "The context in which the panel belongs to. (TODO: explain the possible combinations bl_context/bl_region_type/bl_space_type)"
+#+ * Panel.bl_idname -> bl_idname: string "If this is set, the panel gets a custom ID, otherwise it takes the name of the class used to define the panel. For example, if the class name is OBJECT_PT_hello, and bl_idname is not set by the script, then bl_idname = OBJECT_PT_hello"
+#+ * Panel.bl_label -> bl_label: string "The panel label, shows up in the panel header at the right of the triangle used to collapse the panel."
+#+ * Panel.bl_region_type -> bl_region_type: enum "The region where the panel is going to be used in."
+#+ * Panel.bl_show_header -> bl_show_header: boolean "If set to True, the panel shows a header, which contains a clickable arrow to collapse the panel and the label (see bl_label)."
+#+ * Panel.bl_space_type -> bl_space_type: enum "The space where the panel is going to be used in."
+ + * Panel.bl_default_closed -> bl_use_closed: boolean "Defines if the panel has to be open or collapsed at the time of its creation. Note that once the panel has been created with bl_default_closed = True, at reload (F8) it stays open."
+#+ * Panel.layout -> layout: pointer, "(read-only) Defines the structure of the panel in the UI."
+#TODO SHOULD THIS BE HERE * Panel.text -> text: string "XXX todo"
+#+ * Particle.alive_state -> alive_state: enum "NO DESCRIPTION"
+#+ * Particle.angular_velocity -> angular_velocity: float[3] "NO DESCRIPTION"
+#Particle.birth_time -> birth_time: float "NO DESCRIPTION"
+#+ * Particle.die_time -> die_time: float "NO DESCRIPTION"
+#Particle.is_exist -> is_exist: boolean, "(read-only)"
+#Particle.is_hair -> is_hair: collection, "(read-only)"
+#+ * Particle.is_visible -> is_visible: boolean, "(read-only)"
+#+ * Particle.keys -> keys: collection, "(read-only)"
+ + * Particle.lifetime -> life_time: float "NO DESCRIPTION"
+#+ * Particle.location -> location: float[3] "NO DESCRIPTION"
+#+ * Particle.prev_angular_velocity -> prev_angular_velocity: float[3] "NO DESCRIPTION"
+#+ * Particle.prev_location -> prev_location: float[3] "NO DESCRIPTION"
+#+ * Particle.prev_rotation -> prev_rotation: float[4] "NO DESCRIPTION"
+#+ * Particle.prev_velocity -> prev_velocity: float[3] "NO DESCRIPTION"
+#+ * Particle.rotation -> rotation: float[4] "NO DESCRIPTION"
+#+ * Particle.size -> size: float "NO DESCRIPTION"
+#+ * Particle.velocity -> velocity: float[3] "NO DESCRIPTION"
+#+ * ParticleBrush.count -> count: int "Particle count"
+#+ * ParticleBrush.curve -> curve: pointer, "(read-only)"
+#+ * ParticleBrush.length_mode -> length_mode: enum "NO DESCRIPTION"
+#+ * ParticleBrush.puff_mode -> puff_mode: enum "NO DESCRIPTION"
+#+ * ParticleBrush.size -> size: int "Brush size"
+#+ * ParticleBrush.steps -> steps: int "Brush steps"
+#+ * ParticleBrush.strength -> strength: float "Brush strength"
+#+ * ParticleBrush.use_puff_volume -> use_puff_volume: boolean "Apply puff to unselected end-points, (helps maintain hair volume when puffing root)"
+#+ * ParticleDupliWeight.count -> count: int "The number of times this object is repeated with respect to other objects"
+#+ * ParticleDupliWeight.name -> name: string, "(read-only) Particle dupliobject name"
+#+ * ParticleEdit.brush -> brush: pointer, "(read-only)"
+#ParticleEdit.default_key_count -> default_key_count: int "How many keys to make new particles with"
+#+ * ParticleEdit.draw_step -> draw_step: int "How many steps to draw the path with"
+#+ * ParticleEdit.emitter_distance -> emitter_distance: float "Distance to keep particles away from the emitter"
+#+ * ParticleEdit.fade_frames -> fade_frames: int "How many frames to fade"
+#ParticleEdit.is_editable -> is_editable: boolean, "(read-only) A valid edit mode exists"
+#ParticleEdit.is_hair -> is_hair: boolean, "(read-only) Editing hair"
+#+ * ParticleEdit.object -> object: pointer, "(read-only) The edited object"
+#ParticleEdit.select_mode -> select_mode: enum "Particle select and display mode"
+#ParticleEdit.show_particles -> show_particles: boolean "Draw actual particles"
+#+ * ParticleEdit.tool -> tool: enum "NO DESCRIPTION"
+#+ * ParticleEdit.type -> type: enum "NO DESCRIPTION"
+#ParticleEdit.use_auto_velocity -> use_auto_velocity: boolean "Calculate point velocities automatically"
+#ParticleEdit.use_default_interpolate -> use_default_interpolate: boolean "Interpolate new particles from the existing ones"
+#ParticleEdit.use_emitter_deflect -> use_emitter_deflect: boolean "Keep paths from intersecting the emitter"
+#ParticleEdit.use_fade_time -> use_fade_time: boolean "Fade paths and keys further away from current frame"
+#ParticleEdit.use_preserve_length -> use_preserve_length: boolean "Keep path lengths constant"
+#ParticleEdit.use_preserve_root -> use_preserve_root: boolean "Keep root keys unmodified"
+#ParticleHairKey.co -> co: float[3] "Location of the hair key in object space"
+#ParticleHairKey.co_hair_space -> co_hair_space: float[3] "Location of the hair key in its internal coordinate system, relative to the emitting face"
+#+ * ParticleHairKey.time -> time: float "Relative time of key over hair length"
+#+ * ParticleHairKey.weight -> weight: float "Weight for cloth simulation"
+#+ * ParticleKey.angular_velocity -> angular_velocity: float[3] "Key angular velocity"
+#+ * ParticleKey.location -> location: float[3] "Key location"
+#+ * ParticleKey.rotation -> rotation: float[4] "Key rotation quaterion"
+#+ * ParticleKey.time -> time: float "Time of key over the simulation"
+#+ * ParticleKey.velocity -> velocity: float[3] "Key velocity"
+#+ * ParticleSystem.active_particle_target -> active_particle_target: pointer, "(read-only)"
+#+ * ParticleSystem.active_particle_target_index -> active_particle_target_index: int "NO DESCRIPTION"
+#+ * ParticleSystem.billboard_normal_uv -> billboard_normal_uv: string "UV Layer to control billboard normals"
+#+ * ParticleSystem.billboard_split_uv -> billboard_split_uv: string "UV Layer to control billboard splitting"
+#+ * ParticleSystem.billboard_time_index_uv -> billboard_time_index_uv: string "UV Layer to control billboard time index (X-Y)"
+#+ * ParticleSystem.child_particles -> child_particles: collection, "(read-only) Child particles generated by the particle system"
+#+ * ParticleSystem.cloth -> cloth: pointer, "(read-only) Cloth dynamics for hair"
+#ParticleSystem.has_multiple_caches -> has_multiple_caches: boolean, "(read-only) Particle system has multiple point caches"
+#ParticleSystem.invert_vertex_group_clump -> invert_vertex_group_clump: boolean "Negate the effect of the clump vertex group"
+#ParticleSystem.invert_vertex_group_density -> invert_vertex_group_density: boolean "Negate the effect of the density vertex group"
+#ParticleSystem.invert_vertex_group_field -> invert_vertex_group_field: boolean "Negate the effect of the field vertex group"
+#ParticleSystem.invert_vertex_group_kink -> invert_vertex_group_kink: boolean "Negate the effect of the kink vertex group"
+#ParticleSystem.invert_vertex_group_length -> invert_vertex_group_length: boolean "Negate the effect of the length vertex group"
+#ParticleSystem.invert_vertex_group_rotation -> invert_vertex_group_rotation: boolean "Negate the effect of the rotation vertex group"
+#ParticleSystem.invert_vertex_group_roughness_1 -> invert_vertex_group_roughness_1: boolean "Negate the effect of the roughness 1 vertex group"
+#ParticleSystem.invert_vertex_group_roughness_2 -> invert_vertex_group_roughness_2: boolean "Negate the effect of the roughness 2 vertex group"
+#ParticleSystem.invert_vertex_group_roughness_end -> invert_vertex_group_roughness_end: boolean "Negate the effect of the roughness end vertex group"
+#ParticleSystem.invert_vertex_group_size -> invert_vertex_group_size: boolean "Negate the effect of the size vertex group"
+#ParticleSystem.invert_vertex_group_tangent -> invert_vertex_group_tangent: boolean "Negate the effect of the tangent vertex group"
+#ParticleSystem.invert_vertex_group_velocity -> invert_vertex_group_velocity: boolean "Negate the effect of the velocity vertex group"
+#ParticleSystem.is_editable -> is_editable: boolean, "(read-only) Particle system can be edited in particle mode"
+#ParticleSystem.is_edited -> is_edited: boolean, "(read-only) Particle system has been edited in particle mode"
+#ParticleSystem.is_global_hair -> is_global_hair: boolean, "(read-only) Hair keys are in global coordinate space"
+#+ * ParticleSystem.name -> name: string "Particle system name"
+#+ * ParticleSystem.parent -> parent: pointer "Use this objects coordinate system instead of global coordinate system"
+#+ * ParticleSystem.particles -> particles: collection, "(read-only) Particles generated by the particle system"
+#+ * ParticleSystem.point_cache -> point_cache: pointer, "(read-only)"
+#+ * ParticleSystem.reactor_target_object -> reactor_target_object: pointer "For reactor systems, the object that has the target particle system (empty if same object)"
+#+ * ParticleSystem.reactor_target_particle_system -> reactor_target_particle_system: int "For reactor systems, index of particle system on the target object"
+#+ * ParticleSystem.seed -> seed: int "Offset in the random number table, to get a different randomized result"
+#+ * ParticleSystem.settings -> settings: pointer "Particle system settings"
+#+ * ParticleSystem.targets -> targets: collection, "(read-only) Target particle systems"
+#ParticleSystem.use_hair_dynamics -> use_hair_dynamics: boolean "Enable hair dynamics using cloth simulation"
+#ParticleSystem.use_keyed_timing -> use_keyed_timing: boolean "Use key times"
+#+ * ParticleSystem.vertex_group_clump -> vertex_group_clump: string "Vertex group to control clump"
+#+ * ParticleSystem.vertex_group_density -> vertex_group_density: string "Vertex group to control density"
+#+ * ParticleSystem.vertex_group_field -> vertex_group_field: string "Vertex group to control field"
+#+ * ParticleSystem.vertex_group_kink -> vertex_group_kink: string "Vertex group to control kink"
+#+ * ParticleSystem.vertex_group_length -> vertex_group_length: string "Vertex group to control length"
+#+ * ParticleSystem.vertex_group_rotation -> vertex_group_rotation: string "Vertex group to control rotation"
+#ParticleSystem.vertex_group_roughness_1 -> vertex_group_roughness_1: string "Vertex group to control roughness 1"
+#ParticleSystem.vertex_group_roughness_2 -> vertex_group_roughness_2: string "Vertex group to control roughness 2"
+#+ * ParticleSystem.vertex_group_roughness_end -> vertex_group_roughness_end: string "Vertex group to control roughness end"
+#+ * ParticleSystem.vertex_group_size -> vertex_group_size: string "Vertex group to control size"
+#+ * ParticleSystem.vertex_group_tangent -> vertex_group_tangent: string "Vertex group to control tangent"
+#+ * ParticleSystem.vertex_group_velocity -> vertex_group_velocity: string "Vertex group to control velocity"
+#ParticleTarget.alliance -> alliance: enum "NO DESCRIPTION"
+#+ * ParticleTarget.duration -> duration: float "NO DESCRIPTION"
+#ParticleTarget.is_valid -> is_valid: boolean "Keyed particles target is valid"
+#+ * ParticleTarget.name -> name: string, "(read-only) Particle target name"
+#+ * ParticleTarget.object -> object: pointer "The object that has the target particle system (empty if same object)"
+#+ * ParticleTarget.system -> system: int "The index of particle system on the target object"
+#+ * ParticleTarget.time -> time: float "NO DESCRIPTION"
+#+ * PointCache.active_point_cache_index -> active_point_cache_index: int "NO DESCRIPTION"
+#+ * PointCache.filepath -> filepath: string "Cache file path"
+#+ * PointCache.frame_end -> frame_end: int "Frame on which the simulation stops"
+#+ * PointCache.frame_start -> frame_start: int "Frame on which the simulation starts"
+#PointCache.frame_step -> frame_step: int "Number of frames between cached frames"
+#+ * PointCache.frames_skipped -> frames_skipped: boolean, "(read-only)"
+#+ * PointCache.index -> index: int "Index number of cache files"
+#+ * PointCache.info -> info: string, "(read-only) Info on current cache status"
+#PointCache.is_baked -> is_baked: boolean, "(read-only)"
+#PointCache.is_baking -> is_baking: boolean, "(read-only)"
+#PointCache.is_outdated -> is_outdated: boolean, "(read-only)"
+#+ * PointCache.name -> name: string "Cache name"
+#PointCache.point_caches -> point_caches: collection, "(read-only) Point cache list"
+#PointCache.use_disk_cache -> use_disk_cache: boolean "Save cache files to disk (.blend file must be saved first)"
+#PointCache.use_external -> use_external: boolean "Read cache from an external location"
+#+ * PointCache.use_library_path -> use_library_path: boolean "Use this files path when library linked into another file."
+#PointCache.use_quick_cache -> use_quick_cache: boolean "Update simulation with cache steps"
+#+ * PointDensity.color_ramp -> color_ramp: pointer, "(read-only)"
+#+ * PointDensity.color_source -> color_source: enum "Data to derive color results from"
+#+ * PointDensity.falloff -> falloff: enum "Method of attenuating density by distance from the point"
+#PointDensity.falloff_soft -> falloff_soft: float "Softness of the soft falloff option"
+#+ * PointDensity.noise_basis -> noise_basis: enum "Noise formula used for turbulence"
+#+ * PointDensity.object -> object: pointer "Object to take point data from"
+#PointDensity.particle_cache_space -> particle_cache_space: enum "Co-ordinate system to cache particles in"
+#+ * PointDensity.particle_system -> particle_system: pointer "Particle System to render as points"
+#+ * PointDensity.point_source -> point_source: enum "Point data to use as renderable point density"
+#+ * PointDensity.radius -> radius: float "Radius from the shaded sample to look for points within"
+#+ * PointDensity.speed_scale -> speed_scale: float "Multiplier to bring particle speed within an acceptable range"
+#+ * PointDensity.turbulence_depth -> turbulence_depth: int "Level of detail in the added turbulent noise"
+#+ * PointDensity.turbulence_influence -> turbulence_influence: enum "Method for driving added turbulent noise"
+#PointDensity.turbulence_scale -> turbulence_scale: float "Scale of the added turbulent noise"
+#+ * PointDensity.turbulence_strength -> turbulence_strength: float "NO DESCRIPTION"
+#PointDensity.use_turbulence -> use_turbulence: boolean "Add directed noise to the density at render-time"
+#PointDensity.vertex_cache_space -> vertex_cache_space: enum "Co-ordinate system to cache vertices in"
+#+ * Pose.active_bone_group -> active_bone_group: pointer "Active bone group for this pose"
+#+ * Pose.active_bone_group_index -> active_bone_group_index: int "Active index in bone groups array"
+#+ * Pose.animation_visualisation -> animation_visualisation: pointer, "(read-only) Animation data for this datablock"
+#+ * Pose.bone_groups -> bone_groups: collection, "(read-only) Groups of the bones"
+#+ * Pose.bones -> bones: collection, "(read-only) Individual pose bones for the armature"
+#+ * Pose.ik_param -> ik_param: pointer, "(read-only) Parameters for IK solver"
+#+ * Pose.ik_solver -> ik_solver: enum "Selection of IK solver for IK chain, current choice is 0 for Legacy, 1 for iTaSC"
+#+ * PoseBone.bone -> bone: pointer, "(read-only) Bone associated with this PoseBone"
+#+ * PoseBone.bone_group -> bone_group: pointer "Bone Group this pose channel belongs to"
+#+ * PoseBone.bone_group_index -> bone_group_index: int "Bone Group this pose channel belongs to (0=no group)"
+#+ * PoseBone.child -> child: pointer, "(read-only) Child of this pose bone"
+#+ * PoseBone.constraints -> constraints: collection, "(read-only) Constraints that act on this PoseChannel"
+#+ * PoseBone.custom_shape -> custom_shape: pointer "Object that defines custom draw type for this bone"
+#+ * PoseBone.custom_shape_transform -> custom_shape_transform: pointer "Bone that defines the display transform of this custom shape"
+#+ * PoseBone.head -> head: float[3], "(read-only) Location of head of the channels bone"
+#PoseBone.ik_linear_weight -> ik_linear_weight: float "Weight of scale constraint for IK"
+#+ * PoseBone.ik_max_x -> ik_max_x: float "Maximum angles for IK Limit"
+#+ * PoseBone.ik_max_y -> ik_max_y: float "Maximum angles for IK Limit"
+#+ * PoseBone.ik_max_z -> ik_max_z: float "Maximum angles for IK Limit"
+#+ * PoseBone.ik_min_x -> ik_min_x: float "Minimum angles for IK Limit"
+#+ * PoseBone.ik_min_y -> ik_min_y: float "Minimum angles for IK Limit"
+#+ * PoseBone.ik_min_z -> ik_min_z: float "Minimum angles for IK Limit"
+#PoseBone.ik_rotation_weight -> ik_rotation_weight: float "Weight of rotation constraint for IK"
+#+ * PoseBone.ik_stiffness_x -> ik_stiffness_x: float "IK stiffness around the X axis"
+#+ * PoseBone.ik_stiffness_y -> ik_stiffness_y: float "IK stiffness around the Y axis"
+#+ * PoseBone.ik_stiffness_z -> ik_stiffness_z: float "IK stiffness around the Z axis"
+#+ * PoseBone.ik_stretch -> ik_stretch: float "Allow scaling of the bone for IK"
+#PoseBone.is_in_ik_chain -> is_in_ik_chain: boolean, "(read-only) Is part of an IK chain"
+#+ * PoseBone.location -> location: float[3] "NO DESCRIPTION"
+#PoseBone.lock_ik_x -> lock_ik_x: boolean "Disallow movement around the X axis"
+#PoseBone.lock_ik_y -> lock_ik_y: boolean "Disallow movement around the Y axis"
+#PoseBone.lock_ik_z -> lock_ik_z: boolean "Disallow movement around the Z axis"
+#+ * PoseBone.lock_location -> lock_location: boolean[3] "Lock editing of location in the interface"
+#+ * PoseBone.lock_rotation -> lock_rotation: boolean[3] "Lock editing of rotation in the interface"
+#+ * PoseBone.lock_rotation_w -> lock_rotation_w: boolean "Lock editing of angle component of four-component rotations in the interface"
+#+ * PoseBone.lock_rotations_4d -> lock_rotations_4d: boolean "Lock editing of four component rotations by components (instead of as Eulers)"
+#+ * PoseBone.lock_scale -> lock_scale: boolean[3] "Lock editing of scale in the interface"
+#+ * PoseBone.matrix -> matrix: float[16], "(read-only) Final 4x4 matrix for this channel"
+#+ * PoseBone.matrix_channel -> matrix_channel: float[16], "(read-only) 4x4 matrix, before constraints"
+#+ * PoseBone.matrix_local -> matrix_local: float[16] "Matrix representing the parent relative location, scale and rotation. Provides an alternative access to these properties."
+#+ * PoseBone.motion_path -> motion_path: pointer, "(read-only) Motion Path for this element"
+#+ * PoseBone.name -> name: string "NO DESCRIPTION"
+#+ * PoseBone.parent -> parent: pointer, "(read-only) Parent of this pose bone"
+#+ * PoseBone.rotation_axis_angle -> rotation_axis_angle: float[4] "Angle of Rotation for Axis-Angle rotation representation"
+#+ * PoseBone.rotation_euler -> rotation_euler: float[3] "Rotation in Eulers"
+#+ * PoseBone.rotation_mode -> rotation_mode: enum "NO DESCRIPTION"
+#+ * PoseBone.rotation_quaternion -> rotation_quaternion: float[4] "Rotation in Quaternions"
+#+ * PoseBone.scale -> scale: float[3] "NO DESCRIPTION"
+#+ * PoseBone.select -> select: boolean "NO DESCRIPTION"
+#+ * PoseBone.tail -> tail: float[3], "(read-only) Location of tail of the channels bone"
+#PoseBone.use_ik_limit_x -> use_ik_limit_x: boolean "Limit movement around the X axis"
+#PoseBone.use_ik_limit_y -> use_ik_limit_y: boolean "Limit movement around the Y axis"
+#PoseBone.use_ik_limit_z -> use_ik_limit_z: boolean "Limit movement around the Z axis"
+#PoseBone.use_ik_linear_control -> use_ik_linear_control: boolean "Apply channel size as IK constraint if stretching is enabled"
+#PoseBone.use_ik_rotation_control -> use_ik_rotation_control: boolean "Apply channel rotation as IK constraint"
+#+ * PoseBoneConstraints.active -> active: pointer "Active PoseChannel constraint"
+#+ * Property.description -> description: string, "(read-only) Description of the property for tooltips"
+#+ * Property.identifier -> identifier: string, "(read-only) Unique name used in the code and scripting"
+#+ * Property.is_never_none -> is_never_none: boolean, "(read-only) True when this value cant be set to None"
+#Property.is_output -> is_output: boolean, "(read-only) True when this property is an output value from an RNA function"
+#+ * Property.is_readonly -> is_readonly: boolean, "(read-only) Property is editable through RNA"
+#Property.is_registered -> is_registered: boolean, "(read-only) Property is registered as part of type registration"
+#Property.is_registered_optional -> is_registered_optional: boolean, "(read-only) Property is optionally registered as part of type registration"
+#+ * Property.is_required -> is_required: boolean, "(read-only) False when this property is an optional argument in an RNA function"
+#+ * Property.name -> name: string, "(read-only) Human readable name"
+#+ * Property.srna -> srna: pointer, "(read-only) Struct definition used for properties assigned to this item"
+#+ * Property.subtype -> subtype: enum, "(read-only) Semantic interpretation of the property"
+#+ * Property.type -> type: enum, "(read-only) Data type of the property"
+#+ * Property.unit -> unit: enum, "(read-only) Type of units for this property"
+#+ * Property|BooleanProperty.array_length -> array_length: int, "(read-only) Maximum length of the array, 0 means unlimited"
+#+ * Property|BooleanProperty.default -> default: boolean, "(read-only) Default value for this number"
+#+ * Property|BooleanProperty.default_array -> default_array: boolean[3], "(read-only) Default value for this array"
+#+ * Property|CollectionProperty.fixed_type -> fixed_type: pointer, "(read-only) Fixed pointer type, empty if variable type"
+#+ * Property|EnumProperty.default -> default: enum, "(read-only) Default value for this enum"
+#+ * Property|EnumProperty.items -> items: collection, "(read-only) Possible values for the property"
+#+ * Property|FloatProperty.array_length -> array_length: int, "(read-only) Maximum length of the array, 0 means unlimited"
+#+ * Property|FloatProperty.default -> default: float, "(read-only) Default value for this number"
+#+ * Property|FloatProperty.default_array -> default_array: float[3], "(read-only) Default value for this array"
+#+ * Property|FloatProperty.hard_max -> hard_max: float, "(read-only) Maximum value used by buttons"
+#+ * Property|FloatProperty.hard_min -> hard_min: float, "(read-only) Minimum value used by buttons"
+#+ * Property|FloatProperty.precision -> precision: int, "(read-only) Number of digits after the dot used by buttons"
+#+ * Property|FloatProperty.soft_max -> soft_max: float, "(read-only) Maximum value used by buttons"
+#+ * Property|FloatProperty.soft_min -> soft_min: float, "(read-only) Minimum value used by buttons"
+#+ * Property|FloatProperty.step -> step: float, "(read-only) Step size used by number buttons, for floats 1/100th of the step size"
+#+ * Property|IntProperty.array_length -> array_length: int, "(read-only) Maximum length of the array, 0 means unlimited"
+#+ * Property|IntProperty.default -> default: int, "(read-only) Default value for this number"
+#+ * Property|IntProperty.default_array -> default_array: int[3], "(read-only) Default value for this array"
+#+ * Property|IntProperty.hard_max -> hard_max: int, "(read-only) Maximum value used by buttons"
+#+ * Property|IntProperty.hard_min -> hard_min: int, "(read-only) Minimum value used by buttons"
+#+ * Property|IntProperty.soft_max -> soft_max: int, "(read-only) Maximum value used by buttons"
+#+ * Property|IntProperty.soft_min -> soft_min: int, "(read-only) Minimum value used by buttons"
+#+ * Property|IntProperty.step -> step: int, "(read-only) Step size used by number buttons, for floats 1/100th of the step size"
+#+ * Property|PointerProperty.fixed_type -> fixed_type: pointer, "(read-only) Fixed pointer type, empty if variable type"
+#+ * Property|StringProperty.default -> default: string, "(read-only) string default value"
+#Property|StringProperty.length_max -> length_max: int, "(read-only) Maximum length of the string, 0 means unlimited"
+#+ * RGBANodeSocket.default_value -> default_value: float[4] "Default value of the socket when no link is attached"
+#+ * RGBANodeSocket.name -> name: string, "(read-only) Socket name"
+#+ * Region.height -> height: int, "(read-only) Region height"
+#+ * Region.id -> id: int, "(read-only) Unique ID for this region"
+#+ * Region.type -> type: enum, "(read-only) Type of this region"
+#+ * Region.width -> width: int, "(read-only) Region width"
+#+ * RegionView3D.lock_rotation -> lock_rotation: boolean "Lock view rotation in side views"
+#+ * RegionView3D.perspective_matrix -> perspective_matrix: float[16], "(read-only) Current perspective matrix of the 3D region"
+#RegionView3D.show_sync_view -> show_sync_view: boolean "Sync view position between side views"
+#RegionView3D.use_box_clip -> use_box_clip: boolean "Clip objects based on whats visible in other side views"
+#+ * RegionView3D.view_distance -> view_distance: float "Distance to the view location"
+#+ * RegionView3D.view_location -> view_location: float[3] "View pivot location"
+#+ * RegionView3D.view_matrix -> view_matrix: float[16], "(read-only) Current view matrix of the 3D region"
+#+ * RegionView3D.view_perspective -> view_perspective: enum "View Perspective"
+#RegionView3D.view_rotate_method -> view_rotate_method: float[4] "Rotation in quaternions (keep normalized)"
+#+ * RenderEngine.bl_idname -> bl_idname: string "NO DESCRIPTION"
+#+ * RenderEngine.bl_label -> bl_label: string "NO DESCRIPTION"
+#RenderEngine.bl_use_postprocess -> bl_use_postprocess: boolean "NO DESCRIPTION"
+#RenderEngine.bl_use_preview -> bl_use_preview: boolean "NO DESCRIPTION"
+#RenderLayer.exclude_ambient_occlusion -> exclude_ambient_occlusion: boolean, "(read-only) Exclude AO pass from combined"
+#RenderLayer.exclude_emit -> exclude_emit: boolean, "(read-only) Exclude emission pass from combined"
+#RenderLayer.exclude_environment -> exclude_environment: boolean, "(read-only) Exclude environment pass from combined"
+#RenderLayer.exclude_indirect -> exclude_indirect: boolean, "(read-only) Exclude indirect pass from combined"
+#RenderLayer.exclude_reflection -> exclude_reflection: boolean, "(read-only) Exclude raytraced reflection pass from combined"
+#RenderLayer.exclude_refraction -> exclude_refraction: boolean, "(read-only) Exclude raytraced refraction pass from combined"
+#RenderLayer.exclude_shadow -> exclude_shadow: boolean, "(read-only) Exclude shadow pass from combined"
+#RenderLayer.exclude_specular -> exclude_specular: boolean, "(read-only) Exclude specular pass from combined"
+#RenderLayer.invert_zmask -> invert_zmask: boolean, "(read-only) For Zmask, only render what is behind solid z values instead of in front"
+#RenderLayer.layers -> layers: boolean[20], "(read-only) Scene layers included in this render layer"
+#RenderLayer.layers_zmask -> layers_zmask: boolean[20], "(read-only) Zmask scene layers"
+#+ * RenderLayer.light_override -> light_override: pointer, "(read-only) Group to override all other lights in this render layer"
+#+ * RenderLayer.material_override -> material_override: pointer, "(read-only) Material to override all other materials in this render layer"
+#+ * RenderLayer.name -> name: string, "(read-only) Render layer name"
+#+ * RenderLayer.passes -> passes: collection, "(read-only)"
+#+ * RenderLayer.rect -> rect: float "NO DESCRIPTION"
+#+ * RenderLayer.use -> use: boolean, "(read-only) Disable or enable the render layer"
+#RenderLayer.use_all_z -> use_all_z: boolean, "(read-only) Fill in Z values for solid faces in invisible layers, for masking"
+#RenderLayer.use_edge_enhance -> use_edge_enhance: boolean, "(read-only) Render Edge-enhance in this Layer (only works for Solid faces)"
+#RenderLayer.use_halo -> use_halo: boolean, "(read-only) Render Halos in this Layer (on top of Solid)"
+#RenderLayer.use_pass_ambient_occlusion -> use_pass_ambient_occlusion: boolean, "(read-only) Deliver AO pass"
+#RenderLayer.use_pass_color -> use_pass_color: boolean, "(read-only) Deliver shade-less color pass"
+#RenderLayer.use_pass_combined -> use_pass_combined: boolean, "(read-only) Deliver full combined RGBA buffer"
+#RenderLayer.use_pass_diffuse -> use_pass_diffuse: boolean, "(read-only) Deliver diffuse pass"
+#RenderLayer.use_pass_emit -> use_pass_emit: boolean, "(read-only) Deliver emission pass"
+#RenderLayer.use_pass_environment -> use_pass_environment: boolean, "(read-only) Deliver environment lighting pass"
+#RenderLayer.use_pass_indirect -> use_pass_indirect: boolean, "(read-only) Deliver indirect lighting pass"
+#RenderLayer.use_pass_mist -> use_pass_mist: boolean, "(read-only) Deliver mist factor pass (0.0-1.0)"
+#RenderLayer.use_pass_normal -> use_pass_normal: boolean, "(read-only) Deliver normal pass"
+#RenderLayer.use_pass_object_index -> use_pass_object_index: boolean, "(read-only) Deliver object index pass"
+#RenderLayer.use_pass_reflection -> use_pass_reflection: boolean, "(read-only) Deliver raytraced reflection pass"
+#RenderLayer.use_pass_refraction -> use_pass_refraction: boolean, "(read-only) Deliver raytraced refraction pass"
+#RenderLayer.use_pass_shadow -> use_pass_shadow: boolean, "(read-only) Deliver shadow pass"
+#RenderLayer.use_pass_specular -> use_pass_specular: boolean, "(read-only) Deliver specular pass"
+#RenderLayer.use_pass_uv -> use_pass_uv: boolean, "(read-only) Deliver texture UV pass"
+#RenderLayer.use_pass_vector -> use_pass_vector: boolean, "(read-only) Deliver speed vector pass"
+#RenderLayer.use_pass_z -> use_pass_z: boolean, "(read-only) Deliver Z values pass"
+#RenderLayer.use_sky -> use_sky: boolean, "(read-only) Render Sky in this Layer"
+#RenderLayer.use_solid -> use_solid: boolean, "(read-only) Render Solid faces in this Layer"
+#RenderLayer.use_strand -> use_strand: boolean, "(read-only) Render Strands in this Layer"
+#RenderLayer.use_zmask -> use_zmask: boolean, "(read-only) Only render whats in front of the solid z values"
+#RenderLayer.use_ztransp -> use_ztransp: boolean, "(read-only) Render Z-Transparent faces in this Layer (On top of Solid and Halos)"
+#+ * RenderPass.channel_id -> channel_id: string, "(read-only)"
+#+ * RenderPass.channels -> channels: int, "(read-only)"
+#+ * RenderPass.name -> name: string, "(read-only)"
+#+ * RenderPass.rect -> rect: float "NO DESCRIPTION"
+#+ * RenderPass.type -> type: enum, "(read-only)"
+#+ * RenderResult.layers -> layers: collection, "(read-only)"
+#+ * RenderResult.resolution_x -> resolution_x: int, "(read-only)"
+#+ * RenderResult.resolution_y -> resolution_y: int, "(read-only)"
+#+ * RenderSettings.active_layer_index -> active_layer_index: int "Active index in render layer array"
+#+ * RenderSettings.alpha_mode -> alpha_mode: enum "Representation of alpha information in the RGBA pixels"
+#+ * RenderSettings.antialiasing_samples -> antialiasing_samples: enum "Amount of anti-aliasing samples per pixel"
+#+ * RenderSettings.bake_aa_mode -> bake_aa_mode: enum "NO DESCRIPTION"
+#+ * RenderSettings.bake_bias -> bake_bias: float "Bias towards faces further away from the object (in blender units)"
+#+ * RenderSettings.bake_distance -> bake_distance: float "Maximum distance from active object to other object (in blender units"
+#+ * RenderSettings.bake_margin -> bake_margin: int "Amount of pixels to extend the baked result with, as post process filter"
+#+ * RenderSettings.bake_normal_space -> bake_normal_space: enum "Choose normal space for baking"
+#+ * RenderSettings.bake_quad_split -> bake_quad_split: enum "Choose the method used to split a quad into 2 triangles for baking"
+#+ * RenderSettings.bake_type -> bake_type: enum "Choose shading information to bake into the image"
+#+ * RenderSettings.border_max_x -> border_max_x: float "Sets maximum X value for the render border"
+#+ * RenderSettings.border_max_y -> border_max_y: float "Sets maximum Y value for the render border"
+#+ * RenderSettings.border_min_x -> border_min_x: float "Sets minimum X value to for the render border"
+#+ * RenderSettings.border_min_y -> border_min_y: float "Sets minimum Y value for the render border"
+#+ * RenderSettings.cineon_black -> cineon_black: int "Log conversion reference blackpoint"
+#+ * RenderSettings.cineon_gamma -> cineon_gamma: float "Log conversion gamma"
+#+ * RenderSettings.cineon_white -> cineon_white: int "Log conversion reference whitepoint"
+#+ * RenderSettings.color_mode -> color_mode: enum "Choose BW for saving greyscale images, RGB for saving red, green and blue channels, AND RGBA for saving red, green, blue + alpha channels"
+#+ * RenderSettings.display_mode -> display_mode: enum "Select where rendered images will be displayed"
+#+ * RenderSettings.dither_intensity -> dither_intensity: float "Amount of dithering noise added to the rendered image to break up banding"
+#+ * RenderSettings.edge_color -> edge_color: float[3] "NO DESCRIPTION"
+#+ * RenderSettings.edge_threshold -> edge_threshold: int "Threshold for drawing outlines on geometry edges"
+#+ * RenderSettings.engine -> engine: enum "Engine to use for rendering"
+#RenderSettings.exr_codec -> exr_codec: enum "Codec settings for OpenEXR"
+#RenderSettings.exr_preview -> exr_preview: boolean "When rendering animations, save JPG preview images in same directory"
+#RenderSettings.exr_zbuf -> exr_zbuf: boolean "Save the z-depth per pixel (32 bit unsigned int zbuffer)"
+#+ * RenderSettings.field_order -> field_order: enum "Order of video fields. Select which lines get rendered first, to create smooth motion for TV output"
+#+ * RenderSettings.file_extension -> file_extension: string, "(read-only) The file extension used for saving renders"
+#+ * RenderSettings.file_format -> file_format: enum "File format to save the rendered images as"
+#+ * RenderSettings.file_quality -> file_quality: int "Quality of JPEG images, AVI Jpeg and SGI movies, Compression for PNGs"
+#RenderSettings.filepath -> filepath: string "Directory/name to save animations, # characters defines the position and length of frame numbers"
+#+ * RenderSettings.filter_size -> filter_size: float "Pixel width over which the reconstruction filter combines samples"
+#+ * RenderSettings.fps -> fps: int "Framerate, expressed in frames per second"
+#+ * RenderSettings.fps_base -> fps_base: float "Framerate base"
+#RenderSettings.has_multiple_engines -> has_multiple_engines: boolean, "(read-only) More than one rendering engine is available"
+#+ * RenderSettings.is_movie_format -> is_movie_format: boolean, "(read-only) When true the format is a movie"
+#RenderSettings.jpeg2k_depth -> jpeg2k_depth: enum "Bit depth per channel"
+#RenderSettings.jpeg2k_preset -> jpeg2k_preset: enum "Use a DCI Standard preset for saving jpeg2000"
+#RenderSettings.jpeg2k_ycc -> jpeg2k_ycc: boolean "Save luminance-chrominance-chrominance channels instead of RGB colors"
+#+ * RenderSettings.layers -> layers: collection, "(read-only)"
+#+ * RenderSettings.motion_blur_samples -> motion_blur_samples: int "Number of scene samples to take with motion blur"
+#+ * RenderSettings.motion_blur_shutter -> motion_blur_shutter: float "Time taken in frames between shutter open and close"
+#+ * RenderSettings.octree_resolution -> octree_resolution: enum "Resolution of raytrace accelerator. Use higher resolutions for larger scenes"
+#+ * RenderSettings.parts_x -> parts_x: int "Number of horizontal tiles to use while rendering"
+#+ * RenderSettings.parts_y -> parts_y: int "Number of vertical tiles to use while rendering"
+#+ * RenderSettings.pixel_aspect_x -> pixel_aspect_x: float "Horizontal aspect ratio - for anamorphic or non-square pixel output"
+#+ * RenderSettings.pixel_aspect_y -> pixel_aspect_y: float "Vertical aspect ratio - for anamorphic or non-square pixel output"
+#RenderSettings.pixel_filter_type -> pixel_filter_type: enum "Reconstruction filter used for combining anti-aliasing samples"
+#RenderSettings.raytrace_method -> raytrace_method: enum "Type of raytrace accelerator structure"
+#+ * RenderSettings.resolution_percentage -> resolution_percentage: int "Percentage scale for render resolution"
+#+ * RenderSettings.resolution_x -> resolution_x: int "Number of horizontal pixels in the rendered image"
+#+ * RenderSettings.resolution_y -> resolution_y: int "Number of vertical pixels in the rendered image"
+#+ * RenderSettings.sequencer_gl_preview -> sequencer_gl_preview: enum "Method to draw in the sequencer view"
+#+ * RenderSettings.sequencer_gl_render -> sequencer_gl_render: enum "Method to draw in the sequencer view"
+#+ * RenderSettings.simplify_ao_sss -> simplify_ao_sss: float "Global approximate AA and SSS quality factor"
+#+ * RenderSettings.simplify_child_particles -> simplify_child_particles: float "Global child particles percentage"
+#+ * RenderSettings.simplify_shadow_samples -> simplify_shadow_samples: int "Global maximum shadow samples"
+#+ * RenderSettings.simplify_subdivision -> simplify_subdivision: int "Global maximum subdivision level"
+#+ * RenderSettings.stamp_background -> stamp_background: float[4] "Color to use behind stamp text"
+#+ * RenderSettings.stamp_font_size -> stamp_font_size: int "Size of the font used when rendering stamp text"
+#+ * RenderSettings.stamp_foreground -> stamp_foreground: float[4] "Color to use for stamp text"
+#+ * RenderSettings.stamp_note_text -> stamp_note_text: string "Custom text to appear in the stamp note"
+#+ * RenderSettings.threads -> threads: int "Number of CPU threads to use simultaneously while rendering (for multi-core/CPU systems)"
+#+ * RenderSettings.threads_mode -> threads_mode: enum "Determine the amount of render threads used"
+#RenderSettings.use_antialiasing -> use_antialiasing: boolean "Render and combine multiple samples per pixel to prevent jagged edges"
+#RenderSettings.use_backbuf -> use_backbuf: boolean "Render backbuffer image"
+#RenderSettings.use_bake_antialiasing -> use_bake_antialiasing: boolean "Enables Anti-aliasing"
+#RenderSettings.use_bake_clear -> use_bake_clear: boolean "Clear Images before baking"
+#RenderSettings.use_bake_normalize -> use_bake_normalize: boolean "With displacement normalize to the distance, with ambient occlusion normalize without using material settings"
+#RenderSettings.use_bake_selected_to_active -> use_bake_selected_to_active: boolean "Bake shading on the surface of selected objects to the active object"
+#+ * RenderSettings.use_border -> use_border: boolean "Render a user-defined border region, within the frame size. Note, this disables save_buffers and full_sample"
+#RenderSettings.use_cineon_log -> use_cineon_log: boolean "Convert to logarithmic color space"
+#RenderSettings.use_color_management -> use_color_management: boolean "Use linear workflow - gamma corrected imaging pipeline"
+#+ * RenderSettings.use_compositing -> use_compositing: boolean "Process the render result through the compositing pipeline, if compositing nodes are enabled"
+#RenderSettings.use_crop_to_border -> use_crop_to_border: boolean "Crop the rendered frame to the defined border size"
+#RenderSettings.use_edge_enhance -> use_edge_enhance: boolean "Create a toon outline around the edges of geometry"
+#+ * RenderSettings.use_envmaps -> use_envmaps: boolean "Calculate environment maps while rendering"
+#RenderSettings.use_exr_half -> use_exr_half: boolean "Use 16 bit floats instead of 32 bit floats per channel"
+#RenderSettings.use_fields -> use_fields: boolean "Render image to two fields per frame, for interlaced TV output"
+#RenderSettings.use_fields_still -> use_fields_still: boolean "Disable the time difference between fields"
+#+ * RenderSettings.use_file_extension -> use_file_extension: boolean "Add the file format extensions to the rendered file name (eg: filename + .jpg)"
+#RenderSettings.use_free_image_textures -> use_free_image_textures: boolean "Free all image texture from memory after render, to save memory before compositing"
+#RenderSettings.use_free_unused_nodes -> use_free_unused_nodes: boolean "Free Nodes that are not used while compositing, to save memory"
+#RenderSettings.use_full_sample -> use_full_sample: boolean "Save for every anti-aliasing sample the entire RenderLayer results. This solves anti-aliasing issues with compositing"
+#+ * RenderSettings.use_game_engine -> use_game_engine: boolean, "(read-only) Current rendering engine is a game engine"
+#+ * RenderSettings.use_instances -> use_instances: boolean "Instance support leads to effective memory reduction when using duplicates"
+#+ * RenderSettings.use_local_coords -> use_local_coords: boolean "Vertex coordinates are stored localy on each primitive. Increases memory usage, but may have impact on speed"
+#RenderSettings.use_motion_blur -> use_motion_blur: boolean "Use multi-sampled 3D scene motion blur"
+#+ * RenderSettings.use_overwrite -> use_overwrite: boolean "Overwrite existing files while rendering"
+#+ * RenderSettings.use_placeholder -> use_placeholder: boolean "Create empty placeholder files while rendering frames (similar to Unix touch)"
+#+ * RenderSettings.use_radiosity -> use_radiosity: boolean "Calculate radiosity in a pre-process before rendering"
+#RenderSettings.use_raytrace -> use_raytrace: boolean "Pre-calculate the raytrace accelerator and render raytracing effects"
+#RenderSettings.use_save_buffers -> use_save_buffers: boolean "Save tiles for all RenderLayers and SceneNodes to files in the temp directory (saves memory, required for Full Sample)"
+#+ * RenderSettings.use_sequencer -> use_sequencer: boolean "Process the render (and composited) result through the video sequence editor pipeline, if sequencer strips exist"
+#+ * RenderSettings.use_sequencer_gl_preview -> use_sequencer_gl_preview: boolean "NO DESCRIPTION"
+#+ * RenderSettings.use_sequencer_gl_render -> use_sequencer_gl_render: boolean "NO DESCRIPTION"
+#+ * RenderSettings.use_shadows -> use_shadows: boolean "Calculate shadows while rendering"
+#+ * RenderSettings.use_simplify -> use_simplify: boolean "Enable simplification of scene for quicker preview renders"
+#RenderSettings.use_simplify_triangulate -> use_simplify_triangulate: boolean "Disables non-planer quads being triangulated"
+#RenderSettings.use_single_layer -> use_single_layer: boolean "Only render the active layer"
+#+ * RenderSettings.use_sss -> use_sss: boolean "Calculate sub-surface scattering in materials rendering"
+#RenderSettings.use_stamp -> use_stamp: boolean "Render the stamp info text in the rendered image"
+#RenderSettings.use_stamp_camera -> use_stamp_camera: boolean "Include the name of the active camera in image metadata"
+#RenderSettings.use_stamp_date -> use_stamp_date: boolean "Include the current date in image metadata"
+#RenderSettings.use_stamp_filename -> use_stamp_filename: boolean "Include the filename of the .blend file in image metadata"
+#RenderSettings.use_stamp_frame -> use_stamp_frame: boolean "Include the frame number in image metadata"
+#RenderSettings.use_stamp_marker -> use_stamp_marker: boolean "Include the name of the last marker in image metadata"
+#RenderSettings.use_stamp_note -> use_stamp_note: boolean "Include a custom note in image metadata"
+#RenderSettings.use_stamp_render_time -> use_stamp_render_time: boolean "Include the render time in the stamp image"
+#RenderSettings.use_stamp_scene -> use_stamp_scene: boolean "Include the name of the active scene in image metadata"
+#RenderSettings.use_stamp_sequencer_strip -> use_stamp_sequencer_strip: boolean "Include the name of the foreground sequence strip in image metadata"
+#RenderSettings.use_stamp_time -> use_stamp_time: boolean "Include the render frame as HH:MM:SS.FF in image metadata"
+#+ * RenderSettings.use_textures -> use_textures: boolean "Use textures to affect material properties"
+#RenderSettings.use_tiff_16bit -> use_tiff_16bit: boolean "Save TIFF with 16 bits per channel"
+#+ * SPHFluidSettings.buoyancy -> buoyancy: float "NO DESCRIPTION"
+#+ * SPHFluidSettings.fluid_radius -> fluid_radius: float "Fluid interaction Radius"
+#+ * SPHFluidSettings.rest_density -> rest_density: float "Density"
+#+ * SPHFluidSettings.rest_length -> rest_length: float "The Spring Rest Length (factor of interaction radius)"
+#SPHFluidSettings.spring_force -> spring_force: float "Spring force constant"
+#SPHFluidSettings.stiffness -> stiffness: float "Constant K - Stiffness"
+#SPHFluidSettings.stiffness_near -> stiffness_near: float "Repulsion factor: stiffness_knear"
+#+ * SPHFluidSettings.viscosity_beta -> viscosity_beta: float "Square viscosity factor"
+#+ * SPHFluidSettings.viscosity_omega -> viscosity_omega: float "Linear viscosity"
+#+ * SceneBases.active -> active: pointer "Active object base in the scene"
+#+ * SceneGameData.activity_culling_box_radius -> activity_culling_box_radius: float "Radius of the activity bubble, in Manhattan length. Objects outside the box are activity-culled"
+#+ * SceneGameData.depth -> depth: int "Displays bit depth of full screen display"
+#+ * SceneGameData.dome_angle -> dome_angle: int "Field of View of the Dome - it only works in mode Fisheye and Truncated"
+#+ * SceneGameData.dome_buffer_resolution -> dome_buffer_resolution: float "Buffer Resolution - decrease it to increase speed"
+#+ * SceneGameData.dome_mode -> dome_mode: enum "Dome physical configurations"
+#+ * SceneGameData.dome_tesselation -> dome_tesselation: int "Tessellation level - check the generated mesh in wireframe mode"
+#+ * SceneGameData.dome_text -> dome_text: pointer "Custom Warp Mesh data file"
+#+ * SceneGameData.dome_tilt -> dome_tilt: int "Camera rotation in horizontal axis"
+#+ * SceneGameData.fps -> fps: int "The nominal number of game frames per second. Physics fixed timestep = 1/fps, independently of actual frame rate"
+#SceneGameData.frame_color -> frame_color: float[3] "Set colour of the bars"
+#SceneGameData.frame_type -> frame_type: enum "Select the type of Framing you want"
+#+ * SceneGameData.frequency -> frequency: int "Displays clock frequency of fullscreen display"
+#+ * SceneGameData.logic_step_max -> logic_step_max: int "Sets the maximum number of logic frame per game frame if graphics slows down the game, higher value allows better synchronization with physics"
+#+ * SceneGameData.material_mode -> material_mode: enum "Material mode to use for rendering"
+#+ * SceneGameData.occlusion_culling_resolution -> occlusion_culling_resolution: float "The size of the occlusion buffer in pixel, use higher value for better precision (slower)"
+#+ * SceneGameData.physics_engine -> physics_engine: enum "Physics engine used for physics simulation in the game engine"
+#+ * SceneGameData.physics_gravity -> physics_gravity: float "Gravitational constant used for physics simulation in the game engine"
+#+ * SceneGameData.physics_step_max -> physics_step_max: int "Sets the maximum number of physics step per game frame if graphics slows down the game, higher value allows physics to keep up with realtime"
+#+ * SceneGameData.physics_step_sub -> physics_step_sub: int "Sets the number of simulation substep per physic timestep, higher value give better physics precision"
+#+ * SceneGameData.resolution_x -> resolution_x: int "Number of horizontal pixels in the screen"
+#+ * SceneGameData.resolution_y -> resolution_y: int "Number of vertical pixels in the screen"
+#+ * SceneGameData.show_debug_properties -> show_debug_properties: boolean "Show properties marked for debugging while the game runs"
+#+ * SceneGameData.show_framerate_profile -> show_framerate_profile: boolean "Show framerate and profiling information while the game runs"
+#SceneGameData.show_fullscreen -> show_fullscreen: boolean "Starts player in a new fullscreen display"
+#+ * SceneGameData.show_physics_visualization -> show_physics_visualization: boolean "Show a visualization of physics bounds and interactions"
+#+ * SceneGameData.stereo -> stereo: enum "NO DESCRIPTION"
+#SceneGameData.stereo_eye_separation -> stereo_eye_separation: float "Set the distance between the eyes - the camera focal length/30 should be fine"
+#+ * SceneGameData.stereo_mode -> stereo_mode: enum "Stereographic techniques"
+#SceneGameData.use_activity_culling -> use_activity_culling: boolean "Activity culling is enabled"
+#+ * SceneGameData.use_animation_record -> use_animation_record: boolean "Record animation to fcurves"
+#SceneGameData.use_auto_start -> use_auto_start: boolean "Automatically start game at load time"
+#+ * SceneGameData.use_deprecation_warnings -> use_deprecation_warnings: boolean "Print warnings when using deprecated features in the python API"
+#+ * SceneGameData.use_display_lists -> use_display_lists: boolean "Use display lists to speed up rendering by keeping geometry on the GPU"
+#+ * SceneGameData.use_frame_rate -> use_frame_rate: boolean "Respect the frame rate rather than rendering as many frames as possible"
+#SceneGameData.use_glsl_extra_textures -> use_glsl_extra_textures: boolean "Use extra textures like normal or specular maps for GLSL rendering"
+#SceneGameData.use_glsl_lights -> use_glsl_lights: boolean "Use lights for GLSL rendering"
+#SceneGameData.use_glsl_nodes -> use_glsl_nodes: boolean "Use nodes for GLSL rendering"
+#SceneGameData.use_glsl_ramps -> use_glsl_ramps: boolean "Use ramps for GLSL rendering"
+#SceneGameData.use_glsl_shaders -> use_glsl_shaders: boolean "Use shaders for GLSL rendering"
+#SceneGameData.use_glsl_shadows -> use_glsl_shadows: boolean "Use shadows for GLSL rendering"
+#+ * SceneGameData.use_occlusion_culling -> use_occlusion_culling: boolean "Use optimized Bullet DBVT tree for view frustum and occlusion culling"
+#+ * SceneObjects.active -> active: pointer "Active object for this scene"
+#SceneRenderLayer.exclude_ambient_occlusion -> exclude_ambient_occlusion: boolean "Exclude AO pass from combined"
+#SceneRenderLayer.exclude_emit -> exclude_emit: boolean "Exclude emission pass from combined"
+#SceneRenderLayer.exclude_environment -> exclude_environment: boolean "Exclude environment pass from combined"
+#SceneRenderLayer.exclude_indirect -> exclude_indirect: boolean "Exclude indirect pass from combined"
+#SceneRenderLayer.exclude_reflection -> exclude_reflection: boolean "Exclude raytraced reflection pass from combined"
+#SceneRenderLayer.exclude_refraction -> exclude_refraction: boolean "Exclude raytraced refraction pass from combined"
+#SceneRenderLayer.exclude_shadow -> exclude_shadow: boolean "Exclude shadow pass from combined"
+#SceneRenderLayer.exclude_specular -> exclude_specular: boolean "Exclude specular pass from combined"
+#SceneRenderLayer.invert_zmask -> invert_zmask: boolean "For Zmask, only render what is behind solid z values instead of in front"
+#SceneRenderLayer.layers -> layers: boolean[20] "Scene layers included in this render layer"
+#SceneRenderLayer.layers_zmask -> layers_zmask: boolean[20] "Zmask scene layers"
+#+ * SceneRenderLayer.light_override -> light_override: pointer "Group to override all other lights in this render layer"
+#+ * SceneRenderLayer.material_override -> material_override: pointer "Material to override all other materials in this render layer"
+#+ * SceneRenderLayer.name -> name: string "Render layer name"
+#+ * SceneRenderLayer.use -> use: boolean "Disable or enable the render layer"
+#SceneRenderLayer.use_all_z -> use_all_z: boolean "Fill in Z values for solid faces in invisible layers, for masking"
+#SceneRenderLayer.use_edge_enhance -> use_edge_enhance: boolean "Render Edge-enhance in this Layer (only works for Solid faces)"
+#SceneRenderLayer.use_halo -> use_halo: boolean "Render Halos in this Layer (on top of Solid)"
+#SceneRenderLayer.use_pass_ambient_occlusion -> use_pass_ambient_occlusion: boolean "Deliver AO pass"
+#SceneRenderLayer.use_pass_color -> use_pass_color: boolean "Deliver shade-less color pass"
+#SceneRenderLayer.use_pass_combined -> use_pass_combined: boolean "Deliver full combined RGBA buffer"
+#SceneRenderLayer.use_pass_diffuse -> use_pass_diffuse: boolean "Deliver diffuse pass"
+#SceneRenderLayer.use_pass_emit -> use_pass_emit: boolean "Deliver emission pass"
+#SceneRenderLayer.use_pass_environment -> use_pass_environment: boolean "Deliver environment lighting pass"
+#SceneRenderLayer.use_pass_indirect -> use_pass_indirect: boolean "Deliver indirect lighting pass"
+#SceneRenderLayer.use_pass_mist -> use_pass_mist: boolean "Deliver mist factor pass (0.0-1.0)"
+#SceneRenderLayer.use_pass_normal -> use_pass_normal: boolean "Deliver normal pass"
+#SceneRenderLayer.use_pass_object_index -> use_pass_object_index: boolean "Deliver object index pass"
+#SceneRenderLayer.use_pass_reflection -> use_pass_reflection: boolean "Deliver raytraced reflection pass"
+#SceneRenderLayer.use_pass_refraction -> use_pass_refraction: boolean "Deliver raytraced refraction pass"
+#SceneRenderLayer.use_pass_shadow -> use_pass_shadow: boolean "Deliver shadow pass"
+#SceneRenderLayer.use_pass_specular -> use_pass_specular: boolean "Deliver specular pass"
+#SceneRenderLayer.use_pass_uv -> use_pass_uv: boolean "Deliver texture UV pass"
+#SceneRenderLayer.use_pass_vector -> use_pass_vector: boolean "Deliver speed vector pass"
+#SceneRenderLayer.use_pass_z -> use_pass_z: boolean "Deliver Z values pass"
+#SceneRenderLayer.use_sky -> use_sky: boolean "Render Sky in this Layer"
+#SceneRenderLayer.use_solid -> use_solid: boolean "Render Solid faces in this Layer"
+#SceneRenderLayer.use_strand -> use_strand: boolean "Render Strands in this Layer"
+#SceneRenderLayer.use_zmask -> use_zmask: boolean "Only render whats in front of the solid z values"
+#SceneRenderLayer.use_ztransp -> use_ztransp: boolean "Render Z-Transparent faces in this Layer (On top of Solid and Halos)"
+#+ * Scopes.accuracy -> accuracy: float "Proportion of original image source pixel lines to sample"
+#+ * Scopes.histogram -> histogram: pointer, "(read-only) Histogram for viewing image statistics"
+#+ * Scopes.use_full_resolution -> use_full_resolution: boolean "Sample every pixel of the image"
+#+ * Scopes.vectorscope_alpha -> vectorscope_alpha: float "Opacity of the points"
+#+ * Scopes.waveform_alpha -> waveform_alpha: float "Opacity of the points"
+#+ * Scopes.waveform_mode -> waveform_mode: enum "NO DESCRIPTION"
+#+ * Sensor.frequency -> frequency: int "Delay between repeated pulses(in logic tics, 0=no delay)"
+#+ * Sensor.invert -> invert: boolean "Invert the level(output) of this sensor"
+#+ * Sensor.name -> name: string "Sensor name"
+#Sensor.pin -> pin: boolean "Display when not linked to a visible states controller"
+#Sensor.show_expanded -> show_expanded: boolean "Set sensor expanded in the user interface"
+#+ * Sensor.type -> type: enum "NO DESCRIPTION"
+#Sensor.use_level -> use_level: boolean "Level detector, trigger controllers of new states(only applicable upon logic state transition)"
+#Sensor.use_pulse_false_level -> use_pulse_false_level: boolean "Activate FALSE level triggering (pulse mode)"
+#Sensor.use_pulse_true_level -> use_pulse_true_level: boolean "Activate TRUE level triggering (pulse mode)"
+#Sensor.use_tap -> use_tap: boolean "Trigger controllers only for an instant, even while the sensor remains true"
+#+ * Sensor|ActuatorSensor.actuator -> actuator: string "Actuator name, actuator active state modifications will be detected"
+#+ * Sensor|ArmatureSensor.bone -> bone: string "Identify the bone to check value from"
+#+ * Sensor|ArmatureSensor.constraint -> constraint: string "Identify the bone constraint to check value from"
+#+ * Sensor|ArmatureSensor.test_type -> test_type: enum "Type of value and test"
+#+ * Sensor|ArmatureSensor.value -> value: float "Specify value to be used in comparison"
+#+ * Sensor|CollisionSensor.material -> material: string "Only look for Objects with this material"
+#+ * Sensor|CollisionSensor.property -> property: string "Only look for Objects with this property"
+#Sensor|CollisionSensor.use_material -> use_material: boolean "Toggle collision on material or property"
+#Sensor|CollisionSensor.use_pulse -> use_pulse: boolean "Changes to the set of colliding objects generates pulse"
+#+ * Sensor|DelaySensor.delay -> delay: int "Delay in number of logic tics before the positive trigger (default 60 per second)"
+#+ * Sensor|DelaySensor.duration -> duration: int "If >0, delay in number of logic tics before the negative trigger following the positive trigger"
+#Sensor|DelaySensor.use_repeat -> use_repeat: boolean "Toggle repeat option. If selected, the sensor restarts after Delay+Dur logic tics"
+#+ * Sensor|JoystickSensor.axis_direction -> axis_direction: enum "The direction of the axis"
+#+ * Sensor|JoystickSensor.axis_number -> axis_number: int "Specify which axis pair to use, 1 is usually the main direction input"
+#+ * Sensor|JoystickSensor.axis_threshold -> axis_threshold: int "Specify the precision of the axis"
+#+ * Sensor|JoystickSensor.button_number -> button_number: int "Specify which button to use"
+#+ * Sensor|JoystickSensor.event_type -> event_type: enum "The type of event this joystick sensor is triggered on"
+#+ * Sensor|JoystickSensor.hat_direction -> hat_direction: enum "Specify hat direction"
+#+ * Sensor|JoystickSensor.hat_number -> hat_number: int "Specify which hat to use"
+#+ * Sensor|JoystickSensor.joystick_index -> joystick_index: int "Specify which joystick to use"
+#+ * Sensor|JoystickSensor.single_axis_number -> single_axis_number: int "Specify a single axis (verticle/horizontal/other) to detect"
+#Sensor|JoystickSensor.use_all_events -> use_all_events: boolean "Triggered by all events on this joysticks current type (axis/button/hat)"
+#+ * Sensor|KeyboardSensor.key -> key: enum "NO DESCRIPTION"
+#+ * Sensor|KeyboardSensor.log -> log: string "Property that receive the keystrokes in case a string is logged"
+#Sensor|KeyboardSensor.modifier_key_1 -> modifier_key_1: enum "Modifier key code"
+#Sensor|KeyboardSensor.modifier_key_2 -> modifier_key_2: enum "Modifier key code"
+#+ * Sensor|KeyboardSensor.target -> target: string "Property that indicates whether to log keystrokes as a string"
+#Sensor|KeyboardSensor.use_all_keys -> use_all_keys: boolean "Trigger this sensor on any keystroke"
+#+ * Sensor|MessageSensor.subject -> subject: string "Optional subject filter: only accept messages with this subject, or empty for all"
+#+ * Sensor|MouseSensor.mouse_event -> mouse_event: enum "Specify the type of event this mouse sensor should trigger on"
+#+ * Sensor|NearSensor.distance -> distance: float "Trigger distance"
+#+ * Sensor|NearSensor.property -> property: string "Only look for objects with this property"
+#+ * Sensor|NearSensor.reset_distance -> reset_distance: float "NO DESCRIPTION"
+#+ * Sensor|PropertySensor.evaluation_type -> evaluation_type: enum "Type of property evaluation"
+#+ * Sensor|PropertySensor.property -> property: string "NO DESCRIPTION"
+#+ * Sensor|PropertySensor.value -> value: string "Check for this value in types in Equal or Not Equal types"
+#Sensor|PropertySensor.value_max -> value_max: string "Specify maximum value in Interval type"
+#Sensor|PropertySensor.value_min -> value_min: string "Specify minimum value in Interval type"
+#+ * Sensor|RadarSensor.angle -> angle: float "Opening angle of the radar cone"
+#+ * Sensor|RadarSensor.axis -> axis: enum "Specify along which axis the radar cone is cast"
+#+ * Sensor|RadarSensor.distance -> distance: float "Depth of the radar cone"
+#+ * Sensor|RadarSensor.property -> property: string "Only look for Objects with this property"
+#+ * Sensor|RandomSensor.seed -> seed: int "Initial seed of the generator. (Choose 0 for not random)"
+#+ * Sensor|RaySensor.axis -> axis: enum "Specify along which axis the ray is cast"
+#+ * Sensor|RaySensor.material -> material: string "Only look for Objects with this material"
+#+ * Sensor|RaySensor.property -> property: string "Only look for Objects with this property"
+#+ * Sensor|RaySensor.range -> range: float "Sense objects no farther than this distance"
+#+ * Sensor|RaySensor.ray_type -> ray_type: enum "Toggle collision on material or property"
+#Sensor|RaySensor.use_x_ray -> use_x_ray: boolean "Toggle X-Ray option (see through objects that dont have the property)"
+#+ * Sensor|TouchSensor.material -> material: pointer "Only look for objects with this material"
+#Sequence.blend_alpha -> blend_alpha: float "NO DESCRIPTION"
+#Sequence.blend_type -> blend_type: enum "NO DESCRIPTION"
+#+ * Sequence.channel -> channel: int "Y position of the sequence strip"
+#+ * Sequence.effect_fader -> effect_fader: float "NO DESCRIPTION"
+#Sequence.frame_duration -> frame_duration: int, "(read-only) The length of the contents of this strip before the handles are applied"
+#Sequence.frame_final_duration -> frame_final_duration: int "The length of the contents of this strip before the handles are applied"
+#+ * Sequence.frame_final_end -> frame_final_end: int "End frame displayed in the sequence editor after offsets are applied"
+#+ * Sequence.frame_final_start -> frame_final_start: int "Start frame displayed in the sequence editor after offsets are applied, setting this is equivalent to moving the handle, not the actual start frame"
+#+ * Sequence.frame_offset_end -> frame_offset_end: int, "(read-only)"
+#+ * Sequence.frame_offset_start -> frame_offset_start: int, "(read-only)"
+#+ * Sequence.frame_start -> frame_start: int "NO DESCRIPTION"
+#+ * Sequence.frame_still_end -> frame_still_end: int, "(read-only)"
+#+ * Sequence.frame_still_start -> frame_still_start: int, "(read-only)"
+#+ * Sequence.lock -> lock: boolean "Lock strip so that it cant be transformed"
+#+ * Sequence.mute -> mute: boolean "NO DESCRIPTION"
+#+ * Sequence.name -> name: string "NO DESCRIPTION"
+#+ * Sequence.select -> select: boolean "NO DESCRIPTION"
+#+ * Sequence.select_left_handle -> select_left_handle: boolean "NO DESCRIPTION"
+#+ * Sequence.select_right_handle -> select_right_handle: boolean "NO DESCRIPTION"
+#+ * Sequence.speed_fader -> speed_fader: float "NO DESCRIPTION"
+#+ * Sequence.type -> type: enum, "(read-only)"
+#Sequence.use_default_fade -> use_default_fade: boolean "Fade effect using the built-in default (usually make transition as long as effect strip)"
+#+ * SequenceColorBalance.gain -> gain: float[3] "Color balance gain (highlights)"
+#+ * SequenceColorBalance.gamma -> gamma: float[3] "Color balance gamma (midtones)"
+#SequenceColorBalance.invert_gain -> invert_gain: boolean "NO DESCRIPTION"
+#SequenceColorBalance.invert_gamma -> invert_gamma: boolean "NO DESCRIPTION"
+#SequenceColorBalance.invert_lift -> invert_lift: boolean "NO DESCRIPTION"
+#+ * SequenceColorBalance.lift -> lift: float[3] "Color balance lift (shadows)"
+ + * SequenceCrop.right -> max_x: int "NO DESCRIPTION"
+ + * SequenceCrop.top -> max_y: int "NO DESCRIPTION"
+ + * SequenceCrop.bottom -> min_x: int "NO DESCRIPTION"
+ + * SequenceCrop.left -> min_y: int "NO DESCRIPTION"
+#+ * SequenceEditor.active_strip -> active_strip: pointer "NO DESCRIPTION"
+#+ * SequenceEditor.meta_stack -> meta_stack: collection, "(read-only) Meta strip stack, last is currently edited meta strip"
+#+ * SequenceEditor.overlay_frame -> overlay_frame: int "Sequencers active strip"
+#+ * SequenceEditor.overlay_lock -> overlay_lock: boolean "NO DESCRIPTION"
+#+ * SequenceEditor.sequences -> sequences: collection, "(read-only)"
+#+ * SequenceEditor.sequences_all -> sequences_all: collection, "(read-only)"
+#+ * SequenceEditor.show_overlay -> show_overlay: boolean "Partial overlay ontop of the sequencer"
+#+ * SequenceElement.filename -> filename: string "NO DESCRIPTION"
+#+ * SequenceProxy.directory -> directory: string "Location to store the proxy files"
+#+ * SequenceProxy.filepath -> filepath: string "Location of custom proxy file"
+#+ * SequenceTransform.offset_x -> offset_x: int "NO DESCRIPTION"
+#+ * SequenceTransform.offset_y -> offset_y: int "NO DESCRIPTION"
+#+ * Sequence|EffectSequence.color_balance -> color_balance: pointer, "(read-only)"
+#Sequence|EffectSequence.color_multiply -> color_multiply: float "NO DESCRIPTION"
+#+ * Sequence|EffectSequence.color_saturation -> color_saturation: float "NO DESCRIPTION"
+#+ * Sequence|EffectSequence.crop -> crop: pointer, "(read-only)"
+#+ * Sequence|EffectSequence.proxy -> proxy: pointer, "(read-only)"
+#+ * Sequence|EffectSequence.strobe -> strobe: float "Only display every nth frame"
+#+ * Sequence|EffectSequence.transform -> transform: pointer, "(read-only)"
+#+ * Sequence|EffectSequence.use_color_balance -> use_color_balance: boolean "(3-Way color correction) on input"
+#+ * Sequence|EffectSequence.use_crop -> use_crop: boolean "Crop image before processing"
+#Sequence|EffectSequence.use_deinterlace -> use_deinterlace: boolean "For video movies to remove fields"
+#Sequence|EffectSequence.use_flip_x -> use_flip_x: boolean "Flip on the X axis"
+#Sequence|EffectSequence.use_flip_y -> use_flip_y: boolean "Flip on the Y axis"
+#Sequence|EffectSequence.use_float -> use_float: boolean "Convert input to float data"
+#Sequence|EffectSequence.use_premultiply -> use_premultiply: boolean "Convert RGB from key alpha to premultiplied alpha"
+#+ * Sequence|EffectSequence.use_proxy -> use_proxy: boolean "Use a preview proxy for this strip"
+#Sequence|EffectSequence.use_proxy_custom_directory -> use_proxy_custom_directory: boolean "Use a custom directory to store data"
+#Sequence|EffectSequence.use_proxy_custom_file -> use_proxy_custom_file: boolean "Use a custom file to read proxy data from"
+#Sequence|EffectSequence.use_reverse_frames -> use_reverse_frames: boolean "Reverse frame order"
+#+ * Sequence|EffectSequence.use_translation -> use_translation: boolean "Translate image before processing"
+#+ * Sequence|EffectSequence|ColorSequence.color -> color: float[3] "NO DESCRIPTION"
+#Sequence|EffectSequence|GlowSequence.blur_radius -> blur_radius: float "Radius of glow effect"
+#+ * Sequence|EffectSequence|GlowSequence.boost_factor -> boost_factor: float "Brightness multiplier"
+#+ * Sequence|EffectSequence|GlowSequence.clamp -> clamp: float "rightness limit of intensity"
+#+ * Sequence|EffectSequence|GlowSequence.quality -> quality: int "Accuracy of the blur effect"
+#+ * Sequence|EffectSequence|GlowSequence.threshold -> threshold: float "Minimum intensity to trigger a glow"
+#Sequence|EffectSequence|GlowSequence.use_only_boost -> use_only_boost: boolean "Show the glow buffer only"
+#+ * Sequence|EffectSequence|PluginSequence.filename -> filename: string, "(read-only)"
+#+ * Sequence|EffectSequence|SpeedControlSequence.global_speed -> global_speed: float "NO DESCRIPTION"
+#Sequence|EffectSequence|SpeedControlSequence.use_curve_compress_y -> use_curve_compress_y: boolean "Scale F-Curve value to get the target frame number, F-Curve value runs from 0.0 to 1.0"
+#Sequence|EffectSequence|SpeedControlSequence.use_curve_velocity -> use_curve_velocity: boolean "Interpret the F-Curve value as a velocity instead of a frame number"
+#Sequence|EffectSequence|SpeedControlSequence.use_frame_blend -> use_frame_blend: boolean "Blend two frames into the target for a smoother result"
+#+ * Sequence|EffectSequence|TransformSequence.interpolation -> interpolation: enum "NO DESCRIPTION"
+#+ * Sequence|EffectSequence|TransformSequence.rotation_start -> rotation_start: float "NO DESCRIPTION"
+#+ * Sequence|EffectSequence|TransformSequence.scale_start_x -> scale_start_x: float "NO DESCRIPTION"
+#+ * Sequence|EffectSequence|TransformSequence.scale_start_y -> scale_start_y: float "NO DESCRIPTION"
+#+ * Sequence|EffectSequence|TransformSequence.translate_start_x -> translate_start_x: float "NO DESCRIPTION"
+#+ * Sequence|EffectSequence|TransformSequence.translate_start_y -> translate_start_y: float "NO DESCRIPTION"
+#+ * Sequence|EffectSequence|TransformSequence.translation_unit -> translation_unit: enum "NO DESCRIPTION"
+#Sequence|EffectSequence|TransformSequence.use_uniform_scale -> use_uniform_scale: boolean "Scale uniformly, preserving aspect ratio"
+#+ * Sequence|EffectSequence|WipeSequence.angle -> angle: float "Edge angle"
+#+ * Sequence|EffectSequence|WipeSequence.blur_width -> blur_width: float "Width of the blur edge, in percentage relative to the image size"
+#+ * Sequence|EffectSequence|WipeSequence.direction -> direction: enum "Wipe direction"
+#+ * Sequence|EffectSequence|WipeSequence.transition_type -> transition_type: enum "NO DESCRIPTION"
+#Sequence|ImageSequence.animation_offset_end -> animation_offset_end: int "Animation end offset (trim end)"
+#Sequence|ImageSequence.animation_offset_start -> animation_offset_start: int "Animation start offset (trim start)"
+#+ * Sequence|ImageSequence.color_balance -> color_balance: pointer, "(read-only)"
+#Sequence|ImageSequence.color_multiply -> color_multiply: float "NO DESCRIPTION"
+#+ * Sequence|ImageSequence.color_saturation -> color_saturation: float "NO DESCRIPTION"
+#+ * Sequence|ImageSequence.crop -> crop: pointer, "(read-only)"
+#+ * Sequence|ImageSequence.directory -> directory: string "NO DESCRIPTION"
+#+ * Sequence|ImageSequence.elements -> elements: collection, "(read-only)"
+#+ * Sequence|ImageSequence.proxy -> proxy: pointer, "(read-only)"
+#+ * Sequence|ImageSequence.strobe -> strobe: float "Only display every nth frame"
+#+ * Sequence|ImageSequence.transform -> transform: pointer, "(read-only)"
+#+ * Sequence|ImageSequence.use_color_balance -> use_color_balance: boolean "(3-Way color correction) on input"
+#+ * Sequence|ImageSequence.use_crop -> use_crop: boolean "Crop image before processing"
+#Sequence|ImageSequence.use_deinterlace -> use_deinterlace: boolean "For video movies to remove fields"
+#Sequence|ImageSequence.use_flip_x -> use_flip_x: boolean "Flip on the X axis"
+#Sequence|ImageSequence.use_flip_y -> use_flip_y: boolean "Flip on the Y axis"
+#Sequence|ImageSequence.use_float -> use_float: boolean "Convert input to float data"
+#Sequence|ImageSequence.use_premultiply -> use_premultiply: boolean "Convert RGB from key alpha to premultiplied alpha"
+#+ * Sequence|ImageSequence.use_proxy -> use_proxy: boolean "Use a preview proxy for this strip"
+#Sequence|ImageSequence.use_proxy_custom_directory -> use_proxy_custom_directory: boolean "Use a custom directory to store data"
+#Sequence|ImageSequence.use_proxy_custom_file -> use_proxy_custom_file: boolean "Use a custom file to read proxy data from"
+#Sequence|ImageSequence.use_reverse_frames -> use_reverse_frames: boolean "Reverse frame order"
+#+ * Sequence|ImageSequence.use_translation -> use_translation: boolean "Translate image before processing"
+#Sequence|MetaSequence.animation_offset_end -> animation_offset_end: int "Animation end offset (trim end)"
+#Sequence|MetaSequence.animation_offset_start -> animation_offset_start: int "Animation start offset (trim start)"
+#+ * Sequence|MetaSequence.color_balance -> color_balance: pointer, "(read-only)"
+#Sequence|MetaSequence.color_multiply -> color_multiply: float "NO DESCRIPTION"
+#+ * Sequence|MetaSequence.color_saturation -> color_saturation: float "NO DESCRIPTION"
+#+ * Sequence|MetaSequence.crop -> crop: pointer, "(read-only)"
+#+ * Sequence|MetaSequence.proxy -> proxy: pointer, "(read-only)"
+#+ * Sequence|MetaSequence.sequences -> sequences: collection, "(read-only)"
+#+ * Sequence|MetaSequence.strobe -> strobe: float "Only display every nth frame"
+#+ * Sequence|MetaSequence.transform -> transform: pointer, "(read-only)"
+#+ * Sequence|MetaSequence.use_color_balance -> use_color_balance: boolean "(3-Way color correction) on input"
+#+ * Sequence|MetaSequence.use_crop -> use_crop: boolean "Crop image before processing"
+#Sequence|MetaSequence.use_deinterlace -> use_deinterlace: boolean "For video movies to remove fields"
+#Sequence|MetaSequence.use_flip_x -> use_flip_x: boolean "Flip on the X axis"
+#Sequence|MetaSequence.use_flip_y -> use_flip_y: boolean "Flip on the Y axis"
+#Sequence|MetaSequence.use_float -> use_float: boolean "Convert input to float data"
+#Sequence|MetaSequence.use_premultiply -> use_premultiply: boolean "Convert RGB from key alpha to premultiplied alpha"
+#+ * Sequence|MetaSequence.use_proxy -> use_proxy: boolean "Use a preview proxy for this strip"
+#Sequence|MetaSequence.use_proxy_custom_directory -> use_proxy_custom_directory: boolean "Use a custom directory to store data"
+#Sequence|MetaSequence.use_proxy_custom_file -> use_proxy_custom_file: boolean "Use a custom file to read proxy data from"
+#Sequence|MetaSequence.use_reverse_frames -> use_reverse_frames: boolean "Reverse frame order"
+#+ * Sequence|MetaSequence.use_translation -> use_translation: boolean "Translate image before processing"
+#Sequence|MovieSequence.animation_offset_end -> animation_offset_end: int "Animation end offset (trim end)"
+#Sequence|MovieSequence.animation_offset_start -> animation_offset_start: int "Animation start offset (trim start)"
+#+ * Sequence|MovieSequence.color_balance -> color_balance: pointer, "(read-only)"
+#Sequence|MovieSequence.color_multiply -> color_multiply: float "NO DESCRIPTION"
+#+ * Sequence|MovieSequence.color_saturation -> color_saturation: float "NO DESCRIPTION"
+#+ * Sequence|MovieSequence.crop -> crop: pointer, "(read-only)"
+#+ * Sequence|MovieSequence.filepath -> filepath: string "NO DESCRIPTION"
+#+ * Sequence|MovieSequence.mpeg_preseek -> mpeg_preseek: int "For MPEG movies, preseek this many frames"
+#+ * Sequence|MovieSequence.proxy -> proxy: pointer, "(read-only)"
+#+ * Sequence|MovieSequence.strobe -> strobe: float "Only display every nth frame"
+#+ * Sequence|MovieSequence.transform -> transform: pointer, "(read-only)"
+#+ * Sequence|MovieSequence.use_color_balance -> use_color_balance: boolean "(3-Way color correction) on input"
+#+ * Sequence|MovieSequence.use_crop -> use_crop: boolean "Crop image before processing"
+#Sequence|MovieSequence.use_deinterlace -> use_deinterlace: boolean "For video movies to remove fields"
+#Sequence|MovieSequence.use_flip_x -> use_flip_x: boolean "Flip on the X axis"
+#Sequence|MovieSequence.use_flip_y -> use_flip_y: boolean "Flip on the Y axis"
+#Sequence|MovieSequence.use_float -> use_float: boolean "Convert input to float data"
+#Sequence|MovieSequence.use_premultiply -> use_premultiply: boolean "Convert RGB from key alpha to premultiplied alpha"
+#+ * Sequence|MovieSequence.use_proxy -> use_proxy: boolean "Use a preview proxy for this strip"
+#Sequence|MovieSequence.use_proxy_custom_directory -> use_proxy_custom_directory: boolean "Use a custom directory to store data"
+#Sequence|MovieSequence.use_proxy_custom_file -> use_proxy_custom_file: boolean "Use a custom file to read proxy data from"
+#Sequence|MovieSequence.use_reverse_frames -> use_reverse_frames: boolean "Reverse frame order"
+#+ * Sequence|MovieSequence.use_translation -> use_translation: boolean "Translate image before processing"
+#Sequence|MulticamSequence.animation_offset_end -> animation_offset_end: int "Animation end offset (trim end)"
+#Sequence|MulticamSequence.animation_offset_start -> animation_offset_start: int "Animation start offset (trim start)"
+#+ * Sequence|MulticamSequence.color_balance -> color_balance: pointer, "(read-only)"
+#Sequence|MulticamSequence.color_multiply -> color_multiply: float "NO DESCRIPTION"
+#+ * Sequence|MulticamSequence.color_saturation -> color_saturation: float "NO DESCRIPTION"
+#+ * Sequence|MulticamSequence.crop -> crop: pointer, "(read-only)"
+#+ * Sequence|MulticamSequence.multicam_source -> multicam_source: int "NO DESCRIPTION"
+#+ * Sequence|MulticamSequence.proxy -> proxy: pointer, "(read-only)"
+#+ * Sequence|MulticamSequence.strobe -> strobe: float "Only display every nth frame"
+#+ * Sequence|MulticamSequence.transform -> transform: pointer, "(read-only)"
+#+ * Sequence|MulticamSequence.use_color_balance -> use_color_balance: boolean "(3-Way color correction) on input"
+#+ * Sequence|MulticamSequence.use_crop -> use_crop: boolean "Crop image before processing"
+#Sequence|MulticamSequence.use_deinterlace -> use_deinterlace: boolean "For video movies to remove fields"
+#Sequence|MulticamSequence.use_flip_x -> use_flip_x: boolean "Flip on the X axis"
+#Sequence|MulticamSequence.use_flip_y -> use_flip_y: boolean "Flip on the Y axis"
+#Sequence|MulticamSequence.use_float -> use_float: boolean "Convert input to float data"
+#Sequence|MulticamSequence.use_premultiply -> use_premultiply: boolean "Convert RGB from key alpha to premultiplied alpha"
+#+ * Sequence|MulticamSequence.use_proxy -> use_proxy: boolean "Use a preview proxy for this strip"
+#Sequence|MulticamSequence.use_proxy_custom_directory -> use_proxy_custom_directory: boolean "Use a custom directory to store data"
+#Sequence|MulticamSequence.use_proxy_custom_file -> use_proxy_custom_file: boolean "Use a custom file to read proxy data from"
+#Sequence|MulticamSequence.use_reverse_frames -> use_reverse_frames: boolean "Reverse frame order"
+#+ * Sequence|MulticamSequence.use_translation -> use_translation: boolean "Translate image before processing"
+#Sequence|SceneSequence.animation_offset_end -> animation_offset_end: int "Animation end offset (trim end)"
+#Sequence|SceneSequence.animation_offset_start -> animation_offset_start: int "Animation start offset (trim start)"
+#+ * Sequence|SceneSequence.color_balance -> color_balance: pointer, "(read-only)"
+#Sequence|SceneSequence.color_multiply -> color_multiply: float "NO DESCRIPTION"
+#+ * Sequence|SceneSequence.color_saturation -> color_saturation: float "NO DESCRIPTION"
+#+ * Sequence|SceneSequence.crop -> crop: pointer, "(read-only)"
+#+ * Sequence|SceneSequence.proxy -> proxy: pointer, "(read-only)"
+#+ * Sequence|SceneSequence.scene -> scene: pointer "Scene that this sequence uses"
+#+ * Sequence|SceneSequence.scene_camera -> scene_camera: pointer "Override the scenes active camera"
+#+ * Sequence|SceneSequence.strobe -> strobe: float "Only display every nth frame"
+#+ * Sequence|SceneSequence.transform -> transform: pointer, "(read-only)"
+#+ * Sequence|SceneSequence.use_color_balance -> use_color_balance: boolean "(3-Way color correction) on input"
+#+ * Sequence|SceneSequence.use_crop -> use_crop: boolean "Crop image before processing"
+#Sequence|SceneSequence.use_deinterlace -> use_deinterlace: boolean "For video movies to remove fields"
+#Sequence|SceneSequence.use_flip_x -> use_flip_x: boolean "Flip on the X axis"
+#Sequence|SceneSequence.use_flip_y -> use_flip_y: boolean "Flip on the Y axis"
+#Sequence|SceneSequence.use_float -> use_float: boolean "Convert input to float data"
+#Sequence|SceneSequence.use_premultiply -> use_premultiply: boolean "Convert RGB from key alpha to premultiplied alpha"
+#+ * Sequence|SceneSequence.use_proxy -> use_proxy: boolean "Use a preview proxy for this strip"
+#Sequence|SceneSequence.use_proxy_custom_directory -> use_proxy_custom_directory: boolean "Use a custom directory to store data"
+#Sequence|SceneSequence.use_proxy_custom_file -> use_proxy_custom_file: boolean "Use a custom file to read proxy data from"
+#Sequence|SceneSequence.use_reverse_frames -> use_reverse_frames: boolean "Reverse frame order"
+#+ * Sequence|SceneSequence.use_translation -> use_translation: boolean "Translate image before processing"
+#Sequence|SoundSequence.animation_offset_end -> animation_offset_end: int "Animation end offset (trim end)"
+#Sequence|SoundSequence.animation_offset_start -> animation_offset_start: int "Animation start offset (trim start)"
+#+ * Sequence|SoundSequence.attenuation -> attenuation: float "Attenuation in dezibel"
+#+ * Sequence|SoundSequence.filepath -> filepath: string "NO DESCRIPTION"
+#+ * Sequence|SoundSequence.sound -> sound: pointer, "(read-only) Sound datablock used by this sequence"
+#+ * Sequence|SoundSequence.volume -> volume: float "Playback volume of the sound"
+#+ * ShapeKey.data -> data: collection, "(read-only)"
+#+ * ShapeKey.frame -> frame: float, "(read-only) Frame for absolute keys"
+#+ * ShapeKey.interpolation -> interpolation: enum "Interpolation type"
+#+ * ShapeKey.mute -> mute: boolean "Mute this shape key"
+#+ * ShapeKey.name -> name: string "NO DESCRIPTION"
+#+ * ShapeKey.relative_key -> relative_key: pointer "Shape used as a relative key"
+#+ * ShapeKey.slider_max -> slider_max: float "Maximum for slider"
+#+ * ShapeKey.slider_min -> slider_min: float "Minimum for slider"
+#+ * ShapeKey.value -> value: float "Value of shape key at the current frame"
+#+ * ShapeKey.vertex_group -> vertex_group: string "Vertex weight group, to blend with basis shape"
+#+ * ShapeKeyBezierPoint.co -> co: float[3] "NO DESCRIPTION"
+#ShapeKeyBezierPoint.handle_left -> handle_left: float[3] "NO DESCRIPTION"
+#ShapeKeyBezierPoint.handle_right -> handle_right: float[3] "NO DESCRIPTION"
+#+ * ShapeKeyCurvePoint.co -> co: float[3] "NO DESCRIPTION"
+#+ * ShapeKeyCurvePoint.tilt -> tilt: float "NO DESCRIPTION"
+#+ * ShapeKeyPoint.co -> co: float[3] "NO DESCRIPTION"
+#TODO BETTER NAME * SmokeDomainSettings.alpha -> alpha: float "Higher value results in sinking smoke"
+#+ * SmokeDomainSettings.amplify -> amplify: int "Enhance the resolution of smoke by this factor using noise"
+#TODO BETTER NAME * SmokeDomainSettings.beta -> beta: float "Higher value results in faster rising smoke"
+#SmokeDomainSettings.collision_extents -> collision_extents: enum "Selects which domain border will be treated as collision object."
+#SmokeDomainSettings.collision_group -> collision_group: pointer "Limit collisions to this group"
+#+ * SmokeDomainSettings.dissolve_speed -> dissolve_speed: int "Dissolve Speed"
+#+ * SmokeDomainSettings.eff_group -> eff_group: pointer "Limit effectors to this group"
+#+ * SmokeDomainSettings.effector_weights -> effector_weights: pointer, "(read-only)"
+#+ * SmokeDomainSettings.fluid_group -> fluid_group: pointer "Limit fluid objects to this group"
+#+ * SmokeDomainSettings.noise_type -> noise_type: enum "Noise method which is used for creating the high resolution"
+#SmokeDomainSettings.point_cache_compress_high_type -> point_cache_compress_high_type: enum "Compression method to be used"
+#SmokeDomainSettings.point_cache_compress_type -> point_cache_compress_type: enum "Compression method to be used"
+#+ * SmokeDomainSettings.point_cache_high -> point_cache_high: pointer, "(read-only)"
+#+ * SmokeDomainSettings.point_cache_low -> point_cache_low: pointer, "(read-only)"
+#SmokeDomainSettings.resolution_max -> resolution_max: int "Maximal resolution used in the fluid domain"
+#SmokeDomainSettings.show_high_resolution -> show_high_resolution: boolean "Show high resolution (using amplification)"
+#SmokeDomainSettings.smooth_emitter -> smooth_emitter: boolean "Smoothens emitted smoke to avoid blockiness."
+#+ * SmokeDomainSettings.strength -> strength: float "Strength of wavelet noise"
+#+ * SmokeDomainSettings.time_scale -> time_scale: float "Adjust simulation speed."
+#SmokeDomainSettings.use_dissolve_smoke -> use_dissolve_smoke: boolean "Enable smoke to disappear over time"
+#SmokeDomainSettings.use_dissolve_smoke_log -> use_dissolve_smoke_log: boolean "Using 1/x"
+#SmokeDomainSettings.use_high_resolution -> use_high_resolution: boolean "Enable high resolution (using amplification)"
+#+ * SmokeDomainSettings.vorticity -> vorticity: float "Amount of turbulence/rotation in fluid."
+#+ * SmokeFlowSettings.density -> density: float "NO DESCRIPTION"
+#+ * SmokeFlowSettings.initial_velocity -> initial_velocity: boolean "Smoke inherits its velocity from the emitter particle"
+#SmokeFlowSettings.particle_system -> particle_system: pointer "Particle systems emitted from the object"
+#+ * SmokeFlowSettings.temperature -> temperature: float "Temperature difference to ambient temperature"
+#SmokeFlowSettings.use_absolute -> use_absolute: boolean "Only allows given density value in emitter area."
+#SmokeFlowSettings.use_outflow -> use_outflow: boolean "Deletes smoke from simulation"
+#SmokeFlowSettings.velocity_factor -> velocity_factor: float "Multiplier to adjust velocity passed to smoke"
+#+ * SoftBodySettings.aero -> aero: float "Make edges sail"
+#+ * SoftBodySettings.aerodynamics_type -> aerodynamics_type: enum "Method of calculating aerodynamic interaction"
+#+ * SoftBodySettings.ball_damp -> ball_damp: float "Blending to inelastic collision"
+#+ * SoftBodySettings.ball_size -> ball_size: float "Absolute ball size or factor if not manual adjusted"
+#+ * SoftBodySettings.ball_stiff -> ball_stiff: float "Ball inflating pressure"
+#SoftBodySettings.bend -> bend: float "Bending Stiffness"
+#+ * SoftBodySettings.choke -> choke: int "Viscosity inside collision target"
+#+ * SoftBodySettings.collision_type -> collision_type: enum "Choose Collision Type"
+ + * SoftBodySettings.damp -> damping: float "Edge spring friction"
+#+ * SoftBodySettings.effector_weights -> effector_weights: pointer, "(read-only)"
+#SoftBodySettings.error_threshold -> error_threshold: float "The Runge-Kutta ODE solver error limit, low value gives more precision, high values speed"
+#+ * SoftBodySettings.friction -> friction: float "General media friction for point movements"
+#+ * SoftBodySettings.fuzzy -> fuzzy: int "Fuzziness while on collision, high values make collsion handling faster but less stable"
+#+ * SoftBodySettings.goal_default -> goal_default: float "Default Goal (vertex target position) value, when no Vertex Group used"
+#+ * SoftBodySettings.goal_friction -> goal_friction: float "Goal (vertex target position) friction"
+#+ * SoftBodySettings.goal_max -> goal_max: float "Goal maximum, vertex weights are scaled to match this range"
+#+ * SoftBodySettings.goal_min -> goal_min: float "Goal minimum, vertex weights are scaled to match this range"
+#+ * SoftBodySettings.goal_spring -> goal_spring: float "Goal (vertex target position) spring stiffness"
+#+ * SoftBodySettings.goal_vertex_group -> goal_vertex_group: string "Control point weight values"
+#+ * SoftBodySettings.gravity -> gravity: float "Apply gravitation to point movement"
+#SoftBodySettings.location_mass_center -> location_mass_center: float[3] "Location of Center of mass"
+#+ * SoftBodySettings.mass -> mass: float "General Mass value"
+#+ * SoftBodySettings.mass_vertex_group -> mass_vertex_group: string "Control point mass values"
+#+ * SoftBodySettings.plastic -> plastic: float "Permanent deform"
+#+ * SoftBodySettings.pull -> pull: float "Edge spring stiffness when longer than rest length"
+#+ * SoftBodySettings.push -> push: float "Edge spring stiffness when shorter than rest length"
+#SoftBodySettings.rotation_estimate -> rotation_estimate: float[9] "Estimated rotation matrix"
+#SoftBodySettings.scale_estimate -> scale_estimate: float[9] "Estimated scale matrix"
+#+ * SoftBodySettings.shear -> shear: float "Shear Stiffness"
+#+ * SoftBodySettings.speed -> speed: float "Tweak timing for physics to control frequency and speed"
+#+ * SoftBodySettings.spring_length -> spring_length: float "Alter spring length to shrink/blow up (unit %) 0 to disable"
+#+ * SoftBodySettings.spring_vertex_group -> spring_vertex_group: string "Control point spring strength values"
+#SoftBodySettings.step_max -> step_max: int "Maximal # solver steps/frame"
+#SoftBodySettings.step_min -> step_min: int "Minimal # solver steps/frame"
+#SoftBodySettings.use_auto_step -> use_auto_step: boolean "Use velocities for automagic step sizes"
+#SoftBodySettings.use_diagnose -> use_diagnose: boolean "Turn on SB diagnose console prints"
+#SoftBodySettings.use_edge_collision -> use_edge_collision: boolean "Edges collide too"
+#+ * SoftBodySettings.use_edges -> use_edges: boolean "Use Edges as springs"
+#SoftBodySettings.use_estimate_matrix -> use_estimate_matrix: boolean "estimate matrix .. split to COM , ROT ,SCALE"
+#SoftBodySettings.use_face_collision -> use_face_collision: boolean "Faces collide too, can be very slow"
+#+ * SoftBodySettings.use_goal -> use_goal: boolean "Define forces for vertices to stick to animated position"
+#SoftBodySettings.use_self_collision -> use_self_collision: boolean "Enable naive vertex ball self collision"
+#SoftBodySettings.use_stiff_quads -> use_stiff_quads: boolean "Adds diagonal springs on 4-gons"
+#+ * Space.type -> type: enum, "(read-only) Space data type"
+#+ * SpaceUVEditor.cursor_location -> cursor_location: float[2] "2D cursor location for this view"
+#+ * SpaceUVEditor.draw_stretch_type -> draw_stretch_type: enum "Type of stretch to draw"
+#+ * SpaceUVEditor.edge_draw_type -> edge_draw_type: enum "Draw type for drawing UV edges"
+#SpaceUVEditor.lock_bounds -> lock_bounds: boolean "Constraint to stay within the image bounds while editing"
+#SpaceUVEditor.pivot_point -> pivot_point: enum "Rotation/Scaling Pivot"
+#SpaceUVEditor.show_modified_edges -> show_modified_edges: boolean "Draw edges after modifiers are applied"
+#SpaceUVEditor.show_normalized_coords -> show_normalized_coords: boolean "Display UV coordinates from 0.0 to 1.0 rather than in pixels"
+#SpaceUVEditor.show_other_objects -> show_other_objects: boolean "Draw other selected objects that share the same image"
+#SpaceUVEditor.show_smooth_edges -> show_smooth_edges: boolean "Draw UV edges anti-aliased"
+#SpaceUVEditor.show_stretch -> show_stretch: boolean "Draw faces colored according to the difference in shape between UVs and their 3D coordinates (blue for low distortion, red for high distortion)"
+#SpaceUVEditor.sticky_select_mode -> sticky_select_mode: enum "Automatically select also UVs sharing the same vertex as the ones being selected"
+#SpaceUVEditor.use_live_unwrap -> use_live_unwrap: boolean "Continuously unwrap the selected UV island while transforming pinned vertices"
+#SpaceUVEditor.use_snap_to_pixels -> use_snap_to_pixels: boolean "Snap UVs to pixel locations while editing"
+#+ * Space|SpaceConsole.console_type -> console_type: enum "Console type"
+#+ * Space|SpaceConsole.font_size -> font_size: int "Font size to use for displaying the text"
+#+ * Space|SpaceConsole.history -> history: collection, "(read-only) Command history"
+#+ * Space|SpaceConsole.language -> language: string "Command line prompt language"
+#+ * Space|SpaceConsole.prompt -> prompt: string "Command line prompt"
+#+ * Space|SpaceConsole.scrollback -> scrollback: collection, "(read-only) Command output"
+#Space|SpaceConsole.select_end -> select_end: int "NO DESCRIPTION"
+#Space|SpaceConsole.select_start -> select_start: int "NO DESCRIPTION"
+#+ * Space|SpaceConsole.show_report_debug -> show_report_debug: boolean "Display debug reporting info"
+#+ * Space|SpaceConsole.show_report_error -> show_report_error: boolean "Display error text"
+#+ * Space|SpaceConsole.show_report_info -> show_report_info: boolean "Display general information"
+#+ * Space|SpaceConsole.show_report_operator -> show_report_operator: boolean "Display the operator log"
+#Space|SpaceConsole.show_report_warning -> show_report_warning: boolean "Display warnings"
+#+ * Space|SpaceDopeSheetEditor.action -> action: pointer "Action displayed and edited in this space"
+#Space|SpaceDopeSheetEditor.auto_snap -> auto_snap: enum "Automatic time snapping settings for transformations"
+#+ * Space|SpaceDopeSheetEditor.dopesheet -> dopesheet: pointer, "(read-only) Settings for filtering animation data"
+#+ * Space|SpaceDopeSheetEditor.mode -> mode: enum "Editing context being displayed"
+#Space|SpaceDopeSheetEditor.show_frame_indicator -> show_frame_indicator: boolean "Show frame number beside the current frame indicator line"
+#+ * Space|SpaceDopeSheetEditor.show_seconds -> show_seconds: boolean, "(read-only) Show timing in seconds not frames"
+#+ * Space|SpaceDopeSheetEditor.show_sliders -> show_sliders: boolean "Show sliders beside F-Curve channels"
+#Space|SpaceDopeSheetEditor.use_auto_merge_keyframes -> use_auto_merge_keyframes: boolean "Automatically merge nearby keyframes"
+#+ * Space|SpaceDopeSheetEditor.use_marker_sync -> use_marker_sync: boolean "Sync Markers with keyframe edits"
+#Space|SpaceDopeSheetEditor.use_realtime_update -> use_realtime_update: boolean "When transforming keyframes, changes to the animation data are flushed to other views"
+#+ * Space|SpaceFileBrowser.params -> params: pointer, "(read-only) Parameters and Settings for the Filebrowser"
+#Space|SpaceGraphEditor.auto_snap -> auto_snap: enum "Automatic time snapping settings for transformations"
+#Space|SpaceGraphEditor.cursor_position_y -> cursor_position_y: float "Graph Editor 2D-Value cursor - Y-Value component"
+#+ * Space|SpaceGraphEditor.dopesheet -> dopesheet: pointer, "(read-only) Settings for filtering animation data"
+#+ * Space|SpaceGraphEditor.has_ghost_curves -> has_ghost_curves: boolean "Graph Editor instance has some ghost curves stored"
+#+ * Space|SpaceGraphEditor.mode -> mode: enum "Editing context being displayed"
+#+ * Space|SpaceGraphEditor.pivot_point -> pivot_point: enum "Pivot center for rotation/scaling"
+#+ * Space|SpaceGraphEditor.show_cursor -> show_cursor: boolean "Show 2D cursor"
+#Space|SpaceGraphEditor.show_frame_indicator -> show_frame_indicator: boolean "Show frame number beside the current frame indicator line"
+#+ * Space|SpaceGraphEditor.show_handles -> show_handles: boolean "Show handles of Bezier control points"
+#+ * Space|SpaceGraphEditor.show_seconds -> show_seconds: boolean, "(read-only) Show timing in seconds not frames"
+#+ * Space|SpaceGraphEditor.show_sliders -> show_sliders: boolean "Show sliders beside F-Curve channels"
+#Space|SpaceGraphEditor.use_auto_merge_keyframes -> use_auto_merge_keyframes: boolean "Automatically merge nearby keyframes"
+#Space|SpaceGraphEditor.use_only_selected_curves_handles -> use_only_selected_curves_handles: boolean "Only keyframes of selected F-Curves are visible and editable"
+#Space|SpaceGraphEditor.use_only_selected_keyframe_handles -> use_only_selected_keyframe_handles: boolean "Only show and edit handles of selected keyframes"
+#Space|SpaceGraphEditor.use_realtime_update -> use_realtime_update: boolean "When transforming keyframes, changes to the animation data are flushed to other views"
+#+ * Space|SpaceImageEditor.curves -> curves: pointer, "(read-only) Color curve mapping to use for displaying the image"
+#+ * Space|SpaceImageEditor.draw_channels -> draw_channels: enum "Channels of the image to draw"
+#+ * Space|SpaceImageEditor.grease_pencil -> grease_pencil: pointer "Grease pencil data for this space"
+#+ * Space|SpaceImageEditor.image -> image: pointer "Image displayed and edited in this space"
+#+ * Space|SpaceImageEditor.image_user -> image_user: pointer, "(read-only) Parameters defining which layer, pass and frame of the image is displayed"
+#+ * Space|SpaceImageEditor.sample_histogram -> sample_histogram: pointer, "(read-only) Sampled colors along line"
+#+ * Space|SpaceImageEditor.scopes -> scopes: pointer, "(read-only) Scopes to visualize image statistics."
+#+ * Space|SpaceImageEditor.show_paint -> show_paint: boolean, "(read-only) Show paint related properties"
+#+ * Space|SpaceImageEditor.show_render -> show_render: boolean, "(read-only) Show render related properties"
+#Space|SpaceImageEditor.show_repeat -> show_repeat: boolean "Draw the image repeated outside of the main view"
+#+ * Space|SpaceImageEditor.show_uvedit -> show_uvedit: boolean, "(read-only) Show UV editing related properties"
+#+ * Space|SpaceImageEditor.use_grease_pencil -> use_grease_pencil: boolean "Display and edit the grease pencil freehand annotations overlay"
+#Space|SpaceImageEditor.use_image_paint -> use_image_paint: boolean "Enable image painting mode"
+#Space|SpaceImageEditor.use_image_pin -> use_image_pin: boolean "Display current image regardless of object selection"
+#Space|SpaceImageEditor.use_realtime_update -> use_realtime_update: boolean "Update other affected window spaces automatically to reflect changes during interactive operations such as transform"
+#+ * Space|SpaceImageEditor.uv_editor -> uv_editor: pointer, "(read-only) UV editor settings"
+#Space|SpaceLogicEditor.show_actuators_active_object -> show_actuators_active_object: boolean "Show actuators of active object"
+#Space|SpaceLogicEditor.show_actuators_active_states -> show_actuators_active_states: boolean "Show only actuators connected to active states"
+#Space|SpaceLogicEditor.show_actuators_linked_controller -> show_actuators_linked_controller: boolean "Show linked objects to the actuator"
+#Space|SpaceLogicEditor.show_actuators_selected_objects -> show_actuators_selected_objects: boolean "Show actuators of all selected objects"
+#Space|SpaceLogicEditor.show_controllers_active_object -> show_controllers_active_object: boolean "Show controllers of active object"
+#Space|SpaceLogicEditor.show_controllers_linked_controller -> show_controllers_linked_controller: boolean "Show linked objects to sensor/actuator"
+#Space|SpaceLogicEditor.show_controllers_selected_objects -> show_controllers_selected_objects: boolean "Show controllers of all selected objects"
+#Space|SpaceLogicEditor.show_sensors_active_object -> show_sensors_active_object: boolean "Show sensors of active object"
+#Space|SpaceLogicEditor.show_sensors_active_states -> show_sensors_active_states: boolean "Show only sensors connected to active states"
+#Space|SpaceLogicEditor.show_sensors_linked_controller -> show_sensors_linked_controller: boolean "Show linked objects to the controller"
+#Space|SpaceLogicEditor.show_sensors_selected_objects -> show_sensors_selected_objects: boolean "Show sensors of all selected objects"
+#Space|SpaceNLA.auto_snap -> auto_snap: enum "Automatic time snapping settings for transformations"
+#+ * Space|SpaceNLA.dopesheet -> dopesheet: pointer, "(read-only) Settings for filtering animation data"
+#Space|SpaceNLA.show_frame_indicator -> show_frame_indicator: boolean "Show frame number beside the current frame indicator line"
+#+ * Space|SpaceNLA.show_seconds -> show_seconds: boolean, "(read-only) Show timing in seconds not frames"
+#+ * Space|SpaceNLA.show_strip_curves -> show_strip_curves: boolean "Show influence curves on strips"
+#Space|SpaceNLA.use_realtime_update -> use_realtime_update: boolean "When transforming strips, changes to the animation data are flushed to other views"
+#+ * Space|SpaceNodeEditor.id -> id: pointer, "(read-only) Datablock whose nodes are being edited"
+#+ * Space|SpaceNodeEditor.id_from -> id_from: pointer, "(read-only) Datablock from which the edited datablock is linked"
+#+ * Space|SpaceNodeEditor.nodetree -> nodetree: pointer, "(read-only) Node tree being displayed and edited"
+#Space|SpaceNodeEditor.show_backdrop -> show_backdrop: boolean "Use active Viewer Node output as backdrop for compositing nodes"
+#+ * Space|SpaceNodeEditor.texture_type -> texture_type: enum "Type of data to take texture from"
+#+ * Space|SpaceNodeEditor.tree_type -> tree_type: enum "Node tree type to display and edit"
+#+ * Space|SpaceOutliner.display_mode -> display_mode: enum "Type of information to display"
+#Space|SpaceOutliner.filter_text -> filter_text: string "Live search filtering string"
+#Space|SpaceOutliner.show_restrict_columns -> show_restrict_columns: boolean "Show column"
+#Space|SpaceOutliner.use_filter_case_sensitive -> use_filter_case_sensitive: boolean "Only use case sensitive matches of search string"
+#Space|SpaceOutliner.use_filter_complete -> use_filter_complete: boolean "Only use complete matches of search string"
+#+ * Space|SpaceProperties.align -> align: enum "Arrangement of the panels"
+#+ * Space|SpaceProperties.context -> context: enum "Type of active data to display and edit"
+#+ * Space|SpaceProperties.pin_id -> pin_id: pointer "NO DESCRIPTION"
+#Space|SpaceProperties.show_brush_texture -> show_brush_texture: boolean "Show brush textures"
+#+ * Space|SpaceProperties.use_pin_id -> use_pin_id: boolean "Use the pinned context"
+#+ * Space|SpaceSequenceEditor.display_channel -> display_channel: int "The channel number shown in the image preview. 0 is the result of all strips combined"
+#+ * Space|SpaceSequenceEditor.display_mode -> display_mode: enum "The view mode to use for displaying sequencer output"
+#+ * Space|SpaceSequenceEditor.draw_overexposed -> draw_overexposed: int "Show overexposed areas with zebra stripes"
+#+ * Space|SpaceSequenceEditor.grease_pencil -> grease_pencil: pointer, "(read-only) Grease pencil data for this space"
+#+ * Space|SpaceSequenceEditor.offset_x -> offset_x: float "Offsets image horizontally from the view center"
+#+ * Space|SpaceSequenceEditor.offset_y -> offset_y: float "Offsets image horizontally from the view center"
+#+ * Space|SpaceSequenceEditor.proxy_render_size -> proxy_render_size: enum "Draw preview using full resolution or different proxy resolutions"
+#Space|SpaceSequenceEditor.show_frame_indicator -> show_frame_indicator: boolean "Show frame number beside the current frame indicator line"
+#Space|SpaceSequenceEditor.show_frames -> show_frames: boolean "Draw frames rather than seconds"
+#Space|SpaceSequenceEditor.show_safe_margin -> show_safe_margin: boolean "Draw title safe margins in preview"
+#Space|SpaceSequenceEditor.show_separate_color -> show_separate_color: boolean "Separate color channels in preview"
+#+ * Space|SpaceSequenceEditor.use_grease_pencil -> use_grease_pencil: boolean "Display and edit the grease pencil freehand annotations overlay"
+#+ * Space|SpaceSequenceEditor.use_marker_sync -> use_marker_sync: boolean "Transform markers as well as strips"
+#+ * Space|SpaceSequenceEditor.view_type -> view_type: enum "The type of the Sequencer view (sequencer, preview or both)"
+#+ * Space|SpaceSequenceEditor.zoom -> zoom: float "Display zoom level"
+#+ * Space|SpaceTextEditor.find_text -> find_text: string "Text to search for with the find tool"
+#+ * Space|SpaceTextEditor.font_size -> font_size: int "Font size to use for displaying the text"
+#+ * Space|SpaceTextEditor.replace_text -> replace_text: string "Text to replace selected text with using the replace tool"
+#Space|SpaceTextEditor.show_line_highlight -> show_line_highlight: boolean "Highlight the current line"
+#+ * Space|SpaceTextEditor.show_line_numbers -> show_line_numbers: boolean "Show line numbers next to the text"
+#+ * Space|SpaceTextEditor.show_syntax_highlight -> show_syntax_highlight: boolean "Syntax highlight for scripting"
+#+ * Space|SpaceTextEditor.show_word_wrap -> show_word_wrap: boolean "Wrap words if there is not enough horizontal space"
+#+ * Space|SpaceTextEditor.tab_width -> tab_width: int "Number of spaces to display tabs with"
+#+ * Space|SpaceTextEditor.text -> text: pointer "Text displayed and edited in this space"
+#Space|SpaceTextEditor.use_find_all -> use_find_all: boolean "Search in all text datablocks, instead of only the active one"
+#Space|SpaceTextEditor.use_find_wrap -> use_find_wrap: boolean "Search again from the start of the file when reaching the end"
+#Space|SpaceTextEditor.use_live_edit -> use_live_edit: boolean "Run python while editing"
+#Space|SpaceTextEditor.use_overwrite -> use_overwrite: boolean "Overwrite characters when typing rather than inserting them"
+#+ * Space|SpaceTimeline.cache_cloth -> cache_cloth: boolean "Show the active objects cloth point cache"
+#+ * Space|SpaceTimeline.cache_particles -> cache_particles: boolean "Show the active objects particle point cache"
+#+ * Space|SpaceTimeline.cache_smoke -> cache_smoke: boolean "Show the active objects smoke cache"
+#+ * Space|SpaceTimeline.cache_softbody -> cache_softbody: boolean "Show the active objects softbody point cache"
+#+ * Space|SpaceTimeline.show_cache -> show_cache: boolean "Show the status of cached frames in the timeline"
+#Space|SpaceTimeline.show_frame_indicator -> show_frame_indicator: boolean "Show frame number beside the current frame indicator line"
+#Space|SpaceTimeline.show_only_selected -> show_only_selected: boolean "Show keyframes for active Object and/or its selected channels only"
+#Space|SpaceTimeline.use_play_3d_editors -> use_play_3d_editors: boolean "NO DESCRIPTION"
+#Space|SpaceTimeline.use_play_animation_editors -> use_play_animation_editors: boolean "NO DESCRIPTION"
+#Space|SpaceTimeline.use_play_image_editors -> use_play_image_editors: boolean "NO DESCRIPTION"
+#Space|SpaceTimeline.use_play_node_editors -> use_play_node_editors: boolean "NO DESCRIPTION"
+#Space|SpaceTimeline.use_play_properties_editors -> use_play_properties_editors: boolean "NO DESCRIPTION"
+#Space|SpaceTimeline.use_play_sequence_editors -> use_play_sequence_editors: boolean "NO DESCRIPTION"
+#Space|SpaceTimeline.use_play_top_left_3d_editor -> use_play_top_left_3d_editor: boolean "NO DESCRIPTION"
+#Space|SpaceUserPreferences.filter_text -> filter_text: string "Search term for filtering in the UI"
+#+ * Space|SpaceView3D.background_images -> background_images: collection, "(read-only) List of background images"
+#+ * Space|SpaceView3D.camera -> camera: pointer "Active camera used in this view (when unlocked from the scenes active camera)"
+#+ * Space|SpaceView3D.clip_end -> clip_end: float "3D View far clipping distance"
+#+ * Space|SpaceView3D.clip_start -> clip_start: float "3D View near clipping distance"
+#+ * Space|SpaceView3D.current_orientation -> current_orientation: pointer, "(read-only) Current Transformation orientation"
+#+ * Space|SpaceView3D.cursor_location -> cursor_location: float[3] "3D cursor location for this view (dependent on local view setting)"
+#+ * Space|SpaceView3D.grid_lines -> grid_lines: int "The number of grid lines to display in perspective view"
+#+ * Space|SpaceView3D.grid_spacing -> grid_spacing: float "The distance between 3D View grid lines"
+#+ * Space|SpaceView3D.grid_subdivisions -> grid_subdivisions: int "The number of subdivisions between grid lines"
+#+ * Space|SpaceView3D.layers -> layers: boolean[20] "Layers visible in this 3D View"
+#Space|SpaceView3D.layers_used -> layers_used: boolean[20], "(read-only) Layers that contain something"
+#+ * Space|SpaceView3D.lens -> lens: float "Lens angle (mm) in perspective view"
+#+ * Space|SpaceView3D.local_view -> local_view: pointer, "(read-only) Display an isolated sub-set of objects, apart from the scene visibility"
+#+ * Space|SpaceView3D.lock_bone -> lock_bone: string "3D View center is locked to this bones position"
+#+ * Space|SpaceView3D.lock_camera_and_layers -> lock_camera_and_layers: boolean "Use the scenes active camera and layers in this view, rather than local layers"
+#+ * Space|SpaceView3D.lock_object -> lock_object: pointer "3D View center is locked to this objects position"
+#+ * Space|SpaceView3D.pivot_point -> pivot_point: enum "Pivot center for rotation/scaling"
+#+ * Space|SpaceView3D.region_3d -> region_3d: pointer, "(read-only) 3D region in this space, in case of quad view the camera region"
+#+ * Space|SpaceView3D.region_quadview -> region_quadview: pointer, "(read-only) 3D region that defines the quad view settings"
+#Space|SpaceView3D.show_all_objects_origin -> show_all_objects_origin: boolean "Show the object origin center dot for all (selected and unselected) objects"
+#Space|SpaceView3D.show_axis_x -> show_axis_x: boolean "Show the X axis line in perspective view"
+#Space|SpaceView3D.show_axis_y -> show_axis_y: boolean "Show the Y axis line in perspective view"
+#Space|SpaceView3D.show_axis_z -> show_axis_z: boolean "Show the Z axis line in perspective view"
+#Space|SpaceView3D.show_background_images -> show_background_images: boolean "Display reference images behind objects in the 3D View"
+#Space|SpaceView3D.show_floor -> show_floor: boolean "Show the ground plane grid in perspective view"
+#Space|SpaceView3D.show_manipulator -> show_manipulator: boolean "Use a 3D manipulator widget for controlling transforms"
+#Space|SpaceView3D.show_only_render -> show_only_render: boolean "Display only objects which will be rendered"
+#Space|SpaceView3D.show_outline_selected -> show_outline_selected: boolean "Show an outline highlight around selected objects in non-wireframe views"
+#Space|SpaceView3D.show_relationship_lines -> show_relationship_lines: boolean "Show dashed lines indicating parent or constraint relationships"
+#Space|SpaceView3D.show_textured_solid -> show_textured_solid: boolean "Display face-assigned textures in solid view"
+#+ * Space|SpaceView3D.transform_orientation -> transform_orientation: enum "Transformation orientation"
+#Space|SpaceView3D.use_manipulator_rotate -> use_manipulator_rotate: boolean "Use the manipulator for rotation transformations"
+#Space|SpaceView3D.use_manipulator_scale -> use_manipulator_scale: boolean "Use the manipulator for scale transformations"
+#Space|SpaceView3D.use_manipulator_translate -> use_manipulator_translate: boolean "Use the manipulator for movement transformations"
+#Space|SpaceView3D.use_occlude_geometry -> use_occlude_geometry: boolean "Limit selection to visible (clipped with depth buffer)"
+#Space|SpaceView3D.use_pivot_point_align -> use_pivot_point_align: boolean "Manipulate object centers only"
+#Space|SpaceView3D.viewport_shade -> viewport_shade: enum "Method to display/shade objects in the 3D View"
+#+ * Spline.bezier_points -> bezier_points: collection, "(read-only) Collection of points for bezier curves only"
+#+ * Spline.character_index -> character_index: int, "(read-only) Location of this character in the text data (only for text curves)"
+#+ * Spline.hide -> hide: boolean "Hide this curve in editmode"
+#+ * Spline.material_index -> material_index: int "NO DESCRIPTION"
+#+ * Spline.order_u -> order_u: int "Nurbs order in the U direction (For splines and surfaces), Higher values let points influence a greater area"
+#+ * Spline.order_v -> order_v: int "Nurbs order in the V direction (For surfaces only), Higher values let points influence a greater area"
+#+ * Spline.point_count_u -> point_count_u: int, "(read-only) Total number points for the curve or surface in the U direction"
+#+ * Spline.point_count_v -> point_count_v: int, "(read-only) Total number points for the surface on the V direction"
+#+ * Spline.points -> points: collection, "(read-only) Collection of points that make up this poly or nurbs spline"
+#+ * Spline.radius_interpolation -> radius_interpolation: enum "The type of radius interpolation for Bezier curves"
+#+ * Spline.resolution_u -> resolution_u: int "Curve or Surface subdivisions per segment"
+#+ * Spline.resolution_v -> resolution_v: int "Surface subdivisions per segment"
+#+ * Spline.tilt_interpolation -> tilt_interpolation: enum "The type of tilt interpolation for 3D, Bezier curves"
+#+ * Spline.type -> type: enum "The interpolation type for this curve element"
+#Spline.use_bezier_u -> use_bezier_u: boolean "Make this nurbs curve or surface act like a bezier spline in the U direction (Order U must be 3 or 4, Cyclic U must be disabled)"
+#Spline.use_bezier_v -> use_bezier_v: boolean "Make this nurbs surface act like a bezier spline in the V direction (Order V must be 3 or 4, Cyclic V must be disabled)"
+#Spline.use_cyclic_u -> use_cyclic_u: boolean "Make this curve or surface a closed loop in the U direction"
+#Spline.use_cyclic_v -> use_cyclic_v: boolean "Make this surface a closed loop in the V direction"
+#Spline.use_endpoint_u -> use_endpoint_u: boolean "Make this nurbs curve or surface meet the endpoints in the U direction (Cyclic U must be disabled)"
+#Spline.use_endpoint_v -> use_endpoint_v: boolean "Make this nurbs surface meet the endpoints in the V direction (Cyclic V must be disabled)"
+#Spline.use_smooth -> use_smooth: boolean "Smooth the normals of the surface or beveled curve"
+#+ * SplinePoint.co -> co: float[4] "Point coordinates"
+#+ * SplinePoint.hide -> hide: boolean "Visibility status"
+#+ * SplinePoint.radius -> radius: float, "(read-only) Radius for bevelling"
+#+ * SplinePoint.select -> select: boolean "Selection status"
+#+ * SplinePoint.tilt -> tilt: float "Tilt in 3D View"
+#+ * SplinePoint.weight -> weight: float "Nurbs weight"
+#+ * SplinePoint.weight_softbody -> weight_softbody: float "Softbody goal weight"
+#+ * Struct.base -> base: pointer, "(read-only) Struct definition this is derived from"
+#+ * Struct.description -> description: string, "(read-only) Description of the Structs purpose"
+#+ * Struct.functions -> functions: collection, "(read-only)"
+#+ * Struct.identifier -> identifier: string, "(read-only) Unique name used in the code and scripting"
+#+ * Struct.name -> name: string, "(read-only) Human readable name"
+#+ * Struct.name_property -> name_property: pointer, "(read-only) Property that gives the name of the struct"
+#+ * Struct.nested -> nested: pointer, "(read-only) Struct in which this struct is always nested, and to which it logically belongs"
+#+ * Struct.properties -> properties: collection, "(read-only) Properties in the struct"
+#+ * TexMapping.location -> location: float[3] "NO DESCRIPTION"
+#TexMapping.max -> max: float[3] "Maximum value for clipping"
+#TexMapping.min -> min: float[3] "Minimum value for clipping"
+#+ * TexMapping.rotation -> rotation: float[3] "NO DESCRIPTION"
+#+ * TexMapping.scale -> scale: float[3] "NO DESCRIPTION"
+#TexMapping.use_max -> use_max: boolean "Whether to use maximum clipping value"
+#TexMapping.use_min -> use_min: boolean "Whether to use minimum clipping value"
+#+ * TextBox.height -> height: float "NO DESCRIPTION"
+#+ * TextBox.width -> width: float "NO DESCRIPTION"
+#+ * TextBox.x -> x: float "NO DESCRIPTION"
+#+ * TextBox.y -> y: float "NO DESCRIPTION"
+#TextCharacterFormat.use_bold -> use_bold: boolean "NO DESCRIPTION"
+#TextCharacterFormat.use_italic -> use_italic: boolean "NO DESCRIPTION"
+#+ * TextCharacterFormat.use_small_caps -> use_small_caps: boolean "NO DESCRIPTION"
+#TextCharacterFormat.use_underline -> use_underline: boolean "NO DESCRIPTION"
+#+ * TextLine.body -> body: string "Text in the line"
+#TextMarker.character_index_end -> character_index_end: int, "(read-only) Start position of the marker in the line"
+#TextMarker.character_index_start -> character_index_start: int, "(read-only) Start position of the marker in the line"
+#+ * TextMarker.color -> color: float[4] "Color to display the marker with"
+#+ * TextMarker.group -> group: int, "(read-only)"
+#TextMarker.is_temporary -> is_temporary: boolean, "(read-only) Marker is temporary"
+#+ * TextMarker.line -> line: int, "(read-only) Line in which the marker is located"
+#TextMarker.use_edit_all -> use_edit_all: boolean, "(read-only) Edit all markers of the same group as one"
+#+ * TextureSlot.blend_type -> blend_type: enum "NO DESCRIPTION"
+#+ * TextureSlot.color -> color: float[3] "The default color for textures that dont return RGB"
+#+ * TextureSlot.default_value -> default_value: float "Value to use for Ref, Spec, Amb, Emit, Alpha, RayMir, TransLu and Hard"
+ + * TextureSlot.negate -> invert: boolean "Inverts the values of the texture to reverse its effect"
+#+ * TextureSlot.name -> name: string, "(read-only) Texture slot name"
+#+ * TextureSlot.offset -> offset: float[3] "Fine tunes texture mapping X, Y and Z locations"
+#+ * TextureSlot.output_node -> output_node: enum "Which output node to use, for node-based textures"
+ + * TextureSlot.size -> scale: float[3] "Sets scaling for the textures X, Y and Z sizes"
+#+ * TextureSlot.texture -> texture: pointer "Texture datablock used by this texture slot"
+#TextureSlot.use_rgb_to_intensity -> use_rgb_to_intensity: boolean "Converts texture RGB values to intensity (gray) values"
+#TextureSlot.use_stencil -> use_stencil: boolean "Use this texture as a blending value on the next texture"
+#+ * TextureSlot|BrushTextureSlot.angle -> angle: float "Defines brush texture rotation"
+#+ * TextureSlot|BrushTextureSlot.map_mode -> map_mode: enum "NO DESCRIPTION"
+#+ * TextureSlot|LampTextureSlot.color_factor -> color_factor: float "Amount texture affects color values"
+#+ * TextureSlot|LampTextureSlot.object -> object: pointer "Object to use for mapping with Object texture coordinates"
+#+ * TextureSlot|LampTextureSlot.shadow_factor -> shadow_factor: float "Amount texture affects shadow"
+#TextureSlot|LampTextureSlot.texture_coords -> texture_coords: enum "NO DESCRIPTION"
+#TextureSlot|LampTextureSlot.use_map_color -> use_map_color: boolean "Lets the texture affect the basic color of the lamp"
+#TextureSlot|LampTextureSlot.use_map_shadow -> use_map_shadow: boolean "Lets the texture affect the shadow color of the lamp"
+#+ * TextureSlot|MaterialTextureSlot.alpha_factor -> alpha_factor: float "Amount texture affects alpha"
+#+ * TextureSlot|MaterialTextureSlot.ambient_factor -> ambient_factor: float "Amount texture affects ambient"
+#TextureSlot|MaterialTextureSlot.color_emission_factor -> color_emission_factor: float "Amount texture affects emission color"
+#+ * TextureSlot|MaterialTextureSlot.density_factor -> density_factor: float "Amount texture affects density"
+#TextureSlot|MaterialTextureSlot.diffuse_color_factor -> diffuse_color_factor: float "Amount texture affects diffuse color"
+#+ * TextureSlot|MaterialTextureSlot.diffuse_factor -> diffuse_factor: float "Amount texture affects diffuse reflectivity"
+#+ * TextureSlot|MaterialTextureSlot.displacement_factor -> displacement_factor: float "Amount texture displaces the surface"
+#+ * TextureSlot|MaterialTextureSlot.emission_factor -> emission_factor: float "Amount texture affects emission"
+#+ * TextureSlot|MaterialTextureSlot.emit_factor -> emit_factor: float "Amount texture affects emission"
+#+ * TextureSlot|MaterialTextureSlot.hardness_factor -> hardness_factor: float "Amount texture affects hardness"
+#+ * TextureSlot|MaterialTextureSlot.mapping -> mapping: enum "NO DESCRIPTION"
+#TextureSlot|MaterialTextureSlot.mapping_x -> mapping_x: enum "NO DESCRIPTION"
+#TextureSlot|MaterialTextureSlot.mapping_y -> mapping_y: enum "NO DESCRIPTION"
+#TextureSlot|MaterialTextureSlot.mapping_z -> mapping_z: enum "NO DESCRIPTION"
+#+ * TextureSlot|MaterialTextureSlot.mirror_factor -> mirror_factor: float "Amount texture affects mirror color"
+#+ * TextureSlot|MaterialTextureSlot.normal_factor -> normal_factor: float "Amount texture affects normal values"
+#+ * TextureSlot|MaterialTextureSlot.normal_map_space -> normal_map_space: enum "NO DESCRIPTION"
+#+ * TextureSlot|MaterialTextureSlot.object -> object: pointer "Object to use for mapping with Object texture coordinates"
+#+ * TextureSlot|MaterialTextureSlot.raymir_factor -> raymir_factor: float "Amount texture affects ray mirror"
+#TextureSlot|MaterialTextureSlot.reflection_color_factor -> reflection_color_factor: float "Amount texture affects color of out-scattered light"
+#+ * TextureSlot|MaterialTextureSlot.reflection_factor -> reflection_factor: float "Amount texture affects brightness of out-scattered light"
+#+ * TextureSlot|MaterialTextureSlot.scattering_factor -> scattering_factor: float "Amount texture affects scattering"
+#TextureSlot|MaterialTextureSlot.specular_color_factor -> specular_color_factor: float "Amount texture affects specular color"
+#+ * TextureSlot|MaterialTextureSlot.specular_factor -> specular_factor: float "Amount texture affects specular reflectivity"
+#TextureSlot|MaterialTextureSlot.texture_coords -> texture_coords: enum "NO DESCRIPTION"
+#+ * TextureSlot|MaterialTextureSlot.translucency_factor -> translucency_factor: float "Amount texture affects translucency"
+#TextureSlot|MaterialTextureSlot.transmission_color_factor -> transmission_color_factor: float "Amount texture affects result color after light has been scattered/absorbed"
+#+ * TextureSlot|MaterialTextureSlot.use -> use: boolean "Enable this material texture slot"
+#TextureSlot|MaterialTextureSlot.use_from_dupli -> use_from_dupli: boolean "Duplis instanced from verts, faces or particles, inherit texture coordinate from their parent"
+#TextureSlot|MaterialTextureSlot.use_from_original -> use_from_original: boolean "Duplis derive their object coordinates from the original objects transformation"
+#TextureSlot|MaterialTextureSlot.use_map_alpha -> use_map_alpha: boolean "Causes the texture to affect the alpha value"
+#TextureSlot|MaterialTextureSlot.use_map_ambient -> use_map_ambient: boolean "Causes the texture to affect the value of ambient"
+#TextureSlot|MaterialTextureSlot.use_map_color_diffuse -> use_map_color_diffuse: boolean "Causes the texture to affect basic color of the material"
+#TextureSlot|MaterialTextureSlot.use_map_color_emission -> use_map_color_emission: boolean "Causes the texture to affect the color of emission"
+#TextureSlot|MaterialTextureSlot.use_map_color_reflection -> use_map_color_reflection: boolean "Causes the texture to affect the color of scattered light"
+#TextureSlot|MaterialTextureSlot.use_map_color_spec -> use_map_color_spec: boolean "Causes the texture to affect the specularity color"
+#TextureSlot|MaterialTextureSlot.use_map_color_transmission -> use_map_color_transmission: boolean "Causes the texture to affect the result color after other light has been scattered/absorbed"
+#TextureSlot|MaterialTextureSlot.use_map_density -> use_map_density: boolean "Causes the texture to affect the volumes density"
+#TextureSlot|MaterialTextureSlot.use_map_diffuse -> use_map_diffuse: boolean "Causes the texture to affect the value of the materials diffuse reflectivity"
+#TextureSlot|MaterialTextureSlot.use_map_displacement -> use_map_displacement: boolean "Let the texture displace the surface"
+#TextureSlot|MaterialTextureSlot.use_map_emission -> use_map_emission: boolean "Causes the texture to affect the volumes emission"
+#TextureSlot|MaterialTextureSlot.use_map_emit -> use_map_emit: boolean "Causes the texture to affect the emit value"
+#TextureSlot|MaterialTextureSlot.use_map_hardness -> use_map_hardness: boolean "Causes the texture to affect the hardness value"
+#TextureSlot|MaterialTextureSlot.use_map_mirror -> use_map_mirror: boolean "Causes the texture to affect the mirror color"
+#TextureSlot|MaterialTextureSlot.use_map_normal -> use_map_normal: boolean "Causes the texture to affect the rendered normal"
+#TextureSlot|MaterialTextureSlot.use_map_raymir -> use_map_raymir: boolean "Causes the texture to affect the ray-mirror value"
+#TextureSlot|MaterialTextureSlot.use_map_reflect -> use_map_reflect: boolean "Causes the texture to affect the reflected lights brightness"
+#TextureSlot|MaterialTextureSlot.use_map_scatter -> use_map_scatter: boolean "Causes the texture to affect the volumes scattering"
+#TextureSlot|MaterialTextureSlot.use_map_specular -> use_map_specular: boolean "Causes the texture to affect the value of specular reflectivity"
+#TextureSlot|MaterialTextureSlot.use_map_translucency -> use_map_translucency: boolean "Causes the texture to affect the translucency value"
+#TextureSlot|MaterialTextureSlot.use_map_warp -> use_map_warp: boolean "Let the texture warp texture coordinates of next channels"
+#TextureSlot|MaterialTextureSlot.use_old_bump -> use_old_bump: boolean "Use old bump mapping (backwards compatibility option)"
+#+ * TextureSlot|MaterialTextureSlot.uv_layer -> uv_layer: string "UV layer to use for mapping with UV texture coordinates"
+#+ * TextureSlot|MaterialTextureSlot.warp_factor -> warp_factor: float "Amount texture affects texture coordinates of next channels"
+#+ * TextureSlot|WorldTextureSlot.blend_factor -> blend_factor: float "Amount texture affects color progression of the background"
+#+ * TextureSlot|WorldTextureSlot.horizon_factor -> horizon_factor: float "Amount texture affects color of the horizon"
+#+ * TextureSlot|WorldTextureSlot.object -> object: pointer "Object to use for mapping with Object texture coordinates"
+#TextureSlot|WorldTextureSlot.texture_coords -> texture_coords: enum "Texture coordinates used to map the texture onto the background"
+#TextureSlot|WorldTextureSlot.use_map_blend -> use_map_blend: boolean "Affect the color progression of the background"
+#TextureSlot|WorldTextureSlot.use_map_horizon -> use_map_horizon: boolean "Affect the color of the horizon"
+#TextureSlot|WorldTextureSlot.use_map_zenith_down -> use_map_zenith_down: boolean "Affect the color of the zenith below"
+#TextureSlot|WorldTextureSlot.use_map_zenith_up -> use_map_zenith_up: boolean "Affect the color of the zenith above"
+#+ * TextureSlot|WorldTextureSlot.zenith_down_factor -> zenith_down_factor: float "Amount texture affects color of the zenith below"
+#+ * TextureSlot|WorldTextureSlot.zenith_up_factor -> zenith_up_factor: float "Amount texture affects color of the zenith above"
+#+ * Theme.bone_color_sets -> bone_color_sets: collection, "(read-only)"
+#+ * Theme.console -> console: pointer, "(read-only)"
+#+ * Theme.dopesheet_editor -> dopesheet_editor: pointer, "(read-only)"
+#+ * Theme.file_browser -> file_browser: pointer, "(read-only)"
+#+ * Theme.graph_editor -> graph_editor: pointer, "(read-only)"
+#+ * Theme.image_editor -> image_editor: pointer, "(read-only)"
+#+ * Theme.info -> info: pointer, "(read-only)"
+#+ * Theme.logic_editor -> logic_editor: pointer, "(read-only)"
+#+ * Theme.name -> name: string "Name of the theme"
+#+ * Theme.nla_editor -> nla_editor: pointer, "(read-only)"
+#+ * Theme.node_editor -> node_editor: pointer, "(read-only)"
+#+ * Theme.outliner -> outliner: pointer, "(read-only)"
+#+ * Theme.properties -> properties: pointer, "(read-only)"
+#+ * Theme.sequence_editor -> sequence_editor: pointer, "(read-only)"
+#+ * Theme.text_editor -> text_editor: pointer, "(read-only)"
+#+ * Theme.theme_area -> theme_area: enum "NO DESCRIPTION"
+#+ * Theme.timeline -> timeline: pointer, "(read-only)"
+#+ * Theme.user_interface -> user_interface: pointer, "(read-only)"
+#+ * Theme.user_preferences -> user_preferences: pointer, "(read-only)"
+#+ * Theme.view_3d -> view_3d: pointer, "(read-only)"
+#+ * ThemeAudioWindow.back -> back: float[3] "NO DESCRIPTION"
+#+ * ThemeAudioWindow.button -> button: float[3] "NO DESCRIPTION"
+#+ * ThemeAudioWindow.button_text -> button_text: float[3] "NO DESCRIPTION"
+#+ * ThemeAudioWindow.button_text_hi -> button_text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeAudioWindow.button_title -> button_title: float[3] "NO DESCRIPTION"
+#+ * ThemeAudioWindow.frame_current -> frame_current: float[3] "NO DESCRIPTION"
+#+ * ThemeAudioWindow.grid -> grid: float[3] "NO DESCRIPTION"
+#+ * ThemeAudioWindow.header -> header: float[3] "NO DESCRIPTION"
+#+ * ThemeAudioWindow.header_text -> header_text: float[3] "NO DESCRIPTION"
+#+ * ThemeAudioWindow.header_text_hi -> header_text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeAudioWindow.text -> text: float[3] "NO DESCRIPTION"
+#+ * ThemeAudioWindow.text_hi -> text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeAudioWindow.title -> title: float[3] "NO DESCRIPTION"
+#+ * ThemeAudioWindow.window_sliders -> window_sliders: float[3] "NO DESCRIPTION"
+#+ * ThemeBoneColorSet.active -> active: float[3] "Color used for active bones"
+#+ * ThemeBoneColorSet.normal -> normal: float[3] "Color used for the surface of bones"
+#+ * ThemeBoneColorSet.select -> select: float[3] "Color used for selected bones"
+#ThemeBoneColorSet.show_colored_constraints -> show_colored_constraints: boolean "Allow the use of colors indicating constraints/keyed status"
+#+ * ThemeConsole.back -> back: float[3] "NO DESCRIPTION"
+#+ * ThemeConsole.button -> button: float[3] "NO DESCRIPTION"
+#+ * ThemeConsole.button_text -> button_text: float[3] "NO DESCRIPTION"
+#+ * ThemeConsole.button_text_hi -> button_text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeConsole.button_title -> button_title: float[3] "NO DESCRIPTION"
+#+ * ThemeConsole.cursor -> cursor: float[3] "NO DESCRIPTION"
+#+ * ThemeConsole.header -> header: float[3] "NO DESCRIPTION"
+#+ * ThemeConsole.header_text -> header_text: float[3] "NO DESCRIPTION"
+#+ * ThemeConsole.header_text_hi -> header_text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeConsole.line_error -> line_error: float[3] "NO DESCRIPTION"
+#+ * ThemeConsole.line_info -> line_info: float[3] "NO DESCRIPTION"
+#+ * ThemeConsole.line_input -> line_input: float[3] "NO DESCRIPTION"
+#+ * ThemeConsole.line_output -> line_output: float[3] "NO DESCRIPTION"
+#+ * ThemeConsole.text -> text: float[3] "NO DESCRIPTION"
+#+ * ThemeConsole.text_hi -> text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeConsole.title -> title: float[3] "NO DESCRIPTION"
+#+ * ThemeDopeSheet.active_channels_group -> active_channels_group: float[3] "NO DESCRIPTION"
+#+ * ThemeDopeSheet.back -> back: float[3] "NO DESCRIPTION"
+#+ * ThemeDopeSheet.button -> button: float[3] "NO DESCRIPTION"
+#+ * ThemeDopeSheet.button_text -> button_text: float[3] "NO DESCRIPTION"
+#+ * ThemeDopeSheet.button_text_hi -> button_text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeDopeSheet.button_title -> button_title: float[3] "NO DESCRIPTION"
+#+ * ThemeDopeSheet.channel_group -> channel_group: float[3] "NO DESCRIPTION"
+#+ * ThemeDopeSheet.channels -> channels: float[3] "NO DESCRIPTION"
+#+ * ThemeDopeSheet.channels_selected -> channels_selected: float[3] "NO DESCRIPTION"
+#+ * ThemeDopeSheet.dopesheet_channel -> dopesheet_channel: float[3] "NO DESCRIPTION"
+#+ * ThemeDopeSheet.dopesheet_subchannel -> dopesheet_subchannel: float[3] "NO DESCRIPTION"
+#+ * ThemeDopeSheet.frame_current -> frame_current: float[3] "NO DESCRIPTION"
+#+ * ThemeDopeSheet.grid -> grid: float[3] "NO DESCRIPTION"
+#+ * ThemeDopeSheet.header -> header: float[3] "NO DESCRIPTION"
+#+ * ThemeDopeSheet.header_text -> header_text: float[3] "NO DESCRIPTION"
+#+ * ThemeDopeSheet.header_text_hi -> header_text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeDopeSheet.list -> list: float[3] "NO DESCRIPTION"
+#+ * ThemeDopeSheet.list_text -> list_text: float[3] "NO DESCRIPTION"
+#+ * ThemeDopeSheet.list_text_hi -> list_text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeDopeSheet.list_title -> list_title: float[3] "NO DESCRIPTION"
+#+ * ThemeDopeSheet.long_key -> long_key: float[3] "NO DESCRIPTION"
+#+ * ThemeDopeSheet.long_key_selected -> long_key_selected: float[3] "NO DESCRIPTION"
+#+ * ThemeDopeSheet.text -> text: float[3] "NO DESCRIPTION"
+#+ * ThemeDopeSheet.text_hi -> text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeDopeSheet.title -> title: float[3] "NO DESCRIPTION"
+#+ * ThemeDopeSheet.value_sliders -> value_sliders: float[3] "NO DESCRIPTION"
+#+ * ThemeDopeSheet.view_sliders -> view_sliders: float[3] "NO DESCRIPTION"
+#+ * ThemeFileBrowser.active_file -> active_file: float[3] "NO DESCRIPTION"
+#+ * ThemeFileBrowser.active_file_text -> active_file_text: float[3] "NO DESCRIPTION"
+#+ * ThemeFileBrowser.back -> back: float[3] "NO DESCRIPTION"
+#+ * ThemeFileBrowser.button -> button: float[3] "NO DESCRIPTION"
+#+ * ThemeFileBrowser.button_text -> button_text: float[3] "NO DESCRIPTION"
+#+ * ThemeFileBrowser.button_text_hi -> button_text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeFileBrowser.button_title -> button_title: float[3] "NO DESCRIPTION"
+#+ * ThemeFileBrowser.header -> header: float[3] "NO DESCRIPTION"
+#+ * ThemeFileBrowser.header_text -> header_text: float[3] "NO DESCRIPTION"
+#+ * ThemeFileBrowser.header_text_hi -> header_text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeFileBrowser.list -> list: float[3] "NO DESCRIPTION"
+#+ * ThemeFileBrowser.list_text -> list_text: float[3] "NO DESCRIPTION"
+#+ * ThemeFileBrowser.list_text_hi -> list_text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeFileBrowser.list_title -> list_title: float[3] "NO DESCRIPTION"
+#+ * ThemeFileBrowser.scroll_handle -> scroll_handle: float[3] "NO DESCRIPTION"
+#+ * ThemeFileBrowser.scrollbar -> scrollbar: float[3] "NO DESCRIPTION"
+#+ * ThemeFileBrowser.selected_file -> selected_file: float[3] "NO DESCRIPTION"
+#+ * ThemeFileBrowser.text -> text: float[3] "NO DESCRIPTION"
+#+ * ThemeFileBrowser.text_hi -> text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeFileBrowser.tiles -> tiles: float[3] "NO DESCRIPTION"
+#+ * ThemeFileBrowser.title -> title: float[3] "NO DESCRIPTION"
+#+ * ThemeFontStyle.font_kerning_style -> font_kerning_style: enum "Which style to use for font kerning"
+#+ * ThemeFontStyle.points -> points: int "NO DESCRIPTION"
+#+ * ThemeFontStyle.shadow -> shadow: int "Shadow size in pixels (0, 3 and 5 supported)"
+#ThemeFontStyle.shadow_offset_x -> shadow_offset_x: int "Shadow offset in pixels"
+#ThemeFontStyle.shadow_offset_y -> shadow_offset_y: int "Shadow offset in pixels"
+#+ * ThemeFontStyle.shadowalpha -> shadowalpha: float "NO DESCRIPTION"
+#+ * ThemeFontStyle.shadowcolor -> shadowcolor: float "Shadow color in grey value"
+#+ * ThemeGraphEditor.active_channels_group -> active_channels_group: float[3] "NO DESCRIPTION"
+#+ * ThemeGraphEditor.back -> back: float[3] "NO DESCRIPTION"
+#+ * ThemeGraphEditor.button -> button: float[3] "NO DESCRIPTION"
+#+ * ThemeGraphEditor.button_text -> button_text: float[3] "NO DESCRIPTION"
+#+ * ThemeGraphEditor.button_text_hi -> button_text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeGraphEditor.button_title -> button_title: float[3] "NO DESCRIPTION"
+#+ * ThemeGraphEditor.channel_group -> channel_group: float[3] "NO DESCRIPTION"
+#+ * ThemeGraphEditor.channels_region -> channels_region: float[3] "NO DESCRIPTION"
+#+ * ThemeGraphEditor.dopesheet_channel -> dopesheet_channel: float[3] "NO DESCRIPTION"
+#+ * ThemeGraphEditor.dopesheet_subchannel -> dopesheet_subchannel: float[3] "NO DESCRIPTION"
+#+ * ThemeGraphEditor.frame_current -> frame_current: float[3] "NO DESCRIPTION"
+#+ * ThemeGraphEditor.grid -> grid: float[3] "NO DESCRIPTION"
+#+ * ThemeGraphEditor.handle_align -> handle_align: float[3] "NO DESCRIPTION"
+#+ * ThemeGraphEditor.handle_auto -> handle_auto: float[3] "NO DESCRIPTION"
+#+ * ThemeGraphEditor.handle_free -> handle_free: float[3] "NO DESCRIPTION"
+#+ * ThemeGraphEditor.handle_sel_align -> handle_sel_align: float[3] "NO DESCRIPTION"
+#+ * ThemeGraphEditor.handle_sel_auto -> handle_sel_auto: float[3] "NO DESCRIPTION"
+#+ * ThemeGraphEditor.handle_sel_free -> handle_sel_free: float[3] "NO DESCRIPTION"
+#+ * ThemeGraphEditor.handle_sel_vect -> handle_sel_vect: float[3] "NO DESCRIPTION"
+#+ * ThemeGraphEditor.handle_vect -> handle_vect: float[3] "NO DESCRIPTION"
+#+ * ThemeGraphEditor.handle_vertex -> handle_vertex: float[3] "NO DESCRIPTION"
+#+ * ThemeGraphEditor.handle_vertex_select -> handle_vertex_select: float[3] "NO DESCRIPTION"
+#+ * ThemeGraphEditor.handle_vertex_size -> handle_vertex_size: int "NO DESCRIPTION"
+#+ * ThemeGraphEditor.header -> header: float[3] "NO DESCRIPTION"
+#+ * ThemeGraphEditor.header_text -> header_text: float[3] "NO DESCRIPTION"
+#+ * ThemeGraphEditor.header_text_hi -> header_text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeGraphEditor.lastsel_point -> lastsel_point: float[3] "NO DESCRIPTION"
+#+ * ThemeGraphEditor.list -> list: float[3] "NO DESCRIPTION"
+#+ * ThemeGraphEditor.list_text -> list_text: float[3] "NO DESCRIPTION"
+#+ * ThemeGraphEditor.list_text_hi -> list_text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeGraphEditor.list_title -> list_title: float[3] "NO DESCRIPTION"
+#+ * ThemeGraphEditor.panel -> panel: float[3] "NO DESCRIPTION"
+#+ * ThemeGraphEditor.text -> text: float[3] "NO DESCRIPTION"
+#+ * ThemeGraphEditor.text_hi -> text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeGraphEditor.title -> title: float[3] "NO DESCRIPTION"
+#+ * ThemeGraphEditor.vertex -> vertex: float[3] "NO DESCRIPTION"
+#+ * ThemeGraphEditor.vertex_select -> vertex_select: float[3] "NO DESCRIPTION"
+#+ * ThemeGraphEditor.vertex_size -> vertex_size: int "NO DESCRIPTION"
+#+ * ThemeGraphEditor.window_sliders -> window_sliders: float[3] "NO DESCRIPTION"
+#+ * ThemeImageEditor.back -> back: float[3] "NO DESCRIPTION"
+#+ * ThemeImageEditor.button -> button: float[3] "NO DESCRIPTION"
+#+ * ThemeImageEditor.button_text -> button_text: float[3] "NO DESCRIPTION"
+#+ * ThemeImageEditor.button_text_hi -> button_text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeImageEditor.button_title -> button_title: float[3] "NO DESCRIPTION"
+#+ * ThemeImageEditor.editmesh_active -> editmesh_active: float[4] "NO DESCRIPTION"
+#+ * ThemeImageEditor.face -> face: float[4] "NO DESCRIPTION"
+#+ * ThemeImageEditor.face_dot -> face_dot: float[3] "NO DESCRIPTION"
+#+ * ThemeImageEditor.face_select -> face_select: float[4] "NO DESCRIPTION"
+#+ * ThemeImageEditor.facedot_size -> facedot_size: int "NO DESCRIPTION"
+#+ * ThemeImageEditor.header -> header: float[3] "NO DESCRIPTION"
+#+ * ThemeImageEditor.header_text -> header_text: float[3] "NO DESCRIPTION"
+#+ * ThemeImageEditor.header_text_hi -> header_text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeImageEditor.scope_back -> scope_back: float[4] "NO DESCRIPTION"
+#+ * ThemeImageEditor.text -> text: float[3] "NO DESCRIPTION"
+#+ * ThemeImageEditor.text_hi -> text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeImageEditor.title -> title: float[3] "NO DESCRIPTION"
+#+ * ThemeImageEditor.vertex -> vertex: float[3] "NO DESCRIPTION"
+#+ * ThemeImageEditor.vertex_select -> vertex_select: float[3] "NO DESCRIPTION"
+#+ * ThemeImageEditor.vertex_size -> vertex_size: int "NO DESCRIPTION"
+#+ * ThemeInfo.back -> back: float[3] "NO DESCRIPTION"
+#+ * ThemeInfo.button -> button: float[3] "NO DESCRIPTION"
+#+ * ThemeInfo.button_text -> button_text: float[3] "NO DESCRIPTION"
+#+ * ThemeInfo.button_text_hi -> button_text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeInfo.button_title -> button_title: float[3] "NO DESCRIPTION"
+#+ * ThemeInfo.header -> header: float[3] "NO DESCRIPTION"
+#+ * ThemeInfo.header_text -> header_text: float[3] "NO DESCRIPTION"
+#+ * ThemeInfo.header_text_hi -> header_text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeInfo.text -> text: float[3] "NO DESCRIPTION"
+#+ * ThemeInfo.text_hi -> text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeInfo.title -> title: float[3] "NO DESCRIPTION"
+#+ * ThemeLogicEditor.back -> back: float[3] "NO DESCRIPTION"
+#+ * ThemeLogicEditor.button -> button: float[3] "NO DESCRIPTION"
+#+ * ThemeLogicEditor.button_text -> button_text: float[3] "NO DESCRIPTION"
+#+ * ThemeLogicEditor.button_text_hi -> button_text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeLogicEditor.button_title -> button_title: float[3] "NO DESCRIPTION"
+#+ * ThemeLogicEditor.header -> header: float[3] "NO DESCRIPTION"
+#+ * ThemeLogicEditor.header_text -> header_text: float[3] "NO DESCRIPTION"
+#+ * ThemeLogicEditor.header_text_hi -> header_text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeLogicEditor.panel -> panel: float[3] "NO DESCRIPTION"
+#+ * ThemeLogicEditor.text -> text: float[3] "NO DESCRIPTION"
+#+ * ThemeLogicEditor.text_hi -> text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeLogicEditor.title -> title: float[3] "NO DESCRIPTION"
+#+ * ThemeNLAEditor.back -> back: float[3] "NO DESCRIPTION"
+#+ * ThemeNLAEditor.bars -> bars: float[3] "NO DESCRIPTION"
+#+ * ThemeNLAEditor.bars_selected -> bars_selected: float[3] "NO DESCRIPTION"
+#+ * ThemeNLAEditor.button -> button: float[3] "NO DESCRIPTION"
+#+ * ThemeNLAEditor.button_text -> button_text: float[3] "NO DESCRIPTION"
+#+ * ThemeNLAEditor.button_text_hi -> button_text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeNLAEditor.button_title -> button_title: float[3] "NO DESCRIPTION"
+#+ * ThemeNLAEditor.frame_current -> frame_current: float[3] "NO DESCRIPTION"
+#+ * ThemeNLAEditor.grid -> grid: float[3] "NO DESCRIPTION"
+#+ * ThemeNLAEditor.header -> header: float[3] "NO DESCRIPTION"
+#+ * ThemeNLAEditor.header_text -> header_text: float[3] "NO DESCRIPTION"
+#+ * ThemeNLAEditor.header_text_hi -> header_text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeNLAEditor.list -> list: float[3] "NO DESCRIPTION"
+#+ * ThemeNLAEditor.list_text -> list_text: float[3] "NO DESCRIPTION"
+#+ * ThemeNLAEditor.list_text_hi -> list_text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeNLAEditor.list_title -> list_title: float[3] "NO DESCRIPTION"
+#+ * ThemeNLAEditor.strips -> strips: float[3] "NO DESCRIPTION"
+#+ * ThemeNLAEditor.strips_selected -> strips_selected: float[3] "NO DESCRIPTION"
+#+ * ThemeNLAEditor.text -> text: float[3] "NO DESCRIPTION"
+#+ * ThemeNLAEditor.text_hi -> text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeNLAEditor.title -> title: float[3] "NO DESCRIPTION"
+#+ * ThemeNLAEditor.view_sliders -> view_sliders: float[3] "NO DESCRIPTION"
+#+ * ThemeNodeEditor.back -> back: float[3] "NO DESCRIPTION"
+#+ * ThemeNodeEditor.button -> button: float[3] "NO DESCRIPTION"
+#+ * ThemeNodeEditor.button_text -> button_text: float[3] "NO DESCRIPTION"
+#+ * ThemeNodeEditor.button_text_hi -> button_text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeNodeEditor.button_title -> button_title: float[3] "NO DESCRIPTION"
+#+ * ThemeNodeEditor.converter_node -> converter_node: float[3] "NO DESCRIPTION"
+#+ * ThemeNodeEditor.group_node -> group_node: float[3] "NO DESCRIPTION"
+#+ * ThemeNodeEditor.header -> header: float[3] "NO DESCRIPTION"
+#+ * ThemeNodeEditor.header_text -> header_text: float[3] "NO DESCRIPTION"
+#+ * ThemeNodeEditor.header_text_hi -> header_text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeNodeEditor.in_out_node -> in_out_node: float[3] "NO DESCRIPTION"
+#+ * ThemeNodeEditor.list -> list: float[3] "NO DESCRIPTION"
+#+ * ThemeNodeEditor.list_text -> list_text: float[3] "NO DESCRIPTION"
+#+ * ThemeNodeEditor.list_text_hi -> list_text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeNodeEditor.list_title -> list_title: float[3] "NO DESCRIPTION"
+#+ * ThemeNodeEditor.node_backdrop -> node_backdrop: float[4] "NO DESCRIPTION"
+#+ * ThemeNodeEditor.operator_node -> operator_node: float[3] "NO DESCRIPTION"
+#+ * ThemeNodeEditor.selected_text -> selected_text: float[3] "NO DESCRIPTION"
+#+ * ThemeNodeEditor.text -> text: float[3] "NO DESCRIPTION"
+#+ * ThemeNodeEditor.text_hi -> text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeNodeEditor.title -> title: float[3] "NO DESCRIPTION"
+#ThemeNodeEditor.wire -> wire: float[3] "NO DESCRIPTION"
+#+ * ThemeNodeEditor.wire_select -> wire_select: float[3] "NO DESCRIPTION"
+#+ * ThemeOutliner.back -> back: float[3] "NO DESCRIPTION"
+#+ * ThemeOutliner.button -> button: float[3] "NO DESCRIPTION"
+#+ * ThemeOutliner.button_text -> button_text: float[3] "NO DESCRIPTION"
+#+ * ThemeOutliner.button_text_hi -> button_text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeOutliner.button_title -> button_title: float[3] "NO DESCRIPTION"
+#+ * ThemeOutliner.header -> header: float[3] "NO DESCRIPTION"
+#+ * ThemeOutliner.header_text -> header_text: float[3] "NO DESCRIPTION"
+#+ * ThemeOutliner.header_text_hi -> header_text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeOutliner.text -> text: float[3] "NO DESCRIPTION"
+#+ * ThemeOutliner.text_hi -> text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeOutliner.title -> title: float[3] "NO DESCRIPTION"
+#+ * ThemeProperties.back -> back: float[3] "NO DESCRIPTION"
+#+ * ThemeProperties.button -> button: float[3] "NO DESCRIPTION"
+#+ * ThemeProperties.button_text -> button_text: float[3] "NO DESCRIPTION"
+#+ * ThemeProperties.button_text_hi -> button_text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeProperties.button_title -> button_title: float[3] "NO DESCRIPTION"
+#+ * ThemeProperties.header -> header: float[3] "NO DESCRIPTION"
+#+ * ThemeProperties.header_text -> header_text: float[3] "NO DESCRIPTION"
+#+ * ThemeProperties.header_text_hi -> header_text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeProperties.panel -> panel: float[3] "NO DESCRIPTION"
+#+ * ThemeProperties.text -> text: float[3] "NO DESCRIPTION"
+#+ * ThemeProperties.text_hi -> text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeProperties.title -> title: float[3] "NO DESCRIPTION"
+#+ * ThemeSequenceEditor.audio_strip -> audio_strip: float[3] "NO DESCRIPTION"
+#+ * ThemeSequenceEditor.back -> back: float[3] "NO DESCRIPTION"
+#+ * ThemeSequenceEditor.button -> button: float[3] "NO DESCRIPTION"
+#+ * ThemeSequenceEditor.button_text -> button_text: float[3] "NO DESCRIPTION"
+#+ * ThemeSequenceEditor.button_text_hi -> button_text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeSequenceEditor.button_title -> button_title: float[3] "NO DESCRIPTION"
+#+ * ThemeSequenceEditor.draw_action -> draw_action: float[3] "NO DESCRIPTION"
+#+ * ThemeSequenceEditor.effect_strip -> effect_strip: float[3] "NO DESCRIPTION"
+#+ * ThemeSequenceEditor.frame_current -> frame_current: float[3] "NO DESCRIPTION"
+#+ * ThemeSequenceEditor.grid -> grid: float[3] "NO DESCRIPTION"
+#+ * ThemeSequenceEditor.header -> header: float[3] "NO DESCRIPTION"
+#+ * ThemeSequenceEditor.header_text -> header_text: float[3] "NO DESCRIPTION"
+#+ * ThemeSequenceEditor.header_text_hi -> header_text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeSequenceEditor.image_strip -> image_strip: float[3] "NO DESCRIPTION"
+#+ * ThemeSequenceEditor.keyframe -> keyframe: float[3] "NO DESCRIPTION"
+#+ * ThemeSequenceEditor.meta_strip -> meta_strip: float[3] "NO DESCRIPTION"
+#+ * ThemeSequenceEditor.movie_strip -> movie_strip: float[3] "NO DESCRIPTION"
+#+ * ThemeSequenceEditor.plugin_strip -> plugin_strip: float[3] "NO DESCRIPTION"
+#+ * ThemeSequenceEditor.scene_strip -> scene_strip: float[3] "NO DESCRIPTION"
+#+ * ThemeSequenceEditor.text -> text: float[3] "NO DESCRIPTION"
+#+ * ThemeSequenceEditor.text_hi -> text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeSequenceEditor.title -> title: float[3] "NO DESCRIPTION"
+#+ * ThemeSequenceEditor.transition_strip -> transition_strip: float[3] "NO DESCRIPTION"
+#+ * ThemeSequenceEditor.window_sliders -> window_sliders: float[3] "NO DESCRIPTION"
+#ThemeStyle.group_label -> group_label: pointer, "(read-only)"
+#ThemeStyle.panel_title -> panel_title: pointer, "(read-only)"
+#+ * ThemeStyle.panelzoom -> panelzoom: float "Default zoom level for panel areas"
+#+ * ThemeStyle.widget -> widget: pointer, "(read-only)"
+#ThemeStyle.widget_label -> widget_label: pointer, "(read-only)"
+#+ * ThemeTextEditor.back -> back: float[3] "NO DESCRIPTION"
+#+ * ThemeTextEditor.button -> button: float[3] "NO DESCRIPTION"
+#+ * ThemeTextEditor.button_text -> button_text: float[3] "NO DESCRIPTION"
+#+ * ThemeTextEditor.button_text_hi -> button_text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeTextEditor.button_title -> button_title: float[3] "NO DESCRIPTION"
+#+ * ThemeTextEditor.cursor -> cursor: float[3] "NO DESCRIPTION"
+#+ * ThemeTextEditor.header -> header: float[3] "NO DESCRIPTION"
+#+ * ThemeTextEditor.header_text -> header_text: float[3] "NO DESCRIPTION"
+#+ * ThemeTextEditor.header_text_hi -> header_text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeTextEditor.line_numbers_background -> line_numbers_background: float[3] "NO DESCRIPTION"
+#+ * ThemeTextEditor.scroll_bar -> scroll_bar: float[3] "NO DESCRIPTION"
+#+ * ThemeTextEditor.selected_text -> selected_text: float[3] "NO DESCRIPTION"
+#+ * ThemeTextEditor.syntax_builtin -> syntax_builtin: float[3] "NO DESCRIPTION"
+#+ * ThemeTextEditor.syntax_comment -> syntax_comment: float[3] "NO DESCRIPTION"
+#+ * ThemeTextEditor.syntax_numbers -> syntax_numbers: float[3] "NO DESCRIPTION"
+#+ * ThemeTextEditor.syntax_special -> syntax_special: float[3] "NO DESCRIPTION"
+#+ * ThemeTextEditor.syntax_string -> syntax_string: float[3] "NO DESCRIPTION"
+#+ * ThemeTextEditor.text -> text: float[3] "NO DESCRIPTION"
+#+ * ThemeTextEditor.text_hi -> text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeTextEditor.title -> title: float[3] "NO DESCRIPTION"
+#+ * ThemeTimeline.back -> back: float[3] "NO DESCRIPTION"
+#+ * ThemeTimeline.button -> button: float[3] "NO DESCRIPTION"
+#+ * ThemeTimeline.button_text -> button_text: float[3] "NO DESCRIPTION"
+#+ * ThemeTimeline.button_text_hi -> button_text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeTimeline.button_title -> button_title: float[3] "NO DESCRIPTION"
+#+ * ThemeTimeline.frame_current -> frame_current: float[3] "NO DESCRIPTION"
+#+ * ThemeTimeline.grid -> grid: float[3] "NO DESCRIPTION"
+#+ * ThemeTimeline.header -> header: float[3] "NO DESCRIPTION"
+#+ * ThemeTimeline.header_text -> header_text: float[3] "NO DESCRIPTION"
+#+ * ThemeTimeline.header_text_hi -> header_text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeTimeline.text -> text: float[3] "NO DESCRIPTION"
+#+ * ThemeTimeline.text_hi -> text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeTimeline.title -> title: float[3] "NO DESCRIPTION"
+#+ * ThemeUserInterface.icon_file -> icon_file: string "NO DESCRIPTION"
+#+ * ThemeUserInterface.wcol_box -> wcol_box: pointer, "(read-only)"
+#+ * ThemeUserInterface.wcol_list_item -> wcol_list_item: pointer, "(read-only)"
+#+ * ThemeUserInterface.wcol_menu -> wcol_menu: pointer, "(read-only)"
+#+ * ThemeUserInterface.wcol_menu_back -> wcol_menu_back: pointer, "(read-only)"
+#+ * ThemeUserInterface.wcol_menu_item -> wcol_menu_item: pointer, "(read-only)"
+#+ * ThemeUserInterface.wcol_num -> wcol_num: pointer, "(read-only)"
+#+ * ThemeUserInterface.wcol_numslider -> wcol_numslider: pointer, "(read-only)"
+#+ * ThemeUserInterface.wcol_option -> wcol_option: pointer, "(read-only)"
+#+ * ThemeUserInterface.wcol_progress -> wcol_progress: pointer, "(read-only)"
+#+ * ThemeUserInterface.wcol_pulldown -> wcol_pulldown: pointer, "(read-only)"
+#+ * ThemeUserInterface.wcol_radio -> wcol_radio: pointer, "(read-only)"
+#+ * ThemeUserInterface.wcol_regular -> wcol_regular: pointer, "(read-only)"
+#+ * ThemeUserInterface.wcol_scroll -> wcol_scroll: pointer, "(read-only)"
+#+ * ThemeUserInterface.wcol_state -> wcol_state: pointer, "(read-only)"
+#+ * ThemeUserInterface.wcol_text -> wcol_text: pointer, "(read-only)"
+#+ * ThemeUserInterface.wcol_toggle -> wcol_toggle: pointer, "(read-only)"
+#+ * ThemeUserInterface.wcol_tool -> wcol_tool: pointer, "(read-only)"
+#+ * ThemeUserPreferences.back -> back: float[3] "NO DESCRIPTION"
+#+ * ThemeUserPreferences.button -> button: float[3] "NO DESCRIPTION"
+#+ * ThemeUserPreferences.button_text -> button_text: float[3] "NO DESCRIPTION"
+#+ * ThemeUserPreferences.button_text_hi -> button_text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeUserPreferences.button_title -> button_title: float[3] "NO DESCRIPTION"
+#+ * ThemeUserPreferences.header -> header: float[3] "NO DESCRIPTION"
+#+ * ThemeUserPreferences.header_text -> header_text: float[3] "NO DESCRIPTION"
+#+ * ThemeUserPreferences.header_text_hi -> header_text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeUserPreferences.text -> text: float[3] "NO DESCRIPTION"
+#+ * ThemeUserPreferences.text_hi -> text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeUserPreferences.title -> title: float[3] "NO DESCRIPTION"
+#+ * ThemeView3D.act_spline -> act_spline: float[3] "NO DESCRIPTION"
+#+ * ThemeView3D.back -> back: float[3] "NO DESCRIPTION"
+#+ * ThemeView3D.bone_pose -> bone_pose: float[3] "NO DESCRIPTION"
+#+ * ThemeView3D.bone_solid -> bone_solid: float[3] "NO DESCRIPTION"
+#+ * ThemeView3D.button -> button: float[3] "NO DESCRIPTION"
+#+ * ThemeView3D.button_text -> button_text: float[3] "NO DESCRIPTION"
+#+ * ThemeView3D.button_text_hi -> button_text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeView3D.button_title -> button_title: float[3] "NO DESCRIPTION"
+#+ * ThemeView3D.edge_crease -> edge_crease: float[3] "NO DESCRIPTION"
+#+ * ThemeView3D.edge_facesel -> edge_facesel: float[3] "NO DESCRIPTION"
+#+ * ThemeView3D.edge_seam -> edge_seam: float[3] "NO DESCRIPTION"
+#+ * ThemeView3D.edge_select -> edge_select: float[3] "NO DESCRIPTION"
+#+ * ThemeView3D.edge_sharp -> edge_sharp: float[3] "NO DESCRIPTION"
+#+ * ThemeView3D.editmesh_active -> editmesh_active: float[4] "NO DESCRIPTION"
+#+ * ThemeView3D.face -> face: float[4] "NO DESCRIPTION"
+#+ * ThemeView3D.face_dot -> face_dot: float[3] "NO DESCRIPTION"
+#+ * ThemeView3D.face_select -> face_select: float[4] "NO DESCRIPTION"
+#+ * ThemeView3D.facedot_size -> facedot_size: int "NO DESCRIPTION"
+#+ * ThemeView3D.frame_current -> frame_current: float[3] "NO DESCRIPTION"
+#+ * ThemeView3D.grid -> grid: float[3] "NO DESCRIPTION"
+#+ * ThemeView3D.handle_align -> handle_align: float[3] "NO DESCRIPTION"
+#+ * ThemeView3D.handle_auto -> handle_auto: float[3] "NO DESCRIPTION"
+#+ * ThemeView3D.handle_free -> handle_free: float[3] "NO DESCRIPTION"
+#+ * ThemeView3D.handle_sel_align -> handle_sel_align: float[3] "NO DESCRIPTION"
+#+ * ThemeView3D.handle_sel_auto -> handle_sel_auto: float[3] "NO DESCRIPTION"
+#+ * ThemeView3D.handle_sel_free -> handle_sel_free: float[3] "NO DESCRIPTION"
+#+ * ThemeView3D.handle_sel_vect -> handle_sel_vect: float[3] "NO DESCRIPTION"
+#+ * ThemeView3D.handle_vect -> handle_vect: float[3] "NO DESCRIPTION"
+#+ * ThemeView3D.header -> header: float[3] "NO DESCRIPTION"
+#+ * ThemeView3D.header_text -> header_text: float[3] "NO DESCRIPTION"
+#+ * ThemeView3D.header_text_hi -> header_text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeView3D.lamp -> lamp: float[4] "NO DESCRIPTION"
+#+ * ThemeView3D.lastsel_point -> lastsel_point: float[3] "NO DESCRIPTION"
+#+ * ThemeView3D.normal -> normal: float[3] "NO DESCRIPTION"
+#+ * ThemeView3D.nurb_sel_uline -> nurb_sel_uline: float[3] "NO DESCRIPTION"
+#+ * ThemeView3D.nurb_sel_vline -> nurb_sel_vline: float[3] "NO DESCRIPTION"
+#+ * ThemeView3D.nurb_uline -> nurb_uline: float[3] "NO DESCRIPTION"
+#+ * ThemeView3D.nurb_vline -> nurb_vline: float[3] "NO DESCRIPTION"
+#+ * ThemeView3D.object_active -> object_active: float[3] "NO DESCRIPTION"
+#+ * ThemeView3D.object_grouped -> object_grouped: float[3] "NO DESCRIPTION"
+#+ * ThemeView3D.object_grouped_active -> object_grouped_active: float[3] "NO DESCRIPTION"
+#+ * ThemeView3D.object_selected -> object_selected: float[3] "NO DESCRIPTION"
+#+ * ThemeView3D.panel -> panel: float[4] "NO DESCRIPTION"
+#+ * ThemeView3D.text -> text: float[3] "NO DESCRIPTION"
+#+ * ThemeView3D.text_hi -> text_hi: float[3] "NO DESCRIPTION"
+#+ * ThemeView3D.title -> title: float[3] "NO DESCRIPTION"
+#+ * ThemeView3D.transform -> transform: float[3] "NO DESCRIPTION"
+#+ * ThemeView3D.vertex -> vertex: float[3] "NO DESCRIPTION"
+#+ * ThemeView3D.vertex_normal -> vertex_normal: float[3] "NO DESCRIPTION"
+#+ * ThemeView3D.vertex_select -> vertex_select: float[3] "NO DESCRIPTION"
+#+ * ThemeView3D.vertex_size -> vertex_size: int "NO DESCRIPTION"
+#+ * ThemeView3D.wire -> wire: float[3] "NO DESCRIPTION"
+#+ * ThemeWidgetColors.inner -> inner: float[4] "NO DESCRIPTION"
+#+ * ThemeWidgetColors.inner_sel -> inner_sel: float[4] "NO DESCRIPTION"
+#+ * ThemeWidgetColors.item -> item: float[4] "NO DESCRIPTION"
+#+ * ThemeWidgetColors.outline -> outline: float[3] "NO DESCRIPTION"
+#+ * ThemeWidgetColors.shadedown -> shadedown: int "NO DESCRIPTION"
+#+ * ThemeWidgetColors.shadetop -> shadetop: int "NO DESCRIPTION"
+#ThemeWidgetColors.show_shaded -> show_shaded: boolean "NO DESCRIPTION"
+#+ * ThemeWidgetColors.text -> text: float[3] "NO DESCRIPTION"
+#+ * ThemeWidgetColors.text_sel -> text_sel: float[3] "NO DESCRIPTION"
+#+ * ThemeWidgetStateColors.blend -> blend: float "NO DESCRIPTION"
+#+ * ThemeWidgetStateColors.inner_anim -> inner_anim: float[3] "NO DESCRIPTION"
+#+ * ThemeWidgetStateColors.inner_anim_sel -> inner_anim_sel: float[3] "NO DESCRIPTION"
+#+ * ThemeWidgetStateColors.inner_driven -> inner_driven: float[3] "NO DESCRIPTION"
+#+ * ThemeWidgetStateColors.inner_driven_sel -> inner_driven_sel: float[3] "NO DESCRIPTION"
+#+ * ThemeWidgetStateColors.inner_key -> inner_key: float[3] "NO DESCRIPTION"
+#+ * ThemeWidgetStateColors.inner_key_sel -> inner_key_sel: float[3] "NO DESCRIPTION"
+#+ * TimelineMarker.camera -> camera: pointer "Camera this timeline sets to active"
+#+ * TimelineMarker.frame -> frame: int "The frame on which the timeline marker appears"
+#+ * TimelineMarker.name -> name: string "NO DESCRIPTION"
+#+ * TimelineMarker.select -> select: boolean "Marker selection state"
+#ToolSettings.auto_keying_mode -> auto_keying_mode: enum "Mode of automatic keyframe insertion for Objects and Bones"
+#+ * ToolSettings.edge_path_mode -> edge_path_mode: enum "The edge flag to tag when selecting the shortest path"
+#+ * ToolSettings.etch_adaptive_limit -> etch_adaptive_limit: float "Number of bones in the subdivided stroke"
+#+ * ToolSettings.etch_convert_mode -> etch_convert_mode: enum "Method used to convert stroke to bones"
+#+ * ToolSettings.etch_length_limit -> etch_length_limit: float "Number of bones in the subdivided stroke"
+#+ * ToolSettings.etch_number -> etch_number: string "DOC BROKEN"
+#+ * ToolSettings.etch_roll_mode -> etch_roll_mode: enum "Method used to adjust the roll of bones when retargeting"
+#+ * ToolSettings.etch_side -> etch_side: string "DOC BROKEN"
+#+ * ToolSettings.etch_subdivision_number -> etch_subdivision_number: int "Number of bones in the subdivided stroke"
+#+ * ToolSettings.etch_template -> etch_template: pointer "Template armature that will be retargeted to the stroke"
+#+ * ToolSettings.image_paint -> image_paint: pointer, "(read-only)"
+#ToolSettings.mesh_select_mode -> mesh_select_mode: boolean[3] "Which mesh elements selection works on"
+#+ * ToolSettings.normal_size -> normal_size: float "Display size for normals in the 3D view"
+#+ * ToolSettings.particle_edit -> particle_edit: pointer, "(read-only)"
+#ToolSettings.proportional_edit -> proportional_edit: enum "Proportional editing mode"
+#ToolSettings.proportional_edit_falloff -> proportional_edit_falloff: enum "Falloff type for proportional editing mode"
+#+ * ToolSettings.sculpt -> sculpt: pointer, "(read-only)"
+#+ * ToolSettings.sculpt_paint_use_unified_size -> sculpt_paint_use_unified_size: boolean "Instead of per brush radius, the radius is shared across brushes"
+#+ * ToolSettings.sculpt_paint_use_unified_strength -> sculpt_paint_use_unified_strength: boolean "Instead of per brush strength, the strength is shared across brushes"
+#ToolSettings.show_uv_local_view -> show_uv_local_view: boolean "Draw only faces with the currently displayed image assigned"
+#+ * ToolSettings.snap_element -> snap_element: enum "Type of element to snap to"
+#+ * ToolSettings.snap_target -> snap_target: enum "Which part to snap onto the target"
+#ToolSettings.use_auto_normalize -> use_auto_normalize: boolean "Ensure all bone-deforming vertex groups add up to 1.0 while weight painting"
+#ToolSettings.use_bone_sketching -> use_bone_sketching: boolean "DOC BROKEN"
+#ToolSettings.use_etch_autoname -> use_etch_autoname: boolean "DOC BROKEN"
+#ToolSettings.use_etch_overdraw -> use_etch_overdraw: boolean "DOC BROKEN"
+#ToolSettings.use_etch_quick -> use_etch_quick: boolean "DOC BROKEN"
+#ToolSettings.use_keyframe_insert_auto -> use_keyframe_insert_auto: boolean "Automatic keyframe insertion for Objects and Bones"
+#ToolSettings.use_mesh_automerge -> use_mesh_automerge: boolean "Automatically merge vertices moved to the same location"
+#ToolSettings.use_proportional_edit_objects -> use_proportional_edit_objects: boolean "Proportional editing object mode"
+#ToolSettings.use_record_with_nla -> use_record_with_nla: boolean "Add a new NLA Track + Strip for every loop/pass made over the animation to allow non-destructive tweaking"
+#ToolSettings.use_snap -> use_snap: boolean "Snap during transform"
+#ToolSettings.use_snap_align_rotation -> use_snap_align_rotation: boolean "Align rotation with the snapping target"
+#ToolSettings.use_snap_peel_object -> use_snap_peel_object: boolean "Consider objects as whole when finding volume center"
+#ToolSettings.use_snap_project -> use_snap_project: boolean "Project vertices on the surface of other objects"
+#ToolSettings.use_uv_select_sync -> use_uv_select_sync: boolean "Keep UV and edit mode mesh selection in sync"
+#ToolSettings.uv_select_mode -> uv_select_mode: enum "UV selection and display mode"
+#+ * ToolSettings.vertex_group_weight -> vertex_group_weight: float "Weight to assign in vertex groups"
+#+ * ToolSettings.vertex_paint -> vertex_paint: pointer, "(read-only)"
+#+ * ToolSettings.weight_paint -> weight_paint: pointer, "(read-only)"
+#+ * TransformOrientation.matrix -> matrix: float[9] "NO DESCRIPTION"
+#+ * TransformOrientation.name -> name: string "NO DESCRIPTION"
+#+ * UILayout.alignment -> alignment: enum "NO DESCRIPTION"
+#+ * UILayout.operator_context -> operator_context: enum "NO DESCRIPTION"
+#+ * UILayout.scale_x -> scale_x: float "Scale factor along the X for items in this (sub)layout."
+#+ * UILayout.scale_y -> scale_y: float "Scale factor along the Y for items in this (sub)layout."
+ + * UILayout.active -> show_active: boolean "NO DESCRIPTION"
+ + * UILayout.enabled -> show_enabled: boolean "When false, this (sub)layout is greyed out."
+#+ * UVProjector.object -> object: pointer "Object to use as projector transform"
+#+ * UnitSettings.rotation_units -> rotation_units: enum "Unit to use for displaying/editing rotation values"
+#+ * UnitSettings.scale_length -> scale_length: float "Scale to use when converting between blender units and dimensions"
+#+ * UnitSettings.system -> system: enum "The unit system to use for button display"
+#+ * UnitSettings.use_separate -> use_separate: boolean "Display units in pairs"
+#+ * UserPreferences.active_section -> active_section: enum "Active section of the user preferences shown in the user interface"
+#+ * UserPreferences.addons -> addons: collection, "(read-only)"
+#+ * UserPreferences.edit -> edit: pointer, "(read-only) Settings for interacting with Blender data"
+#+ * UserPreferences.filepaths -> filepaths: pointer, "(read-only) Default paths for external files"
+#+ * UserPreferences.inputs -> inputs: pointer, "(read-only) Settings for input devices"
+#+ * UserPreferences.system -> system: pointer, "(read-only) Graphics driver and operating system settings"
+#+ * UserPreferences.themes -> themes: collection, "(read-only)"
+#UserPreferences.ui_styles -> ui_styles: collection, "(read-only)"
+#+ * UserPreferences.view -> view: pointer, "(read-only) Preferences related to viewing data"
+#+ * UserPreferencesEdit.auto_keying_mode -> auto_keying_mode: enum "Mode of automatic keyframe insertion for Objects and Bones"
+#+ * UserPreferencesEdit.grease_pencil_eraser_radius -> grease_pencil_eraser_radius: int "Radius of eraser brush"
+#+ * UserPreferencesEdit.grease_pencil_euclidean_distance -> grease_pencil_euclidean_distance: int "Distance moved by mouse when drawing stroke (in pixels) to include"
+#+ * UserPreferencesEdit.grease_pencil_manhattan_distance -> grease_pencil_manhattan_distance: int "Pixels moved by mouse per axis when drawing stroke"
+#+ * UserPreferencesEdit.keyframe_new_handle_type -> keyframe_new_handle_type: enum "NO DESCRIPTION"
+#+ * UserPreferencesEdit.keyframe_new_interpolation_type -> keyframe_new_interpolation_type: enum "NO DESCRIPTION"
+#+ * UserPreferencesEdit.material_link -> material_link: enum "Toggle whether the material is linked to object data or the object block"
+#+ * UserPreferencesEdit.object_align -> object_align: enum "When adding objects from a 3D View menu, either align them to that views direction or the world coordinates"
+#UserPreferencesEdit.sculpt_paint_overlay_color -> sculpt_paint_overlay_color: float[3] "Color of texture overlay"
+#+ * UserPreferencesEdit.undo_memory_limit -> undo_memory_limit: int "Maximum memory usage in megabytes (0 means unlimited)"
+#+ * UserPreferencesEdit.undo_steps -> undo_steps: int "Number of undo steps available (smaller values conserve memory)"
+#+ * UserPreferencesEdit.use_auto_keying -> use_auto_keying: boolean "Automatic keyframe insertion for Objects and Bones"
+#UserPreferencesEdit.use_drag_immediately -> use_drag_immediately: boolean "Moving things with a mouse drag confirms when releasing the button"
+#UserPreferencesEdit.use_duplicate_action -> use_duplicate_action: boolean "Causes actions to be duplicated with the object"
+#UserPreferencesEdit.use_duplicate_armature -> use_duplicate_armature: boolean "Causes armature data to be duplicated with the object"
+#UserPreferencesEdit.use_duplicate_curve -> use_duplicate_curve: boolean "Causes curve data to be duplicated with the object"
+#UserPreferencesEdit.use_duplicate_fcurve -> use_duplicate_fcurve: boolean "Causes F-curve data to be duplicated with the object"
+#UserPreferencesEdit.use_duplicate_lamp -> use_duplicate_lamp: boolean "Causes lamp data to be duplicated with the object"
+#UserPreferencesEdit.use_duplicate_material -> use_duplicate_material: boolean "Causes material data to be duplicated with the object"
+#UserPreferencesEdit.use_duplicate_mesh -> use_duplicate_mesh: boolean "Causes mesh data to be duplicated with the object"
+#UserPreferencesEdit.use_duplicate_metaball -> use_duplicate_metaball: boolean "Causes metaball data to be duplicated with the object"
+#UserPreferencesEdit.use_duplicate_particle -> use_duplicate_particle: boolean "Causes particle systems to be duplicated with the object"
+#UserPreferencesEdit.use_duplicate_surface -> use_duplicate_surface: boolean "Causes surface data to be duplicated with the object"
+#UserPreferencesEdit.use_duplicate_text -> use_duplicate_text: boolean "Causes text data to be duplicated with the object"
+#UserPreferencesEdit.use_duplicate_texture -> use_duplicate_texture: boolean "Causes texture data to be duplicated with the object"
+#UserPreferencesEdit.use_enter_edit_mode -> use_enter_edit_mode: boolean "Enter Edit Mode automatically after adding a new object"
+#UserPreferencesEdit.use_global_undo -> use_global_undo: boolean "Global undo works by keeping a full copy of the file itself in memory, so takes extra memory"
+#UserPreferencesEdit.use_grease_pencil_simplify_stroke -> use_grease_pencil_simplify_stroke: boolean "Simplify the final stroke"
+#UserPreferencesEdit.use_grease_pencil_smooth_stroke -> use_grease_pencil_smooth_stroke: boolean "Smooth the final stroke"
+#UserPreferencesEdit.use_insertkey_xyz_to_rgb -> use_insertkey_xyz_to_rgb: boolean "Color for newly added transformation F-Curves (Location, Rotation, Scale) and also Color is based on the transform axis"
+#UserPreferencesEdit.use_keyframe_insert_available -> use_keyframe_insert_available: boolean "Automatic keyframe insertion in available curves"
+#UserPreferencesEdit.use_keyframe_insert_keyingset -> use_keyframe_insert_keyingset: boolean "Automatic keyframe insertion using active Keying Set"
+#UserPreferencesEdit.use_keyframe_insert_needed -> use_keyframe_insert_needed: boolean "Keyframe insertion only when keyframe needed"
+#+ * UserPreferencesEdit.use_negative_frames -> use_negative_frames: boolean "Current frame number can be manually set to a negative value"
+#+ * UserPreferencesEdit.use_visual_keying -> use_visual_keying: boolean "Use Visual keying automatically for constrained objects"
+#+ * UserPreferencesFilePaths.animation_player -> animation_player: string "Path to a custom animation/frame sequence player"
+#+ * UserPreferencesFilePaths.animation_player_preset -> animation_player_preset: enum "Preset configs for external animation players"
+#+ * UserPreferencesFilePaths.auto_save_time -> auto_save_time: int "The time (in minutes) to wait between automatic temporary saves"
+#UserPreferencesFilePaths.font_directory -> font_directory: string "The default directory to search for loading fonts"
+#+ * UserPreferencesFilePaths.image_editor -> image_editor: string "Path to an image editor"
+#+ * UserPreferencesFilePaths.recent_files -> recent_files: int "Maximum number of recently opened files to remember"
+#+ * UserPreferencesFilePaths.render_output_directory -> render_output_directory: string "The default directory for rendering output"
+#+ * UserPreferencesFilePaths.save_version -> save_version: int "The number of old versions to maintain in the current directory, when manually saving"
+#UserPreferencesFilePaths.script_directory -> script_directory: string "The default directory to search for Python scripts (resets python module search path: sys.path)"
+#+ * UserPreferencesFilePaths.sequence_plugin_directory -> sequence_plugin_directory: string "The default directory to search for sequence plugins"
+#UserPreferencesFilePaths.show_hidden_files_datablocks -> show_hidden_files_datablocks: boolean "Hide files/datablocks that start with a dot(.*)"
+#UserPreferencesFilePaths.sound_directory -> sound_directory: string "The default directory to search for sounds"
+#+ * UserPreferencesFilePaths.temporary_directory -> temporary_directory: string "The directory for storing temporary save files"
+#UserPreferencesFilePaths.texture_directory -> texture_directory: string "The default directory to search for textures"
+#+ * UserPreferencesFilePaths.texture_plugin_directory -> texture_plugin_directory: string "The default directory to search for texture plugins"
+#UserPreferencesFilePaths.use_auto_save_temporary_files -> use_auto_save_temporary_files: boolean "Automatic saving of temporary files"
+#UserPreferencesFilePaths.use_file_compression -> use_file_compression: boolean "Enable file compression when saving .blend files"
+#UserPreferencesFilePaths.use_filter_files -> use_filter_files: boolean "Display only files with extensions in the image select window"
+#UserPreferencesFilePaths.use_load_ui -> use_load_ui: boolean "Load user interface setup when loading .blend files"
+#+ * UserPreferencesFilePaths.use_relative_paths -> use_relative_paths: boolean "Default relative path option for the file selector"
+#UserPreferencesFilePaths.use_save_preview_images -> use_save_preview_images: boolean "Enables automatic saving of preview images in the .blend file"
+#+ * UserPreferencesInput.edited_keymaps -> edited_keymaps: collection, "(read-only)"
+#UserPreferencesInput.invert_mouse_wheel_zoom -> invert_mouse_wheel_zoom: boolean "Invert the axis of mouse movement for zooming"
+#UserPreferencesInput.invert_zoom_wheel -> invert_zoom_wheel: boolean "Swap the Mouse Wheel zoom direction"
+#UserPreferencesInput.mouse_double_click_time -> mouse_double_click_time: int "The time (in ms) for a double click"
+#+ * UserPreferencesInput.ndof_pan_speed -> ndof_pan_speed: int "The overall panning speed of an NDOF device, as percent of standard"
+#+ * UserPreferencesInput.ndof_rotate_speed -> ndof_rotate_speed: int "The overall rotation speed of an NDOF device, as percent of standard"
+#+ * UserPreferencesInput.select_mouse -> select_mouse: enum "The mouse button used for selection"
+#UserPreferencesInput.use_emulate_numpad -> use_emulate_numpad: boolean "Causes the 1 to 0 keys to act as the numpad (useful for laptops)"
+#UserPreferencesInput.use_mouse_continuous -> use_mouse_continuous: boolean "Allow moving the mouse outside the view on some manipulations (transform, ui control drag)"
+#UserPreferencesInput.use_mouse_emulate_3_button -> use_mouse_emulate_3_button: boolean "Emulates Middle Mouse with Alt+LeftMouse (doesnt work with Left Mouse Select option)"
+#UserPreferencesInput.use_mouse_mmb_paste -> use_mouse_mmb_paste: boolean "In text window, paste with middle mouse button instead of panning"
+#UserPreferencesInput.view_rotate_method -> view_rotate_method: enum "Rotation style in the viewport"
+#UserPreferencesInput.view_zoom_axis -> view_zoom_axis: enum "Axis of mouse movement to zoom in or out on"
+#UserPreferencesInput.view_zoom_method -> view_zoom_method: enum "Which style to use for viewport scaling"
+#+ * UserPreferencesInput.wheel_scroll_lines -> wheel_scroll_lines: int "The number of lines scrolled at a time with the mouse wheel"
+#+ * UserPreferencesSystem.audio_channels -> audio_channels: enum "Sets the audio channel count"
+#+ * UserPreferencesSystem.audio_device -> audio_device: enum "Sets the audio output device"
+#+ * UserPreferencesSystem.audio_mixing_buffer -> audio_mixing_buffer: enum "Sets the number of samples used by the audio mixing buffer"
+#+ * UserPreferencesSystem.audio_sample_format -> audio_sample_format: enum "Sets the audio sample format"
+#+ * UserPreferencesSystem.audio_sample_rate -> audio_sample_rate: enum "Sets the audio sample rate"
+#+ * UserPreferencesSystem.color_picker_type -> color_picker_type: enum "Different styles of displaying the color picker widget"
+#+ * UserPreferencesSystem.dpi -> dpi: int "Font size and resolution for display"
+#+ * UserPreferencesSystem.frame_server_port -> frame_server_port: int "Frameserver Port for Frameserver Rendering"
+#UserPreferencesSystem.gl_clip_alpha -> gl_clip_alpha: float "Clip alpha below this threshold in the 3D textured view"
+#+ * UserPreferencesSystem.gl_texture_limit -> gl_texture_limit: enum "Limit the texture size to save graphics memory"
+#+ * UserPreferencesSystem.language -> language: enum "Language use for translation"
+#+ * UserPreferencesSystem.memory_cache_limit -> memory_cache_limit: int "Memory cache limit in sequencer (megabytes)"
+#+ * UserPreferencesSystem.prefetch_frames -> prefetch_frames: int "Number of frames to render ahead during playback"
+#+ * UserPreferencesSystem.screencast_fps -> screencast_fps: int "Frame rate for the screencast to be played back"
+#+ * UserPreferencesSystem.screencast_wait_time -> screencast_wait_time: int "Time in milliseconds between each frame recorded for screencast"
+#+ * UserPreferencesSystem.scrollback -> scrollback: int "Maximum number of lines to store for the console buffer"
+#+ * UserPreferencesSystem.solid_lights -> solid_lights: collection, "(read-only) Lights user to display objects in solid draw mode"
+#+ * UserPreferencesSystem.texture_collection_rate -> texture_collection_rate: int "Number of seconds between each run of the GL texture garbage collector"
+#+ * UserPreferencesSystem.texture_time_out -> texture_time_out: int "Time since last access of a GL texture in seconds after which it is freed. (Set to 0 to keep textures allocated.)"
+#+ * UserPreferencesSystem.use_antialiasing -> use_antialiasing: boolean "Use anti-aliasing for the 3D view (may impact redraw performance)"
+#UserPreferencesSystem.use_international_fonts -> use_international_fonts: boolean "Use international fonts"
+#+ * UserPreferencesSystem.use_mipmaps -> use_mipmaps: boolean "Scale textures for the 3D View (looks nicer but uses more memory and slows image reloading)"
+#UserPreferencesSystem.use_preview_images -> use_preview_images: boolean "Enables automatic saving of preview images in the .blend file (Windows only)"
+#UserPreferencesSystem.use_scripts_auto_execute -> use_scripts_auto_execute: boolean "Allow any .blend file to run scripts automatically (unsafe with blend files from an untrusted source)"
+#UserPreferencesSystem.use_tabs_as_spaces -> use_tabs_as_spaces: boolean "Automatically converts all new tabs into spaces for new and loaded text files"
+#+ * UserPreferencesSystem.use_textured_fonts -> use_textured_fonts: boolean "Use textures for drawing international fonts"
+#UserPreferencesSystem.use_translate_buttons -> use_translate_buttons: boolean "Translate button labels"
+#UserPreferencesSystem.use_translate_toolbox -> use_translate_toolbox: boolean "Translate toolbox menu"
+#UserPreferencesSystem.use_translate_tooltips -> use_translate_tooltips: boolean "Translate Tooltips"
+#UserPreferencesSystem.use_vertex_buffer_objects -> use_vertex_buffer_objects: boolean "Use Vertex Buffer Objects (or Vertex Arrays, if unsupported) for viewport rendering"
+#+ * UserPreferencesSystem.use_weight_color_range -> use_weight_color_range: boolean "Enable color range used for weight visualization in weight painting mode"
+#+ * UserPreferencesSystem.weight_color_range -> weight_color_range: pointer, "(read-only) Color range used for weight visualization in weight painting mode"
+#+ * UserPreferencesSystem.window_draw_method -> window_draw_method: enum "Drawing method used by the window manager"
+#+ * UserPreferencesView.manipulator_handle_size -> manipulator_handle_size: int "Size of widget handles as percentage of widget radius"
+#+ * UserPreferencesView.manipulator_hotspot -> manipulator_hotspot: int "Hotspot in pixels for clicking widget handles"
+#+ * UserPreferencesView.manipulator_size -> manipulator_size: int "Diameter of widget, in 10 pixel units"
+#+ * UserPreferencesView.mini_axis_brightness -> mini_axis_brightness: int "The brightness of the icon"
+#+ * UserPreferencesView.mini_axis_size -> mini_axis_size: int "The axis icons size"
+#+ * UserPreferencesView.object_origin_size -> object_origin_size: int "Diameter in Pixels for Object/Lamp origin display"
+#+ * UserPreferencesView.open_left_mouse_delay -> open_left_mouse_delay: int "Time in 1/10 seconds to hold the Left Mouse Button before opening the toolbox"
+#+ * UserPreferencesView.open_right_mouse_delay -> open_right_mouse_delay: int "Time in 1/10 seconds to hold the Right Mouse Button before opening the toolbox"
+#+ * UserPreferencesView.open_sublevel_delay -> open_sublevel_delay: int "Time delay in 1/10 seconds before automatically opening sub level menus"
+#+ * UserPreferencesView.open_toplevel_delay -> open_toplevel_delay: int "Time delay in 1/10 seconds before automatically opening top level menus"
+#+ * UserPreferencesView.rotation_angle -> rotation_angle: int "The rotation step for numerical pad keys (2 4 6 8)"
+#UserPreferencesView.show_column_layout -> show_column_layout: boolean "Use a column layout for toolbox"
+#UserPreferencesView.show_large_cursors -> show_large_cursors: boolean "Use large mouse cursors when available"
+#UserPreferencesView.show_manipulator -> show_manipulator: boolean "Use 3D transform manipulator"
+#+ * UserPreferencesView.show_mini_axis -> show_mini_axis: boolean "Show a small rotating 3D axis in the bottom left corner of the 3D View"
+#UserPreferencesView.show_object_info -> show_object_info: boolean "Display objects name and frame number in 3D view"
+#+ * UserPreferencesView.show_playback_fps -> show_playback_fps: boolean "Show the frames per second screen refresh rate, while animation is played back"
+#+ * UserPreferencesView.show_splash -> show_splash: boolean "Display splash screen on startup"
+#UserPreferencesView.show_tooltips -> show_tooltips: boolean "Display tooltips"
+#+ * UserPreferencesView.show_view_name -> show_view_name: boolean "Show the name of the views direction in each 3D View"
+#+ * UserPreferencesView.smooth_view -> smooth_view: int "The time to animate the view in milliseconds, zero to disable"
+#+ * UserPreferencesView.timecode_style -> timecode_style: enum "Format of Time Codes displayed when not displaying timing in terms of frames"
+#UserPreferencesView.use_auto_perspective -> use_auto_perspective: boolean "Automatically switch between orthographic and perspective when changing from top/front/side views"
+#UserPreferencesView.use_directional_menus -> use_directional_menus: boolean "Otherwise menus, etc will always be top to bottom, left to right, no matter opening direction"
+#UserPreferencesView.use_global_pivot -> use_global_pivot: boolean "Lock the same rotation/scaling pivot in all 3D Views"
+#UserPreferencesView.use_global_scene -> use_global_scene: boolean "Forces the current Scene to be displayed in all Screens"
+#UserPreferencesView.use_mouse_auto_depth -> use_mouse_auto_depth: boolean "Use the depth under the mouse to improve view pan/rotate/zoom functionality"
+#UserPreferencesView.use_mouse_over_open -> use_mouse_over_open: boolean "Open menu buttons and pulldowns automatically when the mouse is hovering"
+#UserPreferencesView.use_rotate_around_active -> use_rotate_around_active: boolean "Use selection as the pivot point"
+#UserPreferencesView.use_zoom_to_mouse -> use_zoom_to_mouse: boolean "Zoom in towards the mouse pointers position in the 3D view, rather than the 2D window center"
+#UserPreferencesView.view2d_grid_spacing_min -> view2d_grid_spacing_min: int "Minimum number of pixels between each gridline in 2D Viewports"
+#+ * UserSolidLight.diffuse_color -> diffuse_color: float[3] "The diffuse color of the OpenGL light"
+#+ * UserSolidLight.direction -> direction: float[3] "The direction that the OpenGL light is shining"
+#+ * UserSolidLight.specular_color -> specular_color: float[3] "The color of the lights specular highlight"
+#+ * UserSolidLight.use -> use: boolean "Enable this OpenGL light in solid draw mode"
+#+ * ValueNodeSocket.default_value -> default_value: float[1] "Default value of the socket when no link is attached"
+#+ * ValueNodeSocket.name -> name: string, "(read-only) Socket name"
+#+ * VectorNodeSocket.default_value -> default_value: float[3] "Default value of the socket when no link is attached"
+#+ * VectorNodeSocket.name -> name: string, "(read-only) Socket name"
+#+ * VertexGroup.index -> index: int, "(read-only) Index number of the vertex group"
+#+ * VertexGroup.name -> name: string "Vertex group name"
+#+ * VertexGroupElement.group -> group: int, "(read-only)"
+#+ * VertexGroupElement.weight -> weight: float "Vertex Weight"
+#+ * VoxelData.domain_object -> domain_object: pointer "Object used as the smoke simulation domain"
+#+ * VoxelData.extension -> extension: enum "Sets how the texture is extrapolated past its original bounds"
+#+ * VoxelData.file_format -> file_format: enum "Format of the source data set to render"
+#VoxelData.filepath -> filepath: string "The external source data file to use"
+#+ * VoxelData.intensity -> intensity: float "Multiplier for intensity values"
+#+ * VoxelData.interpolation -> interpolation: enum "Method to interpolate/smooth values between voxel cells"
+#+ * VoxelData.resolution -> resolution: int[3] "Resolution of the voxel grid"
+#+ * VoxelData.smoke_data_type -> smoke_data_type: enum "Simulation value to be used as a texture"
+#VoxelData.still_frame -> still_frame: int "The frame number to always use"
+ + * VoxelData.still -> use_still_frame: boolean "Always render a still frame from the voxel data sequence"
+#+ * Window.screen -> screen: pointer "Active screen showing in the window"
+#+ * WorldLighting.adapt_to_speed -> adapt_to_speed: float "Use the speed vector pass to reduce AO samples in fast moving pixels. Higher values result in more aggressive sample reduction. Requires Vec pass enabled (for Raytrace Adaptive QMC)"
+#WorldLighting.ao_blend_type -> ao_blend_type: enum "Defines how AO mixes with material shading"
+#+ * WorldLighting.ao_factor -> ao_factor: float "Factor for ambient occlusion blending"
+#+ * WorldLighting.bias -> bias: float "Bias (in radians) to prevent smoothed faces from showing banding (for Raytrace Constant Jittered)"
+#+ * WorldLighting.correction -> correction: float "Ad-hoc correction for over-occlusion due to the approximation (for Approximate)"
+#+ * WorldLighting.distance -> distance: float "Length of rays, defines how far away other faces give occlusion effect"
+#+ * WorldLighting.environment_color -> environment_color: enum "Defines where the color of the environment light comes from"
+#+ * WorldLighting.environment_energy -> environment_energy: float "Defines the strength of environment light"
+#WorldLighting.error_threshold -> error_threshold: float "Low values are slower and higher quality (for Approximate)"
+#+ * WorldLighting.falloff_strength -> falloff_strength: float "Distance attenuation factor, the higher, the shorter the shadows"
+#+ * WorldLighting.gather_method -> gather_method: enum "NO DESCRIPTION"
+#+ * WorldLighting.indirect_bounces -> indirect_bounces: int "Number of indirect diffuse light bounces to use for approximate ambient occlusion"
+#+ * WorldLighting.indirect_factor -> indirect_factor: float "Factor for how much surrounding objects contribute to light"
+#+ * WorldLighting.passes -> passes: int "Number of preprocessing passes to reduce overocclusion (for approximate ambient occlusion)"
+#+ * WorldLighting.sample_method -> sample_method: enum "Method for generating shadow samples (for Raytrace)"
+#+ * WorldLighting.samples -> samples: int "Amount of ray samples. Higher values give smoother results and longer rendering times"
+#+ * WorldLighting.threshold -> threshold: float "Samples below this threshold will be considered fully shadowed/unshadowed and skipped (for Raytrace Adaptive QMC)"
+#+ * WorldLighting.use_ambient_occlusion -> use_ambient_occlusion: boolean "Use Ambient Occlusion to add shadowing based on distance between objects"
+#WorldLighting.use_cache -> use_cache: boolean "Cache AO results in pixels and interpolate over neighbouring pixels for speedup (for Approximate)"
+#WorldLighting.use_environment_light -> use_environment_light: boolean "Add light coming from the environment"
+ + * WorldLighting.falloff -> use_falloff: boolean "NO DESCRIPTION"
+#WorldLighting.use_indirect_light -> use_indirect_light: boolean "Add indirect light bouncing of surrounding objects"
+#+ * WorldMistSettings.depth -> depth: float "The distance over which the mist effect fades in"
+#+ * WorldMistSettings.falloff -> falloff: enum "Type of transition used to fade mist"
+#+ * WorldMistSettings.height -> height: float "Control how much mist density decreases with height"
+#+ * WorldMistSettings.intensity -> intensity: float "Intensity of the mist effect"
+#+ * WorldMistSettings.start -> start: float "Starting distance of the mist, measured from the camera"
+#+ * WorldMistSettings.use_mist -> use_mist: boolean "Occlude objects with the environment color as they are further away"
+#+ * WorldStarsSettings.average_separation -> average_separation: float "Average distance between any two stars"
+#WorldStarsSettings.color_random -> color_random: float "Randomize star colors"
+#WorldStarsSettings.distance_min -> distance_min: float "Minimum distance to the camera for stars"
+#+ * WorldStarsSettings.size -> size: float "Average screen dimension of stars"
+#+ * WorldStarsSettings.use_stars -> use_stars: boolean "Enable starfield generation"
diff --git a/source/blender/makesrna/rna_cleanup/rna_update.sh b/source/blender/makesrna/rna_cleanup/rna_update.sh
new file mode 100755
index 00000000000..04d4bbcb0e4
--- /dev/null
+++ b/source/blender/makesrna/rna_cleanup/rna_update.sh
@@ -0,0 +1,13 @@
+cd ../../../../
+./blender.bin --background --python ./release/scripts/modules/rna_info.py 2> source/blender/makesrna/rna_cleanup/out.txt
+cd ./source/blender/makesrna/rna_cleanup/
+./rna_cleaner.py out.txt
+./rna_cleaner.py rna_properties.txt
+./rna_cleaner_merge.py out_work.py rna_properties_work.py
+./rna_cleaner.py out_work_merged.py
+./rna_cleaner.py out_work_lost.py
+mv out_work_merged_work.txt rna_properties.txt # overwrite
+mv out_work_lost_work.txt rna_properties_lost.txt
+cat rna_properties.txt | grep -v "^#" > rna_properties_edits.txt
+./rna_cleaner.py rna_properties.txt
+echo "Updated: rna_properties.txt rna_properties_edits.txt rna_properties_lost.txt " \ No newline at end of file
diff --git a/source/blender/modifiers/intern/MOD_armature.c b/source/blender/modifiers/intern/MOD_armature.c
index 95516647736..d0e36f90ff5 100644
--- a/source/blender/modifiers/intern/MOD_armature.c
+++ b/source/blender/modifiers/intern/MOD_armature.c
@@ -30,7 +30,7 @@
*
*/
-#include "string.h"
+#include <string.h>
#include "DNA_armature_types.h"
#include "DNA_object_types.h"
diff --git a/source/blender/modifiers/intern/MOD_array.c b/source/blender/modifiers/intern/MOD_array.c
index 66c5f375ba8..a6fefbcd863 100644
--- a/source/blender/modifiers/intern/MOD_array.c
+++ b/source/blender/modifiers/intern/MOD_array.c
@@ -32,14 +32,16 @@
/* Array modifier: duplicates the object multiple times along an axis */
-#include "DNA_curve_types.h"
-#include "DNA_meshdata_types.h"
-#include "DNA_object_types.h"
+#include "MEM_guardedalloc.h"
#include "BLI_math.h"
#include "BLI_ghash.h"
#include "BLI_edgehash.h"
+#include "DNA_curve_types.h"
+#include "DNA_meshdata_types.h"
+#include "DNA_object_types.h"
+
#include "BKE_cdderivedmesh.h"
#include "BKE_displist.h"
#include "BKE_mesh.h"
diff --git a/source/blender/modifiers/intern/MOD_bevel.c b/source/blender/modifiers/intern/MOD_bevel.c
index eabd6e4957d..62c7dfa5600 100644
--- a/source/blender/modifiers/intern/MOD_bevel.c
+++ b/source/blender/modifiers/intern/MOD_bevel.c
@@ -29,6 +29,7 @@
* ***** END GPL LICENSE BLOCK *****
*
*/
+#include "MEM_guardedalloc.h"
#include "BKE_bmesh.h"
#include "BKE_cdderivedmesh.h"
diff --git a/source/blender/modifiers/intern/MOD_boolean_util.c b/source/blender/modifiers/intern/MOD_boolean_util.c
index 11d47bfffb1..2fba4c6a603 100644
--- a/source/blender/modifiers/intern/MOD_boolean_util.c
+++ b/source/blender/modifiers/intern/MOD_boolean_util.c
@@ -34,6 +34,8 @@
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
+#include "MEM_guardedalloc.h"
+
#include "BLI_math.h"
#include "BLI_ghash.h"
diff --git a/source/blender/modifiers/intern/MOD_build.c b/source/blender/modifiers/intern/MOD_build.c
index 47693ba337e..8fc1be7d5ee 100644
--- a/source/blender/modifiers/intern/MOD_build.c
+++ b/source/blender/modifiers/intern/MOD_build.c
@@ -30,6 +30,8 @@
*
*/
+#include "MEM_guardedalloc.h"
+
#include "BLI_rand.h"
#include "BLI_ghash.h"
diff --git a/source/blender/modifiers/intern/MOD_cloth.c b/source/blender/modifiers/intern/MOD_cloth.c
index 4d850e1bd95..bfb5f6ee028 100644
--- a/source/blender/modifiers/intern/MOD_cloth.c
+++ b/source/blender/modifiers/intern/MOD_cloth.c
@@ -34,6 +34,8 @@
#include "DNA_scene_types.h"
#include "DNA_object_types.h"
+#include "MEM_guardedalloc.h"
+
#include "BKE_cloth.h"
#include "BKE_cdderivedmesh.h"
#include "BKE_global.h"
diff --git a/source/blender/modifiers/intern/MOD_collision.c b/source/blender/modifiers/intern/MOD_collision.c
index 9e979822d6f..32fbd58839a 100644
--- a/source/blender/modifiers/intern/MOD_collision.c
+++ b/source/blender/modifiers/intern/MOD_collision.c
@@ -34,6 +34,8 @@
#include "DNA_object_types.h"
#include "DNA_meshdata_types.h"
+#include "MEM_guardedalloc.h"
+
#include "BLI_math.h"
#include "BKE_collision.h"
diff --git a/source/blender/modifiers/intern/MOD_curve.c b/source/blender/modifiers/intern/MOD_curve.c
index 250776664a5..97c7a4b01d6 100644
--- a/source/blender/modifiers/intern/MOD_curve.c
+++ b/source/blender/modifiers/intern/MOD_curve.c
@@ -30,7 +30,7 @@
*
*/
-#include "string.h"
+#include <string.h>
#include "DNA_scene_types.h"
#include "DNA_object_types.h"
diff --git a/source/blender/modifiers/intern/MOD_lattice.c b/source/blender/modifiers/intern/MOD_lattice.c
index b5e86ac8a57..4270f2ff6e8 100644
--- a/source/blender/modifiers/intern/MOD_lattice.c
+++ b/source/blender/modifiers/intern/MOD_lattice.c
@@ -30,7 +30,7 @@
*
*/
-#include "string.h"
+#include <string.h>
#include "DNA_object_types.h"
diff --git a/source/blender/modifiers/intern/MOD_mask.c b/source/blender/modifiers/intern/MOD_mask.c
index 15547a1d95e..94eb2380b66 100644
--- a/source/blender/modifiers/intern/MOD_mask.c
+++ b/source/blender/modifiers/intern/MOD_mask.c
@@ -30,13 +30,15 @@
*
*/
+#include "MEM_guardedalloc.h"
+
+#include "BLI_ghash.h"
+
#include "DNA_armature_types.h"
#include "DNA_meshdata_types.h"
#include "DNA_modifier_types.h"
#include "DNA_object_types.h"
-#include "BLI_ghash.h"
-
#include "BKE_cdderivedmesh.h"
#include "BKE_mesh.h"
#include "BKE_modifier.h"
diff --git a/source/blender/modifiers/intern/MOD_particleinstance.c b/source/blender/modifiers/intern/MOD_particleinstance.c
index 0f4bf00d1ad..4f5acc60cda 100644
--- a/source/blender/modifiers/intern/MOD_particleinstance.c
+++ b/source/blender/modifiers/intern/MOD_particleinstance.c
@@ -32,6 +32,8 @@
#include "DNA_meshdata_types.h"
+#include "MEM_guardedalloc.h"
+
#include "BLI_math.h"
#include "BLI_listbase.h"
#include "BLI_rand.h"
diff --git a/source/blender/modifiers/intern/MOD_shrinkwrap.c b/source/blender/modifiers/intern/MOD_shrinkwrap.c
index 0b41267daa9..6526be4cb53 100644
--- a/source/blender/modifiers/intern/MOD_shrinkwrap.c
+++ b/source/blender/modifiers/intern/MOD_shrinkwrap.c
@@ -30,7 +30,7 @@
*
*/
-#include "string.h"
+#include <string.h>
#include "BKE_cdderivedmesh.h"
#include "BKE_modifier.h"
diff --git a/source/blender/modifiers/intern/MOD_util.c b/source/blender/modifiers/intern/MOD_util.c
index ec51ba3483c..a33c80bc6ae 100644
--- a/source/blender/modifiers/intern/MOD_util.c
+++ b/source/blender/modifiers/intern/MOD_util.c
@@ -30,7 +30,7 @@
* ***** END GPL LICENSE BLOCK *****
*/
-#include "string.h"
+#include <string.h>
#include "DNA_modifier_types.h"
#include "DNA_object_types.h"
diff --git a/source/blender/nodes/intern/CMP_nodes/CMP_chromaMatte.c b/source/blender/nodes/intern/CMP_nodes/CMP_chromaMatte.c
index b081880b87b..e502129c3d3 100644
--- a/source/blender/nodes/intern/CMP_nodes/CMP_chromaMatte.c
+++ b/source/blender/nodes/intern/CMP_nodes/CMP_chromaMatte.c
@@ -44,20 +44,38 @@ static bNodeSocketType cmp_node_chroma_out[]={
static void do_rgba_to_ycca_normalized(bNode *node, float *out, float *in)
{
- /*normalize to the range -1.0 to 1.0) */
- rgb_to_ycc(in[0],in[1],in[2], &out[0], &out[1], &out[2], BLI_YCC_ITU_BT601);
- out[0]=((out[0])-16)/255.0;
- out[1]=((out[1])-128)/255.0;
- out[2]=((out[2])-128)/255.0;
+ rgb_to_ycc(in[0],in[1],in[2], &out[0], &out[1], &out[2], BLI_YCC_ITU_BT601);
+
+ //normalize to 0..1.0
+ out[0]=out[0]/255.0;
+ out[1]=out[1]/255.0;
+ out[2]=out[2]/255.0;
+
+ //rescale to -1.0..1.0
+ out[0]=(out[0]*2.0)-1.0;
+ out[1]=(out[1]*2.0)-1.0;
+ out[2]=(out[2]*2.0)-1.0;
+
+// out[0]=((out[0])-16)/255.0;
+// out[1]=((out[1])-128)/255.0;
+// out[2]=((out[2])-128)/255.0;
out[3]=in[3];
}
static void do_ycca_to_rgba_normalized(bNode *node, float *out, float *in)
{
- /*un-normalize the normalize from above */
- in[0]=(in[0]*255.0)+16;
- in[1]=(in[1]*255.0)+128;
- in[2]=(in[2]*255.0)+128;
+ /*un-normalize the normalize from above */
+ in[0]=(in[0]+1.0)/2.0;
+ in[1]=(in[1]+1.0)/2.0;
+ in[2]=(in[2]+1.0)/2.0;
+
+ in[0]=(in[0]*255.0);
+ in[1]=(in[1]*255.0);
+ in[2]=(in[2]*255.0);
+
+// in[0]=(in[0]*255.0)+16;
+// in[1]=(in[1]*255.0)+128;
+// in[2]=(in[2]*255.0)+128;
ycc_to_rgb(in[0],in[1],in[2], &out[0], &out[1], &out[2], BLI_YCC_ITU_BT601);
out[3]=in[3];
}
@@ -65,47 +83,41 @@ static void do_ycca_to_rgba_normalized(bNode *node, float *out, float *in)
static void do_chroma_key(bNode *node, float *out, float *in)
{
NodeChroma *c;
- float x, z, alpha;
- float theta, beta, angle;
- float kfg, newY, newCb, newCr;
+ float x, z, alpha;
+ float theta, beta, angle, angle2;
+ float kfg;
c=node->storage;
- /* Algorithm from book "Video Demistified" */
+ /* Algorithm from book "Video Demistified," does not include the spill reduction part */
/* find theta, the angle that the color space should be rotated based on key*/
- theta=atan2(c->key[2],c->key[1]);
+ theta=atan2(c->key[2], c->key[1]);
/*rotate the cb and cr into x/z space */
- x=in[1]*cos(theta)+in[2]*sin(theta);
- z=in[2]*cos(theta)-in[1]*sin(theta);
+ x=in[1]*cos(theta)+in[2]*sin(theta);
+ z=in[2]*cos(theta)-in[1]*sin(theta);
- /*if within the acceptance angle */
- angle=c->t1*M_PI/180.0; /* convert to radians */
+ /*if within the acceptance angle */
+ angle=c->t1*M_PI/180.0; /* convert to radians */
- /* if kfg is <0 then the pixel is outside of the key color */
- kfg=x-(fabs(z)/tan(angle/2.0));
+ /* if kfg is <0 then the pixel is outside of the key color */
+ kfg=x-(fabs(z)/tan(angle/2.0));
- if(kfg>0.0) { /* found a pixel that is within key color */
+ out[0]=in[0];
+ out[1]=in[1];
+ out[2]=in[2];
- newY=in[0]-(1-c->t3)*kfg;
- newCb=in[1]-kfg*cos((double)theta);
- newCr=in[2]-kfg*sin((double)theta);
- alpha=(kfg+c->fsize)*(c->fstrength);
+ if(kfg>0.0) { /* found a pixel that is within key color */
+ alpha=(1.0-kfg)*(c->fstrength);
- beta=atan2(newCr,newCb);
- beta=beta*180.0/M_PI; /* convert to degrees for compare*/
-
- /* if beta is within the clippin angle */
- if(fabs(beta)<(c->t2/2.0)) {
- newCb=0.0;
- newCr=0.0;
- alpha=0.0;
- }
+ beta=atan2(z,x);
+ angle2=c->t2*M_PI/180.0;
- out[0]=newY;
- out[1]=newCb;
- out[2]=newCr;
+ /* if beta is within the cutoff angle */
+ if(fabs(beta)<(angle2/2.0)) {
+ alpha=0.0;
+ }
/* don't make something that was more transparent less transparent */
if (alpha<in[3]) {
diff --git a/source/blender/nodes/intern/CMP_nodes/CMP_sepcombHSVA.c b/source/blender/nodes/intern/CMP_nodes/CMP_sepcombHSVA.c
index d80dd9b0a4b..0ac47c58ab3 100644
--- a/source/blender/nodes/intern/CMP_nodes/CMP_sepcombHSVA.c
+++ b/source/blender/nodes/intern/CMP_nodes/CMP_sepcombHSVA.c
@@ -64,7 +64,7 @@ static void node_composit_exec_sephsva(void *data, bNode *node, bNodeStack **in,
if(in[0]->data==NULL) {
float h, s, v;
- rgb_to_hsv(in[0]->vec[0], in[0]->vec[1], in[0]->vec[2], &h, &s, &v);
+ rgb_to_hsv(in[0]->vec[0], in[0]->vec[1], in[0]->vec[2], &h, &s, &v);
out[0]->vec[0] = h;
out[1]->vec[0] = s;
diff --git a/source/blender/python/CMakeLists.txt b/source/blender/python/CMakeLists.txt
index 3c79e9d3056..dcfc8678faa 100644
--- a/source/blender/python/CMakeLists.txt
+++ b/source/blender/python/CMakeLists.txt
@@ -36,6 +36,7 @@ SET(INC
../windowmanager
../editors/include
../../../intern/guardedalloc
+ ../../../intern/audaspace/intern
${PYTHON_INC}
)
diff --git a/source/blender/python/SConscript b/source/blender/python/SConscript
index 17189341136..f062f64249c 100644
--- a/source/blender/python/SConscript
+++ b/source/blender/python/SConscript
@@ -6,7 +6,7 @@ sources = env.Glob('intern/*.c')
incs = '. ../editors/include ../makesdna ../makesrna ../blenlib ../blenkernel ../nodes'
incs += ' ../imbuf ../blenloader ../render/extern/include ../windowmanager'
incs += ' #intern/guardedalloc #intern/memutil #extern/glew/include'
-incs += ' ' + env['BF_PYTHON_INC']
+incs += ' #intern/audaspace/intern ' + env['BF_PYTHON_INC']
defs = []
diff --git a/source/blender/python/doc/examples/mathutils.py b/source/blender/python/doc/examples/mathutils.py
index 4a5de5887c9..0b30a0f4505 100644
--- a/source/blender/python/doc/examples/mathutils.py
+++ b/source/blender/python/doc/examples/mathutils.py
@@ -3,8 +3,8 @@ from math import radians
vec = mathutils.Vector((1.0, 2.0, 3.0))
-mat_rot = mathutils.RotationMatrix(radians(90), 4, 'X')
-mat_trans = mathutils.TranslationMatrix(vec)
+mat_rot = mathutils.Matrix.Rotation(radians(90), 4, 'X')
+mat_trans = mathutils.Matrix.Translation(vec)
mat = mat_trans * mat_rot
mat.invert()
diff --git a/source/blender/python/doc/sphinx_doc_gen.py b/source/blender/python/doc/sphinx_doc_gen.py
index 940b5fbcce9..06d1a9021b8 100644
--- a/source/blender/python/doc/sphinx_doc_gen.py
+++ b/source/blender/python/doc/sphinx_doc_gen.py
@@ -144,7 +144,9 @@ def pyfunc2sphinx(ident, fw, identifier, py_func, is_class=True):
def py_descr2sphinx(ident, fw, descr, module_name, type_name, identifier):
-
+ if identifier.startswith("_"):
+ return
+
doc = descr.__doc__
if not doc:
doc = undocumented_message(module_name, type_name, identifier)
@@ -351,6 +353,7 @@ def rna2sphinx(BASEPATH):
fw(" * data API, access to attributes of blender data such as mesh verts, material color, timeline frames and scene objects\n")
fw(" * user interface functions for defining buttons, creation of menus, headers, panels\n")
fw(" * modules: bgl, mathutils and geometry\n")
+ fw(" * game engine modules\n")
fw("\n")
fw("===================\n")
@@ -381,6 +384,7 @@ def rna2sphinx(BASEPATH):
fw(" mathutils.rst\n\n")
fw(" blf.rst\n\n")
+ fw(" aud.rst\n\n")
# game engine
fw("===================\n")
@@ -463,6 +467,10 @@ def rna2sphinx(BASEPATH):
import blf as module
pymodule2sphinx(BASEPATH, "blf", module, "Font Drawing (blf)")
del module
+
+ import aud as module
+ pymodule2sphinx(BASEPATH, "aud", module, "Audio System (aud)")
+ del module
# game engine
import shutil
@@ -586,7 +594,7 @@ def rna2sphinx(BASEPATH):
for func in struct.functions:
args_str = ", ".join([prop.get_arg_default(force=False) for prop in func.args])
- fw(" .. method:: %s(%s)\n\n" % (func.identifier, args_str))
+ fw(" .. %s:: %s(%s)\n\n" % ("classmethod" if func.is_classmethod else "method", func.identifier, args_str))
fw(" %s\n\n" % func.description)
for prop in func.args:
@@ -764,7 +772,8 @@ def rna2sphinx(BASEPATH):
file.close()
-if __name__ == '__main__':
+def main():
+ import bpy
if 'bpy' not in dir():
print("\nError, this script must run from inside blender2.5")
print(script_help_msg)
@@ -834,3 +843,6 @@ if __name__ == '__main__':
import sys
sys.exit()
+
+if __name__ == '__main__':
+ main()
diff --git a/source/blender/python/generic/bgl.c b/source/blender/python/generic/bgl.c
index bb0b3a43186..8ac2107f8d2 100644
--- a/source/blender/python/generic/bgl.c
+++ b/source/blender/python/generic/bgl.c
@@ -1117,7 +1117,7 @@ PyObject *BGL_Init(void)
{
PyObject *mod, *dict, *item;
mod = PyModule_Create(&BGL_module_def);
- PyDict_SetItemString(PySys_GetObject("modules"), BGL_module_def.m_name, mod);
+ PyDict_SetItemString(PyImport_GetModuleDict(), BGL_module_def.m_name, mod);
dict= PyModule_GetDict(mod);
if( PyType_Ready( &BGL_bufferType) < 0)
diff --git a/source/blender/python/generic/blf_api.c b/source/blender/python/generic/blf_api.c
index 9e4ce1f057d..a5f5f8815c7 100644
--- a/source/blender/python/generic/blf_api.c
+++ b/source/blender/python/generic/blf_api.c
@@ -39,7 +39,7 @@ static char py_blf_position_doc[] =
" :arg y: Y axis position to draw the text.\n"
" :type y: float\n"
" :arg z: Z axis position to draw the text.\n"
-" :type x: float\n";
+" :type z: float\n";
static PyObject *py_blf_position(PyObject *self, PyObject *args)
{
@@ -261,7 +261,7 @@ static char py_blf_rotation_doc[] =
" :arg fontid: The id of the typeface as returned by :func:`blf.load`, for default font use 0.\n"
" :type fontid: int\n"
" :arg angle: The angle for text drawing to use.\n"
-" :type aspect: float\n";
+" :type angle: float\n";
static PyObject *py_blf_rotation(PyObject *self, PyObject *args)
{
@@ -394,7 +394,7 @@ PyObject *BLF_Init(void)
PyObject *submodule;
submodule = PyModule_Create(&BLF_module_def);
- PyDict_SetItemString(PySys_GetObject("modules"), BLF_module_def.m_name, submodule);
+ PyDict_SetItemString(PyImport_GetModuleDict(), BLF_module_def.m_name, submodule);
PyModule_AddIntConstant(submodule, "ROTATION", BLF_ROTATION);
PyModule_AddIntConstant(submodule, "CLIPPING", BLF_CLIPPING);
diff --git a/source/blender/python/generic/bpy_internal_import.c b/source/blender/python/generic/bpy_internal_import.c
index 0bcecafd23c..1951e72567c 100644
--- a/source/blender/python/generic/bpy_internal_import.c
+++ b/source/blender/python/generic/bpy_internal_import.c
@@ -304,7 +304,7 @@ PyMethodDef bpy_reload_meth[] = { {"bpy_reload_meth", (PyCFunction)blender_reloa
void bpy_text_clear_modules(int clear_all)
{
- PyObject *modules= PySys_GetObject("modules");
+ PyObject *modules= PyImport_GetModuleDict();
char *fname;
char *file_extension;
diff --git a/source/blender/python/generic/geometry.c b/source/blender/python/generic/geometry.c
index 1e8436ed5ae..0e98760314d 100644
--- a/source/blender/python/generic/geometry.c
+++ b/source/blender/python/generic/geometry.c
@@ -835,7 +835,7 @@ PyObject *Geometry_Init(void)
PyObject *submodule;
submodule = PyModule_Create(&M_Geometry_module_def);
- PyDict_SetItemString(PySys_GetObject("modules"), M_Geometry_module_def.m_name, submodule);
+ PyDict_SetItemString(PyImport_GetModuleDict(), M_Geometry_module_def.m_name, submodule);
return (submodule);
}
diff --git a/source/blender/python/generic/mathutils.c b/source/blender/python/generic/mathutils.c
index ada5bac8c2a..a643e6621b2 100644
--- a/source/blender/python/generic/mathutils.c
+++ b/source/blender/python/generic/mathutils.c
@@ -258,7 +258,7 @@ PyObject *Mathutils_Init(void)
return NULL;
submodule = PyModule_Create(&M_Mathutils_module_def);
- PyDict_SetItemString(PySys_GetObject("modules"), M_Mathutils_module_def.m_name, submodule);
+ PyDict_SetItemString(PyImport_GetModuleDict(), M_Mathutils_module_def.m_name, submodule);
/* each type has its own new() function */
PyModule_AddObject( submodule, "Vector", (PyObject *)&vector_Type );
diff --git a/source/blender/python/generic/mathutils_color.c b/source/blender/python/generic/mathutils_color.c
index d4ab64e13c5..57d2838238c 100644
--- a/source/blender/python/generic/mathutils_color.c
+++ b/source/blender/python/generic/mathutils_color.c
@@ -445,7 +445,7 @@ static PyGetSetDef Color_getseters[] = {
{"hsv", (getter)Color_getHSV, (setter)Color_setHSV, "HSV Values in [0, 1].\n\n:type: float triplet", (void *)0},
{"is_wrapped", (getter)BaseMathObject_getWrapped, (setter)NULL, BaseMathObject_Wrapped_doc, NULL},
- {"_owner", (getter)BaseMathObject_getOwner, (setter)NULL, BaseMathObject_Owner_doc, NULL},
+ {"owner", (getter)BaseMathObject_getOwner, (setter)NULL, BaseMathObject_Owner_doc, NULL},
{NULL,NULL,NULL,NULL,NULL} /* Sentinel */
};
diff --git a/source/blender/python/generic/mathutils_euler.c b/source/blender/python/generic/mathutils_euler.c
index 63a04918941..b36eb7803f1 100644
--- a/source/blender/python/generic/mathutils_euler.c
+++ b/source/blender/python/generic/mathutils_euler.c
@@ -621,7 +621,7 @@ static PyGetSetDef Euler_getseters[] = {
{"order", (getter)Euler_getOrder, (setter)Euler_setOrder, "Euler rotation order.\n\n:type: string in ['XYZ', 'XZY', 'YXZ', 'YZX', 'ZXY', 'ZYX']", (void *)NULL},
{"is_wrapped", (getter)BaseMathObject_getWrapped, (setter)NULL, BaseMathObject_Wrapped_doc, NULL},
- {"_owner", (getter)BaseMathObject_getOwner, (setter)NULL, BaseMathObject_Owner_doc, NULL},
+ {"owner", (getter)BaseMathObject_getOwner, (setter)NULL, BaseMathObject_Owner_doc, NULL},
{NULL,NULL,NULL,NULL,NULL} /* Sentinel */
};
diff --git a/source/blender/python/generic/mathutils_matrix.c b/source/blender/python/generic/mathutils_matrix.c
index 1ef834b7a3e..24239e1f541 100644
--- a/source/blender/python/generic/mathutils_matrix.c
+++ b/source/blender/python/generic/mathutils_matrix.c
@@ -1737,7 +1737,7 @@ static PyGetSetDef Matrix_getseters[] = {
{"median_scale", (getter)Matrix_getMedianScale, (setter)NULL, "The average scale applied to each axis (readonly).\n\n:type: float", NULL},
{"is_negative", (getter)Matrix_getIsNegative, (setter)NULL, "True if this matrix results in a negative scale, 3x3 and 4x4 only, (readonly).\n\n:type: bool", NULL},
{"is_wrapped", (getter)BaseMathObject_getWrapped, (setter)NULL, BaseMathObject_Wrapped_doc, NULL},
- {"_owner",(getter)BaseMathObject_getOwner, (setter)NULL, BaseMathObject_Owner_doc, NULL},
+ {"owner",(getter)BaseMathObject_getOwner, (setter)NULL, BaseMathObject_Owner_doc, NULL},
{NULL,NULL,NULL,NULL,NULL} /* Sentinel */
};
diff --git a/source/blender/python/generic/mathutils_quat.c b/source/blender/python/generic/mathutils_quat.c
index 8d9fe54fa85..553844b6ee5 100644
--- a/source/blender/python/generic/mathutils_quat.c
+++ b/source/blender/python/generic/mathutils_quat.c
@@ -109,7 +109,7 @@ static PyObject *Quaternion_ToEuler(QuaternionObject * self, PyObject *args)
}
//----------------------------Quaternion.toMatrix()------------------
static char Quaternion_ToMatrix_doc[] =
-".. method:: to_matrix(other)\n"
+".. method:: to_matrix()\n"
"\n"
" Return a matrix representation of the quaternion.\n"
"\n"
@@ -930,7 +930,7 @@ static PyGetSetDef Quaternion_getseters[] = {
{"angle", (getter)Quaternion_getAngle, (setter)Quaternion_setAngle, "angle of the quaternion.\n\n:type: float", NULL},
{"axis",(getter)Quaternion_getAxisVec, (setter)Quaternion_setAxisVec, "quaternion axis as a vector.\n\n:type: :class:`Vector`", NULL},
{"is_wrapped", (getter)BaseMathObject_getWrapped, (setter)NULL, BaseMathObject_Wrapped_doc, NULL},
- {"_owner", (getter)BaseMathObject_getOwner, (setter)NULL, BaseMathObject_Owner_doc, NULL},
+ {"owner", (getter)BaseMathObject_getOwner, (setter)NULL, BaseMathObject_Owner_doc, NULL},
{NULL,NULL,NULL,NULL,NULL} /* Sentinel */
};
diff --git a/source/blender/python/generic/mathutils_vector.c b/source/blender/python/generic/mathutils_vector.c
index 9672878ec51..75a695526fc 100644
--- a/source/blender/python/generic/mathutils_vector.c
+++ b/source/blender/python/generic/mathutils_vector.c
@@ -508,7 +508,8 @@ static char Vector_angle_doc[] =
" :arg other: another vector to compare the angle with\n"
" :type other: :class:`Vector`\n"
" :arg fallback: return this value when the angle cant be calculated (zero length vector)\n"
-" :return angle: angle in radians or fallback when given\n"
+" :type fallback: any\n"
+" :return: angle in radians or fallback when given\n"
" :rtype: float\n"
"\n"
" .. note:: Zero length vectors raise an :exc:`AttributeError`.\n";
@@ -607,8 +608,9 @@ static char Vector_Project_doc[] =
"\n"
" Return the projection of this vector onto the *other*.\n"
"\n"
+" :arg other: second vector.\n"
" :type other: :class:`Vector`\n"
-" :return projection: the parallel projection vector\n"
+" :return: the parallel projection vector\n"
" :rtype: :class:`Vector`\n";
static PyObject *Vector_Project(VectorObject *self, VectorObject *value)
@@ -1601,7 +1603,7 @@ static PyGetSetDef Vector_getseters[] = {
{"length", (getter)Vector_getLength, (setter)Vector_setLength, "Vector Length.\n\n:type: float", NULL},
{"magnitude", (getter)Vector_getLength, (setter)Vector_setLength, "Vector Length.\n\n:type: float", NULL},
{"is_wrapped", (getter)BaseMathObject_getWrapped, (setter)NULL, BaseMathObject_Wrapped_doc, NULL},
- {"_owner", (getter)BaseMathObject_getOwner, (setter)NULL, BaseMathObject_Owner_doc, NULL},
+ {"owner", (getter)BaseMathObject_getOwner, (setter)NULL, BaseMathObject_Owner_doc, NULL},
/* autogenerated swizzle attrs, see python script below */
{"xx", (getter)Vector_getSwizzle, (setter)NULL, NULL, SET_INT_IN_POINTER(((0|SWIZZLE_VALID_AXIS) | ((0|SWIZZLE_VALID_AXIS)<<SWIZZLE_BITS_PER_AXIS)))}, // 36
diff --git a/source/blender/python/generic/noise.c b/source/blender/python/generic/noise.c
index b07950099a3..4a09cbb58d8 100644
--- a/source/blender/python/generic/noise.c
+++ b/source/blender/python/generic/noise.c
@@ -658,7 +658,7 @@ static struct PyModuleDef noise_module_def = {
PyObject *Noise_Init(void)
{
PyObject *submodule = PyModule_Create(&noise_module_def);
- PyDict_SetItemString(PySys_GetObject("modules"), noise_module_def.m_name, submodule);
+ PyDict_SetItemString(PyImport_GetModuleDict(), noise_module_def.m_name, submodule);
/* use current time as seed for random number generator by default */
setRndSeed(0);
diff --git a/source/blender/python/intern/Makefile b/source/blender/python/intern/Makefile
index 309ad9a42f1..6c0b7b4d14e 100644
--- a/source/blender/python/intern/Makefile
+++ b/source/blender/python/intern/Makefile
@@ -57,6 +57,7 @@ CPPFLAGS += -I../../imbuf
CPPFLAGS += -I../../blenloader
CPPFLAGS += -I../../windowmanager
CPPFLAGS += -I../../render/extern/include
+CPPFLAGS += -I$(NAN_AUDASPACE)/include
# path to the guarded memory allocator
CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include
diff --git a/source/blender/python/intern/bpy.c b/source/blender/python/intern/bpy.c
index 7ca1b365c6f..03c1a012575 100644
--- a/source/blender/python/intern/bpy.c
+++ b/source/blender/python/intern/bpy.c
@@ -41,6 +41,8 @@
#include "../generic/blf_api.h"
#include "../generic/IDProp.h"
+#include "AUD_PyInit.h"
+
static char bpy_script_paths_doc[] =
".. function:: script_paths()\n"
"\n"
@@ -153,12 +155,12 @@ void BPy_init_modules( void )
BGL_Init();
BLF_Init();
IDProp_Init_Types();
-
+ AUD_initPython();
mod = PyModule_New("_bpy");
/* add the module so we can import it */
- PyDict_SetItemString(PySys_GetObject("modules"), "_bpy", mod);
+ PyDict_SetItemString(PyImport_GetModuleDict(), "_bpy", mod);
Py_DECREF(mod);
/* run first, initializes rna types */
diff --git a/source/blender/python/intern/bpy_operator.c b/source/blender/python/intern/bpy_operator.c
index 0e54f158ac4..c6c34fbcaf5 100644
--- a/source/blender/python/intern/bpy_operator.c
+++ b/source/blender/python/intern/bpy_operator.c
@@ -63,7 +63,7 @@ static PyObject *pyop_call( PyObject * self, PyObject * args)
if (!PyArg_ParseTuple(args, "sO|O!s:_bpy.ops.call", &opname, &context_dict, &PyDict_Type, &kw, &context_str))
return NULL;
- ot= WM_operatortype_exists(opname);
+ ot= WM_operatortype_find(opname, TRUE);
if (ot == NULL) {
PyErr_Format( PyExc_SystemError, "Calling operator \"bpy.ops.%s\" error, could not be found", opname);
@@ -259,7 +259,7 @@ PyObject *BPY_operator_module( void )
static PyMethodDef pyop_macro_def_meth ={"macro_define", (PyCFunction) PYOP_wrap_macro_define, METH_VARARGS, NULL};
PyObject *submodule = PyModule_New("_bpy.ops");
- PyDict_SetItemString(PySys_GetObject("modules"), "_bpy.ops", submodule);
+ PyDict_SetItemString(PyImport_GetModuleDict(), "_bpy.ops", submodule);
PyModule_AddObject( submodule, "call", PyCFunction_New(&pyop_call_meth, NULL) );
PyModule_AddObject( submodule, "as_string",PyCFunction_New(&pyop_as_string_meth,NULL) );
diff --git a/source/blender/python/intern/bpy_operator_wrap.c b/source/blender/python/intern/bpy_operator_wrap.c
index 0c1eafb4948..6d16896fb16 100644
--- a/source/blender/python/intern/bpy_operator_wrap.c
+++ b/source/blender/python/intern/bpy_operator_wrap.c
@@ -34,22 +34,15 @@
static void operator_properties_init(wmOperatorType *ot)
{
PyObject *py_class = ot->ext.data;
- PyObject *item= ((PyTypeObject*)py_class)->tp_dict; /* getattr(..., "__dict__") returns a proxy */
-
RNA_struct_blender_type_set(ot->ext.srna, ot);
- if(item) {
- /* only call this so pyrna_deferred_register_props gives a useful error
- * WM_operatortype_append_ptr will call RNA_def_struct_identifier
- * later */
- RNA_def_struct_identifier(ot->srna, ot->idname);
+ /* only call this so pyrna_deferred_register_class gives a useful error
+ * WM_operatortype_append_ptr will call RNA_def_struct_identifier
+ * later */
+ RNA_def_struct_identifier(ot->srna, ot->idname);
- if(pyrna_deferred_register_props(ot->srna, item) != 0) {
- PyErr_Print(); /* failed to register operator props */
- PyErr_Clear();
- }
- }
- else {
+ if(pyrna_deferred_register_class(ot->srna, py_class) != 0) {
+ PyErr_Print(); /* failed to register operator props */
PyErr_Clear();
}
}
@@ -105,7 +98,7 @@ PyObject *PYOP_wrap_macro_define(PyObject *self, PyObject *args)
if (!PyArg_ParseTuple(args, "Os:_bpy.ops.macro_define", &macro, &opname))
return NULL;
- if (WM_operatortype_exists(opname) == NULL) {
+ if (WM_operatortype_find(opname, TRUE) == NULL) {
PyErr_Format(PyExc_ValueError, "Macro Define: '%s' is not a valid operator id", opname);
return NULL;
}
@@ -114,7 +107,7 @@ PyObject *PYOP_wrap_macro_define(PyObject *self, PyObject *args)
srna= srna_from_self(macro, "Macro Define:");
macroname = RNA_struct_identifier(srna);
- ot = WM_operatortype_exists(macroname);
+ ot = WM_operatortype_find(macroname, TRUE);
if (!ot) {
PyErr_Format(PyExc_ValueError, "Macro Define: '%s' is not a valid macro or hasn't been registered yet", macroname);
diff --git a/source/blender/python/intern/bpy_props.c b/source/blender/python/intern/bpy_props.c
index c278ad56ab9..9afe638908c 100644
--- a/source/blender/python/intern/bpy_props.c
+++ b/source/blender/python/intern/bpy_props.c
@@ -919,7 +919,7 @@ PyObject *BPY_rna_props( void )
{
PyObject *submodule;
submodule= PyModule_Create(&props_module);
- PyDict_SetItemString(PySys_GetObject("modules"), props_module.m_name, submodule);
+ PyDict_SetItemString(PyImport_GetModuleDict(), props_module.m_name, submodule);
/* INCREF since its its assumed that all these functions return the
* module with a new ref like PyDict_New, since they are passed to
diff --git a/source/blender/python/intern/bpy_rna.c b/source/blender/python/intern/bpy_rna.c
index 5ad8af31a82..fd3b59a97f7 100644
--- a/source/blender/python/intern/bpy_rna.c
+++ b/source/blender/python/intern/bpy_rna.c
@@ -63,11 +63,11 @@ static short pyrna_rotation_euler_order_get(PointerRNA *ptr, PropertyRNA **prop_
/* bpyrna vector/euler/quat callbacks */
static int mathutils_rna_array_cb_index= -1; /* index for our callbacks */
-/* not used yet but may want to use the subtype below */
+/* subtype not used much yet */
#define MATHUTILS_CB_SUBTYPE_EUL 0
#define MATHUTILS_CB_SUBTYPE_VEC 1
#define MATHUTILS_CB_SUBTYPE_QUAT 2
-#define MATHUTILS_CB_SUBTYPE_COLOR 0
+#define MATHUTILS_CB_SUBTYPE_COLOR 3
static int mathutils_rna_generic_check(BaseMathObject *bmo)
{
@@ -1663,12 +1663,12 @@ static int pyrna_struct_contains(BPy_StructRNA *self, PyObject *value)
return -1;
}
- if(RNA_struct_idproperties_check(self->ptr.type)==0) {
+ if(RNA_struct_idprops_check(self->ptr.type)==0) {
PyErr_SetString( PyExc_TypeError, "bpy_struct: this type doesnt support IDProperties");
return -1;
}
- group= RNA_struct_idproperties(&self->ptr, 0);
+ group= RNA_struct_idprops(&self->ptr, 0);
if(!group)
return 0;
@@ -1721,7 +1721,7 @@ static PyObject *pyrna_struct_subscript( BPy_StructRNA *self, PyObject *key )
IDProperty *group, *idprop;
char *name= _PyUnicode_AsString(key);
- if(RNA_struct_idproperties_check(self->ptr.type)==0) {
+ if(RNA_struct_idprops_check(self->ptr.type)==0) {
PyErr_SetString( PyExc_TypeError, "this type doesn't support IDProperties");
return NULL;
}
@@ -1731,7 +1731,7 @@ static PyObject *pyrna_struct_subscript( BPy_StructRNA *self, PyObject *key )
return NULL;
}
- group= RNA_struct_idproperties(&self->ptr, 0);
+ group= RNA_struct_idprops(&self->ptr, 0);
if(group==NULL) {
PyErr_Format( PyExc_KeyError, "bpy_struct[key]: key \"%s\" not found", name);
@@ -1750,7 +1750,7 @@ static PyObject *pyrna_struct_subscript( BPy_StructRNA *self, PyObject *key )
static int pyrna_struct_ass_subscript( BPy_StructRNA *self, PyObject *key, PyObject *value )
{
- IDProperty *group= RNA_struct_idproperties(&self->ptr, 1);
+ IDProperty *group= RNA_struct_idprops(&self->ptr, 1);
if(group==NULL) {
PyErr_SetString(PyExc_TypeError, "bpy_struct[key] = val: id properties not supported for this type");
@@ -1780,12 +1780,12 @@ static PyObject *pyrna_struct_keys(BPy_PropertyRNA *self)
{
IDProperty *group;
- if(RNA_struct_idproperties_check(self->ptr.type)==0) {
+ if(RNA_struct_idprops_check(self->ptr.type)==0) {
PyErr_SetString( PyExc_TypeError, "bpy_struct.keys(): this type doesn't support IDProperties");
return NULL;
}
- group= RNA_struct_idproperties(&self->ptr, 0);
+ group= RNA_struct_idprops(&self->ptr, 0);
if(group==NULL)
return PyList_New(0);
@@ -1807,12 +1807,12 @@ static PyObject *pyrna_struct_items(BPy_PropertyRNA *self)
{
IDProperty *group;
- if(RNA_struct_idproperties_check(self->ptr.type)==0) {
+ if(RNA_struct_idprops_check(self->ptr.type)==0) {
PyErr_SetString( PyExc_TypeError, "bpy_struct.items(): this type doesn't support IDProperties");
return NULL;
}
- group= RNA_struct_idproperties(&self->ptr, 0);
+ group= RNA_struct_idprops(&self->ptr, 0);
if(group==NULL)
return PyList_New(0);
@@ -1834,12 +1834,12 @@ static PyObject *pyrna_struct_values(BPy_PropertyRNA *self)
{
IDProperty *group;
- if(RNA_struct_idproperties_check(self->ptr.type)==0) {
+ if(RNA_struct_idprops_check(self->ptr.type)==0) {
PyErr_SetString( PyExc_TypeError, "bpy_struct.values(): this type doesn't support IDProperties");
return NULL;
}
- group= RNA_struct_idproperties(&self->ptr, 0);
+ group= RNA_struct_idprops(&self->ptr, 0);
if(group==NULL)
return PyList_New(0);
@@ -2086,12 +2086,34 @@ static char pyrna_struct_is_property_set_doc[] =
static PyObject *pyrna_struct_is_property_set(BPy_StructRNA *self, PyObject *args)
{
+ PropertyRNA *prop;
char *name;
+ int ret;
if (!PyArg_ParseTuple(args, "s:is_property_set", &name))
return NULL;
- return PyBool_FromLong(RNA_property_is_set(&self->ptr, name));
+ if((prop= RNA_struct_find_property(&self->ptr, name)) == NULL) {
+ PyErr_Format(PyExc_TypeError, "%.200s.is_property_set(\"%.200s\") not found", RNA_struct_identifier(self->ptr.type), name);
+ return NULL;
+ }
+
+ /* double property lookup, could speed up */
+ /* return PyBool_FromLong(RNA_property_is_set(&self->ptr, name)); */
+ if(RNA_property_flag(prop) & PROP_IDPROPERTY) {
+ IDProperty *group= RNA_struct_idprops(&self->ptr, 0);
+ if(group) {
+ ret= IDP_GetPropertyFromGroup(group, name) ? 1:0;
+ }
+ else {
+ ret= 0;
+ }
+ }
+ else {
+ ret= 1;
+ }
+
+ return PyBool_FromLong(ret);
}
static char pyrna_struct_is_property_hidden_doc[] =
@@ -2106,15 +2128,16 @@ static PyObject *pyrna_struct_is_property_hidden(BPy_StructRNA *self, PyObject *
{
PropertyRNA *prop;
char *name;
- int hidden;
if (!PyArg_ParseTuple(args, "s:is_property_hidden", &name))
return NULL;
-
- prop= RNA_struct_find_property(&self->ptr, name);
- hidden= (prop)? (RNA_property_flag(prop) & PROP_HIDDEN): 1;
- return PyBool_FromLong(hidden);
+ if((prop= RNA_struct_find_property(&self->ptr, name)) == NULL) {
+ PyErr_Format(PyExc_TypeError, "%.200s.is_property_hidden(\"%.200s\") not found", RNA_struct_identifier(self->ptr.type), name);
+ return NULL;
+ }
+
+ return PyBool_FromLong(RNA_property_flag(prop) & PROP_HIDDEN);
}
static char pyrna_struct_path_resolve_doc[] =
@@ -2336,7 +2359,7 @@ static PyObject *pyrna_struct_getattro( BPy_StructRNA *self, PyObject *pyname )
if(name[0]=='_') { // rna can't start with a "_", so for __dict__ and similar we can skip using rna lookups
/* annoying exception, maybe we need to have different types for this... */
- if((strcmp(name, "__getitem__")==0 || strcmp(name, "__setitem__")==0) && !RNA_struct_idproperties_check(self->ptr.type)) {
+ if((strcmp(name, "__getitem__")==0 || strcmp(name, "__setitem__")==0) && !RNA_struct_idprops_check(self->ptr.type)) {
PyErr_SetString(PyExc_AttributeError, "bpy_struct: no __getitem__ support for this type");
ret = NULL;
}
@@ -2731,12 +2754,12 @@ static PyObject *pyrna_struct_get(BPy_StructRNA *self, PyObject *args)
return NULL;
/* mostly copied from BPy_IDGroup_Map_GetItem */
- if(RNA_struct_idproperties_check(self->ptr.type)==0) {
+ if(RNA_struct_idprops_check(self->ptr.type)==0) {
PyErr_SetString( PyExc_TypeError, "this type doesn't support IDProperties");
return NULL;
}
- group= RNA_struct_idproperties(&self->ptr, 0);
+ group= RNA_struct_idprops(&self->ptr, 0);
if(group) {
idprop= IDP_GetPropertyFromGroup(group, key);
@@ -3107,8 +3130,6 @@ static struct PyMethodDef pyrna_prop_methods[] = {
};
static struct PyMethodDef pyrna_prop_array_methods[] = {
- {"foreach_get", (PyCFunction)pyrna_prop_foreach_get, METH_VARARGS, NULL},
- {"foreach_set", (PyCFunction)pyrna_prop_foreach_set, METH_VARARGS, NULL},
{NULL, NULL, 0, NULL}
};
@@ -4351,7 +4372,6 @@ static int deferred_register_prop(StructRNA *srna, PyObject *item, PyObject *key
if(*_PyUnicode_AsString(key)=='_') {
PyErr_Format(PyExc_ValueError, "bpy_struct \"%.200s\" registration error: %.200s could not register because the property starts with an '_'\n", RNA_struct_identifier(srna), _PyUnicode_AsString(key));
- Py_DECREF(dummy_args);
return -1;
}
pyfunc = PyCapsule_GetPointer(py_func_ptr, NULL);
@@ -4372,8 +4392,6 @@ static int deferred_register_prop(StructRNA *srna, PyObject *item, PyObject *key
// PyLineSpit();
PyErr_Format(PyExc_ValueError, "bpy_struct \"%.200s\" registration error: %.200s could not register\n", RNA_struct_identifier(srna), _PyUnicode_AsString(key));
-
- Py_DECREF(dummy_args);
return -1;
}
}
@@ -4390,7 +4408,7 @@ static int deferred_register_prop(StructRNA *srna, PyObject *item, PyObject *key
return 0;
}
-int pyrna_deferred_register_props(StructRNA *srna, PyObject *class_dict)
+static int pyrna_deferred_register_props(StructRNA *srna, PyObject *class_dict)
{
PyObject *item, *key;
PyObject *order;
@@ -4400,12 +4418,10 @@ int pyrna_deferred_register_props(StructRNA *srna, PyObject *class_dict)
dummy_args = PyTuple_New(0);
- order= PyDict_GetItemString(class_dict, "order");
-
- if(order==NULL)
- PyErr_Clear();
-
- if(order && PyList_Check(order)) {
+ if( !PyDict_CheckExact(class_dict) &&
+ (order= PyDict_GetItemString(class_dict, "order")) &&
+ PyList_CheckExact(order)
+ ) {
for(pos= 0; pos<PyList_GET_SIZE(order); pos++) {
key= PyList_GET_ITEM(order, pos);
item= PyDict_GetItem(class_dict, key);
@@ -4428,6 +4444,49 @@ int pyrna_deferred_register_props(StructRNA *srna, PyObject *class_dict)
return 0;
}
+static int pyrna_deferred_register_class_recursive(StructRNA *srna, PyTypeObject *py_class)
+{
+ const int len= PyTuple_GET_SIZE(py_class->tp_bases);
+ int i, ret;
+
+ /* first scan base classes for registerable properties */
+ for(i=0; i<len; i++) {
+ PyTypeObject *py_superclass= (PyTypeObject *)PyTuple_GET_ITEM(py_class->tp_bases, i);
+
+ /* the rules for using these base classes are not clear,
+ * 'object' is ofcourse not worth looking into and
+ * existing subclasses of RNA would cause a lot more dictionary
+ * looping then is needed (SomeOperator would scan Operator.__dict__)
+ * which is harmless but not at all useful.
+ *
+ * So only scan base classes which are not subclasses if blender types.
+ * This best fits having 'mix-in' classes for operators and render engines.
+ * */
+ if( py_superclass != &PyBaseObject_Type &&
+ !PyObject_IsSubclass((PyObject *)py_superclass, (PyObject *)&pyrna_struct_Type)
+ ) {
+ ret= pyrna_deferred_register_class_recursive(srna, py_superclass);
+
+ if(ret != 0) {
+ return ret;
+ }
+ }
+ }
+
+ /* not register out own properties */
+ return pyrna_deferred_register_props(srna, py_class->tp_dict); /* getattr(..., "__dict__") returns a proxy */
+}
+
+int pyrna_deferred_register_class(StructRNA *srna, PyObject *py_class)
+{
+ /* Panels and Menus dont need this
+ * save some time and skip the checks here */
+ if(!RNA_struct_idprops_register_check(srna))
+ return 0;
+
+ return pyrna_deferred_register_class_recursive(srna, (PyTypeObject *)py_class);
+}
+
/*-------------------- Type Registration ------------------------*/
static int rna_function_arg_count(FunctionRNA *func)
@@ -4867,8 +4926,7 @@ static PyObject *pyrna_basetype_register(PyObject *self, PyObject *py_class)
StructRegisterFunc reg;
StructRNA *srna;
StructRNA *srna_new;
- PyObject *item;
- const char *identifier= "";
+ const char *identifier;
if(PyDict_GetItemString(((PyTypeObject*)py_class)->tp_dict, "bl_rna")) {
PyErr_SetString(PyExc_AttributeError, "bpy.types.register(...): already registered as a subclass.");
@@ -4902,12 +4960,7 @@ static PyObject *pyrna_basetype_register(PyObject *self, PyObject *py_class)
/* call the register callback with reports & identifier */
BKE_reports_init(&reports, RPT_STORE);
- item= PyObject_GetAttrString(py_class, "__name__");
-
- if(item) {
- identifier= _PyUnicode_AsString(item);
- Py_DECREF(item); /* no need to keep a ref, the class owns it */
- }
+ identifier= ((PyTypeObject*)py_class)->tp_name;
srna_new= reg(C, &reports, py_class, identifier, bpy_class_validate, bpy_class_call, bpy_class_free);
@@ -4931,15 +4984,8 @@ static PyObject *pyrna_basetype_register(PyObject *self, PyObject *py_class)
*
* item= PyObject_GetAttrString(py_class, "__dict__");
*/
- item= ((PyTypeObject*)py_class)->tp_dict;
- if(item) {
- if(pyrna_deferred_register_props(srna_new, item)!=0) {
- return NULL;
- }
- }
- else {
- PyErr_Clear();
- }
+ if(pyrna_deferred_register_class(srna_new, py_class)!=0)
+ return NULL;
Py_RETURN_NONE;
}
diff --git a/source/blender/python/intern/bpy_rna.h b/source/blender/python/intern/bpy_rna.h
index bd9838a76d4..63f6997d82c 100644
--- a/source/blender/python/intern/bpy_rna.h
+++ b/source/blender/python/intern/bpy_rna.h
@@ -86,7 +86,7 @@ int pyrna_set_to_enum_bitfield(EnumPropertyItem *items, PyObject *value, int *r_
int pyrna_enum_value_from_id(EnumPropertyItem *item, const char *identifier, int *value, const char *error_prefix);
-int pyrna_deferred_register_props(struct StructRNA *srna, PyObject *class_dict);
+int pyrna_deferred_register_class(struct StructRNA *srna, PyObject *py_class);
/* called before stopping python */
void pyrna_alloc_types(void);
diff --git a/source/blender/python/intern/bpy_util.c b/source/blender/python/intern/bpy_util.c
index 38462d1b176..1d14ab67510 100644
--- a/source/blender/python/intern/bpy_util.c
+++ b/source/blender/python/intern/bpy_util.c
@@ -54,7 +54,7 @@ void PyObSpit(char *name, PyObject *var) {
}
void PyLineSpit(void) {
- char *filename;
+ const char *filename;
int lineno;
PyErr_Clear();
@@ -63,7 +63,7 @@ void PyLineSpit(void) {
fprintf(stderr, "%s:%d\n", filename, lineno);
}
-void BPY_getFileAndNum(char **filename, int *lineno)
+void BPY_getFileAndNum(const char **filename, int *lineno)
{
PyObject *getframe, *frame;
PyObject *f_lineno= NULL, *co_filename= NULL;
@@ -83,6 +83,7 @@ void BPY_getFileAndNum(char **filename, int *lineno)
return;
}
+ /* when executing a script */
if (filename) {
co_filename= PyObject_GetAttrStringArgs(frame, 1, "f_code", "co_filename");
if (co_filename==NULL) {
@@ -95,6 +96,25 @@ void BPY_getFileAndNum(char **filename, int *lineno)
Py_DECREF(co_filename);
}
+ /* when executing a module */
+ if(filename && *filename == NULL) {
+ /* try an alternative method to get the filename - module based
+ * references below are all borrowed (double checked) */
+ PyObject *mod_name= PyDict_GetItemString(PyEval_GetGlobals(), "__name__");
+ if(mod_name) {
+ PyObject *mod= PyDict_GetItem(PyImport_GetModuleDict(), mod_name);
+ if(mod) {
+ *filename= PyModule_GetFilename(mod);
+ }
+
+ /* unlikely, fallback */
+ if(*filename == NULL) {
+ *filename= _PyUnicode_AsString(mod_name);
+ }
+ }
+ }
+
+
if (lineno) {
f_lineno= PyObject_GetAttrString(frame, "f_lineno");
if (f_lineno==NULL) {
@@ -330,7 +350,7 @@ int BPy_errors_to_report(ReportList *reports)
PyObject *pystring_format= NULL; // workaround, see below
char *cstring;
- char *filename;
+ const char *filename;
int lineno;
if (!PyErr_Occurred())
diff --git a/source/blender/python/intern/bpy_util.h b/source/blender/python/intern/bpy_util.h
index e7e7bb09419..cfe820b53b0 100644
--- a/source/blender/python/intern/bpy_util.h
+++ b/source/blender/python/intern/bpy_util.h
@@ -38,7 +38,7 @@ struct ReportList;
void PyObSpit(char *name, PyObject *var);
void PyLineSpit(void);
-void BPY_getFileAndNum(char **filename, int *lineno);
+void BPY_getFileAndNum(const char **filename, int *lineno);
PyObject *BPY_exception_buffer(void);
diff --git a/source/blender/render/intern/raytrace/bvh.h b/source/blender/render/intern/raytrace/bvh.h
index e3efb90ec04..133a3d4a005 100644
--- a/source/blender/render/intern/raytrace/bvh.h
+++ b/source/blender/render/intern/raytrace/bvh.h
@@ -28,7 +28,6 @@
*/
#include "rayobject.h"
#include "raycounter.h"
-#include "MEM_guardedalloc.h"
#include "rayobject_rtbuild.h"
#include "rayobject_hint.h"
diff --git a/source/blender/render/intern/raytrace/rayobject_qbvh.cpp b/source/blender/render/intern/raytrace/rayobject_qbvh.cpp
index afffdd44f1f..c510af540db 100644
--- a/source/blender/render/intern/raytrace/rayobject_qbvh.cpp
+++ b/source/blender/render/intern/raytrace/rayobject_qbvh.cpp
@@ -26,6 +26,7 @@
*
* ***** END GPL LICENSE BLOCK *****
*/
+#include "MEM_guardedalloc.h"
#include "vbvh.h"
#include "svbvh.h"
#include "reorganize.h"
diff --git a/source/blender/render/intern/raytrace/rayobject_svbvh.cpp b/source/blender/render/intern/raytrace/rayobject_svbvh.cpp
index 389512ce469..647c5771e4f 100644
--- a/source/blender/render/intern/raytrace/rayobject_svbvh.cpp
+++ b/source/blender/render/intern/raytrace/rayobject_svbvh.cpp
@@ -26,6 +26,8 @@
*
* ***** END GPL LICENSE BLOCK *****
*/
+#include "MEM_guardedalloc.h"
+
#include "vbvh.h"
#include "svbvh.h"
#include "reorganize.h"
diff --git a/source/blender/render/intern/source/pipeline.c b/source/blender/render/intern/source/pipeline.c
index 183b46af863..502bd09c2de 100644
--- a/source/blender/render/intern/source/pipeline.c
+++ b/source/blender/render/intern/source/pipeline.c
@@ -39,6 +39,8 @@
#include "DNA_sequence_types.h"
#include "DNA_userdef_types.h"
+#include "MEM_guardedalloc.h"
+
#include "BKE_utildefines.h"
#include "BKE_global.h"
#include "BKE_image.h"
@@ -52,8 +54,6 @@
#include "BKE_pointcache.h"
#include "BKE_animsys.h" /* <------ should this be here?, needed for sequencer update */
-#include "MEM_guardedalloc.h"
-
#include "BLI_math.h"
#include "BLI_blenlib.h"
#include "BLI_rand.h"
@@ -2463,7 +2463,7 @@ static void do_render_seq(Render * re)
recurs_depth++;
- ibuf= give_ibuf_seq(re->scene, rr->rectx, rr->recty, cfra, 0, 100.0);
+ ibuf= give_ibuf_seq(re->main, re->scene, rr->rectx, rr->recty, cfra, 0, 100.0);
recurs_depth--;
diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h
index 46d42b300bf..9fe09c0836c 100644
--- a/source/blender/windowmanager/WM_api.h
+++ b/source/blender/windowmanager/WM_api.h
@@ -57,7 +57,7 @@ void WM_init (struct bContext *C, int argc, char **argv);
void WM_exit (struct bContext *C);
void WM_main (struct bContext *C);
-void WM_init_game (struct bContext *C);
+int WM_init_game (struct bContext *C);
void WM_init_splash (struct bContext *C);
@@ -201,7 +201,6 @@ void WM_operator_free (struct wmOperator *op);
void WM_operator_stack_clear(struct bContext *C);
struct wmOperatorType *WM_operatortype_find(const char *idnamem, int quiet);
-struct wmOperatorType *WM_operatortype_exists(const char *idname);
struct wmOperatorType *WM_operatortype_first(void);
void WM_operatortype_append (void (*opfunc)(struct wmOperatorType*));
void WM_operatortype_append_ptr (void (*opfunc)(struct wmOperatorType*, void *), void *userdata);
diff --git a/source/blender/windowmanager/intern/wm.c b/source/blender/windowmanager/intern/wm.c
index fcf8951d796..8d36711032b 100644
--- a/source/blender/windowmanager/intern/wm.c
+++ b/source/blender/windowmanager/intern/wm.c
@@ -26,7 +26,8 @@
* ***** END GPL LICENSE BLOCK *****
*/
-#include "string.h"
+#include <string.h>
+#include <stddef.h>
#include "DNA_windowmanager_types.h"
@@ -149,9 +150,9 @@ MenuType *WM_menutype_find(const char *idname, int quiet)
MenuType* mt;
if (idname[0]) {
- for(mt=menutypes.first; mt; mt=mt->next)
- if(strcmp(idname, mt->idname)==0)
- return mt;
+ mt= BLI_findstring(&menutypes, idname, offsetof(MenuType, idname));
+ if(mt)
+ return mt;
}
if(!quiet)
diff --git a/source/blender/windowmanager/intern/wm_dragdrop.c b/source/blender/windowmanager/intern/wm_dragdrop.c
index 3d519a5609b..18b1e7239ed 100644
--- a/source/blender/windowmanager/intern/wm_dragdrop.c
+++ b/source/blender/windowmanager/intern/wm_dragdrop.c
@@ -26,7 +26,7 @@
* ***** END GPL LICENSE BLOCK *****
*/
-#include "string.h"
+#include <string.h>
#include "DNA_windowmanager_types.h"
#include "DNA_screen_types.h"
diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c
index 867700980af..e1fc934ee3e 100644
--- a/source/blender/windowmanager/intern/wm_event_system.c
+++ b/source/blender/windowmanager/intern/wm_event_system.c
@@ -425,6 +425,14 @@ static void wm_operator_reports(bContext *C, wmOperator *op, int retval, int pop
}
}
+/* this function is mainly to check that the rules for freeing
+ * an operator are kept in sync.
+ */
+static int wm_operator_register_check(wmWindowManager *wm, wmOperatorType *ot)
+{
+ return (wm->op_undo_depth == 0) && (ot->flag & OPTYPE_REGISTER);
+}
+
static void wm_operator_finished(bContext *C, wmOperator *op, int repeat)
{
wmWindowManager *wm= CTX_wm_manager(C);
@@ -445,7 +453,7 @@ static void wm_operator_finished(bContext *C, wmOperator *op, int repeat)
MEM_freeN(buf);
}
- if((wm->op_undo_depth == 0) && (op->type->flag & OPTYPE_REGISTER))
+ if(wm_operator_register_check(wm, op->type))
wm_operator_register(C, op);
else
WM_operator_free(op);
@@ -807,11 +815,11 @@ int WM_operator_name_call(bContext *C, const char *opstring, int context, Pointe
*/
int WM_operator_call_py(bContext *C, wmOperatorType *ot, int context, PointerRNA *properties, ReportList *reports)
{
+ wmWindowManager *wm= CTX_wm_manager(C);
int retval= OPERATOR_CANCELLED;
#if 0
wmOperator *op;
- wmWindowManager *wm= CTX_wm_manager(C);
op= wm_operator_create(wm, ot, properties, reports);
if (op->type->exec) {
@@ -830,9 +838,9 @@ int WM_operator_call_py(bContext *C, wmOperatorType *ot, int context, PointerRNA
retval= wm_operator_call_internal(C, ot, context, properties, reports);
/* keep the reports around if needed later */
- if (retval & OPERATOR_RUNNING_MODAL || ot->flag & OPTYPE_REGISTER)
+ if (retval & OPERATOR_RUNNING_MODAL || wm_operator_register_check(wm, ot))
{
- reports->flag |= RPT_FREE;
+ reports->flag |= RPT_FREE; /* let blender manage freeing */
}
return retval;
diff --git a/source/blender/windowmanager/intern/wm_init_exit.c b/source/blender/windowmanager/intern/wm_init_exit.c
index 558d20021ce..4d4e399a1c7 100644
--- a/source/blender/windowmanager/intern/wm_init_exit.c
+++ b/source/blender/windowmanager/intern/wm_init_exit.c
@@ -49,6 +49,7 @@
#include "BKE_font.h"
#include "BKE_global.h"
#include "BKE_library.h"
+#include "BKE_main.h"
#include "BKE_mball.h"
#include "BKE_report.h"
#include "BKE_utildefines.h"
@@ -94,6 +95,7 @@
#include "BKE_depsgraph.h"
#include "BKE_sound.h"
+#include "GHOST_C-api.h"
static void wm_init_reports(bContext *C)
{
@@ -186,18 +188,115 @@ void WM_init_splash(bContext *C)
}
}
-void WM_init_game(bContext *C)
+static ScrArea *biggest_view3d(bContext *C)
+{
+ bScreen *sc= CTX_wm_screen(C);
+ ScrArea *sa, *big= NULL;
+ int size, maxsize= 0;
+
+ for(sa= sc->areabase.first; sa; sa= sa->next) {
+ if(sa->spacetype==SPACE_VIEW3D) {
+ size= sa->winx * sa->winy;
+ if(size > maxsize) {
+ maxsize= size;
+ big= sa;
+ }
+ }
+ }
+ return big;
+}
+
+int WM_init_game(bContext *C)
{
- //XXX copied from WM_init_splash we may not even need those "window" related code
- //XXX not working yet, it fails at the game_start_operator pool (it needs an area)
wmWindowManager *wm= CTX_wm_manager(C);
- wmWindow *prevwin= CTX_wm_window(C);
-
- if(wm->windows.first) {
- CTX_wm_window_set(C, wm->windows.first);
+ wmWindow* win;
+
+ ScrArea *sa;
+ ARegion *ar;
+
+ Scene *scene= CTX_data_scene(C);
+
+ if (!scene) {
+ // XXX, this should not be needed.
+ Main *bmain = CTX_data_main(C);
+ scene= bmain->scene.first;
+ }
+
+ win = wm->windows.first;
+
+ //first to get a valid window
+ if(win)
+ CTX_wm_window_set(C, win);
+
+ sa = biggest_view3d(C);
+
+ if(sa)
+ {
+ for(ar=sa->regionbase.first; ar; ar=ar->next) {
+ if(ar->regiontype == RGN_TYPE_WINDOW) {
+ break;
+ }
+ }
+ }
+
+ // if we have a valid 3D view
+ if (sa && ar) {
+ ARegion *arhide;
+
+ CTX_wm_area_set(C, sa);
+ CTX_wm_region_set(C, ar);
+
+ /* disable quad view */
+ if(ar->alignment == RGN_ALIGN_QSPLIT)
+ WM_operator_name_call(C, "SCREEN_OT_region_quadview", WM_OP_EXEC_DEFAULT, NULL);
+
+ /* toolbox, properties panel and header are hidden */
+ for(arhide=sa->regionbase.first; arhide; arhide=arhide->next) {
+ if(arhide->regiontype != RGN_TYPE_WINDOW) {
+ if(!(arhide->flag & RGN_FLAG_HIDDEN)) {
+ ED_region_toggle_hidden(C, arhide);
+ }
+ }
+ }
+
+ /* full screen the area */
+ if(!sa->full) {
+ ED_screen_full_toggle(C, wm->windows.first, sa);
+ }
+
+ /* Fullscreen */
+ if(scene->gm.fullscreen) {
+ WM_operator_name_call(C, "WM_OT_window_fullscreen_toggle", WM_OP_EXEC_DEFAULT, NULL);
+ wm_get_screensize(&ar->winrct.xmax, &ar->winrct.ymax);
+ }
+ else
+ {
+ GHOST_RectangleHandle rect = GHOST_GetClientBounds(win->ghostwin);
+ ar->winrct.ymax = GHOST_GetHeightRectangle(rect);
+ ar->winrct.xmax = GHOST_GetWidthRectangle(rect);
+ GHOST_DisposeRectangle(rect);
+ }
+
WM_operator_name_call(C, "VIEW3D_OT_game_start", WM_OP_EXEC_DEFAULT, NULL);
- CTX_wm_window_set(C, prevwin);
+
+ return 1;
+ }
+ else
+ {
+ ReportTimerInfo *rti;
+
+ BKE_report(&wm->reports, RPT_ERROR, "No valid 3D View found. Game auto start is not possible.");
+
+ /* After adding the report to the global list, reset the report timer. */
+ WM_event_remove_timer(wm, NULL, wm->reports.reporttimer);
+
+ /* Records time since last report was added */
+ wm->reports.reporttimer = WM_event_add_timer(wm, CTX_wm_window(C), TIMER, 0.02);
+
+ rti = MEM_callocN(sizeof(ReportTimerInfo), "ReportTimerInfo");
+ wm->reports.reporttimer->customdata = rti;
}
+ return 0;
}
/* free strings of open recent files */
diff --git a/source/blender/windowmanager/intern/wm_operators.c b/source/blender/windowmanager/intern/wm_operators.c
index 34be844cf5b..e1c6a74e70f 100644
--- a/source/blender/windowmanager/intern/wm_operators.c
+++ b/source/blender/windowmanager/intern/wm_operators.c
@@ -30,12 +30,13 @@
#include <string.h>
#include <ctype.h>
#include <stdio.h>
+#include <stddef.h>
+
#include "DNA_ID.h"
#include "DNA_object_types.h"
#include "DNA_screen_types.h"
#include "DNA_scene_types.h"
-#include "DNA_brush_types.h"
#include "DNA_userdef_types.h"
#include "DNA_windowmanager_types.h"
@@ -62,7 +63,6 @@
#include "BKE_scene.h"
#include "BKE_screen.h" /* BKE_ST_MAXNAME */
#include "BKE_utildefines.h"
-#include "BKE_brush.h" // JW
#include "BKE_idcode.h"
#include "BIF_gl.h"
@@ -72,7 +72,6 @@
#include "ED_screen.h"
#include "ED_util.h"
-#include "ED_view3d.h" // JW
#include "RNA_access.h"
#include "RNA_define.h"
@@ -90,8 +89,6 @@
#include "wm_subwindow.h"
#include "wm_window.h"
-
-
static ListBase global_ops= {NULL, NULL};
/* ************ operator API, exported ********** */
@@ -103,11 +100,11 @@ wmOperatorType *WM_operatortype_find(const char *idname, int quiet)
char idname_bl[OP_MAX_TYPENAME]; // XXX, needed to support python style names without the _OT_ syntax
WM_operator_bl_idname(idname_bl, idname);
-
+
if (idname_bl[0]) {
- for(ot= global_ops.first; ot; ot= ot->next) {
- if(strncmp(ot->idname, idname_bl, OP_MAX_TYPENAME)==0)
- return ot;
+ ot= (wmOperatorType *)BLI_findstring_ptr(&global_ops, idname_bl, offsetof(wmOperatorType, idname));
+ if(ot) {
+ return ot;
}
}
@@ -117,22 +114,6 @@ wmOperatorType *WM_operatortype_find(const char *idname, int quiet)
return NULL;
}
-wmOperatorType *WM_operatortype_exists(const char *idname)
-{
- wmOperatorType *ot;
-
- char idname_bl[OP_MAX_TYPENAME]; // XXX, needed to support python style names without the _OT_ syntax
- WM_operator_bl_idname(idname_bl, idname);
-
- if(idname_bl[0]) {
- for(ot= global_ops.first; ot; ot= ot->next) {
- if(strncmp(ot->idname, idname_bl, OP_MAX_TYPENAME)==0)
- return ot;
- }
- }
- return NULL;
-}
-
wmOperatorType *WM_operatortype_first(void)
{
return global_ops.first;
@@ -333,7 +314,7 @@ wmOperatorType *WM_operatortype_append_macro(char *idname, char *name, int flag)
{
wmOperatorType *ot;
- if(WM_operatortype_exists(idname)) {
+ if(WM_operatortype_find(idname, TRUE)) {
printf("Macro error: operator %s exists\n", idname);
return NULL;
}
@@ -2599,33 +2580,22 @@ const int WM_RADIAL_CONTROL_DISPLAY_SIZE = 200;
typedef struct wmRadialControl {
int mode;
float initial_value, value, max_value;
+ float col[4], tex_col[4];
int initial_mouse[2];
void *cursor;
GLuint tex;
} wmRadialControl;
-extern Paint *paint_get_active(Scene *sce);
-extern struct Brush *paint_brush(struct Paint *paint);
-
static void wm_radial_control_paint(bContext *C, int x, int y, void *customdata)
{
wmRadialControl *rc = (wmRadialControl*)customdata;
ARegion *ar = CTX_wm_region(C);
float r1=0.0f, r2=0.0f, r3=0.0f, angle=0.0f;
- Paint *paint = paint_get_active(CTX_data_scene(C));
- struct Brush *brush = paint_brush(paint);
-
- ViewContext vc;
-
// int hit = 0;
-
- int flip;
- int sign;
-
- float* col;
-
- const float str = rc->mode == WM_RADIALCONTROL_STRENGTH ? (rc->value + 0.5) : (brush->texture_overlay_alpha / 100.0f);
+
+ if(rc->mode == WM_RADIALCONTROL_STRENGTH)
+ rc->tex_col[3]= (rc->value + 0.5);
if(rc->mode == WM_RADIALCONTROL_SIZE) {
r1= rc->value;
@@ -2643,18 +2613,6 @@ static void wm_radial_control_paint(bContext *C, int x, int y, void *customdata)
x = rc->initial_mouse[0] - ar->winrct.xmin;
y = rc->initial_mouse[1] - ar->winrct.ymin;
- view3d_set_viewcontext(C, &vc);
-
- // XXX: no way currently to know state of pen flip or invert key modifier without starting a stroke
- flip = 1;
-
- sign = flip * ((brush->flag & BRUSH_DIR_IN)? -1 : 1);
-
- if (sign < 0 && ELEM4(brush->sculpt_tool, SCULPT_TOOL_DRAW, SCULPT_TOOL_INFLATE, SCULPT_TOOL_CLAY, SCULPT_TOOL_PINCH))
- col = brush->sub_col;
- else
- col = brush->add_col;
-
glTranslatef((float)x, (float)y, 0.0f);
glEnable(GL_BLEND);
@@ -2671,7 +2629,7 @@ static void wm_radial_control_paint(bContext *C, int x, int y, void *customdata)
glEnable(GL_TEXTURE_2D);
glBegin(GL_QUADS);
- glColor4f(U.sculpt_paint_overlay_col[0],U.sculpt_paint_overlay_col[1],U.sculpt_paint_overlay_col[2], str);
+ glColor4f(rc->tex_col[0], rc->tex_col[1], rc->tex_col[2], rc->tex_col[3]);
glTexCoord2f(0,0);
glVertex2f(-r3, -r3);
glTexCoord2f(1,0);
@@ -2685,7 +2643,7 @@ static void wm_radial_control_paint(bContext *C, int x, int y, void *customdata)
}
if(rc->mode == WM_RADIALCONTROL_ANGLE) {
- glColor4f(col[0], col[1], col[2], 0.5f);
+ glColor4f(rc->col[0], rc->col[1], rc->col[2], rc->col[3]);
glEnable(GL_LINE_SMOOTH);
glRotatef(-angle, 0, 0, 1);
fdrawline(0, 0, WM_RADIAL_CONTROL_DISPLAY_SIZE, 0);
@@ -2694,7 +2652,7 @@ static void wm_radial_control_paint(bContext *C, int x, int y, void *customdata)
glDisable(GL_LINE_SMOOTH);
}
- glColor4f(col[0], col[1], col[2], 0.5f);
+ glColor4f(rc->col[0], rc->col[1], rc->col[2], rc->col[3]);
glutil_draw_lined_arc(0.0, M_PI*2.0, r1, 40);
glutil_draw_lined_arc(0.0, M_PI*2.0, r2, 40);
glDisable(GL_BLEND);
@@ -2820,6 +2778,9 @@ int WM_radial_control_invoke(bContext *C, wmOperator *op, wmEvent *event)
MEM_freeN(im);
}
+ RNA_float_get_array(op->ptr, "color", rc->col);
+ RNA_float_get_array(op->ptr, "texture_color", rc->tex_col);
+
RNA_int_set_array(op->ptr, "initial_mouse", mouse);
RNA_float_set(op->ptr, "new_value", initial_value);
@@ -2864,6 +2825,8 @@ void WM_OT_radial_control_partial(wmOperatorType *ot)
{WM_RADIALCONTROL_STRENGTH, "STRENGTH", 0, "Strength", ""},
{WM_RADIALCONTROL_ANGLE, "ANGLE", 0, "Angle", ""},
{0, NULL, 0, NULL, NULL}};
+ static float color[4] = {1.0f, 1.0f, 1.0f, 0.5f};
+ static float tex_color[4] = {1.0f, 1.0f, 1.0f, 1.0f};
/* Should be set in custom invoke() */
RNA_def_float(ot->srna, "initial_value", 0, 0, FLT_MAX, "Initial Value", "", 0, FLT_MAX);
@@ -2875,7 +2838,10 @@ void WM_OT_radial_control_partial(wmOperatorType *ot)
RNA_def_enum(ot->srna, "mode", radial_mode_items, 0, "Mode", "");
/* Internal */
- RNA_def_int_vector(ot->srna, "initial_mouse", 2, NULL, INT_MIN, INT_MAX, "initial_mouse", "", INT_MIN, INT_MAX);
+ RNA_def_int_vector(ot->srna, "initial_mouse", 2, NULL, INT_MIN, INT_MAX, "Initial Mouse", "", INT_MIN, INT_MAX);
+
+ RNA_def_float_color(ot->srna, "color", 4, color, 0.0f, FLT_MAX, "Color", "Radial control color", 0.0f, 1.0f);
+ RNA_def_float_color(ot->srna, "texture_color", 4, tex_color, 0.0f, FLT_MAX, "Texture Color", "Radial control texture color", 0.0f, 1.0f);
}
/* ************************** timer for testing ***************** */
diff --git a/source/blender/windowmanager/intern/wm_window.c b/source/blender/windowmanager/intern/wm_window.c
index e4bb5b797d3..45234464ef0 100644
--- a/source/blender/windowmanager/intern/wm_window.c
+++ b/source/blender/windowmanager/intern/wm_window.c
@@ -73,7 +73,7 @@ static int prefsizx= 0, prefsizy= 0, prefstax= 0, prefstay= 0;
/* XXX this one should correctly check for apple top header...
done for Cocoa : returns window contents (and not frame) max size*/
-static void wm_get_screensize(int *width_r, int *height_r)
+void wm_get_screensize(int *width_r, int *height_r)
{
unsigned int uiwidth;
unsigned int uiheight;
diff --git a/source/blender/windowmanager/wm_window.h b/source/blender/windowmanager/wm_window.h
index fa244036645..d57fd0e75d8 100644
--- a/source/blender/windowmanager/wm_window.h
+++ b/source/blender/windowmanager/wm_window.h
@@ -36,6 +36,8 @@ struct wmOperator;
void wm_ghost_init (bContext *C);
void wm_ghost_exit(void);
+void wm_get_screensize(int *width_r, int *height_r);
+
wmWindow *wm_window_new (bContext *C);
void wm_window_free (bContext *C, wmWindowManager *wm, wmWindow *win);
void wm_window_close (bContext *C, wmWindowManager *wm, wmWindow *win);
diff --git a/source/creator/creator.c b/source/creator/creator.c
index 05359b06112..e99935f64a3 100644
--- a/source/creator/creator.c
+++ b/source/creator/creator.c
@@ -1144,8 +1144,10 @@ int main(int argc, char **argv)
else {
if((G.fileflags & G_FILE_AUTOPLAY) && (G.f & G_SCRIPT_AUTOEXEC))
- WM_init_game(C);
-
+ {
+ if(WM_init_game(C))
+ return 0;
+ }
else if(!G.file_loaded)
WM_init_splash(C);
}
diff --git a/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp b/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
index a83ec7e132f..b5b9c96a7ff 100644
--- a/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
+++ b/source/gameengine/BlenderRoutines/BL_KetsjiEmbedStart.cpp
@@ -388,9 +388,15 @@ extern "C" void StartKetsjiShell(struct bContext *C, struct ARegion *ar, rcti *c
ketsjiengine->InitDome(scene->gm.dome.res, scene->gm.dome.mode, scene->gm.dome.angle, scene->gm.dome.resbuf, scene->gm.dome.tilt, scene->gm.dome.warptext);
// initialize 3D Audio Settings
- AUD_set3DSetting(AUD_3DS_SPEED_OF_SOUND, scene->audio.speed_of_sound);
- AUD_set3DSetting(AUD_3DS_DOPPLER_FACTOR, scene->audio.doppler_factor);
- AUD_set3DSetting(AUD_3DS_DISTANCE_MODEL, scene->audio.distance_model);
+ AUD_setSpeedOfSound(scene->audio.speed_of_sound);
+ AUD_setDopplerFactor(scene->audio.doppler_factor);
+ AUD_setDistanceModel(AUD_DistanceModel(scene->audio.distance_model));
+
+ // from see blender.c:
+ // FIXME: this version patching should really be part of the file-reading code,
+ // but we still get too many unrelated data-corruption crashes otherwise...
+ if (blenderdata->versionfile < 250)
+ do_versions_ipos_to_animato(blenderdata);
if (sceneconverter)
{
diff --git a/source/gameengine/Converter/BL_ArmatureChannel.cpp b/source/gameengine/Converter/BL_ArmatureChannel.cpp
index 424c8441c0e..f971a900962 100644
--- a/source/gameengine/Converter/BL_ArmatureChannel.cpp
+++ b/source/gameengine/Converter/BL_ArmatureChannel.cpp
@@ -108,15 +108,15 @@ PyAttributeDef BL_ArmatureChannel::Attributes[] = {
/* attributes directly taken from bPoseChannel */
PyAttributeDef BL_ArmatureChannel::AttributesPtr[] = {
KX_PYATTRIBUTE_CHAR_RO("name",bPoseChannel,name),
- KX_PYATTRIBUTE_FLAG_RO("has_ik",bPoseChannel,flag, POSE_CHAIN),
+ KX_PYATTRIBUTE_FLAG_RO("is_in_ik_chain",bPoseChannel,flag, POSE_CHAIN),
KX_PYATTRIBUTE_FLAG_NEGATIVE_RO("ik_dof_x",bPoseChannel,ikflag, BONE_IK_NO_XDOF),
KX_PYATTRIBUTE_FLAG_NEGATIVE_RO("ik_dof_y",bPoseChannel,ikflag, BONE_IK_NO_YDOF),
KX_PYATTRIBUTE_FLAG_NEGATIVE_RO("ik_dof_z",bPoseChannel,ikflag, BONE_IK_NO_ZDOF),
- KX_PYATTRIBUTE_FLAG_RO("ik_limit_x",bPoseChannel,ikflag, BONE_IK_XLIMIT),
- KX_PYATTRIBUTE_FLAG_RO("ik_limit_y",bPoseChannel,ikflag, BONE_IK_YLIMIT),
- KX_PYATTRIBUTE_FLAG_RO("ik_limit_z",bPoseChannel,ikflag, BONE_IK_ZLIMIT),
- KX_PYATTRIBUTE_FLAG_RO("ik_rot_control",bPoseChannel,ikflag, BONE_IK_ROTCTL),
- KX_PYATTRIBUTE_FLAG_RO("ik_lin_control",bPoseChannel,ikflag, BONE_IK_LINCTL),
+ KX_PYATTRIBUTE_FLAG_RO("use_ik_limit_x",bPoseChannel,ikflag, BONE_IK_XLIMIT),
+ KX_PYATTRIBUTE_FLAG_RO("use_ik_limit_y",bPoseChannel,ikflag, BONE_IK_YLIMIT),
+ KX_PYATTRIBUTE_FLAG_RO("use_ik_limit_z",bPoseChannel,ikflag, BONE_IK_ZLIMIT),
+ KX_PYATTRIBUTE_FLAG_RO("use_ik_rotation_control",bPoseChannel,ikflag, BONE_IK_ROTCTL),
+ KX_PYATTRIBUTE_FLAG_RO("use_ik_linear_control",bPoseChannel,ikflag, BONE_IK_LINCTL),
KX_PYATTRIBUTE_FLOAT_VECTOR_RW("location",-FLT_MAX,FLT_MAX,bPoseChannel,loc,3),
KX_PYATTRIBUTE_FLOAT_VECTOR_RW("scale",-FLT_MAX,FLT_MAX,bPoseChannel,size,3),
KX_PYATTRIBUTE_FLOAT_VECTOR_RW("rotation_quaternion",-1.0f,1.0f,bPoseChannel,quat,4),
@@ -136,8 +136,8 @@ PyAttributeDef BL_ArmatureChannel::AttributesPtr[] = {
KX_PYATTRIBUTE_FLOAT_RO("ik_stiffness_y",bPoseChannel,stiffness[1]),
KX_PYATTRIBUTE_FLOAT_RO("ik_stiffness_z",bPoseChannel,stiffness[2]),
KX_PYATTRIBUTE_FLOAT_RO("ik_stretch",bPoseChannel,ikstretch),
- KX_PYATTRIBUTE_FLOAT_RW("ik_rot_weight",0,1.0f,bPoseChannel,ikrotweight),
- KX_PYATTRIBUTE_FLOAT_RW("ik_lin_weight",0,1.0f,bPoseChannel,iklinweight),
+ KX_PYATTRIBUTE_FLOAT_RW("ik_rotation_weight",0,1.0f,bPoseChannel,ikrotweight),
+ KX_PYATTRIBUTE_FLOAT_RW("ik_linear_weight",0,1.0f,bPoseChannel,iklinweight),
KX_PYATTRIBUTE_RW_FUNCTION("joint_rotation",BL_ArmatureChannel,py_attr_get_joint_rotation,py_attr_set_joint_rotation),
{ NULL } //Sentinel
};
diff --git a/source/gameengine/Converter/BL_ArmatureConstraint.cpp b/source/gameengine/Converter/BL_ArmatureConstraint.cpp
index 0b7ab043d16..ed29cfedd54 100644
--- a/source/gameengine/Converter/BL_ArmatureConstraint.cpp
+++ b/source/gameengine/Converter/BL_ArmatureConstraint.cpp
@@ -267,8 +267,8 @@ PyAttributeDef BL_ArmatureConstraint::Attributes[] = {
KX_PYATTRIBUTE_RO_FUNCTION("name",BL_ArmatureConstraint,py_attr_getattr),
KX_PYATTRIBUTE_RW_FUNCTION("enforce",BL_ArmatureConstraint,py_attr_getattr,py_attr_setattr),
KX_PYATTRIBUTE_RW_FUNCTION("headtail",BL_ArmatureConstraint,py_attr_getattr,py_attr_setattr),
- KX_PYATTRIBUTE_RO_FUNCTION("lin_error",BL_ArmatureConstraint,py_attr_getattr),
- KX_PYATTRIBUTE_RO_FUNCTION("rot_error",BL_ArmatureConstraint,py_attr_getattr),
+ KX_PYATTRIBUTE_RO_FUNCTION("error_location",BL_ArmatureConstraint,py_attr_getattr),
+ KX_PYATTRIBUTE_RO_FUNCTION("error_rotation",BL_ArmatureConstraint,py_attr_getattr),
KX_PYATTRIBUTE_RW_FUNCTION("target",BL_ArmatureConstraint,py_attr_getattr,py_attr_setattr),
KX_PYATTRIBUTE_RW_FUNCTION("subtarget",BL_ArmatureConstraint,py_attr_getattr,py_attr_setattr),
KX_PYATTRIBUTE_RW_FUNCTION("active",BL_ArmatureConstraint,py_attr_getattr,py_attr_setattr),
diff --git a/source/gameengine/Converter/BL_ArmatureObject.cpp b/source/gameengine/Converter/BL_ArmatureObject.cpp
index 7dd2543e89d..97d6b6efd27 100644
--- a/source/gameengine/Converter/BL_ArmatureObject.cpp
+++ b/source/gameengine/Converter/BL_ArmatureObject.cpp
@@ -30,6 +30,7 @@
#include "BL_ArmatureObject.h"
#include "BL_ActionActuator.h"
#include "KX_BlenderSceneConverter.h"
+#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
#include "BLI_ghash.h"
#include "BLI_math.h"
diff --git a/source/gameengine/Expressions/PyObjectPlus.h b/source/gameengine/Expressions/PyObjectPlus.h
index 7afa85c8c31..625549a272e 100644
--- a/source/gameengine/Expressions/PyObjectPlus.h
+++ b/source/gameengine/Expressions/PyObjectPlus.h
@@ -319,9 +319,6 @@ typedef struct KX_PYATTRIBUTE_DEF {
} m_typeCheck;
} PyAttributeDef;
-#define KX_PYATTRIBUTE_DUMMY(name) \
- { name, KX_PYATTRIBUTE_TYPE_DUMMY, KX_PYATTRIBUTE_RO, 0, 0, 0.f, 0.f, false, false, 0, 0, 1, NULL, NULL, NULL, {NULL, NULL, NULL, NULL, NULL, NULL, NULL} }
-
#define KX_PYATTRIBUTE_BOOL_RW(name,object,field) \
{ name, KX_PYATTRIBUTE_TYPE_BOOL, KX_PYATTRIBUTE_RW, 0, 1, 0.f, 0.f, false, false, offsetof(object,field), 0, 1, NULL, NULL, NULL, {&((object *)0)->field, NULL, NULL, NULL, NULL, NULL, NULL} }
#define KX_PYATTRIBUTE_BOOL_RW_CHECK(name,object,field,function) \
diff --git a/source/gameengine/GameLogic/SCA_ISensor.cpp b/source/gameengine/GameLogic/SCA_ISensor.cpp
index bff02326c9c..fada69848b2 100644
--- a/source/gameengine/GameLogic/SCA_ISensor.cpp
+++ b/source/gameengine/GameLogic/SCA_ISensor.cpp
@@ -357,9 +357,8 @@ PyAttributeDef SCA_ISensor::Attributes[] = {
KX_PYATTRIBUTE_RO_FUNCTION("triggered", SCA_ISensor, pyattr_get_triggered),
KX_PYATTRIBUTE_RO_FUNCTION("positive", SCA_ISensor, pyattr_get_positive),
KX_PYATTRIBUTE_RO_FUNCTION("status", SCA_ISensor, pyattr_get_status),
- //KX_PYATTRIBUTE_TODO("links"),
- //KX_PYATTRIBUTE_TODO("posTicks"),
- //KX_PYATTRIBUTE_TODO("negTicks"),
+ KX_PYATTRIBUTE_RO_FUNCTION("pos_ticks", SCA_ISensor, pyattr_get_posTicks),
+ KX_PYATTRIBUTE_RO_FUNCTION("neg_ticks", SCA_ISensor, pyattr_get_negTicks),
{ NULL } //Sentinel
};
@@ -401,6 +400,18 @@ PyObject* SCA_ISensor::pyattr_get_status(void *self_v, const KX_PYATTRIBUTE_DEF
return PyLong_FromSsize_t(status);
}
+PyObject* SCA_ISensor::pyattr_get_posTicks(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ SCA_ISensor* self= static_cast<SCA_ISensor*>(self_v);
+ return PyLong_FromLong(self->GetPosTicks());
+}
+
+PyObject* SCA_ISensor::pyattr_get_negTicks(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ SCA_ISensor* self= static_cast<SCA_ISensor*>(self_v);
+ return PyLong_FromLong(self->GetNegTicks());
+}
+
int SCA_ISensor::pyattr_check_level(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
{
SCA_ISensor* self= static_cast<SCA_ISensor*>(self_v);
diff --git a/source/gameengine/GameLogic/SCA_ISensor.h b/source/gameengine/GameLogic/SCA_ISensor.h
index 42d06d856b6..2d3a3ef08a0 100644
--- a/source/gameengine/GameLogic/SCA_ISensor.h
+++ b/source/gameengine/GameLogic/SCA_ISensor.h
@@ -167,6 +167,18 @@ public:
return m_prev_state;
}
+ /** get the number of ticks since the last positive pulse */
+ int GetPosTicks()
+ {
+ return m_pos_ticks;
+ }
+
+ /** get the number of ticks since the last negative pulse */
+ int GetNegTicks()
+ {
+ return m_neg_ticks;
+ }
+
/** Resume sensing. */
void Resume();
@@ -185,6 +197,9 @@ public:
static PyObject* pyattr_get_triggered(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
static PyObject* pyattr_get_positive(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
static PyObject* pyattr_get_status(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_posTicks(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_negTicks(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+
static int pyattr_check_level(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
static int pyattr_check_tap(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
diff --git a/source/gameengine/GameLogic/SCA_JoystickSensor.cpp b/source/gameengine/GameLogic/SCA_JoystickSensor.cpp
index 5ab42ae7608..29a6a73b865 100644
--- a/source/gameengine/GameLogic/SCA_JoystickSensor.cpp
+++ b/source/gameengine/GameLogic/SCA_JoystickSensor.cpp
@@ -290,7 +290,6 @@ PyAttributeDef SCA_JoystickSensor::Attributes[] = {
KX_PYATTRIBUTE_RO_FUNCTION("numButtons", SCA_JoystickSensor, pyattr_get_num_buttons),
KX_PYATTRIBUTE_RO_FUNCTION("numHats", SCA_JoystickSensor, pyattr_get_num_hats),
KX_PYATTRIBUTE_RO_FUNCTION("connected", SCA_JoystickSensor, pyattr_get_connected),
- //KX_PYATTRIBUTE_TODO("events"),
{ NULL } //Sentinel
};
diff --git a/source/gameengine/GameLogic/SCA_PythonController.cpp b/source/gameengine/GameLogic/SCA_PythonController.cpp
index 48fdcb3eb44..1f05846abe4 100644
--- a/source/gameengine/GameLogic/SCA_PythonController.cpp
+++ b/source/gameengine/GameLogic/SCA_PythonController.cpp
@@ -178,7 +178,7 @@ PyObject* SCA_PythonController::sPyGetCurrentController(PyObject *self)
{
if(m_sCurrentController==NULL)
{
- PyErr_SetString(PyExc_SystemError, "GameLogic.getCurrentController(), this function is being run outside the python controllers context, or blenders internal state is corrupt.");
+ PyErr_SetString(PyExc_SystemError, "bge.logic.getCurrentController(), this function is being run outside the python controllers context, or blenders internal state is corrupt.");
return NULL;
}
return m_sCurrentController->GetProxy();
diff --git a/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp b/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp
index 9cdee2a340c..8f03408b841 100644
--- a/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp
+++ b/source/gameengine/GamePlayer/ghost/GPG_ghost.cpp
@@ -557,7 +557,7 @@ int main(int argc, char** argv)
#if 0
// future stuff
- else if(!strcmp(argv[i], "stencil")
+ else if(!strcmp(argv[i], "use_stencil")
stereomode = RAS_STEREO_STENCIL;
#endif
diff --git a/source/gameengine/Ketsji/KX_BlenderMaterial.cpp b/source/gameengine/Ketsji/KX_BlenderMaterial.cpp
index 2ef7e55429f..f697942c6ee 100644
--- a/source/gameengine/Ketsji/KX_BlenderMaterial.cpp
+++ b/source/gameengine/Ketsji/KX_BlenderMaterial.cpp
@@ -794,9 +794,9 @@ PyMethodDef KX_BlenderMaterial::Methods[] =
};
PyAttributeDef KX_BlenderMaterial::Attributes[] = {
- //KX_PYATTRIBUTE_TODO("shader"),
- //KX_PYATTRIBUTE_TODO("materialIndex"),
- //KX_PYATTRIBUTE_TODO("blending"),
+ KX_PYATTRIBUTE_RO_FUNCTION("shader", KX_BlenderMaterial, pyattr_get_shader),
+ KX_PYATTRIBUTE_RO_FUNCTION("material_index", KX_BlenderMaterial, pyattr_get_materialIndex),
+ KX_PYATTRIBUTE_RW_FUNCTION("blend_type", KX_BlenderMaterial, pyattr_get_blending, pyattr_set_blending),
{ NULL } //Sentinel
};
@@ -822,6 +822,37 @@ PyTypeObject KX_BlenderMaterial::Type = {
py_base_new
};
+PyObject* KX_BlenderMaterial::pyattr_get_shader(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_BlenderMaterial* self= static_cast<KX_BlenderMaterial*>(self_v);
+ return self->PygetShader(NULL, NULL);
+}
+
+PyObject* KX_BlenderMaterial::pyattr_get_materialIndex(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_BlenderMaterial* self= static_cast<KX_BlenderMaterial*>(self_v);
+ return PyLong_FromSsize_t(self->GetMaterialIndex());
+}
+
+PyObject* KX_BlenderMaterial::pyattr_get_blending(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_BlenderMaterial* self= static_cast<KX_BlenderMaterial*>(self_v);
+ unsigned int* bfunc = self->getBlendFunc();
+ return Py_BuildValue("(ll)", (long int)bfunc[0], (long int)bfunc[1]);
+}
+
+int KX_BlenderMaterial::pyattr_set_blending(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ KX_BlenderMaterial* self= static_cast<KX_BlenderMaterial*>(self_v);
+ PyObject* obj = self->PysetBlending(value, NULL);
+ if(obj)
+ {
+ Py_DECREF(obj);
+ return 0;
+ }
+ return -1;
+}
+
KX_PYMETHODDEF_DOC( KX_BlenderMaterial, getShader , "getShader()")
{
if( !GLEW_ARB_fragment_shader) {
@@ -908,7 +939,7 @@ static unsigned int GL_array[11] = {
GL_SRC_ALPHA_SATURATE
};
-KX_PYMETHODDEF_DOC( KX_BlenderMaterial, setBlending , "setBlending( GameLogic.src, GameLogic.dest)")
+KX_PYMETHODDEF_DOC( KX_BlenderMaterial, setBlending , "setBlending( bge.logic.src, bge.logic.dest)")
{
unsigned int b[2];
if(PyArg_ParseTuple(args, "ii:setBlending", &b[0], &b[1]))
diff --git a/source/gameengine/Ketsji/KX_BlenderMaterial.h b/source/gameengine/Ketsji/KX_BlenderMaterial.h
index 5bf62ff6b7c..239e334f68a 100644
--- a/source/gameengine/Ketsji/KX_BlenderMaterial.h
+++ b/source/gameengine/Ketsji/KX_BlenderMaterial.h
@@ -79,6 +79,9 @@ public:
Image * getImage (unsigned int idx) {
return (idx < MAXTEX && mMaterial) ? mMaterial->img[idx] : NULL;
}
+ unsigned int* getBlendFunc() {
+ return mBlendFunc;
+ }
// for ipos
void UpdateIPO(
MT_Vector4 rgba, MT_Vector3 specrgb,
@@ -99,6 +102,11 @@ public:
// --------------------------------
virtual PyObject* py_repr(void) { return PyUnicode_FromString(mMaterial->matname.ReadPtr()); }
+ static PyObject* pyattr_get_shader(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_materialIndex(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_blending(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static int pyattr_set_blending(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+
KX_PYMETHOD_DOC( KX_BlenderMaterial, getShader );
KX_PYMETHOD_DOC( KX_BlenderMaterial, getMaterialIndex );
KX_PYMETHOD_DOC( KX_BlenderMaterial, getTexture );
diff --git a/source/gameengine/Ketsji/KX_Camera.cpp b/source/gameengine/Ketsji/KX_Camera.cpp
index 36b90411e1f..2402baf92ac 100644
--- a/source/gameengine/Ketsji/KX_Camera.cpp
+++ b/source/gameengine/Ketsji/KX_Camera.cpp
@@ -553,8 +553,8 @@ KX_PYMETHODDEF_DOC_VARARGS(KX_Camera, sphereInsideFrustum,
"\tcenter = the center of the sphere (in world coordinates.)\n"
"\tradius = the radius of the sphere\n\n"
"\tExample:\n"
-"\timport GameLogic\n\n"
-"\tco = GameLogic.getCurrentController()\n"
+"\timport bge.logic\n\n"
+"\tco = bge.logic.getCurrentController()\n"
"\tcam = co.GetOwner()\n\n"
"\t# A sphere of radius 4.0 located at [x, y, z] = [1.0, 1.0, 1.0]\n"
"\tif (cam.sphereInsideFrustum([1.0, 1.0, 1.0], 4) != cam.OUTSIDE):\n"
@@ -586,8 +586,8 @@ KX_PYMETHODDEF_DOC_O(KX_Camera, boxInsideFrustum,
"\tinside/outside/intersects this camera's viewing frustum.\n\n"
"\tbox = a list of the eight (8) corners of the box (in world coordinates.)\n\n"
"\tExample:\n"
-"\timport GameLogic\n\n"
-"\tco = GameLogic.getCurrentController()\n"
+"\timport bge.logic\n\n"
+"\tco = bge.logic.getCurrentController()\n"
"\tcam = co.GetOwner()\n\n"
"\tbox = []\n"
"\tbox.append([-1.0, -1.0, -1.0])\n"
@@ -630,8 +630,8 @@ KX_PYMETHODDEF_DOC_O(KX_Camera, pointInsideFrustum,
"\treturns 1 if the given point is inside this camera's viewing frustum.\n\n"
"\tpoint = The point to test (in world coordinates.)\n\n"
"\tExample:\n"
-"\timport GameLogic\n\n"
-"\tco = GameLogic.getCurrentController()\n"
+"\timport bge.logic\n\n"
+"\tco = bge.logic.getCurrentController()\n"
"\tcam = co.GetOwner()\n\n"
"\t# Test point [0.0, 0.0, 0.0]"
"\tif (cam.pointInsideFrustum([0.0, 0.0, 0.0])):\n"
diff --git a/source/gameengine/Ketsji/KX_ConstraintWrapper.cpp b/source/gameengine/Ketsji/KX_ConstraintWrapper.cpp
index 8af6e63f343..b1baa5fe9e1 100644
--- a/source/gameengine/Ketsji/KX_ConstraintWrapper.cpp
+++ b/source/gameengine/Ketsji/KX_ConstraintWrapper.cpp
@@ -110,8 +110,14 @@ PyMethodDef KX_ConstraintWrapper::Methods[] = {
};
PyAttributeDef KX_ConstraintWrapper::Attributes[] = {
- //KX_PYATTRIBUTE_TODO("constraintId"),
+ KX_PYATTRIBUTE_RO_FUNCTION("constraint_id", KX_ConstraintWrapper, pyattr_get_constraintId),
{ NULL } //Sentinel
};
+PyObject* KX_ConstraintWrapper::pyattr_get_constraintId(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_ConstraintWrapper* self= static_cast<KX_ConstraintWrapper*>(self_v);
+ return self->PyGetConstraintId();
+}
+
#endif // DISABLE_PYTHON
diff --git a/source/gameengine/Ketsji/KX_ConstraintWrapper.h b/source/gameengine/Ketsji/KX_ConstraintWrapper.h
index 530ecf16fed..db9543c23ae 100644
--- a/source/gameengine/Ketsji/KX_ConstraintWrapper.h
+++ b/source/gameengine/Ketsji/KX_ConstraintWrapper.h
@@ -44,6 +44,8 @@ public:
KX_PYMETHOD_NOARGS(KX_ConstraintWrapper,GetConstraintId);
KX_PYMETHOD(KX_ConstraintWrapper,SetParam);
KX_PYMETHOD(KX_ConstraintWrapper,GetParam);
+
+ static PyObject* pyattr_get_constraintId(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
#endif
private:
diff --git a/source/gameengine/Ketsji/KX_KetsjiEngine.cpp b/source/gameengine/Ketsji/KX_KetsjiEngine.cpp
index 71cd8b36045..1a6ae69f792 100644
--- a/source/gameengine/Ketsji/KX_KetsjiEngine.cpp
+++ b/source/gameengine/Ketsji/KX_KetsjiEngine.cpp
@@ -235,7 +235,7 @@ void KX_KetsjiEngine::SetRasterizer(RAS_IRasterizer* rasterizer)
#ifndef DISABLE_PYTHON
/*
- * At the moment the GameLogic module is imported into 'pythondictionary' after this function is called.
+ * At the moment the bge.logic module is imported into 'pythondictionary' after this function is called.
* if this function ever changes to assign a copy, make sure the game logic module is imported into this dictionary before hand.
*/
void KX_KetsjiEngine::SetPyNamespace(PyObject* pythondictionary)
@@ -966,44 +966,17 @@ void KX_KetsjiEngine::DoSound(KX_Scene* scene)
KX_Camera* cam = scene->GetActiveCamera();
if (!cam)
return;
- MT_Point3 listenerposition = cam->NodeGetWorldPosition();
- MT_Vector3 listenervelocity = cam->GetLinearVelocity();
- MT_Matrix3x3 listenerorientation = cam->NodeGetWorldOrientation();
- {
- AUD_3DData data;
- float f;
-
- listenerorientation.getValue3x3(data.orientation);
- listenerposition.getValue(data.position);
- listenervelocity.getValue(data.velocity);
-
- f = data.position[1];
- data.position[1] = data.position[2];
- data.position[2] = -f;
-
- f = data.velocity[1];
- data.velocity[1] = data.velocity[2];
- data.velocity[2] = -f;
+ float f[4];
- f = data.orientation[1];
- data.orientation[1] = data.orientation[2];
- data.orientation[2] = -f;
+ cam->NodeGetWorldPosition().getValue(f);
+ AUD_setListenerLocation(f);
- f = data.orientation[3];
- data.orientation[3] = -data.orientation[6];
- data.orientation[6] = f;
+ cam->GetLinearVelocity().getValue(f);
+ AUD_setListenerVelocity(f);
- f = data.orientation[4];
- data.orientation[4] = -data.orientation[8];
- data.orientation[8] = -f;
-
- f = data.orientation[5];
- data.orientation[5] = data.orientation[7];
- data.orientation[7] = f;
-
- AUD_updateListener(&data);
- }
+ cam->NodeGetWorldOrientation().getRotation().getValue(f);
+ AUD_setListenerOrientation(f);
}
diff --git a/source/gameengine/Ketsji/KX_PolyProxy.cpp b/source/gameengine/Ketsji/KX_PolyProxy.cpp
index 837c79c77b3..9395e57e68b 100644
--- a/source/gameengine/Ketsji/KX_PolyProxy.cpp
+++ b/source/gameengine/Ketsji/KX_PolyProxy.cpp
@@ -72,90 +72,19 @@ PyMethodDef KX_PolyProxy::Methods[] = {
};
PyAttributeDef KX_PolyProxy::Attributes[] = {
- /* All dummy's so they come up in a dir() */
- //KX_PYATTRIBUTE_TODO("DummyProps"),
- KX_PYATTRIBUTE_DUMMY("matname"),
- KX_PYATTRIBUTE_DUMMY("texture"),
- KX_PYATTRIBUTE_DUMMY("material"),
- KX_PYATTRIBUTE_DUMMY("matid"),
- KX_PYATTRIBUTE_DUMMY("v1"),
- KX_PYATTRIBUTE_DUMMY("v2"),
- KX_PYATTRIBUTE_DUMMY("v3"),
- KX_PYATTRIBUTE_DUMMY("v4"),
- KX_PYATTRIBUTE_DUMMY("visible"),
- KX_PYATTRIBUTE_DUMMY("collide"),
+ KX_PYATTRIBUTE_RO_FUNCTION("material_name", KX_PolyProxy, pyattr_get_material_name),
+ KX_PYATTRIBUTE_RO_FUNCTION("texture_name", KX_PolyProxy, pyattr_get_texture_name),
+ KX_PYATTRIBUTE_RO_FUNCTION("material", KX_PolyProxy, pyattr_get_material),
+ KX_PYATTRIBUTE_RO_FUNCTION("material_id", KX_PolyProxy, pyattr_get_material_id),
+ KX_PYATTRIBUTE_RO_FUNCTION("v1", KX_PolyProxy, pyattr_get_v1),
+ KX_PYATTRIBUTE_RO_FUNCTION("v2", KX_PolyProxy, pyattr_get_v2),
+ KX_PYATTRIBUTE_RO_FUNCTION("v3", KX_PolyProxy, pyattr_get_v3),
+ KX_PYATTRIBUTE_RO_FUNCTION("v4", KX_PolyProxy, pyattr_get_v4),
+ KX_PYATTRIBUTE_RO_FUNCTION("visible", KX_PolyProxy, pyattr_get_visible),
+ KX_PYATTRIBUTE_RO_FUNCTION("collide", KX_PolyProxy, pyattr_get_collide),
{ NULL } //Sentinel
};
-#if 0
-PyObject* KX_PolyProxy::py_getattro(PyObject *attr)
-{
- char *attr_str= _PyUnicode_AsString(attr);
- if (!strcmp(attr_str, "matname"))
- {
- return PyUnicode_FromString(m_polygon->GetMaterial()->GetPolyMaterial()->GetMaterialName());
- }
- if (!strcmp(attr_str, "texture"))
- {
- return PyUnicode_FromString(m_polygon->GetMaterial()->GetPolyMaterial()->GetTextureName());
- }
- if (!strcmp(attr_str, "material"))
- {
- RAS_IPolyMaterial *polymat = m_polygon->GetMaterial()->GetPolyMaterial();
- if(polymat->GetFlag() & RAS_BLENDERMAT)
- {
- KX_BlenderMaterial* mat = static_cast<KX_BlenderMaterial*>(polymat);
- return mat->GetProxy();
- }
- else
- {
- KX_PolygonMaterial* mat = static_cast<KX_PolygonMaterial*>(polymat);
- return mat->GetProxy();
- }
- }
- if (!strcmp(attr_str, "matid"))
- {
- // we'll have to scan through the material bucket of the mes and compare with
- // the one of the polygon
- RAS_MaterialBucket* polyBucket = m_polygon->GetMaterial();
- unsigned int matid;
- for (matid=0; matid<(unsigned int)m_mesh->NumMaterials(); matid++)
- {
- RAS_MeshMaterial* meshMat = m_mesh->GetMeshMaterial(matid);
- if (meshMat->m_bucket == polyBucket)
- // found it
- break;
- }
- return PyLong_FromSsize_t(matid);
- }
- if (!strcmp(attr_str, "v1"))
- {
- return PyLong_FromSsize_t(m_polygon->GetVertexOffsetAbs(m_mesh, 0));
- }
- if (!strcmp(attr_str, "v2"))
- {
- return PyLong_FromSsize_t(m_polygon->GetVertexOffsetAbs(m_mesh, 1));
- }
- if (!strcmp(attr_str, "v3"))
- {
- return PyLong_FromSsize_t(m_polygon->GetVertexOffsetAbs(m_mesh, 2));
- }
- if (!strcmp(attr_str, "v4"))
- {
- return PyLong_FromSsize_t(((m_polygon->VertexCount()>3)?m_polygon->GetVertexOffsetAbs(m_mesh, 3):0));
- }
- if (!strcmp(attr_str, "visible"))
- {
- return PyLong_FromSsize_t(m_polygon->IsVisible());
- }
- if (!strcmp(attr_str, "collide"))
- {
- return PyLong_FromSsize_t(m_polygon->IsCollider());
- }
- // py_getattro_up(CValue); // XXX -- todo, make all these attributes
-}
-#endif
-
KX_PolyProxy::KX_PolyProxy(const RAS_MeshObject*mesh, RAS_Polygon* polygon)
: m_polygon(polygon),
m_mesh((RAS_MeshObject*)mesh)
@@ -179,7 +108,75 @@ CValue* KX_PolyProxy::GetReplica() { return NULL;}
// stuff for python integration
-KX_PYMETHODDEF_DOC_NOARGS(KX_PolyProxy, getMaterialIndex,
+PyObject* KX_PolyProxy::pyattr_get_material_name(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_PolyProxy* self= static_cast<KX_PolyProxy*>(self_v);
+ return self->PygetMaterialName();
+}
+
+PyObject* KX_PolyProxy::pyattr_get_texture_name(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_PolyProxy* self= static_cast<KX_PolyProxy*>(self_v);
+ return self->PygetTextureName();
+}
+
+PyObject* KX_PolyProxy::pyattr_get_material(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_PolyProxy* self= static_cast<KX_PolyProxy*>(self_v);
+ return self->PygetMaterial();
+}
+
+PyObject* KX_PolyProxy::pyattr_get_material_id(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_PolyProxy* self= static_cast<KX_PolyProxy*>(self_v);
+ return self->PygetMaterialIndex();
+}
+
+PyObject* KX_PolyProxy::pyattr_get_v1(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_PolyProxy* self= static_cast<KX_PolyProxy*>(self_v);
+
+ return PyLong_FromSsize_t(self->m_polygon->GetVertexOffsetAbs(self->m_mesh, 0));
+}
+
+PyObject* KX_PolyProxy::pyattr_get_v2(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_PolyProxy* self= static_cast<KX_PolyProxy*>(self_v);
+
+ return PyLong_FromSsize_t(self->m_polygon->GetVertexOffsetAbs(self->m_mesh, 1));
+}
+
+PyObject* KX_PolyProxy::pyattr_get_v3(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_PolyProxy* self= static_cast<KX_PolyProxy*>(self_v);
+
+ return PyLong_FromSsize_t(self->m_polygon->GetVertexOffsetAbs(self->m_mesh, 2));
+}
+
+PyObject* KX_PolyProxy::pyattr_get_v4(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_PolyProxy* self= static_cast<KX_PolyProxy*>(self_v);
+
+ if (3 < self->m_polygon->VertexCount())
+ {
+ return PyLong_FromSsize_t(self->m_polygon->GetVertexOffsetAbs(self->m_mesh, 3));
+ }
+ return PyLong_FromSsize_t(0);
+}
+
+PyObject* KX_PolyProxy::pyattr_get_visible(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_PolyProxy* self= static_cast<KX_PolyProxy*>(self_v);
+ return self->PyisVisible();
+}
+
+PyObject* KX_PolyProxy::pyattr_get_collide(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_PolyProxy* self= static_cast<KX_PolyProxy*>(self_v);
+ return self->PyisCollider();
+}
+
+KX_PYMETHODDEF_DOC_NOARGS(KX_PolyProxy, getMaterialIndex,
"getMaterialIndex() : return the material index of the polygon in the mesh\n")
{
RAS_MaterialBucket* polyBucket = m_polygon->GetMaterial();
diff --git a/source/gameengine/Ketsji/KX_PolyProxy.h b/source/gameengine/Ketsji/KX_PolyProxy.h
index 97d89b37435..3e669630e30 100644
--- a/source/gameengine/Ketsji/KX_PolyProxy.h
+++ b/source/gameengine/Ketsji/KX_PolyProxy.h
@@ -54,6 +54,16 @@ public:
// stuff for python integration
+ static PyObject* pyattr_get_material_name(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_texture_name(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_material(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_material_id(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_v1(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_v2(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_v3(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_v4(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_visible(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_collide(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
KX_PYMETHOD_DOC_NOARGS(KX_PolyProxy,getMaterialIndex)
KX_PYMETHOD_DOC_NOARGS(KX_PolyProxy,getNumVertex)
diff --git a/source/gameengine/Ketsji/KX_PolygonMaterial.cpp b/source/gameengine/Ketsji/KX_PolygonMaterial.cpp
index dacc74f139f..63204b16e8b 100644
--- a/source/gameengine/Ketsji/KX_PolygonMaterial.cpp
+++ b/source/gameengine/Ketsji/KX_PolygonMaterial.cpp
@@ -233,7 +233,7 @@ PyAttributeDef KX_PolygonMaterial::Attributes[] = {
KX_PYATTRIBUTE_FLOAT_RW("shininess", 0.0f, 1000.0f, KX_PolygonMaterial, m_shininess),
KX_PYATTRIBUTE_FLOAT_RW("specularity", 0.0f, 1000.0f, KX_PolygonMaterial, m_specularity),
- KX_PYATTRIBUTE_RW_FUNCTION("diffuse", KX_PolygonMaterial, pyattr_get_texture, pyattr_set_diffuse),
+ KX_PYATTRIBUTE_RW_FUNCTION("diffuse", KX_PolygonMaterial, pyattr_get_diffuse, pyattr_set_diffuse),
KX_PYATTRIBUTE_RW_FUNCTION("specular",KX_PolygonMaterial, pyattr_get_specular, pyattr_set_specular),
KX_PYATTRIBUTE_RO_FUNCTION("tface", KX_PolygonMaterial, pyattr_get_tface), /* How the heck is this even useful??? - Campbell */
diff --git a/source/gameengine/Ketsji/KX_PythonInit.cpp b/source/gameengine/Ketsji/KX_PythonInit.cpp
index 3350a59681b..3785f715803 100644
--- a/source/gameengine/Ketsji/KX_PythonInit.cpp
+++ b/source/gameengine/Ketsji/KX_PythonInit.cpp
@@ -45,6 +45,10 @@ extern "C" {
#include "marshal.h" /* python header for loading/saving dicts */
}
+
+#define WITH_PYTHON
+#include "AUD_PyInit.h"
+
#endif
#include "KX_PythonInit.h"
@@ -262,8 +266,8 @@ static PyObject* gPyRestartGame(PyObject*)
}
static char gPySaveGlobalDict_doc[] =
-"saveGlobalDict()\n\
-Saves GameLogic.globalDict to a file";
+ "saveGlobalDict()\n"
+ "Saves bge.logic.globalDict to a file";
static PyObject* gPySaveGlobalDict(PyObject*)
{
@@ -299,8 +303,8 @@ static PyObject* gPySaveGlobalDict(PyObject*)
}
static char gPyLoadGlobalDict_doc[] =
-"LoadGlobalDict()\n\
-Loads GameLogic.globalDict from a file";
+ "LoadGlobalDict()\n"
+ "Loads bge.logic.globalDict from a file";
static PyObject* gPyLoadGlobalDict(PyObject*)
{
@@ -375,15 +379,6 @@ static PyObject* gPyGetSpectrum(PyObject*)
return resultlist;
}
-
-static PyObject* gPyStopDSP(PyObject*, PyObject* args)
-{
- PyErr_SetString(PyExc_RuntimeError, "no audio device available");
- return NULL;
-
- Py_RETURN_NONE;
-}
-
static PyObject* gPySetLogicTicRate(PyObject*, PyObject* args)
{
float ticrate;
@@ -752,7 +747,6 @@ static struct PyMethodDef game_methods[] = {
{"getRandomFloat",(PyCFunction) gPyGetRandomFloat, METH_NOARGS, (const char *)gPyGetRandomFloat_doc},
{"setGravity",(PyCFunction) gPySetGravity, METH_O, (const char *)"set Gravitation"},
{"getSpectrum",(PyCFunction) gPyGetSpectrum, METH_NOARGS, (const char *)"get audio spectrum"},
- {"stopDSP",(PyCFunction) gPyStopDSP, METH_VARARGS, (const char *)"stop using the audio dsp (for performance reasons)"},
{"getMaxLogicFrame", (PyCFunction) gPyGetMaxLogicFrame, METH_NOARGS, (const char *)"Gets the max number of logic frame per render frame"},
{"setMaxLogicFrame", (PyCFunction) gPySetMaxLogicFrame, METH_VARARGS, (const char *)"Sets the max number of logic frame per render frame"},
{"getMaxPhysicsFrame", (PyCFunction) gPyGetMaxPhysicsFrame, METH_NOARGS, (const char *)"Gets the max number of physics frame per render frame"},
@@ -935,7 +929,6 @@ static PyObject* gPyDisableMist(PyObject*)
Py_RETURN_NONE;
}
-
static PyObject* gPySetMistStart(PyObject*, PyObject* args)
{
@@ -1232,7 +1225,7 @@ static struct PyMethodDef rasterizer_methods[] = {
// Initialization function for the module (*must* be called initGameLogic)
static char GameLogic_module_documentation[] =
-"This is the Python API for the game engine of GameLogic"
+"This is the Python API for the game engine of bge.logic"
;
static char Rasterizer_module_documentation[] =
@@ -1313,7 +1306,6 @@ PyObject* initGameLogic(KX_KetsjiEngine *engine, KX_Scene* scene) // quick hack
KX_MACRO_addTypesToDict(d, KX_PROPSENSOR_EXPRESSION, SCA_PropertySensor::KX_PROPSENSOR_EXPRESSION);
/* 3. Constraint actuator */
- /* XXX, TODO NXBGE, move constants names from KX_ACT_CONSTRAINT_foo to KX_CONSTRAINTACT_foo */
KX_MACRO_addTypesToDict(d, KX_CONSTRAINTACT_LOCX, KX_ConstraintActuator::KX_ACT_CONSTRAINT_LOCX);
KX_MACRO_addTypesToDict(d, KX_CONSTRAINTACT_LOCY, KX_ConstraintActuator::KX_ACT_CONSTRAINT_LOCY);
KX_MACRO_addTypesToDict(d, KX_CONSTRAINTACT_LOCZ, KX_ConstraintActuator::KX_ACT_CONSTRAINT_LOCZ);
@@ -1329,18 +1321,18 @@ PyObject* initGameLogic(KX_KetsjiEngine *engine, KX_Scene* scene) // quick hack
KX_MACRO_addTypesToDict(d, KX_CONSTRAINTACT_ORIX, KX_ConstraintActuator::KX_ACT_CONSTRAINT_ORIX);
KX_MACRO_addTypesToDict(d, KX_CONSTRAINTACT_ORIY, KX_ConstraintActuator::KX_ACT_CONSTRAINT_ORIY);
KX_MACRO_addTypesToDict(d, KX_CONSTRAINTACT_ORIZ, KX_ConstraintActuator::KX_ACT_CONSTRAINT_ORIZ);
- KX_MACRO_addTypesToDict(d, KX_ACT_CONSTRAINT_FHPX, KX_ConstraintActuator::KX_ACT_CONSTRAINT_FHPX);
- KX_MACRO_addTypesToDict(d, KX_ACT_CONSTRAINT_FHPY, KX_ConstraintActuator::KX_ACT_CONSTRAINT_FHPY);
- KX_MACRO_addTypesToDict(d, KX_ACT_CONSTRAINT_FHPZ, KX_ConstraintActuator::KX_ACT_CONSTRAINT_FHPZ);
- KX_MACRO_addTypesToDict(d, KX_ACT_CONSTRAINT_FHNX, KX_ConstraintActuator::KX_ACT_CONSTRAINT_FHNX);
- KX_MACRO_addTypesToDict(d, KX_ACT_CONSTRAINT_FHNY, KX_ConstraintActuator::KX_ACT_CONSTRAINT_FHNY);
- KX_MACRO_addTypesToDict(d, KX_ACT_CONSTRAINT_FHNZ, KX_ConstraintActuator::KX_ACT_CONSTRAINT_FHNZ);
- KX_MACRO_addTypesToDict(d, KX_ACT_CONSTRAINT_NORMAL, KX_ConstraintActuator::KX_ACT_CONSTRAINT_NORMAL);
- KX_MACRO_addTypesToDict(d, KX_ACT_CONSTRAINT_MATERIAL, KX_ConstraintActuator::KX_ACT_CONSTRAINT_MATERIAL);
- KX_MACRO_addTypesToDict(d, KX_ACT_CONSTRAINT_PERMANENT, KX_ConstraintActuator::KX_ACT_CONSTRAINT_PERMANENT);
- KX_MACRO_addTypesToDict(d, KX_ACT_CONSTRAINT_DISTANCE, KX_ConstraintActuator::KX_ACT_CONSTRAINT_DISTANCE);
- KX_MACRO_addTypesToDict(d, KX_ACT_CONSTRAINT_LOCAL, KX_ConstraintActuator::KX_ACT_CONSTRAINT_LOCAL);
- KX_MACRO_addTypesToDict(d, KX_ACT_CONSTRAINT_DOROTFH, KX_ConstraintActuator::KX_ACT_CONSTRAINT_DOROTFH);
+ KX_MACRO_addTypesToDict(d, KX_CONSTRAINTACT_FHPX, KX_ConstraintActuator::KX_ACT_CONSTRAINT_FHPX);
+ KX_MACRO_addTypesToDict(d, KX_CONSTRAINTACT_FHPY, KX_ConstraintActuator::KX_ACT_CONSTRAINT_FHPY);
+ KX_MACRO_addTypesToDict(d, KX_CONSTRAINTACT_FHPZ, KX_ConstraintActuator::KX_ACT_CONSTRAINT_FHPZ);
+ KX_MACRO_addTypesToDict(d, KX_CONSTRAINTACT_FHNX, KX_ConstraintActuator::KX_ACT_CONSTRAINT_FHNX);
+ KX_MACRO_addTypesToDict(d, KX_CONSTRAINTACT_FHNY, KX_ConstraintActuator::KX_ACT_CONSTRAINT_FHNY);
+ KX_MACRO_addTypesToDict(d, KX_CONSTRAINTACT_FHNZ, KX_ConstraintActuator::KX_ACT_CONSTRAINT_FHNZ);
+ KX_MACRO_addTypesToDict(d, KX_CONSTRAINTACT_NORMAL, KX_ConstraintActuator::KX_ACT_CONSTRAINT_NORMAL);
+ KX_MACRO_addTypesToDict(d, KX_CONSTRAINTACT_MATERIAL, KX_ConstraintActuator::KX_ACT_CONSTRAINT_MATERIAL);
+ KX_MACRO_addTypesToDict(d, KX_CONSTRAINTACT_PERMANENT, KX_ConstraintActuator::KX_ACT_CONSTRAINT_PERMANENT);
+ KX_MACRO_addTypesToDict(d, KX_CONSTRAINTACT_DISTANCE, KX_ConstraintActuator::KX_ACT_CONSTRAINT_DISTANCE);
+ KX_MACRO_addTypesToDict(d, KX_CONSTRAINTACT_LOCAL, KX_ConstraintActuator::KX_ACT_CONSTRAINT_LOCAL);
+ KX_MACRO_addTypesToDict(d, KX_CONSTRAINTACT_DOROTFH, KX_ConstraintActuator::KX_ACT_CONSTRAINT_DOROTFH);
/* 4. Ipo actuator, simple part */
KX_MACRO_addTypesToDict(d, KX_IPOACT_PLAY, KX_IpoActuator::KX_ACT_IPO_PLAY);
@@ -1582,7 +1574,7 @@ PyObject* initGameLogic(KX_KetsjiEngine *engine, KX_Scene* scene) // quick hack
// Check for errors
if (PyErr_Occurred())
{
- Py_FatalError("can't initialize module GameLogic");
+ Py_FatalError("can't initialize module bge.logic");
}
return m;
@@ -1979,7 +1971,6 @@ void setupGamePython(KX_KetsjiEngine* ketsjiengine, KX_Scene* startscene, Main *
PyDict_SetItemString(PyModule_GetDict(*gameLogic), "globalDict", pyGlobalDict); // Same as importing the module.
*gameLogic_keys = PyDict_Keys(PyModule_GetDict(*gameLogic));
- PyDict_SetItemString(dictionaryobject, "GameLogic", *gameLogic); // Same as importing the module.
initGameKeys();
initPythonConstraintBinding();
@@ -1987,10 +1978,11 @@ void setupGamePython(KX_KetsjiEngine* ketsjiengine, KX_Scene* startscene, Main *
initGeometry();
initBGL();
initBLF();
+ AUD_initPython();
initVideoTexture();
/* could be done a lot more nicely, but for now a quick way to get bge.* working */
- PyRun_SimpleString("sys = __import__('sys');mod = sys.modules['bge'] = type(sys)('bge');mod.__dict__.update({'logic':__import__('GameLogic'), 'render':__import__('Rasterizer'), 'events':__import__('GameKeys'), 'constraints':__import__('PhysicsConstraints'), 'types':__import__('GameTypes')})");
+ PyRun_SimpleString("sys = __import__('sys');mod = sys.modules['bge'] = type(sys)('bge');mod.__dict__.update({'logic':__import__('GameLogic'), 'render':__import__('Rasterizer'), 'events':__import__('GameKeys'), 'constraints':__import__('PhysicsConstraints'), 'types':__import__('GameTypes')});import bge");
}
static struct PyModuleDef Rasterizer_module_def = {
@@ -2338,15 +2330,15 @@ int saveGamePythonConfig( char **marshal_buffer)
memcpy(*marshal_buffer, marshal_cstring, marshal_length);
Py_DECREF(pyGlobalDictMarshal);
} else {
- printf("Error, GameLogic.globalDict could not be marshal'd\n");
+ printf("Error, bge.logic.globalDict could not be marshal'd\n");
}
} else {
- printf("Error, GameLogic.globalDict was removed\n");
+ printf("Error, bge.logic.globalDict was removed\n");
}
Py_DECREF(gameLogic);
} else {
PyErr_Clear();
- printf("Error, GameLogic failed to import GameLogic.globalDict will be lost\n");
+ printf("Error, bge.logic failed to import bge.logic.globalDict will be lost\n");
}
return marshal_length;
}
@@ -2378,7 +2370,7 @@ int loadGamePythonConfig(char *marshal_buffer, int marshal_length)
}
} else {
PyErr_Clear();
- printf("Error, GameLogic failed to import GameLogic.globalDict will be lost\n");
+ printf("Error, bge.logic failed to import bge.logic.globalDict will be lost\n");
}
}
return 0;
diff --git a/source/gameengine/Ketsji/KX_Scene.cpp b/source/gameengine/Ketsji/KX_Scene.cpp
index d4936d7054c..d0d27700166 100644
--- a/source/gameengine/Ketsji/KX_Scene.cpp
+++ b/source/gameengine/Ketsji/KX_Scene.cpp
@@ -2133,7 +2133,7 @@ PyAttributeDef KX_Scene::Attributes[] = {
KX_PYATTRIBUTE_RW_FUNCTION("pre_draw", KX_Scene, pyattr_get_drawing_callback_pre, pyattr_set_drawing_callback_pre),
KX_PYATTRIBUTE_RW_FUNCTION("post_draw", KX_Scene, pyattr_get_drawing_callback_post, pyattr_set_drawing_callback_post),
KX_PYATTRIBUTE_BOOL_RO("suspended", KX_Scene, m_suspend),
- KX_PYATTRIBUTE_BOOL_RO("activity_culling", KX_Scene, m_activity_culling),
+ KX_PYATTRIBUTE_BOOL_RO("use_activity_culling", KX_Scene, m_activity_culling),
KX_PYATTRIBUTE_FLOAT_RW("activity_culling_radius", 0.5f, FLT_MAX, KX_Scene, m_activity_box_radius),
KX_PYATTRIBUTE_BOOL_RO("dbvt_culling", KX_Scene, m_dbvt_culling),
{ NULL } //Sentinel
diff --git a/source/gameengine/Ketsji/KX_SoundActuator.cpp b/source/gameengine/Ketsji/KX_SoundActuator.cpp
index 7f9b090d680..9ebb36578c4 100644
--- a/source/gameengine/Ketsji/KX_SoundActuator.cpp
+++ b/source/gameengine/Ketsji/KX_SoundActuator.cpp
@@ -31,6 +31,7 @@
*/
#include "KX_SoundActuator.h"
+#include "AUD_C-API.h"
#include "KX_GameObject.h"
#include "KX_PyMath.h" // needed for PyObjectFrom()
#include <iostream>
@@ -75,23 +76,20 @@ void KX_SoundActuator::play()
// this is the sound that will be played and not deleted afterwards
AUD_Sound* sound = m_sound;
- // this sounds are for temporary stacked sounds, will be deleted if not NULL
+ // this sound is for temporary stacked sounds, will be deleted if not NULL
AUD_Sound* sound2 = NULL;
- AUD_Sound* sound3 = NULL;
+
+ bool loop = false;
switch (m_type)
{
case KX_SOUNDACT_LOOPBIDIRECTIONAL:
case KX_SOUNDACT_LOOPBIDIRECTIONAL_STOP:
- // create a ping pong sound on sound2 stacked on the orignal sound
- sound2 = AUD_pingpongSound(sound);
- // create a loop sound on sound3 stacked on the pingpong sound and let that one play (save it to sound)
- sound = sound3 = AUD_loopSound(sound2);
- break;
+ sound = sound2 = AUD_pingpongSound(sound);
+ // fall through
case KX_SOUNDACT_LOOPEND:
case KX_SOUNDACT_LOOPSTOP:
- // create a loop sound on sound2 stacked on the pingpong sound and let that one play (save it to sound)
- sound = sound2 = AUD_loopSound(sound);
+ loop = true;
break;
case KX_SOUNDACT_PLAYSTOP:
case KX_SOUNDACT_PLAYEND:
@@ -102,28 +100,27 @@ void KX_SoundActuator::play()
if(m_is3d)
{
// sound shall be played 3D
- m_handle = AUD_play3D(sound, 0);
-
- AUD_set3DSourceSetting(m_handle, AUD_3DSS_MAX_GAIN, m_3d.max_gain);
- AUD_set3DSourceSetting(m_handle, AUD_3DSS_MIN_GAIN, m_3d.min_gain);
- AUD_set3DSourceSetting(m_handle, AUD_3DSS_REFERENCE_DISTANCE, m_3d.reference_distance);
- AUD_set3DSourceSetting(m_handle, AUD_3DSS_MAX_DISTANCE, m_3d.max_distance);
- AUD_set3DSourceSetting(m_handle, AUD_3DSS_ROLLOFF_FACTOR, m_3d.rolloff_factor);
- AUD_set3DSourceSetting(m_handle, AUD_3DSS_CONE_INNER_ANGLE, m_3d.cone_inner_angle);
- AUD_set3DSourceSetting(m_handle, AUD_3DSS_CONE_OUTER_ANGLE, m_3d.cone_outer_angle);
- AUD_set3DSourceSetting(m_handle, AUD_3DSS_CONE_OUTER_GAIN, m_3d.cone_outer_gain);
+ m_handle = AUD_play(sound, 0);
+
+ AUD_setRelative(m_handle, false);
+ AUD_setVolumeMaximum(m_handle, m_3d.max_gain);
+ AUD_setVolumeMinimum(m_handle, m_3d.min_gain);
+ AUD_setDistanceReference(m_handle, m_3d.reference_distance);
+ AUD_setDistanceMaximum(m_handle, m_3d.max_distance);
+ AUD_setAttenuation(m_handle, m_3d.rolloff_factor);
+ AUD_setConeAngleInner(m_handle, m_3d.cone_inner_angle);
+ AUD_setConeAngleOuter(m_handle, m_3d.cone_outer_angle);
+ AUD_setConeVolumeOuter(m_handle, m_3d.cone_outer_gain);
}
else
m_handle = AUD_play(sound, 0);
+ if(loop)
+ AUD_setLoop(m_handle, -1);
AUD_setSoundPitch(m_handle, m_pitch);
AUD_setSoundVolume(m_handle, m_volume);
m_isplaying = true;
- // now we unload the pingpong and loop sounds, as we don't need them anymore
- // the started sound will continue playing like it was created, don't worry!
- if(sound3)
- AUD_unload(sound3);
if(sound2)
AUD_unload(sound2);
}
@@ -183,7 +180,7 @@ bool KX_SoundActuator::Update(double curtime, bool frame)
case KX_SOUNDACT_LOOPBIDIRECTIONAL:
{
// stop the looping so that the sound stops when it finished
- AUD_setLoop(m_handle, 0, -1);
+ AUD_setLoop(m_handle, 0);
break;
}
default:
@@ -215,39 +212,15 @@ bool KX_SoundActuator::Update(double curtime, bool frame)
{
if(m_is3d)
{
- AUD_3DData data;
- float f;
- ((KX_GameObject*)this->GetParent())->NodeGetWorldPosition().getValue(data.position);
- ((KX_GameObject*)this->GetParent())->GetLinearVelocity().getValue(data.velocity);
- ((KX_GameObject*)this->GetParent())->NodeGetWorldOrientation().getValue3x3(data.orientation);
-
- /*
- * The 3D data from blender has to be transformed for OpenAL:
- * - In blender z is up and y is forwards
- * - In OpenAL y is up and z is backwards
- * We have to do that for all 5 vectors.
- */
- f = data.position[1];
- data.position[1] = data.position[2];
- data.position[2] = -f;
-
- f = data.velocity[1];
- data.velocity[1] = data.velocity[2];
- data.velocity[2] = -f;
-
- f = data.orientation[1];
- data.orientation[1] = data.orientation[2];
- data.orientation[2] = -f;
-
- f = data.orientation[4];
- data.orientation[4] = data.orientation[5];
- data.orientation[5] = -f;
-
- f = data.orientation[7];
- data.orientation[7] = data.orientation[8];
- data.orientation[8] = -f;
-
- AUD_update3DSource(m_handle, &data);
+ KX_GameObject* obj = (KX_GameObject*)this->GetParent();
+ float f[4];
+
+ obj->NodeGetWorldPosition().getValue(f);
+ AUD_setSourceLocation(m_handle, f);
+ obj->GetLinearVelocity().getValue(f);
+ AUD_setSourceVelocity(m_handle, f);
+ obj->NodeGetWorldOrientation().getRotation().getValue(f);
+ AUD_setSourceOrientation(m_handle, f);
}
result = true;
}
@@ -300,19 +273,18 @@ PyMethodDef KX_SoundActuator::Methods[] = {
PyAttributeDef KX_SoundActuator::Attributes[] = {
KX_PYATTRIBUTE_BOOL_RO("is3D", KX_SoundActuator, m_is3d),
- KX_PYATTRIBUTE_RW_FUNCTION("maxGain3D", KX_SoundActuator, pyattr_get_3d_property, pyattr_set_3d_property),
- KX_PYATTRIBUTE_RW_FUNCTION("minGain3D", KX_SoundActuator, pyattr_get_3d_property, pyattr_set_3d_property),
- KX_PYATTRIBUTE_RW_FUNCTION("referenceDistance3D", KX_SoundActuator, pyattr_get_3d_property, pyattr_set_3d_property),
- KX_PYATTRIBUTE_RW_FUNCTION("maxDistance3D", KX_SoundActuator, pyattr_get_3d_property, pyattr_set_3d_property),
- KX_PYATTRIBUTE_RW_FUNCTION("rolloffFactor3D", KX_SoundActuator, pyattr_get_3d_property, pyattr_set_3d_property),
- KX_PYATTRIBUTE_RW_FUNCTION("coneInnerAngle3D", KX_SoundActuator, pyattr_get_3d_property, pyattr_set_3d_property),
- KX_PYATTRIBUTE_RW_FUNCTION("coneOuterAngle3D", KX_SoundActuator, pyattr_get_3d_property, pyattr_set_3d_property),
- KX_PYATTRIBUTE_RW_FUNCTION("coneOuterGain3D", KX_SoundActuator, pyattr_get_3d_property, pyattr_set_3d_property),
-
+ KX_PYATTRIBUTE_RW_FUNCTION("volume_maximum", KX_SoundActuator, pyattr_get_3d_property, pyattr_set_3d_property),
+ KX_PYATTRIBUTE_RW_FUNCTION("volume_minimum", KX_SoundActuator, pyattr_get_3d_property, pyattr_set_3d_property),
+ KX_PYATTRIBUTE_RW_FUNCTION("distance_reference", KX_SoundActuator, pyattr_get_3d_property, pyattr_set_3d_property),
+ KX_PYATTRIBUTE_RW_FUNCTION("distance_maximum", KX_SoundActuator, pyattr_get_3d_property, pyattr_set_3d_property),
+ KX_PYATTRIBUTE_RW_FUNCTION("attenuation", KX_SoundActuator, pyattr_get_3d_property, pyattr_set_3d_property),
+ KX_PYATTRIBUTE_RW_FUNCTION("cone_angle_inner", KX_SoundActuator, pyattr_get_3d_property, pyattr_set_3d_property),
+ KX_PYATTRIBUTE_RW_FUNCTION("cone_angle_outer", KX_SoundActuator, pyattr_get_3d_property, pyattr_set_3d_property),
+ KX_PYATTRIBUTE_RW_FUNCTION("cone_volume_outer", KX_SoundActuator, pyattr_get_3d_property, pyattr_set_3d_property),
+
KX_PYATTRIBUTE_RW_FUNCTION("time", KX_SoundActuator, pyattr_get_audposition, pyattr_set_audposition),
KX_PYATTRIBUTE_RW_FUNCTION("volume", KX_SoundActuator, pyattr_get_gain, pyattr_set_gain),
KX_PYATTRIBUTE_RW_FUNCTION("pitch", KX_SoundActuator, pyattr_get_pitch, pyattr_set_pitch),
- KX_PYATTRIBUTE_RW_FUNCTION("rollOffFactor", KX_SoundActuator, pyattr_get_rollOffFactor, pyattr_set_rollOffFactor),
KX_PYATTRIBUTE_ENUM_RW("mode",KX_SoundActuator::KX_SOUNDACT_NODEF+1,KX_SoundActuator::KX_SOUNDACT_MAX-1,false,KX_SoundActuator,m_type),
{ NULL } //Sentinel
};
@@ -358,28 +330,28 @@ PyObject* KX_SoundActuator::pyattr_get_3d_property(void *self, const struct KX_P
const char* prop = attrdef->m_name;
float result_value = 0.0;
- if(!strcmp(prop, "maxGain3D")) {
+ if(!strcmp(prop, "volume_maximum")) {
result_value = actuator->m_3d.max_gain;
- } else if (!strcmp(prop, "minGain3D")) {
+ } else if (!strcmp(prop, "volume_minimum")) {
result_value = actuator->m_3d.min_gain;
- } else if (!strcmp(prop, "referenceDistance3D")) {
+ } else if (!strcmp(prop, "distance_reference")) {
result_value = actuator->m_3d.reference_distance;
- } else if (!strcmp(prop, "maxDistance3D")) {
+ } else if (!strcmp(prop, "distance_maximum")) {
result_value = actuator->m_3d.max_distance;
- } else if (!strcmp(prop, "rolloffFactor3D")) {
+ } else if (!strcmp(prop, "attenuation")) {
result_value = actuator->m_3d.rolloff_factor;
- } else if (!strcmp(prop, "coneInnerAngle3D")) {
+ } else if (!strcmp(prop, "cone_angle_inner")) {
result_value = actuator->m_3d.cone_inner_angle;
- } else if (!strcmp(prop, "coneOuterAngle3D")) {
+ } else if (!strcmp(prop, "cone_angle_outer")) {
result_value = actuator->m_3d.cone_outer_angle;
- } else if (!strcmp(prop, "coneOuterGain3D")) {
+ } else if (!strcmp(prop, "cone_volume_outer")) {
result_value = actuator->m_3d.cone_outer_gain;
} else {
@@ -423,66 +395,63 @@ PyObject* KX_SoundActuator::pyattr_get_pitch(void *self, const struct KX_PYATTRI
return result;
}
-PyObject* KX_SoundActuator::pyattr_get_rollOffFactor(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef)
-{
- KX_SoundActuator * actuator = static_cast<KX_SoundActuator *> (self);
- float rollofffactor = actuator->m_3d.rolloff_factor;
- PyObject* result = PyFloat_FromDouble(rollofffactor);
-
- return result;
-}
-
int KX_SoundActuator::pyattr_set_3d_property(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
{
KX_SoundActuator * actuator = static_cast<KX_SoundActuator *> (self);
const char* prop = attrdef->m_name;
float prop_value = 0.0;
- AUD_3DSourceSetting setting = AUD_3DSS_NONE;
if (!PyArg_Parse(value, "f", &prop_value))
return PY_SET_ATTR_FAIL;
- // update the internal value
- if(!strcmp(prop, "maxGain3D")) {
+ // if sound is working and 3D, set the new setting
+ if(!actuator->m_is3d)
+ return PY_SET_ATTR_FAIL;
+
+ if(!strcmp(prop, "volume_maximum")) {
actuator->m_3d.max_gain = prop_value;
- setting = AUD_3DSS_MAX_GAIN;
+ if(actuator->m_handle)
+ AUD_setVolumeMaximum(actuator->m_handle, prop_value);
- } else if (!strcmp(prop, "minGain3D")) {
+ } else if (!strcmp(prop, "volume_minimum")) {
actuator->m_3d.min_gain = prop_value;
- setting = AUD_3DSS_MIN_GAIN;
+ if(actuator->m_handle)
+ AUD_setVolumeMinimum(actuator->m_handle, prop_value);
- } else if (!strcmp(prop, "referenceDistance3D")) {
+ } else if (!strcmp(prop, "distance_reference")) {
actuator->m_3d.reference_distance = prop_value;
- setting = AUD_3DSS_REFERENCE_DISTANCE;
+ if(actuator->m_handle)
+ AUD_setDistanceReference(actuator->m_handle, prop_value);
- } else if (!strcmp(prop, "maxDistance3D")) {
+ } else if (!strcmp(prop, "distance_maximum")) {
actuator->m_3d.max_distance = prop_value;
- setting = AUD_3DSS_MAX_DISTANCE;
+ if(actuator->m_handle)
+ AUD_setDistanceMaximum(actuator->m_handle, prop_value);
- } else if (!strcmp(prop, "rolloffFactor3D")) {
+ } else if (!strcmp(prop, "attenuation")) {
actuator->m_3d.rolloff_factor = prop_value;
- setting = AUD_3DSS_ROLLOFF_FACTOR;
+ if(actuator->m_handle)
+ AUD_setAttenuation(actuator->m_handle, prop_value);
- } else if (!!strcmp(prop, "coneInnerAngle3D")) {
+ } else if (!!strcmp(prop, "cone_angle_inner")) {
actuator->m_3d.cone_inner_angle = prop_value;
- setting = AUD_3DSS_CONE_INNER_ANGLE;
+ if(actuator->m_handle)
+ AUD_setConeAngleInner(actuator->m_handle, prop_value);
- } else if (!strcmp(prop, "coneOuterAngle3D")) {
+ } else if (!strcmp(prop, "cone_angle_outer")) {
actuator->m_3d.cone_outer_angle = prop_value;
- setting = AUD_3DSS_CONE_OUTER_ANGLE;
+ if(actuator->m_handle)
+ AUD_setConeAngleOuter(actuator->m_handle, prop_value);
- } else if (!strcmp(prop, "coneOuterGain3D")) {
+ } else if (!strcmp(prop, "cone_volume_outer")) {
actuator->m_3d.cone_outer_gain = prop_value;
- setting = AUD_3DSS_CONE_OUTER_GAIN;
+ if(actuator->m_handle)
+ AUD_setConeVolumeOuter(actuator->m_handle, prop_value);
} else {
return PY_SET_ATTR_FAIL;
- }
+ }
- // if sound is working and 3D, set the new setting
- if(actuator->m_handle && actuator->m_is3d && setting != AUD_3DSS_NONE)
- AUD_set3DSourceSetting(actuator->m_handle, setting, prop_value);
-
return PY_SET_ATTR_SUCCESS;
}
@@ -527,18 +496,4 @@ int KX_SoundActuator::pyattr_set_pitch(void *self, const struct KX_PYATTRIBUTE_D
return PY_SET_ATTR_SUCCESS;
}
-int KX_SoundActuator::pyattr_set_rollOffFactor(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
-{
- KX_SoundActuator * actuator = static_cast<KX_SoundActuator *> (self);
- float rollofffactor = 1.0;
- if (!PyArg_Parse(value, "f", &rollofffactor))
- return PY_SET_ATTR_FAIL;
-
- actuator->m_3d.rolloff_factor = rollofffactor;
- if(actuator->m_handle)
- AUD_set3DSourceSetting(actuator->m_handle, AUD_3DSS_ROLLOFF_FACTOR, rollofffactor);
-
- return PY_SET_ATTR_SUCCESS;
-}
-
#endif // DISABLE_PYTHON
diff --git a/source/gameengine/Ketsji/KX_SoundActuator.h b/source/gameengine/Ketsji/KX_SoundActuator.h
index 1eaea276191..c175a184a15 100644
--- a/source/gameengine/Ketsji/KX_SoundActuator.h
+++ b/source/gameengine/Ketsji/KX_SoundActuator.h
@@ -58,7 +58,7 @@ class KX_SoundActuator : public SCA_IActuator
float m_pitch;
bool m_is3d;
KX_3DSoundSettings m_3d;
- AUD_Handle* m_handle;
+ AUD_Channel* m_handle;
void play();
@@ -107,14 +107,12 @@ public:
static int pyattr_set_audposition(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
static int pyattr_set_gain(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
static int pyattr_set_pitch(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
- static int pyattr_set_rollOffFactor(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
static int pyattr_set_type(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
static PyObject* pyattr_get_3d_property(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef);
static PyObject* pyattr_get_audposition(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef);
static PyObject* pyattr_get_gain(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef);
static PyObject* pyattr_get_pitch(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef);
- static PyObject* pyattr_get_rollOffFactor(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef);
static PyObject* pyattr_get_type(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef);
#endif // DISABLE_PYTHON
diff --git a/source/gameengine/Ketsji/KX_VertexProxy.cpp b/source/gameengine/Ketsji/KX_VertexProxy.cpp
index 652bf5eafed..09630ad2851 100644
--- a/source/gameengine/Ketsji/KX_VertexProxy.cpp
+++ b/source/gameengine/Ketsji/KX_VertexProxy.cpp
@@ -73,247 +73,359 @@ PyMethodDef KX_VertexProxy::Methods[] = {
};
PyAttributeDef KX_VertexProxy::Attributes[] = {
- //KX_PYATTRIBUTE_TODO("DummyProps"),
+ KX_PYATTRIBUTE_RW_FUNCTION("x", KX_VertexProxy, pyattr_get_x, pyattr_set_x),
+ KX_PYATTRIBUTE_RW_FUNCTION("y", KX_VertexProxy, pyattr_get_y, pyattr_set_y),
+ KX_PYATTRIBUTE_RW_FUNCTION("z", KX_VertexProxy, pyattr_get_z, pyattr_set_z),
- KX_PYATTRIBUTE_DUMMY("x"),
- KX_PYATTRIBUTE_DUMMY("y"),
- KX_PYATTRIBUTE_DUMMY("z"),
+ KX_PYATTRIBUTE_RW_FUNCTION("r", KX_VertexProxy, pyattr_get_r, pyattr_set_r),
+ KX_PYATTRIBUTE_RW_FUNCTION("g", KX_VertexProxy, pyattr_get_g, pyattr_set_g),
+ KX_PYATTRIBUTE_RW_FUNCTION("b", KX_VertexProxy, pyattr_get_b, pyattr_set_b),
+ KX_PYATTRIBUTE_RW_FUNCTION("a", KX_VertexProxy, pyattr_get_a, pyattr_set_a),
- KX_PYATTRIBUTE_DUMMY("r"),
- KX_PYATTRIBUTE_DUMMY("g"),
- KX_PYATTRIBUTE_DUMMY("b"),
- KX_PYATTRIBUTE_DUMMY("a"),
+ KX_PYATTRIBUTE_RW_FUNCTION("u", KX_VertexProxy, pyattr_get_u, pyattr_set_u),
+ KX_PYATTRIBUTE_RW_FUNCTION("v", KX_VertexProxy, pyattr_get_v, pyattr_set_v),
- KX_PYATTRIBUTE_DUMMY("u"),
- KX_PYATTRIBUTE_DUMMY("v"),
+ KX_PYATTRIBUTE_RW_FUNCTION("u2", KX_VertexProxy, pyattr_get_u2, pyattr_set_u2),
+ KX_PYATTRIBUTE_RW_FUNCTION("v2", KX_VertexProxy, pyattr_get_v2, pyattr_set_v2),
- KX_PYATTRIBUTE_DUMMY("u2"),
- KX_PYATTRIBUTE_DUMMY("v2"),
+ KX_PYATTRIBUTE_RW_FUNCTION("XYZ", KX_VertexProxy, pyattr_get_XYZ, pyattr_set_XYZ),
+ KX_PYATTRIBUTE_RW_FUNCTION("UV", KX_VertexProxy, pyattr_get_UV, pyattr_set_UV),
- KX_PYATTRIBUTE_DUMMY("XYZ"),
- KX_PYATTRIBUTE_DUMMY("UV"),
-
- KX_PYATTRIBUTE_DUMMY("color"),
- KX_PYATTRIBUTE_DUMMY("colour"),
-
- KX_PYATTRIBUTE_DUMMY("normal"),
+ KX_PYATTRIBUTE_RW_FUNCTION("color", KX_VertexProxy, pyattr_get_color, pyattr_set_color),
+ KX_PYATTRIBUTE_RW_FUNCTION("normal", KX_VertexProxy, pyattr_get_normal, pyattr_set_normal),
{ NULL } //Sentinel
};
-#if 0
-PyObject*
-KX_VertexProxy::py_getattro(PyObject *attr)
-{
- char *attr_str= _PyUnicode_AsString(attr);
- if (attr_str[1]=='\0') { // Group single letters
- // pos
- if (attr_str[0]=='x')
- return PyFloat_FromDouble(m_vertex->getXYZ()[0]);
- if (attr_str[0]=='y')
- return PyFloat_FromDouble(m_vertex->getXYZ()[1]);
- if (attr_str[0]=='z')
- return PyFloat_FromDouble(m_vertex->getXYZ()[2]);
-
- // Col
- if (attr_str[0]=='r')
- return PyFloat_FromDouble(m_vertex->getRGBA()[0]/255.0);
- if (attr_str[0]=='g')
- return PyFloat_FromDouble(m_vertex->getRGBA()[1]/255.0);
- if (attr_str[0]=='b')
- return PyFloat_FromDouble(m_vertex->getRGBA()[2]/255.0);
- if (attr_str[0]=='a')
- return PyFloat_FromDouble(m_vertex->getRGBA()[3]/255.0);
-
- // UV
- if (attr_str[0]=='u')
- return PyFloat_FromDouble(m_vertex->getUV1()[0]);
- if (attr_str[0]=='v')
- return PyFloat_FromDouble(m_vertex->getUV1()[1]);
- }
-
-
- if (!strcmp(attr_str, "XYZ"))
- return PyObjectFrom(MT_Vector3(m_vertex->getXYZ()));
-
- if (!strcmp(attr_str, "UV"))
- return PyObjectFrom(MT_Point2(m_vertex->getUV1()));
-
- if (!strcmp(attr_str, "color") || !strcmp(attr_str, "colour"))
- {
- const unsigned char *colp = m_vertex->getRGBA();
- MT_Vector4 color(colp[0], colp[1], colp[2], colp[3]);
- color /= 255.0;
- return PyObjectFrom(color);
- }
+PyObject* KX_VertexProxy::pyattr_get_x(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_VertexProxy* self= static_cast<KX_VertexProxy*>(self_v);
+ return PyFloat_FromDouble(self->m_vertex->getXYZ()[0]);
+}
- if (!strcmp(attr_str, "normal"))
- {
- return PyObjectFrom(MT_Vector3(m_vertex->getNormal()));
- }
+PyObject* KX_VertexProxy::pyattr_get_y(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_VertexProxy* self= static_cast<KX_VertexProxy*>(self_v);
+ return PyFloat_FromDouble(self->m_vertex->getXYZ()[1]);
+}
- py_getattro_up(CValue);
+PyObject* KX_VertexProxy::pyattr_get_z(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_VertexProxy* self= static_cast<KX_VertexProxy*>(self_v);
+ return PyFloat_FromDouble(self->m_vertex->getXYZ()[2]);
}
-#endif
+PyObject* KX_VertexProxy::pyattr_get_r(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_VertexProxy* self= static_cast<KX_VertexProxy*>(self_v);
+ return PyFloat_FromDouble(self->m_vertex->getRGBA()[0]/255.0);
+}
-#if 0
-int KX_VertexProxy::py_setattro(PyObject *attr, PyObject *pyvalue)
+PyObject* KX_VertexProxy::pyattr_get_g(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
{
- char *attr_str= _PyUnicode_AsString(attr);
- if (PySequence_Check(pyvalue))
- {
- if (!strcmp(attr_str, "XYZ"))
- {
- MT_Point3 vec;
- if (PyVecTo(pyvalue, vec))
- {
- m_vertex->SetXYZ(vec);
- m_mesh->SetMeshModified(true);
- return PY_SET_ATTR_SUCCESS;
- }
- return PY_SET_ATTR_FAIL;
- }
+ KX_VertexProxy* self= static_cast<KX_VertexProxy*>(self_v);
+ return PyFloat_FromDouble(self->m_vertex->getRGBA()[1]/255.0);
+}
- if (!strcmp(attr_str, "UV"))
- {
- MT_Point2 vec;
- if (PyVecTo(pyvalue, vec))
- {
- m_vertex->SetUV(vec);
- m_mesh->SetMeshModified(true);
- return PY_SET_ATTR_SUCCESS;
- }
- return PY_SET_ATTR_FAIL;
- }
+PyObject* KX_VertexProxy::pyattr_get_b(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_VertexProxy* self= static_cast<KX_VertexProxy*>(self_v);
+ return PyFloat_FromDouble(self->m_vertex->getRGBA()[2]/255.0);
+}
- if (!strcmp(attr_str, "color") || !strcmp(attr_str, "colour"))
- {
- MT_Vector4 vec;
- if (PyVecTo(pyvalue, vec))
- {
- m_vertex->SetRGBA(vec);
- m_mesh->SetMeshModified(true);
- return PY_SET_ATTR_SUCCESS;
- }
- return PY_SET_ATTR_FAIL;
- }
+PyObject* KX_VertexProxy::pyattr_get_a(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_VertexProxy* self= static_cast<KX_VertexProxy*>(self_v);
+ return PyFloat_FromDouble(self->m_vertex->getRGBA()[3]/255.0);
+}
- if (!strcmp(attr_str, "normal"))
- {
- MT_Vector3 vec;
- if (PyVecTo(pyvalue, vec))
- {
- m_vertex->SetNormal(vec);
- m_mesh->SetMeshModified(true);
- return PY_SET_ATTR_SUCCESS;
- }
- return PY_SET_ATTR_FAIL;
- }
- }
-
- if (PyFloat_Check(pyvalue))
- {
- float val = PyFloat_AsDouble(pyvalue);
- // pos
- MT_Point3 pos(m_vertex->getXYZ());
- if (!strcmp(attr_str, "x"))
+PyObject* KX_VertexProxy::pyattr_get_u(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_VertexProxy* self= static_cast<KX_VertexProxy*>(self_v);
+ return PyFloat_FromDouble(self->m_vertex->getUV1()[0]);
+}
+
+PyObject* KX_VertexProxy::pyattr_get_v(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_VertexProxy* self= static_cast<KX_VertexProxy*>(self_v);
+ return PyFloat_FromDouble(self->m_vertex->getUV1()[1]);
+}
+
+PyObject* KX_VertexProxy::pyattr_get_u2(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_VertexProxy* self= static_cast<KX_VertexProxy*>(self_v);
+ return PyFloat_FromDouble(self->m_vertex->getUV2()[0]);
+}
+
+PyObject* KX_VertexProxy::pyattr_get_v2(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_VertexProxy* self= static_cast<KX_VertexProxy*>(self_v);
+ return PyFloat_FromDouble(self->m_vertex->getUV2()[1]);
+}
+
+PyObject* KX_VertexProxy::pyattr_get_XYZ(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_VertexProxy* self= static_cast<KX_VertexProxy*>(self_v);
+ return PyObjectFrom(MT_Vector3(self->m_vertex->getXYZ()));
+}
+
+PyObject* KX_VertexProxy::pyattr_get_UV(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_VertexProxy* self= static_cast<KX_VertexProxy*>(self_v);
+ return PyObjectFrom(MT_Point2(self->m_vertex->getUV1()));
+}
+
+PyObject* KX_VertexProxy::pyattr_get_color(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_VertexProxy* self= static_cast<KX_VertexProxy*>(self_v);
+ const unsigned char *colp = self->m_vertex->getRGBA();
+ MT_Vector4 color(colp[0], colp[1], colp[2], colp[3]);
+ color /= 255.0;
+ return PyObjectFrom(color);
+}
+
+PyObject* KX_VertexProxy::pyattr_get_normal(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef)
+{
+ KX_VertexProxy* self= static_cast<KX_VertexProxy*>(self_v);
+ return PyObjectFrom(MT_Vector3(self->m_vertex->getNormal()));
+}
+
+int KX_VertexProxy::pyattr_set_x(void *self_v, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ KX_VertexProxy* self= static_cast<KX_VertexProxy*>(self_v);
+ if (PyFloat_Check(value))
{
+ float val = PyFloat_AsDouble(value);
+ MT_Point3 pos(self->m_vertex->getXYZ());
pos.x() = val;
- m_vertex->SetXYZ(pos);
- m_mesh->SetMeshModified(true);
+ self->m_vertex->SetXYZ(pos);
+ self->m_mesh->SetMeshModified(true);
return PY_SET_ATTR_SUCCESS;
}
+ return PY_SET_ATTR_FAIL;
+}
- if (!strcmp(attr_str, "y"))
+int KX_VertexProxy::pyattr_set_y(void *self_v, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ KX_VertexProxy* self= static_cast<KX_VertexProxy*>(self_v);
+ if (PyFloat_Check(value))
{
+ float val = PyFloat_AsDouble(value);
+ MT_Point3 pos(self->m_vertex->getXYZ());
pos.y() = val;
- m_vertex->SetXYZ(pos);
- m_mesh->SetMeshModified(true);
+ self->m_vertex->SetXYZ(pos);
+ self->m_mesh->SetMeshModified(true);
return PY_SET_ATTR_SUCCESS;
}
+ return PY_SET_ATTR_FAIL;
+}
- if (!strcmp(attr_str, "z"))
+int KX_VertexProxy::pyattr_set_z(void *self_v, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ KX_VertexProxy* self= static_cast<KX_VertexProxy*>(self_v);
+ if (PyFloat_Check(value))
{
+ float val = PyFloat_AsDouble(value);
+ MT_Point3 pos(self->m_vertex->getXYZ());
pos.z() = val;
- m_vertex->SetXYZ(pos);
- m_mesh->SetMeshModified(true);
+ self->m_vertex->SetXYZ(pos);
+ self->m_mesh->SetMeshModified(true);
return PY_SET_ATTR_SUCCESS;
}
+ return PY_SET_ATTR_FAIL;
+}
- // uv
- MT_Point2 uv = m_vertex->getUV1();
- if (!strcmp(attr_str, "u"))
+int KX_VertexProxy::pyattr_set_u(void *self_v, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ KX_VertexProxy* self= static_cast<KX_VertexProxy*>(self_v);
+ if (PyFloat_Check(value))
{
+ float val = PyFloat_AsDouble(value);
+ MT_Point2 uv = self->m_vertex->getUV1();
uv[0] = val;
- m_vertex->SetUV(uv);
- m_mesh->SetMeshModified(true);
+ self->m_vertex->SetUV(uv);
+ self->m_mesh->SetMeshModified(true);
return PY_SET_ATTR_SUCCESS;
}
+ return PY_SET_ATTR_FAIL;
+}
- if (!strcmp(attr_str, "v"))
+int KX_VertexProxy::pyattr_set_v(void *self_v, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ KX_VertexProxy* self= static_cast<KX_VertexProxy*>(self_v);
+ if (PyFloat_Check(value))
{
+ float val = PyFloat_AsDouble(value);
+ MT_Point2 uv = self->m_vertex->getUV1();
uv[1] = val;
- m_vertex->SetUV(uv);
- m_mesh->SetMeshModified(true);
+ self->m_vertex->SetUV(uv);
+ self->m_mesh->SetMeshModified(true);
return PY_SET_ATTR_SUCCESS;
}
+ return PY_SET_ATTR_FAIL;
+}
- // uv
- MT_Point2 uv2 = m_vertex->getUV2();
- if (!strcmp(attr_str, "u2"))
+int KX_VertexProxy::pyattr_set_u2(void *self_v, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ KX_VertexProxy* self= static_cast<KX_VertexProxy*>(self_v);
+ if (PyFloat_Check(value))
{
+ float val = PyFloat_AsDouble(value);
+ MT_Point2 uv = self->m_vertex->getUV2();
uv[0] = val;
- m_vertex->SetUV2(uv);
- m_mesh->SetMeshModified(true);
- return 0;
+ self->m_vertex->SetUV2(uv);
+ self->m_mesh->SetMeshModified(true);
+ return PY_SET_ATTR_SUCCESS;
}
+ return PY_SET_ATTR_FAIL;
+}
- if (!strcmp(attr_str, "v2"))
+int KX_VertexProxy::pyattr_set_v2(void *self_v, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ KX_VertexProxy* self= static_cast<KX_VertexProxy*>(self_v);
+ if (PyFloat_Check(value))
{
+ float val = PyFloat_AsDouble(value);
+ MT_Point2 uv = self->m_vertex->getUV2();
uv[1] = val;
- m_vertex->SetUV2(uv);
- m_mesh->SetMeshModified(true);
+ self->m_vertex->SetUV2(uv);
+ self->m_mesh->SetMeshModified(true);
return PY_SET_ATTR_SUCCESS;
}
+ return PY_SET_ATTR_FAIL;
+}
- // col
- unsigned int icol = *((const unsigned int *)m_vertex->getRGBA());
- unsigned char *cp = (unsigned char*) &icol;
- val *= 255.0;
- if (!strcmp(attr_str, "r"))
+int KX_VertexProxy::pyattr_set_r(void *self_v, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ KX_VertexProxy* self= static_cast<KX_VertexProxy*>(self_v);
+ if (PyFloat_Check(value))
{
+ float val = PyFloat_AsDouble(value);
+ unsigned int icol = *((const unsigned int *)self->m_vertex->getRGBA());
+ unsigned char *cp = (unsigned char*) &icol;
+ val *= 255.0;
cp[0] = (unsigned char) val;
- m_vertex->SetRGBA(icol);
- m_mesh->SetMeshModified(true);
+ self->m_vertex->SetRGBA(icol);
+ self->m_mesh->SetMeshModified(true);
return PY_SET_ATTR_SUCCESS;
}
- if (!strcmp(attr_str, "g"))
+ return PY_SET_ATTR_FAIL;
+}
+
+int KX_VertexProxy::pyattr_set_g(void *self_v, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ KX_VertexProxy* self= static_cast<KX_VertexProxy*>(self_v);
+ if (PyFloat_Check(value))
{
+ float val = PyFloat_AsDouble(value);
+ unsigned int icol = *((const unsigned int *)self->m_vertex->getRGBA());
+ unsigned char *cp = (unsigned char*) &icol;
+ val *= 255.0;
cp[1] = (unsigned char) val;
- m_vertex->SetRGBA(icol);
- m_mesh->SetMeshModified(true);
+ self->m_vertex->SetRGBA(icol);
+ self->m_mesh->SetMeshModified(true);
return PY_SET_ATTR_SUCCESS;
}
- if (!strcmp(attr_str, "b"))
+ return PY_SET_ATTR_FAIL;
+}
+
+int KX_VertexProxy::pyattr_set_b(void *self_v, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ KX_VertexProxy* self= static_cast<KX_VertexProxy*>(self_v);
+ if (PyFloat_Check(value))
{
+ float val = PyFloat_AsDouble(value);
+ unsigned int icol = *((const unsigned int *)self->m_vertex->getRGBA());
+ unsigned char *cp = (unsigned char*) &icol;
+ val *= 255.0;
cp[2] = (unsigned char) val;
- m_vertex->SetRGBA(icol);
- m_mesh->SetMeshModified(true);
+ self->m_vertex->SetRGBA(icol);
+ self->m_mesh->SetMeshModified(true);
return PY_SET_ATTR_SUCCESS;
}
- if (!strcmp(attr_str, "a"))
+ return PY_SET_ATTR_FAIL;
+}
+
+int KX_VertexProxy::pyattr_set_a(void *self_v, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ KX_VertexProxy* self= static_cast<KX_VertexProxy*>(self_v);
+ if (PyFloat_Check(value))
{
+ float val = PyFloat_AsDouble(value);
+ unsigned int icol = *((const unsigned int *)self->m_vertex->getRGBA());
+ unsigned char *cp = (unsigned char*) &icol;
+ val *= 255.0;
cp[3] = (unsigned char) val;
- m_vertex->SetRGBA(icol);
- m_mesh->SetMeshModified(true);
+ self->m_vertex->SetRGBA(icol);
+ self->m_mesh->SetMeshModified(true);
return PY_SET_ATTR_SUCCESS;
}
- }
+ return PY_SET_ATTR_FAIL;
+}
- return CValue::py_setattro(attr, pyvalue);
+int KX_VertexProxy::pyattr_set_XYZ(void *self_v, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ KX_VertexProxy* self= static_cast<KX_VertexProxy*>(self_v);
+ if (PySequence_Check(value))
+ {
+ MT_Point3 vec;
+ if (PyVecTo(value, vec))
+ {
+ self->m_vertex->SetXYZ(vec);
+ self->m_mesh->SetMeshModified(true);
+ return PY_SET_ATTR_SUCCESS;
+ }
+ }
+ return PY_SET_ATTR_FAIL;
+}
+
+int KX_VertexProxy::pyattr_set_UV(void *self_v, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ KX_VertexProxy* self= static_cast<KX_VertexProxy*>(self_v);
+ if (PySequence_Check(value))
+ {
+ MT_Point2 vec;
+ if (PyVecTo(value, vec))
+ {
+ self->m_vertex->SetUV(vec);
+ self->m_mesh->SetMeshModified(true);
+ return PY_SET_ATTR_SUCCESS;
+ }
+ }
+ return PY_SET_ATTR_FAIL;
+}
+
+int KX_VertexProxy::pyattr_set_color(void *self_v, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ KX_VertexProxy* self= static_cast<KX_VertexProxy*>(self_v);
+ if (PySequence_Check(value))
+ {
+ MT_Vector4 vec;
+ if (PyVecTo(value, vec))
+ {
+ self->m_vertex->SetRGBA(vec);
+ self->m_mesh->SetMeshModified(true);
+ return PY_SET_ATTR_SUCCESS;
+ }
+ }
+ return PY_SET_ATTR_FAIL;
+}
+
+int KX_VertexProxy::pyattr_set_normal(void *self_v, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value)
+{
+ KX_VertexProxy* self= static_cast<KX_VertexProxy*>(self_v);
+ if (PySequence_Check(value))
+ {
+ MT_Vector3 vec;
+ if (PyVecTo(value, vec))
+ {
+ self->m_vertex->SetNormal(vec);
+ self->m_mesh->SetMeshModified(true);
+ return PY_SET_ATTR_SUCCESS;
+ }
+ }
+ return PY_SET_ATTR_FAIL;
}
-#endif
KX_VertexProxy::KX_VertexProxy(KX_MeshProxy*mesh, RAS_TexVert* vertex)
: m_vertex(vertex),
diff --git a/source/gameengine/Ketsji/KX_VertexProxy.h b/source/gameengine/Ketsji/KX_VertexProxy.h
index 08fe0e7e2f8..b39d3ecb7d4 100644
--- a/source/gameengine/Ketsji/KX_VertexProxy.h
+++ b/source/gameengine/Ketsji/KX_VertexProxy.h
@@ -56,6 +56,37 @@ public:
// stuff for python integration
+ static PyObject* pyattr_get_x(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_y(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_z(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_r(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_g(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_b(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_a(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_u(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_v(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_u2(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_v2(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_XYZ(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_UV(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_color(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static PyObject* pyattr_get_normal(void *self_v, const KX_PYATTRIBUTE_DEF *attrdef);
+ static int pyattr_set_x(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+ static int pyattr_set_y(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+ static int pyattr_set_z(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+ static int pyattr_set_u(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+ static int pyattr_set_v(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+ static int pyattr_set_u2(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+ static int pyattr_set_v2(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+ static int pyattr_set_r(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+ static int pyattr_set_g(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+ static int pyattr_set_b(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+ static int pyattr_set_a(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+ static int pyattr_set_XYZ(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+ static int pyattr_set_UV(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+ static int pyattr_set_color(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+ static int pyattr_set_normal(void *self, const struct KX_PYATTRIBUTE_DEF *attrdef, PyObject *value);
+
KX_PYMETHOD_NOARGS(KX_VertexProxy,GetXYZ);
KX_PYMETHOD_O(KX_VertexProxy,SetXYZ);
KX_PYMETHOD_NOARGS(KX_VertexProxy,GetUV);