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
|
||||
option(WITH_INTERNATIONAL "Enable I18N (International fonts and text)" 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_BUILDINFO "Include extra build details" ON)
|
||||
option(WITH_IK_ITASC "Enable ITASC IK solver" ON)
|
||||
@@ -609,10 +610,10 @@ elseif(WIN32)
|
||||
|
||||
if(WITH_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_BINARY python) # not used yet
|
||||
set(PYTHON_LIBRARY python31)
|
||||
set(PYTHON_LIBRARY python32)
|
||||
set(PYTHON_LIBPATH ${PYTHON}/lib)
|
||||
endif()
|
||||
|
||||
@@ -714,6 +715,7 @@ elseif(WIN32)
|
||||
set(WITH_JACK OFF)
|
||||
endif()
|
||||
|
||||
# TODO: mingw move to Python 3.2
|
||||
if(WITH_PYTHON)
|
||||
set(PYTHON ${LIBDIR}/python)
|
||||
set(PYTHON_VERSION 3.1)
|
||||
@@ -765,9 +767,9 @@ elseif(APPLE)
|
||||
set(SNDFILE_LIBPATH ${SNDFILE}/lib ${FFMPEG}/lib)
|
||||
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
|
||||
|
||||
set(PYTHON ${LIBDIR}/python)
|
||||
|
@@ -23,6 +23,11 @@
|
||||
|
||||
# <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
|
||||
from os.path import join, dirname, normpath, abspath, splitext, relpath, exists
|
||||
|
||||
@@ -49,7 +54,7 @@ def source_list(path, filename_check=None):
|
||||
# extension checking
|
||||
def is_cmake(filename):
|
||||
ext = splitext(filename)[1]
|
||||
return (ext == ".cmake") or (filename == "CMakeLists.txt")
|
||||
return (ext == ".cmake") or (filename.endswith("CMakeLists.txt"))
|
||||
|
||||
|
||||
def is_c_header(filename):
|
||||
@@ -73,7 +78,7 @@ def is_svn_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():
|
||||
@@ -81,7 +86,12 @@ def cmake_advanced_info():
|
||||
"""
|
||||
|
||||
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)
|
||||
|
||||
includes = []
|
||||
@@ -92,13 +102,13 @@ def cmake_advanced_info():
|
||||
|
||||
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()
|
||||
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()))
|
||||
sys.exit(1)
|
||||
|
||||
# create_eclipse_project(cmake_dir)
|
||||
create_eclipse_project(cmake_dir)
|
||||
|
||||
from xml.dom.minidom import parse
|
||||
tree = parse(os.path.join(cmake_dir, ".cproject"))
|
||||
@@ -171,6 +181,11 @@ def main():
|
||||
else:
|
||||
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"
|
||||
f = open(join(base, "%s.files" % PROJECT_NAME), 'w')
|
||||
f.write("\n".join(files_rel))
|
||||
|
@@ -358,8 +358,8 @@ macro(get_blender_version)
|
||||
message(FATAL_ERROR "Version parsing failed for BLENDER_VERSION_CYCLE")
|
||||
endif()
|
||||
|
||||
MATH(EXPR BLENDER_VERSION_MAJOR "${_out_version} / 100")
|
||||
MATH(EXPR BLENDER_VERSION_MINOR "${_out_version} % 100")
|
||||
math(EXPR BLENDER_VERSION_MAJOR "${_out_version} / 100")
|
||||
math(EXPR BLENDER_VERSION_MINOR "${_out_version} % 100")
|
||||
set(BLENDER_VERSION "${BLENDER_VERSION_MAJOR}.${BLENDER_VERSION_MINOR}")
|
||||
|
||||
set(BLENDER_SUBVERSION ${_out_subversion})
|
||||
@@ -372,7 +372,7 @@ macro(get_blender_version)
|
||||
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)
|
||||
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(_out_version_char_index)
|
||||
endif()
|
||||
|
@@ -1,2 +1,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
|
||||
|
@@ -86,7 +86,7 @@ BF_FFMPEG_LIB = 'avcodec avdevice avformat avutil mp3lame swscale x264 xvidcore
|
||||
#bz2 is a standard osx dynlib
|
||||
|
||||
# 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_INC = '${BF_PYTHON}/include/python${BF_PYTHON_VERSION}'
|
||||
# BF_PYTHON_BINARY = '${BF_PYTHON}/bin/python${BF_PYTHON_VERSION}'
|
||||
|
@@ -2,12 +2,12 @@ LCGDIR = '#../lib/windows'
|
||||
LIBDIR = "${LCGDIR}"
|
||||
|
||||
BF_PYTHON = LIBDIR + '/python'
|
||||
BF_PYTHON_VERSION = '3.1'
|
||||
BF_PYTHON_VERSION = '3.2'
|
||||
WITH_BF_STATICPYTHON = False
|
||||
BF_PYTHON_INC = '${BF_PYTHON}/include/python${BF_PYTHON_VERSION}'
|
||||
BF_PYTHON_BINARY = 'python'
|
||||
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_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_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_BINARY = 'python'
|
||||
BF_PYTHON_LIB = 'python31'
|
||||
BF_PYTHON_LIB = 'python32'
|
||||
BF_PYTHON_DLL = '${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_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_BINARY = 'python'
|
||||
BF_PYTHON_LIB = 'python31'
|
||||
BF_PYTHON_LIB = 'python32'
|
||||
BF_PYTHON_DLL = '${BF_PYTHON_LIB}'
|
||||
BF_PYTHON_LIBPATH = '${BF_PYTHON}/lib'
|
||||
|
||||
|
@@ -624,31 +624,36 @@ def UnixPyBundle(target=None, source=None, env=None):
|
||||
print '\t"%s"' % py_target
|
||||
print '\t(skipping copy)\n'
|
||||
return
|
||||
|
||||
|
||||
|
||||
# Copied from source/creator/CMakeLists.txt, keep in sync.
|
||||
print 'Install python from:'
|
||||
print '\t"%s" into...' % py_src
|
||||
print '\t"%s"\n' % py_target
|
||||
|
||||
run('rm -rf "%s"' % py_target)
|
||||
try: 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('rm -rf "%s/distutils"' % py_target)
|
||||
run('rm -rf "%s/lib2to3"' % py_target)
|
||||
run('rm -rf "%s/idlelib"' % py_target)
|
||||
run('rm -rf "%s/tkinter"' % py_target)
|
||||
run('rm -rf "%s/config"' % py_target)
|
||||
print '\t"%s" into...' % py_src
|
||||
print '\t"%s"\n' % py_target
|
||||
|
||||
run('rm -rf "%s/site-packages"' % py_target)
|
||||
run('mkdir "%s/site-packages"' % py_target) # python needs it.'
|
||||
run("rm -rf '%s'" % py_target)
|
||||
try:
|
||||
os.makedirs(os.path.dirname(py_target)) # the final part is copied
|
||||
except:
|
||||
pass
|
||||
|
||||
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)
|
||||
run("cp -R '%s' '%s'" % (py_src, os.path.dirname(py_target)))
|
||||
run("rm -rf '%s/distutils'" % py_target)
|
||||
run("rm -rf '%s/lib2to3'" % py_target)
|
||||
run("rm -rf '%s/idlelib'" % py_target)
|
||||
run("rm -rf '%s/tkinter'" % py_target)
|
||||
run("rm -rf '%s/config'" % py_target)
|
||||
|
||||
run("rm -rf '%s/site-packages'" % py_target)
|
||||
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)
|
||||
|
||||
|
||||
#### END ACTION STUFF #########
|
||||
|
||||
@@ -675,6 +680,8 @@ def bsc(env, target, source):
|
||||
|
||||
class BlenderEnvironment(SConsEnvironment):
|
||||
|
||||
PyBundleActionAdded = False
|
||||
|
||||
def BlenderRes(self=None, libname=None, source=None, libtype=['core'], priority=[100]):
|
||||
global libs
|
||||
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))
|
||||
elif os.sep == '/' and lenv['OURPLATFORM'] != 'linuxcross': # any unix (except cross-compilation)
|
||||
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))
|
||||
BlenderEnvironment.PyBundleActionAdded = True
|
||||
elif lenv['OURPLATFORM'].startswith('win') or lenv['OURPLATFORM'] == 'linuxcross': # windows or cross-compilation
|
||||
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))
|
||||
BlenderEnvironment.PyBundleActionAdded = True
|
||||
return prog
|
||||
|
||||
def Glob(lenv, pattern):
|
||||
|
@@ -72,7 +72,7 @@ def print_arguments(args, bc):
|
||||
|
||||
def validate_arguments(args, bc):
|
||||
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_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',
|
||||
@@ -211,6 +211,7 @@ def read_opts(env, cfg, args):
|
||||
localopts.AddVariables(
|
||||
('LCGDIR', 'location of cvs lib dir'),
|
||||
(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_VERSION', 'Python version to use', ''),
|
||||
('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.
|
||||
# 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)
|
||||
# base path where the generated documentation will be put.
|
||||
@@ -616,9 +616,9 @@ INPUT = doxygen.main \
|
||||
doxygen.source \
|
||||
doxygen.intern \
|
||||
doxygen.extern \
|
||||
../source \
|
||||
../intern \
|
||||
../extern/bullet2
|
||||
../../source \
|
||||
../../intern \
|
||||
../../extern/bullet2
|
||||
|
||||
# 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
|
||||
@@ -648,7 +648,7 @@ RECURSIVE = YES
|
||||
# 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.
|
||||
|
||||
EXCLUDE = ../source/gameengine/PyDoc
|
||||
EXCLUDE = ../../source/gameengine/PyDoc
|
||||
|
||||
# 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
|
@@ -1,6 +1,10 @@
|
||||
|
||||
/** \defgroup blenderplayer Blender Player */
|
||||
|
||||
/** \defgroup blc bad level calls
|
||||
* \ingroup blenderplayer
|
||||
*/
|
||||
|
||||
/** \defgroup render Rendering
|
||||
* \ingroup blender
|
||||
*/
|
||||
@@ -14,6 +18,19 @@
|
||||
* \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 */
|
||||
@@ -74,6 +91,10 @@
|
||||
|
||||
/** \defgroup blender blender */
|
||||
|
||||
/** \defgroup blf blenfont
|
||||
* \ingroup blender
|
||||
*/
|
||||
|
||||
/** \defgroup bke blenkernel
|
||||
* \ingroup blender
|
||||
*/
|
||||
@@ -86,6 +107,17 @@
|
||||
* \ingroup blender
|
||||
*/
|
||||
|
||||
/** \defgroup cmpnodes cmpnodes
|
||||
* \ingroup nodes
|
||||
*/
|
||||
|
||||
/** \defgroup shdnodes shdnodes
|
||||
* \ingroup nodes
|
||||
*/
|
||||
|
||||
/** \defgroup texnodes texnodes
|
||||
* \ingroup nodes
|
||||
*/
|
||||
/** \defgroup modifiers modifiers
|
||||
* \ingroup blender
|
||||
*/
|
||||
@@ -107,11 +139,13 @@
|
||||
* \ingroup blender data
|
||||
*/
|
||||
|
||||
/** \defgroup readwrite .blend read and write functions
|
||||
/** \defgroup blenloader .blend read and write functions
|
||||
* \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
|
||||
*/
|
||||
|
||||
@@ -294,6 +328,18 @@
|
||||
* \ingroup blender
|
||||
*/
|
||||
|
||||
/** \defgroup imbcineon Cineon
|
||||
* \ingroup imbuf
|
||||
*/
|
||||
|
||||
/** \defgorup imbdds DDS
|
||||
* \ingroup imbuf
|
||||
*/
|
||||
|
||||
/** \defgroup openexr OpenEXR
|
||||
* \ingroup imbuf
|
||||
*/
|
||||
|
||||
/* ================================ */
|
||||
|
||||
/** \defgroup kernel kernel */
|
@@ -1,4 +1,4 @@
|
||||
/*! \file btGImpactTriangleShape.h
|
||||
/*! \file btTriangleShapeEx.cpp
|
||||
\author Francisco Len N<>jera
|
||||
*/
|
||||
/*
|
||||
|
@@ -1,6 +1,6 @@
|
||||
#ifndef 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
|
||||
*/
|
||||
/*
|
||||
|
@@ -752,13 +752,14 @@ GHOST_EventKey* GHOST_SystemWin32::processKeyEvent(GHOST_IWindow *window, bool k
|
||||
if (key != GHOST_kKeyUnknown) {
|
||||
MSG keyMsg;
|
||||
char ascii = '\0';
|
||||
|
||||
/* 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);
|
||||
|
||||
#ifdef BF_GHOST_DEBUG
|
||||
|
@@ -195,7 +195,7 @@ static void mem_unlock_thread(void)
|
||||
thread_unlock_callback();
|
||||
}
|
||||
|
||||
int MEM_check_memory_integrity()
|
||||
int MEM_check_memory_integrity(void)
|
||||
{
|
||||
const char* err_val = NULL;
|
||||
MemHead* listend;
|
||||
@@ -205,7 +205,7 @@ int MEM_check_memory_integrity()
|
||||
|
||||
err_val = check_memlist(listend);
|
||||
|
||||
if (err_val == 0) return 0;
|
||||
if (err_val == NULL) return 0;
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -286,7 +286,7 @@ static void make_memhead_header(MemHead *memh, size_t len, const char *str)
|
||||
|
||||
memh->tag1 = MEMTAG1;
|
||||
memh->name = str;
|
||||
memh->nextname = 0;
|
||||
memh->nextname = NULL;
|
||||
memh->len = len;
|
||||
memh->mmap = 0;
|
||||
memh->tag2 = MEMTAG2;
|
||||
@@ -353,7 +353,7 @@ void *MEM_callocN(size_t len, const char *str)
|
||||
}
|
||||
mem_unlock_thread();
|
||||
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 */
|
||||
@@ -377,7 +377,7 @@ void *MEM_mapallocN(size_t len, const char *str)
|
||||
close(fd);
|
||||
}
|
||||
#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);
|
||||
#endif
|
||||
|
||||
@@ -643,13 +643,13 @@ short MEM_freeN(void *vmemh) /* anders compileertie niet meer */
|
||||
error = 2;
|
||||
MemorY_ErroR(memh->name,"end corrupt");
|
||||
name = check_memlist(memh);
|
||||
if (name != 0){
|
||||
if (name != NULL){
|
||||
if (name != memh->name) MemorY_ErroR(name,"is also corrupt");
|
||||
}
|
||||
} else{
|
||||
error = -1;
|
||||
name = check_memlist(memh);
|
||||
if (name == 0)
|
||||
if (name == NULL)
|
||||
MemorY_ErroR("free","pointer not in memlist");
|
||||
else
|
||||
MemorY_ErroR(name,"error in header");
|
||||
@@ -671,14 +671,14 @@ static void addtail(volatile localListBase *listbase, void *vlink)
|
||||
{
|
||||
struct localLink *link= vlink;
|
||||
|
||||
if (link == 0) return;
|
||||
if (listbase == 0) return;
|
||||
if (link == NULL) return;
|
||||
if (listbase == NULL) return;
|
||||
|
||||
link->next = 0;
|
||||
link->next = NULL;
|
||||
link->prev = listbase->last;
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -686,8 +686,8 @@ static void remlink(volatile localListBase *listbase, void *vlink)
|
||||
{
|
||||
struct localLink *link= vlink;
|
||||
|
||||
if (link == 0) return;
|
||||
if (listbase == 0) return;
|
||||
if (link == NULL) return;
|
||||
if (listbase == NULL) return;
|
||||
|
||||
if (link->next) link->next->prev = link->prev;
|
||||
if (link->prev) link->prev->next = link->next;
|
||||
@@ -733,50 +733,50 @@ static const char *check_memlist(MemHead *memh)
|
||||
|
||||
forw = membase->first;
|
||||
if (forw) forw = MEMNEXT(forw);
|
||||
forwok = 0;
|
||||
forwok = NULL;
|
||||
while(forw){
|
||||
if (forw->tag1 != MEMTAG1 || forw->tag2 != MEMTAG2) break;
|
||||
forwok = forw;
|
||||
if (forw->next) forw = MEMNEXT(forw->next);
|
||||
else forw = 0;
|
||||
else forw = NULL;
|
||||
}
|
||||
|
||||
back = (MemHead *) membase->last;
|
||||
if (back) back = MEMNEXT(back);
|
||||
backok = 0;
|
||||
backok = NULL;
|
||||
while(back){
|
||||
if (back->tag1 != MEMTAG1 || back->tag2 != MEMTAG2) break;
|
||||
backok = back;
|
||||
if (back->prev) back = MEMNEXT(back->prev);
|
||||
else back = 0;
|
||||
else back = NULL;
|
||||
}
|
||||
|
||||
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*/
|
||||
|
||||
forw = membase->first;
|
||||
if (forw) forw = MEMNEXT(forw);
|
||||
forwok = 0;
|
||||
forwok = NULL;
|
||||
while(forw){
|
||||
if (forw == memh) break;
|
||||
if (forw->tag1 != MEMTAG1 || forw->tag2 != MEMTAG2) break;
|
||||
forwok = forw;
|
||||
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;
|
||||
if (back) back = MEMNEXT(back);
|
||||
backok = 0;
|
||||
backok = NULL;
|
||||
while(back){
|
||||
if (back == memh) break;
|
||||
if (back->tag1 != MEMTAG1 || back->tag2 != MEMTAG2) break;
|
||||
backok = back;
|
||||
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;
|
||||
forwok->nextname = backok->name;
|
||||
} else{
|
||||
forwok->next = 0;
|
||||
forwok->next = NULL;
|
||||
membase->last = (struct localLink *) &forwok->next;
|
||||
/* membase->last = (struct Link *) &forwok->next; */
|
||||
}
|
||||
} else{
|
||||
if (backok){
|
||||
backok->prev = 0;
|
||||
backok->prev = NULL;
|
||||
membase->first = &backok->next;
|
||||
} else{
|
||||
membase->first = membase->last = 0;
|
||||
membase->first = membase->last = NULL;
|
||||
}
|
||||
}
|
||||
} 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):
|
||||
layout = self.layout
|
||||
|
||||
scene = context.scene
|
||||
netsettings = scene.network_render
|
||||
netsettings = context.scene.network_render
|
||||
|
||||
verify_address(netsettings)
|
||||
|
||||
@@ -157,18 +156,18 @@ class RENDER_PT_network_slave_settings(NetRenderButtonsPanel, bpy.types.Panel):
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
scene = context.scene
|
||||
rd = scene.render
|
||||
netsettings = scene.network_render
|
||||
rd = context.scene.render
|
||||
netsettings = context.scene.network_render
|
||||
|
||||
layout.prop(netsettings, "use_slave_clear")
|
||||
layout.prop(netsettings, "use_slave_thumb")
|
||||
layout.prop(netsettings, "use_slave_output_log")
|
||||
layout.label(text="Threads:")
|
||||
layout.prop(rd, "threads_mode", expand=True)
|
||||
sub = layout.column()
|
||||
sub.enabled = rd.threads_mode == 'FIXED'
|
||||
sub.prop(rd, "threads")
|
||||
|
||||
col = layout.column()
|
||||
col.enabled = rd.threads_mode == 'FIXED'
|
||||
col.prop(rd, "threads")
|
||||
|
||||
class RENDER_PT_network_master_settings(NetRenderButtonsPanel, bpy.types.Panel):
|
||||
bl_label = "Master Settings"
|
||||
@@ -182,8 +181,7 @@ class RENDER_PT_network_master_settings(NetRenderButtonsPanel, bpy.types.Panel):
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
scene = context.scene
|
||||
netsettings = scene.network_render
|
||||
netsettings = context.scene.network_render
|
||||
|
||||
layout.prop(netsettings, "use_master_broadcast")
|
||||
layout.prop(netsettings, "use_master_clear")
|
||||
@@ -200,8 +198,7 @@ class RENDER_PT_network_job(NetRenderButtonsPanel, bpy.types.Panel):
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
scene = context.scene
|
||||
netsettings = scene.network_render
|
||||
netsettings = context.scene.network_render
|
||||
|
||||
verify_address(netsettings)
|
||||
|
||||
@@ -244,8 +241,7 @@ class RENDER_PT_network_job_vcs(NetRenderButtonsPanel, bpy.types.Panel):
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
scene = context.scene
|
||||
netsettings = scene.network_render
|
||||
netsettings = context.scene.network_render
|
||||
|
||||
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):
|
||||
layout = self.layout
|
||||
|
||||
scene = context.scene
|
||||
netsettings = scene.network_render
|
||||
netsettings = context.scene.network_render
|
||||
|
||||
row = layout.row()
|
||||
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):
|
||||
layout = self.layout
|
||||
|
||||
scene = context.scene
|
||||
netsettings = scene.network_render
|
||||
netsettings = context.scene.network_render
|
||||
|
||||
row = layout.row()
|
||||
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):
|
||||
layout = self.layout
|
||||
|
||||
scene = context.scene
|
||||
netsettings = scene.network_render
|
||||
netsettings = context.scene.network_render
|
||||
|
||||
row = layout.row()
|
||||
row.template_list(netsettings, "jobs", netsettings, "active_job_index", rows=2)
|
||||
|
@@ -26,7 +26,7 @@ to work correctly.
|
||||
"""
|
||||
|
||||
import bpy
|
||||
from keyingsets_utils import *
|
||||
import keyingsets_utils
|
||||
|
||||
###############################
|
||||
# Built-In KeyingSets
|
||||
@@ -37,13 +37,13 @@ class BUILTIN_KSI_Location(bpy.types.KeyingSetInfo):
|
||||
bl_label = "Location"
|
||||
|
||||
# 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 = RKS_ITER_selected_item
|
||||
iterator = keyingsets_utils.RKS_ITER_selected_item
|
||||
|
||||
# generator - use callback for location
|
||||
generate = RKS_GEN_location
|
||||
generate = keyingsets_utils.RKS_GEN_location
|
||||
|
||||
|
||||
# Rotation
|
||||
@@ -51,13 +51,13 @@ class BUILTIN_KSI_Rotation(bpy.types.KeyingSetInfo):
|
||||
bl_label = "Rotation"
|
||||
|
||||
# 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 = RKS_ITER_selected_item
|
||||
iterator = keyingsets_utils.RKS_ITER_selected_item
|
||||
|
||||
# generator - use callback for location
|
||||
generate = RKS_GEN_rotation
|
||||
generate = keyingsets_utils.RKS_GEN_rotation
|
||||
|
||||
|
||||
# Scale
|
||||
@@ -65,13 +65,13 @@ class BUILTIN_KSI_Scaling(bpy.types.KeyingSetInfo):
|
||||
bl_label = "Scaling"
|
||||
|
||||
# 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 = RKS_ITER_selected_item
|
||||
iterator = keyingsets_utils.RKS_ITER_selected_item
|
||||
|
||||
# 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"
|
||||
|
||||
# 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 = RKS_ITER_selected_item
|
||||
iterator = keyingsets_utils.RKS_ITER_selected_item
|
||||
|
||||
# generator
|
||||
def generate(self, context, ks, data):
|
||||
# location
|
||||
RKS_GEN_location(self, context, ks, data)
|
||||
keyingsets_utils.RKS_GEN_location(self, context, ks, data)
|
||||
# rotation
|
||||
RKS_GEN_rotation(self, context, ks, data)
|
||||
keyingsets_utils.RKS_GEN_rotation(self, context, ks, data)
|
||||
|
||||
|
||||
# LocScale
|
||||
@@ -99,17 +99,17 @@ class BUILTIN_KSI_LocScale(bpy.types.KeyingSetInfo):
|
||||
bl_label = "LocScale"
|
||||
|
||||
# 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 = RKS_ITER_selected_item
|
||||
iterator = keyingsets_utils.RKS_ITER_selected_item
|
||||
|
||||
# generator
|
||||
def generate(self, context, ks, data):
|
||||
# location
|
||||
RKS_GEN_location(self, context, ks, data)
|
||||
keyingsets_utils.RKS_GEN_location(self, context, ks, data)
|
||||
# scale
|
||||
RKS_GEN_scaling(self, context, ks, data)
|
||||
keyingsets_utils.RKS_GEN_scaling(self, context, ks, data)
|
||||
|
||||
|
||||
# LocRotScale
|
||||
@@ -117,19 +117,19 @@ class BUILTIN_KSI_LocRotScale(bpy.types.KeyingSetInfo):
|
||||
bl_label = "LocRotScale"
|
||||
|
||||
# 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 = RKS_ITER_selected_item
|
||||
iterator = keyingsets_utils.RKS_ITER_selected_item
|
||||
|
||||
# generator
|
||||
def generate(self, context, ks, data):
|
||||
# location
|
||||
RKS_GEN_location(self, context, ks, data)
|
||||
keyingsets_utils.RKS_GEN_location(self, context, ks, data)
|
||||
# rotation
|
||||
RKS_GEN_rotation(self, context, ks, data)
|
||||
keyingsets_utils.RKS_GEN_rotation(self, context, ks, data)
|
||||
# scale
|
||||
RKS_GEN_scaling(self, context, ks, data)
|
||||
keyingsets_utils.RKS_GEN_scaling(self, context, ks, data)
|
||||
|
||||
|
||||
# RotScale
|
||||
@@ -137,17 +137,17 @@ class BUILTIN_KSI_RotScale(bpy.types.KeyingSetInfo):
|
||||
bl_label = "RotScale"
|
||||
|
||||
# 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 = RKS_ITER_selected_item
|
||||
iterator = keyingsets_utils.RKS_ITER_selected_item
|
||||
|
||||
# generator
|
||||
def generate(self, context, ks, data):
|
||||
# rotation
|
||||
RKS_GEN_rotation(self, context, ks, data)
|
||||
keyingsets_utils.RKS_GEN_rotation(self, context, ks, data)
|
||||
# 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'}
|
||||
|
||||
# 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 = RKS_ITER_selected_item
|
||||
iterator = keyingsets_utils.RKS_ITER_selected_item
|
||||
|
||||
# generator - use callback for location
|
||||
generate = RKS_GEN_location
|
||||
generate = keyingsets_utils.RKS_GEN_location
|
||||
|
||||
|
||||
# Rotation
|
||||
@@ -175,13 +175,13 @@ class BUILTIN_KSI_VisualRot(bpy.types.KeyingSetInfo):
|
||||
bl_options = {'INSERTKEY_VISUAL'}
|
||||
|
||||
# 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 = RKS_ITER_selected_item
|
||||
iterator = keyingsets_utils.RKS_ITER_selected_item
|
||||
|
||||
# generator - use callback for rotation
|
||||
generate = RKS_GEN_rotation
|
||||
generate = keyingsets_utils.RKS_GEN_rotation
|
||||
|
||||
|
||||
# VisualLocRot
|
||||
@@ -191,17 +191,17 @@ class BUILTIN_KSI_VisualLocRot(bpy.types.KeyingSetInfo):
|
||||
bl_options = {'INSERTKEY_VISUAL'}
|
||||
|
||||
# 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 = RKS_ITER_selected_item
|
||||
iterator = keyingsets_utils.RKS_ITER_selected_item
|
||||
|
||||
# generator
|
||||
def generate(self, context, ks, data):
|
||||
# location
|
||||
RKS_GEN_location(self, context, ks, data)
|
||||
keyingsets_utils.RKS_GEN_location(self, context, ks, data)
|
||||
# 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
|
||||
# TODO: this should really check whether the selected object (or datablock)
|
||||
# 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 = RKS_ITER_selected_item
|
||||
iterator = keyingsets_utils.RKS_ITER_selected_item
|
||||
|
||||
# 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
|
||||
else:
|
||||
# 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...
|
||||
if use_groups:
|
||||
@@ -363,5 +363,3 @@ def unregister():
|
||||
|
||||
if __name__ == "__main__":
|
||||
register()
|
||||
|
||||
###############################
|
||||
|
@@ -37,18 +37,6 @@ import sys as _sys
|
||||
|
||||
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
|
||||
from os.path import join, dirname, normpath
|
||||
_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.
|
||||
"""
|
||||
|
||||
from _bpy import register_class
|
||||
from _bpy import unregister_class
|
||||
|
||||
from _bpy import blend_paths
|
||||
from _bpy import register_class, unregister_class, blend_paths
|
||||
from _bpy import script_paths as _bpy_script_paths
|
||||
from _bpy import user_resource as _user_resource
|
||||
|
||||
@@ -38,22 +35,26 @@ import addon_utils
|
||||
|
||||
|
||||
def _test_import(module_name, loaded_modules):
|
||||
import traceback
|
||||
import time
|
||||
use_time = _bpy.app.debug
|
||||
|
||||
if module_name in loaded_modules:
|
||||
return None
|
||||
if "." in module_name:
|
||||
print("Ignoring '%s', can't import files containing multiple periods." % module_name)
|
||||
return None
|
||||
|
||||
t = time.time()
|
||||
if use_time:
|
||||
import time
|
||||
t = time.time()
|
||||
|
||||
try:
|
||||
mod = __import__(module_name)
|
||||
except:
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
return None
|
||||
|
||||
if _bpy.app.debug:
|
||||
if use_time:
|
||||
print("time %s %.4f" % (module_name, time.time() - t))
|
||||
|
||||
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.
|
||||
:type refresh_scripts: bool
|
||||
"""
|
||||
import traceback
|
||||
import time
|
||||
use_time = _bpy.app.debug
|
||||
|
||||
t_main = time.time()
|
||||
if use_time:
|
||||
import time
|
||||
t_main = time.time()
|
||||
|
||||
loaded_modules = set()
|
||||
|
||||
@@ -124,6 +126,7 @@ def load_scripts(reload_scripts=False, refresh_scripts=False):
|
||||
try:
|
||||
register()
|
||||
except:
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
else:
|
||||
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:
|
||||
unregister()
|
||||
except:
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
|
||||
def test_reload(mod):
|
||||
@@ -147,6 +151,7 @@ def load_scripts(reload_scripts=False, refresh_scripts=False):
|
||||
try:
|
||||
return imp.reload(mod)
|
||||
except:
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
|
||||
def test_register(mod):
|
||||
@@ -207,7 +212,7 @@ def load_scripts(reload_scripts=False, refresh_scripts=False):
|
||||
import gc
|
||||
print("gc.collect() -> %d" % gc.collect())
|
||||
|
||||
if _bpy.app.debug:
|
||||
if use_time:
|
||||
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, ())
|
||||
i = 0
|
||||
while i < len(typemap_list):
|
||||
cls_weakref, path, line = typemap_list[i]
|
||||
cls_weakref = typemap_list[i]
|
||||
cls = cls_weakref()
|
||||
|
||||
if cls is None:
|
||||
del typemap_list[i]
|
||||
else:
|
||||
if is_registered == cls.is_registered:
|
||||
yield (cls, path, line)
|
||||
yield cls
|
||||
i += 1
|
||||
|
||||
|
||||
def register_module(module, verbose=False):
|
||||
import traceback
|
||||
if verbose:
|
||||
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:
|
||||
print(" %s of %s:%s" % (cls, path, line))
|
||||
print(" %r" % cls)
|
||||
try:
|
||||
register_class(cls)
|
||||
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)
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
if verbose:
|
||||
print("done.\n")
|
||||
@@ -443,17 +448,17 @@ def register_module(module, verbose=False):
|
||||
|
||||
|
||||
def unregister_module(module, verbose=False):
|
||||
import traceback
|
||||
if verbose:
|
||||
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:
|
||||
print(" %s of %s:%s" % (cls, path, line))
|
||||
print(" %r" % cls)
|
||||
try:
|
||||
unregister_class(cls)
|
||||
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)
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
if verbose:
|
||||
print("done.\n")
|
||||
|
@@ -567,18 +567,15 @@ TypeMap = {}
|
||||
class RNAMeta(type):
|
||||
def __new__(cls, name, bases, classdict, **args):
|
||||
result = type.__new__(cls, name, bases, classdict)
|
||||
if bases and bases[0] != StructRNA:
|
||||
import traceback
|
||||
import weakref
|
||||
if bases and bases[0] is not StructRNA:
|
||||
from _weakref import ref as ref
|
||||
module = result.__module__
|
||||
|
||||
# first part of packages only
|
||||
if "." in module:
|
||||
module = module[:module.index(".")]
|
||||
|
||||
sf = traceback.extract_stack(limit=2)[0]
|
||||
|
||||
TypeMap.setdefault(module, []).append((weakref.ref(result), sf[0], sf[1]))
|
||||
TypeMap.setdefault(module, []).append(ref(result))
|
||||
|
||||
return result
|
||||
|
||||
@@ -586,7 +583,20 @@ class RNAMeta(type):
|
||||
def is_registered(cls):
|
||||
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):
|
||||
@@ -594,13 +604,8 @@ class RNAMetaPropGroup(RNAMeta, StructMetaPropGroup):
|
||||
|
||||
|
||||
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):
|
||||
return collections.OrderedDict()
|
||||
return OrderedDictMini() # collections.OrderedDict()
|
||||
|
||||
|
||||
# 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
|
||||
try:
|
||||
return bpy.data.images.load(filepath)
|
||||
except SystemError:
|
||||
except RuntimeError:
|
||||
return bpy.data.images.new("Untitled", 128, 128)
|
||||
|
@@ -19,7 +19,7 @@
|
||||
# <pep8 compliant>
|
||||
|
||||
import bpy
|
||||
from bpy.props import *
|
||||
from bpy.props import StringProperty, BoolProperty
|
||||
|
||||
|
||||
class ExportHelper:
|
||||
|
@@ -19,10 +19,11 @@
|
||||
# <pep8 compliant>
|
||||
import bpy
|
||||
import mathutils
|
||||
from math import cos, sin, pi
|
||||
|
||||
|
||||
def add_torus(major_rad, minor_rad, major_seg, minor_seg):
|
||||
from math import cos, sin, pi
|
||||
|
||||
Vector = mathutils.Vector
|
||||
Quaternion = mathutils.Quaternion
|
||||
|
||||
@@ -71,7 +72,7 @@ def add_torus(major_rad, minor_rad, major_seg, minor_seg):
|
||||
|
||||
return verts, faces
|
||||
|
||||
from bpy.props import *
|
||||
from bpy.props import FloatProperty, IntProperty, BoolProperty, FloatVectorProperty
|
||||
|
||||
|
||||
class AddTorus(bpy.types.Operator):
|
||||
|
@@ -33,6 +33,20 @@ def add_scrollback(text, 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):
|
||||
'''
|
||||
helper function for console operators
|
||||
@@ -83,6 +97,8 @@ def get_console(console_id):
|
||||
namespace["bpy"] = bpy
|
||||
namespace["C"] = bpy.context
|
||||
|
||||
replace_help(namespace)
|
||||
|
||||
console = InteractiveConsole(locals=namespace, filename="<blender_console>")
|
||||
|
||||
console.push("from mathutils import *")
|
||||
|
@@ -18,18 +18,17 @@
|
||||
|
||||
# <pep8 compliant>
|
||||
|
||||
from math import *
|
||||
import bpy
|
||||
from mathutils import *
|
||||
|
||||
|
||||
def main(context):
|
||||
from math import pi
|
||||
|
||||
def cleanupEulCurve(fcv):
|
||||
keys = []
|
||||
|
||||
for k in fcv.keyframe_points:
|
||||
keys.append([k.handle_left.copy(), k.co.copy(), k.handle_right.copy()])
|
||||
print(keys)
|
||||
|
||||
for i in range(len(keys)):
|
||||
cur = keys[i]
|
||||
|
@@ -98,7 +98,7 @@ def bake(frame_start, frame_end, step=1, only_selected=False):
|
||||
pose_items = pose.bones.items()
|
||||
|
||||
for name, pbone in pose_items:
|
||||
if only_selected and not pbone.select:
|
||||
if only_selected and not pbone.bone.select:
|
||||
continue
|
||||
|
||||
for f in frame_range:
|
||||
@@ -124,7 +124,7 @@ def bake(frame_start, frame_end, step=1, only_selected=False):
|
||||
return action
|
||||
|
||||
|
||||
from bpy.props import *
|
||||
from bpy.props import IntProperty, BoolProperty
|
||||
|
||||
|
||||
class BakeAction(bpy.types.Operator):
|
||||
|
@@ -19,7 +19,7 @@
|
||||
# <pep8 compliant>
|
||||
|
||||
import bpy
|
||||
from bpy.props import *
|
||||
from bpy.props import StringProperty, BoolProperty, EnumProperty, IntProperty
|
||||
|
||||
|
||||
class SelectPattern(bpy.types.Operator):
|
||||
|
@@ -230,7 +230,7 @@ def align_objects(align_x, align_y, align_z, align_mode, relative_to):
|
||||
return True
|
||||
|
||||
|
||||
from bpy.props import *
|
||||
from bpy.props import EnumProperty
|
||||
|
||||
|
||||
class AlignObjects(bpy.types.Operator):
|
||||
@@ -239,7 +239,7 @@ class AlignObjects(bpy.types.Operator):
|
||||
bl_label = "Align Objects"
|
||||
bl_options = {'REGISTER', 'UNDO'}
|
||||
|
||||
align_mode = bpy.props.EnumProperty(items=(
|
||||
align_mode = EnumProperty(items=(
|
||||
('OPT_1', "Negative Sides", ""),
|
||||
('OPT_2', "Centers", ""),
|
||||
('OPT_3', "Positive Sides", "")),
|
||||
@@ -247,7 +247,7 @@ class AlignObjects(bpy.types.Operator):
|
||||
description="",
|
||||
default='OPT_2')
|
||||
|
||||
relative_to = bpy.props.EnumProperty(items=(
|
||||
relative_to = EnumProperty(items=(
|
||||
('OPT_1', "Scene Origin", ""),
|
||||
('OPT_2', "3D Cursor", ""),
|
||||
('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)
|
||||
|
||||
|
||||
from bpy.props import *
|
||||
from bpy.props import IntProperty, BoolProperty, FloatProperty, FloatVectorProperty
|
||||
|
||||
|
||||
class RandomizeLocRotSize(bpy.types.Operator):
|
||||
|
@@ -20,7 +20,7 @@
|
||||
|
||||
import bpy
|
||||
|
||||
from bpy.props import *
|
||||
from bpy.props import IntProperty
|
||||
|
||||
|
||||
class SequencerCrossfadeSounds(bpy.types.Operator):
|
||||
|
@@ -19,10 +19,9 @@
|
||||
# <pep8 compliant>
|
||||
|
||||
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
|
||||
from xml.sax.saxutils import escape
|
||||
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)
|
||||
|
||||
faces = mesh.faces
|
||||
for i, uvs in face_iter:
|
||||
for i, uvs in face_iter_func():
|
||||
try: # rare cases material index is invalid.
|
||||
fill = fill_settings[faces[i].material_index]
|
||||
except IndexError:
|
||||
fill = fill_default
|
||||
|
||||
fw('<polygon %s fill-opacity="0.5" stroke="black" stroke-width="1px" \n' % fill)
|
||||
fw(' points="')
|
||||
fw('<polygon stroke="black" stroke-width="1px"')
|
||||
if opacity > 0.0:
|
||||
fw(' %s fill-opacity="%.2g"' % (fill, opacity))
|
||||
|
||||
fw(' points="')
|
||||
|
||||
for j, uv in enumerate(uvs):
|
||||
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')
|
||||
|
||||
|
||||
def write_eps(fw, mesh, image_width, image_height, face_iter):
|
||||
fw('%!PS-Adobe-3.0 EPSF-3.0\n')
|
||||
def write_eps(fw, mesh, image_width, image_height, opacity, face_iter_func):
|
||||
fw("%!PS-Adobe-3.0 EPSF-3.0\n")
|
||||
fw("%%%%Creator: Blender %s\n" % bpy.app.version_string)
|
||||
fw('%%Pages: 1\n')
|
||||
fw('%%Orientation: Portrait\n')
|
||||
fw("%%Pages: 1\n")
|
||||
fw("%%Orientation: Portrait\n")
|
||||
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('%%EndComments\n')
|
||||
fw('%%Page: 1 1\n')
|
||||
fw('0 0 translate\n')
|
||||
fw('1.0 1.0 scale\n')
|
||||
fw('0 0 0 setrgbcolor\n')
|
||||
fw('[] 0 setdash\n')
|
||||
fw('1 setlinewidth\n')
|
||||
fw('1 setlinejoin\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')
|
||||
fw("%%EndComments\n")
|
||||
fw("%%Page: 1 1\n")
|
||||
fw("0 0 translate\n")
|
||||
fw("1.0 1.0 scale\n")
|
||||
fw("0 0 0 setrgbcolor\n")
|
||||
fw("[] 0 setdash\n")
|
||||
fw("1 setlinewidth\n")
|
||||
fw("1 setlinejoin\n")
|
||||
fw("1 setlinecap\n")
|
||||
|
||||
firstline = True
|
||||
for i, uvs in face_iter:
|
||||
for j, uv in enumerate(uvs):
|
||||
x, y = uv[0], uv[1]
|
||||
if j == 0:
|
||||
if not firstline:
|
||||
fw('closepath\n')
|
||||
fw('DRAW\n')
|
||||
fw('newpath\n')
|
||||
firstline = False
|
||||
fw('%.5f %.5f moveto\n' % (x * image_width, y * image_height))
|
||||
faces = mesh.faces
|
||||
|
||||
if opacity > 0.0:
|
||||
for i, mat in enumerate(mesh.materials if mesh.materials else [None]):
|
||||
fw("/DRAW_%d {" % i)
|
||||
fw("gsave\n")
|
||||
if mat:
|
||||
color = tuple((1.0 - ((1.0 - c) * opacity)) for c in mat.diffuse_color)
|
||||
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')
|
||||
fw('DRAW\n')
|
||||
fw('showpage\n')
|
||||
fw('%%EOF\n')
|
||||
# fill
|
||||
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("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
|
||||
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.
|
||||
face_hash_3 = 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
|
||||
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))
|
||||
@@ -196,7 +213,7 @@ def write_png(fw, mesh_source, image_width, image_height, face_iter):
|
||||
|
||||
mat_solid.use_shadeless = True
|
||||
mat_solid.use_transparency = True
|
||||
mat_solid.alpha = 0.25
|
||||
mat_solid.alpha = opacity
|
||||
|
||||
material_wire.type = 'WIRE'
|
||||
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)
|
||||
|
||||
|
||||
from bpy.props import StringProperty, BoolProperty, EnumProperty, IntVectorProperty, FloatProperty
|
||||
|
||||
|
||||
class ExportUVLayout(bpy.types.Operator):
|
||||
"""Export UV layout to file"""
|
||||
|
||||
@@ -257,6 +277,7 @@ class ExportUVLayout(bpy.types.Operator):
|
||||
description="File format to export the UV layout to",
|
||||
default='PNG')
|
||||
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
|
||||
def poll(cls, context):
|
||||
@@ -340,11 +361,13 @@ class ExportUVLayout(bpy.types.Operator):
|
||||
elif mode == '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:
|
||||
bpy.ops.object.mode_set(mode='EDIT', toggle=False)
|
||||
|
||||
file.close()
|
||||
|
||||
return {'FINISHED'}
|
||||
|
||||
def check(self, context):
|
||||
|
@@ -23,9 +23,7 @@
|
||||
# <pep8 compliant>
|
||||
|
||||
from mathutils import Matrix, Vector, geometry
|
||||
import time
|
||||
import bpy
|
||||
from math import cos, radians
|
||||
|
||||
DEG_TO_RAD = 0.017453292519943295 # pi/180.0
|
||||
SMALL_NUM = 0.000000001
|
||||
@@ -36,14 +34,10 @@ global USER_FILL_HOLES_QUALITY
|
||||
USER_FILL_HOLES = None
|
||||
USER_FILL_HOLES_QUALITY = None
|
||||
|
||||
dict_matrix = {}
|
||||
|
||||
def pointInTri2D(v, v1, v2, v3):
|
||||
global dict_matrix
|
||||
|
||||
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
|
||||
xmin= 1000000
|
||||
@@ -268,21 +262,6 @@ def testNewVecLs2DRotIsBetter(vecs, mat=-1, bestAreaSoFar = -1):
|
||||
h = maxy-miny
|
||||
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):
|
||||
global currentArea
|
||||
|
||||
@@ -464,7 +443,7 @@ def mergeUvIslands(islandList):
|
||||
|
||||
|
||||
# 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\
|
||||
targetIsland[4] > sourceIsland[4] and\
|
||||
targetIsland[5] > sourceIsland[5]:
|
||||
@@ -734,7 +713,7 @@ def packIslands(islandList):
|
||||
#print '\tPacking UV Islands...'
|
||||
#XXX Window.DrawProgressBar(0.7, 'Packing %i UV Islands...' % len(packBoxes) )
|
||||
|
||||
time1 = time.time()
|
||||
# time1 = time.time()
|
||||
packWidth, packHeight = geometry.box_pack_2d(packBoxes)
|
||||
|
||||
# print 'Box Packing Time:', time.time() - time1
|
||||
@@ -793,6 +772,27 @@ class thickface(object):
|
||||
self.area = face.area
|
||||
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
|
||||
ob = None
|
||||
def main(context, island_margin, projection_limit):
|
||||
@@ -800,6 +800,21 @@ def main(context, island_margin, projection_limit):
|
||||
global USER_FILL_HOLES_QUALITY
|
||||
global USER_STRETCH_ASPECT
|
||||
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
|
||||
objects = context.selected_editable_objects
|
||||
@@ -868,7 +883,7 @@ def main(context, island_margin, projection_limit):
|
||||
|
||||
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
|
||||
for me in bpy.data.meshes:
|
||||
me.tag = False
|
||||
@@ -1074,6 +1089,8 @@ def main(context, island_margin, projection_limit):
|
||||
if is_editmode:
|
||||
bpy.ops.object.mode_set(mode='EDIT')
|
||||
|
||||
dict_matrix.clear()
|
||||
|
||||
#XXX Window.DrawProgressBar(1.0, "")
|
||||
#XXX Window.WaitCursor(0)
|
||||
#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):
|
||||
|
@@ -30,16 +30,9 @@
|
||||
# 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):
|
||||
## Window.WaitCursor(1)
|
||||
from mathutils import Vector
|
||||
from math import acos
|
||||
|
||||
#BPyMesh.meshCalcNormals(me)
|
||||
|
||||
@@ -76,7 +69,7 @@ def applyVertexDirt(me, blur_iterations, blur_strength, clamp_dirt, clamp_clean,
|
||||
vec /= tot_con
|
||||
|
||||
# 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
|
||||
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[2] = tone * col[2]
|
||||
|
||||
## Window.WaitCursor(0)
|
||||
|
||||
import bpy
|
||||
from bpy.props import FloatProperty, IntProperty, BoolProperty
|
||||
|
||||
|
||||
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)
|
||||
|
||||
def execute(self, context):
|
||||
import time
|
||||
from math import radians
|
||||
obj = context.object
|
||||
|
||||
if not obj or obj.type != 'MESH':
|
||||
@@ -172,7 +169,7 @@ class VertexPaintDirt(bpy.types.Operator):
|
||||
|
||||
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))
|
||||
|
||||
|
@@ -19,11 +19,9 @@
|
||||
# <pep8 compliant>
|
||||
|
||||
import bpy
|
||||
|
||||
from bpy.props import *
|
||||
from bpy.props import StringProperty, BoolProperty, IntProperty, FloatProperty
|
||||
from rna_prop_ui import rna_idprop_ui_prop_get, rna_idprop_ui_prop_clear
|
||||
|
||||
|
||||
class MESH_OT_delete_edgeloop(bpy.types.Operator):
|
||||
'''Delete an edge loop by merging the faces on each side to a single face loop'''
|
||||
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)
|
||||
|
||||
|
||||
from bpy.props import *
|
||||
|
||||
|
||||
rna_path = StringProperty(name="Property Edit",
|
||||
description="Property data_path edit", maxlen=1024, default="", options={'HIDDEN'})
|
||||
|
||||
|
@@ -1,5 +1,4 @@
|
||||
import bpy
|
||||
from keyingsets_utils import *
|
||||
|
||||
|
||||
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
|
||||
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()
|
||||
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
|
||||
# invoke() function which calls the file selector.
|
||||
from io_utils import ExportHelper
|
||||
|
||||
from bpy.props import *
|
||||
from bpy.props import StringProperty, BoolProperty, EnumProperty
|
||||
|
||||
|
||||
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.
|
||||
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",
|
||||
description="Choose between two items",
|
||||
default='OPT_A')
|
||||
|
@@ -34,7 +34,7 @@ def add_box(width, height, depth):
|
||||
return vertices, faces
|
||||
|
||||
|
||||
from bpy.props import *
|
||||
from bpy.props import FloatProperty, BoolProperty, FloatVectorProperty
|
||||
|
||||
|
||||
class AddBox(bpy.types.Operator):
|
||||
|
@@ -1,5 +1,5 @@
|
||||
import bpy
|
||||
from bpy.props import *
|
||||
from bpy.props import IntProperty, FloatProperty
|
||||
|
||||
|
||||
class ModalOperator(bpy.types.Operator):
|
||||
|
@@ -58,24 +58,17 @@ class DATA_PT_skeleton(ArmatureButtonsPanel, bpy.types.Panel):
|
||||
|
||||
layout.prop(arm, "pose_position", expand=True)
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col = layout.column()
|
||||
col.label(text="Layers:")
|
||||
col.prop(arm, "layers", text="")
|
||||
col.label(text="Protected Layers:")
|
||||
col.prop(arm, "layers_protected", text="")
|
||||
|
||||
col.label(text="Deform:")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
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")
|
||||
layout.label(text="Deform:")
|
||||
flow = layout.column_flow()
|
||||
flow.prop(arm, "use_deform_vertex_groups", text="Vertex Groups")
|
||||
flow.prop(arm, "use_deform_envelopes", text="Envelopes")
|
||||
flow.prop(arm, "use_deform_preserve_volume", text="Quaternion")
|
||||
|
||||
|
||||
class DATA_PT_display(ArmatureButtonsPanel, bpy.types.Panel):
|
||||
@@ -87,7 +80,7 @@ class DATA_PT_display(ArmatureButtonsPanel, bpy.types.Panel):
|
||||
ob = context.object
|
||||
arm = context.armature
|
||||
|
||||
layout.row().prop(arm, "draw_type", expand=True)
|
||||
layout.prop(arm, "draw_type", expand=True)
|
||||
|
||||
split = layout.split()
|
||||
|
||||
@@ -137,10 +130,10 @@ class DATA_PT_bone_groups(ArmatureButtonsPanel, bpy.types.Panel):
|
||||
col.prop(group, "color_set")
|
||||
if group.color_set:
|
||||
col = split.column()
|
||||
subrow = col.row(align=True)
|
||||
subrow.prop(group.colors, "normal", text="")
|
||||
subrow.prop(group.colors, "select", text="")
|
||||
subrow.prop(group.colors, "active", text="")
|
||||
sub = col.row(align=True)
|
||||
sub.prop(group.colors, "normal", text="")
|
||||
sub.prop(group.colors, "select", text="")
|
||||
sub.prop(group.colors, "active", text="")
|
||||
|
||||
row = layout.row()
|
||||
row.active = (ob.proxy is None)
|
||||
@@ -168,8 +161,7 @@ class DATA_PT_pose_library(ArmatureButtonsPanel, bpy.types.Panel):
|
||||
ob = context.object
|
||||
poselib = ob.pose_library
|
||||
|
||||
row = layout.row()
|
||||
row.template_ID(ob, "pose_library", new="poselib.new", unlink="poselib.unlink")
|
||||
layout.template_ID(ob, "pose_library", new="poselib.new", unlink="poselib.unlink")
|
||||
|
||||
if poselib:
|
||||
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.apply_pose", icon='ZOOM_SELECTED', text="").pose_index = poselib.pose_markers.active_index
|
||||
|
||||
row = layout.row()
|
||||
row.operator("poselib.action_sanitise")
|
||||
layout.operator("poselib.action_sanitise")
|
||||
|
||||
|
||||
# TODO: this panel will soon be depreceated too
|
||||
@@ -207,16 +198,15 @@ class DATA_PT_ghost(ArmatureButtonsPanel, bpy.types.Panel):
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col = split.column(align=True)
|
||||
|
||||
sub = col.column(align=True)
|
||||
if arm.ghost_type == 'RANGE':
|
||||
sub.prop(arm, "ghost_frame_start", text="Start")
|
||||
sub.prop(arm, "ghost_frame_end", text="End")
|
||||
sub.prop(arm, "ghost_size", text="Step")
|
||||
col.prop(arm, "ghost_frame_start", text="Start")
|
||||
col.prop(arm, "ghost_frame_end", text="End")
|
||||
col.prop(arm, "ghost_size", text="Step")
|
||||
elif arm.ghost_type == 'CURRENT_FRAME':
|
||||
sub.prop(arm, "ghost_step", text="Range")
|
||||
sub.prop(arm, "ghost_size", text="Step")
|
||||
col.prop(arm, "ghost_step", text="Range")
|
||||
col.prop(arm, "ghost_size", text="Step")
|
||||
|
||||
col = split.column()
|
||||
col.label(text="Display:")
|
||||
@@ -236,11 +226,9 @@ class DATA_PT_iksolver_itasc(ArmatureButtonsPanel, bpy.types.Panel):
|
||||
layout = self.layout
|
||||
|
||||
ob = context.object
|
||||
|
||||
itasc = ob.pose.ik_param
|
||||
|
||||
row = layout.row()
|
||||
row.prop(ob.pose, "ik_solver")
|
||||
layout.prop(ob.pose, "ik_solver")
|
||||
|
||||
if itasc:
|
||||
layout.prop(itasc, "mode", expand=True)
|
||||
@@ -249,13 +237,10 @@ class DATA_PT_iksolver_itasc(ArmatureButtonsPanel, bpy.types.Panel):
|
||||
layout.label(text="Reiteration:")
|
||||
layout.prop(itasc, "reiteration_method", expand=True)
|
||||
|
||||
split = layout.split()
|
||||
split.active = not simulation or itasc.reiteration_method != 'NEVER'
|
||||
col = split.column()
|
||||
col.prop(itasc, "precision")
|
||||
|
||||
col = split.column()
|
||||
col.prop(itasc, "iterations")
|
||||
row = layout.row()
|
||||
row.active = not simulation or itasc.reiteration_method != 'NEVER'
|
||||
row.prop(itasc, "precision")
|
||||
row.prop(itasc, "iterations")
|
||||
|
||||
if simulation:
|
||||
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_outer", text="Outer")
|
||||
col.prop(md, "edge_crease_rim", text="Rim")
|
||||
col.label(text="Material Index Offset:")
|
||||
|
||||
col = split.column()
|
||||
|
||||
@@ -586,8 +587,13 @@ class DATA_PT_modifiers(ModifierButtonsPanel, bpy.types.Panel):
|
||||
|
||||
col.prop(md, "use_rim")
|
||||
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.prop(md, "use_rim_material")
|
||||
colsub.prop(md, "material_offset_rim", text="Rim")
|
||||
|
||||
def SUBSURF(self, layout, ob, md):
|
||||
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 = 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_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_physics_visualization", text="Physics Visualization")
|
||||
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):
|
||||
|
@@ -619,16 +619,21 @@ class MATERIAL_PT_physics(MaterialButtonsPanel, bpy.types.Panel):
|
||||
phys = context.material.physics # dont use node material
|
||||
|
||||
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()
|
||||
col.prop(phys, "force", slider=True)
|
||||
col.prop(phys, "elasticity", slider=True)
|
||||
col.prop(phys, "damping", slider=True)
|
||||
row = layout.row()
|
||||
row.label(text="Force Field:")
|
||||
|
||||
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):
|
||||
|
@@ -502,8 +502,8 @@ class ConstraintButtonsPanel():
|
||||
layout.prop(con, "offset")
|
||||
|
||||
row = layout.row()
|
||||
#row.label(text="Min/Max:")
|
||||
row.prop(con, "floor_location", expand=True, text="Min/Max:")
|
||||
row.label(text="Min/Max:")
|
||||
row.prop(con, "floor_location", expand=True)
|
||||
|
||||
self.space_template(layout, con)
|
||||
|
||||
@@ -535,32 +535,86 @@ class ConstraintButtonsPanel():
|
||||
layout.label(text="Limits:")
|
||||
split = layout.split()
|
||||
|
||||
col = split.column(align=True)
|
||||
col.prop(con, "use_angular_limit_x", text="Angular X")
|
||||
col.prop(con, "use_angular_limit_y", text="Angular Y")
|
||||
col.prop(con, "use_angular_limit_z", text="Angular Z")
|
||||
col = split.column()
|
||||
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_max_x", text="")
|
||||
|
||||
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.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':
|
||||
layout.label(text="Limits:")
|
||||
split = layout.split()
|
||||
|
||||
|
||||
col = split.column(align=True)
|
||||
col.prop(con, "use_limit_x", text="X")
|
||||
sub = col.column()
|
||||
sub.active = con.use_limit_x
|
||||
sub.prop(con, "limit_min_x", text="Min")
|
||||
sub.prop(con, "limit_max_x", text="Max")
|
||||
|
||||
col = split.column(align=True)
|
||||
col.prop(con, "use_limit_y", text="Y")
|
||||
sub = col.column()
|
||||
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")
|
||||
col.prop(con, "use_angular_limit_x", text="Angular X")
|
||||
col.prop(con, "use_angular_limit_y", text="Angular Y")
|
||||
col.prop(con, "use_angular_limit_z", text="Angular 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")
|
||||
|
||||
col = split.column()
|
||||
col.prop(con, "limit_generic_min", text="")
|
||||
col = split.column()
|
||||
col.prop(con, "limit_generic_max", text="")
|
||||
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):
|
||||
self.target_template(layout, con)
|
||||
@@ -569,8 +623,7 @@ class ConstraintButtonsPanel():
|
||||
row.label(text="Main Axis:")
|
||||
row.prop(con, "main_axis", expand=True)
|
||||
|
||||
row = layout.row()
|
||||
row.prop(con, "use_cyclic")
|
||||
layout.prop(con, "use_cyclic")
|
||||
|
||||
def TRANSFORM(self, context, layout, con):
|
||||
self.target_template(layout, con)
|
||||
@@ -737,3 +790,4 @@ def unregister():
|
||||
|
||||
if __name__ == "__main__":
|
||||
register()
|
||||
|
||||
|
@@ -220,10 +220,8 @@ class PARTICLE_PT_emission(ParticleButtonsPanel, bpy.types.Panel):
|
||||
col.prop(part, "lifetime")
|
||||
col.prop(part, "lifetime_random", slider=True)
|
||||
|
||||
layout.row().label(text="Emit From:")
|
||||
|
||||
row = layout.row()
|
||||
row.prop(part, "emit_from", expand=True)
|
||||
layout.label(text="Emit From:")
|
||||
layout.prop(part, "emit_from", expand=True)
|
||||
|
||||
row = layout.row()
|
||||
if part.emit_from == 'VERT':
|
||||
@@ -236,12 +234,9 @@ class PARTICLE_PT_emission(ParticleButtonsPanel, bpy.types.Panel):
|
||||
row.prop(part, "use_even_distribution")
|
||||
|
||||
if part.emit_from == 'FACE' or part.emit_from == 'VOLUME':
|
||||
row = layout.row()
|
||||
|
||||
row.prop(part, "distribution", expand=True)
|
||||
layout.prop(part, "distribution", expand=True)
|
||||
|
||||
row = layout.row()
|
||||
|
||||
if part.distribution == 'JIT':
|
||||
row.prop(part, "userjit", text="Particles/Face")
|
||||
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()
|
||||
|
||||
sub = split.column()
|
||||
sub.prop(part, "use_render_emitter")
|
||||
sub.prop(part, "use_parent_particles")
|
||||
sub = split.column()
|
||||
sub.prop(part, "show_unborn")
|
||||
sub.prop(part, "use_dead")
|
||||
col = split.column()
|
||||
col.prop(part, "use_render_emitter")
|
||||
col.prop(part, "use_parent_particles")
|
||||
|
||||
col = split.column()
|
||||
col.prop(part, "show_unborn")
|
||||
col.prop(part, "use_dead")
|
||||
|
||||
row = layout.row()
|
||||
row.prop(part, "render_type", expand=True)
|
||||
layout.prop(part, "render_type", expand=True)
|
||||
|
||||
split = layout.split()
|
||||
|
||||
sub = split.column()
|
||||
col = split.column()
|
||||
|
||||
if part.render_type == 'LINE':
|
||||
sub.prop(part, "line_length_tail")
|
||||
sub.prop(part, "line_length_head")
|
||||
sub = split.column()
|
||||
sub.prop(part, "use_velocity_length")
|
||||
col.prop(part, "line_length_tail")
|
||||
col.prop(part, "line_length_head")
|
||||
|
||||
split.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")
|
||||
col.prop(part, "use_strand_primitive")
|
||||
sub = col.column()
|
||||
sub.active = (part.use_strand_primitive is False)
|
||||
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")
|
||||
|
||||
sub = split.column()
|
||||
sub.label(text="Timing:")
|
||||
sub.prop(part, "use_absolute_path_time")
|
||||
sub.prop(part, "path_start", text="Start", slider=not part.use_absolute_path_time)
|
||||
sub.prop(part, "path_end", text="End", slider=not part.use_absolute_path_time)
|
||||
sub.prop(part, "length_random", text="Random", slider=True)
|
||||
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()
|
||||
col = row.column()
|
||||
@@ -830,22 +825,23 @@ class PARTICLE_PT_render(ParticleButtonsPanel, bpy.types.Panel):
|
||||
sub.prop(part, "simplify_viewport")
|
||||
|
||||
elif part.render_type == 'OBJECT':
|
||||
sub.prop(part, "dupli_object")
|
||||
sub.prop(part, "use_global_dupli")
|
||||
col.prop(part, "dupli_object")
|
||||
col.prop(part, "use_global_dupli")
|
||||
elif part.render_type == 'GROUP':
|
||||
sub.prop(part, "dupli_group")
|
||||
col.prop(part, "dupli_group")
|
||||
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")
|
||||
|
||||
col = split.column()
|
||||
col.prop(part, "use_whole_group")
|
||||
sub = col.column()
|
||||
sub.active = (part.use_whole_group is False)
|
||||
sub.prop(part, "use_group_count")
|
||||
|
||||
sub = split.column()
|
||||
subsub = sub.column()
|
||||
subsub.active = (part.use_whole_group is False)
|
||||
subsub.prop(part, "use_global_dupli")
|
||||
subsub.prop(part, "use_group_pick_random")
|
||||
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:
|
||||
row = layout.row()
|
||||
@@ -867,7 +863,7 @@ class PARTICLE_PT_render(ParticleButtonsPanel, bpy.types.Panel):
|
||||
elif part.render_type == 'BILLBOARD':
|
||||
ob = context.object
|
||||
|
||||
sub.label(text="Align:")
|
||||
col.label(text="Align:")
|
||||
|
||||
row = layout.row()
|
||||
row.prop(part, "billboard_align", expand=True)
|
||||
|
@@ -195,9 +195,6 @@ class SCENE_PT_custom_props(SceneButtonsPanel, PropertyPanel, bpy.types.Panel):
|
||||
_context_path = "scene"
|
||||
_property_type = bpy.types.Scene
|
||||
|
||||
|
||||
from bpy.props import *
|
||||
|
||||
# XXX, move operator to op/ dir
|
||||
|
||||
|
||||
|
@@ -18,15 +18,13 @@
|
||||
|
||||
# <pep8 compliant>
|
||||
import bpy
|
||||
from bpy.props import *
|
||||
from bpy.props import StringProperty
|
||||
|
||||
|
||||
class CONSOLE_HT_header(bpy.types.Header):
|
||||
bl_space_type = 'CONSOLE'
|
||||
|
||||
def draw(self, context):
|
||||
# sc = context.space_data
|
||||
# text = sc.text
|
||||
layout = self.layout
|
||||
|
||||
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, "snap_element", text="", icon_only=True)
|
||||
|
||||
# mesh = context.edit_object.data
|
||||
# row.prop_search(mesh.uv_textures, "active", mesh, "uv_textures")
|
||||
mesh = context.edit_object.data
|
||||
layout.prop_search(mesh.uv_textures, "active", mesh, "uv_textures", text="")
|
||||
|
||||
if ima:
|
||||
# layers
|
||||
@@ -425,7 +425,6 @@ class IMAGE_PT_image_properties(bpy.types.Panel):
|
||||
layout = self.layout
|
||||
|
||||
sima = context.space_data
|
||||
# ima = sima.image
|
||||
iuser = sima.image_user
|
||||
|
||||
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
|
||||
brush = toolsettings.brush
|
||||
|
||||
# tex_slot = brush.texture_slot
|
||||
|
||||
col = layout.column()
|
||||
|
||||
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):
|
||||
|
@@ -326,8 +326,6 @@ class INFO_MT_render(bpy.types.Menu):
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
# rd = context.scene.render
|
||||
|
||||
layout.operator("render.render", text="Render Image", icon='RENDER_STILL')
|
||||
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.operator("anim.update_data_paths", text="FCurve/Driver 2.54 fix", icon='HELP')
|
||||
layout.separator()
|
||||
layout.operator("wm.splash")
|
||||
layout.operator("wm.splash", icon='BLENDER')
|
||||
|
||||
|
||||
# Help operators
|
||||
|
@@ -156,9 +156,6 @@ class NODE_MT_node(bpy.types.Menu):
|
||||
layout.operator("node.preview_toggle")
|
||||
layout.operator("node.hide_socket_toggle")
|
||||
|
||||
# XXX
|
||||
# layout.operator("node.rename")
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.operator("node.show_cyclic_dependencies")
|
||||
|
@@ -101,34 +101,6 @@ class SEQUENCER_MT_view(bpy.types.Menu):
|
||||
|
||||
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'):
|
||||
layout.operator("sequencer.view_all", text='View all Sequences')
|
||||
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):
|
||||
layout = self.layout
|
||||
# tools = context.tool_settings
|
||||
|
||||
layout.operator("marker.add", text="Add Marker")
|
||||
layout.operator("marker.duplicate", text="Duplicate Marker")
|
||||
|
@@ -19,7 +19,6 @@
|
||||
# <pep8 compliant>
|
||||
import bpy
|
||||
import os
|
||||
import shutil
|
||||
import addon_utils
|
||||
|
||||
from bpy.props import StringProperty, BoolProperty, EnumProperty
|
||||
@@ -1080,6 +1079,8 @@ class WM_OT_addon_install(bpy.types.Operator):
|
||||
def execute(self, context):
|
||||
import traceback
|
||||
import zipfile
|
||||
import shutil
|
||||
|
||||
pyfile = self.filepath
|
||||
|
||||
# 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 = ""
|
||||
pyfile_dir = os.path.dirname(pyfile)
|
||||
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)
|
||||
return {'CANCELLED'}
|
||||
del addon_path
|
||||
|
@@ -404,7 +404,7 @@ class InputKeyMapPanel(bpy.types.Panel):
|
||||
self.draw_hierarchy(display_keymaps, col)
|
||||
|
||||
|
||||
from bpy.props import *
|
||||
from bpy.props import StringProperty, BoolProperty, IntProperty
|
||||
|
||||
|
||||
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.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:
|
||||
#XXX duplicated from properties_texture.py
|
||||
|
@@ -30,6 +30,11 @@
|
||||
*
|
||||
*/
|
||||
|
||||
/** \file blender/avi/intern/avi.c
|
||||
* \ingroup avi
|
||||
*/
|
||||
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdarg.h>
|
||||
@@ -211,7 +216,7 @@ int AVI_is_avi (char *name) {
|
||||
|
||||
int AVI_is_avi (const char *name) {
|
||||
int temp, fcca, j;
|
||||
AviMovie movie= {0};
|
||||
AviMovie movie= {NULL};
|
||||
AviMainHeader header;
|
||||
AviBitmapInfoHeader bheader;
|
||||
int movie_tracks = 0;
|
||||
|
@@ -26,6 +26,11 @@
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
/** \file blender/avi/intern/avi_intern.h
|
||||
* \ingroup avi
|
||||
*/
|
||||
|
||||
#ifndef AVI_INTERN_H
|
||||
#define AVI_INTERN_H
|
||||
|
||||
|
@@ -30,6 +30,11 @@
|
||||
*
|
||||
*/
|
||||
|
||||
/** \file blender/avi/intern/avirgb.c
|
||||
* \ingroup avi
|
||||
*/
|
||||
|
||||
|
||||
#include "AVI_avi.h"
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
@@ -27,6 +27,11 @@
|
||||
* ***** 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_to_avi_rgb (AviMovie *movie, int stream, unsigned char *buffer, int *size);
|
||||
|
||||
|
@@ -29,6 +29,11 @@
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
/** \file blender/avi/intern/codecs.c
|
||||
* \ingroup avi
|
||||
*/
|
||||
|
||||
|
||||
#include "AVI_avi.h"
|
||||
#include "avi_intern.h"
|
||||
|
||||
|
@@ -31,6 +31,11 @@
|
||||
*
|
||||
*/
|
||||
|
||||
/** \file blender/avi/intern/endian.c
|
||||
* \ingroup avi
|
||||
*/
|
||||
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
|
@@ -30,6 +30,11 @@
|
||||
*
|
||||
*/
|
||||
|
||||
/** \file blender/avi/intern/endian.h
|
||||
* \ingroup avi
|
||||
*/
|
||||
|
||||
|
||||
#ifndef AVI_ENDIAN_H
|
||||
#define AVI_ENDIAN_H
|
||||
|
||||
|
@@ -30,6 +30,11 @@
|
||||
*
|
||||
*/
|
||||
|
||||
/** \file blender/avi/intern/mjpeg.c
|
||||
* \ingroup avi
|
||||
*/
|
||||
|
||||
|
||||
#include "AVI_avi.h"
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
@@ -27,6 +27,11 @@
|
||||
* ***** 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_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_intern.h"
|
||||
#include "endian.h"
|
||||
|
@@ -30,6 +30,11 @@
|
||||
*
|
||||
*/
|
||||
|
||||
/** \file blender/avi/intern/rgb32.c
|
||||
* \ingroup avi
|
||||
*/
|
||||
|
||||
|
||||
#include "AVI_avi.h"
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
@@ -27,6 +27,11 @@
|
||||
* ***** 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_to_rgb32 (AviMovie *movie, int stream, unsigned char *buffer, int *size);
|
||||
|
||||
|
@@ -26,6 +26,11 @@
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
/** \file blender/blenfont/BLF_api.h
|
||||
* \ingroup blf
|
||||
*/
|
||||
|
||||
|
||||
#ifndef BLF_API_H
|
||||
#define BLF_API_H
|
||||
|
||||
|
@@ -26,6 +26,11 @@
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
/** \file blender/blenfont/intern/blf.c
|
||||
* \ingroup blf
|
||||
*/
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
@@ -25,6 +25,11 @@
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
/** \file blender/blenfont/intern/blf_dir.c
|
||||
* \ingroup blf
|
||||
*/
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
@@ -26,6 +26,11 @@
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
/** \file blender/blenfont/intern/blf_font.c
|
||||
* \ingroup blf
|
||||
*/
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
@@ -26,6 +26,11 @@
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
/** \file blender/blenfont/intern/blf_glyph.c
|
||||
* \ingroup blf
|
||||
*/
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
@@ -25,6 +25,11 @@
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
/** \file blender/blenfont/intern/blf_internal.h
|
||||
* \ingroup blf
|
||||
*/
|
||||
|
||||
|
||||
#ifndef BLF_INTERNAL_H
|
||||
#define BLF_INTERNAL_H
|
||||
|
||||
|
@@ -25,6 +25,11 @@
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
/** \file blender/blenfont/intern/blf_internal_types.h
|
||||
* \ingroup blf
|
||||
*/
|
||||
|
||||
|
||||
#ifndef BLF_INTERNAL_TYPES_H
|
||||
#define BLF_INTERNAL_TYPES_H
|
||||
|
||||
|
@@ -25,6 +25,11 @@
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
/** \file blender/blenfont/intern/blf_lang.c
|
||||
* \ingroup blf
|
||||
*/
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
@@ -26,6 +26,11 @@
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
/** \file blender/blenfont/intern/blf_util.c
|
||||
* \ingroup blf
|
||||
*/
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
@@ -44,12 +44,12 @@ void cdf_free(CDataFile *cdf);
|
||||
|
||||
int cdf_read_open(CDataFile *cdf, char *filename);
|
||||
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);
|
||||
|
||||
int cdf_write_open(CDataFile *cdf, char *filename);
|
||||
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_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);
|
||||
|
||||
/* 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_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);
|
||||
void modifier_setError(struct ModifierData *md, const char *format, ...)
|
||||
#ifdef __GNUC__
|
||||
__attribute__ ((format (printf, 2, 3)));
|
||||
__attribute__ ((format (printf, 2, 3)))
|
||||
#endif
|
||||
;
|
||||
|
||||
|
@@ -51,7 +51,7 @@ void BKE_reports_clear(ReportList *reports);
|
||||
void BKE_report(ReportList *reports, ReportType type, const char *message);
|
||||
void BKE_reportf(ReportList *reports, ReportType type, const char *format, ...)
|
||||
#ifdef __GNUC__
|
||||
__attribute__ ((format (printf, 3, 4)));
|
||||
__attribute__ ((format (printf, 3, 4)))
|
||||
#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_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_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_id(struct ID *id, int slot);
|
||||
struct Tex *copy_texture(struct Tex *tex);
|
||||
struct Tex *localize_texture(struct Tex *tex);
|
||||
void make_local_texture(struct Tex *tex);
|
||||
void autotexname(struct Tex *tex);
|
||||
|
||||
|
@@ -24,6 +24,11 @@
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
/** \file blender/blenkernel/depsgraph_private.h
|
||||
* \ingroup bke
|
||||
*/
|
||||
|
||||
#ifndef DEPSGRAPH_PRIVATE
|
||||
#define DEPSGRAPH_PRIVATE
|
||||
|
||||
|
@@ -34,6 +34,11 @@
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
/** \file blender/blenkernel/intern/BME_Customdata.c
|
||||
* \ingroup bke
|
||||
*/
|
||||
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#include "MEM_guardedalloc.h"
|
||||
|
@@ -32,6 +32,11 @@
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
/** \file blender/blenkernel/intern/BME_conversions.c
|
||||
* \ingroup bke
|
||||
*/
|
||||
|
||||
|
||||
#include "MEM_guardedalloc.h"
|
||||
|
||||
#include "DNA_meshdata_types.h"
|
||||
|
@@ -32,6 +32,11 @@
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
/** \file blender/blenkernel/intern/BME_eulers.c
|
||||
* \ingroup bke
|
||||
*/
|
||||
|
||||
|
||||
#include "MEM_guardedalloc.h"
|
||||
#include "BLI_utildefines.h"
|
||||
|
||||
|
@@ -32,6 +32,11 @@
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
/** \file blender/blenkernel/intern/BME_mesh.c
|
||||
* \ingroup bke
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include "MEM_guardedalloc.h"
|
||||
#include "BKE_bmesh.h"
|
||||
|
@@ -32,6 +32,11 @@
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
/** \file blender/blenkernel/intern/BME_structure.c
|
||||
* \ingroup bke
|
||||
*/
|
||||
|
||||
|
||||
#include <limits.h>
|
||||
|
||||
#include "MEM_guardedalloc.h"
|
||||
|
@@ -31,6 +31,11 @@
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
/** \file blender/blenkernel/intern/BME_tools.c
|
||||
* \ingroup bke
|
||||
*/
|
||||
|
||||
|
||||
#include <math.h>
|
||||
|
||||
#include "MEM_guardedalloc.h"
|
||||
|
@@ -1,3 +1,6 @@
|
||||
/** \file blender/blenkernel/intern/CCGSubSurf.c
|
||||
* \ingroup bke
|
||||
*/
|
||||
/* $Id$ */
|
||||
|
||||
#include <stdlib.h>
|
||||
|
@@ -1,3 +1,6 @@
|
||||
/** \file blender/blenkernel/intern/CCGSubSurf.h
|
||||
* \ingroup bke
|
||||
*/
|
||||
/* $Id$ */
|
||||
|
||||
typedef void* CCGMeshHDL;
|
||||
|
@@ -27,6 +27,11 @@
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
/** \file blender/blenkernel/intern/DerivedMesh.c
|
||||
* \ingroup bke
|
||||
*/
|
||||
|
||||
|
||||
#include <string.h>
|
||||
|
||||
|
||||
|
@@ -26,6 +26,11 @@
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
/** \file blender/blenkernel/intern/action.c
|
||||
* \ingroup bke
|
||||
*/
|
||||
|
||||
|
||||
#include <string.h>
|
||||
#include <math.h>
|
||||
#include <stdlib.h>
|
||||
@@ -1066,7 +1071,7 @@ void copy_pose_result(bPose *to, bPose *from)
|
||||
bPoseChannel *pchanto, *pchanfrom;
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
|
@@ -29,6 +29,11 @@
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
/** \file blender/blenkernel/intern/anim.c
|
||||
* \ingroup bke
|
||||
*/
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
#include <math.h>
|
||||
#include <string.h>
|
||||
|
@@ -27,6 +27,11 @@
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
/** \file blender/blenkernel/intern/anim_sys.c
|
||||
* \ingroup bke
|
||||
*/
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
#include <string.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 (G.f & G_DEBUG) {
|
||||
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;
|
||||
}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user