Merged changes in the trunk up to revision 35367.
To branch builders: From this revision Python 3.2 will be used. Don't forget svn update in the "lib" directory as well.
This commit is contained in:
@@ -69,6 +69,7 @@ get_blender_version()
|
|||||||
# Blender internal features
|
# Blender internal features
|
||||||
option(WITH_INTERNATIONAL "Enable I18N (International fonts and text)" ON)
|
option(WITH_INTERNATIONAL "Enable I18N (International fonts and text)" ON)
|
||||||
option(WITH_PYTHON "Enable Embedded Python API" ON)
|
option(WITH_PYTHON "Enable Embedded Python API" ON)
|
||||||
|
option(WITH_PYTHON_SAFETY "Enable internal API error checking to track invalid data to prevent crash on access (at the expense of some effeciency)." OFF)
|
||||||
option(WITH_PYTHON_MODULE "Enable building as a python module (experemental)" OFF)
|
option(WITH_PYTHON_MODULE "Enable building as a python module (experemental)" OFF)
|
||||||
option(WITH_BUILDINFO "Include extra build details" ON)
|
option(WITH_BUILDINFO "Include extra build details" ON)
|
||||||
option(WITH_IK_ITASC "Enable ITASC IK solver" ON)
|
option(WITH_IK_ITASC "Enable ITASC IK solver" ON)
|
||||||
@@ -609,10 +610,10 @@ elseif(WIN32)
|
|||||||
|
|
||||||
if(WITH_PYTHON)
|
if(WITH_PYTHON)
|
||||||
set(PYTHON ${LIBDIR}/python)
|
set(PYTHON ${LIBDIR}/python)
|
||||||
set(PYTHON_VERSION 3.1)
|
set(PYTHON_VERSION 3.2)
|
||||||
set(PYTHON_INCLUDE_DIRS "${PYTHON}/include/python${PYTHON_VERSION}")
|
set(PYTHON_INCLUDE_DIRS "${PYTHON}/include/python${PYTHON_VERSION}")
|
||||||
# set(PYTHON_BINARY python) # not used yet
|
# set(PYTHON_BINARY python) # not used yet
|
||||||
set(PYTHON_LIBRARY python31)
|
set(PYTHON_LIBRARY python32)
|
||||||
set(PYTHON_LIBPATH ${PYTHON}/lib)
|
set(PYTHON_LIBPATH ${PYTHON}/lib)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
@@ -714,6 +715,7 @@ elseif(WIN32)
|
|||||||
set(WITH_JACK OFF)
|
set(WITH_JACK OFF)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# TODO: mingw move to Python 3.2
|
||||||
if(WITH_PYTHON)
|
if(WITH_PYTHON)
|
||||||
set(PYTHON ${LIBDIR}/python)
|
set(PYTHON ${LIBDIR}/python)
|
||||||
set(PYTHON_VERSION 3.1)
|
set(PYTHON_VERSION 3.1)
|
||||||
@@ -765,9 +767,9 @@ elseif(APPLE)
|
|||||||
set(SNDFILE_LIBPATH ${SNDFILE}/lib ${FFMPEG}/lib)
|
set(SNDFILE_LIBPATH ${SNDFILE}/lib ${FFMPEG}/lib)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
set(PYTHON_VERSION 3.1)
|
set(PYTHON_VERSION 3.2)
|
||||||
|
|
||||||
if(PYTHON_VERSION MATCHES 3.1)
|
if(PYTHON_VERSION MATCHES 3.2)
|
||||||
# we use precompiled libraries for py 3.1 and up by default
|
# we use precompiled libraries for py 3.1 and up by default
|
||||||
|
|
||||||
set(PYTHON ${LIBDIR}/python)
|
set(PYTHON ${LIBDIR}/python)
|
||||||
|
@@ -23,6 +23,11 @@
|
|||||||
|
|
||||||
# <pep8 compliant>
|
# <pep8 compliant>
|
||||||
|
|
||||||
|
"""
|
||||||
|
Exampel Win32 usage:
|
||||||
|
c:\Python32\python.exe c:\blender_dev\blender\build_files\cmake\cmake_qtcreator_project.py c:\blender_dev\cmake_build
|
||||||
|
"""
|
||||||
|
|
||||||
import os
|
import os
|
||||||
from os.path import join, dirname, normpath, abspath, splitext, relpath, exists
|
from os.path import join, dirname, normpath, abspath, splitext, relpath, exists
|
||||||
|
|
||||||
@@ -49,7 +54,7 @@ def source_list(path, filename_check=None):
|
|||||||
# extension checking
|
# extension checking
|
||||||
def is_cmake(filename):
|
def is_cmake(filename):
|
||||||
ext = splitext(filename)[1]
|
ext = splitext(filename)[1]
|
||||||
return (ext == ".cmake") or (filename == "CMakeLists.txt")
|
return (ext == ".cmake") or (filename.endswith("CMakeLists.txt"))
|
||||||
|
|
||||||
|
|
||||||
def is_c_header(filename):
|
def is_c_header(filename):
|
||||||
@@ -73,7 +78,7 @@ def is_svn_file(filename):
|
|||||||
|
|
||||||
|
|
||||||
def is_project_file(filename):
|
def is_project_file(filename):
|
||||||
return (is_c_any(filename) or is_cmake(filename)) and is_svn_file(filename)
|
return (is_c_any(filename) or is_cmake(filename)) # and is_svn_file(filename)
|
||||||
|
|
||||||
|
|
||||||
def cmake_advanced_info():
|
def cmake_advanced_info():
|
||||||
@@ -81,7 +86,12 @@ def cmake_advanced_info():
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
def create_eclipse_project(cmake_dir):
|
def create_eclipse_project(cmake_dir):
|
||||||
cmd = 'cmake %r -G"Eclipse CDT4 - Unix Makefiles"' % cmake_dir
|
import sys
|
||||||
|
if sys.platform == "win32":
|
||||||
|
cmd = 'cmake %r -G"Eclipse CDT4 - MinGW Makefiles"' % cmake_dir
|
||||||
|
else:
|
||||||
|
cmd = 'cmake %r -G"Eclipse CDT4 - Unix Makefiles"' % cmake_dir
|
||||||
|
|
||||||
os.system(cmd)
|
os.system(cmd)
|
||||||
|
|
||||||
includes = []
|
includes = []
|
||||||
@@ -92,13 +102,13 @@ def cmake_advanced_info():
|
|||||||
|
|
||||||
cmake_dir = sys.argv[-1]
|
cmake_dir = sys.argv[-1]
|
||||||
|
|
||||||
if not os.path.join(cmake_dir, "CMakeCache.txt"):
|
if not os.path.exists(os.path.join(cmake_dir, "CMakeCache.txt")):
|
||||||
cmake_dir = os.getcwd()
|
cmake_dir = os.getcwd()
|
||||||
if not os.path.join(cmake_dir, "CMakeCache.txt"):
|
if not os.path.exists(os.path.join(cmake_dir, "CMakeCache.txt")):
|
||||||
print("CMakeCache.txt not found in %r or %r\n Pass CMake build dir as an argument, or run from that dir, abording" % (cmake_dir, os.getcwd()))
|
print("CMakeCache.txt not found in %r or %r\n Pass CMake build dir as an argument, or run from that dir, abording" % (cmake_dir, os.getcwd()))
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
|
|
||||||
# create_eclipse_project(cmake_dir)
|
create_eclipse_project(cmake_dir)
|
||||||
|
|
||||||
from xml.dom.minidom import parse
|
from xml.dom.minidom import parse
|
||||||
tree = parse(os.path.join(cmake_dir, ".cproject"))
|
tree = parse(os.path.join(cmake_dir, ".cproject"))
|
||||||
@@ -171,6 +181,11 @@ def main():
|
|||||||
else:
|
else:
|
||||||
includes, defines = cmake_advanced_info()
|
includes, defines = cmake_advanced_info()
|
||||||
|
|
||||||
|
# for some reason it doesnt give all internal includes
|
||||||
|
includes = list(set(includes) | set(dirname(f) for f in files_rel if is_c_header(f)))
|
||||||
|
includes.sort()
|
||||||
|
|
||||||
|
|
||||||
PROJECT_NAME = "Blender"
|
PROJECT_NAME = "Blender"
|
||||||
f = open(join(base, "%s.files" % PROJECT_NAME), 'w')
|
f = open(join(base, "%s.files" % PROJECT_NAME), 'w')
|
||||||
f.write("\n".join(files_rel))
|
f.write("\n".join(files_rel))
|
||||||
|
@@ -358,8 +358,8 @@ macro(get_blender_version)
|
|||||||
message(FATAL_ERROR "Version parsing failed for BLENDER_VERSION_CYCLE")
|
message(FATAL_ERROR "Version parsing failed for BLENDER_VERSION_CYCLE")
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
MATH(EXPR BLENDER_VERSION_MAJOR "${_out_version} / 100")
|
math(EXPR BLENDER_VERSION_MAJOR "${_out_version} / 100")
|
||||||
MATH(EXPR BLENDER_VERSION_MINOR "${_out_version} % 100")
|
math(EXPR BLENDER_VERSION_MINOR "${_out_version} % 100")
|
||||||
set(BLENDER_VERSION "${BLENDER_VERSION_MAJOR}.${BLENDER_VERSION_MINOR}")
|
set(BLENDER_VERSION "${BLENDER_VERSION_MAJOR}.${BLENDER_VERSION_MINOR}")
|
||||||
|
|
||||||
set(BLENDER_SUBVERSION ${_out_subversion})
|
set(BLENDER_SUBVERSION ${_out_subversion})
|
||||||
@@ -372,7 +372,7 @@ macro(get_blender_version)
|
|||||||
else()
|
else()
|
||||||
set(_char_ls a b c d e f g h i j k l m n o p q r s t u v w q y z)
|
set(_char_ls a b c d e f g h i j k l m n o p q r s t u v w q y z)
|
||||||
list(FIND _char_ls ${BLENDER_VERSION_CHAR} _out_version_char_index)
|
list(FIND _char_ls ${BLENDER_VERSION_CHAR} _out_version_char_index)
|
||||||
MATH(EXPR BLENDER_VERSION_CHAR_INDEX "${_out_version_char_index} + 1")
|
math(EXPR BLENDER_VERSION_CHAR_INDEX "${_out_version_char_index} + 1")
|
||||||
unset(_char_ls)
|
unset(_char_ls)
|
||||||
unset(_out_version_char_index)
|
unset(_out_version_char_index)
|
||||||
endif()
|
endif()
|
||||||
|
@@ -1,2 +1,3 @@
|
|||||||
version=3
|
version=3
|
||||||
|
opts=uversionmangle=s/[a-z]$/.$&/;s/[j-s]$/1$&/;s/[t-z]$/2$&/;tr/a-z/1-90-90-6/ \
|
||||||
http://download.blender.org/source/blender-([0-9.]+[a-z]?)\.tar\.gz
|
http://download.blender.org/source/blender-([0-9.]+[a-z]?)\.tar\.gz
|
||||||
|
@@ -86,7 +86,7 @@ BF_FFMPEG_LIB = 'avcodec avdevice avformat avutil mp3lame swscale x264 xvidcore
|
|||||||
#bz2 is a standard osx dynlib
|
#bz2 is a standard osx dynlib
|
||||||
|
|
||||||
# python 3.1 uses precompiled libraries in bf svn /lib by default
|
# python 3.1 uses precompiled libraries in bf svn /lib by default
|
||||||
BF_PYTHON_VERSION = '3.1'
|
BF_PYTHON_VERSION = '3.2'
|
||||||
BF_PYTHON = LIBDIR + '/python'
|
BF_PYTHON = LIBDIR + '/python'
|
||||||
BF_PYTHON_INC = '${BF_PYTHON}/include/python${BF_PYTHON_VERSION}'
|
BF_PYTHON_INC = '${BF_PYTHON}/include/python${BF_PYTHON_VERSION}'
|
||||||
# BF_PYTHON_BINARY = '${BF_PYTHON}/bin/python${BF_PYTHON_VERSION}'
|
# BF_PYTHON_BINARY = '${BF_PYTHON}/bin/python${BF_PYTHON_VERSION}'
|
||||||
|
@@ -2,12 +2,12 @@ LCGDIR = '#../lib/windows'
|
|||||||
LIBDIR = "${LCGDIR}"
|
LIBDIR = "${LCGDIR}"
|
||||||
|
|
||||||
BF_PYTHON = LIBDIR + '/python'
|
BF_PYTHON = LIBDIR + '/python'
|
||||||
BF_PYTHON_VERSION = '3.1'
|
BF_PYTHON_VERSION = '3.2'
|
||||||
WITH_BF_STATICPYTHON = False
|
WITH_BF_STATICPYTHON = False
|
||||||
BF_PYTHON_INC = '${BF_PYTHON}/include/python${BF_PYTHON_VERSION}'
|
BF_PYTHON_INC = '${BF_PYTHON}/include/python${BF_PYTHON_VERSION}'
|
||||||
BF_PYTHON_BINARY = 'python'
|
BF_PYTHON_BINARY = 'python'
|
||||||
BF_PYTHON_LIB = 'python${BF_PYTHON_VERSION[0]}${BF_PYTHON_VERSION[2]}mw'
|
BF_PYTHON_LIB = 'python${BF_PYTHON_VERSION[0]}${BF_PYTHON_VERSION[2]}mw'
|
||||||
BF_PYTHON_DLL = 'python31'
|
BF_PYTHON_DLL = 'python32'
|
||||||
BF_PYTHON_LIBPATH = '${BF_PYTHON}/lib'
|
BF_PYTHON_LIBPATH = '${BF_PYTHON}/lib'
|
||||||
BF_PYTHON_LIB_STATIC = '${BF_PYTHON}/lib/libpython${BF_PYTHON_VERSION[0]}${BF_PYTHON_VERSION[2]}.a'
|
BF_PYTHON_LIB_STATIC = '${BF_PYTHON}/lib/libpython${BF_PYTHON_VERSION[0]}${BF_PYTHON_VERSION[2]}.a'
|
||||||
|
|
||||||
|
@@ -9,10 +9,10 @@ BF_FFMPEG_LIBPATH='${BF_FFMPEG}/lib'
|
|||||||
BF_FFMPEG_LIB = 'avformat-52.lib avcodec-52.lib avdevice-52.lib avutil-50.lib swscale-0.lib'
|
BF_FFMPEG_LIB = 'avformat-52.lib avcodec-52.lib avdevice-52.lib avutil-50.lib swscale-0.lib'
|
||||||
|
|
||||||
BF_PYTHON = LIBDIR + '/python'
|
BF_PYTHON = LIBDIR + '/python'
|
||||||
BF_PYTHON_VERSION = '3.1'
|
BF_PYTHON_VERSION = '3.2'
|
||||||
BF_PYTHON_INC = '${BF_PYTHON}/include/python${BF_PYTHON_VERSION}'
|
BF_PYTHON_INC = '${BF_PYTHON}/include/python${BF_PYTHON_VERSION}'
|
||||||
BF_PYTHON_BINARY = 'python'
|
BF_PYTHON_BINARY = 'python'
|
||||||
BF_PYTHON_LIB = 'python31'
|
BF_PYTHON_LIB = 'python32'
|
||||||
BF_PYTHON_DLL = '${BF_PYTHON_LIB}'
|
BF_PYTHON_DLL = '${BF_PYTHON_LIB}'
|
||||||
BF_PYTHON_LIBPATH = '${BF_PYTHON}/lib'
|
BF_PYTHON_LIBPATH = '${BF_PYTHON}/lib'
|
||||||
|
|
||||||
|
@@ -9,10 +9,10 @@ BF_FFMPEG_LIBPATH='${BF_FFMPEG}/lib'
|
|||||||
BF_FFMPEG_LIB = 'avformat-52.lib avcodec-52.lib avdevice-52.lib avutil-50.lib swscale-0.lib'
|
BF_FFMPEG_LIB = 'avformat-52.lib avcodec-52.lib avdevice-52.lib avutil-50.lib swscale-0.lib'
|
||||||
|
|
||||||
BF_PYTHON = LIBDIR + '/python'
|
BF_PYTHON = LIBDIR + '/python'
|
||||||
BF_PYTHON_VERSION = '3.1'
|
BF_PYTHON_VERSION = '3.2'
|
||||||
BF_PYTHON_INC = '${BF_PYTHON}/include/python${BF_PYTHON_VERSION}'
|
BF_PYTHON_INC = '${BF_PYTHON}/include/python${BF_PYTHON_VERSION}'
|
||||||
BF_PYTHON_BINARY = 'python'
|
BF_PYTHON_BINARY = 'python'
|
||||||
BF_PYTHON_LIB = 'python31'
|
BF_PYTHON_LIB = 'python32'
|
||||||
BF_PYTHON_DLL = '${BF_PYTHON_LIB}'
|
BF_PYTHON_DLL = '${BF_PYTHON_LIB}'
|
||||||
BF_PYTHON_LIBPATH = '${BF_PYTHON}/lib'
|
BF_PYTHON_LIBPATH = '${BF_PYTHON}/lib'
|
||||||
|
|
||||||
|
@@ -625,30 +625,35 @@ def UnixPyBundle(target=None, source=None, env=None):
|
|||||||
print '\t(skipping copy)\n'
|
print '\t(skipping copy)\n'
|
||||||
return
|
return
|
||||||
|
|
||||||
|
|
||||||
# Copied from source/creator/CMakeLists.txt, keep in sync.
|
# Copied from source/creator/CMakeLists.txt, keep in sync.
|
||||||
print 'Install python from:'
|
print 'Install python from:'
|
||||||
print '\t"%s" into...' % py_src
|
print '\t"%s" into...' % py_src
|
||||||
print '\t"%s"\n' % py_target
|
print '\t"%s"\n' % py_target
|
||||||
|
|
||||||
run('rm -rf "%s"' % py_target)
|
run("rm -rf '%s'" % py_target)
|
||||||
try: os.makedirs(os.path.dirname(py_target)) # the final part is copied
|
try:
|
||||||
except:pass
|
os.makedirs(os.path.dirname(py_target)) # the final part is copied
|
||||||
|
except:
|
||||||
|
pass
|
||||||
|
|
||||||
run('cp -R "%s" "%s"' % (py_src, os.path.dirname(py_target)))
|
run("cp -R '%s' '%s'" % (py_src, os.path.dirname(py_target)))
|
||||||
run('rm -rf "%s/distutils"' % py_target)
|
run("rm -rf '%s/distutils'" % py_target)
|
||||||
run('rm -rf "%s/lib2to3"' % py_target)
|
run("rm -rf '%s/lib2to3'" % py_target)
|
||||||
run('rm -rf "%s/idlelib"' % py_target)
|
run("rm -rf '%s/idlelib'" % py_target)
|
||||||
run('rm -rf "%s/tkinter"' % py_target)
|
run("rm -rf '%s/tkinter'" % py_target)
|
||||||
run('rm -rf "%s/config"' % py_target)
|
run("rm -rf '%s/config'" % py_target)
|
||||||
|
|
||||||
run('rm -rf "%s/site-packages"' % py_target)
|
run("rm -rf '%s/site-packages'" % py_target)
|
||||||
run('mkdir "%s/site-packages"' % py_target) # python needs it.'
|
run("mkdir '%s/site-packages'" % py_target) # python needs it.'
|
||||||
|
|
||||||
|
run("rm -f '%s/lib-dynload/_tkinter.so'" % py_target)
|
||||||
|
run("find '%s' -type d -name 'test' -prune -exec rm -rf {} ';'" % py_target)
|
||||||
|
run("find '%s' -type d -name 'config-*' -prune -exec rm -rf {} ';'" % py_target)
|
||||||
|
run("find '%s' -type d -name 'turtledemo' -prune -exec rm -rf {} ';'" % py_target)
|
||||||
|
run("find '%s' -type d -name '__pycache__' -exec rm -rf {} ';'" % py_target)
|
||||||
|
run("find '%s' -name '*.py[co]' -exec rm -rf {} ';'" % py_target)
|
||||||
|
run("find '%s' -name '*.so' -exec strip -s {} ';'" % py_target)
|
||||||
|
|
||||||
run('rm -f "%s/lib-dynload/_tkinter.so"' % py_target)
|
|
||||||
run('find "%s" -name "test" -prune -exec rm -rf {} \;' % py_target)
|
|
||||||
run('find "%s" -name "*.py?" -exec rm -rf {} \;' % py_target)
|
|
||||||
run('find "%s" -name "*.so"-exec strip -s {} \;' % py_target)
|
|
||||||
|
|
||||||
#### END ACTION STUFF #########
|
#### END ACTION STUFF #########
|
||||||
|
|
||||||
@@ -675,6 +680,8 @@ def bsc(env, target, source):
|
|||||||
|
|
||||||
class BlenderEnvironment(SConsEnvironment):
|
class BlenderEnvironment(SConsEnvironment):
|
||||||
|
|
||||||
|
PyBundleActionAdded = False
|
||||||
|
|
||||||
def BlenderRes(self=None, libname=None, source=None, libtype=['core'], priority=[100]):
|
def BlenderRes(self=None, libname=None, source=None, libtype=['core'], priority=[100]):
|
||||||
global libs
|
global libs
|
||||||
if not self or not libname or not source:
|
if not self or not libname or not source:
|
||||||
@@ -818,12 +825,14 @@ class BlenderEnvironment(SConsEnvironment):
|
|||||||
lenv.AddPostAction(prog,Action(AppIt,strfunction=my_appit_print))
|
lenv.AddPostAction(prog,Action(AppIt,strfunction=my_appit_print))
|
||||||
elif os.sep == '/' and lenv['OURPLATFORM'] != 'linuxcross': # any unix (except cross-compilation)
|
elif os.sep == '/' and lenv['OURPLATFORM'] != 'linuxcross': # any unix (except cross-compilation)
|
||||||
if lenv['WITH_BF_PYTHON']:
|
if lenv['WITH_BF_PYTHON']:
|
||||||
if not lenv['WITHOUT_BF_INSTALL'] and not lenv['WITHOUT_BF_PYTHON_INSTALL']:
|
if not lenv['WITHOUT_BF_INSTALL'] and not lenv['WITHOUT_BF_PYTHON_INSTALL'] and not BlenderEnvironment.PyBundleActionAdded:
|
||||||
lenv.AddPostAction(prog,Action(UnixPyBundle,strfunction=my_unixpybundle_print))
|
lenv.AddPostAction(prog,Action(UnixPyBundle,strfunction=my_unixpybundle_print))
|
||||||
|
BlenderEnvironment.PyBundleActionAdded = True
|
||||||
elif lenv['OURPLATFORM'].startswith('win') or lenv['OURPLATFORM'] == 'linuxcross': # windows or cross-compilation
|
elif lenv['OURPLATFORM'].startswith('win') or lenv['OURPLATFORM'] == 'linuxcross': # windows or cross-compilation
|
||||||
if lenv['WITH_BF_PYTHON']:
|
if lenv['WITH_BF_PYTHON']:
|
||||||
if not lenv['WITHOUT_BF_PYTHON_INSTALL']:
|
if not lenv['WITHOUT_BF_PYTHON_INSTALL'] and not BlenderEnvironment.PyBundleActionAdded:
|
||||||
lenv.AddPostAction(prog,Action(WinPyBundle,strfunction=my_winpybundle_print))
|
lenv.AddPostAction(prog,Action(WinPyBundle,strfunction=my_winpybundle_print))
|
||||||
|
BlenderEnvironment.PyBundleActionAdded = True
|
||||||
return prog
|
return prog
|
||||||
|
|
||||||
def Glob(lenv, pattern):
|
def Glob(lenv, pattern):
|
||||||
|
@@ -72,7 +72,7 @@ def print_arguments(args, bc):
|
|||||||
|
|
||||||
def validate_arguments(args, bc):
|
def validate_arguments(args, bc):
|
||||||
opts_list = [
|
opts_list = [
|
||||||
'WITH_BF_PYTHON', 'BF_PYTHON', 'BF_PYTHON_VERSION', 'BF_PYTHON_INC', 'BF_PYTHON_BINARY', 'BF_PYTHON_LIB', 'BF_PYTHON_LIBPATH', 'WITH_BF_STATICPYTHON', 'BF_PYTHON_LIB_STATIC', 'BF_PYTHON_DLL',
|
'WITH_BF_PYTHON', 'WITH_BF_PYTHON_SAFETY', 'BF_PYTHON', 'BF_PYTHON_VERSION', 'BF_PYTHON_INC', 'BF_PYTHON_BINARY', 'BF_PYTHON_LIB', 'BF_PYTHON_LIBPATH', 'WITH_BF_STATICPYTHON', 'BF_PYTHON_LIB_STATIC', 'BF_PYTHON_DLL',
|
||||||
'WITH_BF_OPENAL', 'BF_OPENAL', 'BF_OPENAL_INC', 'BF_OPENAL_LIB', 'BF_OPENAL_LIBPATH', 'WITH_BF_STATICOPENAL', 'BF_OPENAL_LIB_STATIC',
|
'WITH_BF_OPENAL', 'BF_OPENAL', 'BF_OPENAL_INC', 'BF_OPENAL_LIB', 'BF_OPENAL_LIBPATH', 'WITH_BF_STATICOPENAL', 'BF_OPENAL_LIB_STATIC',
|
||||||
'WITH_BF_SDL', 'BF_SDL', 'BF_SDL_INC', 'BF_SDL_LIB', 'BF_SDL_LIBPATH',
|
'WITH_BF_SDL', 'BF_SDL', 'BF_SDL_INC', 'BF_SDL_LIB', 'BF_SDL_LIBPATH',
|
||||||
'BF_LIBSAMPLERATE', 'BF_LIBSAMPLERATE_INC', 'BF_LIBSAMPLERATE_LIB', 'BF_LIBSAMPLERATE_LIBPATH', 'WITH_BF_STATICLIBSAMPLERATE', 'BF_LIBSAMPLERATE_LIB_STATIC',
|
'BF_LIBSAMPLERATE', 'BF_LIBSAMPLERATE_INC', 'BF_LIBSAMPLERATE_LIB', 'BF_LIBSAMPLERATE_LIBPATH', 'WITH_BF_STATICLIBSAMPLERATE', 'BF_LIBSAMPLERATE_LIB_STATIC',
|
||||||
@@ -211,6 +211,7 @@ def read_opts(env, cfg, args):
|
|||||||
localopts.AddVariables(
|
localopts.AddVariables(
|
||||||
('LCGDIR', 'location of cvs lib dir'),
|
('LCGDIR', 'location of cvs lib dir'),
|
||||||
(BoolVariable('WITH_BF_PYTHON', 'Compile with python', True)),
|
(BoolVariable('WITH_BF_PYTHON', 'Compile with python', True)),
|
||||||
|
(BoolVariable('WITH_BF_PYTHON_SAFETY', 'Internal API error checking to track invalid data to prevent crash on access (at the expense of some effeciency)', False)),
|
||||||
('BF_PYTHON', 'base path for python', ''),
|
('BF_PYTHON', 'base path for python', ''),
|
||||||
('BF_PYTHON_VERSION', 'Python version to use', ''),
|
('BF_PYTHON_VERSION', 'Python version to use', ''),
|
||||||
('BF_PYTHON_INC', 'include path for Python headers', ''),
|
('BF_PYTHON_INC', 'include path for Python headers', ''),
|
||||||
|
@@ -44,7 +44,7 @@ PROJECT_BRIEF =
|
|||||||
# exceed 55 pixels and the maximum width should not exceed 200 pixels.
|
# exceed 55 pixels and the maximum width should not exceed 200 pixels.
|
||||||
# Doxygen will copy the logo to the output directory.
|
# Doxygen will copy the logo to the output directory.
|
||||||
|
|
||||||
PROJECT_LOGO = ../release/freedesktop/icons/48x48/blender.png
|
PROJECT_LOGO = ../../release/freedesktop/icons/48x48/blender.png
|
||||||
|
|
||||||
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
|
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
|
||||||
# base path where the generated documentation will be put.
|
# base path where the generated documentation will be put.
|
||||||
@@ -616,9 +616,9 @@ INPUT = doxygen.main \
|
|||||||
doxygen.source \
|
doxygen.source \
|
||||||
doxygen.intern \
|
doxygen.intern \
|
||||||
doxygen.extern \
|
doxygen.extern \
|
||||||
../source \
|
../../source \
|
||||||
../intern \
|
../../intern \
|
||||||
../extern/bullet2
|
../../extern/bullet2
|
||||||
|
|
||||||
# This tag can be used to specify the character encoding of the source files
|
# This tag can be used to specify the character encoding of the source files
|
||||||
# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
|
# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
|
||||||
@@ -648,7 +648,7 @@ RECURSIVE = YES
|
|||||||
# excluded from the INPUT source files. This way you can easily exclude a
|
# excluded from the INPUT source files. This way you can easily exclude a
|
||||||
# subdirectory from a directory tree whose root is specified with the INPUT tag.
|
# subdirectory from a directory tree whose root is specified with the INPUT tag.
|
||||||
|
|
||||||
EXCLUDE = ../source/gameengine/PyDoc
|
EXCLUDE = ../../source/gameengine/PyDoc
|
||||||
|
|
||||||
# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
|
# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
|
||||||
# directories that are symbolic links (a Unix file system feature) are excluded
|
# directories that are symbolic links (a Unix file system feature) are excluded
|
@@ -1,6 +1,10 @@
|
|||||||
|
|
||||||
/** \defgroup blenderplayer Blender Player */
|
/** \defgroup blenderplayer Blender Player */
|
||||||
|
|
||||||
|
/** \defgroup blc bad level calls
|
||||||
|
* \ingroup blenderplayer
|
||||||
|
*/
|
||||||
|
|
||||||
/** \defgroup render Rendering
|
/** \defgroup render Rendering
|
||||||
* \ingroup blender
|
* \ingroup blender
|
||||||
*/
|
*/
|
||||||
@@ -14,6 +18,19 @@
|
|||||||
* \ingroup blender scripts
|
* \ingroup blender scripts
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** \defgroup pygen Python Generic
|
||||||
|
* \ingroup python
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** \defgroup pythonintern Python RNA and Operators
|
||||||
|
* \ingroup python
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** \defgroup blpluginapi Blender pluginapi
|
||||||
|
* \ingroup blender
|
||||||
|
* \attention not in use currently
|
||||||
|
*/
|
||||||
|
|
||||||
/* ================================ */
|
/* ================================ */
|
||||||
|
|
||||||
/** \defgroup bge Game Engine */
|
/** \defgroup bge Game Engine */
|
||||||
@@ -74,6 +91,10 @@
|
|||||||
|
|
||||||
/** \defgroup blender blender */
|
/** \defgroup blender blender */
|
||||||
|
|
||||||
|
/** \defgroup blf blenfont
|
||||||
|
* \ingroup blender
|
||||||
|
*/
|
||||||
|
|
||||||
/** \defgroup bke blenkernel
|
/** \defgroup bke blenkernel
|
||||||
* \ingroup blender
|
* \ingroup blender
|
||||||
*/
|
*/
|
||||||
@@ -86,6 +107,17 @@
|
|||||||
* \ingroup blender
|
* \ingroup blender
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** \defgroup cmpnodes cmpnodes
|
||||||
|
* \ingroup nodes
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** \defgroup shdnodes shdnodes
|
||||||
|
* \ingroup nodes
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** \defgroup texnodes texnodes
|
||||||
|
* \ingroup nodes
|
||||||
|
*/
|
||||||
/** \defgroup modifiers modifiers
|
/** \defgroup modifiers modifiers
|
||||||
* \ingroup blender
|
* \ingroup blender
|
||||||
*/
|
*/
|
||||||
@@ -107,11 +139,13 @@
|
|||||||
* \ingroup blender data
|
* \ingroup blender data
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** \defgroup readwrite .blend read and write functions
|
/** \defgroup blenloader .blend read and write functions
|
||||||
* \ingroup blender data
|
* \ingroup blender data
|
||||||
|
* \todo check if \ref blo and \ref blenloader groups can be
|
||||||
|
* merged in docs.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/** \defgroup readblenfile readblenfile
|
/** \defgroup blo readblenfile
|
||||||
* \ingroup blender data
|
* \ingroup blender data
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -294,6 +328,18 @@
|
|||||||
* \ingroup blender
|
* \ingroup blender
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** \defgroup imbcineon Cineon
|
||||||
|
* \ingroup imbuf
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** \defgorup imbdds DDS
|
||||||
|
* \ingroup imbuf
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** \defgroup openexr OpenEXR
|
||||||
|
* \ingroup imbuf
|
||||||
|
*/
|
||||||
|
|
||||||
/* ================================ */
|
/* ================================ */
|
||||||
|
|
||||||
/** \defgroup kernel kernel */
|
/** \defgroup kernel kernel */
|
@@ -1,4 +1,4 @@
|
|||||||
/*! \file btGImpactTriangleShape.h
|
/*! \file btTriangleShapeEx.cpp
|
||||||
\author Francisco Len N<>jera
|
\author Francisco Len N<>jera
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
#ifndef GIM_HASH_TABLE_H_INCLUDED
|
#ifndef GIM_HASH_TABLE_H_INCLUDED
|
||||||
#define GIM_HASH_TABLE_H_INCLUDED
|
#define GIM_HASH_TABLE_H_INCLUDED
|
||||||
/*! \file gim_trimesh_data.h
|
/*! \file gim_hash_table.h
|
||||||
\author Francisco Len N<>jera
|
\author Francisco Len N<>jera
|
||||||
*/
|
*/
|
||||||
/*
|
/*
|
||||||
|
@@ -752,13 +752,14 @@ GHOST_EventKey* GHOST_SystemWin32::processKeyEvent(GHOST_IWindow *window, bool k
|
|||||||
if (key != GHOST_kKeyUnknown) {
|
if (key != GHOST_kKeyUnknown) {
|
||||||
MSG keyMsg;
|
MSG keyMsg;
|
||||||
char ascii = '\0';
|
char ascii = '\0';
|
||||||
|
|
||||||
/* Eat any character related messages */
|
/* Eat any character related messages */
|
||||||
if (::PeekMessage(&keyMsg, NULL, WM_CHAR, WM_SYSDEADCHAR, PM_REMOVE)) {
|
|
||||||
ascii = (char) keyMsg.wParam;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
if (::PeekMessage(&keyMsg, NULL, WM_CHAR, WM_DEADCHAR, PM_REMOVE) ||
|
||||||
|
::PeekMessage(&keyMsg, NULL, WM_SYSCHAR, WM_SYSDEADCHAR, PM_REMOVE))
|
||||||
|
{
|
||||||
|
ascii = (char) keyMsg.wParam;
|
||||||
|
if(ascii > 126) ascii = 0;
|
||||||
|
};
|
||||||
event = new GHOST_EventKey(getSystem()->getMilliSeconds(), keyDown ? GHOST_kEventKeyDown: GHOST_kEventKeyUp, window, key, ascii);
|
event = new GHOST_EventKey(getSystem()->getMilliSeconds(), keyDown ? GHOST_kEventKeyDown: GHOST_kEventKeyUp, window, key, ascii);
|
||||||
|
|
||||||
#ifdef BF_GHOST_DEBUG
|
#ifdef BF_GHOST_DEBUG
|
||||||
|
@@ -195,7 +195,7 @@ static void mem_unlock_thread(void)
|
|||||||
thread_unlock_callback();
|
thread_unlock_callback();
|
||||||
}
|
}
|
||||||
|
|
||||||
int MEM_check_memory_integrity()
|
int MEM_check_memory_integrity(void)
|
||||||
{
|
{
|
||||||
const char* err_val = NULL;
|
const char* err_val = NULL;
|
||||||
MemHead* listend;
|
MemHead* listend;
|
||||||
@@ -205,7 +205,7 @@ int MEM_check_memory_integrity()
|
|||||||
|
|
||||||
err_val = check_memlist(listend);
|
err_val = check_memlist(listend);
|
||||||
|
|
||||||
if (err_val == 0) return 0;
|
if (err_val == NULL) return 0;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -286,7 +286,7 @@ static void make_memhead_header(MemHead *memh, size_t len, const char *str)
|
|||||||
|
|
||||||
memh->tag1 = MEMTAG1;
|
memh->tag1 = MEMTAG1;
|
||||||
memh->name = str;
|
memh->name = str;
|
||||||
memh->nextname = 0;
|
memh->nextname = NULL;
|
||||||
memh->len = len;
|
memh->len = len;
|
||||||
memh->mmap = 0;
|
memh->mmap = 0;
|
||||||
memh->tag2 = MEMTAG2;
|
memh->tag2 = MEMTAG2;
|
||||||
@@ -353,7 +353,7 @@ void *MEM_callocN(size_t len, const char *str)
|
|||||||
}
|
}
|
||||||
mem_unlock_thread();
|
mem_unlock_thread();
|
||||||
print_error("Calloc returns null: len=" SIZET_FORMAT " in %s, total %u\n", SIZET_ARG(len), str, mem_in_use);
|
print_error("Calloc returns null: len=" SIZET_FORMAT " in %s, total %u\n", SIZET_ARG(len), str, mem_in_use);
|
||||||
return 0;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* note; mmap returns zero'd memory */
|
/* note; mmap returns zero'd memory */
|
||||||
@@ -377,7 +377,7 @@ void *MEM_mapallocN(size_t len, const char *str)
|
|||||||
close(fd);
|
close(fd);
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
memh= mmap(0, len+sizeof(MemHead)+sizeof(MemTail),
|
memh= mmap(NULL, len+sizeof(MemHead)+sizeof(MemTail),
|
||||||
PROT_READ|PROT_WRITE, MAP_SHARED|MAP_ANON, -1, 0);
|
PROT_READ|PROT_WRITE, MAP_SHARED|MAP_ANON, -1, 0);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@@ -643,13 +643,13 @@ short MEM_freeN(void *vmemh) /* anders compileertie niet meer */
|
|||||||
error = 2;
|
error = 2;
|
||||||
MemorY_ErroR(memh->name,"end corrupt");
|
MemorY_ErroR(memh->name,"end corrupt");
|
||||||
name = check_memlist(memh);
|
name = check_memlist(memh);
|
||||||
if (name != 0){
|
if (name != NULL){
|
||||||
if (name != memh->name) MemorY_ErroR(name,"is also corrupt");
|
if (name != memh->name) MemorY_ErroR(name,"is also corrupt");
|
||||||
}
|
}
|
||||||
} else{
|
} else{
|
||||||
error = -1;
|
error = -1;
|
||||||
name = check_memlist(memh);
|
name = check_memlist(memh);
|
||||||
if (name == 0)
|
if (name == NULL)
|
||||||
MemorY_ErroR("free","pointer not in memlist");
|
MemorY_ErroR("free","pointer not in memlist");
|
||||||
else
|
else
|
||||||
MemorY_ErroR(name,"error in header");
|
MemorY_ErroR(name,"error in header");
|
||||||
@@ -671,14 +671,14 @@ static void addtail(volatile localListBase *listbase, void *vlink)
|
|||||||
{
|
{
|
||||||
struct localLink *link= vlink;
|
struct localLink *link= vlink;
|
||||||
|
|
||||||
if (link == 0) return;
|
if (link == NULL) return;
|
||||||
if (listbase == 0) return;
|
if (listbase == NULL) return;
|
||||||
|
|
||||||
link->next = 0;
|
link->next = NULL;
|
||||||
link->prev = listbase->last;
|
link->prev = listbase->last;
|
||||||
|
|
||||||
if (listbase->last) ((struct localLink *)listbase->last)->next = link;
|
if (listbase->last) ((struct localLink *)listbase->last)->next = link;
|
||||||
if (listbase->first == 0) listbase->first = link;
|
if (listbase->first == NULL) listbase->first = link;
|
||||||
listbase->last = link;
|
listbase->last = link;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -686,8 +686,8 @@ static void remlink(volatile localListBase *listbase, void *vlink)
|
|||||||
{
|
{
|
||||||
struct localLink *link= vlink;
|
struct localLink *link= vlink;
|
||||||
|
|
||||||
if (link == 0) return;
|
if (link == NULL) return;
|
||||||
if (listbase == 0) return;
|
if (listbase == NULL) return;
|
||||||
|
|
||||||
if (link->next) link->next->prev = link->prev;
|
if (link->next) link->next->prev = link->prev;
|
||||||
if (link->prev) link->prev->next = link->next;
|
if (link->prev) link->prev->next = link->next;
|
||||||
@@ -733,50 +733,50 @@ static const char *check_memlist(MemHead *memh)
|
|||||||
|
|
||||||
forw = membase->first;
|
forw = membase->first;
|
||||||
if (forw) forw = MEMNEXT(forw);
|
if (forw) forw = MEMNEXT(forw);
|
||||||
forwok = 0;
|
forwok = NULL;
|
||||||
while(forw){
|
while(forw){
|
||||||
if (forw->tag1 != MEMTAG1 || forw->tag2 != MEMTAG2) break;
|
if (forw->tag1 != MEMTAG1 || forw->tag2 != MEMTAG2) break;
|
||||||
forwok = forw;
|
forwok = forw;
|
||||||
if (forw->next) forw = MEMNEXT(forw->next);
|
if (forw->next) forw = MEMNEXT(forw->next);
|
||||||
else forw = 0;
|
else forw = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
back = (MemHead *) membase->last;
|
back = (MemHead *) membase->last;
|
||||||
if (back) back = MEMNEXT(back);
|
if (back) back = MEMNEXT(back);
|
||||||
backok = 0;
|
backok = NULL;
|
||||||
while(back){
|
while(back){
|
||||||
if (back->tag1 != MEMTAG1 || back->tag2 != MEMTAG2) break;
|
if (back->tag1 != MEMTAG1 || back->tag2 != MEMTAG2) break;
|
||||||
backok = back;
|
backok = back;
|
||||||
if (back->prev) back = MEMNEXT(back->prev);
|
if (back->prev) back = MEMNEXT(back->prev);
|
||||||
else back = 0;
|
else back = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (forw != back) return ("MORE THAN 1 MEMORYBLOCK CORRUPT");
|
if (forw != back) return ("MORE THAN 1 MEMORYBLOCK CORRUPT");
|
||||||
|
|
||||||
if (forw == 0 && back == 0){
|
if (forw == NULL && back == NULL){
|
||||||
/* geen foute headers gevonden dan maar op zoek naar memblock*/
|
/* geen foute headers gevonden dan maar op zoek naar memblock*/
|
||||||
|
|
||||||
forw = membase->first;
|
forw = membase->first;
|
||||||
if (forw) forw = MEMNEXT(forw);
|
if (forw) forw = MEMNEXT(forw);
|
||||||
forwok = 0;
|
forwok = NULL;
|
||||||
while(forw){
|
while(forw){
|
||||||
if (forw == memh) break;
|
if (forw == memh) break;
|
||||||
if (forw->tag1 != MEMTAG1 || forw->tag2 != MEMTAG2) break;
|
if (forw->tag1 != MEMTAG1 || forw->tag2 != MEMTAG2) break;
|
||||||
forwok = forw;
|
forwok = forw;
|
||||||
if (forw->next) forw = MEMNEXT(forw->next);
|
if (forw->next) forw = MEMNEXT(forw->next);
|
||||||
else forw = 0;
|
else forw = NULL;
|
||||||
}
|
}
|
||||||
if (forw == 0) return (0);
|
if (forw == NULL) return NULL;
|
||||||
|
|
||||||
back = (MemHead *) membase->last;
|
back = (MemHead *) membase->last;
|
||||||
if (back) back = MEMNEXT(back);
|
if (back) back = MEMNEXT(back);
|
||||||
backok = 0;
|
backok = NULL;
|
||||||
while(back){
|
while(back){
|
||||||
if (back == memh) break;
|
if (back == memh) break;
|
||||||
if (back->tag1 != MEMTAG1 || back->tag2 != MEMTAG2) break;
|
if (back->tag1 != MEMTAG1 || back->tag2 != MEMTAG2) break;
|
||||||
backok = back;
|
backok = back;
|
||||||
if (back->prev) back = MEMNEXT(back->prev);
|
if (back->prev) back = MEMNEXT(back->prev);
|
||||||
else back = 0;
|
else back = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -791,16 +791,16 @@ static const char *check_memlist(MemHead *memh)
|
|||||||
backok->prev = (MemHead *)&forwok->next;
|
backok->prev = (MemHead *)&forwok->next;
|
||||||
forwok->nextname = backok->name;
|
forwok->nextname = backok->name;
|
||||||
} else{
|
} else{
|
||||||
forwok->next = 0;
|
forwok->next = NULL;
|
||||||
membase->last = (struct localLink *) &forwok->next;
|
membase->last = (struct localLink *) &forwok->next;
|
||||||
/* membase->last = (struct Link *) &forwok->next; */
|
/* membase->last = (struct Link *) &forwok->next; */
|
||||||
}
|
}
|
||||||
} else{
|
} else{
|
||||||
if (backok){
|
if (backok){
|
||||||
backok->prev = 0;
|
backok->prev = NULL;
|
||||||
membase->first = &backok->next;
|
membase->first = &backok->next;
|
||||||
} else{
|
} else{
|
||||||
membase->first = membase->last = 0;
|
membase->first = membase->last = NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else{
|
} else{
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 205 KiB After Width: | Height: | Size: 205 KiB |
@@ -115,8 +115,7 @@ class RENDER_PT_network_settings(NetRenderButtonsPanel, bpy.types.Panel):
|
|||||||
def draw(self, context):
|
def draw(self, context):
|
||||||
layout = self.layout
|
layout = self.layout
|
||||||
|
|
||||||
scene = context.scene
|
netsettings = context.scene.network_render
|
||||||
netsettings = scene.network_render
|
|
||||||
|
|
||||||
verify_address(netsettings)
|
verify_address(netsettings)
|
||||||
|
|
||||||
@@ -157,18 +156,18 @@ class RENDER_PT_network_slave_settings(NetRenderButtonsPanel, bpy.types.Panel):
|
|||||||
def draw(self, context):
|
def draw(self, context):
|
||||||
layout = self.layout
|
layout = self.layout
|
||||||
|
|
||||||
scene = context.scene
|
rd = context.scene.render
|
||||||
rd = scene.render
|
netsettings = context.scene.network_render
|
||||||
netsettings = scene.network_render
|
|
||||||
|
|
||||||
layout.prop(netsettings, "use_slave_clear")
|
layout.prop(netsettings, "use_slave_clear")
|
||||||
layout.prop(netsettings, "use_slave_thumb")
|
layout.prop(netsettings, "use_slave_thumb")
|
||||||
layout.prop(netsettings, "use_slave_output_log")
|
layout.prop(netsettings, "use_slave_output_log")
|
||||||
layout.label(text="Threads:")
|
layout.label(text="Threads:")
|
||||||
layout.prop(rd, "threads_mode", expand=True)
|
layout.prop(rd, "threads_mode", expand=True)
|
||||||
sub = layout.column()
|
|
||||||
sub.enabled = rd.threads_mode == 'FIXED'
|
col = layout.column()
|
||||||
sub.prop(rd, "threads")
|
col.enabled = rd.threads_mode == 'FIXED'
|
||||||
|
col.prop(rd, "threads")
|
||||||
|
|
||||||
class RENDER_PT_network_master_settings(NetRenderButtonsPanel, bpy.types.Panel):
|
class RENDER_PT_network_master_settings(NetRenderButtonsPanel, bpy.types.Panel):
|
||||||
bl_label = "Master Settings"
|
bl_label = "Master Settings"
|
||||||
@@ -182,8 +181,7 @@ class RENDER_PT_network_master_settings(NetRenderButtonsPanel, bpy.types.Panel):
|
|||||||
def draw(self, context):
|
def draw(self, context):
|
||||||
layout = self.layout
|
layout = self.layout
|
||||||
|
|
||||||
scene = context.scene
|
netsettings = context.scene.network_render
|
||||||
netsettings = scene.network_render
|
|
||||||
|
|
||||||
layout.prop(netsettings, "use_master_broadcast")
|
layout.prop(netsettings, "use_master_broadcast")
|
||||||
layout.prop(netsettings, "use_master_clear")
|
layout.prop(netsettings, "use_master_clear")
|
||||||
@@ -200,8 +198,7 @@ class RENDER_PT_network_job(NetRenderButtonsPanel, bpy.types.Panel):
|
|||||||
def draw(self, context):
|
def draw(self, context):
|
||||||
layout = self.layout
|
layout = self.layout
|
||||||
|
|
||||||
scene = context.scene
|
netsettings = context.scene.network_render
|
||||||
netsettings = scene.network_render
|
|
||||||
|
|
||||||
verify_address(netsettings)
|
verify_address(netsettings)
|
||||||
|
|
||||||
@@ -244,8 +241,7 @@ class RENDER_PT_network_job_vcs(NetRenderButtonsPanel, bpy.types.Panel):
|
|||||||
def draw(self, context):
|
def draw(self, context):
|
||||||
layout = self.layout
|
layout = self.layout
|
||||||
|
|
||||||
scene = context.scene
|
netsettings = context.scene.network_render
|
||||||
netsettings = scene.network_render
|
|
||||||
|
|
||||||
layout.operator("render.netclientvcsguess", icon='FILE_REFRESH', text="")
|
layout.operator("render.netclientvcsguess", icon='FILE_REFRESH', text="")
|
||||||
|
|
||||||
@@ -266,8 +262,7 @@ class RENDER_PT_network_slaves(NeedValidAddress, NetRenderButtonsPanel, bpy.type
|
|||||||
def draw(self, context):
|
def draw(self, context):
|
||||||
layout = self.layout
|
layout = self.layout
|
||||||
|
|
||||||
scene = context.scene
|
netsettings = context.scene.network_render
|
||||||
netsettings = scene.network_render
|
|
||||||
|
|
||||||
row = layout.row()
|
row = layout.row()
|
||||||
row.template_list(netsettings, "slaves", netsettings, "active_slave_index", rows=2)
|
row.template_list(netsettings, "slaves", netsettings, "active_slave_index", rows=2)
|
||||||
@@ -298,8 +293,7 @@ class RENDER_PT_network_slaves_blacklist(NeedValidAddress, NetRenderButtonsPanel
|
|||||||
def draw(self, context):
|
def draw(self, context):
|
||||||
layout = self.layout
|
layout = self.layout
|
||||||
|
|
||||||
scene = context.scene
|
netsettings = context.scene.network_render
|
||||||
netsettings = scene.network_render
|
|
||||||
|
|
||||||
row = layout.row()
|
row = layout.row()
|
||||||
row.template_list(netsettings, "slaves_blacklist", netsettings, "active_blacklisted_slave_index", rows=2)
|
row.template_list(netsettings, "slaves_blacklist", netsettings, "active_blacklisted_slave_index", rows=2)
|
||||||
@@ -329,8 +323,7 @@ class RENDER_PT_network_jobs(NeedValidAddress, NetRenderButtonsPanel, bpy.types.
|
|||||||
def draw(self, context):
|
def draw(self, context):
|
||||||
layout = self.layout
|
layout = self.layout
|
||||||
|
|
||||||
scene = context.scene
|
netsettings = context.scene.network_render
|
||||||
netsettings = scene.network_render
|
|
||||||
|
|
||||||
row = layout.row()
|
row = layout.row()
|
||||||
row.template_list(netsettings, "jobs", netsettings, "active_job_index", rows=2)
|
row.template_list(netsettings, "jobs", netsettings, "active_job_index", rows=2)
|
||||||
|
@@ -26,7 +26,7 @@ to work correctly.
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
import bpy
|
import bpy
|
||||||
from keyingsets_utils import *
|
import keyingsets_utils
|
||||||
|
|
||||||
###############################
|
###############################
|
||||||
# Built-In KeyingSets
|
# Built-In KeyingSets
|
||||||
@@ -37,13 +37,13 @@ class BUILTIN_KSI_Location(bpy.types.KeyingSetInfo):
|
|||||||
bl_label = "Location"
|
bl_label = "Location"
|
||||||
|
|
||||||
# poll - use predefined callback for selected bones/objects
|
# poll - use predefined callback for selected bones/objects
|
||||||
poll = RKS_POLL_selected_items
|
poll = keyingsets_utils.RKS_POLL_selected_items
|
||||||
|
|
||||||
# iterator - use callback for selected bones/objects
|
# iterator - use callback for selected bones/objects
|
||||||
iterator = RKS_ITER_selected_item
|
iterator = keyingsets_utils.RKS_ITER_selected_item
|
||||||
|
|
||||||
# generator - use callback for location
|
# generator - use callback for location
|
||||||
generate = RKS_GEN_location
|
generate = keyingsets_utils.RKS_GEN_location
|
||||||
|
|
||||||
|
|
||||||
# Rotation
|
# Rotation
|
||||||
@@ -51,13 +51,13 @@ class BUILTIN_KSI_Rotation(bpy.types.KeyingSetInfo):
|
|||||||
bl_label = "Rotation"
|
bl_label = "Rotation"
|
||||||
|
|
||||||
# poll - use predefined callback for selected bones/objects
|
# poll - use predefined callback for selected bones/objects
|
||||||
poll = RKS_POLL_selected_items
|
poll = keyingsets_utils.RKS_POLL_selected_items
|
||||||
|
|
||||||
# iterator - use callback for selected bones/objects
|
# iterator - use callback for selected bones/objects
|
||||||
iterator = RKS_ITER_selected_item
|
iterator = keyingsets_utils.RKS_ITER_selected_item
|
||||||
|
|
||||||
# generator - use callback for location
|
# generator - use callback for location
|
||||||
generate = RKS_GEN_rotation
|
generate = keyingsets_utils.RKS_GEN_rotation
|
||||||
|
|
||||||
|
|
||||||
# Scale
|
# Scale
|
||||||
@@ -65,13 +65,13 @@ class BUILTIN_KSI_Scaling(bpy.types.KeyingSetInfo):
|
|||||||
bl_label = "Scaling"
|
bl_label = "Scaling"
|
||||||
|
|
||||||
# poll - use predefined callback for selected bones/objects
|
# poll - use predefined callback for selected bones/objects
|
||||||
poll = RKS_POLL_selected_items
|
poll = keyingsets_utils.RKS_POLL_selected_items
|
||||||
|
|
||||||
# iterator - use callback for selected bones/objects
|
# iterator - use callback for selected bones/objects
|
||||||
iterator = RKS_ITER_selected_item
|
iterator = keyingsets_utils.RKS_ITER_selected_item
|
||||||
|
|
||||||
# generator - use callback for location
|
# generator - use callback for location
|
||||||
generate = RKS_GEN_scaling
|
generate = keyingsets_utils.RKS_GEN_scaling
|
||||||
|
|
||||||
# ------------
|
# ------------
|
||||||
|
|
||||||
@@ -81,17 +81,17 @@ class BUILTIN_KSI_LocRot(bpy.types.KeyingSetInfo):
|
|||||||
bl_label = "LocRot"
|
bl_label = "LocRot"
|
||||||
|
|
||||||
# poll - use predefined callback for selected bones/objects
|
# poll - use predefined callback for selected bones/objects
|
||||||
poll = RKS_POLL_selected_items
|
poll = keyingsets_utils.RKS_POLL_selected_items
|
||||||
|
|
||||||
# iterator - use callback for selected bones/objects
|
# iterator - use callback for selected bones/objects
|
||||||
iterator = RKS_ITER_selected_item
|
iterator = keyingsets_utils.RKS_ITER_selected_item
|
||||||
|
|
||||||
# generator
|
# generator
|
||||||
def generate(self, context, ks, data):
|
def generate(self, context, ks, data):
|
||||||
# location
|
# location
|
||||||
RKS_GEN_location(self, context, ks, data)
|
keyingsets_utils.RKS_GEN_location(self, context, ks, data)
|
||||||
# rotation
|
# rotation
|
||||||
RKS_GEN_rotation(self, context, ks, data)
|
keyingsets_utils.RKS_GEN_rotation(self, context, ks, data)
|
||||||
|
|
||||||
|
|
||||||
# LocScale
|
# LocScale
|
||||||
@@ -99,17 +99,17 @@ class BUILTIN_KSI_LocScale(bpy.types.KeyingSetInfo):
|
|||||||
bl_label = "LocScale"
|
bl_label = "LocScale"
|
||||||
|
|
||||||
# poll - use predefined callback for selected bones/objects
|
# poll - use predefined callback for selected bones/objects
|
||||||
poll = RKS_POLL_selected_items
|
poll = keyingsets_utils.RKS_POLL_selected_items
|
||||||
|
|
||||||
# iterator - use callback for selected bones/objects
|
# iterator - use callback for selected bones/objects
|
||||||
iterator = RKS_ITER_selected_item
|
iterator = keyingsets_utils.RKS_ITER_selected_item
|
||||||
|
|
||||||
# generator
|
# generator
|
||||||
def generate(self, context, ks, data):
|
def generate(self, context, ks, data):
|
||||||
# location
|
# location
|
||||||
RKS_GEN_location(self, context, ks, data)
|
keyingsets_utils.RKS_GEN_location(self, context, ks, data)
|
||||||
# scale
|
# scale
|
||||||
RKS_GEN_scaling(self, context, ks, data)
|
keyingsets_utils.RKS_GEN_scaling(self, context, ks, data)
|
||||||
|
|
||||||
|
|
||||||
# LocRotScale
|
# LocRotScale
|
||||||
@@ -117,19 +117,19 @@ class BUILTIN_KSI_LocRotScale(bpy.types.KeyingSetInfo):
|
|||||||
bl_label = "LocRotScale"
|
bl_label = "LocRotScale"
|
||||||
|
|
||||||
# poll - use predefined callback for selected bones/objects
|
# poll - use predefined callback for selected bones/objects
|
||||||
poll = RKS_POLL_selected_items
|
poll = keyingsets_utils.RKS_POLL_selected_items
|
||||||
|
|
||||||
# iterator - use callback for selected bones/objects
|
# iterator - use callback for selected bones/objects
|
||||||
iterator = RKS_ITER_selected_item
|
iterator = keyingsets_utils.RKS_ITER_selected_item
|
||||||
|
|
||||||
# generator
|
# generator
|
||||||
def generate(self, context, ks, data):
|
def generate(self, context, ks, data):
|
||||||
# location
|
# location
|
||||||
RKS_GEN_location(self, context, ks, data)
|
keyingsets_utils.RKS_GEN_location(self, context, ks, data)
|
||||||
# rotation
|
# rotation
|
||||||
RKS_GEN_rotation(self, context, ks, data)
|
keyingsets_utils.RKS_GEN_rotation(self, context, ks, data)
|
||||||
# scale
|
# scale
|
||||||
RKS_GEN_scaling(self, context, ks, data)
|
keyingsets_utils.RKS_GEN_scaling(self, context, ks, data)
|
||||||
|
|
||||||
|
|
||||||
# RotScale
|
# RotScale
|
||||||
@@ -137,17 +137,17 @@ class BUILTIN_KSI_RotScale(bpy.types.KeyingSetInfo):
|
|||||||
bl_label = "RotScale"
|
bl_label = "RotScale"
|
||||||
|
|
||||||
# poll - use predefined callback for selected bones/objects
|
# poll - use predefined callback for selected bones/objects
|
||||||
poll = RKS_POLL_selected_items
|
poll = keyingsets_utils.RKS_POLL_selected_items
|
||||||
|
|
||||||
# iterator - use callback for selected bones/objects
|
# iterator - use callback for selected bones/objects
|
||||||
iterator = RKS_ITER_selected_item
|
iterator = keyingsets_utils.RKS_ITER_selected_item
|
||||||
|
|
||||||
# generator
|
# generator
|
||||||
def generate(self, context, ks, data):
|
def generate(self, context, ks, data):
|
||||||
# rotation
|
# rotation
|
||||||
RKS_GEN_rotation(self, context, ks, data)
|
keyingsets_utils.RKS_GEN_rotation(self, context, ks, data)
|
||||||
# scaling
|
# scaling
|
||||||
RKS_GEN_scaling(self, context, ks, data)
|
keyingsets_utils.RKS_GEN_scaling(self, context, ks, data)
|
||||||
|
|
||||||
# ------------
|
# ------------
|
||||||
|
|
||||||
@@ -159,13 +159,13 @@ class BUILTIN_KSI_VisualLoc(bpy.types.KeyingSetInfo):
|
|||||||
bl_options = {'INSERTKEY_VISUAL'}
|
bl_options = {'INSERTKEY_VISUAL'}
|
||||||
|
|
||||||
# poll - use predefined callback for selected bones/objects
|
# poll - use predefined callback for selected bones/objects
|
||||||
poll = RKS_POLL_selected_items
|
poll = keyingsets_utils.RKS_POLL_selected_items
|
||||||
|
|
||||||
# iterator - use callback for selected bones/objects
|
# iterator - use callback for selected bones/objects
|
||||||
iterator = RKS_ITER_selected_item
|
iterator = keyingsets_utils.RKS_ITER_selected_item
|
||||||
|
|
||||||
# generator - use callback for location
|
# generator - use callback for location
|
||||||
generate = RKS_GEN_location
|
generate = keyingsets_utils.RKS_GEN_location
|
||||||
|
|
||||||
|
|
||||||
# Rotation
|
# Rotation
|
||||||
@@ -175,13 +175,13 @@ class BUILTIN_KSI_VisualRot(bpy.types.KeyingSetInfo):
|
|||||||
bl_options = {'INSERTKEY_VISUAL'}
|
bl_options = {'INSERTKEY_VISUAL'}
|
||||||
|
|
||||||
# poll - use predefined callback for selected bones/objects
|
# poll - use predefined callback for selected bones/objects
|
||||||
poll = RKS_POLL_selected_items
|
poll = keyingsets_utils.RKS_POLL_selected_items
|
||||||
|
|
||||||
# iterator - use callback for selected bones/objects
|
# iterator - use callback for selected bones/objects
|
||||||
iterator = RKS_ITER_selected_item
|
iterator = keyingsets_utils.RKS_ITER_selected_item
|
||||||
|
|
||||||
# generator - use callback for rotation
|
# generator - use callback for rotation
|
||||||
generate = RKS_GEN_rotation
|
generate = keyingsets_utils.RKS_GEN_rotation
|
||||||
|
|
||||||
|
|
||||||
# VisualLocRot
|
# VisualLocRot
|
||||||
@@ -191,17 +191,17 @@ class BUILTIN_KSI_VisualLocRot(bpy.types.KeyingSetInfo):
|
|||||||
bl_options = {'INSERTKEY_VISUAL'}
|
bl_options = {'INSERTKEY_VISUAL'}
|
||||||
|
|
||||||
# poll - use predefined callback for selected bones/objects
|
# poll - use predefined callback for selected bones/objects
|
||||||
poll = RKS_POLL_selected_items
|
poll = keyingsets_utils.RKS_POLL_selected_items
|
||||||
|
|
||||||
# iterator - use callback for selected bones/objects
|
# iterator - use callback for selected bones/objects
|
||||||
iterator = RKS_ITER_selected_item
|
iterator = keyingsets_utils.RKS_ITER_selected_item
|
||||||
|
|
||||||
# generator
|
# generator
|
||||||
def generate(self, context, ks, data):
|
def generate(self, context, ks, data):
|
||||||
# location
|
# location
|
||||||
RKS_GEN_location(self, context, ks, data)
|
keyingsets_utils.RKS_GEN_location(self, context, ks, data)
|
||||||
# rotation
|
# rotation
|
||||||
RKS_GEN_rotation(self, context, ks, data)
|
keyingsets_utils.RKS_GEN_rotation(self, context, ks, data)
|
||||||
|
|
||||||
# ------------
|
# ------------
|
||||||
|
|
||||||
@@ -213,13 +213,13 @@ class BUILTIN_KSI_Available(bpy.types.KeyingSetInfo):
|
|||||||
# poll - use predefined callback for selected objects
|
# poll - use predefined callback for selected objects
|
||||||
# TODO: this should really check whether the selected object (or datablock)
|
# TODO: this should really check whether the selected object (or datablock)
|
||||||
# has any animation data defined yet
|
# has any animation data defined yet
|
||||||
poll = RKS_POLL_selected_objects
|
poll = keyingsets_utils.RKS_POLL_selected_objects
|
||||||
|
|
||||||
# iterator - use callback for selected bones/objects
|
# iterator - use callback for selected bones/objects
|
||||||
iterator = RKS_ITER_selected_item
|
iterator = keyingsets_utils.RKS_ITER_selected_item
|
||||||
|
|
||||||
# generator - use callback for doing this
|
# generator - use callback for doing this
|
||||||
generate = RKS_GEN_available
|
generate = keyingsets_utils.RKS_GEN_available
|
||||||
|
|
||||||
###############################
|
###############################
|
||||||
|
|
||||||
@@ -278,7 +278,7 @@ class BUILTIN_KSI_WholeCharacter(bpy.types.KeyingSetInfo):
|
|||||||
path = id_path + prop
|
path = id_path + prop
|
||||||
else:
|
else:
|
||||||
# standard transforms/properties
|
# standard transforms/properties
|
||||||
path = path_add_property(id_path, prop)
|
path = keyingsets_utils.path_add_property(id_path, prop)
|
||||||
|
|
||||||
# add Keying Set entry for this...
|
# add Keying Set entry for this...
|
||||||
if use_groups:
|
if use_groups:
|
||||||
@@ -363,5 +363,3 @@ def unregister():
|
|||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
register()
|
register()
|
||||||
|
|
||||||
###############################
|
|
||||||
|
@@ -37,18 +37,6 @@ import sys as _sys
|
|||||||
|
|
||||||
def _main():
|
def _main():
|
||||||
|
|
||||||
## security issue, dont allow the $CWD in the path.
|
|
||||||
## note: this removes "" but not "." which are the same, security
|
|
||||||
## people need to explain how this is even a fix.
|
|
||||||
# _sys.path[:] = filter(None, _sys.path)
|
|
||||||
|
|
||||||
# because of how the console works. we need our own help() pager func.
|
|
||||||
# replace the bold function because it adds crazy chars
|
|
||||||
import pydoc
|
|
||||||
pydoc.getpager = lambda: pydoc.plainpager
|
|
||||||
pydoc.Helper.getline = lambda self, prompt: None
|
|
||||||
pydoc.TextDoc.use_bold = lambda self, text: text
|
|
||||||
|
|
||||||
# Possibly temp. addons path
|
# Possibly temp. addons path
|
||||||
from os.path import join, dirname, normpath
|
from os.path import join, dirname, normpath
|
||||||
_sys.path.append(normpath(join(dirname(__file__), "..", "..", "addons", "modules")))
|
_sys.path.append(normpath(join(dirname(__file__), "..", "..", "addons", "modules")))
|
||||||
|
@@ -23,10 +23,7 @@ This module contains utility functions specific to blender but
|
|||||||
not assosiated with blenders internal data.
|
not assosiated with blenders internal data.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from _bpy import register_class
|
from _bpy import register_class, unregister_class, blend_paths
|
||||||
from _bpy import unregister_class
|
|
||||||
|
|
||||||
from _bpy import blend_paths
|
|
||||||
from _bpy import script_paths as _bpy_script_paths
|
from _bpy import script_paths as _bpy_script_paths
|
||||||
from _bpy import user_resource as _user_resource
|
from _bpy import user_resource as _user_resource
|
||||||
|
|
||||||
@@ -38,22 +35,26 @@ import addon_utils
|
|||||||
|
|
||||||
|
|
||||||
def _test_import(module_name, loaded_modules):
|
def _test_import(module_name, loaded_modules):
|
||||||
import traceback
|
use_time = _bpy.app.debug
|
||||||
import time
|
|
||||||
if module_name in loaded_modules:
|
if module_name in loaded_modules:
|
||||||
return None
|
return None
|
||||||
if "." in module_name:
|
if "." in module_name:
|
||||||
print("Ignoring '%s', can't import files containing multiple periods." % module_name)
|
print("Ignoring '%s', can't import files containing multiple periods." % module_name)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
t = time.time()
|
if use_time:
|
||||||
|
import time
|
||||||
|
t = time.time()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
mod = __import__(module_name)
|
mod = __import__(module_name)
|
||||||
except:
|
except:
|
||||||
|
import traceback
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
return None
|
return None
|
||||||
|
|
||||||
if _bpy.app.debug:
|
if use_time:
|
||||||
print("time %s %.4f" % (module_name, time.time() - t))
|
print("time %s %.4f" % (module_name, time.time() - t))
|
||||||
|
|
||||||
loaded_modules.add(mod.__name__) # should match mod.__name__ too
|
loaded_modules.add(mod.__name__) # should match mod.__name__ too
|
||||||
@@ -99,10 +100,11 @@ def load_scripts(reload_scripts=False, refresh_scripts=False):
|
|||||||
:arg refresh_scripts: only load scripts which are not already loaded as modules.
|
:arg refresh_scripts: only load scripts which are not already loaded as modules.
|
||||||
:type refresh_scripts: bool
|
:type refresh_scripts: bool
|
||||||
"""
|
"""
|
||||||
import traceback
|
use_time = _bpy.app.debug
|
||||||
import time
|
|
||||||
|
|
||||||
t_main = time.time()
|
if use_time:
|
||||||
|
import time
|
||||||
|
t_main = time.time()
|
||||||
|
|
||||||
loaded_modules = set()
|
loaded_modules = set()
|
||||||
|
|
||||||
@@ -124,6 +126,7 @@ def load_scripts(reload_scripts=False, refresh_scripts=False):
|
|||||||
try:
|
try:
|
||||||
register()
|
register()
|
||||||
except:
|
except:
|
||||||
|
import traceback
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
else:
|
else:
|
||||||
print("\nWarning! '%s' has no register function, this is now a requirement for registerable scripts." % mod.__file__)
|
print("\nWarning! '%s' has no register function, this is now a requirement for registerable scripts." % mod.__file__)
|
||||||
@@ -134,6 +137,7 @@ def load_scripts(reload_scripts=False, refresh_scripts=False):
|
|||||||
try:
|
try:
|
||||||
unregister()
|
unregister()
|
||||||
except:
|
except:
|
||||||
|
import traceback
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
|
|
||||||
def test_reload(mod):
|
def test_reload(mod):
|
||||||
@@ -147,6 +151,7 @@ def load_scripts(reload_scripts=False, refresh_scripts=False):
|
|||||||
try:
|
try:
|
||||||
return imp.reload(mod)
|
return imp.reload(mod)
|
||||||
except:
|
except:
|
||||||
|
import traceback
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
|
|
||||||
def test_register(mod):
|
def test_register(mod):
|
||||||
@@ -207,7 +212,7 @@ def load_scripts(reload_scripts=False, refresh_scripts=False):
|
|||||||
import gc
|
import gc
|
||||||
print("gc.collect() -> %d" % gc.collect())
|
print("gc.collect() -> %d" % gc.collect())
|
||||||
|
|
||||||
if _bpy.app.debug:
|
if use_time:
|
||||||
print("Python Script Load Time %.4f" % (time.time() - t_main))
|
print("Python Script Load Time %.4f" % (time.time() - t_main))
|
||||||
|
|
||||||
|
|
||||||
@@ -412,29 +417,29 @@ def _bpy_module_classes(module, is_registered=False):
|
|||||||
typemap_list = _bpy_types.TypeMap.get(module, ())
|
typemap_list = _bpy_types.TypeMap.get(module, ())
|
||||||
i = 0
|
i = 0
|
||||||
while i < len(typemap_list):
|
while i < len(typemap_list):
|
||||||
cls_weakref, path, line = typemap_list[i]
|
cls_weakref = typemap_list[i]
|
||||||
cls = cls_weakref()
|
cls = cls_weakref()
|
||||||
|
|
||||||
if cls is None:
|
if cls is None:
|
||||||
del typemap_list[i]
|
del typemap_list[i]
|
||||||
else:
|
else:
|
||||||
if is_registered == cls.is_registered:
|
if is_registered == cls.is_registered:
|
||||||
yield (cls, path, line)
|
yield cls
|
||||||
i += 1
|
i += 1
|
||||||
|
|
||||||
|
|
||||||
def register_module(module, verbose=False):
|
def register_module(module, verbose=False):
|
||||||
import traceback
|
|
||||||
if verbose:
|
if verbose:
|
||||||
print("bpy.utils.register_module(%r): ..." % module)
|
print("bpy.utils.register_module(%r): ..." % module)
|
||||||
for cls, path, line in _bpy_module_classes(module, is_registered=False):
|
for cls in _bpy_module_classes(module, is_registered=False):
|
||||||
if verbose:
|
if verbose:
|
||||||
print(" %s of %s:%s" % (cls, path, line))
|
print(" %r" % cls)
|
||||||
try:
|
try:
|
||||||
register_class(cls)
|
register_class(cls)
|
||||||
except:
|
except:
|
||||||
print("bpy.utils.register_module(): failed to registering class '%s.%s'" % (cls.__module__, cls.__name__))
|
print("bpy.utils.register_module(): failed to registering class %r" % cls)
|
||||||
print("\t", path, "line", line)
|
print("\t", path, "line", line)
|
||||||
|
import traceback
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
if verbose:
|
if verbose:
|
||||||
print("done.\n")
|
print("done.\n")
|
||||||
@@ -443,17 +448,17 @@ def register_module(module, verbose=False):
|
|||||||
|
|
||||||
|
|
||||||
def unregister_module(module, verbose=False):
|
def unregister_module(module, verbose=False):
|
||||||
import traceback
|
|
||||||
if verbose:
|
if verbose:
|
||||||
print("bpy.utils.unregister_module(%r): ..." % module)
|
print("bpy.utils.unregister_module(%r): ..." % module)
|
||||||
for cls, path, line in _bpy_module_classes(module, is_registered=True):
|
for cls in _bpy_module_classes(module, is_registered=True):
|
||||||
if verbose:
|
if verbose:
|
||||||
print(" %s of %s:%s" % (cls, path, line))
|
print(" %r" % cls)
|
||||||
try:
|
try:
|
||||||
unregister_class(cls)
|
unregister_class(cls)
|
||||||
except:
|
except:
|
||||||
print("bpy.utils.unregister_module(): failed to unregistering class '%s.%s'" % (cls.__module__, cls.__name__))
|
print("bpy.utils.unregister_module(): failed to unregistering class %r" % cls)
|
||||||
print("\t", path, "line", line)
|
print("\t", path, "line", line)
|
||||||
|
import traceback
|
||||||
traceback.print_exc()
|
traceback.print_exc()
|
||||||
if verbose:
|
if verbose:
|
||||||
print("done.\n")
|
print("done.\n")
|
||||||
|
@@ -567,18 +567,15 @@ TypeMap = {}
|
|||||||
class RNAMeta(type):
|
class RNAMeta(type):
|
||||||
def __new__(cls, name, bases, classdict, **args):
|
def __new__(cls, name, bases, classdict, **args):
|
||||||
result = type.__new__(cls, name, bases, classdict)
|
result = type.__new__(cls, name, bases, classdict)
|
||||||
if bases and bases[0] != StructRNA:
|
if bases and bases[0] is not StructRNA:
|
||||||
import traceback
|
from _weakref import ref as ref
|
||||||
import weakref
|
|
||||||
module = result.__module__
|
module = result.__module__
|
||||||
|
|
||||||
# first part of packages only
|
# first part of packages only
|
||||||
if "." in module:
|
if "." in module:
|
||||||
module = module[:module.index(".")]
|
module = module[:module.index(".")]
|
||||||
|
|
||||||
sf = traceback.extract_stack(limit=2)[0]
|
TypeMap.setdefault(module, []).append(ref(result))
|
||||||
|
|
||||||
TypeMap.setdefault(module, []).append((weakref.ref(result), sf[0], sf[1]))
|
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
@@ -586,7 +583,20 @@ class RNAMeta(type):
|
|||||||
def is_registered(cls):
|
def is_registered(cls):
|
||||||
return "bl_rna" in cls.__dict__
|
return "bl_rna" in cls.__dict__
|
||||||
|
|
||||||
import collections
|
|
||||||
|
class OrderedDictMini(dict):
|
||||||
|
def __init__(self, *args):
|
||||||
|
self.order = []
|
||||||
|
dict.__init__(self, args)
|
||||||
|
|
||||||
|
def __setitem__(self, key, val):
|
||||||
|
dict.__setitem__(self, key, val)
|
||||||
|
if key not in self.order:
|
||||||
|
self.order.append(key)
|
||||||
|
|
||||||
|
def __delitem__(self, key):
|
||||||
|
dict.__delitem__(self, key)
|
||||||
|
self.order.remove(key)
|
||||||
|
|
||||||
|
|
||||||
class RNAMetaPropGroup(RNAMeta, StructMetaPropGroup):
|
class RNAMetaPropGroup(RNAMeta, StructMetaPropGroup):
|
||||||
@@ -594,13 +604,8 @@ class RNAMetaPropGroup(RNAMeta, StructMetaPropGroup):
|
|||||||
|
|
||||||
|
|
||||||
class OrderedMeta(RNAMeta):
|
class OrderedMeta(RNAMeta):
|
||||||
|
|
||||||
def __init__(cls, name, bases, attributes):
|
|
||||||
super(OrderedMeta, cls).__init__(name, bases, attributes)
|
|
||||||
cls.order = list(attributes.keys())
|
|
||||||
|
|
||||||
def __prepare__(name, bases, **kwargs):
|
def __prepare__(name, bases, **kwargs):
|
||||||
return collections.OrderedDict()
|
return OrderedDictMini() # collections.OrderedDict()
|
||||||
|
|
||||||
|
|
||||||
# Only defined so operators members can be used by accessing self.order
|
# Only defined so operators members can be used by accessing self.order
|
||||||
|
@@ -23,5 +23,5 @@ def image_load(filepath, dirpath, place_holder=False, recursive=False, convert_c
|
|||||||
import bpy
|
import bpy
|
||||||
try:
|
try:
|
||||||
return bpy.data.images.load(filepath)
|
return bpy.data.images.load(filepath)
|
||||||
except SystemError:
|
except RuntimeError:
|
||||||
return bpy.data.images.new("Untitled", 128, 128)
|
return bpy.data.images.new("Untitled", 128, 128)
|
||||||
|
@@ -19,7 +19,7 @@
|
|||||||
# <pep8 compliant>
|
# <pep8 compliant>
|
||||||
|
|
||||||
import bpy
|
import bpy
|
||||||
from bpy.props import *
|
from bpy.props import StringProperty, BoolProperty
|
||||||
|
|
||||||
|
|
||||||
class ExportHelper:
|
class ExportHelper:
|
||||||
|
@@ -19,10 +19,11 @@
|
|||||||
# <pep8 compliant>
|
# <pep8 compliant>
|
||||||
import bpy
|
import bpy
|
||||||
import mathutils
|
import mathutils
|
||||||
from math import cos, sin, pi
|
|
||||||
|
|
||||||
|
|
||||||
def add_torus(major_rad, minor_rad, major_seg, minor_seg):
|
def add_torus(major_rad, minor_rad, major_seg, minor_seg):
|
||||||
|
from math import cos, sin, pi
|
||||||
|
|
||||||
Vector = mathutils.Vector
|
Vector = mathutils.Vector
|
||||||
Quaternion = mathutils.Quaternion
|
Quaternion = mathutils.Quaternion
|
||||||
|
|
||||||
@@ -71,7 +72,7 @@ def add_torus(major_rad, minor_rad, major_seg, minor_seg):
|
|||||||
|
|
||||||
return verts, faces
|
return verts, faces
|
||||||
|
|
||||||
from bpy.props import *
|
from bpy.props import FloatProperty, IntProperty, BoolProperty, FloatVectorProperty
|
||||||
|
|
||||||
|
|
||||||
class AddTorus(bpy.types.Operator):
|
class AddTorus(bpy.types.Operator):
|
||||||
|
@@ -33,6 +33,20 @@ def add_scrollback(text, text_type):
|
|||||||
type=text_type)
|
type=text_type)
|
||||||
|
|
||||||
|
|
||||||
|
def replace_help(namespace):
|
||||||
|
def _help(value):
|
||||||
|
# because of how the console works. we need our own help() pager func.
|
||||||
|
# replace the bold function because it adds crazy chars
|
||||||
|
import pydoc
|
||||||
|
pydoc.getpager = lambda: pydoc.plainpager
|
||||||
|
pydoc.Helper.getline = lambda self, prompt: None
|
||||||
|
pydoc.TextDoc.use_bold = lambda self, text: text
|
||||||
|
|
||||||
|
help(value)
|
||||||
|
|
||||||
|
namespace["help"] = _help
|
||||||
|
|
||||||
|
|
||||||
def get_console(console_id):
|
def get_console(console_id):
|
||||||
'''
|
'''
|
||||||
helper function for console operators
|
helper function for console operators
|
||||||
@@ -83,6 +97,8 @@ def get_console(console_id):
|
|||||||
namespace["bpy"] = bpy
|
namespace["bpy"] = bpy
|
||||||
namespace["C"] = bpy.context
|
namespace["C"] = bpy.context
|
||||||
|
|
||||||
|
replace_help(namespace)
|
||||||
|
|
||||||
console = InteractiveConsole(locals=namespace, filename="<blender_console>")
|
console = InteractiveConsole(locals=namespace, filename="<blender_console>")
|
||||||
|
|
||||||
console.push("from mathutils import *")
|
console.push("from mathutils import *")
|
||||||
|
@@ -18,18 +18,17 @@
|
|||||||
|
|
||||||
# <pep8 compliant>
|
# <pep8 compliant>
|
||||||
|
|
||||||
from math import *
|
|
||||||
import bpy
|
import bpy
|
||||||
from mathutils import *
|
|
||||||
|
|
||||||
|
|
||||||
def main(context):
|
def main(context):
|
||||||
|
from math import pi
|
||||||
|
|
||||||
def cleanupEulCurve(fcv):
|
def cleanupEulCurve(fcv):
|
||||||
keys = []
|
keys = []
|
||||||
|
|
||||||
for k in fcv.keyframe_points:
|
for k in fcv.keyframe_points:
|
||||||
keys.append([k.handle_left.copy(), k.co.copy(), k.handle_right.copy()])
|
keys.append([k.handle_left.copy(), k.co.copy(), k.handle_right.copy()])
|
||||||
print(keys)
|
|
||||||
|
|
||||||
for i in range(len(keys)):
|
for i in range(len(keys)):
|
||||||
cur = keys[i]
|
cur = keys[i]
|
||||||
|
@@ -98,7 +98,7 @@ def bake(frame_start, frame_end, step=1, only_selected=False):
|
|||||||
pose_items = pose.bones.items()
|
pose_items = pose.bones.items()
|
||||||
|
|
||||||
for name, pbone in pose_items:
|
for name, pbone in pose_items:
|
||||||
if only_selected and not pbone.select:
|
if only_selected and not pbone.bone.select:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
for f in frame_range:
|
for f in frame_range:
|
||||||
@@ -124,7 +124,7 @@ def bake(frame_start, frame_end, step=1, only_selected=False):
|
|||||||
return action
|
return action
|
||||||
|
|
||||||
|
|
||||||
from bpy.props import *
|
from bpy.props import IntProperty, BoolProperty
|
||||||
|
|
||||||
|
|
||||||
class BakeAction(bpy.types.Operator):
|
class BakeAction(bpy.types.Operator):
|
||||||
|
@@ -19,7 +19,7 @@
|
|||||||
# <pep8 compliant>
|
# <pep8 compliant>
|
||||||
|
|
||||||
import bpy
|
import bpy
|
||||||
from bpy.props import *
|
from bpy.props import StringProperty, BoolProperty, EnumProperty, IntProperty
|
||||||
|
|
||||||
|
|
||||||
class SelectPattern(bpy.types.Operator):
|
class SelectPattern(bpy.types.Operator):
|
||||||
|
@@ -230,7 +230,7 @@ def align_objects(align_x, align_y, align_z, align_mode, relative_to):
|
|||||||
return True
|
return True
|
||||||
|
|
||||||
|
|
||||||
from bpy.props import *
|
from bpy.props import EnumProperty
|
||||||
|
|
||||||
|
|
||||||
class AlignObjects(bpy.types.Operator):
|
class AlignObjects(bpy.types.Operator):
|
||||||
@@ -239,7 +239,7 @@ class AlignObjects(bpy.types.Operator):
|
|||||||
bl_label = "Align Objects"
|
bl_label = "Align Objects"
|
||||||
bl_options = {'REGISTER', 'UNDO'}
|
bl_options = {'REGISTER', 'UNDO'}
|
||||||
|
|
||||||
align_mode = bpy.props.EnumProperty(items=(
|
align_mode = EnumProperty(items=(
|
||||||
('OPT_1', "Negative Sides", ""),
|
('OPT_1', "Negative Sides", ""),
|
||||||
('OPT_2', "Centers", ""),
|
('OPT_2', "Centers", ""),
|
||||||
('OPT_3', "Positive Sides", "")),
|
('OPT_3', "Positive Sides", "")),
|
||||||
@@ -247,7 +247,7 @@ class AlignObjects(bpy.types.Operator):
|
|||||||
description="",
|
description="",
|
||||||
default='OPT_2')
|
default='OPT_2')
|
||||||
|
|
||||||
relative_to = bpy.props.EnumProperty(items=(
|
relative_to = EnumProperty(items=(
|
||||||
('OPT_1', "Scene Origin", ""),
|
('OPT_1', "Scene Origin", ""),
|
||||||
('OPT_2', "3D Cursor", ""),
|
('OPT_2', "3D Cursor", ""),
|
||||||
('OPT_3', "Selection", ""),
|
('OPT_3', "Selection", ""),
|
||||||
|
@@ -84,7 +84,7 @@ def randomize_selected(seed, delta, loc, rot, scale, scale_even):
|
|||||||
uniform(0.0, 0.0), uniform(0.0, 0.0), uniform(0.0, 0.0)
|
uniform(0.0, 0.0), uniform(0.0, 0.0), uniform(0.0, 0.0)
|
||||||
|
|
||||||
|
|
||||||
from bpy.props import *
|
from bpy.props import IntProperty, BoolProperty, FloatProperty, FloatVectorProperty
|
||||||
|
|
||||||
|
|
||||||
class RandomizeLocRotSize(bpy.types.Operator):
|
class RandomizeLocRotSize(bpy.types.Operator):
|
||||||
|
@@ -20,7 +20,7 @@
|
|||||||
|
|
||||||
import bpy
|
import bpy
|
||||||
|
|
||||||
from bpy.props import *
|
from bpy.props import IntProperty
|
||||||
|
|
||||||
|
|
||||||
class SequencerCrossfadeSounds(bpy.types.Operator):
|
class SequencerCrossfadeSounds(bpy.types.Operator):
|
||||||
|
@@ -19,10 +19,9 @@
|
|||||||
# <pep8 compliant>
|
# <pep8 compliant>
|
||||||
|
|
||||||
import bpy
|
import bpy
|
||||||
from bpy.props import *
|
|
||||||
|
|
||||||
|
|
||||||
def write_svg(fw, mesh, image_width, image_height, face_iter):
|
def write_svg(fw, mesh, image_width, image_height, opacity, face_iter_func):
|
||||||
# for making an XML compatible string
|
# for making an XML compatible string
|
||||||
from xml.sax.saxutils import escape
|
from xml.sax.saxutils import escape
|
||||||
from os.path import basename
|
from os.path import basename
|
||||||
@@ -45,14 +44,17 @@ def write_svg(fw, mesh, image_width, image_height, face_iter):
|
|||||||
fill_settings.append(fill_default)
|
fill_settings.append(fill_default)
|
||||||
|
|
||||||
faces = mesh.faces
|
faces = mesh.faces
|
||||||
for i, uvs in face_iter:
|
for i, uvs in face_iter_func():
|
||||||
try: # rare cases material index is invalid.
|
try: # rare cases material index is invalid.
|
||||||
fill = fill_settings[faces[i].material_index]
|
fill = fill_settings[faces[i].material_index]
|
||||||
except IndexError:
|
except IndexError:
|
||||||
fill = fill_default
|
fill = fill_default
|
||||||
|
|
||||||
fw('<polygon %s fill-opacity="0.5" stroke="black" stroke-width="1px" \n' % fill)
|
fw('<polygon stroke="black" stroke-width="1px"')
|
||||||
fw(' points="')
|
if opacity > 0.0:
|
||||||
|
fw(' %s fill-opacity="%.2g"' % (fill, opacity))
|
||||||
|
|
||||||
|
fw(' points="')
|
||||||
|
|
||||||
for j, uv in enumerate(uvs):
|
for j, uv in enumerate(uvs):
|
||||||
x, y = uv[0], 1.0 - uv[1]
|
x, y = uv[0], 1.0 - uv[1]
|
||||||
@@ -62,55 +64,70 @@ def write_svg(fw, mesh, image_width, image_height, face_iter):
|
|||||||
fw('</svg>\n')
|
fw('</svg>\n')
|
||||||
|
|
||||||
|
|
||||||
def write_eps(fw, mesh, image_width, image_height, face_iter):
|
def write_eps(fw, mesh, image_width, image_height, opacity, face_iter_func):
|
||||||
fw('%!PS-Adobe-3.0 EPSF-3.0\n')
|
fw("%!PS-Adobe-3.0 EPSF-3.0\n")
|
||||||
fw("%%%%Creator: Blender %s\n" % bpy.app.version_string)
|
fw("%%%%Creator: Blender %s\n" % bpy.app.version_string)
|
||||||
fw('%%Pages: 1\n')
|
fw("%%Pages: 1\n")
|
||||||
fw('%%Orientation: Portrait\n')
|
fw("%%Orientation: Portrait\n")
|
||||||
fw("%%%%BoundingBox: 0 0 %d %d\n" % (image_width, image_height))
|
fw("%%%%BoundingBox: 0 0 %d %d\n" % (image_width, image_height))
|
||||||
fw("%%%%HiResBoundingBox: 0.0 0.0 %.4f %.4f\n" % (image_width, image_height))
|
fw("%%%%HiResBoundingBox: 0.0 0.0 %.4f %.4f\n" % (image_width, image_height))
|
||||||
fw('%%EndComments\n')
|
fw("%%EndComments\n")
|
||||||
fw('%%Page: 1 1\n')
|
fw("%%Page: 1 1\n")
|
||||||
fw('0 0 translate\n')
|
fw("0 0 translate\n")
|
||||||
fw('1.0 1.0 scale\n')
|
fw("1.0 1.0 scale\n")
|
||||||
fw('0 0 0 setrgbcolor\n')
|
fw("0 0 0 setrgbcolor\n")
|
||||||
fw('[] 0 setdash\n')
|
fw("[] 0 setdash\n")
|
||||||
fw('1 setlinewidth\n')
|
fw("1 setlinewidth\n")
|
||||||
fw('1 setlinejoin\n')
|
fw("1 setlinejoin\n")
|
||||||
fw('1 setlinecap\n')
|
fw("1 setlinecap\n")
|
||||||
fw('/DRAW {')
|
|
||||||
# can remove from here to next comment to disable filling, aparently alpha is not supported
|
|
||||||
fw('gsave\n')
|
|
||||||
fw('0.7 setgray\n')
|
|
||||||
fw('fill\n')
|
|
||||||
fw('grestore\n')
|
|
||||||
fw('0 setgray\n')
|
|
||||||
# remove to here
|
|
||||||
fw('stroke\n')
|
|
||||||
fw('} def\n')
|
|
||||||
fw('newpath\n')
|
|
||||||
|
|
||||||
firstline = True
|
faces = mesh.faces
|
||||||
for i, uvs in face_iter:
|
|
||||||
for j, uv in enumerate(uvs):
|
if opacity > 0.0:
|
||||||
x, y = uv[0], uv[1]
|
for i, mat in enumerate(mesh.materials if mesh.materials else [None]):
|
||||||
if j == 0:
|
fw("/DRAW_%d {" % i)
|
||||||
if not firstline:
|
fw("gsave\n")
|
||||||
fw('closepath\n')
|
if mat:
|
||||||
fw('DRAW\n')
|
color = tuple((1.0 - ((1.0 - c) * opacity)) for c in mat.diffuse_color)
|
||||||
fw('newpath\n')
|
|
||||||
firstline = False
|
|
||||||
fw('%.5f %.5f moveto\n' % (x * image_width, y * image_height))
|
|
||||||
else:
|
else:
|
||||||
fw('%.5f %.5f lineto\n' % (x * image_width, y * image_height))
|
color = 1.0, 1.0, 1.0
|
||||||
|
fw("%.3g %.3g %.3g setrgbcolor\n" % color)
|
||||||
|
fw("fill\n")
|
||||||
|
fw("grestore\n")
|
||||||
|
fw("0 setgray\n")
|
||||||
|
fw("} def\n")
|
||||||
|
|
||||||
fw('closepath\n')
|
# fill
|
||||||
fw('DRAW\n')
|
for i, uvs in face_iter_func():
|
||||||
fw('showpage\n')
|
fw("newpath\n")
|
||||||
fw('%%EOF\n')
|
for j, uv in enumerate(uvs):
|
||||||
|
uv_scale = (uv[0] * image_width, uv[1] * image_height)
|
||||||
|
if j == 0:
|
||||||
|
fw("%.5f %.5f moveto\n" % uv_scale)
|
||||||
|
else:
|
||||||
|
fw("%.5f %.5f lineto\n" % uv_scale)
|
||||||
|
|
||||||
|
fw("closepath\n")
|
||||||
|
fw("DRAW_%d\n" % faces[i].material_index)
|
||||||
|
|
||||||
|
# stroke only
|
||||||
|
for i, uvs in face_iter_func():
|
||||||
|
fw("newpath\n")
|
||||||
|
for j, uv in enumerate(uvs):
|
||||||
|
uv_scale = (uv[0] * image_width, uv[1] * image_height)
|
||||||
|
if j == 0:
|
||||||
|
fw("%.5f %.5f moveto\n" % uv_scale)
|
||||||
|
else:
|
||||||
|
fw("%.5f %.5f lineto\n" % uv_scale)
|
||||||
|
|
||||||
|
fw("closepath\n")
|
||||||
|
fw("stroke\n")
|
||||||
|
|
||||||
|
fw("showpage\n")
|
||||||
|
fw("%%EOF\n")
|
||||||
|
|
||||||
|
|
||||||
def write_png(fw, mesh_source, image_width, image_height, face_iter):
|
def write_png(fw, mesh_source, image_width, image_height, opacity, face_iter_func):
|
||||||
filepath = fw.__self__.name
|
filepath = fw.__self__.name
|
||||||
fw.__self__.close()
|
fw.__self__.close()
|
||||||
|
|
||||||
@@ -132,7 +149,7 @@ def write_png(fw, mesh_source, image_width, image_height, face_iter):
|
|||||||
# get unique UV's incase there are many overlapping which slow down filling.
|
# get unique UV's incase there are many overlapping which slow down filling.
|
||||||
face_hash_3 = set()
|
face_hash_3 = set()
|
||||||
face_hash_4 = set()
|
face_hash_4 = set()
|
||||||
for i, uv in face_iter:
|
for i, uv in face_iter_func():
|
||||||
material_index = faces_source[i].material_index
|
material_index = faces_source[i].material_index
|
||||||
if len(uv) == 3:
|
if len(uv) == 3:
|
||||||
face_hash_3.add((uv[0][0], uv[0][1], uv[1][0], uv[1][1], uv[2][0], uv[2][1], material_index))
|
face_hash_3.add((uv[0][0], uv[0][1], uv[1][0], uv[1][1], uv[2][0], uv[2][1], material_index))
|
||||||
@@ -196,7 +213,7 @@ def write_png(fw, mesh_source, image_width, image_height, face_iter):
|
|||||||
|
|
||||||
mat_solid.use_shadeless = True
|
mat_solid.use_shadeless = True
|
||||||
mat_solid.use_transparency = True
|
mat_solid.use_transparency = True
|
||||||
mat_solid.alpha = 0.25
|
mat_solid.alpha = opacity
|
||||||
|
|
||||||
material_wire.type = 'WIRE'
|
material_wire.type = 'WIRE'
|
||||||
material_wire.use_shadeless = True
|
material_wire.use_shadeless = True
|
||||||
@@ -239,6 +256,9 @@ def write_png(fw, mesh_source, image_width, image_height, face_iter):
|
|||||||
bpy.data.materials.remove(mat_solid)
|
bpy.data.materials.remove(mat_solid)
|
||||||
|
|
||||||
|
|
||||||
|
from bpy.props import StringProperty, BoolProperty, EnumProperty, IntVectorProperty, FloatProperty
|
||||||
|
|
||||||
|
|
||||||
class ExportUVLayout(bpy.types.Operator):
|
class ExportUVLayout(bpy.types.Operator):
|
||||||
"""Export UV layout to file"""
|
"""Export UV layout to file"""
|
||||||
|
|
||||||
@@ -257,6 +277,7 @@ class ExportUVLayout(bpy.types.Operator):
|
|||||||
description="File format to export the UV layout to",
|
description="File format to export the UV layout to",
|
||||||
default='PNG')
|
default='PNG')
|
||||||
size = IntVectorProperty(size=2, default=(1024, 1024), min=8, max=32768, description="Dimensions of the exported file")
|
size = IntVectorProperty(size=2, default=(1024, 1024), min=8, max=32768, description="Dimensions of the exported file")
|
||||||
|
opacity = FloatProperty(name="Fill Opacity", min=0.0, max=1.0, default=0.25)
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def poll(cls, context):
|
def poll(cls, context):
|
||||||
@@ -340,11 +361,13 @@ class ExportUVLayout(bpy.types.Operator):
|
|||||||
elif mode == 'PNG':
|
elif mode == 'PNG':
|
||||||
func = write_png
|
func = write_png
|
||||||
|
|
||||||
func(fw, mesh, self.size[0], self.size[1], self._face_uv_iter(context))
|
func(fw, mesh, self.size[0], self.size[1], self.opacity, lambda: self._face_uv_iter(context))
|
||||||
|
|
||||||
if is_editmode:
|
if is_editmode:
|
||||||
bpy.ops.object.mode_set(mode='EDIT', toggle=False)
|
bpy.ops.object.mode_set(mode='EDIT', toggle=False)
|
||||||
|
|
||||||
|
file.close()
|
||||||
|
|
||||||
return {'FINISHED'}
|
return {'FINISHED'}
|
||||||
|
|
||||||
def check(self, context):
|
def check(self, context):
|
||||||
|
@@ -23,9 +23,7 @@
|
|||||||
# <pep8 compliant>
|
# <pep8 compliant>
|
||||||
|
|
||||||
from mathutils import Matrix, Vector, geometry
|
from mathutils import Matrix, Vector, geometry
|
||||||
import time
|
|
||||||
import bpy
|
import bpy
|
||||||
from math import cos, radians
|
|
||||||
|
|
||||||
DEG_TO_RAD = 0.017453292519943295 # pi/180.0
|
DEG_TO_RAD = 0.017453292519943295 # pi/180.0
|
||||||
SMALL_NUM = 0.000000001
|
SMALL_NUM = 0.000000001
|
||||||
@@ -36,14 +34,10 @@ global USER_FILL_HOLES_QUALITY
|
|||||||
USER_FILL_HOLES = None
|
USER_FILL_HOLES = None
|
||||||
USER_FILL_HOLES_QUALITY = None
|
USER_FILL_HOLES_QUALITY = None
|
||||||
|
|
||||||
dict_matrix = {}
|
|
||||||
|
|
||||||
def pointInTri2D(v, v1, v2, v3):
|
def pointInTri2D(v, v1, v2, v3):
|
||||||
global dict_matrix
|
|
||||||
|
|
||||||
key = v1.x, v1.y, v2.x, v2.y, v3.x, v3.y
|
key = v1.x, v1.y, v2.x, v2.y, v3.x, v3.y
|
||||||
|
|
||||||
# Commented because its slower to do teh bounds check, we should realy cache the bounds info for each face.
|
# Commented because its slower to do the bounds check, we should realy cache the bounds info for each face.
|
||||||
'''
|
'''
|
||||||
# BOUNDS CHECK
|
# BOUNDS CHECK
|
||||||
xmin= 1000000
|
xmin= 1000000
|
||||||
@@ -268,21 +262,6 @@ def testNewVecLs2DRotIsBetter(vecs, mat=-1, bestAreaSoFar = -1):
|
|||||||
h = maxy-miny
|
h = maxy-miny
|
||||||
return (w*h, w,h), vecs # Area, vecs
|
return (w*h, w,h), vecs # Area, vecs
|
||||||
|
|
||||||
# Takes a list of faces that make up a UV island and rotate
|
|
||||||
# until they optimally fit inside a square.
|
|
||||||
ROTMAT_2D_POS_90D = Matrix.Rotation( radians(90.0), 2)
|
|
||||||
ROTMAT_2D_POS_45D = Matrix.Rotation( radians(45.0), 2)
|
|
||||||
|
|
||||||
RotMatStepRotation = []
|
|
||||||
rot_angle = 22.5 #45.0/2
|
|
||||||
while rot_angle > 0.1:
|
|
||||||
RotMatStepRotation.append([\
|
|
||||||
Matrix.Rotation( radians(rot_angle), 2),\
|
|
||||||
Matrix.Rotation( radians(-rot_angle), 2)])
|
|
||||||
|
|
||||||
rot_angle = rot_angle/2.0
|
|
||||||
|
|
||||||
|
|
||||||
def optiRotateUvIsland(faces):
|
def optiRotateUvIsland(faces):
|
||||||
global currentArea
|
global currentArea
|
||||||
|
|
||||||
@@ -464,7 +443,7 @@ def mergeUvIslands(islandList):
|
|||||||
|
|
||||||
|
|
||||||
# if targetIsland[3] > (sourceIsland[2]) and\ #
|
# if targetIsland[3] > (sourceIsland[2]) and\ #
|
||||||
# print USER_FREE_SPACE_TO_TEST_QUALITY, 'ass'
|
# print USER_FREE_SPACE_TO_TEST_QUALITY
|
||||||
if targetIsland[2] > (sourceIsland[1] * USER_FREE_SPACE_TO_TEST_QUALITY) and\
|
if targetIsland[2] > (sourceIsland[1] * USER_FREE_SPACE_TO_TEST_QUALITY) and\
|
||||||
targetIsland[4] > sourceIsland[4] and\
|
targetIsland[4] > sourceIsland[4] and\
|
||||||
targetIsland[5] > sourceIsland[5]:
|
targetIsland[5] > sourceIsland[5]:
|
||||||
@@ -734,7 +713,7 @@ def packIslands(islandList):
|
|||||||
#print '\tPacking UV Islands...'
|
#print '\tPacking UV Islands...'
|
||||||
#XXX Window.DrawProgressBar(0.7, 'Packing %i UV Islands...' % len(packBoxes) )
|
#XXX Window.DrawProgressBar(0.7, 'Packing %i UV Islands...' % len(packBoxes) )
|
||||||
|
|
||||||
time1 = time.time()
|
# time1 = time.time()
|
||||||
packWidth, packHeight = geometry.box_pack_2d(packBoxes)
|
packWidth, packHeight = geometry.box_pack_2d(packBoxes)
|
||||||
|
|
||||||
# print 'Box Packing Time:', time.time() - time1
|
# print 'Box Packing Time:', time.time() - time1
|
||||||
@@ -793,6 +772,27 @@ class thickface(object):
|
|||||||
self.area = face.area
|
self.area = face.area
|
||||||
self.edge_keys = face.edge_keys
|
self.edge_keys = face.edge_keys
|
||||||
|
|
||||||
|
|
||||||
|
def main_consts():
|
||||||
|
from math import radians
|
||||||
|
|
||||||
|
global ROTMAT_2D_POS_90D
|
||||||
|
global ROTMAT_2D_POS_45D
|
||||||
|
global RotMatStepRotation
|
||||||
|
|
||||||
|
ROTMAT_2D_POS_90D = Matrix.Rotation( radians(90.0), 2)
|
||||||
|
ROTMAT_2D_POS_45D = Matrix.Rotation( radians(45.0), 2)
|
||||||
|
|
||||||
|
RotMatStepRotation = []
|
||||||
|
rot_angle = 22.5 #45.0/2
|
||||||
|
while rot_angle > 0.1:
|
||||||
|
RotMatStepRotation.append([\
|
||||||
|
Matrix.Rotation( radians(rot_angle), 2),\
|
||||||
|
Matrix.Rotation( radians(-rot_angle), 2)])
|
||||||
|
|
||||||
|
rot_angle = rot_angle/2.0
|
||||||
|
|
||||||
|
|
||||||
global ob
|
global ob
|
||||||
ob = None
|
ob = None
|
||||||
def main(context, island_margin, projection_limit):
|
def main(context, island_margin, projection_limit):
|
||||||
@@ -801,6 +801,21 @@ def main(context, island_margin, projection_limit):
|
|||||||
global USER_STRETCH_ASPECT
|
global USER_STRETCH_ASPECT
|
||||||
global USER_ISLAND_MARGIN
|
global USER_ISLAND_MARGIN
|
||||||
|
|
||||||
|
from math import cos
|
||||||
|
import time
|
||||||
|
|
||||||
|
global dict_matrix
|
||||||
|
dict_matrix = {}
|
||||||
|
|
||||||
|
|
||||||
|
# Constants:
|
||||||
|
# Takes a list of faces that make up a UV island and rotate
|
||||||
|
# until they optimally fit inside a square.
|
||||||
|
global ROTMAT_2D_POS_90D
|
||||||
|
global ROTMAT_2D_POS_45D
|
||||||
|
global RotMatStepRotation
|
||||||
|
main_consts()
|
||||||
|
|
||||||
#XXX objects= bpy.data.scenes.active.objects
|
#XXX objects= bpy.data.scenes.active.objects
|
||||||
objects = context.selected_editable_objects
|
objects = context.selected_editable_objects
|
||||||
|
|
||||||
@@ -868,7 +883,7 @@ def main(context, island_margin, projection_limit):
|
|||||||
|
|
||||||
time1 = time.time()
|
time1 = time.time()
|
||||||
|
|
||||||
# Tag as False se we dont operate on teh same mesh twice.
|
# Tag as False se we dont operate on the same mesh twice.
|
||||||
#XXX bpy.data.meshes.tag = False
|
#XXX bpy.data.meshes.tag = False
|
||||||
for me in bpy.data.meshes:
|
for me in bpy.data.meshes:
|
||||||
me.tag = False
|
me.tag = False
|
||||||
@@ -1074,6 +1089,8 @@ def main(context, island_margin, projection_limit):
|
|||||||
if is_editmode:
|
if is_editmode:
|
||||||
bpy.ops.object.mode_set(mode='EDIT')
|
bpy.ops.object.mode_set(mode='EDIT')
|
||||||
|
|
||||||
|
dict_matrix.clear()
|
||||||
|
|
||||||
#XXX Window.DrawProgressBar(1.0, "")
|
#XXX Window.DrawProgressBar(1.0, "")
|
||||||
#XXX Window.WaitCursor(0)
|
#XXX Window.WaitCursor(0)
|
||||||
#XXX Window.RedrawAll()
|
#XXX Window.RedrawAll()
|
||||||
@@ -1098,7 +1115,7 @@ def main(context, island_margin, projection_limit):
|
|||||||
]
|
]
|
||||||
"""
|
"""
|
||||||
|
|
||||||
from bpy.props import *
|
from bpy.props import FloatProperty
|
||||||
|
|
||||||
|
|
||||||
class SmartProject(bpy.types.Operator):
|
class SmartProject(bpy.types.Operator):
|
||||||
|
@@ -30,16 +30,9 @@
|
|||||||
# but results are far more accurate
|
# but results are far more accurate
|
||||||
#
|
#
|
||||||
|
|
||||||
import bpy
|
|
||||||
import math
|
|
||||||
import time
|
|
||||||
|
|
||||||
from mathutils import Vector
|
|
||||||
from bpy.props import *
|
|
||||||
|
|
||||||
|
|
||||||
def applyVertexDirt(me, blur_iterations, blur_strength, clamp_dirt, clamp_clean, dirt_only):
|
def applyVertexDirt(me, blur_iterations, blur_strength, clamp_dirt, clamp_clean, dirt_only):
|
||||||
## Window.WaitCursor(1)
|
from mathutils import Vector
|
||||||
|
from math import acos
|
||||||
|
|
||||||
#BPyMesh.meshCalcNormals(me)
|
#BPyMesh.meshCalcNormals(me)
|
||||||
|
|
||||||
@@ -76,7 +69,7 @@ def applyVertexDirt(me, blur_iterations, blur_strength, clamp_dirt, clamp_clean,
|
|||||||
vec /= tot_con
|
vec /= tot_con
|
||||||
|
|
||||||
# angle is the acos of the dot product between vert and connected verts normals
|
# angle is the acos of the dot product between vert and connected verts normals
|
||||||
ang = math.acos(no.dot(vec))
|
ang = acos(no.dot(vec))
|
||||||
|
|
||||||
# enforce min/max
|
# enforce min/max
|
||||||
ang = max(clamp_dirt, ang)
|
ang = max(clamp_dirt, ang)
|
||||||
@@ -146,7 +139,9 @@ def applyVertexDirt(me, blur_iterations, blur_strength, clamp_dirt, clamp_clean,
|
|||||||
col[1] = tone * col[1]
|
col[1] = tone * col[1]
|
||||||
col[2] = tone * col[2]
|
col[2] = tone * col[2]
|
||||||
|
|
||||||
## Window.WaitCursor(0)
|
|
||||||
|
import bpy
|
||||||
|
from bpy.props import FloatProperty, IntProperty, BoolProperty
|
||||||
|
|
||||||
|
|
||||||
class VertexPaintDirt(bpy.types.Operator):
|
class VertexPaintDirt(bpy.types.Operator):
|
||||||
@@ -162,6 +157,8 @@ class VertexPaintDirt(bpy.types.Operator):
|
|||||||
dirt_only = BoolProperty(name="Dirt Only", description="Dont calculate cleans for convex areas", default=False)
|
dirt_only = BoolProperty(name="Dirt Only", description="Dont calculate cleans for convex areas", default=False)
|
||||||
|
|
||||||
def execute(self, context):
|
def execute(self, context):
|
||||||
|
import time
|
||||||
|
from math import radians
|
||||||
obj = context.object
|
obj = context.object
|
||||||
|
|
||||||
if not obj or obj.type != 'MESH':
|
if not obj or obj.type != 'MESH':
|
||||||
@@ -172,7 +169,7 @@ class VertexPaintDirt(bpy.types.Operator):
|
|||||||
|
|
||||||
t = time.time()
|
t = time.time()
|
||||||
|
|
||||||
applyVertexDirt(mesh, self.blur_iterations, self.blur_strength, math.radians(self.dirt_angle), math.radians(self.clean_angle), self.dirt_only)
|
applyVertexDirt(mesh, self.blur_iterations, self.blur_strength, radians(self.dirt_angle), radians(self.clean_angle), self.dirt_only)
|
||||||
|
|
||||||
print('Dirt calculated in %.6f' % (time.time() - t))
|
print('Dirt calculated in %.6f' % (time.time() - t))
|
||||||
|
|
||||||
|
@@ -19,11 +19,9 @@
|
|||||||
# <pep8 compliant>
|
# <pep8 compliant>
|
||||||
|
|
||||||
import bpy
|
import bpy
|
||||||
|
from bpy.props import StringProperty, BoolProperty, IntProperty, FloatProperty
|
||||||
from bpy.props import *
|
|
||||||
from rna_prop_ui import rna_idprop_ui_prop_get, rna_idprop_ui_prop_clear
|
from rna_prop_ui import rna_idprop_ui_prop_get, rna_idprop_ui_prop_clear
|
||||||
|
|
||||||
|
|
||||||
class MESH_OT_delete_edgeloop(bpy.types.Operator):
|
class MESH_OT_delete_edgeloop(bpy.types.Operator):
|
||||||
'''Delete an edge loop by merging the faces on each side to a single face loop'''
|
'''Delete an edge loop by merging the faces on each side to a single face loop'''
|
||||||
bl_idname = "mesh.delete_edgeloop"
|
bl_idname = "mesh.delete_edgeloop"
|
||||||
@@ -702,9 +700,6 @@ class WM_OT_doc_edit(bpy.types.Operator):
|
|||||||
return wm.invoke_props_dialog(self, width=600)
|
return wm.invoke_props_dialog(self, width=600)
|
||||||
|
|
||||||
|
|
||||||
from bpy.props import *
|
|
||||||
|
|
||||||
|
|
||||||
rna_path = StringProperty(name="Property Edit",
|
rna_path = StringProperty(name="Property Edit",
|
||||||
description="Property data_path edit", maxlen=1024, default="", options={'HIDDEN'})
|
description="Property data_path edit", maxlen=1024, default="", options={'HIDDEN'})
|
||||||
|
|
||||||
|
@@ -1,5 +1,4 @@
|
|||||||
import bpy
|
import bpy
|
||||||
from keyingsets_utils import *
|
|
||||||
|
|
||||||
|
|
||||||
class BUILTIN_KSI_hello(bpy.types.KeyingSetInfo):
|
class BUILTIN_KSI_hello(bpy.types.KeyingSetInfo):
|
||||||
@@ -7,7 +6,7 @@ class BUILTIN_KSI_hello(bpy.types.KeyingSetInfo):
|
|||||||
|
|
||||||
# poll - test for whether Keying Set can be used at all
|
# poll - test for whether Keying Set can be used at all
|
||||||
def poll(ksi, context):
|
def poll(ksi, context):
|
||||||
return (context.active_object) or (context.selected_objects)
|
return context.active_object or context.selected_objects
|
||||||
|
|
||||||
# iterator - go over all relevant data, calling generate()
|
# iterator - go over all relevant data, calling generate()
|
||||||
def iterator(ksi, context, ks):
|
def iterator(ksi, context, ks):
|
||||||
|
@@ -13,8 +13,7 @@ def write_some_data(context, filepath, use_some_setting):
|
|||||||
# ExportHelper is a helper class, defines filename and
|
# ExportHelper is a helper class, defines filename and
|
||||||
# invoke() function which calls the file selector.
|
# invoke() function which calls the file selector.
|
||||||
from io_utils import ExportHelper
|
from io_utils import ExportHelper
|
||||||
|
from bpy.props import StringProperty, BoolProperty, EnumProperty
|
||||||
from bpy.props import *
|
|
||||||
|
|
||||||
|
|
||||||
class ExportSomeData(bpy.types.Operator, ExportHelper):
|
class ExportSomeData(bpy.types.Operator, ExportHelper):
|
||||||
@@ -31,7 +30,9 @@ class ExportSomeData(bpy.types.Operator, ExportHelper):
|
|||||||
# to the class instance from the operator settings before calling.
|
# to the class instance from the operator settings before calling.
|
||||||
use_setting = BoolProperty(name="Example Boolean", description="Example Tooltip", default=True)
|
use_setting = BoolProperty(name="Example Boolean", description="Example Tooltip", default=True)
|
||||||
|
|
||||||
type = bpy.props.EnumProperty(items=(('OPT_A', "First Option", "Description one"), ('OPT_B', "Second Option", "Description two.")),
|
type = EnumProperty(items=(('OPT_A', "First Option", "Description one"),
|
||||||
|
('OPT_B', "Second Option", "Description two."),
|
||||||
|
),
|
||||||
name="Example Enum",
|
name="Example Enum",
|
||||||
description="Choose between two items",
|
description="Choose between two items",
|
||||||
default='OPT_A')
|
default='OPT_A')
|
||||||
|
@@ -34,7 +34,7 @@ def add_box(width, height, depth):
|
|||||||
return vertices, faces
|
return vertices, faces
|
||||||
|
|
||||||
|
|
||||||
from bpy.props import *
|
from bpy.props import FloatProperty, BoolProperty, FloatVectorProperty
|
||||||
|
|
||||||
|
|
||||||
class AddBox(bpy.types.Operator):
|
class AddBox(bpy.types.Operator):
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
import bpy
|
import bpy
|
||||||
from bpy.props import *
|
from bpy.props import IntProperty, FloatProperty
|
||||||
|
|
||||||
|
|
||||||
class ModalOperator(bpy.types.Operator):
|
class ModalOperator(bpy.types.Operator):
|
||||||
|
@@ -58,24 +58,17 @@ class DATA_PT_skeleton(ArmatureButtonsPanel, bpy.types.Panel):
|
|||||||
|
|
||||||
layout.prop(arm, "pose_position", expand=True)
|
layout.prop(arm, "pose_position", expand=True)
|
||||||
|
|
||||||
split = layout.split()
|
col = layout.column()
|
||||||
|
|
||||||
col = split.column()
|
|
||||||
col.label(text="Layers:")
|
col.label(text="Layers:")
|
||||||
col.prop(arm, "layers", text="")
|
col.prop(arm, "layers", text="")
|
||||||
col.label(text="Protected Layers:")
|
col.label(text="Protected Layers:")
|
||||||
col.prop(arm, "layers_protected", text="")
|
col.prop(arm, "layers_protected", text="")
|
||||||
|
|
||||||
col.label(text="Deform:")
|
layout.label(text="Deform:")
|
||||||
|
flow = layout.column_flow()
|
||||||
split = layout.split()
|
flow.prop(arm, "use_deform_vertex_groups", text="Vertex Groups")
|
||||||
|
flow.prop(arm, "use_deform_envelopes", text="Envelopes")
|
||||||
col = split.column()
|
flow.prop(arm, "use_deform_preserve_volume", text="Quaternion")
|
||||||
col.prop(arm, "use_deform_vertex_groups", text="Vertex Groups")
|
|
||||||
col.prop(arm, "use_deform_envelopes", text="Envelopes")
|
|
||||||
|
|
||||||
col = split.column()
|
|
||||||
col.prop(arm, "use_deform_preserve_volume", text="Quaternion")
|
|
||||||
|
|
||||||
|
|
||||||
class DATA_PT_display(ArmatureButtonsPanel, bpy.types.Panel):
|
class DATA_PT_display(ArmatureButtonsPanel, bpy.types.Panel):
|
||||||
@@ -87,7 +80,7 @@ class DATA_PT_display(ArmatureButtonsPanel, bpy.types.Panel):
|
|||||||
ob = context.object
|
ob = context.object
|
||||||
arm = context.armature
|
arm = context.armature
|
||||||
|
|
||||||
layout.row().prop(arm, "draw_type", expand=True)
|
layout.prop(arm, "draw_type", expand=True)
|
||||||
|
|
||||||
split = layout.split()
|
split = layout.split()
|
||||||
|
|
||||||
@@ -137,10 +130,10 @@ class DATA_PT_bone_groups(ArmatureButtonsPanel, bpy.types.Panel):
|
|||||||
col.prop(group, "color_set")
|
col.prop(group, "color_set")
|
||||||
if group.color_set:
|
if group.color_set:
|
||||||
col = split.column()
|
col = split.column()
|
||||||
subrow = col.row(align=True)
|
sub = col.row(align=True)
|
||||||
subrow.prop(group.colors, "normal", text="")
|
sub.prop(group.colors, "normal", text="")
|
||||||
subrow.prop(group.colors, "select", text="")
|
sub.prop(group.colors, "select", text="")
|
||||||
subrow.prop(group.colors, "active", text="")
|
sub.prop(group.colors, "active", text="")
|
||||||
|
|
||||||
row = layout.row()
|
row = layout.row()
|
||||||
row.active = (ob.proxy is None)
|
row.active = (ob.proxy is None)
|
||||||
@@ -168,8 +161,7 @@ class DATA_PT_pose_library(ArmatureButtonsPanel, bpy.types.Panel):
|
|||||||
ob = context.object
|
ob = context.object
|
||||||
poselib = ob.pose_library
|
poselib = ob.pose_library
|
||||||
|
|
||||||
row = layout.row()
|
layout.template_ID(ob, "pose_library", new="poselib.new", unlink="poselib.unlink")
|
||||||
row.template_ID(ob, "pose_library", new="poselib.new", unlink="poselib.unlink")
|
|
||||||
|
|
||||||
if poselib:
|
if poselib:
|
||||||
row = layout.row()
|
row = layout.row()
|
||||||
@@ -190,8 +182,7 @@ class DATA_PT_pose_library(ArmatureButtonsPanel, bpy.types.Panel):
|
|||||||
col.operator("poselib.pose_remove", icon='ZOOMOUT', text="").pose = pose_marker_active.name
|
col.operator("poselib.pose_remove", icon='ZOOMOUT', text="").pose = pose_marker_active.name
|
||||||
col.operator("poselib.apply_pose", icon='ZOOM_SELECTED', text="").pose_index = poselib.pose_markers.active_index
|
col.operator("poselib.apply_pose", icon='ZOOM_SELECTED', text="").pose_index = poselib.pose_markers.active_index
|
||||||
|
|
||||||
row = layout.row()
|
layout.operator("poselib.action_sanitise")
|
||||||
row.operator("poselib.action_sanitise")
|
|
||||||
|
|
||||||
|
|
||||||
# TODO: this panel will soon be depreceated too
|
# TODO: this panel will soon be depreceated too
|
||||||
@@ -207,16 +198,15 @@ class DATA_PT_ghost(ArmatureButtonsPanel, bpy.types.Panel):
|
|||||||
|
|
||||||
split = layout.split()
|
split = layout.split()
|
||||||
|
|
||||||
col = split.column()
|
col = split.column(align=True)
|
||||||
|
|
||||||
sub = col.column(align=True)
|
|
||||||
if arm.ghost_type == 'RANGE':
|
if arm.ghost_type == 'RANGE':
|
||||||
sub.prop(arm, "ghost_frame_start", text="Start")
|
col.prop(arm, "ghost_frame_start", text="Start")
|
||||||
sub.prop(arm, "ghost_frame_end", text="End")
|
col.prop(arm, "ghost_frame_end", text="End")
|
||||||
sub.prop(arm, "ghost_size", text="Step")
|
col.prop(arm, "ghost_size", text="Step")
|
||||||
elif arm.ghost_type == 'CURRENT_FRAME':
|
elif arm.ghost_type == 'CURRENT_FRAME':
|
||||||
sub.prop(arm, "ghost_step", text="Range")
|
col.prop(arm, "ghost_step", text="Range")
|
||||||
sub.prop(arm, "ghost_size", text="Step")
|
col.prop(arm, "ghost_size", text="Step")
|
||||||
|
|
||||||
col = split.column()
|
col = split.column()
|
||||||
col.label(text="Display:")
|
col.label(text="Display:")
|
||||||
@@ -236,11 +226,9 @@ class DATA_PT_iksolver_itasc(ArmatureButtonsPanel, bpy.types.Panel):
|
|||||||
layout = self.layout
|
layout = self.layout
|
||||||
|
|
||||||
ob = context.object
|
ob = context.object
|
||||||
|
|
||||||
itasc = ob.pose.ik_param
|
itasc = ob.pose.ik_param
|
||||||
|
|
||||||
row = layout.row()
|
layout.prop(ob.pose, "ik_solver")
|
||||||
row.prop(ob.pose, "ik_solver")
|
|
||||||
|
|
||||||
if itasc:
|
if itasc:
|
||||||
layout.prop(itasc, "mode", expand=True)
|
layout.prop(itasc, "mode", expand=True)
|
||||||
@@ -249,13 +237,10 @@ class DATA_PT_iksolver_itasc(ArmatureButtonsPanel, bpy.types.Panel):
|
|||||||
layout.label(text="Reiteration:")
|
layout.label(text="Reiteration:")
|
||||||
layout.prop(itasc, "reiteration_method", expand=True)
|
layout.prop(itasc, "reiteration_method", expand=True)
|
||||||
|
|
||||||
split = layout.split()
|
row = layout.row()
|
||||||
split.active = not simulation or itasc.reiteration_method != 'NEVER'
|
row.active = not simulation or itasc.reiteration_method != 'NEVER'
|
||||||
col = split.column()
|
row.prop(itasc, "precision")
|
||||||
col.prop(itasc, "precision")
|
row.prop(itasc, "iterations")
|
||||||
|
|
||||||
col = split.column()
|
|
||||||
col.prop(itasc, "iterations")
|
|
||||||
|
|
||||||
if simulation:
|
if simulation:
|
||||||
layout.prop(itasc, "use_auto_step")
|
layout.prop(itasc, "use_auto_step")
|
||||||
|
@@ -573,6 +573,7 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
|
|||||||
col.prop(md, "edge_crease_inner", text="Inner")
|
col.prop(md, "edge_crease_inner", text="Inner")
|
||||||
col.prop(md, "edge_crease_outer", text="Outer")
|
col.prop(md, "edge_crease_outer", text="Outer")
|
||||||
col.prop(md, "edge_crease_rim", text="Rim")
|
col.prop(md, "edge_crease_rim", text="Rim")
|
||||||
|
col.label(text="Material Index Offset:")
|
||||||
|
|
||||||
col = split.column()
|
col = split.column()
|
||||||
|
|
||||||
@@ -586,8 +587,13 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
|
|||||||
|
|
||||||
col.prop(md, "use_rim")
|
col.prop(md, "use_rim")
|
||||||
colsub = col.column()
|
colsub = col.column()
|
||||||
|
|
||||||
|
colsub.label()
|
||||||
|
rowsub = colsub.split(align=True, percentage=0.4)
|
||||||
|
rowsub.prop(md, "material_offset", text="")
|
||||||
|
colsub = rowsub.row()
|
||||||
colsub.active = md.use_rim
|
colsub.active = md.use_rim
|
||||||
colsub.prop(md, "use_rim_material")
|
colsub.prop(md, "material_offset_rim", text="Rim")
|
||||||
|
|
||||||
def SUBSURF(self, layout, ob, md):
|
def SUBSURF(self, layout, ob, md):
|
||||||
layout.row().prop(md, "subdivision_type", expand=True)
|
layout.row().prop(md, "subdivision_type", expand=True)
|
||||||
|
@@ -56,7 +56,7 @@ class PHYSICS_PT_game_physics(PhysicsButtonsPanel, bpy.types.Panel):
|
|||||||
col.prop(ob, "hide_render", text="Invisible") # out of place but useful
|
col.prop(ob, "hide_render", text="Invisible") # out of place but useful
|
||||||
|
|
||||||
col = split.column()
|
col = split.column()
|
||||||
col.prop(game, "use_material_physics")
|
col.prop(game, "use_material_physics_fh")
|
||||||
col.prop(game, "use_rotate_from_normal")
|
col.prop(game, "use_rotate_from_normal")
|
||||||
col.prop(game, "use_sleep")
|
col.prop(game, "use_sleep")
|
||||||
|
|
||||||
@@ -356,7 +356,7 @@ class RENDER_PT_game_display(RenderButtonsPanel, bpy.types.Panel):
|
|||||||
flow.prop(gs, "show_framerate_profile", text="Framerate and Profile")
|
flow.prop(gs, "show_framerate_profile", text="Framerate and Profile")
|
||||||
flow.prop(gs, "show_physics_visualization", text="Physics Visualization")
|
flow.prop(gs, "show_physics_visualization", text="Physics Visualization")
|
||||||
flow.prop(gs, "use_deprecation_warnings")
|
flow.prop(gs, "use_deprecation_warnings")
|
||||||
flow.prop(gs, "show_mouse")
|
flow.prop(gs, "show_mouse", text="Mouse Cursor")
|
||||||
|
|
||||||
|
|
||||||
class RENDER_PT_game_sound(RenderButtonsPanel, bpy.types.Panel):
|
class RENDER_PT_game_sound(RenderButtonsPanel, bpy.types.Panel):
|
||||||
|
@@ -619,16 +619,21 @@ class MATERIAL_PT_physics(MaterialButtonsPanel, bpy.types.Panel):
|
|||||||
phys = context.material.physics # dont use node material
|
phys = context.material.physics # dont use node material
|
||||||
|
|
||||||
split = layout.split()
|
split = layout.split()
|
||||||
|
row = split.row()
|
||||||
|
row.prop(phys, "friction")
|
||||||
|
row.prop(phys, "elasticity", slider=True)
|
||||||
|
|
||||||
col = split.column()
|
|
||||||
col.prop(phys, "distance")
|
|
||||||
col.prop(phys, "friction")
|
|
||||||
col.prop(phys, "use_normal_align")
|
|
||||||
|
|
||||||
col = split.column()
|
row = layout.row()
|
||||||
col.prop(phys, "force", slider=True)
|
row.label(text="Force Field:")
|
||||||
col.prop(phys, "elasticity", slider=True)
|
|
||||||
col.prop(phys, "damping", slider=True)
|
row = layout.row()
|
||||||
|
row.prop(phys, "fh_force")
|
||||||
|
row.prop(phys, "fh_damping", slider=True)
|
||||||
|
|
||||||
|
row = layout.row()
|
||||||
|
row.prop(phys, "fh_distance")
|
||||||
|
row.prop(phys, "use_fh_normal")
|
||||||
|
|
||||||
|
|
||||||
class MATERIAL_PT_strand(MaterialButtonsPanel, bpy.types.Panel):
|
class MATERIAL_PT_strand(MaterialButtonsPanel, bpy.types.Panel):
|
||||||
|
@@ -502,8 +502,8 @@ class ConstraintButtonsPanel():
|
|||||||
layout.prop(con, "offset")
|
layout.prop(con, "offset")
|
||||||
|
|
||||||
row = layout.row()
|
row = layout.row()
|
||||||
#row.label(text="Min/Max:")
|
row.label(text="Min/Max:")
|
||||||
row.prop(con, "floor_location", expand=True, text="Min/Max:")
|
row.prop(con, "floor_location", expand=True)
|
||||||
|
|
||||||
self.space_template(layout, con)
|
self.space_template(layout, con)
|
||||||
|
|
||||||
@@ -535,15 +535,23 @@ class ConstraintButtonsPanel():
|
|||||||
layout.label(text="Limits:")
|
layout.label(text="Limits:")
|
||||||
split = layout.split()
|
split = layout.split()
|
||||||
|
|
||||||
col = split.column(align=True)
|
col = split.column()
|
||||||
col.prop(con, "use_angular_limit_x", text="Angular X")
|
col.prop(con, "use_angular_limit_x", text="Angle X")
|
||||||
col.prop(con, "use_angular_limit_y", text="Angular Y")
|
sub = col.column()
|
||||||
col.prop(con, "use_angular_limit_z", text="Angular Z")
|
sub.active = con.use_angular_limit_x
|
||||||
|
sub.prop(con, "limit_angle_max_x", text="")
|
||||||
|
|
||||||
col = split.column()
|
col = split.column()
|
||||||
col.prop(con, "limit_cone_min", text="")
|
col.prop(con, "use_angular_limit_y", text="Angle Y")
|
||||||
|
sub = col.column()
|
||||||
|
sub.active = con.use_angular_limit_y
|
||||||
|
sub.prop(con, "limit_angle_max_y", text="")
|
||||||
|
|
||||||
col = split.column()
|
col = split.column()
|
||||||
col.prop(con, "limit_cone_max", text="")
|
col.prop(con, "use_angular_limit_z", text="Angle Z")
|
||||||
|
sub = col.column()
|
||||||
|
sub.active = con.use_angular_limit_z
|
||||||
|
sub.prop(con, "limit_angle_max_z", text="")
|
||||||
|
|
||||||
elif con.pivot_type == 'GENERIC_6_DOF':
|
elif con.pivot_type == 'GENERIC_6_DOF':
|
||||||
layout.label(text="Limits:")
|
layout.label(text="Limits:")
|
||||||
@@ -551,16 +559,62 @@ class ConstraintButtonsPanel():
|
|||||||
|
|
||||||
col = split.column(align=True)
|
col = split.column(align=True)
|
||||||
col.prop(con, "use_limit_x", text="X")
|
col.prop(con, "use_limit_x", text="X")
|
||||||
col.prop(con, "use_limit_y", text="Y")
|
sub = col.column()
|
||||||
col.prop(con, "use_limit_z", text="Z")
|
sub.active = con.use_limit_x
|
||||||
col.prop(con, "use_angular_limit_x", text="Angular X")
|
sub.prop(con, "limit_min_x", text="Min")
|
||||||
col.prop(con, "use_angular_limit_y", text="Angular Y")
|
sub.prop(con, "limit_max_x", text="Max")
|
||||||
col.prop(con, "use_angular_limit_z", text="Angular Z")
|
|
||||||
|
|
||||||
col = split.column()
|
col = split.column(align=True)
|
||||||
col.prop(con, "limit_generic_min", text="")
|
col.prop(con, "use_limit_y", text="Y")
|
||||||
col = split.column()
|
sub = col.column()
|
||||||
col.prop(con, "limit_generic_max", text="")
|
sub.active = con.use_limit_y
|
||||||
|
sub.prop(con, "limit_min_y", text="Min")
|
||||||
|
sub.prop(con, "limit_max_y", text="Max")
|
||||||
|
|
||||||
|
col = split.column(align=True)
|
||||||
|
col.prop(con, "use_limit_z", text="Z")
|
||||||
|
sub = col.column()
|
||||||
|
sub.active = con.use_limit_z
|
||||||
|
sub.prop(con, "limit_min_z", text="Min")
|
||||||
|
sub.prop(con, "limit_max_z", text="Max")
|
||||||
|
|
||||||
|
split = layout.split()
|
||||||
|
|
||||||
|
col = split.column(align=True)
|
||||||
|
col.prop(con, "use_angular_limit_x", text="Angle X")
|
||||||
|
sub = col.column()
|
||||||
|
sub.active = con.use_angular_limit_x
|
||||||
|
sub.prop(con, "limit_angle_min_x", text="Min")
|
||||||
|
sub.prop(con, "limit_angle_max_x", text="Max")
|
||||||
|
|
||||||
|
col = split.column(align=True)
|
||||||
|
col.prop(con, "use_angular_limit_y", text="Angle Y")
|
||||||
|
sub = col.column()
|
||||||
|
sub.active = con.use_angular_limit_y
|
||||||
|
sub.prop(con, "limit_angle_min_y", text="Min")
|
||||||
|
sub.prop(con, "limit_angle_max_y", text="Max")
|
||||||
|
|
||||||
|
col = split.column(align=True)
|
||||||
|
col.prop(con, "use_angular_limit_z", text="Angle Z")
|
||||||
|
sub = col.column()
|
||||||
|
sub.active = con.use_angular_limit_z
|
||||||
|
sub.prop(con, "limit_angle_min_z", text="Min")
|
||||||
|
sub.prop(con, "limit_angle_max_z", text="Max")
|
||||||
|
|
||||||
|
elif con.pivot_type == 'HINGE':
|
||||||
|
layout.label(text="Limits:")
|
||||||
|
split = layout.split()
|
||||||
|
|
||||||
|
row = split.row(align=True)
|
||||||
|
col = row.column()
|
||||||
|
col.prop(con, "use_angular_limit_x", text="Angle X")
|
||||||
|
|
||||||
|
col = row.column()
|
||||||
|
col.active = con.use_angular_limit_x
|
||||||
|
col.prop(con, "limit_angle_min_x", text="Min")
|
||||||
|
col = row.column()
|
||||||
|
col.active = con.use_angular_limit_x
|
||||||
|
col.prop(con, "limit_angle_max_x", text="Max")
|
||||||
|
|
||||||
def CLAMP_TO(self, context, layout, con):
|
def CLAMP_TO(self, context, layout, con):
|
||||||
self.target_template(layout, con)
|
self.target_template(layout, con)
|
||||||
@@ -569,8 +623,7 @@ class ConstraintButtonsPanel():
|
|||||||
row.label(text="Main Axis:")
|
row.label(text="Main Axis:")
|
||||||
row.prop(con, "main_axis", expand=True)
|
row.prop(con, "main_axis", expand=True)
|
||||||
|
|
||||||
row = layout.row()
|
layout.prop(con, "use_cyclic")
|
||||||
row.prop(con, "use_cyclic")
|
|
||||||
|
|
||||||
def TRANSFORM(self, context, layout, con):
|
def TRANSFORM(self, context, layout, con):
|
||||||
self.target_template(layout, con)
|
self.target_template(layout, con)
|
||||||
@@ -737,3 +790,4 @@ def unregister():
|
|||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
register()
|
register()
|
||||||
|
|
||||||
|
@@ -220,10 +220,8 @@ class PARTICLE_PT_emission(ParticleButtonsPanel, bpy.types.Panel):
|
|||||||
col.prop(part, "lifetime")
|
col.prop(part, "lifetime")
|
||||||
col.prop(part, "lifetime_random", slider=True)
|
col.prop(part, "lifetime_random", slider=True)
|
||||||
|
|
||||||
layout.row().label(text="Emit From:")
|
layout.label(text="Emit From:")
|
||||||
|
layout.prop(part, "emit_from", expand=True)
|
||||||
row = layout.row()
|
|
||||||
row.prop(part, "emit_from", expand=True)
|
|
||||||
|
|
||||||
row = layout.row()
|
row = layout.row()
|
||||||
if part.emit_from == 'VERT':
|
if part.emit_from == 'VERT':
|
||||||
@@ -236,12 +234,9 @@ class PARTICLE_PT_emission(ParticleButtonsPanel, bpy.types.Panel):
|
|||||||
row.prop(part, "use_even_distribution")
|
row.prop(part, "use_even_distribution")
|
||||||
|
|
||||||
if part.emit_from == 'FACE' or part.emit_from == 'VOLUME':
|
if part.emit_from == 'FACE' or part.emit_from == 'VOLUME':
|
||||||
row = layout.row()
|
layout.prop(part, "distribution", expand=True)
|
||||||
|
|
||||||
row.prop(part, "distribution", expand=True)
|
|
||||||
|
|
||||||
row = layout.row()
|
row = layout.row()
|
||||||
|
|
||||||
if part.distribution == 'JIT':
|
if part.distribution == 'JIT':
|
||||||
row.prop(part, "userjit", text="Particles/Face")
|
row.prop(part, "userjit", text="Particles/Face")
|
||||||
row.prop(part, "jitter_factor", text="Jittering Amount", slider=True)
|
row.prop(part, "jitter_factor", text="Jittering Amount", slider=True)
|
||||||
@@ -773,45 +768,45 @@ class PARTICLE_PT_render(ParticleButtonsPanel, bpy.types.Panel):
|
|||||||
|
|
||||||
split = layout.split()
|
split = layout.split()
|
||||||
|
|
||||||
sub = split.column()
|
col = split.column()
|
||||||
sub.prop(part, "use_render_emitter")
|
col.prop(part, "use_render_emitter")
|
||||||
sub.prop(part, "use_parent_particles")
|
col.prop(part, "use_parent_particles")
|
||||||
sub = split.column()
|
|
||||||
sub.prop(part, "show_unborn")
|
|
||||||
sub.prop(part, "use_dead")
|
|
||||||
|
|
||||||
row = layout.row()
|
col = split.column()
|
||||||
row.prop(part, "render_type", expand=True)
|
col.prop(part, "show_unborn")
|
||||||
|
col.prop(part, "use_dead")
|
||||||
|
|
||||||
|
layout.prop(part, "render_type", expand=True)
|
||||||
|
|
||||||
split = layout.split()
|
split = layout.split()
|
||||||
|
|
||||||
sub = split.column()
|
col = split.column()
|
||||||
|
|
||||||
if part.render_type == 'LINE':
|
if part.render_type == 'LINE':
|
||||||
sub.prop(part, "line_length_tail")
|
col.prop(part, "line_length_tail")
|
||||||
sub.prop(part, "line_length_head")
|
col.prop(part, "line_length_head")
|
||||||
sub = split.column()
|
|
||||||
sub.prop(part, "use_velocity_length")
|
|
||||||
elif part.render_type == 'PATH':
|
|
||||||
sub.prop(part, "use_strand_primitive")
|
|
||||||
subsub = sub.column()
|
|
||||||
subsub.active = (part.use_strand_primitive is False)
|
|
||||||
subsub.prop(part, "use_render_adaptive")
|
|
||||||
subsub = sub.column()
|
|
||||||
subsub.active = part.use_render_adaptive or part.use_strand_primitive == True
|
|
||||||
subsub.prop(part, "adaptive_angle")
|
|
||||||
subsub = sub.column()
|
|
||||||
subsub.active = (part.use_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()
|
split.prop(part, "use_velocity_length")
|
||||||
sub.label(text="Timing:")
|
elif part.render_type == 'PATH':
|
||||||
sub.prop(part, "use_absolute_path_time")
|
col.prop(part, "use_strand_primitive")
|
||||||
sub.prop(part, "path_start", text="Start", slider=not part.use_absolute_path_time)
|
sub = col.column()
|
||||||
sub.prop(part, "path_end", text="End", slider=not part.use_absolute_path_time)
|
sub.active = (part.use_strand_primitive is False)
|
||||||
sub.prop(part, "length_random", text="Random", slider=True)
|
sub.prop(part, "use_render_adaptive")
|
||||||
|
sub = col.column()
|
||||||
|
sub.active = part.use_render_adaptive or part.use_strand_primitive == True
|
||||||
|
sub.prop(part, "adaptive_angle")
|
||||||
|
sub = col.column()
|
||||||
|
sub.active = (part.use_render_adaptive is True and part.use_strand_primitive is False)
|
||||||
|
sub.prop(part, "adaptive_pixel")
|
||||||
|
col.prop(part, "use_hair_bspline")
|
||||||
|
col.prop(part, "render_step", text="Steps")
|
||||||
|
|
||||||
|
col = split.column()
|
||||||
|
col.label(text="Timing:")
|
||||||
|
col.prop(part, "use_absolute_path_time")
|
||||||
|
col.prop(part, "path_start", text="Start", slider=not part.use_absolute_path_time)
|
||||||
|
col.prop(part, "path_end", text="End", slider=not part.use_absolute_path_time)
|
||||||
|
col.prop(part, "length_random", text="Random", slider=True)
|
||||||
|
|
||||||
row = layout.row()
|
row = layout.row()
|
||||||
col = row.column()
|
col = row.column()
|
||||||
@@ -830,22 +825,23 @@ class PARTICLE_PT_render(ParticleButtonsPanel, bpy.types.Panel):
|
|||||||
sub.prop(part, "simplify_viewport")
|
sub.prop(part, "simplify_viewport")
|
||||||
|
|
||||||
elif part.render_type == 'OBJECT':
|
elif part.render_type == 'OBJECT':
|
||||||
sub.prop(part, "dupli_object")
|
col.prop(part, "dupli_object")
|
||||||
sub.prop(part, "use_global_dupli")
|
col.prop(part, "use_global_dupli")
|
||||||
elif part.render_type == 'GROUP':
|
elif part.render_type == 'GROUP':
|
||||||
sub.prop(part, "dupli_group")
|
col.prop(part, "dupli_group")
|
||||||
split = layout.split()
|
split = layout.split()
|
||||||
sub = split.column()
|
|
||||||
sub.prop(part, "use_whole_group")
|
|
||||||
subsub = sub.column()
|
|
||||||
subsub.active = (part.use_whole_group is False)
|
|
||||||
subsub.prop(part, "use_group_count")
|
|
||||||
|
|
||||||
sub = split.column()
|
col = split.column()
|
||||||
subsub = sub.column()
|
col.prop(part, "use_whole_group")
|
||||||
subsub.active = (part.use_whole_group is False)
|
sub = col.column()
|
||||||
subsub.prop(part, "use_global_dupli")
|
sub.active = (part.use_whole_group is False)
|
||||||
subsub.prop(part, "use_group_pick_random")
|
sub.prop(part, "use_group_count")
|
||||||
|
|
||||||
|
col = split.column()
|
||||||
|
sub = col.column()
|
||||||
|
sub.active = (part.use_whole_group is False)
|
||||||
|
sub.prop(part, "use_global_dupli")
|
||||||
|
sub.prop(part, "use_group_pick_random")
|
||||||
|
|
||||||
if part.use_group_count and not part.use_whole_group:
|
if part.use_group_count and not part.use_whole_group:
|
||||||
row = layout.row()
|
row = layout.row()
|
||||||
@@ -867,7 +863,7 @@ class PARTICLE_PT_render(ParticleButtonsPanel, bpy.types.Panel):
|
|||||||
elif part.render_type == 'BILLBOARD':
|
elif part.render_type == 'BILLBOARD':
|
||||||
ob = context.object
|
ob = context.object
|
||||||
|
|
||||||
sub.label(text="Align:")
|
col.label(text="Align:")
|
||||||
|
|
||||||
row = layout.row()
|
row = layout.row()
|
||||||
row.prop(part, "billboard_align", expand=True)
|
row.prop(part, "billboard_align", expand=True)
|
||||||
|
@@ -195,9 +195,6 @@ class SCENE_PT_custom_props(SceneButtonsPanel, PropertyPanel, bpy.types.Panel):
|
|||||||
_context_path = "scene"
|
_context_path = "scene"
|
||||||
_property_type = bpy.types.Scene
|
_property_type = bpy.types.Scene
|
||||||
|
|
||||||
|
|
||||||
from bpy.props import *
|
|
||||||
|
|
||||||
# XXX, move operator to op/ dir
|
# XXX, move operator to op/ dir
|
||||||
|
|
||||||
|
|
||||||
|
@@ -18,15 +18,13 @@
|
|||||||
|
|
||||||
# <pep8 compliant>
|
# <pep8 compliant>
|
||||||
import bpy
|
import bpy
|
||||||
from bpy.props import *
|
from bpy.props import StringProperty
|
||||||
|
|
||||||
|
|
||||||
class CONSOLE_HT_header(bpy.types.Header):
|
class CONSOLE_HT_header(bpy.types.Header):
|
||||||
bl_space_type = 'CONSOLE'
|
bl_space_type = 'CONSOLE'
|
||||||
|
|
||||||
def draw(self, context):
|
def draw(self, context):
|
||||||
# sc = context.space_data
|
|
||||||
# text = sc.text
|
|
||||||
layout = self.layout
|
layout = self.layout
|
||||||
|
|
||||||
row = layout.row(align=True)
|
row = layout.row(align=True)
|
||||||
|
@@ -387,8 +387,8 @@ class IMAGE_HT_header(bpy.types.Header):
|
|||||||
row.prop(toolsettings, "use_snap", text="")
|
row.prop(toolsettings, "use_snap", text="")
|
||||||
row.prop(toolsettings, "snap_element", text="", icon_only=True)
|
row.prop(toolsettings, "snap_element", text="", icon_only=True)
|
||||||
|
|
||||||
# mesh = context.edit_object.data
|
mesh = context.edit_object.data
|
||||||
# row.prop_search(mesh.uv_textures, "active", mesh, "uv_textures")
|
layout.prop_search(mesh.uv_textures, "active", mesh, "uv_textures", text="")
|
||||||
|
|
||||||
if ima:
|
if ima:
|
||||||
# layers
|
# layers
|
||||||
@@ -425,7 +425,6 @@ class IMAGE_PT_image_properties(bpy.types.Panel):
|
|||||||
layout = self.layout
|
layout = self.layout
|
||||||
|
|
||||||
sima = context.space_data
|
sima = context.space_data
|
||||||
# ima = sima.image
|
|
||||||
iuser = sima.image_user
|
iuser = sima.image_user
|
||||||
|
|
||||||
layout.template_image(sima, "image", iuser)
|
layout.template_image(sima, "image", iuser)
|
||||||
@@ -684,11 +683,9 @@ class IMAGE_PT_tools_brush_texture(BrushButtonsPanel, bpy.types.Panel):
|
|||||||
toolsettings = context.tool_settings.image_paint
|
toolsettings = context.tool_settings.image_paint
|
||||||
brush = toolsettings.brush
|
brush = toolsettings.brush
|
||||||
|
|
||||||
# tex_slot = brush.texture_slot
|
|
||||||
|
|
||||||
col = layout.column()
|
col = layout.column()
|
||||||
|
|
||||||
col.template_ID_preview(brush, "texture", new="texture.new", rows=3, cols=8)
|
col.template_ID_preview(brush, "texture", new="texture.new", rows=3, cols=8)
|
||||||
|
col.prop(brush, "use_fixed_texture")
|
||||||
|
|
||||||
|
|
||||||
class IMAGE_PT_tools_brush_tool(BrushButtonsPanel, bpy.types.Panel):
|
class IMAGE_PT_tools_brush_tool(BrushButtonsPanel, bpy.types.Panel):
|
||||||
|
@@ -326,8 +326,6 @@ class INFO_MT_render(bpy.types.Menu):
|
|||||||
def draw(self, context):
|
def draw(self, context):
|
||||||
layout = self.layout
|
layout = self.layout
|
||||||
|
|
||||||
# rd = context.scene.render
|
|
||||||
|
|
||||||
layout.operator("render.render", text="Render Image", icon='RENDER_STILL')
|
layout.operator("render.render", text="Render Image", icon='RENDER_STILL')
|
||||||
layout.operator("render.render", text="Render Animation", icon='RENDER_ANIMATION').animation = True
|
layout.operator("render.render", text="Render Animation", icon='RENDER_ANIMATION').animation = True
|
||||||
|
|
||||||
@@ -371,7 +369,7 @@ class INFO_MT_help(bpy.types.Menu):
|
|||||||
layout.separator()
|
layout.separator()
|
||||||
layout.operator("anim.update_data_paths", text="FCurve/Driver 2.54 fix", icon='HELP')
|
layout.operator("anim.update_data_paths", text="FCurve/Driver 2.54 fix", icon='HELP')
|
||||||
layout.separator()
|
layout.separator()
|
||||||
layout.operator("wm.splash")
|
layout.operator("wm.splash", icon='BLENDER')
|
||||||
|
|
||||||
|
|
||||||
# Help operators
|
# Help operators
|
||||||
|
@@ -156,9 +156,6 @@ class NODE_MT_node(bpy.types.Menu):
|
|||||||
layout.operator("node.preview_toggle")
|
layout.operator("node.preview_toggle")
|
||||||
layout.operator("node.hide_socket_toggle")
|
layout.operator("node.hide_socket_toggle")
|
||||||
|
|
||||||
# XXX
|
|
||||||
# layout.operator("node.rename")
|
|
||||||
|
|
||||||
layout.separator()
|
layout.separator()
|
||||||
|
|
||||||
layout.operator("node.show_cyclic_dependencies")
|
layout.operator("node.show_cyclic_dependencies")
|
||||||
|
@@ -101,34 +101,6 @@ class SEQUENCER_MT_view(bpy.types.Menu):
|
|||||||
|
|
||||||
layout.separator()
|
layout.separator()
|
||||||
|
|
||||||
"""
|
|
||||||
uiBlock *block= uiBeginBlock(C, ar, "seq_viewmenu", UI_EMBOSSP);
|
|
||||||
short yco= 0, menuwidth=120;
|
|
||||||
|
|
||||||
if (sseq->mainb == SEQ_DRAW_SEQUENCE) {
|
|
||||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1,
|
|
||||||
"Play Back Animation "
|
|
||||||
"in all Sequence Areas|Alt A", 0, yco-=20,
|
|
||||||
menuwidth, 19, NULL, 0.0, 0.0, 1, 1, "");
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
uiDefIconTextBut(block, BUTM, 1, ICON_MENU_PANEL,
|
|
||||||
"Grease Pencil...", 0, yco-=20,
|
|
||||||
menuwidth, 19, NULL, 0.0, 0.0, 1, 7, "");
|
|
||||||
uiDefMenuSep(block);
|
|
||||||
|
|
||||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1,
|
|
||||||
"Play Back Animation "
|
|
||||||
"in this window|Alt A", 0, yco-=20,
|
|
||||||
menuwidth, 19, NULL, 0.0, 0.0, 1, 1, "");
|
|
||||||
}
|
|
||||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1,
|
|
||||||
"Play Back Animation in all "
|
|
||||||
"3D Views and Sequence Areas|Alt Shift A",
|
|
||||||
0, yco-=20,
|
|
||||||
menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
|
|
||||||
|
|
||||||
"""
|
|
||||||
if (st.view_type == 'SEQUENCER') or (st.view_type == 'SEQUENCER_PREVIEW'):
|
if (st.view_type == 'SEQUENCER') or (st.view_type == 'SEQUENCER_PREVIEW'):
|
||||||
layout.operator("sequencer.view_all", text='View all Sequences')
|
layout.operator("sequencer.view_all", text='View all Sequences')
|
||||||
if (st.view_type == 'PREVIEW') or (st.view_type == 'SEQUENCER_PREVIEW'):
|
if (st.view_type == 'PREVIEW') or (st.view_type == 'SEQUENCER_PREVIEW'):
|
||||||
|
@@ -141,7 +141,6 @@ class TIME_MT_frame(bpy.types.Menu):
|
|||||||
|
|
||||||
def draw(self, context):
|
def draw(self, context):
|
||||||
layout = self.layout
|
layout = self.layout
|
||||||
# tools = context.tool_settings
|
|
||||||
|
|
||||||
layout.operator("marker.add", text="Add Marker")
|
layout.operator("marker.add", text="Add Marker")
|
||||||
layout.operator("marker.duplicate", text="Duplicate Marker")
|
layout.operator("marker.duplicate", text="Duplicate Marker")
|
||||||
|
@@ -19,7 +19,6 @@
|
|||||||
# <pep8 compliant>
|
# <pep8 compliant>
|
||||||
import bpy
|
import bpy
|
||||||
import os
|
import os
|
||||||
import shutil
|
|
||||||
import addon_utils
|
import addon_utils
|
||||||
|
|
||||||
from bpy.props import StringProperty, BoolProperty, EnumProperty
|
from bpy.props import StringProperty, BoolProperty, EnumProperty
|
||||||
@@ -1080,6 +1079,8 @@ class WM_OT_addon_install(bpy.types.Operator):
|
|||||||
def execute(self, context):
|
def execute(self, context):
|
||||||
import traceback
|
import traceback
|
||||||
import zipfile
|
import zipfile
|
||||||
|
import shutil
|
||||||
|
|
||||||
pyfile = self.filepath
|
pyfile = self.filepath
|
||||||
|
|
||||||
# dont use bpy.utils.script_paths("addons") because we may not be able to write to it.
|
# dont use bpy.utils.script_paths("addons") because we may not be able to write to it.
|
||||||
@@ -1095,7 +1096,8 @@ class WM_OT_addon_install(bpy.types.Operator):
|
|||||||
addon_path = ""
|
addon_path = ""
|
||||||
pyfile_dir = os.path.dirname(pyfile)
|
pyfile_dir = os.path.dirname(pyfile)
|
||||||
for addon_path in addon_utils.paths():
|
for addon_path in addon_utils.paths():
|
||||||
if os.path.samefile(pyfile_dir, addon_path):
|
# if os.path.samefile(pyfile_dir, addon_path): # Py3.2 only!, upgrade soon!
|
||||||
|
if (hasattr(os.path, "samefile") and os.path.samefile(pyfile_dir, addon_path)) or pyfile_dir == addon_path:
|
||||||
self.report({'ERROR'}, "Source file is in the addon search path: %r" % addon_path)
|
self.report({'ERROR'}, "Source file is in the addon search path: %r" % addon_path)
|
||||||
return {'CANCELLED'}
|
return {'CANCELLED'}
|
||||||
del addon_path
|
del addon_path
|
||||||
|
@@ -404,7 +404,7 @@ class InputKeyMapPanel(bpy.types.Panel):
|
|||||||
self.draw_hierarchy(display_keymaps, col)
|
self.draw_hierarchy(display_keymaps, col)
|
||||||
|
|
||||||
|
|
||||||
from bpy.props import *
|
from bpy.props import StringProperty, BoolProperty, IntProperty
|
||||||
|
|
||||||
|
|
||||||
def export_properties(prefix, properties, lines=None):
|
def export_properties(prefix, properties, lines=None):
|
||||||
|
@@ -694,6 +694,8 @@ class VIEW3D_PT_tools_brush_texture(PaintPanel, bpy.types.Panel):
|
|||||||
col = layout.column()
|
col = layout.column()
|
||||||
|
|
||||||
col.template_ID_preview(brush, "texture", new="texture.new", rows=3, cols=8)
|
col.template_ID_preview(brush, "texture", new="texture.new", rows=3, cols=8)
|
||||||
|
if brush.use_paint_texture:
|
||||||
|
col.prop(brush, "use_fixed_texture")
|
||||||
|
|
||||||
if context.sculpt_object:
|
if context.sculpt_object:
|
||||||
#XXX duplicated from properties_texture.py
|
#XXX duplicated from properties_texture.py
|
||||||
|
@@ -30,6 +30,11 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** \file blender/avi/intern/avi.c
|
||||||
|
* \ingroup avi
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
@@ -211,7 +216,7 @@ int AVI_is_avi (char *name) {
|
|||||||
|
|
||||||
int AVI_is_avi (const char *name) {
|
int AVI_is_avi (const char *name) {
|
||||||
int temp, fcca, j;
|
int temp, fcca, j;
|
||||||
AviMovie movie= {0};
|
AviMovie movie= {NULL};
|
||||||
AviMainHeader header;
|
AviMainHeader header;
|
||||||
AviBitmapInfoHeader bheader;
|
AviBitmapInfoHeader bheader;
|
||||||
int movie_tracks = 0;
|
int movie_tracks = 0;
|
||||||
|
@@ -26,6 +26,11 @@
|
|||||||
*
|
*
|
||||||
* ***** END GPL LICENSE BLOCK *****
|
* ***** END GPL LICENSE BLOCK *****
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** \file blender/avi/intern/avi_intern.h
|
||||||
|
* \ingroup avi
|
||||||
|
*/
|
||||||
|
|
||||||
#ifndef AVI_INTERN_H
|
#ifndef AVI_INTERN_H
|
||||||
#define AVI_INTERN_H
|
#define AVI_INTERN_H
|
||||||
|
|
||||||
|
@@ -30,6 +30,11 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** \file blender/avi/intern/avirgb.c
|
||||||
|
* \ingroup avi
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include "AVI_avi.h"
|
#include "AVI_avi.h"
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
@@ -27,6 +27,11 @@
|
|||||||
* ***** END GPL LICENSE BLOCK *****
|
* ***** END GPL LICENSE BLOCK *****
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** \file blender/avi/intern/avirgb.h
|
||||||
|
* \ingroup avi
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
void *avi_converter_from_avi_rgb (AviMovie *movie, int stream, unsigned char *buffer, int *size);
|
void *avi_converter_from_avi_rgb (AviMovie *movie, int stream, unsigned char *buffer, int *size);
|
||||||
void *avi_converter_to_avi_rgb (AviMovie *movie, int stream, unsigned char *buffer, int *size);
|
void *avi_converter_to_avi_rgb (AviMovie *movie, int stream, unsigned char *buffer, int *size);
|
||||||
|
|
||||||
|
@@ -29,6 +29,11 @@
|
|||||||
* ***** END GPL LICENSE BLOCK *****
|
* ***** END GPL LICENSE BLOCK *****
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** \file blender/avi/intern/codecs.c
|
||||||
|
* \ingroup avi
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include "AVI_avi.h"
|
#include "AVI_avi.h"
|
||||||
#include "avi_intern.h"
|
#include "avi_intern.h"
|
||||||
|
|
||||||
|
@@ -31,6 +31,11 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** \file blender/avi/intern/endian.c
|
||||||
|
* \ingroup avi
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
@@ -30,6 +30,11 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** \file blender/avi/intern/endian.h
|
||||||
|
* \ingroup avi
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#ifndef AVI_ENDIAN_H
|
#ifndef AVI_ENDIAN_H
|
||||||
#define AVI_ENDIAN_H
|
#define AVI_ENDIAN_H
|
||||||
|
|
||||||
|
@@ -30,6 +30,11 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** \file blender/avi/intern/mjpeg.c
|
||||||
|
* \ingroup avi
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include "AVI_avi.h"
|
#include "AVI_avi.h"
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
@@ -27,6 +27,11 @@
|
|||||||
* ***** END GPL LICENSE BLOCK *****
|
* ***** END GPL LICENSE BLOCK *****
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** \file blender/avi/intern/mjpeg.h
|
||||||
|
* \ingroup avi
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
void *avi_converter_from_mjpeg (AviMovie *movie, int stream, unsigned char *buffer, int *size);
|
void *avi_converter_from_mjpeg (AviMovie *movie, int stream, unsigned char *buffer, int *size);
|
||||||
void *avi_converter_to_mjpeg (AviMovie *movie, int stream, unsigned char *buffer, int *size);
|
void *avi_converter_to_mjpeg (AviMovie *movie, int stream, unsigned char *buffer, int *size);
|
||||||
|
|
||||||
|
@@ -31,6 +31,11 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** \file blender/avi/intern/options.c
|
||||||
|
* \ingroup avi
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include "AVI_avi.h"
|
#include "AVI_avi.h"
|
||||||
#include "avi_intern.h"
|
#include "avi_intern.h"
|
||||||
#include "endian.h"
|
#include "endian.h"
|
||||||
|
@@ -30,6 +30,11 @@
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** \file blender/avi/intern/rgb32.c
|
||||||
|
* \ingroup avi
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include "AVI_avi.h"
|
#include "AVI_avi.h"
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
@@ -27,6 +27,11 @@
|
|||||||
* ***** END GPL LICENSE BLOCK *****
|
* ***** END GPL LICENSE BLOCK *****
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** \file blender/avi/intern/rgb32.h
|
||||||
|
* \ingroup avi
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
void *avi_converter_from_rgb32 (AviMovie *movie, int stream, unsigned char *buffer, int *size);
|
void *avi_converter_from_rgb32 (AviMovie *movie, int stream, unsigned char *buffer, int *size);
|
||||||
void *avi_converter_to_rgb32 (AviMovie *movie, int stream, unsigned char *buffer, int *size);
|
void *avi_converter_to_rgb32 (AviMovie *movie, int stream, unsigned char *buffer, int *size);
|
||||||
|
|
||||||
|
@@ -26,6 +26,11 @@
|
|||||||
* ***** END GPL LICENSE BLOCK *****
|
* ***** END GPL LICENSE BLOCK *****
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** \file blender/blenfont/BLF_api.h
|
||||||
|
* \ingroup blf
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#ifndef BLF_API_H
|
#ifndef BLF_API_H
|
||||||
#define BLF_API_H
|
#define BLF_API_H
|
||||||
|
|
||||||
|
@@ -26,6 +26,11 @@
|
|||||||
* ***** END GPL LICENSE BLOCK *****
|
* ***** END GPL LICENSE BLOCK *****
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** \file blender/blenfont/intern/blf.c
|
||||||
|
* \ingroup blf
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
@@ -25,6 +25,11 @@
|
|||||||
* ***** END GPL LICENSE BLOCK *****
|
* ***** END GPL LICENSE BLOCK *****
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** \file blender/blenfont/intern/blf_dir.c
|
||||||
|
* \ingroup blf
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
@@ -26,6 +26,11 @@
|
|||||||
* ***** END GPL LICENSE BLOCK *****
|
* ***** END GPL LICENSE BLOCK *****
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** \file blender/blenfont/intern/blf_font.c
|
||||||
|
* \ingroup blf
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
@@ -26,6 +26,11 @@
|
|||||||
* ***** END GPL LICENSE BLOCK *****
|
* ***** END GPL LICENSE BLOCK *****
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** \file blender/blenfont/intern/blf_glyph.c
|
||||||
|
* \ingroup blf
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
@@ -25,6 +25,11 @@
|
|||||||
* ***** END GPL LICENSE BLOCK *****
|
* ***** END GPL LICENSE BLOCK *****
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** \file blender/blenfont/intern/blf_internal.h
|
||||||
|
* \ingroup blf
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#ifndef BLF_INTERNAL_H
|
#ifndef BLF_INTERNAL_H
|
||||||
#define BLF_INTERNAL_H
|
#define BLF_INTERNAL_H
|
||||||
|
|
||||||
|
@@ -25,6 +25,11 @@
|
|||||||
* ***** END GPL LICENSE BLOCK *****
|
* ***** END GPL LICENSE BLOCK *****
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** \file blender/blenfont/intern/blf_internal_types.h
|
||||||
|
* \ingroup blf
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#ifndef BLF_INTERNAL_TYPES_H
|
#ifndef BLF_INTERNAL_TYPES_H
|
||||||
#define BLF_INTERNAL_TYPES_H
|
#define BLF_INTERNAL_TYPES_H
|
||||||
|
|
||||||
|
@@ -25,6 +25,11 @@
|
|||||||
* ***** END GPL LICENSE BLOCK *****
|
* ***** END GPL LICENSE BLOCK *****
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** \file blender/blenfont/intern/blf_lang.c
|
||||||
|
* \ingroup blf
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
@@ -26,6 +26,11 @@
|
|||||||
* ***** END GPL LICENSE BLOCK *****
|
* ***** END GPL LICENSE BLOCK *****
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** \file blender/blenfont/intern/blf_util.c
|
||||||
|
* \ingroup blf
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
@@ -44,12 +44,12 @@ void cdf_free(CDataFile *cdf);
|
|||||||
|
|
||||||
int cdf_read_open(CDataFile *cdf, char *filename);
|
int cdf_read_open(CDataFile *cdf, char *filename);
|
||||||
int cdf_read_layer(CDataFile *cdf, CDataFileLayer *blay);
|
int cdf_read_layer(CDataFile *cdf, CDataFileLayer *blay);
|
||||||
int cdf_read_data(CDataFile *cdf, int size, void *data);
|
int cdf_read_data(CDataFile *cdf, unsigned int size, void *data);
|
||||||
void cdf_read_close(CDataFile *cdf);
|
void cdf_read_close(CDataFile *cdf);
|
||||||
|
|
||||||
int cdf_write_open(CDataFile *cdf, char *filename);
|
int cdf_write_open(CDataFile *cdf, char *filename);
|
||||||
int cdf_write_layer(CDataFile *cdf, CDataFileLayer *blay);
|
int cdf_write_layer(CDataFile *cdf, CDataFileLayer *blay);
|
||||||
int cdf_write_data(CDataFile *cdf, int size, void *data);
|
int cdf_write_data(CDataFile *cdf, unsigned int size, void *data);
|
||||||
void cdf_write_close(CDataFile *cdf);
|
void cdf_write_close(CDataFile *cdf);
|
||||||
|
|
||||||
void cdf_remove(char *filename);
|
void cdf_remove(char *filename);
|
||||||
|
@@ -156,7 +156,7 @@ int mesh_center_bounds(struct Mesh *me, float cent[3]);
|
|||||||
void mesh_translate(struct Mesh *me, float offset[3], int do_keys);
|
void mesh_translate(struct Mesh *me, float offset[3], int do_keys);
|
||||||
|
|
||||||
/* mesh_validate.c */
|
/* mesh_validate.c */
|
||||||
int BKE_mesh_validate_arrays(struct Mesh *me, struct MVert *mverts, int totvert, struct MEdge *medges, int totedge, struct MFace *mfaces, int totface, const short do_verbose, const short do_fixes);
|
int BKE_mesh_validate_arrays(struct Mesh *me, struct MVert *mverts, unsigned int totvert, struct MEdge *medges, unsigned int totedge, struct MFace *mfaces, unsigned int totface, const short do_verbose, const short do_fixes);
|
||||||
int BKE_mesh_validate(struct Mesh *me, int do_verbose);
|
int BKE_mesh_validate(struct Mesh *me, int do_verbose);
|
||||||
int BKE_mesh_validate_dm(struct DerivedMesh *dm);
|
int BKE_mesh_validate_dm(struct DerivedMesh *dm);
|
||||||
|
|
||||||
|
@@ -305,7 +305,7 @@ int modifier_sameTopology(ModifierData *md);
|
|||||||
int modifier_isEnabled(struct Scene *scene, struct ModifierData *md, int required_mode);
|
int modifier_isEnabled(struct Scene *scene, struct ModifierData *md, int required_mode);
|
||||||
void modifier_setError(struct ModifierData *md, const char *format, ...)
|
void modifier_setError(struct ModifierData *md, const char *format, ...)
|
||||||
#ifdef __GNUC__
|
#ifdef __GNUC__
|
||||||
__attribute__ ((format (printf, 2, 3)));
|
__attribute__ ((format (printf, 2, 3)))
|
||||||
#endif
|
#endif
|
||||||
;
|
;
|
||||||
|
|
||||||
|
@@ -51,7 +51,7 @@ void BKE_reports_clear(ReportList *reports);
|
|||||||
void BKE_report(ReportList *reports, ReportType type, const char *message);
|
void BKE_report(ReportList *reports, ReportType type, const char *message);
|
||||||
void BKE_reportf(ReportList *reports, ReportType type, const char *format, ...)
|
void BKE_reportf(ReportList *reports, ReportType type, const char *format, ...)
|
||||||
#ifdef __GNUC__
|
#ifdef __GNUC__
|
||||||
__attribute__ ((format (printf, 3, 4)));
|
__attribute__ ((format (printf, 3, 4)))
|
||||||
#endif
|
#endif
|
||||||
;
|
;
|
||||||
|
|
||||||
|
@@ -78,7 +78,7 @@ int scene_camera_switch_update(struct Scene *scene);
|
|||||||
|
|
||||||
char *scene_find_marker_name(struct Scene *scene, int frame);
|
char *scene_find_marker_name(struct Scene *scene, int frame);
|
||||||
char *scene_find_last_marker_name(struct Scene *scene, int frame);
|
char *scene_find_last_marker_name(struct Scene *scene, int frame);
|
||||||
int scene_marker_tfm_translate(struct Scene *scene, int delta, int flag);
|
int scene_marker_tfm_translate(struct Scene *scene, int delta, unsigned int flag);
|
||||||
int scene_marker_tfm_extend(struct Scene *scene, int delta, int flag, int frame, char side);
|
int scene_marker_tfm_extend(struct Scene *scene, int delta, int flag, int frame, char side);
|
||||||
int scene_marker_tfm_scale(struct Scene *scene, float value, int flag);
|
int scene_marker_tfm_scale(struct Scene *scene, float value, int flag);
|
||||||
|
|
||||||
|
@@ -81,6 +81,7 @@ void default_mtex(struct MTex *mtex);
|
|||||||
struct MTex *add_mtex(void);
|
struct MTex *add_mtex(void);
|
||||||
struct MTex *add_mtex_id(struct ID *id, int slot);
|
struct MTex *add_mtex_id(struct ID *id, int slot);
|
||||||
struct Tex *copy_texture(struct Tex *tex);
|
struct Tex *copy_texture(struct Tex *tex);
|
||||||
|
struct Tex *localize_texture(struct Tex *tex);
|
||||||
void make_local_texture(struct Tex *tex);
|
void make_local_texture(struct Tex *tex);
|
||||||
void autotexname(struct Tex *tex);
|
void autotexname(struct Tex *tex);
|
||||||
|
|
||||||
|
@@ -24,6 +24,11 @@
|
|||||||
*
|
*
|
||||||
* ***** END GPL LICENSE BLOCK *****
|
* ***** END GPL LICENSE BLOCK *****
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** \file blender/blenkernel/depsgraph_private.h
|
||||||
|
* \ingroup bke
|
||||||
|
*/
|
||||||
|
|
||||||
#ifndef DEPSGRAPH_PRIVATE
|
#ifndef DEPSGRAPH_PRIVATE
|
||||||
#define DEPSGRAPH_PRIVATE
|
#define DEPSGRAPH_PRIVATE
|
||||||
|
|
||||||
|
@@ -34,6 +34,11 @@
|
|||||||
* ***** END GPL LICENSE BLOCK *****
|
* ***** END GPL LICENSE BLOCK *****
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** \file blender/blenkernel/intern/BME_Customdata.c
|
||||||
|
* \ingroup bke
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include "MEM_guardedalloc.h"
|
#include "MEM_guardedalloc.h"
|
||||||
|
@@ -32,6 +32,11 @@
|
|||||||
* ***** END GPL LICENSE BLOCK *****
|
* ***** END GPL LICENSE BLOCK *****
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** \file blender/blenkernel/intern/BME_conversions.c
|
||||||
|
* \ingroup bke
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include "MEM_guardedalloc.h"
|
#include "MEM_guardedalloc.h"
|
||||||
|
|
||||||
#include "DNA_meshdata_types.h"
|
#include "DNA_meshdata_types.h"
|
||||||
|
@@ -32,6 +32,11 @@
|
|||||||
* ***** END GPL LICENSE BLOCK *****
|
* ***** END GPL LICENSE BLOCK *****
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** \file blender/blenkernel/intern/BME_eulers.c
|
||||||
|
* \ingroup bke
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include "MEM_guardedalloc.h"
|
#include "MEM_guardedalloc.h"
|
||||||
#include "BLI_utildefines.h"
|
#include "BLI_utildefines.h"
|
||||||
|
|
||||||
|
@@ -32,6 +32,11 @@
|
|||||||
* ***** END GPL LICENSE BLOCK *****
|
* ***** END GPL LICENSE BLOCK *****
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** \file blender/blenkernel/intern/BME_mesh.c
|
||||||
|
* \ingroup bke
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#include "MEM_guardedalloc.h"
|
#include "MEM_guardedalloc.h"
|
||||||
#include "BKE_bmesh.h"
|
#include "BKE_bmesh.h"
|
||||||
|
@@ -32,6 +32,11 @@
|
|||||||
* ***** END GPL LICENSE BLOCK *****
|
* ***** END GPL LICENSE BLOCK *****
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** \file blender/blenkernel/intern/BME_structure.c
|
||||||
|
* \ingroup bke
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
|
|
||||||
#include "MEM_guardedalloc.h"
|
#include "MEM_guardedalloc.h"
|
||||||
|
@@ -31,6 +31,11 @@
|
|||||||
* ***** END GPL LICENSE BLOCK *****
|
* ***** END GPL LICENSE BLOCK *****
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** \file blender/blenkernel/intern/BME_tools.c
|
||||||
|
* \ingroup bke
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
#include "MEM_guardedalloc.h"
|
#include "MEM_guardedalloc.h"
|
||||||
|
@@ -1,3 +1,6 @@
|
|||||||
|
/** \file blender/blenkernel/intern/CCGSubSurf.c
|
||||||
|
* \ingroup bke
|
||||||
|
*/
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
@@ -1,3 +1,6 @@
|
|||||||
|
/** \file blender/blenkernel/intern/CCGSubSurf.h
|
||||||
|
* \ingroup bke
|
||||||
|
*/
|
||||||
/* $Id$ */
|
/* $Id$ */
|
||||||
|
|
||||||
typedef void* CCGMeshHDL;
|
typedef void* CCGMeshHDL;
|
||||||
|
@@ -27,6 +27,11 @@
|
|||||||
* ***** END GPL LICENSE BLOCK *****
|
* ***** END GPL LICENSE BLOCK *****
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** \file blender/blenkernel/intern/DerivedMesh.c
|
||||||
|
* \ingroup bke
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
|
||||||
|
@@ -26,6 +26,11 @@
|
|||||||
* ***** END GPL LICENSE BLOCK *****
|
* ***** END GPL LICENSE BLOCK *****
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** \file blender/blenkernel/intern/action.c
|
||||||
|
* \ingroup bke
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@@ -1066,7 +1071,7 @@ void copy_pose_result(bPose *to, bPose *from)
|
|||||||
bPoseChannel *pchanto, *pchanfrom;
|
bPoseChannel *pchanto, *pchanfrom;
|
||||||
|
|
||||||
if(to==NULL || from==NULL) {
|
if(to==NULL || from==NULL) {
|
||||||
printf("pose result copy error to:%p from:%p\n", to, from); // debug temp
|
printf("pose result copy error to:%p from:%p\n", (void *)to, (void *)from); // debug temp
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -29,6 +29,11 @@
|
|||||||
* ***** END GPL LICENSE BLOCK *****
|
* ***** END GPL LICENSE BLOCK *****
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** \file blender/blenkernel/intern/anim.c
|
||||||
|
* \ingroup bke
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
@@ -27,6 +27,11 @@
|
|||||||
* ***** END GPL LICENSE BLOCK *****
|
* ***** END GPL LICENSE BLOCK *****
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** \file blender/blenkernel/intern/anim_sys.c
|
||||||
|
* \ingroup bke
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
@@ -305,7 +310,7 @@ void action_move_fcurves_by_basepath (bAction *srcAct, bAction *dstAct, const ch
|
|||||||
if ELEM3(NULL, srcAct, dstAct, basepath) {
|
if ELEM3(NULL, srcAct, dstAct, basepath) {
|
||||||
if (G.f & G_DEBUG) {
|
if (G.f & G_DEBUG) {
|
||||||
printf("ERROR: action_partition_fcurves_by_basepath(%p, %p, %p) has insufficient info to work with\n",
|
printf("ERROR: action_partition_fcurves_by_basepath(%p, %p, %p) has insufficient info to work with\n",
|
||||||
srcAct, dstAct, basepath);
|
(void *)srcAct, (void *)dstAct, (void *)basepath);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user