forked from bartvdbraak/blender
Merge from trunk -r 24758:25003.
This commit is contained in:
commit
71a2cc3222
@ -1,4 +1,4 @@
|
||||
# $Id$
|
||||
# $Id$
|
||||
# ***** BEGIN GPL LICENSE BLOCK *****
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
@ -531,19 +531,21 @@ IF(APPLE)
|
||||
SET(LLIBS stdc++ SystemStubs)
|
||||
|
||||
IF (WITH_COCOA)
|
||||
SET(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing -DGHOST_COCOA")
|
||||
SET(PLATFORM_LINKFLAGS "-fexceptions -framework CoreServices -framework Foundation -framework IOKit -framework AppKit -framework Cocoa -framework Carbon -framework AudioUnit -framework AudioToolbox -framework CoreAudio")
|
||||
IF(USE_QTKIT)
|
||||
SET(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -DUSE_QTKIT")
|
||||
SET(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QTKit")
|
||||
ELSE(USE_QTKIT)
|
||||
IF(WITH_QUICKTIME)
|
||||
SET(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QuickTime")
|
||||
ENDIF(WITH_QUICKTIME)
|
||||
ENDIF(USE_QTKIT)
|
||||
SET(PLATFORM_CFLAGS "-pipe -funsigned-char -DGHOST_COCOA")
|
||||
SET(PLATFORM_LINKFLAGS "-fexceptions -framework CoreServices -framework Foundation -framework IOKit -framework AppKit -framework Cocoa -framework Carbon -framework AudioUnit -framework AudioToolbox -framework CoreAudio")
|
||||
IF(USE_QTKIT)
|
||||
SET(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -DUSE_QTKIT")
|
||||
SET(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QTKit")
|
||||
IF(CMAKE_OSX_ARCHITECTURES MATCHES i386)
|
||||
SET(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QuickTime")
|
||||
#libSDL still needs 32bit carbon quicktime
|
||||
ENDIF(CMAKE_OSX_ARCHITECTURES MATCHES i386)
|
||||
ELSEIF(WITH_QUICKTIME)
|
||||
SET(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QuickTime")
|
||||
ENDIF(USE_QTKIT)
|
||||
ELSE (WITH_COCOA)
|
||||
SET(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing")
|
||||
SET(PLATFORM_LINKFLAGS "-fexceptions -framework CoreServices -framework Foundation -framework IOKit -framework AppKit -framework Carbon -framework AGL -framework AudioUnit -framework AudioToolbox -framework CoreAudio -framework QuickTime")
|
||||
SET(PLATFORM_CFLAGS "-pipe -funsigned-char")
|
||||
SET(PLATFORM_LINKFLAGS "-fexceptions -framework CoreServices -framework Foundation -framework IOKit -framework AppKit -framework Carbon -framework AGL -framework AudioUnit -framework AudioToolbox -framework CoreAudio -framework QuickTime")
|
||||
ENDIF (WITH_COCOA)
|
||||
|
||||
IF(WITH_OPENMP)
|
||||
@ -585,15 +587,23 @@ IF(APPLE)
|
||||
|
||||
SET(EXETYPE MACOSX_BUNDLE)
|
||||
|
||||
|
||||
SET(CMAKE_C_FLAGS_DEBUG "-fno-strict-aliasing -g")
|
||||
SET(CMAKE_CXX_FLAGS_DEBUG "-fno-strict-aliasing -g")
|
||||
IF(CMAKE_OSX_ARCHITECTURES MATCHES "i386")
|
||||
SET(CMAKE_CXX_FLAGS_RELEASE "-O3 -ftree-vectorize -msse -msse2 -fvariable-expansion-in-unroller")
|
||||
SET(CMAKE_C_FLAGS_RELEASE "-O3 -ftree-vectorize -msse -msse2 -fvariable-expansion-in-unroller")
|
||||
SET(CMAKE_CXX_FLAGS_RELEASE "-O3 -mdynamic-no-pic -ftree-vectorize -msse -msse2 -fvariable-expansion-in-unroller")
|
||||
SET(CMAKE_C_FLAGS_RELEASE "-O3 -mdynamic-no-pic -ftree-vectorize -msse -msse2 -fvariable-expansion-in-unroller")
|
||||
ELSEIF(CMAKE_OSX_ARCHITECTURES MATCHES "x86_64")
|
||||
SET(CMAKE_CXX_FLAGS_RELEASE "-O3 -ftree-vectorize -msse -msse2 -msse3 -mssse3 -fvariable-expansion-in-unroller")
|
||||
SET(CMAKE_C_FLAGS_RELEASE "-O3 -ftree-vectorize -msse -msse2 -msse3 -mssse3 -fvariable-expansion-in-unroller")
|
||||
SET(CMAKE_CXX_FLAGS_RELEASE "-O3 -mdynamic-no-pic -ftree-vectorize -msse -msse2 -msse3 -mssse3 -fvariable-expansion-in-unroller")
|
||||
SET(CMAKE_C_FLAGS_RELEASE "-O3 -mdynamic-no-pic -ftree-vectorize -msse -msse2 -msse3 -mssse3 -fvariable-expansion-in-unroller")
|
||||
ELSE(CMAKE_OSX_ARCHITECTURES MATCHES "x86_64")
|
||||
SET(CMAKE_C_FLAGS_RELEASE "-mdynamic-no-pic -fno-strict-aliasing")
|
||||
SET(CMAKE_CXX_FLAGS_RELEASE "-mdynamic-no-pic -fno-strict-aliasing")
|
||||
ENDIF(CMAKE_OSX_ARCHITECTURES MATCHES "i386")
|
||||
|
||||
# Better warnings
|
||||
SET(C_WARNINGS "-Wall -Wno-char-subscripts -Wpointer-arith -Wcast-align -Wdeclaration-after-statement")
|
||||
SET(CXX_WARNINGS "-Wall -Wno-invalid-offsetof -Wno-sign-compare")
|
||||
|
||||
ENDIF(APPLE)
|
||||
|
||||
IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
|
||||
|
@ -152,6 +152,10 @@ BT_DECLARE_ALIGNED_ALLOCATOR();
|
||||
{
|
||||
return (proxyType == STATIC_PLANE_PROXYTYPE);
|
||||
}
|
||||
static SIMD_FORCE_INLINE bool isSoftBody(int proxyType)
|
||||
{
|
||||
return (proxyType == SOFTBODY_SHAPE_PROXYTYPE);
|
||||
}
|
||||
|
||||
}
|
||||
;
|
||||
|
@ -31,6 +31,7 @@ subject to the following restrictions:
|
||||
#include "LinearMath/btAabbUtil2.h"
|
||||
#include "LinearMath/btQuickprof.h"
|
||||
#include "LinearMath/btStackAlloc.h"
|
||||
#include "BulletSoftBody/btSoftBody.h"
|
||||
|
||||
//#define USE_BRUTEFORCE_RAYBROADPHASE 1
|
||||
//RECALCULATE_AABB is slower, but benefit is that you don't need to call 'stepSimulation' or 'updateAabbs' before using a rayTest
|
||||
@ -411,6 +412,31 @@ void btCollisionWorld::rayTestSingle(const btTransform& rayFromTrans,const btTra
|
||||
// restore
|
||||
collisionObject->internalSetTemporaryCollisionShape(saveCollisionShape);
|
||||
}
|
||||
} else {
|
||||
if (collisionShape->isSoftBody()) {
|
||||
btSoftBody* softBody = static_cast<btSoftBody*>(collisionObject);
|
||||
btSoftBody::sRayCast softResult;
|
||||
if (softBody->rayTest(rayFromTrans.getOrigin(), rayToTrans.getOrigin(), softResult))
|
||||
{
|
||||
btCollisionWorld::LocalShapeInfo shapeInfo;
|
||||
shapeInfo.m_shapePart = 0;
|
||||
shapeInfo.m_triangleIndex = softResult.index;
|
||||
// get the normal
|
||||
btVector3 normal = softBody->m_faces[softResult.index].m_normal;
|
||||
btVector3 rayDir = rayToTrans.getOrigin() - rayFromTrans.getOrigin();
|
||||
if (normal.dot(rayDir) > 0) {
|
||||
// normal always point toward origin of the ray
|
||||
normal = -normal;
|
||||
}
|
||||
btCollisionWorld::LocalRayResult rayResult
|
||||
(collisionObject,
|
||||
&shapeInfo,
|
||||
normal,
|
||||
softResult.fraction);
|
||||
bool normalInWorldSpace = true;
|
||||
resultCallback.addSingleResult(rayResult,normalInWorldSpace);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -72,6 +72,10 @@ public:
|
||||
{
|
||||
return btBroadphaseProxy::isCompound(getShapeType());
|
||||
}
|
||||
SIMD_FORCE_INLINE bool isSoftBody() const
|
||||
{
|
||||
return btBroadphaseProxy::isSoftBody(getShapeType());
|
||||
}
|
||||
|
||||
///isInfinite is used to catch simulation error (aabb check)
|
||||
SIMD_FORCE_INLINE bool isInfinite() const
|
||||
|
4
extern/glew/make/msvc_9_0/glew.vcproj
vendored
4
extern/glew/make/msvc_9_0/glew.vcproj
vendored
@ -43,7 +43,7 @@
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\include"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_LIB"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_LIB;GLEW_STATIC"
|
||||
MinimalRebuild="false"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
@ -115,7 +115,7 @@
|
||||
Optimization="2"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\include"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_LIB"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_LIB;GLEW_STATIC"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="true"
|
||||
|
@ -341,6 +341,10 @@
|
||||
RelativePath="..\..\intern\AUD_C-API.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\intern\AUD_C-API.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\intern\AUD_ChannelMapperFactory.cpp"
|
||||
>
|
||||
@ -758,10 +762,6 @@
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<File
|
||||
RelativePath="..\..\AUD_C-API.h"
|
||||
>
|
||||
</File>
|
||||
</Files>
|
||||
<Globals>
|
||||
</Globals>
|
||||
|
@ -23,6 +23,9 @@
|
||||
*
|
||||
* Contributor(s): none yet.
|
||||
*
|
||||
* Part of this code has been taken from Qt, under LGPL license
|
||||
* Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
|
||||
*
|
||||
* ***** END GPL LICENSE BLOCK *****
|
||||
*/
|
||||
|
||||
@ -126,6 +129,8 @@ GHOST_SystemX11(
|
||||
m_xclip_out= XInternAtom(m_display, "XCLIP_OUT", False);
|
||||
m_incr= XInternAtom(m_display, "INCR", False);
|
||||
m_utf8_string= XInternAtom(m_display, "UTF8_STRING", False);
|
||||
m_last_warp = 0;
|
||||
|
||||
|
||||
// compute the initial time
|
||||
timeval tv;
|
||||
@ -310,6 +315,61 @@ static void SleepTillEvent(Display *display, GHOST_TInt64 maxSleep) {
|
||||
}
|
||||
}
|
||||
|
||||
/* This function borrowed from Qt's X11 support
|
||||
* qclipboard_x11.cpp
|
||||
* */
|
||||
struct init_timestamp_data
|
||||
{
|
||||
Time timestamp;
|
||||
};
|
||||
|
||||
static Bool init_timestamp_scanner(Display*, XEvent *event, XPointer arg)
|
||||
{
|
||||
init_timestamp_data *data =
|
||||
reinterpret_cast<init_timestamp_data*>(arg);
|
||||
switch(event->type)
|
||||
{
|
||||
case ButtonPress:
|
||||
case ButtonRelease:
|
||||
data->timestamp = event->xbutton.time;
|
||||
break;
|
||||
case MotionNotify:
|
||||
data->timestamp = event->xmotion.time;
|
||||
break;
|
||||
case KeyPress:
|
||||
case KeyRelease:
|
||||
data->timestamp = event->xkey.time;
|
||||
break;
|
||||
case PropertyNotify:
|
||||
data->timestamp = event->xproperty.time;
|
||||
break;
|
||||
case EnterNotify:
|
||||
case LeaveNotify:
|
||||
data->timestamp = event->xcrossing.time;
|
||||
break;
|
||||
case SelectionClear:
|
||||
data->timestamp = event->xselectionclear.time;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
Time
|
||||
GHOST_SystemX11::
|
||||
lastEventTime(Time default_time) {
|
||||
init_timestamp_data data;
|
||||
data.timestamp = default_time;
|
||||
XEvent ev;
|
||||
XCheckIfEvent(m_display, &ev, &init_timestamp_scanner, (XPointer)&data);
|
||||
|
||||
return data.timestamp;
|
||||
}
|
||||
|
||||
|
||||
|
||||
bool
|
||||
GHOST_SystemX11::
|
||||
processEvents(
|
||||
@ -405,10 +465,15 @@ GHOST_SystemX11::processEvent(XEvent *xe)
|
||||
window->getCursorGrabAccum(x_accum, y_accum);
|
||||
|
||||
if(x_new != xme.x_root || y_new != xme.y_root) {
|
||||
/* when wrapping we don't need to add an event because the
|
||||
* setCursorPosition call will cause a new event after */
|
||||
setCursorPosition(x_new, y_new); /* wrap */
|
||||
window->setCursorGrabAccum(x_accum + (xme.x_root - x_new), y_accum + (xme.y_root - y_new));
|
||||
if (xme.time > m_last_warp) {
|
||||
/* when wrapping we don't need to add an event because the
|
||||
* setCursorPosition call will cause a new event after */
|
||||
setCursorPosition(x_new, y_new); /* wrap */
|
||||
window->setCursorGrabAccum(x_accum + (xme.x_root - x_new), y_accum + (xme.y_root - y_new));
|
||||
m_last_warp = lastEventTime(xme.time);
|
||||
} else {
|
||||
setCursorPosition(x_new, y_new); /* wrap but don't accumulate */
|
||||
}
|
||||
}
|
||||
else {
|
||||
g_event = new
|
||||
@ -907,7 +972,7 @@ setCursorPosition(
|
||||
int rely = y-cy;
|
||||
|
||||
XWarpPointer(m_display,None,None,0,0,0,0,relx,rely);
|
||||
XFlush(m_display);
|
||||
XSync(m_display, 0); /* Sync to process all requests */
|
||||
|
||||
return GHOST_kSuccess;
|
||||
}
|
||||
|
@ -266,6 +266,10 @@ private :
|
||||
/// A vector of keyboard key masks
|
||||
char m_keyboard_vector[32];
|
||||
|
||||
/* to prevent multiple warp, we store the time of the last warp event
|
||||
* and stop accumulating all events generated before that */
|
||||
Time m_last_warp;
|
||||
|
||||
/**
|
||||
* Return the ghost window associated with the
|
||||
* X11 window xwind
|
||||
@ -281,6 +285,11 @@ private :
|
||||
XEvent *xe
|
||||
);
|
||||
|
||||
Time
|
||||
lastEventTime(
|
||||
Time default_time
|
||||
);
|
||||
|
||||
bool
|
||||
generateWindowExposeEvents(
|
||||
);
|
||||
|
@ -109,6 +109,8 @@ GHOST_TSuccess GHOST_Window::setCursorGrab(GHOST_TGrabCursorMode mode, GHOST_Rec
|
||||
m_cursorGrabBounds.m_l= m_cursorGrabBounds.m_r= -1;
|
||||
else if (bounds) {
|
||||
m_cursorGrabBounds= *bounds;
|
||||
} else { /* if bounds not defined, use window */
|
||||
getClientBounds(m_cursorGrabBounds);
|
||||
}
|
||||
m_cursorGrab = mode;
|
||||
return GHOST_kSuccess;
|
||||
|
@ -858,15 +858,18 @@ GHOST_TSuccess GHOST_WindowCocoa::installDrawingContext(GHOST_TDrawingContextTyp
|
||||
|
||||
if (!s_firstOpenGLcontext) s_firstOpenGLcontext = tmpOpenGLContext;
|
||||
#ifdef WAIT_FOR_VSYNC
|
||||
{
|
||||
GLint swapInt = 1;
|
||||
/* wait for vsync, to avoid tearing artifacts */
|
||||
[tmpOpenGLContext setValues:1 forParameter:NSOpenGLCPSwapInterval];
|
||||
[tmpOpenGLContext setValues:&swapInt forParameter:NSOpenGLCPSwapInterval];
|
||||
}
|
||||
#endif
|
||||
[m_openGLView setOpenGLContext:tmpOpenGLContext];
|
||||
[tmpOpenGLContext setView:m_openGLView];
|
||||
|
||||
m_openGLContext = tmpOpenGLContext;
|
||||
[m_openGLView setOpenGLContext:tmpOpenGLContext];
|
||||
[tmpOpenGLContext setView:m_openGLView];
|
||||
|
||||
m_openGLContext = tmpOpenGLContext;
|
||||
break;
|
||||
|
||||
|
||||
case GHOST_kDrawingContextTypeNone:
|
||||
success = GHOST_kSuccess;
|
||||
break;
|
||||
|
@ -157,13 +157,13 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "blenderplayer", "..\gameeng
|
||||
{9C71A793-C177-4CAB-8EC5-923D500B39F8} = {9C71A793-C177-4CAB-8EC5-923D500B39F8}
|
||||
{F90BD995-FFA4-4B18-81E8-FA4322C939E8} = {F90BD995-FFA4-4B18-81E8-FA4322C939E8}
|
||||
{BB6AA598-B336-4F8B-9DF9-8CAE7BE71C23} = {BB6AA598-B336-4F8B-9DF9-8CAE7BE71C23}
|
||||
{8154A59A-CAED-403D-AB94-BC4E7C032666} = {8154A59A-CAED-403D-AB94-BC4E7C032666}
|
||||
{3648FB9A-C36F-43AB-AED0-1F1361E67FC7} = {3648FB9A-C36F-43AB-AED0-1F1361E67FC7}
|
||||
{542A9FA1-B7FF-441C-AE15-054DB31D3488} = {542A9FA1-B7FF-441C-AE15-054DB31D3488}
|
||||
{D8ABD6A5-1B36-4D62-934E-B5C6801130B0} = {D8ABD6A5-1B36-4D62-934E-B5C6801130B0}
|
||||
{E109F1A5-FDD3-4F56-A1C4-96867EEA4C5B} = {E109F1A5-FDD3-4F56-A1C4-96867EEA4C5B}
|
||||
{727F90AC-ABE6-40BF-8937-C2F2F1D13DEA} = {727F90AC-ABE6-40BF-8937-C2F2F1D13DEA}
|
||||
{BAC615B0-F1AF-418B-8D23-A10FD8870D6A} = {BAC615B0-F1AF-418B-8D23-A10FD8870D6A}
|
||||
{E8904FB3-F8F7-BC21-87A6-029A57B901F4} = {E8904FB3-F8F7-BC21-87A6-029A57B901F4}
|
||||
{E90C7BC2-CF30-4A60-A8F2-0050D592E358} = {E90C7BC2-CF30-4A60-A8F2-0050D592E358}
|
||||
{8B8D4FC3-3234-4E54-8376-5AB83D00D164} = {8B8D4FC3-3234-4E54-8376-5AB83D00D164}
|
||||
{4B6AFCC5-968C-424A-8F20-76E41B3BEF74} = {4B6AFCC5-968C-424A-8F20-76E41B3BEF74}
|
||||
@ -1097,6 +1097,7 @@ Global
|
||||
{B093415D-C0F6-4E76-8F5A-6BC1917BCE9E}.Blender Release|Win32.ActiveCfg = Blender Release|Win32
|
||||
{B093415D-C0F6-4E76-8F5A-6BC1917BCE9E}.Blender Release|Win32.Build.0 = Blender Release|Win32
|
||||
{B093415D-C0F6-4E76-8F5A-6BC1917BCE9E}.BlenderPlayer Debug|Win32.ActiveCfg = Blender Debug|Win32
|
||||
{B093415D-C0F6-4E76-8F5A-6BC1917BCE9E}.BlenderPlayer Debug|Win32.Build.0 = Blender Debug|Win32
|
||||
{B093415D-C0F6-4E76-8F5A-6BC1917BCE9E}.BlenderPlayer Release|Win32.ActiveCfg = Blender Release|Win32
|
||||
{B093415D-C0F6-4E76-8F5A-6BC1917BCE9E}.Debug|Win32.ActiveCfg = 3DPlugin Debug|Win32
|
||||
{B093415D-C0F6-4E76-8F5A-6BC1917BCE9E}.Debug|Win32.Build.0 = 3DPlugin Debug|Win32
|
||||
@ -1155,6 +1156,7 @@ Global
|
||||
{A90C4918-4B21-4277-93BD-AF65F30951D9}.Blender Release|Win32.ActiveCfg = Blender Release|Win32
|
||||
{A90C4918-4B21-4277-93BD-AF65F30951D9}.Blender Release|Win32.Build.0 = Blender Release|Win32
|
||||
{A90C4918-4B21-4277-93BD-AF65F30951D9}.BlenderPlayer Debug|Win32.ActiveCfg = Blender Debug|Win32
|
||||
{A90C4918-4B21-4277-93BD-AF65F30951D9}.BlenderPlayer Debug|Win32.Build.0 = Blender Debug|Win32
|
||||
{A90C4918-4B21-4277-93BD-AF65F30951D9}.BlenderPlayer Release|Win32.ActiveCfg = Blender Release|Win32
|
||||
{A90C4918-4B21-4277-93BD-AF65F30951D9}.Debug|Win32.ActiveCfg = 3DPlugin Debug|Win32
|
||||
{A90C4918-4B21-4277-93BD-AF65F30951D9}.Debug|Win32.Build.0 = 3DPlugin Debug|Win32
|
||||
@ -1329,12 +1331,12 @@ Global
|
||||
{884D8731-654C-4C7F-9A75-8F37A305BE1E}.Blender Debug|Win32.Build.0 = Blender Debug|Win32
|
||||
{884D8731-654C-4C7F-9A75-8F37A305BE1E}.Blender Release|Win32.ActiveCfg = Blender Release|Win32
|
||||
{884D8731-654C-4C7F-9A75-8F37A305BE1E}.Blender Release|Win32.Build.0 = Blender Release|Win32
|
||||
{884D8731-654C-4C7F-9A75-8F37A305BE1E}.BlenderPlayer Debug|Win32.ActiveCfg = Blender Debug|Win32
|
||||
{884D8731-654C-4C7F-9A75-8F37A305BE1E}.BlenderPlayer Debug|Win32.Build.0 = Blender Debug|Win32
|
||||
{884D8731-654C-4C7F-9A75-8F37A305BE1E}.BlenderPlayer Debug|Win32.ActiveCfg = BlenderPlayer Debug|Win32
|
||||
{884D8731-654C-4C7F-9A75-8F37A305BE1E}.BlenderPlayer Debug|Win32.Build.0 = BlenderPlayer Debug|Win32
|
||||
{884D8731-654C-4C7F-9A75-8F37A305BE1E}.BlenderPlayer Release|Win32.ActiveCfg = Blender Release|Win32
|
||||
{884D8731-654C-4C7F-9A75-8F37A305BE1E}.BlenderPlayer Release|Win32.Build.0 = Blender Release|Win32
|
||||
{884D8731-654C-4C7F-9A75-8F37A305BE1E}.Debug|Win32.ActiveCfg = Blender Debug|Win32
|
||||
{884D8731-654C-4C7F-9A75-8F37A305BE1E}.Debug|Win32.Build.0 = Blender Debug|Win32
|
||||
{884D8731-654C-4C7F-9A75-8F37A305BE1E}.Debug|Win32.ActiveCfg = BlenderPlayer Release|Win32
|
||||
{884D8731-654C-4C7F-9A75-8F37A305BE1E}.Debug|Win32.Build.0 = BlenderPlayer Release|Win32
|
||||
{884D8731-654C-4C7F-9A75-8F37A305BE1E}.Release|Win32.ActiveCfg = Blender Release|Win32
|
||||
{884D8731-654C-4C7F-9A75-8F37A305BE1E}.Release|Win32.Build.0 = Blender Release|Win32
|
||||
{FB88301F-F725-401B-ACD7-D2ABBF333B71}.3D Plugin Debug|Win32.ActiveCfg = Blender Debug|Win32
|
||||
@ -1351,8 +1353,8 @@ Global
|
||||
{FB88301F-F725-401B-ACD7-D2ABBF333B71}.Blender Release|Win32.Build.0 = Blender Release|Win32
|
||||
{FB88301F-F725-401B-ACD7-D2ABBF333B71}.BlenderPlayer Debug|Win32.ActiveCfg = Blender Debug|Win32
|
||||
{FB88301F-F725-401B-ACD7-D2ABBF333B71}.BlenderPlayer Debug|Win32.Build.0 = Blender Debug|Win32
|
||||
{FB88301F-F725-401B-ACD7-D2ABBF333B71}.BlenderPlayer Release|Win32.ActiveCfg = Blender Debug|Win32
|
||||
{FB88301F-F725-401B-ACD7-D2ABBF333B71}.BlenderPlayer Release|Win32.Build.0 = Blender Debug|Win32
|
||||
{FB88301F-F725-401B-ACD7-D2ABBF333B71}.BlenderPlayer Release|Win32.ActiveCfg = Blender Release|Win32
|
||||
{FB88301F-F725-401B-ACD7-D2ABBF333B71}.BlenderPlayer Release|Win32.Build.0 = Blender Release|Win32
|
||||
{FB88301F-F725-401B-ACD7-D2ABBF333B71}.Debug|Win32.ActiveCfg = Blender Debug|Win32
|
||||
{FB88301F-F725-401B-ACD7-D2ABBF333B71}.Debug|Win32.Build.0 = Blender Debug|Win32
|
||||
{FB88301F-F725-401B-ACD7-D2ABBF333B71}.Release|Win32.ActiveCfg = Blender Release|Win32
|
||||
@ -1409,8 +1411,8 @@ Global
|
||||
{7495FE37-933A-4AC1-BB2A-B3FDB4DE4284}.Blender Debug|Win32.Build.0 = Blender Debug|Win32
|
||||
{7495FE37-933A-4AC1-BB2A-B3FDB4DE4284}.Blender Release|Win32.ActiveCfg = Blender Release|Win32
|
||||
{7495FE37-933A-4AC1-BB2A-B3FDB4DE4284}.Blender Release|Win32.Build.0 = Blender Release|Win32
|
||||
{7495FE37-933A-4AC1-BB2A-B3FDB4DE4284}.BlenderPlayer Debug|Win32.ActiveCfg = Blender Release|Win32
|
||||
{7495FE37-933A-4AC1-BB2A-B3FDB4DE4284}.BlenderPlayer Debug|Win32.Build.0 = Blender Release|Win32
|
||||
{7495FE37-933A-4AC1-BB2A-B3FDB4DE4284}.BlenderPlayer Debug|Win32.ActiveCfg = Blender Debug|Win32
|
||||
{7495FE37-933A-4AC1-BB2A-B3FDB4DE4284}.BlenderPlayer Debug|Win32.Build.0 = Blender Debug|Win32
|
||||
{7495FE37-933A-4AC1-BB2A-B3FDB4DE4284}.BlenderPlayer Release|Win32.ActiveCfg = Blender Release|Win32
|
||||
{7495FE37-933A-4AC1-BB2A-B3FDB4DE4284}.BlenderPlayer Release|Win32.Build.0 = Blender Release|Win32
|
||||
{7495FE37-933A-4AC1-BB2A-B3FDB4DE4284}.Debug|Win32.ActiveCfg = Blender Debug|Win32
|
||||
@ -1431,8 +1433,8 @@ Global
|
||||
{D1A9312F-4557-4982-A0F4-4D08508235F4}.Blender Release|Win32.Build.0 = Blender Release|Win32
|
||||
{D1A9312F-4557-4982-A0F4-4D08508235F4}.BlenderPlayer Debug|Win32.ActiveCfg = Blender Debug|Win32
|
||||
{D1A9312F-4557-4982-A0F4-4D08508235F4}.BlenderPlayer Debug|Win32.Build.0 = Blender Debug|Win32
|
||||
{D1A9312F-4557-4982-A0F4-4D08508235F4}.BlenderPlayer Release|Win32.ActiveCfg = Blender Debug|Win32
|
||||
{D1A9312F-4557-4982-A0F4-4D08508235F4}.BlenderPlayer Release|Win32.Build.0 = Blender Debug|Win32
|
||||
{D1A9312F-4557-4982-A0F4-4D08508235F4}.BlenderPlayer Release|Win32.ActiveCfg = Blender Release|Win32
|
||||
{D1A9312F-4557-4982-A0F4-4D08508235F4}.BlenderPlayer Release|Win32.Build.0 = Blender Release|Win32
|
||||
{D1A9312F-4557-4982-A0F4-4D08508235F4}.Debug|Win32.ActiveCfg = Blender Debug|Win32
|
||||
{D1A9312F-4557-4982-A0F4-4D08508235F4}.Debug|Win32.Build.0 = Blender Debug|Win32
|
||||
{D1A9312F-4557-4982-A0F4-4D08508235F4}.Release|Win32.ActiveCfg = Blender Release|Win32
|
||||
@ -1447,8 +1449,8 @@ Global
|
||||
{59567A5B-F63A-4A5C-B33A-0A45C300F4DC}.Blender Debug|Win32.Build.0 = Blender Debug|Win32
|
||||
{59567A5B-F63A-4A5C-B33A-0A45C300F4DC}.Blender Release|Win32.ActiveCfg = Blender Release|Win32
|
||||
{59567A5B-F63A-4A5C-B33A-0A45C300F4DC}.Blender Release|Win32.Build.0 = Blender Release|Win32
|
||||
{59567A5B-F63A-4A5C-B33A-0A45C300F4DC}.BlenderPlayer Debug|Win32.ActiveCfg = Blender Release|Win32
|
||||
{59567A5B-F63A-4A5C-B33A-0A45C300F4DC}.BlenderPlayer Debug|Win32.Build.0 = Blender Release|Win32
|
||||
{59567A5B-F63A-4A5C-B33A-0A45C300F4DC}.BlenderPlayer Debug|Win32.ActiveCfg = Blender Debug|Win32
|
||||
{59567A5B-F63A-4A5C-B33A-0A45C300F4DC}.BlenderPlayer Debug|Win32.Build.0 = Blender Debug|Win32
|
||||
{59567A5B-F63A-4A5C-B33A-0A45C300F4DC}.BlenderPlayer Release|Win32.ActiveCfg = Blender Release|Win32
|
||||
{59567A5B-F63A-4A5C-B33A-0A45C300F4DC}.BlenderPlayer Release|Win32.Build.0 = Blender Release|Win32
|
||||
{59567A5B-F63A-4A5C-B33A-0A45C300F4DC}.Debug|Win32.ActiveCfg = Blender Debug|Win32
|
||||
@ -1465,8 +1467,8 @@ Global
|
||||
{9951A8C9-84FE-4CFE-9E18-9D01CB8E09F3}.Blender Debug|Win32.Build.0 = Blender Debug|Win32
|
||||
{9951A8C9-84FE-4CFE-9E18-9D01CB8E09F3}.Blender Release|Win32.ActiveCfg = Blender Release|Win32
|
||||
{9951A8C9-84FE-4CFE-9E18-9D01CB8E09F3}.Blender Release|Win32.Build.0 = Blender Release|Win32
|
||||
{9951A8C9-84FE-4CFE-9E18-9D01CB8E09F3}.BlenderPlayer Debug|Win32.ActiveCfg = Blender Release|Win32
|
||||
{9951A8C9-84FE-4CFE-9E18-9D01CB8E09F3}.BlenderPlayer Debug|Win32.Build.0 = Blender Release|Win32
|
||||
{9951A8C9-84FE-4CFE-9E18-9D01CB8E09F3}.BlenderPlayer Debug|Win32.ActiveCfg = Blender Debug|Win32
|
||||
{9951A8C9-84FE-4CFE-9E18-9D01CB8E09F3}.BlenderPlayer Debug|Win32.Build.0 = Blender Debug|Win32
|
||||
{9951A8C9-84FE-4CFE-9E18-9D01CB8E09F3}.BlenderPlayer Release|Win32.ActiveCfg = Blender Release|Win32
|
||||
{9951A8C9-84FE-4CFE-9E18-9D01CB8E09F3}.BlenderPlayer Release|Win32.Build.0 = Blender Release|Win32
|
||||
{9951A8C9-84FE-4CFE-9E18-9D01CB8E09F3}.Debug|Win32.ActiveCfg = Blender Debug|Win32
|
||||
@ -1487,8 +1489,8 @@ Global
|
||||
{E8904FB3-F8F7-BC21-87A6-029A57B901F4}.Blender Release|Win32.Build.0 = Blender Release|Win32
|
||||
{E8904FB3-F8F7-BC21-87A6-029A57B901F4}.BlenderPlayer Debug|Win32.ActiveCfg = Blender Debug|Win32
|
||||
{E8904FB3-F8F7-BC21-87A6-029A57B901F4}.BlenderPlayer Debug|Win32.Build.0 = Blender Debug|Win32
|
||||
{E8904FB3-F8F7-BC21-87A6-029A57B901F4}.BlenderPlayer Release|Win32.ActiveCfg = Blender Debug|Win32
|
||||
{E8904FB3-F8F7-BC21-87A6-029A57B901F4}.BlenderPlayer Release|Win32.Build.0 = Blender Debug|Win32
|
||||
{E8904FB3-F8F7-BC21-87A6-029A57B901F4}.BlenderPlayer Release|Win32.ActiveCfg = Blender Release|Win32
|
||||
{E8904FB3-F8F7-BC21-87A6-029A57B901F4}.BlenderPlayer Release|Win32.Build.0 = Blender Release|Win32
|
||||
{E8904FB3-F8F7-BC21-87A6-029A57B901F4}.Debug|Win32.ActiveCfg = 3DPlugin Debug|Win32
|
||||
{E8904FB3-F8F7-BC21-87A6-029A57B901F4}.Debug|Win32.Build.0 = 3DPlugin Debug|Win32
|
||||
{E8904FB3-F8F7-BC21-87A6-029A57B901F4}.Release|Win32.ActiveCfg = 3DPlugin Release|Win32
|
||||
@ -1507,8 +1509,8 @@ Global
|
||||
{87032FD2-9BA0-6B43-BE33-8902BA8F9172}.Blender Release|Win32.Build.0 = Blender Release|Win32
|
||||
{87032FD2-9BA0-6B43-BE33-8902BA8F9172}.BlenderPlayer Debug|Win32.ActiveCfg = Blender Debug|Win32
|
||||
{87032FD2-9BA0-6B43-BE33-8902BA8F9172}.BlenderPlayer Debug|Win32.Build.0 = Blender Debug|Win32
|
||||
{87032FD2-9BA0-6B43-BE33-8902BA8F9172}.BlenderPlayer Release|Win32.ActiveCfg = Blender Debug|Win32
|
||||
{87032FD2-9BA0-6B43-BE33-8902BA8F9172}.BlenderPlayer Release|Win32.Build.0 = Blender Debug|Win32
|
||||
{87032FD2-9BA0-6B43-BE33-8902BA8F9172}.BlenderPlayer Release|Win32.ActiveCfg = Blender Release|Win32
|
||||
{87032FD2-9BA0-6B43-BE33-8902BA8F9172}.BlenderPlayer Release|Win32.Build.0 = Blender Release|Win32
|
||||
{87032FD2-9BA0-6B43-BE33-8902BA8F9172}.Debug|Win32.ActiveCfg = 3DPlugin Debug|Win32
|
||||
{87032FD2-9BA0-6B43-BE33-8902BA8F9172}.Debug|Win32.Build.0 = 3DPlugin Debug|Win32
|
||||
{87032FD2-9BA0-6B43-BE33-8902BA8F9172}.Release|Win32.ActiveCfg = 3DPlugin Release|Win32
|
||||
@ -1525,8 +1527,8 @@ Global
|
||||
{79D0B232-208C-F208-DA71-79B4AC088602}.Blender Debug|Win32.Build.0 = Blender Debug|Win32
|
||||
{79D0B232-208C-F208-DA71-79B4AC088602}.Blender Release|Win32.ActiveCfg = Blender Release|Win32
|
||||
{79D0B232-208C-F208-DA71-79B4AC088602}.Blender Release|Win32.Build.0 = Blender Release|Win32
|
||||
{79D0B232-208C-F208-DA71-79B4AC088602}.BlenderPlayer Debug|Win32.ActiveCfg = Blender Release|Win32
|
||||
{79D0B232-208C-F208-DA71-79B4AC088602}.BlenderPlayer Debug|Win32.Build.0 = Blender Release|Win32
|
||||
{79D0B232-208C-F208-DA71-79B4AC088602}.BlenderPlayer Debug|Win32.ActiveCfg = Blender Debug|Win32
|
||||
{79D0B232-208C-F208-DA71-79B4AC088602}.BlenderPlayer Debug|Win32.Build.0 = Blender Debug|Win32
|
||||
{79D0B232-208C-F208-DA71-79B4AC088602}.BlenderPlayer Release|Win32.ActiveCfg = Blender Release|Win32
|
||||
{79D0B232-208C-F208-DA71-79B4AC088602}.BlenderPlayer Release|Win32.Build.0 = Blender Release|Win32
|
||||
{79D0B232-208C-F208-DA71-79B4AC088602}.Debug|Win32.ActiveCfg = 3D Plugin Debug|Win32
|
||||
@ -1545,8 +1547,8 @@ Global
|
||||
{8BFA4082-773B-D100-BC24-659083BA023F}.Blender Debug|Win32.Build.0 = Blender Debug|Win32
|
||||
{8BFA4082-773B-D100-BC24-659083BA023F}.Blender Release|Win32.ActiveCfg = Blender Release|Win32
|
||||
{8BFA4082-773B-D100-BC24-659083BA023F}.Blender Release|Win32.Build.0 = Blender Release|Win32
|
||||
{8BFA4082-773B-D100-BC24-659083BA023F}.BlenderPlayer Debug|Win32.ActiveCfg = Blender Release|Win32
|
||||
{8BFA4082-773B-D100-BC24-659083BA023F}.BlenderPlayer Debug|Win32.Build.0 = Blender Release|Win32
|
||||
{8BFA4082-773B-D100-BC24-659083BA023F}.BlenderPlayer Debug|Win32.ActiveCfg = Blender Debug|Win32
|
||||
{8BFA4082-773B-D100-BC24-659083BA023F}.BlenderPlayer Debug|Win32.Build.0 = Blender Debug|Win32
|
||||
{8BFA4082-773B-D100-BC24-659083BA023F}.BlenderPlayer Release|Win32.ActiveCfg = Blender Release|Win32
|
||||
{8BFA4082-773B-D100-BC24-659083BA023F}.BlenderPlayer Release|Win32.Build.0 = Blender Release|Win32
|
||||
{8BFA4082-773B-D100-BC24-659083BA023F}.Debug|Win32.ActiveCfg = 3D Plugin Debug|Win32
|
||||
@ -1567,8 +1569,8 @@ Global
|
||||
{37DB6A34-2E91-4ADB-BC1A-02F6D0A5E2F1}.Blender Release|Win32.Build.0 = Blender Release|Win32
|
||||
{37DB6A34-2E91-4ADB-BC1A-02F6D0A5E2F1}.BlenderPlayer Debug|Win32.ActiveCfg = Blender Debug|Win32
|
||||
{37DB6A34-2E91-4ADB-BC1A-02F6D0A5E2F1}.BlenderPlayer Debug|Win32.Build.0 = Blender Debug|Win32
|
||||
{37DB6A34-2E91-4ADB-BC1A-02F6D0A5E2F1}.BlenderPlayer Release|Win32.ActiveCfg = Blender Debug|Win32
|
||||
{37DB6A34-2E91-4ADB-BC1A-02F6D0A5E2F1}.BlenderPlayer Release|Win32.Build.0 = Blender Debug|Win32
|
||||
{37DB6A34-2E91-4ADB-BC1A-02F6D0A5E2F1}.BlenderPlayer Release|Win32.ActiveCfg = Blender Release|Win32
|
||||
{37DB6A34-2E91-4ADB-BC1A-02F6D0A5E2F1}.BlenderPlayer Release|Win32.Build.0 = Blender Release|Win32
|
||||
{37DB6A34-2E91-4ADB-BC1A-02F6D0A5E2F1}.Debug|Win32.ActiveCfg = Blender Debug|Win32
|
||||
{37DB6A34-2E91-4ADB-BC1A-02F6D0A5E2F1}.Debug|Win32.Build.0 = Blender Debug|Win32
|
||||
{37DB6A34-2E91-4ADB-BC1A-02F6D0A5E2F1}.Release|Win32.ActiveCfg = Blender Release|Win32
|
||||
@ -1585,10 +1587,8 @@ Global
|
||||
{76D3102B-7DD2-8BA1-034A-8B19FE2897C2}.Blender Debug|Win32.Build.0 = Blender Debug|Win32
|
||||
{76D3102B-7DD2-8BA1-034A-8B19FE2897C2}.Blender Release|Win32.ActiveCfg = Blender Release|Win32
|
||||
{76D3102B-7DD2-8BA1-034A-8B19FE2897C2}.Blender Release|Win32.Build.0 = Blender Release|Win32
|
||||
{76D3102B-7DD2-8BA1-034A-8B19FE2897C2}.BlenderPlayer Debug|Win32.ActiveCfg = Blender Release|Win32
|
||||
{76D3102B-7DD2-8BA1-034A-8B19FE2897C2}.BlenderPlayer Debug|Win32.Build.0 = Blender Release|Win32
|
||||
{76D3102B-7DD2-8BA1-034A-8B19FE2897C2}.BlenderPlayer Debug|Win32.ActiveCfg = Blender Debug|Win32
|
||||
{76D3102B-7DD2-8BA1-034A-8B19FE2897C2}.BlenderPlayer Release|Win32.ActiveCfg = Blender Release|Win32
|
||||
{76D3102B-7DD2-8BA1-034A-8B19FE2897C2}.BlenderPlayer Release|Win32.Build.0 = Blender Release|Win32
|
||||
{76D3102B-7DD2-8BA1-034A-8B19FE2897C2}.Debug|Win32.ActiveCfg = Blender Debug|Win32
|
||||
{76D3102B-7DD2-8BA1-034A-8B19FE2897C2}.Debug|Win32.Build.0 = Blender Debug|Win32
|
||||
{76D3102B-7DD2-8BA1-034A-8B19FE2897C2}.Release|Win32.ActiveCfg = Blender Release|Win32
|
||||
|
@ -108,7 +108,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
CommandLine="ECHO Moving libraries and export definitions...
MOVE /Y ..\..\bin\blender.lib ..\..\..\build\msvc_9\libs
MOVE /Y ..\..\bin\blender.exp ..\..\..\build\msvc_9\libs
ECHO Copying required 3rd party dlls...
XCOPY /Y ..\..\..\lib\windows\python\lib\python31.dll ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\release\python31.zip ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\release\zlib.pyd ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\openal\lib\wrap_oal.dll ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\openal\lib\OpenAL32.dll ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\gettext\lib\*.dll ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\sdl\lib\*.dll ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\tiff\lib\*.dll ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\pthreads\lib\pthreadVSE2.dll ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\ffmpeg\lib\*.dll ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\sndfile\lib\*.dll ..\..\..\install\msvc_9
ECHO Copying language folder
IF NOT EXIST ..\..\..\install\msvc_9\.blender MKDIR ..\..\..\install\msvc_9\.blender
XCOPY /Y ..\..\bin\.blender ..\..\..\install\msvc_9\.blender /E
ECHO Copying python scripts
IF NOT EXIST ..\..\..\install\msvc_9\.blender\scripts MKDIR ..\..\..\install\msvc_9\.blender\scripts
XCOPY /Y ..\..\release\scripts ..\..\..\install\msvc_9\.blender\scripts /E
ECHO Copying python ui scripts
IF NOT EXIST ..\..\bin\.blender\ui MKDIR ..\..\..\install\msvc_9\.blender\ui
XCOPY /Y ..\..\release\ui ..\..\..\install\msvc_9\.blender\ui /E
ECHO Copying manuals/text
XCOPY/Y ..\..\release\text ..\..\..\install\msvc_9 /E
ECHO Done
"
|
||||
CommandLine="ECHO Moving libraries and export definitions...
MOVE /Y ..\..\bin\blender.lib ..\..\..\build\msvc_9\libs
MOVE /Y ..\..\bin\blender.exp ..\..\..\build\msvc_9\libs
ECHO Copying required 3rd party dlls...
XCOPY /Y ..\..\..\lib\windows\python\lib\python31.dll ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\release\python31.zip ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\zlib\lib\zlib.dll ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\openal\lib\wrap_oal.dll ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\openal\lib\OpenAL32.dll ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\gettext\lib\*.dll ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\sdl\lib\*.dll ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\tiff\lib\*.dll ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\pthreads\lib\pthreadVSE2.dll ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\ffmpeg\lib\*.dll ..\..\..\install\msvc_9
XCOPY /Y ..\..\..\lib\windows\sndfile\lib\*.dll ..\..\..\install\msvc_9
ECHO Copying language folder
IF NOT EXIST ..\..\..\install\msvc_9\.blender MKDIR ..\..\..\install\msvc_9\.blender
XCOPY /Y ..\..\bin\.blender ..\..\..\install\msvc_9\.blender /E
ECHO Copying python scripts
IF NOT EXIST ..\..\..\install\msvc_9\.blender\scripts MKDIR ..\..\..\install\msvc_9\.blender\scripts
XCOPY /Y ..\..\release\scripts ..\..\..\install\msvc_9\.blender\scripts /E
ECHO Copying python ui scripts
IF NOT EXIST ..\..\bin\.blender\ui MKDIR ..\..\..\install\msvc_9\.blender\ui
XCOPY /Y ..\..\release\ui ..\..\..\install\msvc_9\.blender\ui /E
ECHO Copying manuals/text
XCOPY/Y ..\..\release\text ..\..\..\install\msvc_9 /E
ECHO Done
"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
@ -202,7 +202,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
CommandLine="ECHO Moving libraries and export definitions...
MOVE /Y ..\..\bin\debug\blender.lib ..\..\..\build\msvc_9\libs\debug
MOVE /Y ..\..\bin\debug\blender.exp ..\..\..\build\msvc_9\libs\debug
MOVE /Y ..\..\bin\debug\blender.ilk ..\..\..\build\msvc_9\libs\debug
ECHO Copying required 3rd party dlls...
XCOPY /Y ..\..\..\lib\windows\gettext\lib\*.dll ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\sdl\lib\*.dll ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\python\lib\python31_d.dll ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\release\python31.zip ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\release\zlib.pyd ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\openal\lib\wrap_oal.dll ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\openal\lib\OpenAL32.dll ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\CRTL\lib\msvcrtd.dll ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\tiff\lib\*.dll ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\pthreads\lib\pthreadVSE2.dll ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\ffmpeg\lib\*.dll ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\sndfile\lib\*.dll ..\..\..\install\msvc_9d
ECHO Copying language folder
IF NOT EXIST ..\..\..\install\msvc_9d\.blender MKDIR ..\..\..\install\msvc_9d\.blender
XCOPY /Y ..\..\bin\.blender ..\..\..\install\msvc_9d\.blender /E
ECHO Copying python scripts
IF NOT EXIST ..\..\..\install\msvc_9d\.blender\scripts MKDIR ..\..\..\install\msvc_9d\.blender\scripts
XCOPY /Y ..\..\release\scripts ..\..\..\install\msvc_9d\.blender\scripts /E
ECHO Copying python ui scripts
IF NOT EXIST ..\..\..\install\msvc_9d\.blender\ui MKDIR ..\..\..\install\msvc_9d\.blender\ui
XCOPY /Y ..\..\release\ui ..\..\..\install\msvc_9d\.blender\ui /E
ECHO Copying manuals/text
XCOPY/Y ..\..\release\text ..\..\..\install\msvc_9d /E
ECHO Done
"
|
||||
CommandLine="ECHO Copying required 3rd party dlls...
XCOPY /Y ..\..\..\lib\windows\gettext\lib\*.dll ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\sdl\lib\*.dll ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\python\lib\python31_d.dll ..\..\..\install\msvc_9d
COPY /Y ..\..\..\lib\windows\release\python31.zip ..\..\..\install\msvc_9d\python31_d.zip
XCOPY /Y ..\..\..\lib\windows\zlib\lib\zlib.dll ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\openal\lib\wrap_oal.dll ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\openal\lib\OpenAL32.dll ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\CRTL\lib\msvcrtd.dll ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\tiff\lib\*.dll ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\pthreads\lib\pthreadVSE2.dll ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\ffmpeg\lib\*.dll ..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\lib\windows\sndfile\lib\*.dll ..\..\..\install\msvc_9d
ECHO Copying language folder
IF NOT EXIST ..\..\..\install\msvc_9d\.blender MKDIR ..\..\..\install\msvc_9d\.blender
XCOPY /Y ..\..\bin\.blender ..\..\..\install\msvc_9d\.blender /E
ECHO Copying python scripts
IF NOT EXIST ..\..\..\install\msvc_9d\.blender\scripts MKDIR ..\..\..\install\msvc_9d\.blender\scripts
XCOPY /Y ..\..\release\scripts ..\..\..\install\msvc_9d\.blender\scripts /E
ECHO Copying python ui scripts
IF NOT EXIST ..\..\..\install\msvc_9d\.blender\ui MKDIR ..\..\..\install\msvc_9d\.blender\ui
XCOPY /Y ..\..\release\ui ..\..\..\install\msvc_9d\.blender\ui /E
ECHO Copying manuals/text
XCOPY/Y ..\..\release\text ..\..\..\install\msvc_9d /E
ECHO Done
"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
|
@ -119,7 +119,7 @@
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\pthreads\include;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\..\lib\windows\zlib\include;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\lib\windows\ffmpeg\include\msvc;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\build\msvc_9\intern\bsp\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\decimation\include;..\..\..\..\build\msvc_9\intern\elbeem\include;..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\..\build\msvc_9\intern\memutil\include;..\..\..\..\build\msvc_9\intern\smoke\include;..\..\..\source\blender;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\editors\include;..\..\..\source\blender\python;..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\nodes;..\..\..\source\blender\blenloader;..\..\..\source\kernel\gen_system;..\..\..\source\blender\renderconverter;..\..\..\source\blender\render\extern\include;..\..\..\source\gameengine\SoundSystem;..\..\..\..\build\msvc_9\extern\verse\include;..\..\..\..\build\msvc_9\intern\opennl\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\blender\gpu;..\..\..\intern\audaspace\intern;..\..\..\extern\lzo\minilzo;..\..\..\extern\lzma;..\..\..\source\blender\blenfont;..\..\..\source\blender\ikplugin"
|
||||
PreprocessorDefinitions="_DEBUG;WIN32;_LIB;WITH_OPENEXR;WITH_DDS;WITH_BULLET;WITH_FFMPEG"
|
||||
PreprocessorDefinitions="_DEBUG;WIN32;_LIB;WITH_OPENEXR;WITH_DDS;WITH_BULLET;WITH_FFMPEG;GLEW_STATIC"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
DefaultCharIsUnsigned="true"
|
||||
@ -195,7 +195,7 @@
|
||||
Optimization="2"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\pthreads\include;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\..\lib\windows\zlib\include;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\lib\windows\ffmpeg\include\msvc;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\build\msvc_9\intern\bsp\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\decimation\include;..\..\..\..\build\msvc_9\intern\elbeem\include;..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\..\build\msvc_9\intern\memutil\include;..\..\..\..\build\msvc_9\intern\smoke\include;..\..\..\source\blender;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\editors\include;..\..\..\source\blender\python;..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\nodes;..\..\..\source\blender\blenloader;..\..\..\source\kernel\gen_system;..\..\..\source\blender\renderconverter;..\..\..\source\blender\render\extern\include;..\..\..\source\gameengine\SoundSystem;..\..\..\..\build\msvc_9\extern\verse\include;..\..\..\..\build\msvc_9\intern\opennl\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\blender\gpu;..\..\..\intern\audaspace\intern;..\..\..\extern\lzo\minilzo;..\..\..\extern\lzma;..\..\..\source\blender\blenfont;..\..\..\source\blender\ikplugin"
|
||||
PreprocessorDefinitions="NDEBUG;WIN32;_LIB;UNWRAPPER;WITH_OPENEXR;WITH_DDS;WITH_BULLET=1;WITH_FFMPEG"
|
||||
PreprocessorDefinitions="NDEBUG;WIN32;_LIB;UNWRAPPER;WITH_OPENEXR;WITH_DDS;WITH_BULLET=1;WITH_FFMPEG;GLEW_STATIC"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="true"
|
||||
@ -345,7 +345,7 @@
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\pthreads\include;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\..\lib\windows\zlib\include;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\lib\windows\ffmpeg\include\msvc;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\build\msvc_9\intern\bsp\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\decimation\include;..\..\..\..\build\msvc_9\intern\elbeem\include;..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\..\build\msvc_9\intern\memutil\include;..\..\..\..\build\msvc_9\intern\smoke\include;..\..\..\source\blender;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\editors\include;..\..\..\source\blender\python;..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\nodes;..\..\..\source\blender\blenloader;..\..\..\source\kernel\gen_system;..\..\..\source\blender\renderconverter;..\..\..\source\blender\render\extern\include;..\..\..\source\gameengine\SoundSystem;..\..\..\..\build\msvc_9\extern\verse\include;..\..\..\..\build\msvc_9\intern\opennl\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\blender\gpu;..\..\..\intern\audaspace\intern;..\..\..\extern\lzo\minilzo;..\..\..\extern\lzma;..\..\..\source\blender\blenfont;..\..\..\source\blender\ikplugin"
|
||||
PreprocessorDefinitions="_DEBUG;WIN32;_LIB;WITH_FFMPEG"
|
||||
PreprocessorDefinitions="_DEBUG;WIN32;_LIB;WITH_FFMPEG;GLEW_STATIC"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
DefaultCharIsUnsigned="true"
|
||||
@ -420,7 +420,7 @@
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\pthreads\include;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\..\lib\windows\zlib\include;..\..\..\..\lib\windows\sdl\include;..\..\..\..\lib\windows\ffmpeg\include;..\..\..\..\lib\windows\ffmpeg\include\msvc;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\build\msvc_9\intern\bsp\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\decimation\include;..\..\..\..\build\msvc_9\intern\elbeem\include;..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\..\build\msvc_9\intern\memutil\include;..\..\..\..\build\msvc_9\intern\smoke\include;..\..\..\source\blender;..\..\..\source\blender\avi;..\..\..\source\blender\imbuf;..\..\..\source\blender\editors\include;..\..\..\source\blender\python;..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\nodes;..\..\..\source\blender\blenloader;..\..\..\source\kernel\gen_system;..\..\..\source\blender\renderconverter;..\..\..\source\blender\render\extern\include;..\..\..\source\gameengine\SoundSystem;..\..\..\..\build\msvc_9\extern\verse\include;..\..\..\..\build\msvc_9\intern\opennl\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\blender\gpu;..\..\..\intern\audaspace\intern;..\..\..\extern\lzo\minilzo;..\..\..\extern\lzma;..\..\..\source\blender\blenfont;..\..\..\source\blender\ikplugin"
|
||||
PreprocessorDefinitions="NDEBUG;WIN32;_LIB;UNWRAPPER;WITH_FFMPEG"
|
||||
PreprocessorDefinitions="NDEBUG;WIN32;_LIB;UNWRAPPER;WITH_FFMPEG;GLEW_STATIC"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="true"
|
||||
|
@ -119,7 +119,7 @@
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\smoke\include;..\..\..\source\blender\imbuf;..\..\..\source\blender\gpu"
|
||||
PreprocessorDefinitions="_DEBUG,WIN32,_LIB,DWORDS_LITTLEENDIAN"
|
||||
PreprocessorDefinitions="_DEBUG;WIN32;_LIB;DWORDS_LITTLEENDIAN;GLEW_STATIC"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
DefaultCharIsUnsigned="false"
|
||||
@ -195,7 +195,7 @@
|
||||
Optimization="2"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\smoke\include;..\..\..\source\blender\imbuf;..\..\..\source\blender\gpu"
|
||||
PreprocessorDefinitions="NDEBUG,WIN32,_LIB,DWORDS_LITTLEENDIAN"
|
||||
PreprocessorDefinitions="NDEBUG;WIN32;_LIB;DWORDS_LITTLEENDIAN;GLEW_STATIC"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="true"
|
||||
@ -345,7 +345,7 @@
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\smoke\include;..\..\..\source\blender\imbuf;..\..\..\source\blender\gpu"
|
||||
PreprocessorDefinitions="_DEBUG,WIN32,_LIB,DWORDS_LITTLEENDIAN"
|
||||
PreprocessorDefinitions="_DEBUG;WIN32;_LIB;DWORDS_LITTLEENDIAN;GLEW_STATIC"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
DefaultCharIsUnsigned="false"
|
||||
@ -420,7 +420,7 @@
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\makesdna;..\..\..\source\blender\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\smoke\include;..\..\..\source\blender\imbuf;..\..\..\source\blender\gpu"
|
||||
PreprocessorDefinitions="NDEBUG,WIN32,_LIB,DWORDS_LITTLEENDIAN"
|
||||
PreprocessorDefinitions="NDEBUG;WIN32;_LIB;DWORDS_LITTLEENDIAN;GLEW_STATIC"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="true"
|
||||
|
@ -568,6 +568,22 @@
|
||||
<File
|
||||
RelativePath="..\..\..\source\blender\imbuf\intern\openexr\openexr_api.cpp"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="BlenderPlayer Debug|Win32"
|
||||
ExcludedFromBuild="true"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
<FileConfiguration
|
||||
Name="BlenderPlayer Release|Win32"
|
||||
ExcludedFromBuild="true"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\source\blender\imbuf\intern\png.c"
|
||||
|
@ -141,7 +141,7 @@
|
||||
Optimization="2"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\source\blender;..\..\..\source\blender\blenlib;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\editors\include;..\..\..\source\blender\blenkernel;..\..\..\..\lib\windows\pthreads\include;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\windowmanager;..\..\..\source\blender\imbuf"
|
||||
PreprocessorDefinitions="NDEBUG,WIN32,_CONSOLE"
|
||||
PreprocessorDefinitions="NDEBUG,WIN32,_CONSOLE;GAMEBLENDER=1"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="true"
|
||||
@ -327,7 +327,7 @@
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\source\blender;..\..\..\source\blender\blenlib;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\editors\include;..\..\..\source\blender\blenkernel;..\..\..\..\lib\windows\pthreads\include;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\windowmanager;..\..\..\source\blender\imbuf"
|
||||
PreprocessorDefinitions="_DEBUG;WIN32;_CONSOLE"
|
||||
PreprocessorDefinitions="_DEBUG;WIN32;_CONSOLE;GAMEBLENDER=1"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
DefaultCharIsUnsigned="true"
|
||||
@ -423,7 +423,7 @@
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\source\blender;..\..\..\source\blender\blenlib;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\editors\include;..\..\..\source\blender\blenkernel;..\..\..\..\lib\windows\pthreads\include;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\windowmanager;..\..\..\source\blender\imbuf"
|
||||
PreprocessorDefinitions="_DEBUG,WIN32,_CONSOLE"
|
||||
PreprocessorDefinitions="_DEBUG,WIN32,_CONSOLE;GAMEBLENDER=1"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
DefaultCharIsUnsigned="true"
|
||||
@ -519,7 +519,7 @@
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\source\blender;..\..\..\source\blender\blenlib;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\editors\include;..\..\..\source\blender\blenkernel;..\..\..\..\lib\windows\pthreads\include;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\windowmanager;..\..\..\source\blender\imbuf"
|
||||
PreprocessorDefinitions="NDEBUG,WIN32,_CONSOLE"
|
||||
PreprocessorDefinitions="NDEBUG,WIN32,_CONSOLE;GAMEBLENDER=1"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="true"
|
||||
|
@ -44,7 +44,7 @@
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\lib\windows\pthreads\include;..\..\..\source\blender\imbuf;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\ikplugin;..\..\..\source\blender\windowmanager;..\..\..\source\blender\editors\include;..\..\..\source\blender\render\extern\include"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;GAMEBLENDER=1"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
@ -115,7 +115,7 @@
|
||||
Optimization="2"
|
||||
EnableIntrinsicFunctions="true"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\lib\windows\pthreads\include;..\..\..\source\blender\imbuf;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\blenlib;..\..\..\source\blender\blenkernel;..\..\..\source\blender\ikplugin;..\..\..\source\blender\windowmanager;..\..\..\source\blender\editors\include;..\..\..\source\blender\render\extern\include"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;GAMEBLENDER=1"
|
||||
MinimalRebuild="true"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="false"
|
||||
|
@ -44,7 +44,7 @@
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\pthreads\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\ghost\include;..\..\..\..\build\msvc_9\intern\memutil\include;..\..\..\source\blender\blenlib;..\..\..\source\blender\imbuf;..\..\..\source\blender\python;..\..\..\source\blender\blenkernel;..\..\..\source\blender\blenfont;..\..\..\source\blender\blenloader;..\..\..\source\blender\gpu;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\kernel\gen_system;..\..\..\source\kernel\gen_messaging;..\..\..\source\blender\windowmanager;..\..\..\source\blender\editors\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\radiosity\extern\include;..\..\..\source\blender\collada"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;WITH_COLLADA"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;WITH_COLLADA;GLEW_STATIC"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
@ -114,7 +114,146 @@
|
||||
Optimization="2"
|
||||
EnableIntrinsicFunctions="true"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\pthreads\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\ghost\include;..\..\..\..\build\msvc_9\intern\memutil\include;..\..\..\source\blender\blenlib;..\..\..\source\blender\imbuf;..\..\..\source\blender\python;..\..\..\source\blender\blenkernel;..\..\..\source\blender\blenfont;..\..\..\source\blender\blenloader;..\..\..\source\blender\gpu;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\kernel\gen_system;..\..\..\source\kernel\gen_messaging;..\..\..\source\blender\windowmanager;..\..\..\source\blender\editors\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\radiosity\extern\include;..\..\..\source\blender\collada"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;WITH_COLLADA"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;WITH_COLLADA;GLEW_STATIC"
|
||||
MinimalRebuild="true"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="false"
|
||||
UsePrecompiledHeader="0"
|
||||
PrecompiledHeaderFile="..\..\..\..\build\msvc_9\source\blender\render\release\WM_windowmanager.pch"
|
||||
AssemblerListingLocation="..\..\..\..\build\msvc_9\source\blender\windowmanager\release\"
|
||||
ObjectFile="..\..\..\..\build\msvc_9\source\blender\windowmanager\release\"
|
||||
ProgramDataBaseFileName="..\..\..\..\build\msvc_9\source\blender\windowmanager\release\"
|
||||
WarningLevel="3"
|
||||
DebugInformationFormat="3"
|
||||
CompileAs="0"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="BlenderPlayer Debug|Win32"
|
||||
OutputDirectory="$(ConfigurationName)"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="4"
|
||||
UseOfMFC="0"
|
||||
ATLMinimizesCRunTimeLibraryUsage="false"
|
||||
CharacterSet="2"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\pthreads\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\ghost\include;..\..\..\..\build\msvc_9\intern\memutil\include;..\..\..\source\blender\blenlib;..\..\..\source\blender\imbuf;..\..\..\source\blender\python;..\..\..\source\blender\blenkernel;..\..\..\source\blender\blenfont;..\..\..\source\blender\blenloader;..\..\..\source\blender\gpu;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\kernel\gen_system;..\..\..\source\kernel\gen_messaging;..\..\..\source\blender\windowmanager;..\..\..\source\blender\editors\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\radiosity\extern\include;..\..\..\source\blender\collada"
|
||||
PreprocessorDefinitions="WIN32;_DEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;GLEW_STATIC"
|
||||
MinimalRebuild="true"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
UsePrecompiledHeader="0"
|
||||
PrecompiledHeaderFile="..\..\..\..\build\msvc_9\source\blender\render\debug\WM_windowmanager.pch"
|
||||
AssemblerListingLocation="..\..\..\..\build\msvc_9\source\blender\windowmanager\debug\"
|
||||
ObjectFile="..\..\..\..\build\msvc_9\source\blender\windowmanager\debug\"
|
||||
ProgramDataBaseFileName="..\..\..\..\build\msvc_9\source\blender\windowmanager\debug\"
|
||||
WarningLevel="3"
|
||||
SuppressStartupBanner="true"
|
||||
DebugInformationFormat="3"
|
||||
CompileAs="0"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCManagedResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCResourceCompilerTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPreLinkEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCLibrarianTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCALinkTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXDCMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCBscMakeTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCFxCopTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
Name="BlenderPlayer Release|Win32"
|
||||
OutputDirectory="$(ConfigurationName)"
|
||||
IntermediateDirectory="$(ConfigurationName)"
|
||||
ConfigurationType="4"
|
||||
CharacterSet="1"
|
||||
WholeProgramOptimization="1"
|
||||
>
|
||||
<Tool
|
||||
Name="VCPreBuildEventTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCXMLDataGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCWebServiceProxyGeneratorTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCMIDLTool"
|
||||
/>
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
EnableIntrinsicFunctions="true"
|
||||
AdditionalIncludeDirectories="..\..\..\..\lib\windows\pthreads\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\intern\ghost\include;..\..\..\..\build\msvc_9\intern\memutil\include;..\..\..\source\blender\blenlib;..\..\..\source\blender\imbuf;..\..\..\source\blender\python;..\..\..\source\blender\blenkernel;..\..\..\source\blender\blenfont;..\..\..\source\blender\blenloader;..\..\..\source\blender\gpu;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\kernel\gen_system;..\..\..\source\kernel\gen_messaging;..\..\..\source\blender\windowmanager;..\..\..\source\blender\editors\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\source\blender\render\extern\include;..\..\..\source\blender\radiosity\extern\include;..\..\..\source\blender\collada"
|
||||
PreprocessorDefinitions="WIN32;NDEBUG;_LIB;_CRT_SECURE_NO_WARNINGS;GLEW_STATIC"
|
||||
MinimalRebuild="true"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="false"
|
||||
|
@ -44,7 +44,7 @@
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\build\msvc_9\intern\soundsystem\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\solid\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender;..\..\..\source\blender\misc;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\include;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\blenloader;..\..\..\source\blender\blenkernel;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\ketsji;..\..\..\source\gameengine\network;..\..\..\source\gameengine\rasterizer;..\..\..\source\gameengine\Converter;..\..\..\source\gameengine\gamelogic;..\..\..\source\gameengine\scenegraph;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\Physics\Sumo;..\..\..\source\gameengine\Physics\common;..\..\..\source\gameengine\network\loopbacknetwork;..\..\..\source\gameengine\rasterizer\ras_openglrasterizer;..\..\..\source\gameengine\Physics\Sumo\Fuzzics\include;..\..\..\source\blender\gpu;..\..\..\source\blender\windowmanager;..\..\..\source\blender\blenfont;..\..\..\intern\audaspace\intern"
|
||||
PreprocessorDefinitions="WIN32;_LIB;_DEBUG;WITH_GLEXT;WITH_FFMPEG"
|
||||
PreprocessorDefinitions="WIN32;_LIB;_DEBUG;WITH_GLEXT;WITH_FFMPEG;GLEW_STATIC"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
DefaultCharIsUnsigned="true"
|
||||
@ -121,7 +121,7 @@
|
||||
Optimization="2"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\build\msvc_9\intern\soundsystem\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\solid\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender;..\..\..\source\blender\misc;..\..\..\source\blender\imbuf;..\..\..\source\blender\blenlib;..\..\..\source\blender\include;..\..\..\source\blender\makesdna;..\..\..\source\blender\makesrna;..\..\..\source\blender\blenloader;..\..\..\source\blender\blenkernel;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\ketsji;..\..\..\source\gameengine\network;..\..\..\source\gameengine\rasterizer;..\..\..\source\gameengine\Converter;..\..\..\source\gameengine\gamelogic;..\..\..\source\gameengine\scenegraph;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\Physics\Sumo;..\..\..\source\gameengine\Physics\common;..\..\..\source\gameengine\network\loopbacknetwork;..\..\..\source\gameengine\rasterizer\ras_openglrasterizer;..\..\..\source\gameengine\Physics\Sumo\Fuzzics\include;..\..\..\source\blender\gpu;..\..\..\source\blender\windowmanager;..\..\..\source\blender\blenfont;..\..\..\intern\audaspace\intern"
|
||||
PreprocessorDefinitions="NDEBUG;WIN32;_LIB;USE_SUMO_SOLID;WITH_GLEXT;WITH_FFMPEG"
|
||||
PreprocessorDefinitions="NDEBUG;WIN32;_LIB;USE_SUMO_SOLID;WITH_GLEXT;WITH_FFMPEG;GLEW_STATIC"
|
||||
StringPooling="true"
|
||||
BasicRuntimeChecks="0"
|
||||
RuntimeLibrary="0"
|
||||
|
@ -525,10 +525,6 @@
|
||||
RelativePath="..\..\..\source\gameengine\Converter\BL_SkinDeformer.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\source\gameengine\Converter\BL_SkinMeshObject.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\source\gameengine\Converter\BlenderWorldInfo.cpp"
|
||||
>
|
||||
@ -561,6 +557,10 @@
|
||||
RelativePath="..\..\..\source\gameengine\Converter\KX_IpoConvert.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\source\gameengine\Converter\KX_SoftBodyDeformer.cpp"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
<Filter
|
||||
Name="Header Files"
|
||||
@ -614,10 +614,6 @@
|
||||
RelativePath="..\..\..\source\gameengine\Converter\BL_SkinDeformer.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\source\gameengine\Converter\BL_SkinMeshObject.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\source\gameengine\Converter\BlenderWorldInfo.h"
|
||||
>
|
||||
@ -650,6 +646,10 @@
|
||||
RelativePath="..\..\..\source\gameengine\Converter\KX_IpoConvert.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\source\gameengine\Converter\KX_SoftBodyDeformer.h"
|
||||
>
|
||||
</File>
|
||||
</Filter>
|
||||
</Files>
|
||||
<Globals>
|
||||
|
@ -342,10 +342,6 @@
|
||||
RelativePath="..\..\..\..\source\gameengine\GamePlayer\common\GPC_MouseDevice.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\source\gameengine\GamePlayer\common\GPC_PolygonMaterial.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\source\gameengine\GamePlayer\common\GPC_RawImage.cpp"
|
||||
>
|
||||
|
@ -44,7 +44,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\build\msvc_9\intern\ghost\include;..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\intern\openal\include;..\..\..\..\..\build\msvc_9\intern\opennl\include;..\..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\..\lib\windows\python\include\python3.1;..\..\..\..\source\blender\include;..\..\..\..\source\blender\imbuf;..\..\..\..\source\blender\blenlib;..\..\..\..\source\blender\blenkernel;..\..\..\..\source\blender\makesdna;..\..\..\..\source\blender\blenloader;..\..\..\..\source\blender\readblenfile;..\..\..\..\source\blender\render\extern\include;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\kernel\gen_messaging;..\..\..\..\source\gameengine\ketsji;..\..\..\..\source\gameengine\Physics;..\..\..\..\source\gameengine\network;..\..\..\..\source\gameengine\rasterizer;..\..\..\..\source\gameengine\converter;..\..\..\..\source\gameengine\gamelogic;..\..\..\..\source\gameengine\expressions;..\..\..\..\source\gameengine\scenegraph;..\..\..\..\source\gameengine\Physics\Ode;..\..\..\..\source\gameengine\soundsystem;..\..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\..\source\gameengine\gameplayer\common;..\..\..\..\source\gameengine\soundsystem\snd_openal;..\..\..\..\source\gameengine\network\loopbacknetwork;..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer;..\..\..\..\source\gameengine\gameplayer\common\windows;..\..\..\..\source\sumo\include;..\..\..\..\source\sumo\fuzzics\include;..\..\..\..\source\blender\gpu;..\..\..\..\..\build\msvc_9\intern\guardedalloc\include"
|
||||
AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\build\msvc_9\intern\ghost\include;..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\intern\openal\include;..\..\..\..\..\build\msvc_9\intern\opennl\include;..\..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\..\lib\windows\python\include\python3.1;..\..\..\..\source\blender\include;..\..\..\..\source\blender\imbuf;..\..\..\..\source\blender\blenlib;..\..\..\..\source\blender\blenkernel;..\..\..\..\source\blender\makesdna;..\..\..\..\source\blender\makesrna;..\..\..\..\source\blender\blenloader;..\..\..\..\source\blender\readblenfile;..\..\..\..\source\blender\render\extern\include;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\kernel\gen_messaging;..\..\..\..\source\gameengine\ketsji;..\..\..\..\source\gameengine\Physics;..\..\..\..\source\gameengine\network;..\..\..\..\source\gameengine\rasterizer;..\..\..\..\source\gameengine\converter;..\..\..\..\source\gameengine\gamelogic;..\..\..\..\source\gameengine\expressions;..\..\..\..\source\gameengine\scenegraph;..\..\..\..\source\gameengine\Physics\Ode;..\..\..\..\source\gameengine\soundsystem;..\..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\..\source\gameengine\gameplayer\common;..\..\..\..\source\gameengine\soundsystem\snd_openal;..\..\..\..\source\gameengine\network\loopbacknetwork;..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer;..\..\..\..\source\gameengine\gameplayer\common\windows;..\..\..\..\source\sumo\include;..\..\..\..\source\sumo\fuzzics\include;..\..\..\..\source\blender\gpu;..\..\..\..\..\build\msvc_9\intern\guardedalloc\include"
|
||||
PreprocessorDefinitions="WIN32,_CONSOLE,dSINGLE, _DEBUG;WITH_FFMPEG"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
@ -72,12 +72,12 @@
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalOptions="/MACHINE:I386
"
|
||||
AdditionalDependencies="ws2_32.lib vfw32.lib odbc32.lib odbccp32.lib opengl32.lib glu32.lib OpenAL32.lib wrap_oal.lib libjpeg.lib dxguid.lib libeay32.lib libpng.lib libz.lib qtmlClient.lib SDL.lib freetype2ST.lib python31_d.lib pthreadVSE2.lib pthreadVC2.lib Half_d.lib Iex_d.lib IlmImf_d.lib IlmThread_d.lib Imath_d.lib avcodec-52.lib avformat-52.lib avutil-50.lib swscale-0.lib avdevice-52.lib"
|
||||
AdditionalDependencies="libsamplerate.lib ws2_32.lib vfw32.lib odbc32.lib odbccp32.lib opengl32.lib glu32.lib OpenAL32.lib wrap_oal.lib libjpeg.lib dxguid.lib libeay32.lib libpng_st.lib libz.lib qtmlClient.lib SDL.lib freetype2ST.lib python31_d.lib pthreadVSE2.lib pthreadVC2.lib Half_d.lib Iex_d.lib IlmImf_d.lib IlmThread_d.lib Imath_d.lib avcodec-52.lib avformat-52.lib avutil-50.lib swscale-0.lib avdevice-52.lib"
|
||||
ShowProgress="0"
|
||||
OutputFile="..\..\..\..\bin\debug\blenderplayer.exe"
|
||||
OutputFile="..\..\..\..\..\install\msvc_9d\blenderplayer.exe"
|
||||
LinkIncremental="2"
|
||||
SuppressStartupBanner="true"
|
||||
AdditionalLibraryDirectories="..\..\..\..\..\lib\windows\sdl\lib;..\..\..\..\..\lib\windows\zlib\lib;..\..\..\..\..\lib\windows\ode\lib;..\..\..\..\..\lib\windows\png\lib;..\..\..\..\..\lib\windows\jpeg\lib;..\..\..\..\..\lib\windows\fmod\lib;..\..\..\..\..\lib\windows\openal\lib;..\..\..\..\..\lib\windows\freetype\lib;..\..\..\..\..\lib\windows\openexr\lib_vs2008;..\..\..\..\..\lib\windows\python\lib;..\..\..\..\..\lib\windows\openssl\lib;..\..\..\..\..\lib\windows\QTDevWin\Libraries;..\..\..\..\..\lib\windows\pthreads\lib;..\..\..\..\..\lib\windows\ffmpeg\lib"
|
||||
AdditionalLibraryDirectories="..\..\..\..\..\lib\windows\sdl\lib;..\..\..\..\..\lib\windows\zlib\lib;..\..\..\..\..\lib\windows\ode\lib;..\..\..\..\..\lib\windows\png\lib;..\..\..\..\..\lib\windows\jpeg\lib;..\..\..\..\..\lib\windows\fmod\lib;..\..\..\..\..\lib\windows\openal\lib;..\..\..\..\..\lib\windows\freetype\lib;..\..\..\..\..\lib\windows\openexr\lib_vs2008;..\..\..\..\..\lib\windows\python\lib;..\..\..\..\..\lib\windows\openssl\lib;..\..\..\..\..\lib\windows\QTDevWin\Libraries;..\..\..\..\..\lib\windows\pthreads\lib;..\..\..\..\..\lib\windows\ffmpeg\lib;..\..\..\..\..\lib\windows\samplerate\lib"
|
||||
IgnoreDefaultLibraryNames="libc.lib;libcmt.lib;msvcrt.lib;libcd.lib;msvcrtd.lib"
|
||||
GenerateDebugInformation="true"
|
||||
ProgramDatabaseFile="..\..\..\..\..\build\msvc_9\libs\debug\blenderplayer.pdb"
|
||||
@ -105,7 +105,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
CommandLine="ECHO Moving libraries and export definitions...
MOVE /Y ..\..\..\..\bin\debug\blenderplayer.lib ..\..\..\..\..\build\msvc_9\libs\debug
MOVE /Y ..\..\..\..\bin\debug\blenderplayer.exp ..\..\..\..\..\build\msvc_9\libs\debug
MOVE /Y ..\..\..\..\bin\debug\blenderplayer.ilk ..\..\..\..\..\build\msvc_9\libs\debug
ECHO Copying required 3rd party dlls...
XCOPY /Y ..\..\..\..\..\lib\windows\python\lib\python31_d.dll ..\..\..\..\bin\debug
XCOPY /Y ..\..\..\..\..\lib\windows\sdl\lib\SDL.dll ..\..\..\..\bin\debug
XCOPY /Y ..\..\..\..\..\lib\windows\png\lib\libpng.dll ..\..\..\..\bin\debug
XCOPY /Y ..\..\..\..\..\lib\windows\zlib\lib\zlib.dll ..\..\..\..\bin\debug
XCOPY /Y ..\..\..\..\..\lib\windows\ffmpeg\lib\*.dll ..\..\..\..\bin\debug
XCOPY /Y ..\..\..\..\..\lib\windows\CRTL\lib\msvcrtd.dll ..\..\..\..\bin\debug
ECHO Done
"
|
||||
CommandLine="ECHO Copying required 3rd party dlls...
XCOPY /Y ..\..\..\..\..\lib\windows\gettext\lib\*.dll ..\..\..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\..\..\lib\windows\sdl\lib\*.dll ..\..\..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\..\..\lib\windows\python\lib\python31_d.dll ..\..\..\..\..\install\msvc_9d
COPY /Y ..\..\..\..\..\lib\windows\release\python31.zip ..\..\..\..\..\install\msvc_9d\python31_d.zip
XCOPY /Y ..\..\..\..\..\lib\windows\zlib\lib\zlib.dll ..\..\..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\..\..\lib\windows\openal\lib\wrap_oal.dll ..\..\..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\..\..\lib\windows\openal\lib\OpenAL32.dll ..\..\..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\..\..\lib\windows\CRTL\lib\msvcrtd.dll ..\..\..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\..\..\lib\windows\tiff\lib\*.dll ..\..\..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\..\..\lib\windows\pthreads\lib\pthreadVSE2.dll ..\..\..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\..\..\lib\windows\ffmpeg\lib\*.dll ..\..\..\..\..\install\msvc_9d
XCOPY /Y ..\..\..\..\..\lib\windows\sndfile\lib\*.dll ..\..\..\..\..\install\msvc_9d
"
|
||||
/>
|
||||
</Configuration>
|
||||
<Configuration
|
||||
@ -138,7 +138,7 @@
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\build\msvc_9\intern\ghost\include;..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\intern\openal\include;..\..\..\..\..\build\msvc_9\intern\opennl\include;..\..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\..\lib\windows\python\include\python3.1;..\..\..\..\source\blender\include;..\..\..\..\source\blender\imbuf;..\..\..\..\source\blender\blenlib;..\..\..\..\source\blender\blenkernel;..\..\..\..\source\blender\makesdna;..\..\..\..\source\blender\blenloader;..\..\..\..\source\blender\readblenfile;..\..\..\..\source\blender\render\extern\include;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\kernel\gen_messaging;..\..\..\..\source\gameengine\ketsji;..\..\..\..\source\gameengine\Physics;..\..\..\..\source\gameengine\network;..\..\..\..\source\gameengine\rasterizer;..\..\..\..\source\gameengine\converter;..\..\..\..\source\gameengine\gamelogic;..\..\..\..\source\gameengine\expressions;..\..\..\..\source\gameengine\scenegraph;..\..\..\..\source\gameengine\Physics\Ode;..\..\..\..\source\gameengine\soundsystem;..\..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\..\source\gameengine\gameplayer\common;..\..\..\..\source\gameengine\soundsystem\snd_openal;..\..\..\..\source\gameengine\network\loopbacknetwork;..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer;..\..\..\..\source\gameengine\gameplayer\common\windows;..\..\..\..\source\sumo\include;..\..\..\..\source\sumo\fuzzics\include;..\..\..\..\source\blender\gpu;..\..\..\..\..\build\msvc_9\intern\guardedalloc\include"
|
||||
AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\build\msvc_9\intern\ghost\include;..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\intern\openal\include;..\..\..\..\..\build\msvc_9\intern\opennl\include;..\..\..\..\..\build\msvc_9\intern\bmfont\include;..\..\..\..\..\build\msvc_9\intern\iksolver\include;..\..\..\..\..\build\msvc_9\intern\SoundSystem\include;..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\..\lib\windows\python\include\python3.1;..\..\..\..\source\blender\include;..\..\..\..\source\blender\imbuf;..\..\..\..\source\blender\blenlib;..\..\..\..\source\blender\blenkernel;..\..\..\..\source\blender\makesdna;..\..\..\..\source\blender\makesrna;..\..\..\..\source\blender\blenloader;..\..\..\..\source\blender\readblenfile;..\..\..\..\source\blender\render\extern\include;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\kernel\gen_messaging;..\..\..\..\source\gameengine\ketsji;..\..\..\..\source\gameengine\Physics;..\..\..\..\source\gameengine\network;..\..\..\..\source\gameengine\rasterizer;..\..\..\..\source\gameengine\converter;..\..\..\..\source\gameengine\gamelogic;..\..\..\..\source\gameengine\expressions;..\..\..\..\source\gameengine\scenegraph;..\..\..\..\source\gameengine\Physics\Ode;..\..\..\..\source\gameengine\soundsystem;..\..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\..\source\gameengine\gameplayer\common;..\..\..\..\source\gameengine\soundsystem\snd_openal;..\..\..\..\source\gameengine\network\loopbacknetwork;..\..\..\..\source\gameengine\rasterizer\ras_openglrasterizer;..\..\..\..\source\gameengine\gameplayer\common\windows;..\..\..\..\source\sumo\include;..\..\..\..\source\sumo\fuzzics\include;..\..\..\..\source\blender\gpu;..\..\..\..\..\build\msvc_9\intern\guardedalloc\include"
|
||||
PreprocessorDefinitions="WIN32,NDEBUG,_CONSOLE;WITH_FFMPEG"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
@ -167,11 +167,11 @@
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalOptions="/MACHINE:I386"
|
||||
AdditionalDependencies="odelib.lib ws2_32.lib vfw32.lib odbc32.lib odbccp32.lib opengl32.lib glu32.lib OpenAL32.lib wrap_oal.lib libjpeg.lib dxguid.lib libeay32.lib libpng.lib libz.lib qtmlClient.lib SDL.lib freetype2ST.lib python31.lib pthreadVSE2.lib pthreadVC2.lib Half.lib Iex.lib IlmImf.lib IlmThread.lib Imath.lib avcodec-52.lib avformat-52.lib avutil-50.lib swscale-0.lib avdevice-52.lib"
|
||||
OutputFile="..\..\..\..\bin\blenderplayer.exe"
|
||||
AdditionalDependencies="libsamplerate.lib odelib.lib ws2_32.lib vfw32.lib odbc32.lib odbccp32.lib opengl32.lib glu32.lib OpenAL32.lib wrap_oal.lib libjpeg.lib dxguid.lib libeay32.lib libpng_st.lib libz.lib qtmlClient.lib SDL.lib freetype2ST.lib python31.lib pthreadVSE2.lib pthreadVC2.lib Half.lib Iex.lib IlmImf.lib IlmThread.lib Imath.lib avcodec-52.lib avformat-52.lib avutil-50.lib swscale-0.lib avdevice-52.lib"
|
||||
OutputFile="..\..\..\..\..\install\msvc_9\blenderplayer.exe"
|
||||
LinkIncremental="1"
|
||||
SuppressStartupBanner="true"
|
||||
AdditionalLibraryDirectories="..\..\..\..\..\lib\windows\sdl\lib;..\..\..\..\..\lib\windows\zlib\lib;..\..\..\..\..\lib\windows\ode\lib;..\..\..\..\..\lib\windows\png\lib;..\..\..\..\..\lib\windows\jpeg\lib;..\..\..\..\..\lib\windows\fmod\lib;..\..\..\..\..\lib\windows\openal\lib;..\..\..\..\..\lib\windows\freetype\lib;..\..\..\..\..\lib\windows\openexr\lib_vs2008;..\..\..\..\..\lib\windows\python\lib;..\..\..\..\..\lib\windows\openssl\lib;..\..\..\..\..\lib\windows\QTDevWin\Libraries;..\..\..\..\..\lib\windows\pthreads\lib;..\..\..\..\..\lib\windows\ffmpeg\lib"
|
||||
AdditionalLibraryDirectories="..\..\..\..\..\lib\windows\sdl\lib;..\..\..\..\..\lib\windows\zlib\lib;..\..\..\..\..\lib\windows\ode\lib;..\..\..\..\..\lib\windows\png\lib;..\..\..\..\..\lib\windows\jpeg\lib;..\..\..\..\..\lib\windows\fmod\lib;..\..\..\..\..\lib\windows\openal\lib;..\..\..\..\..\lib\windows\freetype\lib;..\..\..\..\..\lib\windows\openexr\lib_vs2008;..\..\..\..\..\lib\windows\python\lib;..\..\..\..\..\lib\windows\openssl\lib;..\..\..\..\..\lib\windows\QTDevWin\Libraries;..\..\..\..\..\lib\windows\pthreads\lib;..\..\..\..\..\lib\windows\ffmpeg\lib;..\..\..\..\..\lib\windows\samplerate\lib"
|
||||
IgnoreDefaultLibraryNames="libc.lib, msvcrt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib"
|
||||
GenerateDebugInformation="true"
|
||||
ProgramDatabaseFile="..\..\..\..\..\build\msvc_9\libs\blenderplayer.pdb"
|
||||
@ -199,7 +199,7 @@
|
||||
/>
|
||||
<Tool
|
||||
Name="VCPostBuildEventTool"
|
||||
CommandLine="ECHO Moving libraries and export definitions...
MOVE /Y ..\..\..\..\bin\blenderplayer.lib ..\..\..\..\..\build\msvc_9\libs
MOVE /Y ..\..\..\..\bin\blenderplayer.exp ..\..\..\..\..\build\msvc_9\libs
ECHO Copying required 3rd party dlls...
XCOPY /Y ..\..\..\..\..\lib\windows\python\lib\python31.dll ..\..\..\..\bin
XCOPY /Y ..\..\..\..\..\lib\windows\sdl\lib\SDL.dll ..\..\..\..\bin
XCOPY /Y ..\..\..\..\..\lib\windows\png\lib\libpng.dll ..\..\..\..\bin
XCOPY /Y ..\..\..\..\..\lib\windows\zlib\lib\zlib.dll ..\..\..\..\bin
XCOPY /Y ..\..\..\..\..\lib\windows\ffmpeg\lib\*.dll ..\..\..\..\bin
ECHO Done
"
|
||||
CommandLine="ECHO Copying required 3rd party dlls...
XCOPY /Y ..\..\..\..\..\lib\windows\gettext\lib\*.dll ..\..\..\..\..\install\msvc_9
XCOPY /Y ..\..\..\..\..\lib\windows\sdl\lib\*.dll ..\..\..\..\..\install\msvc_9
XCOPY /Y ..\..\..\..\..\lib\windows\python\lib\python31.dll ..\..\..\..\..\install\msvc_9
XCOPY /Y ..\..\..\..\..\lib\windows\release\python31.zip ..\..\..\..\..\install\msvc_9
XCOPY /Y ..\..\..\..\..\lib\windows\zlib\lib\zlib.dll ..\..\..\..\..\install\msvc_9
XCOPY /Y ..\..\..\..\..\lib\windows\openal\lib\wrap_oal.dll ..\..\..\..\..\install\msvc_9
XCOPY /Y ..\..\..\..\..\lib\windows\openal\lib\OpenAL32.dll ..\..\..\..\..\install\msvc_9
XCOPY /Y ..\..\..\..\..\lib\windows\tiff\lib\*.dll ..\..\..\..\..\install\msvc_9
XCOPY /Y ..\..\..\..\..\lib\windows\pthreads\lib\pthreadVSE2.dll ..\..\..\..\..\install\msvc_9
XCOPY /Y ..\..\..\..\..\lib\windows\ffmpeg\lib\*.dll ..\..\..\..\..\install\msvc_9
XCOPY /Y ..\..\..\..\..\lib\windows\sndfile\lib\*.dll ..\..\..\..\..\install\msvc_9
ECHO Done
"
|
||||
/>
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
@ -234,6 +234,10 @@
|
||||
RelativePath="..\..\..\..\source\gameengine\GamePlayer\ghost\GPG_System.cpp"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\source\blenderplayer\bad_level_call_stubs\stubs.c"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\..\..\..\source\icons\winplayer.rc"
|
||||
>
|
||||
|
@ -195,7 +195,7 @@
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\soundsystem\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\solid\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\..\lib\windows\sdl\include;..\..\..\source\blender\imbuf;..\..\..\source\blender\include;..\..\..\source\blender\blenlib;..\..\..\source\blender\python;..\..\..\source\blender\python\generic;..\..\..\source\blender\makesdna;..\..\..\source\blender\blenloader;..\..\..\source\blender\blenkernel;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\physics;..\..\..\source\gameengine\rasterizer;..\..\..\source\gameengine\network;..\..\..\source\gameengine\Converter;..\..\..\source\gameengine\gamelogic;..\..\..\source\gameengine\scenegraph;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\physics\sumo;..\..\..\source\gameengine\physics\dummy;..\..\..\source\gameengine\physics\BlOde;..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\source\gameengine\physics\common;..\..\..\source\gameengine\physics\sumo\include;..\..\..\source\gameengine\physics\common\dummy;..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer;..\..\..\source\gameengine\physics\sumo\fuzzics\include;..\..\..\source\sumo\include;..\..\..\source\sumo\fuzzics\include;..\..\..\source\gameengine\physics\bullet;..\..\..\source\blender\python\api2_2x;..\..\..\source\blender\gpu;..\..\..\intern\audaspace\intern"
|
||||
PreprocessorDefinitions="JANCODEPANCO;WIN32;_LIB;EXP_PYTHON_EMBEDDING;_DEBUG;USE_SUMO_SOLID;WITH_GLEXT"
|
||||
PreprocessorDefinitions="JANCODEPANCO;WIN32;_LIB;EXP_PYTHON_EMBEDDING;_DEBUG;USE_SUMO_SOLID;WITH_GLEXT;GLEW_STATIC"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
DefaultCharIsUnsigned="true"
|
||||
@ -272,7 +272,7 @@
|
||||
Optimization="2"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\soundsystem\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\solid\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\..\lib\windows\sdl\include;..\..\..\source\blender\imbuf;..\..\..\source\blender\include;..\..\..\source\blender\blenlib;..\..\..\source\blender\python;..\..\..\source\blender\python\generic;..\..\..\source\blender\makesdna;..\..\..\source\blender\blenloader;..\..\..\source\blender\blenkernel;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\physics;..\..\..\source\gameengine\rasterizer;..\..\..\source\gameengine\network;..\..\..\source\gameengine\Converter;..\..\..\source\gameengine\gamelogic;..\..\..\source\gameengine\scenegraph;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\physics\sumo;..\..\..\source\gameengine\physics\dummy;..\..\..\source\gameengine\physics\BlOde;..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\source\gameengine\physics\common;..\..\..\source\gameengine\physics\sumo\include;..\..\..\source\gameengine\physics\common\dummy;..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer;..\..\..\source\gameengine\physics\sumo\fuzzics\include;..\..\..\source\sumo\include;..\..\..\source\sumo\fuzzics\include;..\..\..\source\gameengine\physics\bullet;..\..\..\source\blender\python\api2_2x;..\..\..\source\blender\gpu;..\..\..\intern\audaspace\intern"
|
||||
PreprocessorDefinitions="NDEBUG;WIN32;_LIB;USE_SUMO_SOLID;WITH_GLEXT"
|
||||
PreprocessorDefinitions="NDEBUG;WIN32;_LIB;USE_SUMO_SOLID;WITH_GLEXT;GLEW_STATIC"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="true"
|
||||
@ -348,7 +348,7 @@
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\soundsystem\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\solid\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\..\lib\windows\sdl\include;..\..\..\source\blender\imbuf;..\..\..\source\blender\include;..\..\..\source\blender\blenlib;..\..\..\source\blender\python;..\..\..\source\blender\python\generic;..\..\..\source\blender\makesdna;..\..\..\source\blender\blenloader;..\..\..\source\blender\blenkernel;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\physics;..\..\..\source\gameengine\rasterizer;..\..\..\source\gameengine\network;..\..\..\source\gameengine\Converter;..\..\..\source\gameengine\gamelogic;..\..\..\source\gameengine\scenegraph;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\physics\sumo;..\..\..\source\gameengine\physics\dummy;..\..\..\source\gameengine\physics\BlOde;..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\source\gameengine\physics\common;..\..\..\source\gameengine\physics\sumo\include;..\..\..\source\gameengine\physics\common\dummy;..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer;..\..\..\source\gameengine\physics\sumo\fuzzics\include;..\..\..\source\sumo\include;..\..\..\source\sumo\fuzzics\include;..\..\..\source\gameengine\physics\bullet;..\..\..\source\blender\python\api2_2x;..\..\..\source\blender\gpu;..\..\..\intern\audaspace\intern"
|
||||
PreprocessorDefinitions="JANCODEPANCO;WIN32;_LIB;EXP_PYTHON_EMBEDDING;_DEBUG;USE_SUMO_SOLID;WITH_GLEXT"
|
||||
PreprocessorDefinitions="JANCODEPANCO;WIN32;_LIB;EXP_PYTHON_EMBEDDING;_DEBUG;USE_SUMO_SOLID;WITH_GLEXT;GLEW_STATIC"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
DefaultCharIsUnsigned="true"
|
||||
@ -424,7 +424,7 @@
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\soundsystem\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\bullet\include;..\..\..\..\build\msvc_9\extern\solid\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\..\lib\windows\sdl\include;..\..\..\source\blender\imbuf;..\..\..\source\blender\include;..\..\..\source\blender\blenlib;..\..\..\source\blender\python;..\..\..\source\blender\python\generic;..\..\..\source\blender\makesdna;..\..\..\source\blender\blenloader;..\..\..\source\blender\blenkernel;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\physics;..\..\..\source\gameengine\rasterizer;..\..\..\source\gameengine\network;..\..\..\source\gameengine\Converter;..\..\..\source\gameengine\gamelogic;..\..\..\source\gameengine\scenegraph;..\..\..\source\gameengine\expressions;..\..\..\source\gameengine\physics\sumo;..\..\..\source\gameengine\physics\dummy;..\..\..\source\gameengine\physics\BlOde;..\..\..\source\gameengine\ketsji\kxnetwork;..\..\..\source\gameengine\physics\common;..\..\..\source\gameengine\physics\sumo\include;..\..\..\source\gameengine\physics\common\dummy;..\..\..\source\gameengine\Rasterizer\RAS_OpenGLRasterizer;..\..\..\source\gameengine\physics\sumo\fuzzics\include;..\..\..\source\sumo\include;..\..\..\source\sumo\fuzzics\include;..\..\..\source\gameengine\physics\bullet;..\..\..\source\blender\python\api2_2x;..\..\..\source\blender\gpu;..\..\..\intern\audaspace\intern"
|
||||
PreprocessorDefinitions="NDEBUG;WIN32;_LIB;USE_SUMO_SOLID;WITH_GLEXT"
|
||||
PreprocessorDefinitions="NDEBUG;WIN32;_LIB;USE_SUMO_SOLID;WITH_GLEXT;GLEW_STATIC"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="true"
|
||||
|
@ -43,8 +43,8 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender\makesdna"
|
||||
PreprocessorDefinitions="_DEBUG;WIN32;_LIB;WITH_GLEXT"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender\makesdna"
|
||||
PreprocessorDefinitions="_DEBUG;WIN32;_LIB;WITH_GLEXT;GLEW_STATIC"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
DefaultCharIsUnsigned="true"
|
||||
@ -118,7 +118,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender\makesdna"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender\makesdna"
|
||||
PreprocessorDefinitions="NDEBUG,WIN32,_LIB"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="2"
|
||||
@ -194,8 +194,8 @@
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="2"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender\makesdna"
|
||||
PreprocessorDefinitions="NDEBUG;WIN32;_LIB;WITH_GLEXT"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender\makesdna"
|
||||
PreprocessorDefinitions="NDEBUG;WIN32;_LIB;WITH_GLEXT;GLEW_STATIC"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="true"
|
||||
@ -269,7 +269,7 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender\makesdna"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender\makesdna"
|
||||
PreprocessorDefinitions="_DEBUG,WIN32,_LIB"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="3"
|
||||
@ -344,8 +344,8 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender\makesdna"
|
||||
PreprocessorDefinitions="_DEBUG;WIN32;_LIB;WITH_GLEXT"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender\makesdna"
|
||||
PreprocessorDefinitions="_DEBUG;WIN32;_LIB;WITH_GLEXT;GLEW_STATIC"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
DefaultCharIsUnsigned="true"
|
||||
@ -419,8 +419,8 @@
|
||||
<Tool
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender\makesdna"
|
||||
PreprocessorDefinitions="NDEBUG;WIN32;_LIB;WITH_GLEXT"
|
||||
AdditionalIncludeDirectories="..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\source\kernel\gen_system;..\..\..\source\gameengine\Expressions;..\..\..\source\gameengine\SceneGraph;..\..\..\..\lib\windows\python\include\python3.1;..\..\..\source\blender\makesdna"
|
||||
PreprocessorDefinitions="NDEBUG;WIN32;_LIB;WITH_GLEXT;GLEW_STATIC"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="true"
|
||||
|
@ -119,7 +119,7 @@
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\source\gameengine\SceneGraph;..\..\..\..\source\blender\gpu;..\..\..\..\source\gameengine\Ketsji;..\..\..\..\source\blender\makesdna;..\..\..\..\source\blender\blenkernel;..\..\..\..\source\blender\blenlib"
|
||||
PreprocessorDefinitions="_DEBUG;WIN32;_LIB;WITH_GLEXT"
|
||||
PreprocessorDefinitions="_DEBUG;WIN32;_LIB;WITH_GLEXT;GLEW_STATIC"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
DefaultCharIsUnsigned="true"
|
||||
@ -270,7 +270,7 @@
|
||||
Optimization="2"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\source\gameengine\SceneGraph;..\..\..\..\source\blender\gpu;..\..\..\..\source\gameengine\Ketsji;..\..\..\..\source\blender\makesdna;..\..\..\..\source\blender\blenkernel;..\..\..\..\source\blender\blenlib"
|
||||
PreprocessorDefinitions="NDEBUG;WIN32;_LIB;WITH_GLEXT"
|
||||
PreprocessorDefinitions="NDEBUG;WIN32;_LIB;WITH_GLEXT;GLEW_STATIC"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="true"
|
||||
@ -345,7 +345,7 @@
|
||||
Name="VCCLCompilerTool"
|
||||
Optimization="0"
|
||||
AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\source\gameengine\SceneGraph;..\..\..\..\source\blender\gpu;..\..\..\..\source\gameengine\Ketsji;..\..\..\..\source\blender\makesdna;..\..\..\..\source\blender\blenkernel;..\..\..\..\source\blender\blenlib"
|
||||
PreprocessorDefinitions="_DEBUG;WIN32;_LIB;WITH_GLEXT"
|
||||
PreprocessorDefinitions="_DEBUG;WIN32;_LIB;WITH_GLEXT;GLEW_STATIC"
|
||||
BasicRuntimeChecks="3"
|
||||
RuntimeLibrary="1"
|
||||
DefaultCharIsUnsigned="true"
|
||||
@ -420,7 +420,7 @@
|
||||
Name="VCCLCompilerTool"
|
||||
InlineFunctionExpansion="1"
|
||||
AdditionalIncludeDirectories="..\..\..\..\..\build\msvc_9\intern\guardedalloc\include;..\..\..\..\..\build\msvc_9\intern\moto\include;..\..\..\..\..\build\msvc_9\intern\string\include;..\..\..\..\..\build\msvc_9\extern\glew\include;..\..\..\..\source\kernel\gen_system;..\..\..\..\source\gameengine\Rasterizer;..\..\..\..\source\gameengine\SceneGraph;..\..\..\..\source\blender\gpu;..\..\..\..\source\gameengine\Ketsji;..\..\..\..\source\blender\makesdna;..\..\..\..\source\blender\blenkernel;..\..\..\..\source\blender\blenlib"
|
||||
PreprocessorDefinitions="NDEBUG;WIN32;_LIB;WITH_GLEXT"
|
||||
PreprocessorDefinitions="NDEBUG;WIN32;_LIB;WITH_GLEXT;GLEW_STATIC"
|
||||
StringPooling="true"
|
||||
RuntimeLibrary="0"
|
||||
EnableFunctionLevelLinking="true"
|
||||
|
@ -1 +1 @@
|
||||
2.5-devel
|
||||
2.5-alpha0
|
||||
|
Binary file not shown.
Before Width: | Height: | Size: 190 KiB After Width: | Height: | Size: 204 KiB |
Binary file not shown.
Before Width: | Height: | Size: 192 KiB After Width: | Height: | Size: 198 KiB |
@ -884,7 +884,7 @@ class RENDER_PT_povray_radiosity(RenderButtonsPanel):
|
||||
def draw_header(self, context):
|
||||
scene = context.scene
|
||||
|
||||
self.layout.itemR(scene, "pov_radio_enable", text="")
|
||||
self.layout.prop(scene, "pov_radio_enable", text="")
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@ -897,34 +897,34 @@ class RENDER_PT_povray_radiosity(RenderButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(scene, "pov_radio_count", text="Rays")
|
||||
col.itemR(scene, "pov_radio_recursion_limit", text="Recursions")
|
||||
col.prop(scene, "pov_radio_count", text="Rays")
|
||||
col.prop(scene, "pov_radio_recursion_limit", text="Recursions")
|
||||
col = split.column()
|
||||
col.itemR(scene, "pov_radio_error_bound", text="Error")
|
||||
col.prop(scene, "pov_radio_error_bound", text="Error")
|
||||
|
||||
layout.itemR(scene, "pov_radio_display_advanced")
|
||||
layout.prop(scene, "pov_radio_display_advanced")
|
||||
|
||||
if scene.pov_radio_display_advanced:
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(scene, "pov_radio_adc_bailout", slider=True)
|
||||
col.itemR(scene, "pov_radio_gray_threshold", slider=True)
|
||||
col.itemR(scene, "pov_radio_low_error_factor", slider=True)
|
||||
col.prop(scene, "pov_radio_adc_bailout", slider=True)
|
||||
col.prop(scene, "pov_radio_gray_threshold", slider=True)
|
||||
col.prop(scene, "pov_radio_low_error_factor", slider=True)
|
||||
|
||||
col = split.column()
|
||||
col.itemR(scene, "pov_radio_brightness")
|
||||
col.itemR(scene, "pov_radio_minimum_reuse", text="Min Reuse")
|
||||
col.itemR(scene, "pov_radio_nearest_count")
|
||||
col.prop(scene, "pov_radio_brightness")
|
||||
col.prop(scene, "pov_radio_minimum_reuse", text="Min Reuse")
|
||||
col.prop(scene, "pov_radio_nearest_count")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Estimation Influence:")
|
||||
col.itemR(scene, "pov_radio_media")
|
||||
col.itemR(scene, "pov_radio_normal")
|
||||
col.label(text="Estimation Influence:")
|
||||
col.prop(scene, "pov_radio_media")
|
||||
col.prop(scene, "pov_radio_normal")
|
||||
|
||||
col = split.column()
|
||||
col.itemR(scene, "pov_radio_always_sample")
|
||||
col.prop(scene, "pov_radio_always_sample")
|
||||
|
||||
bpy.types.register(RENDER_PT_povray_radiosity)
|
||||
|
@ -1132,7 +1132,6 @@ class Export3DS(bpy.types.Operator):
|
||||
return ('RUNNING_MODAL',)
|
||||
|
||||
def poll(self, context): # Poll isnt working yet
|
||||
print("Poll")
|
||||
return context.active_object != None
|
||||
|
||||
bpy.ops.add(Export3DS)
|
||||
@ -1142,6 +1141,6 @@ import dynamic_menu
|
||||
|
||||
def menu_func(self, context):
|
||||
default_path = bpy.data.filename.replace(".blend", ".3ds")
|
||||
self.layout.item_stringO(Export3DS.bl_idname, "path", default_path, text="Autodesk 3DS...")
|
||||
self.layout.operator(Export3DS.bl_idname, text="Autodesk 3DS...").path = default_path
|
||||
|
||||
menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_export, menu_func)
|
||||
|
@ -3466,7 +3466,7 @@ import dynamic_menu
|
||||
|
||||
def menu_func(self, context):
|
||||
default_path = bpy.data.filename.replace(".blend", ".fbx")
|
||||
self.layout.item_stringO(ExportFBX.bl_idname, "path", default_path, text="Autodesk FBX...")
|
||||
self.layout.operator(ExportFBX.bl_idname, text="Autodesk FBX...").path = default_path
|
||||
|
||||
menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_export, menu_func)
|
||||
|
||||
|
@ -191,7 +191,7 @@ import dynamic_menu
|
||||
|
||||
def menu_func(self, context):
|
||||
default_path = bpy.data.filename.replace(".blend", ".mdd")
|
||||
self.layout.item_stringO(ExportMDD.bl_idname, "path", default_path, text="Vertex Keyframe Animation (.mdd)...")
|
||||
self.layout.operator(ExportMDD.bl_idname, text="Vertex Keyframe Animation (.mdd)...").path = default_path
|
||||
|
||||
menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_export, menu_func)
|
||||
|
||||
|
@ -85,19 +85,6 @@ def fixName(name):
|
||||
else:
|
||||
return name.replace(' ', '_')
|
||||
|
||||
|
||||
# this used to be in BPySys module
|
||||
# frankly, I don't understand how it works
|
||||
def BPySys_cleanName(name):
|
||||
|
||||
v = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,46,47,58,59,60,61,62,63,64,91,92,93,94,96,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254]
|
||||
|
||||
invalid = ''.join([chr(i) for i in v])
|
||||
|
||||
for ch in invalid:
|
||||
name = name.replace(ch, '_')
|
||||
return name
|
||||
|
||||
# A Dict of Materials
|
||||
# (material.name, image.name):matname_imagename # matname_imagename has gaps removed.
|
||||
MTL_DICT = {}
|
||||
@ -884,7 +871,7 @@ def do_export(filename, context,
|
||||
orig_frame = scn.current_frame
|
||||
|
||||
if EXPORT_ALL_SCENES: # Add scene name into the context_name
|
||||
context_name[1] = '_%s' % BPySys_cleanName(scn.name) # WARNING, its possible that this could cause a collision. we could fix if were feeling parranoied.
|
||||
context_name[1] = '_%s' % bpy.utils.clean_name(scn.name) # WARNING, its possible that this could cause a collision. we could fix if were feeling parranoied.
|
||||
|
||||
# Export an animation?
|
||||
if EXPORT_ANIMATION:
|
||||
@ -998,9 +985,9 @@ class ExportOBJ(bpy.types.Operator):
|
||||
wm.add_fileselect(self)
|
||||
return ('RUNNING_MODAL',)
|
||||
|
||||
def poll(self, context): # Poll isnt working yet
|
||||
print("Poll")
|
||||
return context.active_object != None
|
||||
|
||||
|
||||
|
||||
|
||||
bpy.ops.add(ExportOBJ)
|
||||
|
||||
@ -1008,7 +995,7 @@ import dynamic_menu
|
||||
|
||||
def menu_func(self, context):
|
||||
default_path = bpy.data.filename.replace(".blend", ".obj")
|
||||
self.layout.item_stringO(ExportOBJ.bl_idname, "path", default_path, text="Wavefront (.obj)...")
|
||||
self.layout.operator(ExportOBJ.bl_idname, text="Wavefront (.obj)...").path = default_path
|
||||
|
||||
menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_export, menu_func)
|
||||
|
||||
@ -1021,4 +1008,4 @@ if __name__ == "__main__":
|
||||
# - NURBS - needs API additions
|
||||
# - all scenes export
|
||||
# + normals calculation
|
||||
# - get rid of cleanName somehow
|
||||
|
||||
|
@ -263,9 +263,9 @@ class ExportPLY(bpy.types.Operator):
|
||||
|
||||
path = StringProperty(name="File Path", description="File path used for exporting the PLY file", maxlen= 1024, default= "")
|
||||
use_modifiers = BoolProperty(name="Apply Modifiers", description="Apply Modifiers to the exported mesh", default= True)
|
||||
use_normals = BoolProperty(name="Export Normals", description="Export Normals for smooth and hard shaded faces", default= True)
|
||||
use_uvs = BoolProperty(name="Export UVs", description="Exort the active UV layer", default= True)
|
||||
use_colors = BoolProperty(name="Export Vertex Colors", description="Exort the active vertex color layer", default= True)
|
||||
use_normals = BoolProperty(name="Normals", description="Export Normals for smooth and hard shaded faces", default= True)
|
||||
use_uvs = BoolProperty(name="UVs", description="Exort the active UV layer", default= True)
|
||||
use_colors = BoolProperty(name="Vertex Colors", description="Exort the active vertex color layer", default= True)
|
||||
|
||||
|
||||
def poll(self, context):
|
||||
@ -291,14 +291,25 @@ class ExportPLY(bpy.types.Operator):
|
||||
wm.add_fileselect(self)
|
||||
return ('RUNNING_MODAL',)
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
props = self.properties
|
||||
|
||||
row = layout.row()
|
||||
row.prop(props, "use_modifiers")
|
||||
row.prop(props, "use_normals")
|
||||
row = layout.row()
|
||||
row.prop(props, "use_uvs")
|
||||
row.prop(props, "use_colors")
|
||||
|
||||
|
||||
bpy.ops.add(ExportPLY)
|
||||
|
||||
import dynamic_menu
|
||||
|
||||
def menu_func(self, context):
|
||||
default_path = bpy.data.filename.replace(".blend", ".ply")
|
||||
self.layout.item_stringO(ExportPLY.bl_idname, "path", default_path, text="Stanford (.ply)...")
|
||||
default_path = bpy.data.filename.replace(".blend", ".ply")
|
||||
self.layout.operator(ExportPLY.bl_idname, text="Stanford (.ply)...").path = default_path
|
||||
|
||||
menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_export, menu_func)
|
||||
|
||||
|
@ -1244,7 +1244,7 @@ import dynamic_menu
|
||||
|
||||
def menu_func(self, context):
|
||||
default_path = bpy.data.filename.replace(".blend", ".x3d")
|
||||
self.layout.item_stringO(ExportX3D.bl_idname, "path", default_path, text="X3D Extensible 3D (.x3d)...")
|
||||
self.layout.operator(ExportX3D.bl_idname, text="X3D Extensible 3D (.x3d)...").path = default_path
|
||||
|
||||
menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_export, menu_func)
|
||||
|
||||
|
@ -227,8 +227,6 @@ def read_bvh(context, file_path, GLOBAL_SCALE=1.0):
|
||||
if ROT_STYLE != 'NATIVE':
|
||||
rx, ry, rz = eulerRotate(rx, ry, rz, bvh_node.rot_order)
|
||||
|
||||
#x,y,z = x/10.0, y/10.0, z/10.0 # For IPO's 36 is 360d
|
||||
|
||||
# Make interpolation not cross between 180d, thjis fixes sub frame interpolation and time scaling.
|
||||
# Will go from (355d to 365d) rather then to (355d to 5d) - inbetween these 2 there will now be a correct interpolation.
|
||||
|
||||
@ -337,7 +335,7 @@ def bvh_node_dict2objects(context, bvh_nodes, IMPORT_START_FRAME= 1, IMPORT_LOOP
|
||||
|
||||
bvh_node.temp.rot= rx*DEG2RAD,ry*DEG2RAD,rz*DEG2RAD
|
||||
|
||||
bvh_node.temp.insertIpoKey(Blender.Object.IpoKeyTypes.LOCROT)
|
||||
bvh_node.temp.insertIpoKey(Blender.Object.IpoKeyTypes.LOCROT) # XXX invalid
|
||||
|
||||
scn.update(1)
|
||||
return objects
|
||||
@ -487,7 +485,7 @@ def bvh_node_dict2armature(context, bvh_nodes, IMPORT_START_FRAME= 1, IMPORT_LOO
|
||||
|
||||
|
||||
bpy.ops.pose.select_all_toggle() # set
|
||||
bpy.ops.anim.insert_keyframe_menu(type=-4) # XXX - -4 ???
|
||||
bpy.ops.anim.keyframe_insert_menu(type=-4) # XXX - -4 ???
|
||||
|
||||
|
||||
|
||||
@ -500,7 +498,7 @@ def bvh_node_dict2armature(context, bvh_nodes, IMPORT_START_FRAME= 1, IMPORT_LOO
|
||||
#XXX action = Blender.Armature.NLA.NewAction("Action")
|
||||
#XXX action.setActive(arm_ob)
|
||||
|
||||
#bpy.ops.act.new()
|
||||
#bpy.ops.action.new()
|
||||
#action = bpy.data.actions[-1]
|
||||
|
||||
# arm_ob.animation_data.action = action
|
||||
@ -540,6 +538,7 @@ def bvh_node_dict2armature(context, bvh_nodes, IMPORT_START_FRAME= 1, IMPORT_LOO
|
||||
'''
|
||||
|
||||
# KEYFRAME METHOD, SLOW, USE IPOS DIRECT
|
||||
# TODO: use f-point samples instead (Aligorith)
|
||||
|
||||
# Animate the data, the last used bvh_node will do since they all have the same number of frames
|
||||
for current_frame in range(len(bvh_node.anim_data)-1): # skip the first frame (rest frame)
|
||||
@ -618,7 +617,7 @@ def bvh_node_dict2armature(context, bvh_nodes, IMPORT_START_FRAME= 1, IMPORT_LOO
|
||||
|
||||
|
||||
|
||||
# bpy.ops.anim.insert_keyframe_menu(type=-4) # XXX - -4 ???
|
||||
# bpy.ops.anim.keyframe_insert_menu(type=-4) # XXX - -4 ???
|
||||
bpy.ops.screen.frame_offset(delta=1)
|
||||
|
||||
# First time, set the IPO's to linear
|
||||
@ -877,5 +876,5 @@ bpy.ops.add(BvhImporter)
|
||||
|
||||
|
||||
import dynamic_menu
|
||||
menu_func = lambda self, context: self.layout.itemO(BvhImporter.bl_idname, text="Motion Capture (.bvh)...")
|
||||
menu_func = lambda self, context: self.layout.operator(BvhImporter.bl_idname, text="Motion Capture (.bvh)...")
|
||||
menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_import, menu_func)
|
||||
|
@ -1167,7 +1167,7 @@ class IMPORT_OT_autodesk_3ds(bpy.types.Operator):
|
||||
bpy.ops.add(IMPORT_OT_autodesk_3ds)
|
||||
|
||||
import dynamic_menu
|
||||
menu_func = lambda self, context: self.layout.itemO(IMPORT_OT_autodesk_3ds.bl_idname, text="3D Studio (.3ds)...")
|
||||
menu_func = lambda self, context: self.layout.operator(IMPORT_OT_autodesk_3ds.bl_idname, text="3D Studio (.3ds)...")
|
||||
menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_import, menu_func)
|
||||
|
||||
# NOTES:
|
||||
|
@ -807,7 +807,7 @@ def create_mesh(scn, new_objects, has_ngons, CREATE_FGONS, CREATE_EDGES, verts_l
|
||||
blender_tface.uv2= verts_tex[face_vert_tex_indicies[1]]
|
||||
blender_tface.uv3= verts_tex[face_vert_tex_indicies[2]]
|
||||
|
||||
if blender_face.verts[3] != 0:
|
||||
if len(face_vert_loc_indicies)==4:
|
||||
blender_tface.uv4= verts_tex[face_vert_tex_indicies[3]]
|
||||
|
||||
# for ii, uv in enumerate(blender_face.uv):
|
||||
@ -1626,7 +1626,7 @@ bpy.ops.add(IMPORT_OT_obj)
|
||||
|
||||
|
||||
import dynamic_menu
|
||||
menu_func = lambda self, context: self.layout.itemO(IMPORT_OT_obj.bl_idname, text="Wavefront (.obj)...")
|
||||
menu_func = lambda self, context: self.layout.operator(IMPORT_OT_obj.bl_idname, text="Wavefront (.obj)...")
|
||||
menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_import, menu_func)
|
||||
|
||||
|
||||
|
@ -63,15 +63,15 @@ class RENDER_PT_network_settings(RenderButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(scene.network_render, "mode")
|
||||
col.itemR(scene.network_render, "path")
|
||||
col.itemR(scene.network_render, "server_address")
|
||||
col.itemR(scene.network_render, "server_port")
|
||||
col.prop(scene.network_render, "mode")
|
||||
col.prop(scene.network_render, "path")
|
||||
col.prop(scene.network_render, "server_address")
|
||||
col.prop(scene.network_render, "server_port")
|
||||
|
||||
if scene.network_render.mode == "RENDER_MASTER":
|
||||
col.itemR(scene.network_render, "server_broadcast")
|
||||
col.prop(scene.network_render, "server_broadcast")
|
||||
else:
|
||||
col.itemO("render.netclientscan", icon="ICON_FILE_REFRESH", text="")
|
||||
col.operator("render.netclientscan", icon="ICON_FILE_REFRESH", text="")
|
||||
|
||||
@rnaType
|
||||
class RENDER_PT_network_job(RenderButtonsPanel):
|
||||
@ -93,13 +93,13 @@ class RENDER_PT_network_job(RenderButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemO("render.netclientanim", icon='ICON_RENDER_ANIMATION')
|
||||
col.itemO("render.netclientsend", icon="ICON_FILE_BLEND")
|
||||
col.itemO("render.netclientweb", icon="ICON_QUESTION")
|
||||
col.itemR(scene.network_render, "job_name")
|
||||
col.operator("render.netclientanim", icon='ICON_RENDER_ANIMATION')
|
||||
col.operator("render.netclientsend", icon="ICON_FILE_BLEND")
|
||||
col.operator("render.netclientweb", icon="ICON_QUESTION")
|
||||
col.prop(scene.network_render, "job_name")
|
||||
row = col.row()
|
||||
row.itemR(scene.network_render, "priority")
|
||||
row.itemR(scene.network_render, "chunks")
|
||||
row.prop(scene.network_render, "priority")
|
||||
row.prop(scene.network_render, "chunks")
|
||||
|
||||
@rnaType
|
||||
class RENDER_PT_network_slaves(RenderButtonsPanel):
|
||||
@ -120,22 +120,22 @@ class RENDER_PT_network_slaves(RenderButtonsPanel):
|
||||
row.template_list(netsettings, "slaves", netsettings, "active_slave_index", rows=2)
|
||||
|
||||
sub = row.column(align=True)
|
||||
sub.itemO("render.netclientslaves", icon="ICON_FILE_REFRESH", text="")
|
||||
sub.itemO("render.netclientblacklistslave", icon="ICON_ZOOMOUT", text="")
|
||||
sub.operator("render.netclientslaves", icon="ICON_FILE_REFRESH", text="")
|
||||
sub.operator("render.netclientblacklistslave", icon="ICON_ZOOMOUT", text="")
|
||||
|
||||
if len(netrender.slaves) == 0 and len(netsettings.slaves) > 0:
|
||||
while(len(netsettings.slaves) > 0):
|
||||
netsettings.slaves.remove(0)
|
||||
|
||||
if netsettings.active_slave_index >= 0 and len(netsettings.slaves) > 0:
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
slave = netrender.slaves[netsettings.active_slave_index]
|
||||
|
||||
layout.itemL(text="Name: " + slave.name)
|
||||
layout.itemL(text="Address: " + slave.address[0])
|
||||
layout.itemL(text="Seen: " + time.ctime(slave.last_seen))
|
||||
layout.itemL(text="Stats: " + slave.stats)
|
||||
layout.label(text="Name: " + slave.name)
|
||||
layout.label(text="Address: " + slave.address[0])
|
||||
layout.label(text="Seen: " + time.ctime(slave.last_seen))
|
||||
layout.label(text="Stats: " + slave.stats)
|
||||
|
||||
@rnaType
|
||||
class RENDER_PT_network_slaves_blacklist(RenderButtonsPanel):
|
||||
@ -156,21 +156,21 @@ class RENDER_PT_network_slaves_blacklist(RenderButtonsPanel):
|
||||
row.template_list(netsettings, "slaves_blacklist", netsettings, "active_blacklisted_slave_index", rows=2)
|
||||
|
||||
sub = row.column(align=True)
|
||||
sub.itemO("render.netclientwhitelistslave", icon="ICON_ZOOMOUT", text="")
|
||||
sub.operator("render.netclientwhitelistslave", icon="ICON_ZOOMOUT", text="")
|
||||
|
||||
if len(netrender.blacklist) == 0 and len(netsettings.slaves_blacklist) > 0:
|
||||
while(len(netsettings.slaves_blacklist) > 0):
|
||||
netsettings.slaves_blacklist.remove(0)
|
||||
|
||||
if netsettings.active_blacklisted_slave_index >= 0 and len(netsettings.slaves_blacklist) > 0:
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
slave = netrender.blacklist[netsettings.active_blacklisted_slave_index]
|
||||
|
||||
layout.itemL(text="Name: " + slave.name)
|
||||
layout.itemL(text="Address: " + slave.address[0])
|
||||
layout.itemL(text="Seen: " + time.ctime(slave.last_seen))
|
||||
layout.itemL(text="Stats: " + slave.stats)
|
||||
layout.label(text="Name: " + slave.name)
|
||||
layout.label(text="Address: " + slave.address[0])
|
||||
layout.label(text="Seen: " + time.ctime(slave.last_seen))
|
||||
layout.label(text="Stats: " + slave.stats)
|
||||
|
||||
@rnaType
|
||||
class RENDER_PT_network_jobs(RenderButtonsPanel):
|
||||
@ -191,24 +191,24 @@ class RENDER_PT_network_jobs(RenderButtonsPanel):
|
||||
row.template_list(netsettings, "jobs", netsettings, "active_job_index", rows=2)
|
||||
|
||||
sub = row.column(align=True)
|
||||
sub.itemO("render.netclientstatus", icon="ICON_FILE_REFRESH", text="")
|
||||
sub.itemO("render.netclientcancel", icon="ICON_ZOOMOUT", text="")
|
||||
sub.itemO("render.netclientcancelall", icon="ICON_PANEL_CLOSE", text="")
|
||||
sub.itemO("render.netclientdownload", icon='ICON_RENDER_ANIMATION', text="")
|
||||
sub.operator("render.netclientstatus", icon="ICON_FILE_REFRESH", text="")
|
||||
sub.operator("render.netclientcancel", icon="ICON_ZOOMOUT", text="")
|
||||
sub.operator("render.netclientcancelall", icon="ICON_PANEL_CLOSE", text="")
|
||||
sub.operator("render.netclientdownload", icon='ICON_RENDER_ANIMATION', text="")
|
||||
|
||||
if len(netrender.jobs) == 0 and len(netsettings.jobs) > 0:
|
||||
while(len(netsettings.jobs) > 0):
|
||||
netsettings.jobs.remove(0)
|
||||
|
||||
if netsettings.active_job_index >= 0 and len(netsettings.jobs) > 0:
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
job = netrender.jobs[netsettings.active_job_index]
|
||||
|
||||
layout.itemL(text="Name: %s" % job.name)
|
||||
layout.itemL(text="Length: %04i" % len(job))
|
||||
layout.itemL(text="Done: %04i" % job.results[DONE])
|
||||
layout.itemL(text="Error: %04i" % job.results[ERROR])
|
||||
layout.label(text="Name: %s" % job.name)
|
||||
layout.label(text="Length: %04i" % len(job))
|
||||
layout.label(text="Done: %04i" % job.results[DONE])
|
||||
layout.label(text="Error: %04i" % job.results[ERROR])
|
||||
|
||||
@rnaType
|
||||
class NetRenderSettings(bpy.types.IDPropertyGroup):
|
||||
|
@ -44,7 +44,6 @@ def load_scripts(reload_scripts=False):
|
||||
return None
|
||||
|
||||
for base_path in utils.script_paths():
|
||||
print(base_path)
|
||||
for path_subdir in ("ui", "op", "io"):
|
||||
path = os.path.join(base_path, path_subdir)
|
||||
sys.path.insert(0, path)
|
||||
|
@ -25,6 +25,33 @@ def expandpath(path):
|
||||
|
||||
return path
|
||||
|
||||
|
||||
_unclean_chars = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, \
|
||||
17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, \
|
||||
35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 46, 47, 58, 59, 60, 61, 62, 63, \
|
||||
64, 91, 92, 93, 94, 96, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, \
|
||||
133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, \
|
||||
147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, \
|
||||
161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, \
|
||||
175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, \
|
||||
189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, \
|
||||
203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, \
|
||||
217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, \
|
||||
231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, \
|
||||
245, 246, 247, 248, 249, 250, 251, 252, 253, 254]
|
||||
|
||||
_unclean_chars = ''.join([chr(i) for i in _unclean_chars])
|
||||
|
||||
def clean_name(name, replace="_"):
|
||||
'''
|
||||
All characters besides A-Z/a-z, 0-9 are replaced with "_"
|
||||
or the replace argumet if defined.
|
||||
'''
|
||||
for ch in _unclean_chars:
|
||||
name = name.replace(ch, replace)
|
||||
return name
|
||||
|
||||
|
||||
# base scripts
|
||||
_scripts = os.path.join(os.path.dirname(__file__), os.path.pardir, os.path.pardir)
|
||||
_scripts = (os.path.normpath(_scripts), )
|
||||
|
@ -35,11 +35,92 @@ class Context(StructRNA):
|
||||
|
||||
class Object(bpy_types.ID):
|
||||
|
||||
def _get_children(self):
|
||||
@property
|
||||
def children(self):
|
||||
import bpy
|
||||
return [child for child in bpy.data.objects if child.parent == self]
|
||||
|
||||
children = property(_get_children)
|
||||
|
||||
class _GenericBone:
|
||||
'''
|
||||
functions for bones, common between Armature/Pose/Edit bones.
|
||||
internal subclassing use only.
|
||||
'''
|
||||
def parent_index(self, parent_test):
|
||||
'''
|
||||
The same as 'bone in other_bone.parent_recursive' but saved generating a list.
|
||||
'''
|
||||
# use the name so different types can be tested.
|
||||
name = parent_test.name
|
||||
|
||||
parent = self.parent
|
||||
i = 1
|
||||
while parent:
|
||||
if parent.name == name:
|
||||
return i
|
||||
parent = parent.parent
|
||||
i += 1
|
||||
|
||||
return 0
|
||||
|
||||
@property
|
||||
def parent_recursive(self):
|
||||
parent_list = []
|
||||
parent = self.parent
|
||||
|
||||
while parent:
|
||||
if parent:
|
||||
parent_list.append(parent)
|
||||
|
||||
parent = parent.parent
|
||||
|
||||
return parent_list
|
||||
|
||||
@property
|
||||
def length(self):
|
||||
return (self.head - self.tail).length
|
||||
|
||||
@property
|
||||
def children(self):
|
||||
return [child for child in self._other_bones if child.parent == self]
|
||||
|
||||
@property
|
||||
def children_recursive(self):
|
||||
bones_children = []
|
||||
for bone in self._other_bones:
|
||||
index = bone.parent_index(self)
|
||||
if index:
|
||||
bones_children.append((index, bone))
|
||||
|
||||
# sort by distance to parent
|
||||
bones_children.sort(key=lambda bone_pair: bone_pair[0])
|
||||
return [bone for index, bone in bones_children]
|
||||
|
||||
@property
|
||||
def _other_bones(self):
|
||||
id_data = self.id_data
|
||||
id_data_type = type(id_data)
|
||||
|
||||
if id_data_type == bpy_types.Object:
|
||||
bones = id_data.pose.bones
|
||||
elif id_data_type == bpy_types.Armature:
|
||||
bones = id_data.edit_bones
|
||||
if not bones: # not in editmode
|
||||
bones = id_data.bones
|
||||
|
||||
return bones
|
||||
|
||||
|
||||
class PoseBone(StructRNA, _GenericBone):
|
||||
pass
|
||||
|
||||
|
||||
class Bone(StructRNA, _GenericBone):
|
||||
pass
|
||||
|
||||
|
||||
class EditBone(StructRNA, _GenericBone):
|
||||
pass
|
||||
|
||||
|
||||
def ord_ind(i1,i2):
|
||||
@ -48,12 +129,12 @@ def ord_ind(i1,i2):
|
||||
|
||||
class Mesh(bpy_types.ID):
|
||||
|
||||
def _get_edge_keys(self):
|
||||
@property
|
||||
def edge_keys(self):
|
||||
return [edge_key for face in self.faces for edge_key in face.edge_keys]
|
||||
|
||||
edge_keys = property(_get_edge_keys)
|
||||
|
||||
def _get_edge_face_count_dict(self):
|
||||
@property
|
||||
def edge_face_count_dict(self):
|
||||
face_edge_keys = [face.edge_keys for face in self.faces]
|
||||
face_edge_count = {}
|
||||
for face_keys in face_edge_keys:
|
||||
@ -65,34 +146,29 @@ class Mesh(bpy_types.ID):
|
||||
|
||||
return face_edge_count
|
||||
|
||||
edge_face_count_dict = property(_get_edge_face_count_dict)
|
||||
|
||||
def _get_edge_face_count(self):
|
||||
@property
|
||||
def edge_face_count(self):
|
||||
edge_face_count_dict = self.edge_face_count_dict
|
||||
return [edge_face_count_dict.get(ed.key, 0) for ed in mesh.edges]
|
||||
|
||||
edge_face_count = property(_get_edge_face_count)
|
||||
|
||||
|
||||
class MeshEdge(StructRNA):
|
||||
|
||||
def _get_key(self):
|
||||
@property
|
||||
def key(self):
|
||||
return ord_ind(*tuple(self.verts))
|
||||
|
||||
key = property(_get_key)
|
||||
|
||||
|
||||
class MeshFace(StructRNA):
|
||||
|
||||
def _get_edge_keys(self):
|
||||
@property
|
||||
def edge_keys(self):
|
||||
verts = tuple(self.verts)
|
||||
if len(verts)==3:
|
||||
return ord_ind(verts[0], verts[1]), ord_ind(verts[1], verts[2]), ord_ind(verts[2], verts[0])
|
||||
|
||||
return ord_ind(verts[0], verts[1]), ord_ind(verts[1], verts[2]), ord_ind(verts[2], verts[3]), ord_ind(verts[3], verts[0])
|
||||
|
||||
edge_keys = property(_get_edge_keys)
|
||||
|
||||
|
||||
import collections
|
||||
class OrderedMeta(type):
|
||||
@ -145,7 +221,7 @@ class Menu(StructRNA):
|
||||
if f.startswith("."):
|
||||
continue
|
||||
|
||||
layout.item_stringO(operator, "path", path, text=path_to_name(f))
|
||||
layout.operator(operator, text=path_to_name(f)).path = path
|
||||
|
||||
def draw_preset(self, context):
|
||||
'''Define these on the subclass
|
||||
|
888
release/scripts/modules/rigify.py
Normal file
888
release/scripts/modules/rigify.py
Normal file
@ -0,0 +1,888 @@
|
||||
# ##### BEGIN GPL LICENSE BLOCK #####
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software Foundation,
|
||||
# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
#
|
||||
# ##### END GPL LICENSE BLOCK #####
|
||||
|
||||
import bpy
|
||||
from functools import reduce
|
||||
from Mathutils import Vector
|
||||
|
||||
# TODO, have these in a more general module
|
||||
from rna_prop_ui import rna_idprop_ui_get, rna_idprop_ui_prop_get
|
||||
|
||||
empty_layer = [False] * 16
|
||||
|
||||
def auto_class(slots, name="ContainerClass"):
|
||||
return type(name, (object,), {"__slots__":tuple(slots)})
|
||||
|
||||
def auto_class_instance(slots, name="ContainerClass"):
|
||||
return auto_class(slots, name)()
|
||||
|
||||
|
||||
|
||||
def bone_class_instance(obj, slots, name="BoneContainer"):
|
||||
for member in slots[:]:
|
||||
slots.append(member + "_b") # bone bone
|
||||
slots.append(member + "_p") # pose bone
|
||||
slots.append(member + "_e") # edit bone
|
||||
|
||||
slots.extend(["obj", "update"])
|
||||
|
||||
instance = auto_class_instance(slots, name)
|
||||
|
||||
def update():
|
||||
'''
|
||||
Re-Assigns bones from the blender data
|
||||
'''
|
||||
arm = obj.data
|
||||
|
||||
bbones = arm.bones
|
||||
pbones = obj.pose.bones
|
||||
ebones = arm.edit_bones
|
||||
|
||||
for member in slots:
|
||||
|
||||
if member in ("update", "obj"):
|
||||
continue
|
||||
|
||||
if not member[-2] == "_":
|
||||
name = getattr(instance, member, None)
|
||||
if name is not None:
|
||||
setattr(instance, member + "_b", bbones.get(name, None))
|
||||
setattr(instance, member + "_p", pbones.get(name, None))
|
||||
setattr(instance, member + "_e", ebones.get(name, None))
|
||||
|
||||
instance.update = update
|
||||
|
||||
return instance
|
||||
|
||||
def gen_none(obj, orig_bone_name):
|
||||
pass
|
||||
|
||||
def get_bone_data(obj, bone_name):
|
||||
arm = obj.data
|
||||
pbone = obj.pose.bones[bone_name]
|
||||
if obj.mode == 'EDIT':
|
||||
bone = arm.edit_bones[bone_name]
|
||||
else:
|
||||
bone = arm.bones[bone_name]
|
||||
|
||||
return arm, pbone, bone
|
||||
|
||||
def bone_basename(name):
|
||||
return name.split(".")[0]
|
||||
|
||||
def copy_bone_simple(arm, from_bone, name, parent=False):
|
||||
ebone = arm.edit_bones[from_bone]
|
||||
ebone_new = arm.edit_bones.new(name)
|
||||
|
||||
if parent:
|
||||
ebone_new.connected = ebone.connected
|
||||
ebone_new.parent = ebone.parent
|
||||
|
||||
ebone_new.head = ebone.head
|
||||
ebone_new.tail = ebone.tail
|
||||
ebone_new.roll = ebone.roll
|
||||
return ebone_new
|
||||
|
||||
|
||||
def add_stretch_to(obj, from_name, to_name, name):
|
||||
'''
|
||||
Adds a bone that stretches from one to another
|
||||
'''
|
||||
|
||||
mode_orig = obj.mode
|
||||
bpy.ops.object.mode_set(mode='EDIT')
|
||||
|
||||
arm = obj.data
|
||||
stretch_ebone = arm.edit_bones.new(name)
|
||||
stretch_name = stretch_ebone.name
|
||||
del name
|
||||
|
||||
head = stretch_ebone.head = arm.edit_bones[from_name].head.copy()
|
||||
#tail = stretch_ebone.tail = arm.edit_bones[to_name].head.copy()
|
||||
|
||||
# annoying exception for zero length bones, since its using stretch_to the rest pose doesnt really matter
|
||||
#if (head - tail).length < 0.1:
|
||||
if 1:
|
||||
tail = stretch_ebone.tail = arm.edit_bones[from_name].tail.copy()
|
||||
|
||||
|
||||
# Now for the constraint
|
||||
bpy.ops.object.mode_set(mode='OBJECT')
|
||||
from_pbone = obj.pose.bones[from_name]
|
||||
to_pbone = obj.pose.bones[to_name]
|
||||
|
||||
stretch_pbone = obj.pose.bones[stretch_name]
|
||||
|
||||
con = stretch_pbone.constraints.new('COPY_LOCATION')
|
||||
con.target = obj
|
||||
con.subtarget = from_name
|
||||
|
||||
con = stretch_pbone.constraints.new('STRETCH_TO')
|
||||
con.target = obj
|
||||
con.subtarget = to_name
|
||||
con.original_length = (head - tail).length
|
||||
con.keep_axis = 'PLANE_X'
|
||||
con.volume = 'NO_VOLUME'
|
||||
|
||||
bpy.ops.object.mode_set(mode=mode_orig)
|
||||
|
||||
|
||||
def add_pole_target_bone(obj, base_name, name, mode='CROSS'):
|
||||
'''
|
||||
Does not actually create a poll target, just the bone to use as a poll target
|
||||
'''
|
||||
mode_orig = obj.mode
|
||||
bpy.ops.object.mode_set(mode='EDIT')
|
||||
|
||||
arm = obj.data
|
||||
|
||||
poll_ebone = arm.edit_bones.new(base_name + "_poll")
|
||||
base_ebone = arm.edit_bones[base_name]
|
||||
poll_name = poll_ebone.name
|
||||
parent_ebone = base_ebone.parent
|
||||
|
||||
base_head = base_ebone.head.copy()
|
||||
base_tail = base_ebone.tail.copy()
|
||||
base_dir = base_head - base_tail
|
||||
|
||||
parent_head = parent_ebone.head.copy()
|
||||
parent_tail = parent_ebone.tail.copy()
|
||||
parent_dir = parent_head - parent_tail
|
||||
|
||||
distance = (base_dir.length + parent_dir.length)
|
||||
|
||||
if mode == 'CROSS':
|
||||
offset = base_dir.copy().normalize() - parent_dir.copy().normalize()
|
||||
offset.length = distance
|
||||
else:
|
||||
offset = Vector(0,0,0)
|
||||
if mode[0]=="+":
|
||||
val = distance
|
||||
else:
|
||||
val = -distance
|
||||
|
||||
setattr(offset, mode[1].lower(), val)
|
||||
|
||||
poll_ebone.head = base_head + offset
|
||||
poll_ebone.tail = base_head + (offset * (1.0 - (1.0 / 4.0)))
|
||||
|
||||
bpy.ops.object.mode_set(mode=mode_orig)
|
||||
|
||||
return poll_name
|
||||
|
||||
|
||||
def gen_finger(obj, orig_bone_name):
|
||||
|
||||
# *** EDITMODE
|
||||
|
||||
# get assosiated data
|
||||
arm, orig_pbone, orig_ebone = get_bone_data(obj, orig_bone_name)
|
||||
|
||||
obj.animation_data_create() # needed if its a new armature with no keys
|
||||
|
||||
arm.layer[0] = arm.layer[8] = True
|
||||
|
||||
children = orig_pbone.children_recursive
|
||||
tot_len = reduce(lambda f, pbone: f + pbone.bone.length, children, orig_pbone.bone.length)
|
||||
|
||||
base_name = bone_basename(orig_pbone.name)
|
||||
|
||||
# first make a new bone at the location of the finger
|
||||
control_ebone = arm.edit_bones.new(base_name)
|
||||
control_bone_name = control_ebone.name # we dont know if we get the name requested
|
||||
|
||||
control_ebone.connected = orig_ebone.connected
|
||||
control_ebone.parent = orig_ebone.parent
|
||||
|
||||
# Place the finger bone
|
||||
head = orig_ebone.head.copy()
|
||||
tail = orig_ebone.tail.copy()
|
||||
|
||||
control_ebone.head = head
|
||||
control_ebone.tail = head + ((tail - head).normalize() * tot_len)
|
||||
control_ebone.roll = orig_ebone.roll
|
||||
|
||||
# now add bones inbetween this and its children recursively
|
||||
|
||||
# switching modes so store names only!
|
||||
children = [pbone.name for pbone in children]
|
||||
|
||||
# set an alternate layer for driver bones
|
||||
other_layer = empty_layer[:]
|
||||
other_layer[8] = True
|
||||
|
||||
|
||||
driver_bone_pairs = []
|
||||
|
||||
for child_bone_name in children:
|
||||
arm, pbone_child, child_ebone = get_bone_data(obj, child_bone_name)
|
||||
|
||||
# finger.02 --> finger_driver.02
|
||||
driver_bone_name = child_bone_name.split('.')
|
||||
driver_bone_name = driver_bone_name[0] + "_driver." + ".".join(driver_bone_name[1:])
|
||||
|
||||
driver_ebone = arm.edit_bones.new(driver_bone_name)
|
||||
driver_bone_name = driver_ebone.name # cant be too sure!
|
||||
driver_ebone.layer = other_layer
|
||||
|
||||
new_len = pbone_child.bone.length / 2.0
|
||||
|
||||
head = child_ebone.head.copy()
|
||||
tail = child_ebone.tail.copy()
|
||||
|
||||
driver_ebone.head = head
|
||||
driver_ebone.tail = head + ((tail - head).normalize() * new_len)
|
||||
driver_ebone.roll = child_ebone.roll
|
||||
|
||||
# Insert driver_ebone in the chain without connected parents
|
||||
driver_ebone.connected = False
|
||||
driver_ebone.parent = child_ebone.parent
|
||||
|
||||
child_ebone.connected = False
|
||||
child_ebone.parent = driver_ebone
|
||||
|
||||
# Add the drivers to these when in posemode.
|
||||
driver_bone_pairs.append((child_bone_name, driver_bone_name))
|
||||
|
||||
del control_ebone
|
||||
|
||||
|
||||
# *** POSEMODE
|
||||
bpy.ops.object.mode_set(mode='OBJECT')
|
||||
|
||||
|
||||
arm, orig_pbone, orig_bone = get_bone_data(obj, orig_bone_name)
|
||||
arm, control_pbone, control_bone= get_bone_data(obj, control_bone_name)
|
||||
|
||||
|
||||
# only allow Y scale
|
||||
control_pbone.lock_scale = (True, False, True)
|
||||
|
||||
control_pbone["bend_ratio"] = 0.4
|
||||
prop = rna_idprop_ui_prop_get(control_pbone, "bend_ratio", create=True)
|
||||
prop["soft_min"] = 0.0
|
||||
prop["soft_max"] = 1.0
|
||||
|
||||
con = orig_pbone.constraints.new('COPY_LOCATION')
|
||||
con.target = obj
|
||||
con.subtarget = control_bone_name
|
||||
|
||||
con = orig_pbone.constraints.new('COPY_ROTATION')
|
||||
con.target = obj
|
||||
con.subtarget = control_bone_name
|
||||
|
||||
|
||||
|
||||
# setup child drivers on each new smaller bone added. assume 2 for now.
|
||||
|
||||
# drives the bones
|
||||
controller_path = control_pbone.path_to_id() # 'pose.bones["%s"]' % control_bone_name
|
||||
|
||||
i = 0
|
||||
for child_bone_name, driver_bone_name in driver_bone_pairs:
|
||||
|
||||
# XXX - todo, any number
|
||||
if i==2:
|
||||
break
|
||||
|
||||
arm, driver_pbone, driver_bone = get_bone_data(obj, driver_bone_name)
|
||||
|
||||
driver_pbone.rotation_mode = 'YZX'
|
||||
fcurve_driver = driver_pbone.driver_add("rotation_euler", 0)
|
||||
|
||||
#obj.driver_add('pose.bones["%s"].scale', 1)
|
||||
#obj.animation_data.drivers[-1] # XXX, WATCH THIS
|
||||
driver = fcurve_driver.driver
|
||||
|
||||
# scale target
|
||||
tar = driver.targets.new()
|
||||
tar.name = "scale"
|
||||
tar.id_type = 'OBJECT'
|
||||
tar.id = obj
|
||||
tar.rna_path = controller_path + '.scale[1]'
|
||||
|
||||
# bend target
|
||||
tar = driver.targets.new()
|
||||
tar.name = "br"
|
||||
tar.id_type = 'OBJECT'
|
||||
tar.id = obj
|
||||
tar.rna_path = controller_path + '["bend_ratio"]'
|
||||
|
||||
# XXX - todo, any number
|
||||
if i==0:
|
||||
driver.expression = '(-scale+1.0)*pi*2.0*(1.0-br)'
|
||||
elif i==1:
|
||||
driver.expression = '(-scale+1.0)*pi*2.0*br'
|
||||
|
||||
arm, child_pbone, child_bone = get_bone_data(obj, child_bone_name)
|
||||
|
||||
# only allow X rotation
|
||||
driver_pbone.lock_rotation = child_pbone.lock_rotation = (False, True, True)
|
||||
|
||||
i += 1
|
||||
|
||||
|
||||
def gen_delta(obj, delta_name):
|
||||
'''
|
||||
Use this bone to define a delta thats applied to its child in pose mode.
|
||||
'''
|
||||
|
||||
arm = obj.data
|
||||
|
||||
mode_orig = obj.mode
|
||||
bpy.ops.object.mode_set(mode='OBJECT')
|
||||
|
||||
delta_pbone = obj.pose.bones[delta_name]
|
||||
children = delta_pbone.children
|
||||
|
||||
if len(children) != 1:
|
||||
print("only 1 child supported for delta")
|
||||
|
||||
child_name = children[0].name
|
||||
arm, child_pbone, child_bone = get_bone_data(obj, child_name)
|
||||
|
||||
delta_phead = delta_pbone.head.copy()
|
||||
delta_ptail = delta_pbone.tail.copy()
|
||||
delta_pmatrix = delta_pbone.matrix.copy()
|
||||
|
||||
child_phead = child_pbone.head.copy()
|
||||
child_ptail = child_pbone.tail.copy()
|
||||
child_pmatrix = child_pbone.matrix.copy()
|
||||
|
||||
|
||||
children = delta_pbone.children
|
||||
|
||||
bpy.ops.object.mode_set(mode='EDIT')
|
||||
|
||||
delta_ebone = arm.edit_bones[delta_name]
|
||||
child_ebone = arm.edit_bones[child_name]
|
||||
|
||||
delta_head = delta_ebone.head.copy()
|
||||
delta_tail = delta_ebone.tail.copy()
|
||||
|
||||
# arm, parent_pbone, parent_bone = get_bone_data(obj, delta_name)
|
||||
child_head = child_ebone.head.copy()
|
||||
child_tail = child_ebone.tail.copy()
|
||||
|
||||
arm.edit_bones.remove(delta_ebone)
|
||||
del delta_ebone # cant use thz
|
||||
|
||||
bpy.ops.object.mode_set(mode='OBJECT')
|
||||
|
||||
|
||||
# Move the child bone to the deltas location
|
||||
obj.animation_data_create()
|
||||
child_pbone = obj.pose.bones[child_name]
|
||||
|
||||
# ------------------- drivers
|
||||
|
||||
child_pbone.rotation_mode = 'XYZ'
|
||||
|
||||
rot = delta_pmatrix.invert().rotationPart() * child_pmatrix.rotationPart()
|
||||
rot = rot.invert().toEuler()
|
||||
|
||||
fcurve_drivers = child_pbone.driver_add("rotation_euler", -1)
|
||||
for i, fcurve_driver in enumerate(fcurve_drivers):
|
||||
driver = fcurve_driver.driver
|
||||
driver.type = 'AVERAGE'
|
||||
#mod = fcurve_driver.modifiers.new('GENERATOR')
|
||||
mod = fcurve_driver.modifiers[0]
|
||||
mod.poly_order = 1
|
||||
mod.coefficients[0] = rot[i]
|
||||
mod.coefficients[1] = 0.0
|
||||
|
||||
# tricky, find the transform to drive the bone to this location.
|
||||
delta_head_offset = child_pmatrix.rotationPart() * (delta_phead - child_phead)
|
||||
|
||||
fcurve_drivers = child_pbone.driver_add("location", -1)
|
||||
for i, fcurve_driver in enumerate(fcurve_drivers):
|
||||
driver = fcurve_driver.driver
|
||||
driver.type = 'AVERAGE'
|
||||
#mod = fcurve_driver.modifiers.new('GENERATOR')
|
||||
mod = fcurve_driver.modifiers[0]
|
||||
mod.poly_order = 1
|
||||
mod.coefficients[0] = delta_head_offset[i]
|
||||
mod.coefficients[1] = 0.0
|
||||
|
||||
|
||||
# arm, parent_pbone, parent_bone = get_bone_data(obj, delta_name)
|
||||
bpy.ops.object.mode_set(mode='EDIT')
|
||||
|
||||
bpy.ops.object.mode_set(mode=mode_orig)
|
||||
|
||||
|
||||
def gen_arm(obj, orig_bone_name):
|
||||
"""
|
||||
the bone with the 'arm' property is the upper arm, this assumes a chain as follows.
|
||||
[shoulder, upper_arm, forearm, hand]
|
||||
...where this bone is 'upper_arm'
|
||||
|
||||
there are 3 chains
|
||||
- Original
|
||||
- IK, MCH-%s_ik
|
||||
- IKSwitch, MCH-%s ()
|
||||
"""
|
||||
|
||||
# Since there are 3 chains, this gets confusing so divide into 3 chains
|
||||
# Initialize container classes for convenience
|
||||
mt = bone_class_instance(obj, ["shoulder", "arm", "forearm", "hand"]) # meta
|
||||
ik = bone_class_instance(obj, ["arm", "forearm", "pole", "hand"]) # ik
|
||||
sw = bone_class_instance(obj, ["socket", "shoulder", "arm", "forearm", "hand"]) # hinge
|
||||
ex = bone_class_instance(obj, ["arm_hinge"]) # hinge & extras
|
||||
|
||||
|
||||
def chain_init():
|
||||
'''
|
||||
Sanity check and return the arm as a list of bone names.
|
||||
'''
|
||||
# do a sanity check
|
||||
mt.arm = orig_bone_name
|
||||
mt.update()
|
||||
|
||||
mt.shoulder_p = mt.arm_p.parent
|
||||
mt.shoulder = mt.shoulder_p.name
|
||||
|
||||
if not mt.shoulder_p:
|
||||
print("could not find 'arm' parent, skipping:", orig_bone_name)
|
||||
return
|
||||
|
||||
# We could have some bones attached, find the bone that has this as its 2nd parent
|
||||
hands = []
|
||||
for pbone in obj.pose.bones:
|
||||
index = pbone.parent_index(mt.arm_p)
|
||||
if index == 2:
|
||||
hands.append(pbone)
|
||||
|
||||
if len(hands) > 1:
|
||||
print("more then 1 hand found on:", orig_bone_name)
|
||||
return
|
||||
|
||||
# first add the 2 new bones
|
||||
mt.hand_p = hands[0]
|
||||
mt.hand = mt.hand_p.name
|
||||
|
||||
mt.forearm_p = mt.hand_p.parent
|
||||
mt.forearm = mt.forearm_p.name
|
||||
|
||||
arm = obj.data
|
||||
|
||||
|
||||
def chain_ik(prefix="MCH-%s_ik"):
|
||||
|
||||
mt.update()
|
||||
|
||||
# Add the edit bones
|
||||
ik.hand_e = copy_bone_simple(arm, mt.hand, prefix % mt.hand)
|
||||
ik.hand = ik.hand_e.name
|
||||
|
||||
ik.arm_e = copy_bone_simple(arm, mt.arm, prefix % mt.arm)
|
||||
ik.arm = ik.arm_e.name
|
||||
|
||||
ik.forearm_e = copy_bone_simple(arm, mt.forearm, prefix % mt.forearm)
|
||||
ik.forearm = ik.forearm_e.name
|
||||
|
||||
ik.arm_e.parent = mt.arm_e.parent
|
||||
ik.forearm_e.connected = mt.arm_e.connected
|
||||
|
||||
ik.forearm_e.parent = ik.arm_e
|
||||
ik.forearm_e.connected = True
|
||||
|
||||
|
||||
# Add the bone used for the arms poll target
|
||||
ik.pole = add_pole_target_bone(obj, mt.forearm, "elbow_poll", mode='+Z')
|
||||
|
||||
bpy.ops.object.mode_set(mode='OBJECT')
|
||||
|
||||
ik.update()
|
||||
|
||||
con = ik.forearm_p.constraints.new('IK')
|
||||
con.target = obj
|
||||
con.subtarget = ik.hand
|
||||
con.pole_target = obj
|
||||
con.pole_subtarget = ik.pole
|
||||
|
||||
con.use_tail = True
|
||||
con.use_stretch = True
|
||||
con.use_target = True
|
||||
con.use_rotation = False
|
||||
con.chain_length = 2
|
||||
con.pole_angle = -90.0 # XXX, RAD2DEG
|
||||
|
||||
# ID Propery on the hand for IK/FK switch
|
||||
|
||||
prop = rna_idprop_ui_prop_get(ik.hand_p, "ik", create=True)
|
||||
ik.hand_p["ik"] = 0.5
|
||||
prop["soft_min"] = 0.0
|
||||
prop["soft_max"] = 1.0
|
||||
|
||||
bpy.ops.object.mode_set(mode='EDIT')
|
||||
|
||||
ik.arm = ik.arm
|
||||
ik.forearm = ik.forearm
|
||||
ik.hand = ik.hand
|
||||
ik.pole = ik.pole
|
||||
|
||||
def chain_switch(prefix="MCH-%s"):
|
||||
|
||||
sw.update()
|
||||
mt.update()
|
||||
|
||||
sw.shoulder_e = copy_bone_simple(arm, mt.shoulder, prefix % mt.shoulder)
|
||||
sw.shoulder = sw.shoulder_e.name
|
||||
sw.shoulder_e.parent = mt.shoulder_e.parent
|
||||
sw.shoulder_e.connected = mt.shoulder_e.connected
|
||||
|
||||
sw.arm_e = copy_bone_simple(arm, mt.arm, prefix % mt.arm)
|
||||
sw.arm = sw.arm_e.name
|
||||
sw.arm_e.parent = sw.shoulder_e
|
||||
sw.arm_e.connected = arm.edit_bones[mt.shoulder].connected
|
||||
|
||||
sw.forearm_e = copy_bone_simple(arm, mt.forearm, prefix % mt.forearm)
|
||||
sw.forearm = sw.forearm_e.name
|
||||
sw.forearm_e.parent = sw.arm_e
|
||||
sw.forearm_e.connected = arm.edit_bones[mt.forearm].connected
|
||||
|
||||
sw.hand_e = copy_bone_simple(arm, mt.hand, prefix % mt.hand)
|
||||
sw.hand = sw.hand_e.name
|
||||
sw.hand_e.parent = sw.forearm_e
|
||||
sw.hand_e.connected = arm.edit_bones[mt.hand].connected
|
||||
|
||||
# The sw.hand_e needs to own all the children on the metarig's hand
|
||||
for child in mt.hand_e.children:
|
||||
child.parent = sw.hand_e
|
||||
|
||||
|
||||
# These are made the children of sw.shoulder_e
|
||||
|
||||
|
||||
bpy.ops.object.mode_set(mode='OBJECT')
|
||||
|
||||
# Add constraints
|
||||
sw.update()
|
||||
|
||||
#dummy, ik.arm, ik.forearm, ik.hand, ik.pole = ik_chain_tuple
|
||||
|
||||
ik_driver_path = obj.pose.bones[ik.hand].path_to_id() + '["ik"]'
|
||||
|
||||
|
||||
def ik_fk_driver(con):
|
||||
'''
|
||||
3 bones use this for ik/fk switching
|
||||
'''
|
||||
fcurve = con.driver_add("influence", 0)
|
||||
driver = fcurve.driver
|
||||
tar = driver.targets.new()
|
||||
driver.type = 'AVERAGE'
|
||||
tar.name = "ik"
|
||||
tar.id_type = 'OBJECT'
|
||||
tar.id = obj
|
||||
tar.rna_path = ik_driver_path
|
||||
|
||||
# ***********
|
||||
con = sw.arm_p.constraints.new('COPY_ROTATION')
|
||||
con.name = "FK"
|
||||
con.target = obj
|
||||
con.subtarget = mt.arm
|
||||
|
||||
con = sw.arm_p.constraints.new('COPY_ROTATION')
|
||||
|
||||
con.target = obj
|
||||
con.subtarget = ik.arm
|
||||
con.influence = 0.5
|
||||
ik_fk_driver(con)
|
||||
|
||||
# ***********
|
||||
con = sw.forearm_p.constraints.new('COPY_ROTATION')
|
||||
con.name = "FK"
|
||||
con.target = obj
|
||||
con.subtarget = mt.forearm
|
||||
|
||||
con = sw.forearm_p.constraints.new('COPY_ROTATION')
|
||||
con.name = "IK"
|
||||
con.target = obj
|
||||
con.subtarget = ik.forearm
|
||||
con.influence = 0.5
|
||||
ik_fk_driver(con)
|
||||
|
||||
# ***********
|
||||
con = sw.hand_p.constraints.new('COPY_ROTATION')
|
||||
con.name = "FK"
|
||||
con.target = obj
|
||||
con.subtarget = mt.hand
|
||||
|
||||
con = sw.hand_p.constraints.new('COPY_ROTATION')
|
||||
con.name = "IK"
|
||||
con.target = obj
|
||||
con.subtarget = ik.hand
|
||||
con.influence = 0.5
|
||||
ik_fk_driver(con)
|
||||
|
||||
|
||||
add_stretch_to(obj, sw.forearm, ik.pole, "VIS-elbow_ik_poll")
|
||||
add_stretch_to(obj, sw.hand, ik.hand, "VIS-hand_ik")
|
||||
|
||||
bpy.ops.object.mode_set(mode='EDIT')
|
||||
|
||||
|
||||
def chain_shoulder(prefix="MCH-%s"):
|
||||
|
||||
sw.socket_e = copy_bone_simple(arm, mt.arm, (prefix % mt.arm) + "_socket")
|
||||
sw.socket = sw.socket_e.name
|
||||
sw.socket_e.tail = arm.edit_bones[mt.shoulder].tail
|
||||
|
||||
|
||||
# Set the shoulder as parent
|
||||
ik.update()
|
||||
sw.update()
|
||||
mt.update()
|
||||
|
||||
sw.socket_e.parent = sw.shoulder_e
|
||||
ik.arm_e.parent = sw.shoulder_e
|
||||
|
||||
|
||||
# ***** add the shoulder hinge
|
||||
# yes this is correct, the shoulder copy gets the arm's name
|
||||
ex.arm_hinge_e = copy_bone_simple(arm, mt.shoulder, (prefix % mt.arm) + "_hinge")
|
||||
ex.arm_hinge = ex.arm_hinge_e.name
|
||||
offset = ex.arm_hinge_e.length / 2.0
|
||||
|
||||
ex.arm_hinge_e.head.y += offset
|
||||
ex.arm_hinge_e.tail.y += offset
|
||||
|
||||
# Note: meta arm becomes child of hinge
|
||||
mt.arm_e.parent = ex.arm_hinge_e
|
||||
|
||||
|
||||
bpy.ops.object.mode_set(mode='OBJECT')
|
||||
|
||||
ex.update()
|
||||
|
||||
con = mt.arm_p.constraints.new('COPY_LOCATION')
|
||||
con.target = obj
|
||||
con.subtarget = sw.socket
|
||||
|
||||
|
||||
# Hinge constraint & driver
|
||||
con = ex.arm_hinge_p.constraints.new('COPY_ROTATION')
|
||||
con.name = "hinge"
|
||||
con.target = obj
|
||||
con.subtarget = sw.shoulder
|
||||
driver_fcurve = con.driver_add("influence", 0)
|
||||
driver = driver_fcurve.driver
|
||||
|
||||
|
||||
controller_path = mt.arm_p.path_to_id()
|
||||
# add custom prop
|
||||
mt.arm_p["hinge"] = 0.0
|
||||
prop = rna_idprop_ui_prop_get(mt.arm_p, "hinge", create=True)
|
||||
prop["soft_min"] = 0.0
|
||||
prop["soft_max"] = 1.0
|
||||
|
||||
|
||||
# *****
|
||||
driver = driver_fcurve.driver
|
||||
driver.type = 'AVERAGE'
|
||||
|
||||
tar = driver.targets.new()
|
||||
tar.name = "hinge"
|
||||
tar.id_type = 'OBJECT'
|
||||
tar.id = obj
|
||||
tar.rna_path = controller_path + '["hinge"]'
|
||||
|
||||
|
||||
bpy.ops.object.mode_set(mode='EDIT')
|
||||
|
||||
# remove the shoulder and re-parent
|
||||
|
||||
|
||||
|
||||
chain_init()
|
||||
chain_ik()
|
||||
chain_switch()
|
||||
chain_shoulder()
|
||||
|
||||
# Shoulder with its delta and hinge.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
def gen_palm(obj, orig_bone_name):
|
||||
arm, palm_pbone, palm_ebone = get_bone_data(obj, orig_bone_name)
|
||||
children = [ebone.name for ebone in palm_ebone.children]
|
||||
children.sort() # simply assume the pinky has the lowest name
|
||||
|
||||
# Make a copy of the pinky
|
||||
pinky_ebone = arm.edit_bones[children[0]]
|
||||
control_ebone = copy_bone_simple(arm, pinky_ebone.name, "palm_control", parent=True)
|
||||
control_name = control_ebone.name
|
||||
|
||||
offset = (arm.edit_bones[children[0]].head - arm.edit_bones[children[1]].head)
|
||||
|
||||
control_ebone.head += offset
|
||||
control_ebone.tail += offset
|
||||
|
||||
bpy.ops.object.mode_set(mode='OBJECT')
|
||||
|
||||
|
||||
arm, control_pbone, control_ebone = get_bone_data(obj, control_name)
|
||||
arm, pinky_pbone, pinky_ebone = get_bone_data(obj, children[0])
|
||||
|
||||
control_pbone.rotation_mode = 'YZX'
|
||||
control_pbone.lock_rotation = False, True, True
|
||||
|
||||
driver_fcurves = pinky_pbone.driver_add("rotation_euler")
|
||||
|
||||
|
||||
controller_path = control_pbone.path_to_id()
|
||||
|
||||
# add custom prop
|
||||
control_pbone["spread"] = 0.0
|
||||
prop = rna_idprop_ui_prop_get(control_pbone, "spread", create=True)
|
||||
prop["soft_min"] = -1.0
|
||||
prop["soft_max"] = 1.0
|
||||
|
||||
|
||||
# *****
|
||||
driver = driver_fcurves[0].driver
|
||||
driver.type = 'AVERAGE'
|
||||
|
||||
tar = driver.targets.new()
|
||||
tar.name = "x"
|
||||
tar.id_type = 'OBJECT'
|
||||
tar.id = obj
|
||||
tar.rna_path = controller_path + ".rotation_euler[0]"
|
||||
|
||||
|
||||
# *****
|
||||
driver = driver_fcurves[1].driver
|
||||
driver.expression = "-x/4.0"
|
||||
|
||||
tar = driver.targets.new()
|
||||
tar.name = "x"
|
||||
tar.id_type = 'OBJECT'
|
||||
tar.id = obj
|
||||
tar.rna_path = controller_path + ".rotation_euler[0]"
|
||||
|
||||
|
||||
# *****
|
||||
driver = driver_fcurves[2].driver
|
||||
driver.expression = "(1.0-cos(x))-s"
|
||||
tar = driver.targets.new()
|
||||
tar.name = "x"
|
||||
tar.id_type = 'OBJECT'
|
||||
tar.id = obj
|
||||
tar.rna_path = controller_path + ".rotation_euler[0]"
|
||||
|
||||
tar = driver.targets.new()
|
||||
tar.name = "s"
|
||||
tar.id_type = 'OBJECT'
|
||||
tar.id = obj
|
||||
tar.rna_path = controller_path + '["spread"]'
|
||||
|
||||
|
||||
for i, child_name in enumerate(children):
|
||||
child_pbone = obj.pose.bones[child_name]
|
||||
child_pbone.rotation_mode = 'YZX'
|
||||
|
||||
if child_name != children[-1] and child_name != children[0]:
|
||||
|
||||
# this is somewhat arbitrary but seems to look good
|
||||
inf = i / (len(children)+1)
|
||||
inf = 1.0 - inf
|
||||
inf = ((inf * inf) + inf) / 2.0
|
||||
|
||||
# used for X/Y constraint
|
||||
inf_minor = inf * inf
|
||||
|
||||
con = child_pbone.constraints.new('COPY_ROTATION')
|
||||
con.name = "Copy Z Rot"
|
||||
con.target = obj
|
||||
con.subtarget = children[0] # also pinky_pbone
|
||||
con.owner_space = con.target_space = 'LOCAL'
|
||||
con.use_x, con.use_y, con.use_z = False, False, True
|
||||
con.influence = inf
|
||||
|
||||
con = child_pbone.constraints.new('COPY_ROTATION')
|
||||
con.name = "Copy XY Rot"
|
||||
con.target = obj
|
||||
con.subtarget = children[0] # also pinky_pbone
|
||||
con.owner_space = con.target_space = 'LOCAL'
|
||||
con.use_x, con.use_y, con.use_z = True, True, False
|
||||
con.influence = inf_minor
|
||||
|
||||
|
||||
child_pbone = obj.pose.bones[children[-1]]
|
||||
child_pbone.rotation_mode = 'QUATERNION'
|
||||
|
||||
|
||||
gen_table = {
|
||||
"":gen_none, \
|
||||
"finger":gen_finger, \
|
||||
"delta":gen_delta, \
|
||||
"arm":gen_arm, \
|
||||
"palm":gen_palm, \
|
||||
}
|
||||
|
||||
def generate_rig(context, ob):
|
||||
|
||||
global_undo = context.user_preferences.edit.global_undo
|
||||
context.user_preferences.edit.global_undo = False
|
||||
|
||||
# add_stretch_to(ob, "a", "b", "c")
|
||||
|
||||
bpy.ops.object.mode_set(mode='OBJECT')
|
||||
|
||||
|
||||
# copy object and data
|
||||
ob.selected = False
|
||||
ob_new = ob.copy()
|
||||
ob_new.data = ob.data.copy()
|
||||
scene = context.scene
|
||||
scene.objects.link(ob_new)
|
||||
scene.objects.active = ob_new
|
||||
ob_new.selected = True
|
||||
|
||||
# enter armature editmode
|
||||
|
||||
|
||||
for pbone_name in ob_new.pose.bones.keys():
|
||||
bone_type = ob_new.pose.bones[pbone_name].get("type", "")
|
||||
|
||||
try:
|
||||
func = gen_table[bone_type]
|
||||
except KeyError:
|
||||
print("\tunknown type '%s', bone '%s'" % (bone_type, pbone_name))
|
||||
|
||||
|
||||
# Toggle editmode so the pose data is always up to date
|
||||
bpy.ops.object.mode_set(mode='EDIT')
|
||||
func(ob_new, pbone_name)
|
||||
bpy.ops.object.mode_set(mode='OBJECT')
|
||||
|
||||
# needed to update driver deps
|
||||
# context.scene.update()
|
||||
|
||||
# Only for demo'ing
|
||||
ob.restrict_view = True
|
||||
ob_new.data.draw_axes = False
|
||||
|
||||
context.user_preferences.edit.global_undo = global_undo
|
||||
|
||||
if __name__ == "__main__":
|
||||
generate_rig(bpy.context, bpy.context.object)
|
@ -69,13 +69,17 @@ def draw(layout, context, context_member, use_edit = True):
|
||||
pass
|
||||
|
||||
rna_item = eval("context." + context_member)
|
||||
|
||||
# poll should really get this...
|
||||
if not rna_item:
|
||||
return
|
||||
|
||||
items = rna_item.items()
|
||||
items.sort()
|
||||
|
||||
if use_edit:
|
||||
row = layout.row()
|
||||
props = row.itemO("wm.properties_add", properties=True, text="Add")
|
||||
props = row.operator("wm.properties_add", text="Add")
|
||||
props.path = context_member
|
||||
del row
|
||||
|
||||
@ -102,20 +106,20 @@ def draw(layout, context, context_member, use_edit = True):
|
||||
else:
|
||||
row = box.row()
|
||||
|
||||
row.itemL(text=key)
|
||||
row.label(text=key)
|
||||
|
||||
# explicit exception for arrays
|
||||
if convert_to_pyobject and not hasattr(val_orig, "len"):
|
||||
row.itemL(text=val_draw)
|
||||
row.label(text=val_draw)
|
||||
else:
|
||||
row.itemR(rna_item, '["%s"]' % key, text="")
|
||||
row.prop(rna_item, '["%s"]' % key, text="")
|
||||
|
||||
if use_edit:
|
||||
row = split.row(align=True)
|
||||
prop = row.itemO("wm.properties_edit", properties=True, text="edit")
|
||||
prop = row.operator("wm.properties_edit", text="edit")
|
||||
assign_props(prop, val_draw, key)
|
||||
|
||||
prop = row.itemO("wm.properties_remove", properties=True, text="", icon='ICON_ZOOMOUT')
|
||||
prop = row.operator("wm.properties_remove", text="", icon='ICON_ZOOMOUT')
|
||||
assign_props(prop, val_draw, key)
|
||||
|
||||
|
||||
@ -177,6 +181,7 @@ class WM_OT_properties_edit(bpy.types.Operator):
|
||||
exec_str = "item['%s'] = %s" % (prop, value_eval)
|
||||
# print(exec_str)
|
||||
exec(exec_str)
|
||||
self._last_prop[:] = [prop]
|
||||
|
||||
prop_type = type(item[prop])
|
||||
|
||||
|
@ -130,7 +130,7 @@ bpy.ops.add(AddTorus)
|
||||
# Add to a menu
|
||||
import dynamic_menu
|
||||
|
||||
menu_func = (lambda self, context: self.layout.itemO(AddTorus.bl_idname,
|
||||
menu_func = (lambda self, context: self.layout.operator(AddTorus.bl_idname,
|
||||
text="Torus", icon='ICON_MESH_DONUT'))
|
||||
|
||||
menu_item = dynamic_menu.add(bpy.types.INFO_MT_mesh_add, menu_func)
|
||||
|
File diff suppressed because it is too large
Load Diff
99
release/scripts/op/object.py
Normal file
99
release/scripts/op/object.py
Normal file
@ -0,0 +1,99 @@
|
||||
# ##### BEGIN GPL LICENSE BLOCK #####
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software Foundation,
|
||||
# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
#
|
||||
# ##### END GPL LICENSE BLOCK #####
|
||||
|
||||
import bpy
|
||||
from bpy.props import *
|
||||
|
||||
|
||||
class SelectPattern(bpy.types.Operator):
|
||||
'''Select object matching a naming pattern.'''
|
||||
bl_idname = "object.select_pattern"
|
||||
bl_label = "Select Pattern"
|
||||
bl_register = True
|
||||
bl_undo = True
|
||||
|
||||
pattern = StringProperty(name="Pattern", description="Name filter using '*' and '?' wildcard chars", maxlen=32, default="*")
|
||||
case_sensitive = BoolProperty(name="Case Sensitive", description="Do a case sensitive compare", default=False)
|
||||
extend = BoolProperty(name="Extend", description="Extend the existing selection", default=True)
|
||||
|
||||
def execute(self, context):
|
||||
|
||||
import fnmatch
|
||||
|
||||
if self.properties.case_sensitive:
|
||||
pattern_match = fnmatch.fnmatchcase
|
||||
else:
|
||||
pattern_match = lambda a, b: fnmatch.fnmatchcase(a.upper(), b.upper())
|
||||
|
||||
for ob in context.visible_objects:
|
||||
if pattern_match(ob.name, self.properties.pattern):
|
||||
ob.selected = True
|
||||
elif not self.properties.extend:
|
||||
ob.selected = False
|
||||
|
||||
return ('FINISHED',)
|
||||
|
||||
def invoke(self, context, event):
|
||||
wm = context.manager
|
||||
wm.invoke_props_popup(self, event)
|
||||
return ('RUNNING_MODAL',)
|
||||
|
||||
def draw(self, context):
|
||||
print("WoW")
|
||||
layout = self.layout
|
||||
props = self.properties
|
||||
|
||||
layout.prop(props, "pattern")
|
||||
row = layout.row()
|
||||
row.prop(props, "case_sensitive")
|
||||
row.prop(props, "extend")
|
||||
|
||||
|
||||
|
||||
class SubsurfSet(bpy.types.Operator):
|
||||
'''Sets a Subdivision Surface Level (1-5)'''
|
||||
|
||||
bl_idname = "object.subsurf_set"
|
||||
bl_label = "Subsurf Set"
|
||||
bl_register = True
|
||||
bl_undo = True
|
||||
|
||||
level = IntProperty(name="Level",
|
||||
default=1, min=0, max=6)
|
||||
|
||||
def poll(self, context):
|
||||
ob = context.active_object
|
||||
return (ob and ob.type == 'MESH')
|
||||
|
||||
def execute(self, context):
|
||||
level = self.properties.level
|
||||
ob = context.active_object
|
||||
for mod in ob.modifiers:
|
||||
if mod.type == 'SUBSURF':
|
||||
if mod.levels != level:
|
||||
mod.levels = level
|
||||
return ('FINISHED',)
|
||||
|
||||
# adda new modifier
|
||||
mod = ob.modifiers.new("Subsurf", 'SUBSURF')
|
||||
mod.levels = level
|
||||
return ('FINISHED',)
|
||||
|
||||
|
||||
bpy.ops.add(SelectPattern)
|
||||
bpy.ops.add(SubsurfSet)
|
@ -4,12 +4,12 @@
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software Foundation,
|
||||
# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
@ -19,7 +19,43 @@
|
||||
import bpy
|
||||
import os
|
||||
|
||||
from wm import AddPresetBase
|
||||
class AddPresetBase(bpy.types.Operator):
|
||||
'''Base preset class, only for subclassing
|
||||
subclasses must define
|
||||
- preset_values
|
||||
- preset_subdir '''
|
||||
bl_idname = "render.preset_add"
|
||||
bl_label = "Add Render Preset"
|
||||
|
||||
name = bpy.props.StringProperty(name="Name", description="Name of the preset, used to make the path name", maxlen= 64, default= "")
|
||||
|
||||
def _as_filename(self, name): # could reuse for other presets
|
||||
for char in " !@#$%^&*(){}:\";'[]<>,./?":
|
||||
name = name.replace('.', '_')
|
||||
return name.lower()
|
||||
|
||||
def execute(self, context):
|
||||
|
||||
if not self.properties.name:
|
||||
return ('FINISHED',)
|
||||
|
||||
filename = self._as_filename(self.properties.name) + ".py"
|
||||
|
||||
target_path = bpy.utils.preset_paths(self.preset_subdir)[0] # we need some way to tell the user and system preset path
|
||||
|
||||
file_preset = open(os.path.join(target_path, filename), 'w')
|
||||
|
||||
for rna_path in self.preset_values:
|
||||
file_preset.write("%s = %s\n" % (rna_path, eval(rna_path)))
|
||||
|
||||
file_preset.close()
|
||||
|
||||
return ('FINISHED',)
|
||||
|
||||
def invoke(self, context, event):
|
||||
wm = context.manager
|
||||
wm.invoke_props_popup(self, event)
|
||||
return ('RUNNING_MODAL',)
|
||||
|
||||
|
||||
class AddPresetRender(AddPresetBase):
|
||||
@ -38,7 +74,7 @@ class AddPresetRender(AddPresetBase):
|
||||
"bpy.context.scene.render_data.resolution_percentage",
|
||||
]
|
||||
|
||||
preset_path = os.path.join("presets", "render")
|
||||
preset_subdir = "render"
|
||||
|
||||
|
||||
class AddPresetSSS(AddPresetBase):
|
||||
@ -63,14 +99,14 @@ class AddPresetSSS(AddPresetBase):
|
||||
"bpy.context.material.subsurface_scattering.texture_factor",
|
||||
]
|
||||
|
||||
preset_path = os.path.join("presets", "sss")
|
||||
|
||||
preset_subdir = "sss"
|
||||
|
||||
class AddPresetCloth(AddPresetBase):
|
||||
'''Add a Cloth Preset.'''
|
||||
bl_idname = "cloth.preset_add"
|
||||
bl_label = "Add Cloth Preset"
|
||||
name = AddPresetBase.name
|
||||
|
||||
|
||||
preset_values = [
|
||||
"bpy.context.cloth.settings.quality",
|
||||
"bpy.context.cloth.settings.mass",
|
||||
@ -79,11 +115,10 @@ class AddPresetCloth(AddPresetBase):
|
||||
"bpy.context.cloth.settings.spring_damping",
|
||||
"bpy.context.cloth.settings.air_damping",
|
||||
]
|
||||
|
||||
preset_path = os.path.join("presets", "cloth")
|
||||
|
||||
preset_subdir = "cloth"
|
||||
|
||||
bpy.ops.add(AddPresetRender)
|
||||
bpy.ops.add(AddPresetSSS)
|
||||
bpy.ops.add(AddPresetCloth)
|
||||
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -33,6 +33,7 @@ class MESH_OT_delete_edgeloop(bpy.types.Operator):
|
||||
bpy.ops.tfm.edge_slide(value=1.0)
|
||||
bpy.ops.mesh.select_more()
|
||||
bpy.ops.mesh.remove_doubles()
|
||||
|
||||
return ('FINISHED',)
|
||||
|
||||
rna_path_prop = StringProperty(name="Context Attributes",
|
||||
@ -248,9 +249,9 @@ class WM_OT_context_cycle_enum(bpy.types.Operator):
|
||||
return ('FINISHED',)
|
||||
|
||||
doc_id = StringProperty(name="Doc ID",
|
||||
description="ID for the documentation", maxlen=1024, default="")
|
||||
description="", maxlen=1024, default="", hidden=True)
|
||||
|
||||
doc_new = StringProperty(name="Doc New",
|
||||
doc_new = StringProperty(name="Edit Description",
|
||||
description="", maxlen=1024, default="")
|
||||
|
||||
|
||||
@ -392,53 +393,6 @@ class WM_OT_reload_scripts(bpy.types.Operator):
|
||||
'''
|
||||
return ('FINISHED',)
|
||||
|
||||
class AddPresetBase(bpy.types.Operator):
|
||||
'''Base preset class, only for subclassing
|
||||
subclasses must define
|
||||
- preset_values
|
||||
- preset_path '''
|
||||
bl_idname = "render.preset_add"
|
||||
bl_label = "Add Render Preset"
|
||||
|
||||
name = bpy.props.StringProperty(name="Name", description="Name of the preset, used to make the path name", maxlen= 64, default= "New Preset")
|
||||
|
||||
'''
|
||||
preset_values = [
|
||||
"bpy.context.scene.render_data.resolution_x",
|
||||
"bpy.context.scene.render_data.resolution_y",
|
||||
"bpy.context.scene.render_data.pixel_aspect_x",
|
||||
"bpy.context.scene.render_data.pixel_aspect_y",
|
||||
"bpy.context.scene.render_data.fps",
|
||||
"bpy.context.scene.render_data.fps_base",
|
||||
"bpy.context.scene.render_data.resolution_percentage",
|
||||
]
|
||||
|
||||
preset_path = os.path.join("presets", "render")
|
||||
'''
|
||||
|
||||
def _as_filename(self, name): # could reuse for other presets
|
||||
for char in " !@#$%^&*(){}:\";'[]<>,./?":
|
||||
name = name.replace('.', '_')
|
||||
return name.lower()
|
||||
|
||||
def execute(self, context):
|
||||
filename = self._as_filename(self.properties.name) + ".py"
|
||||
|
||||
target_path = os.path.join(os.path.dirname(__file__), os.path.pardir, self.preset_path, filename)
|
||||
|
||||
file_preset = open(target_path, 'w')
|
||||
|
||||
for rna_path in self.preset_values:
|
||||
file_preset.write("%s = %s\n" % (rna_path, eval(rna_path)))
|
||||
|
||||
file_preset.close()
|
||||
|
||||
return ('FINISHED',)
|
||||
|
||||
def invoke(self, context, event):
|
||||
wm = context.manager
|
||||
wm.invoke_props_popup(self, event)
|
||||
return ('RUNNING_MODAL',)
|
||||
|
||||
bpy.ops.add(MESH_OT_delete_edgeloop)
|
||||
|
||||
|
@ -2,4 +2,6 @@ bpy.context.scene.render_data.resolution_x = 1920
|
||||
bpy.context.scene.render_data.resolution_y = 1080
|
||||
bpy.context.scene.render_data.resolution_percentage = 100
|
||||
bpy.context.scene.render_data.pixel_aspect_x = 1
|
||||
bpy.context.scene.render_data.pixel_aspect_y = 1
|
||||
bpy.context.scene.render_data.pixel_aspect_y = 1
|
||||
bpy.context.scene.render_data.fps = 24
|
||||
bpy.context.scene.render_data.fps_base = 1
|
@ -2,4 +2,6 @@ bpy.context.scene.render_data.resolution_x = 1280
|
||||
bpy.context.scene.render_data.resolution_y = 720
|
||||
bpy.context.scene.render_data.resolution_percentage = 100
|
||||
bpy.context.scene.render_data.pixel_aspect_x = 1
|
||||
bpy.context.scene.render_data.pixel_aspect_y = 1
|
||||
bpy.context.scene.render_data.pixel_aspect_y = 1
|
||||
bpy.context.scene.render_data.fps = 24
|
||||
bpy.context.scene.render_data.fps_base = 1
|
@ -3,4 +3,5 @@ bpy.context.scene.render_data.resolution_y = 576
|
||||
bpy.context.scene.render_data.resolution_percentage = 100
|
||||
bpy.context.scene.render_data.pixel_aspect_x = 54
|
||||
bpy.context.scene.render_data.pixel_aspect_y = 51
|
||||
bpy.context.scene.render_data.fps = 25
|
||||
bpy.context.scene.render_data.fps = 25
|
||||
bpy.context.scene.render_data.fps_base = 1
|
@ -3,4 +3,5 @@ bpy.context.scene.render_data.resolution_y = 576
|
||||
bpy.context.scene.render_data.resolution_percentage = 100
|
||||
bpy.context.scene.render_data.pixel_aspect_x = 64
|
||||
bpy.context.scene.render_data.pixel_aspect_y = 45
|
||||
bpy.context.scene.render_data.fps = 25
|
||||
bpy.context.scene.render_data.fps = 25
|
||||
bpy.context.scene.render_data.fps_base = 1
|
@ -51,7 +51,7 @@ bpy.ops.add(ExportSomeData)
|
||||
|
||||
# Only needed if you want to add into a dynamic menu
|
||||
import dynamic_menu
|
||||
menu_func = lambda self, context: self.layout.itemO("export.some_data", text="Example Exporter...")
|
||||
menu_func = lambda self, context: self.layout.operator("export.some_data", text="Example Exporter...")
|
||||
menu_item = dynamic_menu.add(bpy.types.INFO_MT_file_export, menu_func)
|
||||
|
||||
# Use for running this script directly
|
||||
|
@ -47,10 +47,10 @@ class DATA_PT_context_arm(DataButtonsPanel):
|
||||
split = layout.split(percentage=0.65)
|
||||
if ob:
|
||||
split.template_ID(ob, "data")
|
||||
split.itemS()
|
||||
split.separator()
|
||||
elif arm:
|
||||
split.template_ID(space, "pin_id")
|
||||
split.itemS()
|
||||
split.separator()
|
||||
else:
|
||||
layout.template_ID(ob, "data")
|
||||
|
||||
@ -64,23 +64,23 @@ class DATA_PT_skeleton(DataButtonsPanel):
|
||||
arm = context.armature
|
||||
wide_ui = context.region.width > narrowui
|
||||
|
||||
layout.itemR(arm, "pose_position", expand=True)
|
||||
layout.prop(arm, "pose_position", expand=True)
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Layers:")
|
||||
col.itemR(arm, "layer", text="")
|
||||
col.itemL(text="Protected Layers:")
|
||||
col.itemR(arm, "layer_protection", text="")
|
||||
col.label(text="Layers:")
|
||||
col.prop(arm, "layer", text="")
|
||||
col.label(text="Protected Layers:")
|
||||
col.prop(arm, "layer_protection", text="")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Deform:")
|
||||
col.itemR(arm, "deform_vertexgroups", text="Vertex Groups")
|
||||
col.itemR(arm, "deform_envelope", text="Envelopes")
|
||||
col.itemR(arm, "deform_quaternion", text="Quaternion")
|
||||
col.itemR(arm, "deform_bbone_rest", text="B-Bones Rest")
|
||||
col.label(text="Deform:")
|
||||
col.prop(arm, "deform_vertexgroups", text="Vertex Groups")
|
||||
col.prop(arm, "deform_envelope", text="Envelopes")
|
||||
col.prop(arm, "deform_quaternion", text="Quaternion")
|
||||
col.prop(arm, "deform_bbone_rest", text="B-Bones Rest")
|
||||
|
||||
|
||||
class DATA_PT_display(DataButtonsPanel):
|
||||
@ -93,21 +93,21 @@ class DATA_PT_display(DataButtonsPanel):
|
||||
wide_ui = context.region.width > narrowui
|
||||
|
||||
if wide_ui:
|
||||
layout.row().itemR(arm, "drawtype", expand=True)
|
||||
layout.row().prop(arm, "drawtype", expand=True)
|
||||
else:
|
||||
layout.row().itemR(arm, "drawtype", text="")
|
||||
layout.row().prop(arm, "drawtype", text="")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(arm, "draw_names", text="Names")
|
||||
col.itemR(arm, "draw_axes", text="Axes")
|
||||
col.itemR(arm, "draw_custom_bone_shapes", text="Shapes")
|
||||
col.prop(arm, "draw_names", text="Names")
|
||||
col.prop(arm, "draw_axes", text="Axes")
|
||||
col.prop(arm, "draw_custom_bone_shapes", text="Shapes")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(arm, "draw_group_colors", text="Colors")
|
||||
col.itemR(arm, "delay_deform", text="Delay Refresh")
|
||||
col.prop(arm, "draw_group_colors", text="Colors")
|
||||
col.prop(arm, "delay_deform", text="Delay Refresh")
|
||||
|
||||
|
||||
class DATA_PT_bone_groups(DataButtonsPanel):
|
||||
@ -127,33 +127,33 @@ class DATA_PT_bone_groups(DataButtonsPanel):
|
||||
row.template_list(pose, "bone_groups", pose, "active_bone_group_index", rows=2)
|
||||
|
||||
col = row.column(align=True)
|
||||
col.active = (ob.proxy == None)
|
||||
col.itemO("pose.group_add", icon='ICON_ZOOMIN', text="")
|
||||
col.itemO("pose.group_remove", icon='ICON_ZOOMOUT', text="")
|
||||
col.active = (ob.proxy is None)
|
||||
col.operator("pose.group_add", icon='ICON_ZOOMIN', text="")
|
||||
col.operator("pose.group_remove", icon='ICON_ZOOMOUT', text="")
|
||||
|
||||
group = pose.active_bone_group
|
||||
if group:
|
||||
col = layout.column()
|
||||
col.active = (ob.proxy == None)
|
||||
col.itemR(group, "name")
|
||||
col.active = (ob.proxy is None)
|
||||
col.prop(group, "name")
|
||||
|
||||
split = layout.split()
|
||||
split.active = (ob.proxy == None)
|
||||
split.active = (ob.proxy is None)
|
||||
|
||||
col = split.column()
|
||||
col.itemR(group, "color_set")
|
||||
col.prop(group, "color_set")
|
||||
if group.color_set:
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.template_triColorSet(group, "colors")
|
||||
|
||||
row = layout.row(align=True)
|
||||
row.active = (ob.proxy == None)
|
||||
row.active = (ob.proxy is None)
|
||||
|
||||
row.itemO("pose.group_assign", text="Assign")
|
||||
row.itemO("pose.group_remove", text="Remove") #row.itemO("pose.bone_group_remove_from", text="Remove")
|
||||
#row.itemO("object.bone_group_select", text="Select")
|
||||
#row.itemO("object.bone_group_deselect", text="Deselect")
|
||||
row.operator("pose.group_assign", text="Assign")
|
||||
row.operator("pose.group_remove", text="Remove") #row.operator("pose.bone_group_remove_from", text="Remove")
|
||||
#row.operator("object.bone_group_select", text="Select")
|
||||
#row.operator("object.bone_group_deselect", text="Deselect")
|
||||
|
||||
|
||||
class DATA_PT_paths(DataButtonsPanel):
|
||||
@ -166,41 +166,41 @@ class DATA_PT_paths(DataButtonsPanel):
|
||||
wide_ui = context.region.width > narrowui
|
||||
|
||||
if wide_ui:
|
||||
layout.itemR(arm, "paths_type", expand=True)
|
||||
layout.prop(arm, "paths_type", expand=True)
|
||||
else:
|
||||
layout.itemR(arm, "paths_type", text="")
|
||||
layout.prop(arm, "paths_type", text="")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
sub = col.column(align=True)
|
||||
if (arm.paths_type == 'CURRENT_FRAME'):
|
||||
sub.itemR(arm, "path_before_current", text="Before")
|
||||
sub.itemR(arm, "path_after_current", text="After")
|
||||
sub.prop(arm, "path_before_current", text="Before")
|
||||
sub.prop(arm, "path_after_current", text="After")
|
||||
elif (arm.paths_type == 'RANGE'):
|
||||
sub.itemR(arm, "path_start_frame", text="Start")
|
||||
sub.itemR(arm, "path_end_frame", text="End")
|
||||
sub.prop(arm, "path_start_frame", text="Start")
|
||||
sub.prop(arm, "path_end_frame", text="End")
|
||||
|
||||
sub.itemR(arm, "path_size", text="Step")
|
||||
col.row().itemR(arm, "paths_location", expand=True)
|
||||
sub.prop(arm, "path_size", text="Step")
|
||||
col.row().prop(arm, "paths_location", expand=True)
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Display:")
|
||||
col.itemR(arm, "paths_show_frame_numbers", text="Frame Numbers")
|
||||
col.itemR(arm, "paths_highlight_keyframes", text="Keyframes")
|
||||
col.itemR(arm, "paths_show_keyframe_numbers", text="Keyframe Numbers")
|
||||
col.label(text="Display:")
|
||||
col.prop(arm, "paths_show_frame_numbers", text="Frame Numbers")
|
||||
col.prop(arm, "paths_highlight_keyframes", text="Keyframes")
|
||||
col.prop(arm, "paths_show_keyframe_numbers", text="Keyframe Numbers")
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemO("pose.paths_calculate", text="Calculate Paths")
|
||||
col.operator("pose.paths_calculate", text="Calculate Paths")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemO("pose.paths_clear", text="Clear Paths")
|
||||
col.operator("pose.paths_clear", text="Clear Paths")
|
||||
|
||||
|
||||
class DATA_PT_ghost(DataButtonsPanel):
|
||||
@ -213,9 +213,9 @@ class DATA_PT_ghost(DataButtonsPanel):
|
||||
wide_ui = context.region.width > narrowui
|
||||
|
||||
if wide_ui:
|
||||
layout.itemR(arm, "ghost_type", expand=True)
|
||||
layout.prop(arm, "ghost_type", expand=True)
|
||||
else:
|
||||
layout.itemR(arm, "ghost_type", text="")
|
||||
layout.prop(arm, "ghost_type", text="")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
@ -223,17 +223,17 @@ class DATA_PT_ghost(DataButtonsPanel):
|
||||
|
||||
sub = col.column(align=True)
|
||||
if arm.ghost_type == 'RANGE':
|
||||
sub.itemR(arm, "ghost_start_frame", text="Start")
|
||||
sub.itemR(arm, "ghost_end_frame", text="End")
|
||||
sub.itemR(arm, "ghost_size", text="Step")
|
||||
sub.prop(arm, "ghost_start_frame", text="Start")
|
||||
sub.prop(arm, "ghost_end_frame", text="End")
|
||||
sub.prop(arm, "ghost_size", text="Step")
|
||||
elif arm.ghost_type == 'CURRENT_FRAME':
|
||||
sub.itemR(arm, "ghost_step", text="Range")
|
||||
sub.itemR(arm, "ghost_size", text="Step")
|
||||
sub.prop(arm, "ghost_step", text="Range")
|
||||
sub.prop(arm, "ghost_size", text="Step")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Display:")
|
||||
col.itemR(arm, "ghost_only_selected", text="Selected Only")
|
||||
col.label(text="Display:")
|
||||
col.prop(arm, "ghost_only_selected", text="Selected Only")
|
||||
|
||||
bpy.types.register(DATA_PT_context_arm)
|
||||
bpy.types.register(DATA_PT_skeleton)
|
||||
|
@ -43,8 +43,8 @@ class BONE_PT_context_bone(BoneButtonsPanel):
|
||||
bone = context.edit_bone
|
||||
|
||||
row = layout.row()
|
||||
row.itemL(text="", icon='ICON_BONE_DATA')
|
||||
row.itemR(bone, "name", text="")
|
||||
row.label(text="", icon='ICON_BONE_DATA')
|
||||
row.prop(bone, "name", text="")
|
||||
|
||||
|
||||
class BONE_PT_transform(BoneButtonsPanel):
|
||||
@ -61,21 +61,21 @@ class BONE_PT_transform(BoneButtonsPanel):
|
||||
bone = context.edit_bone
|
||||
if wide_ui:
|
||||
row = layout.row()
|
||||
row.column().itemR(bone, "head")
|
||||
row.column().itemR(bone, "tail")
|
||||
row.column().prop(bone, "head")
|
||||
row.column().prop(bone, "tail")
|
||||
|
||||
col = row.column()
|
||||
sub = col.column(align=True)
|
||||
sub.itemL(text="Roll:")
|
||||
sub.itemR(bone, "roll", text="")
|
||||
sub.itemL()
|
||||
sub.itemR(bone, "locked")
|
||||
sub.label(text="Roll:")
|
||||
sub.prop(bone, "roll", text="")
|
||||
sub.label()
|
||||
sub.prop(bone, "locked")
|
||||
else:
|
||||
col = layout.column()
|
||||
col.itemR(bone, "head")
|
||||
col.itemR(bone, "tail")
|
||||
col.itemR(bone, "roll")
|
||||
col.itemR(bone, "locked")
|
||||
col.prop(bone, "head")
|
||||
col.prop(bone, "tail")
|
||||
col.prop(bone, "roll")
|
||||
col.prop(bone, "locked")
|
||||
|
||||
else:
|
||||
pchan = ob.pose.bones[context.bone.name]
|
||||
@ -83,37 +83,37 @@ class BONE_PT_transform(BoneButtonsPanel):
|
||||
if wide_ui:
|
||||
row = layout.row()
|
||||
col = row.column()
|
||||
col.itemR(pchan, "location")
|
||||
col.prop(pchan, "location")
|
||||
col.active = not (bone.parent and bone.connected)
|
||||
|
||||
col = row.column()
|
||||
if pchan.rotation_mode == 'QUATERNION':
|
||||
col.itemR(pchan, "rotation_quaternion", text="Rotation")
|
||||
col.prop(pchan, "rotation_quaternion", text="Rotation")
|
||||
elif pchan.rotation_mode == 'AXIS_ANGLE':
|
||||
#col.itemL(text="Rotation")
|
||||
#col.itemR(pchan, "rotation_angle", text="Angle")
|
||||
#col.itemR(pchan, "rotation_axis", text="Axis")
|
||||
col.itemR(pchan, "rotation_axis_angle", text="Rotation")
|
||||
#col.label(text="Rotation")
|
||||
#col.prop(pchan, "rotation_angle", text="Angle")
|
||||
#col.prop(pchan, "rotation_axis", text="Axis")
|
||||
col.prop(pchan, "rotation_axis_angle", text="Rotation")
|
||||
else:
|
||||
col.itemR(pchan, "rotation_euler", text="Rotation")
|
||||
col.prop(pchan, "rotation_euler", text="Rotation")
|
||||
|
||||
row.column().itemR(pchan, "scale")
|
||||
row.column().prop(pchan, "scale")
|
||||
|
||||
layout.itemR(pchan, "rotation_mode")
|
||||
layout.prop(pchan, "rotation_mode")
|
||||
else:
|
||||
col = layout.column()
|
||||
sub = col.column()
|
||||
sub.active = not (bone.parent and bone.connected)
|
||||
sub.itemR(pchan, "location")
|
||||
col.itemL(text="Rotation:")
|
||||
col.itemR(pchan, "rotation_mode", text="")
|
||||
sub.prop(pchan, "location")
|
||||
col.label(text="Rotation:")
|
||||
col.prop(pchan, "rotation_mode", text="")
|
||||
if pchan.rotation_mode == 'QUATERNION':
|
||||
col.itemR(pchan, "rotation_quaternion", text="")
|
||||
col.prop(pchan, "rotation_quaternion", text="")
|
||||
elif pchan.rotation_mode == 'AXIS_ANGLE':
|
||||
col.itemR(pchan, "rotation_axis_angle", text="")
|
||||
col.prop(pchan, "rotation_axis_angle", text="")
|
||||
else:
|
||||
col.itemR(pchan, "rotation_euler", text="")
|
||||
col.itemR(pchan, "scale")
|
||||
col.prop(pchan, "rotation_euler", text="")
|
||||
col.prop(pchan, "scale")
|
||||
|
||||
|
||||
class BONE_PT_transform_locks(BoneButtonsPanel):
|
||||
@ -132,19 +132,19 @@ class BONE_PT_transform_locks(BoneButtonsPanel):
|
||||
|
||||
row = layout.row()
|
||||
col = row.column()
|
||||
col.itemR(pchan, "lock_location")
|
||||
col.prop(pchan, "lock_location")
|
||||
col.active = not (bone.parent and bone.connected)
|
||||
|
||||
col = row.column()
|
||||
if pchan.rotation_mode in ('QUATERNION', 'AXIS_ANGLE'):
|
||||
col.itemR(pchan, "lock_rotations_4d", text="Lock Rotation")
|
||||
col.prop(pchan, "lock_rotations_4d", text="Lock Rotation")
|
||||
if pchan.lock_rotations_4d:
|
||||
col.itemR(pchan, "lock_rotation_w", text="W")
|
||||
col.itemR(pchan, "lock_rotation", text="")
|
||||
col.prop(pchan, "lock_rotation_w", text="W")
|
||||
col.prop(pchan, "lock_rotation", text="")
|
||||
else:
|
||||
col.itemR(pchan, "lock_rotation", text="Rotation")
|
||||
col.prop(pchan, "lock_rotation", text="Rotation")
|
||||
|
||||
row.column().itemR(pchan, "lock_scale")
|
||||
row.column().prop(pchan, "lock_scale")
|
||||
|
||||
|
||||
class BONE_PT_relations(BoneButtonsPanel):
|
||||
@ -167,28 +167,31 @@ class BONE_PT_relations(BoneButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Layers:")
|
||||
col.itemR(bone, "layer", text="")
|
||||
col.label(text="Layers:")
|
||||
col.prop(bone, "layer", text="")
|
||||
|
||||
col.itemS()
|
||||
col.separator()
|
||||
|
||||
if ob and pchan:
|
||||
col.itemL(text="Bone Group:")
|
||||
col.item_pointerR(pchan, "bone_group", ob.pose, "bone_groups", text="")
|
||||
col.label(text="Bone Group:")
|
||||
col.prop_object(pchan, "bone_group", ob.pose, "bone_groups", text="")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Parent:")
|
||||
col.label(text="Parent:")
|
||||
if context.bone:
|
||||
col.itemR(bone, "parent", text="")
|
||||
col.prop(bone, "parent", text="")
|
||||
else:
|
||||
col.item_pointerR(bone, "parent", arm, "edit_bones", text="")
|
||||
col.prop_object(bone, "parent", arm, "edit_bones", text="")
|
||||
|
||||
sub = col.column()
|
||||
sub.active = bone.parent != None
|
||||
sub.itemR(bone, "connected")
|
||||
sub.itemR(bone, "hinge", text="Inherit Rotation")
|
||||
sub.itemR(bone, "inherit_scale", text="Inherit Scale")
|
||||
sub.active = (bone.parent is not None)
|
||||
sub.prop(bone, "connected")
|
||||
sub.prop(bone, "hinge", text="Inherit Rotation")
|
||||
sub.prop(bone, "inherit_scale", text="Inherit Scale")
|
||||
sub = col.column()
|
||||
sub.active = (not bone.parent or not bone.connected)
|
||||
sub.prop(bone, "local_location", text="Local Location")
|
||||
|
||||
|
||||
class BONE_PT_display(BoneButtonsPanel):
|
||||
@ -215,13 +218,13 @@ class BONE_PT_display(BoneButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(bone, "draw_wire", text="Wireframe")
|
||||
col.itemR(bone, "hidden", text="Hide")
|
||||
col.prop(bone, "draw_wire", text="Wireframe")
|
||||
col.prop(bone, "hidden", text="Hide")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Custom Shape:")
|
||||
col.itemR(pchan, "custom_shape", text="")
|
||||
col.label(text="Custom Shape:")
|
||||
col.prop(pchan, "custom_shape", text="")
|
||||
|
||||
|
||||
class BONE_PT_deform(BoneButtonsPanel):
|
||||
@ -234,7 +237,7 @@ class BONE_PT_deform(BoneButtonsPanel):
|
||||
if not bone:
|
||||
bone = context.edit_bone
|
||||
|
||||
self.layout.itemR(bone, "deform", text="")
|
||||
self.layout.prop(bone, "deform", text="")
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@ -250,29 +253,29 @@ class BONE_PT_deform(BoneButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Envelope:")
|
||||
col.label(text="Envelope:")
|
||||
|
||||
sub = col.column(align=True)
|
||||
sub.itemR(bone, "envelope_distance", text="Distance")
|
||||
sub.itemR(bone, "envelope_weight", text="Weight")
|
||||
col.itemR(bone, "multiply_vertexgroup_with_envelope", text="Multiply")
|
||||
sub.prop(bone, "envelope_distance", text="Distance")
|
||||
sub.prop(bone, "envelope_weight", text="Weight")
|
||||
col.prop(bone, "multiply_vertexgroup_with_envelope", text="Multiply")
|
||||
|
||||
sub = col.column(align=True)
|
||||
sub.itemL(text="Radius:")
|
||||
sub.itemR(bone, "head_radius", text="Head")
|
||||
sub.itemR(bone, "tail_radius", text="Tail")
|
||||
sub.label(text="Radius:")
|
||||
sub.prop(bone, "head_radius", text="Head")
|
||||
sub.prop(bone, "tail_radius", text="Tail")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Curved Bones:")
|
||||
col.label(text="Curved Bones:")
|
||||
|
||||
sub = col.column(align=True)
|
||||
sub.itemR(bone, "bbone_segments", text="Segments")
|
||||
sub.itemR(bone, "bbone_in", text="Ease In")
|
||||
sub.itemR(bone, "bbone_out", text="Ease Out")
|
||||
sub.prop(bone, "bbone_segments", text="Segments")
|
||||
sub.prop(bone, "bbone_in", text="Ease In")
|
||||
sub.prop(bone, "bbone_out", text="Ease Out")
|
||||
|
||||
col.itemL(text="Offset:")
|
||||
col.itemR(bone, "cyclic_offset")
|
||||
col.label(text="Offset:")
|
||||
col.prop(bone, "cyclic_offset")
|
||||
|
||||
|
||||
class BONE_PT_properties(BoneButtonsPanel):
|
||||
@ -284,7 +287,7 @@ class BONE_PT_properties(BoneButtonsPanel):
|
||||
# reload(rna_prop_ui)
|
||||
obj = context.object
|
||||
if obj and obj.mode == 'POSE':
|
||||
item = "active_pchan"
|
||||
item = "active_pose_bone"
|
||||
else:
|
||||
item = "active_bone"
|
||||
|
||||
|
@ -47,10 +47,10 @@ class DATA_PT_context_camera(DataButtonsPanel):
|
||||
split = layout.split(percentage=0.65)
|
||||
if ob:
|
||||
split.template_ID(ob, "data")
|
||||
split.itemS()
|
||||
split.separator()
|
||||
elif cam:
|
||||
split.template_ID(space, "pin_id")
|
||||
split.itemS()
|
||||
split.separator()
|
||||
else:
|
||||
if ob:
|
||||
layout.template_ID(ob, "data")
|
||||
@ -68,50 +68,50 @@ class DATA_PT_camera(DataButtonsPanel):
|
||||
wide_ui = context.region.width > narrowui
|
||||
|
||||
if wide_ui:
|
||||
layout.itemR(cam, "type", expand=True)
|
||||
layout.prop(cam, "type", expand=True)
|
||||
else:
|
||||
layout.itemR(cam, "type", text="")
|
||||
layout.prop(cam, "type", text="")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
if cam.type == 'PERSP':
|
||||
if cam.lens_unit == 'MILLIMETERS':
|
||||
col.itemR(cam, "lens", text="Angle")
|
||||
col.prop(cam, "lens", text="Angle")
|
||||
elif cam.lens_unit == 'DEGREES':
|
||||
col.itemR(cam, "angle")
|
||||
col.prop(cam, "angle")
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(cam, "lens_unit", text="")
|
||||
col.prop(cam, "lens_unit", text="")
|
||||
|
||||
elif cam.type == 'ORTHO':
|
||||
col.itemR(cam, "ortho_scale")
|
||||
col.prop(cam, "ortho_scale")
|
||||
|
||||
layout.itemR(cam, "panorama")
|
||||
layout.prop(cam, "panorama")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column(align=True)
|
||||
col.itemL(text="Shift:")
|
||||
col.itemR(cam, "shift_x", text="X")
|
||||
col.itemR(cam, "shift_y", text="Y")
|
||||
col.label(text="Shift:")
|
||||
col.prop(cam, "shift_x", text="X")
|
||||
col.prop(cam, "shift_y", text="Y")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column(align=True)
|
||||
col.itemL(text="Clipping:")
|
||||
col.itemR(cam, "clip_start", text="Start")
|
||||
col.itemR(cam, "clip_end", text="End")
|
||||
col.label(text="Clipping:")
|
||||
col.prop(cam, "clip_start", text="Start")
|
||||
col.prop(cam, "clip_end", text="End")
|
||||
|
||||
layout.itemL(text="Depth of Field:")
|
||||
layout.label(text="Depth of Field:")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(cam, "dof_object", text="")
|
||||
col.prop(cam, "dof_object", text="")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(cam, "dof_distance", text="Distance")
|
||||
col.prop(cam, "dof_distance", text="Distance")
|
||||
|
||||
|
||||
class DATA_PT_camera_display(DataButtonsPanel):
|
||||
@ -126,19 +126,19 @@ class DATA_PT_camera_display(DataButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(cam, "show_limits", text="Limits")
|
||||
col.itemR(cam, "show_mist", text="Mist")
|
||||
col.itemR(cam, "show_title_safe", text="Title Safe")
|
||||
col.itemR(cam, "show_name", text="Name")
|
||||
col.prop(cam, "show_limits", text="Limits")
|
||||
col.prop(cam, "show_mist", text="Mist")
|
||||
col.prop(cam, "show_title_safe", text="Title Safe")
|
||||
col.prop(cam, "show_name", text="Name")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(cam, "draw_size", text="Size")
|
||||
col.itemS()
|
||||
col.itemR(cam, "show_passepartout", text="Passepartout")
|
||||
col.prop(cam, "draw_size", text="Size")
|
||||
col.separator()
|
||||
col.prop(cam, "show_passepartout", text="Passepartout")
|
||||
sub = col.column()
|
||||
sub.active = cam.show_passepartout
|
||||
sub.itemR(cam, "passepartout_alpha", text="Alpha", slider=True)
|
||||
sub.prop(cam, "passepartout_alpha", text="Alpha", slider=True)
|
||||
|
||||
bpy.types.register(DATA_PT_context_camera)
|
||||
bpy.types.register(DATA_PT_camera)
|
||||
|
@ -64,10 +64,10 @@ class DATA_PT_context_curve(DataButtonsPanel):
|
||||
|
||||
if ob:
|
||||
split.template_ID(ob, "data")
|
||||
split.itemS()
|
||||
split.separator()
|
||||
elif curve:
|
||||
split.template_ID(space, "pin_id")
|
||||
split.itemS()
|
||||
split.separator()
|
||||
else:
|
||||
layout.template_ID(ob, "data")
|
||||
|
||||
@ -87,42 +87,42 @@ class DATA_PT_shape_curve(DataButtonsPanel):
|
||||
|
||||
if is_curve:
|
||||
row = layout.row()
|
||||
row.itemR(curve, "dimensions", expand=True)
|
||||
row.prop(curve, "dimensions", expand=True)
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Resolution:")
|
||||
col.label(text="Resolution:")
|
||||
sub = col.column(align=True)
|
||||
sub.itemR(curve, "resolution_u", text="Preview U")
|
||||
sub.itemR(curve, "render_resolution_u", text="Render U")
|
||||
sub.prop(curve, "resolution_u", text="Preview U")
|
||||
sub.prop(curve, "render_resolution_u", text="Render U")
|
||||
if is_curve:
|
||||
col.itemL(text="Twisting:")
|
||||
col.itemR(curve, "twist_mode", text="")
|
||||
col.itemR(curve, "twist_smooth", text="Smooth")
|
||||
col.label(text="Twisting:")
|
||||
col.prop(curve, "twist_mode", text="")
|
||||
col.prop(curve, "twist_smooth", text="Smooth")
|
||||
if is_text:
|
||||
col.itemL(text="Display:")
|
||||
col.itemR(curve, "fast", text="Fast Editing")
|
||||
col.label(text="Display:")
|
||||
col.prop(curve, "fast", text="Fast Editing")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
|
||||
if is_surf:
|
||||
sub = col.column(align=True)
|
||||
sub.itemL(text="")
|
||||
sub.itemR(curve, "resolution_v", text="Preview V")
|
||||
sub.itemR(curve, "render_resolution_v", text="Render V")
|
||||
sub.label(text="")
|
||||
sub.prop(curve, "resolution_v", text="Preview V")
|
||||
sub.prop(curve, "render_resolution_v", text="Render V")
|
||||
|
||||
if is_curve or is_text:
|
||||
sub = col.column()
|
||||
sub.active = (curve.dimensions == '2D')
|
||||
sub.itemL(text="Caps:")
|
||||
sub.itemR(curve, "front")
|
||||
sub.itemR(curve, "back")
|
||||
sub.label(text="Caps:")
|
||||
sub.prop(curve, "front")
|
||||
sub.prop(curve, "back")
|
||||
|
||||
col.itemL(text="Textures:")
|
||||
# col.itemR(curve, "uv_orco")
|
||||
col.itemR(curve, "auto_texspace")
|
||||
col.label(text="Textures:")
|
||||
# col.prop(curve, "uv_orco")
|
||||
col.prop(curve, "auto_texspace")
|
||||
|
||||
|
||||
class DATA_PT_geometry_curve(DataButtonsPanel):
|
||||
@ -137,19 +137,19 @@ class DATA_PT_geometry_curve(DataButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Modification:")
|
||||
col.itemR(curve, "width")
|
||||
col.itemR(curve, "extrude")
|
||||
col.itemL(text="Taper Object:")
|
||||
col.itemR(curve, "taper_object", text="")
|
||||
col.label(text="Modification:")
|
||||
col.prop(curve, "width")
|
||||
col.prop(curve, "extrude")
|
||||
col.label(text="Taper Object:")
|
||||
col.prop(curve, "taper_object", text="")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Bevel:")
|
||||
col.itemR(curve, "bevel_depth", text="Depth")
|
||||
col.itemR(curve, "bevel_resolution", text="Resolution")
|
||||
col.itemL(text="Bevel Object:")
|
||||
col.itemR(curve, "bevel_object", text="")
|
||||
col.label(text="Bevel:")
|
||||
col.prop(curve, "bevel_depth", text="Depth")
|
||||
col.prop(curve, "bevel_resolution", text="Resolution")
|
||||
col.label(text="Bevel Object:")
|
||||
col.prop(curve, "bevel_object", text="")
|
||||
|
||||
|
||||
class DATA_PT_pathanim(DataButtonsPanelCurve):
|
||||
@ -158,7 +158,7 @@ class DATA_PT_pathanim(DataButtonsPanelCurve):
|
||||
def draw_header(self, context):
|
||||
curve = context.curve
|
||||
|
||||
self.layout.itemR(curve, "use_path", text="")
|
||||
self.layout.prop(curve, "use_path", text="")
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@ -169,21 +169,21 @@ class DATA_PT_pathanim(DataButtonsPanelCurve):
|
||||
layout.active = curve.use_path
|
||||
|
||||
row = layout.row()
|
||||
layout.itemR(curve, "path_length", text="Frames")
|
||||
layout.prop(curve, "path_length", text="Frames")
|
||||
|
||||
if wide_ui:
|
||||
row.itemL()
|
||||
row.label()
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(curve, "use_path_follow")
|
||||
col.itemR(curve, "use_stretch")
|
||||
col.prop(curve, "use_path_follow")
|
||||
col.prop(curve, "use_stretch")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(curve, "use_radius")
|
||||
col.itemR(curve, "use_time_offset", text="Offset Children")
|
||||
col.prop(curve, "use_radius")
|
||||
col.prop(curve, "use_time_offset", text="Offset Children")
|
||||
|
||||
|
||||
class DATA_PT_active_spline(DataButtonsPanelActive):
|
||||
@ -204,57 +204,57 @@ class DATA_PT_active_spline(DataButtonsPanelActive):
|
||||
# These settings are below but its easier to have
|
||||
# poly's set aside since they use so few settings
|
||||
col = split.column()
|
||||
col.itemL(text="Cyclic:")
|
||||
col.itemR(act_spline, "smooth")
|
||||
col.label(text="Cyclic:")
|
||||
col.prop(act_spline, "smooth")
|
||||
col = split.column()
|
||||
col.itemR(act_spline, "cyclic_u", text="U")
|
||||
col.prop(act_spline, "cyclic_u", text="U")
|
||||
|
||||
else:
|
||||
col = split.column()
|
||||
col.itemL(text="Cyclic:")
|
||||
col.label(text="Cyclic:")
|
||||
if act_spline.type == 'NURBS':
|
||||
col.itemL(text="Bezier:")
|
||||
col.itemL(text="Endpoint:")
|
||||
col.itemL(text="Order:")
|
||||
col.label(text="Bezier:")
|
||||
col.label(text="Endpoint:")
|
||||
col.label(text="Order:")
|
||||
|
||||
col.itemL(text="Resolution:")
|
||||
col.label(text="Resolution:")
|
||||
|
||||
col = split.column()
|
||||
col.itemR(act_spline, "cyclic_u", text="U")
|
||||
col.prop(act_spline, "cyclic_u", text="U")
|
||||
|
||||
if act_spline.type == 'NURBS':
|
||||
sub = col.column()
|
||||
# sub.active = (not act_spline.cyclic_u)
|
||||
sub.itemR(act_spline, "bezier_u", text="U")
|
||||
sub.itemR(act_spline, "endpoint_u", text="U")
|
||||
sub.prop(act_spline, "bezier_u", text="U")
|
||||
sub.prop(act_spline, "endpoint_u", text="U")
|
||||
|
||||
sub = col.column()
|
||||
sub.itemR(act_spline, "order_u", text="U")
|
||||
col.itemR(act_spline, "resolution_u", text="U")
|
||||
sub.prop(act_spline, "order_u", text="U")
|
||||
col.prop(act_spline, "resolution_u", text="U")
|
||||
|
||||
if is_surf:
|
||||
col = split.column()
|
||||
col.itemR(act_spline, "cyclic_v", text="V")
|
||||
col.prop(act_spline, "cyclic_v", text="V")
|
||||
|
||||
# its a surface, assume its a nurb.
|
||||
sub = col.column()
|
||||
sub.active = (not act_spline.cyclic_v)
|
||||
sub.itemR(act_spline, "bezier_v", text="V")
|
||||
sub.itemR(act_spline, "endpoint_v", text="V")
|
||||
sub.prop(act_spline, "bezier_v", text="V")
|
||||
sub.prop(act_spline, "endpoint_v", text="V")
|
||||
sub = col.column()
|
||||
sub.itemR(act_spline, "order_v", text="V")
|
||||
sub.itemR(act_spline, "resolution_v", text="V")
|
||||
sub.prop(act_spline, "order_v", text="V")
|
||||
sub.prop(act_spline, "resolution_v", text="V")
|
||||
|
||||
if not is_surf:
|
||||
split = layout.split()
|
||||
col = split.column()
|
||||
col.active = (curve.dimensions == '3D')
|
||||
|
||||
col.itemL(text="Interpolation:")
|
||||
col.itemR(act_spline, "tilt_interpolation", text="Tilt")
|
||||
col.itemR(act_spline, "radius_interpolation", text="Radius")
|
||||
col.label(text="Interpolation:")
|
||||
col.prop(act_spline, "tilt_interpolation", text="Tilt")
|
||||
col.prop(act_spline, "radius_interpolation", text="Radius")
|
||||
|
||||
layout.itemR(act_spline, "smooth")
|
||||
layout.prop(act_spline, "smooth")
|
||||
|
||||
|
||||
class DATA_PT_font(DataButtonsPanel):
|
||||
@ -271,44 +271,44 @@ class DATA_PT_font(DataButtonsPanel):
|
||||
wide_ui = context.region.width > narrowui
|
||||
|
||||
if wide_ui:
|
||||
layout.itemR(text, "font")
|
||||
layout.prop(text, "font")
|
||||
else:
|
||||
layout.itemR(text, "font", text="")
|
||||
layout.prop(text, "font", text="")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(text, "text_size", text="Size")
|
||||
col.prop(text, "text_size", text="Size")
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(text, "shear")
|
||||
col.prop(text, "shear")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Object Font:")
|
||||
col.itemR(text, "family", text="")
|
||||
col.label(text="Object Font:")
|
||||
col.prop(text, "family", text="")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Text on Curve:")
|
||||
col.itemR(text, "text_on_curve", text="")
|
||||
col.label(text="Text on Curve:")
|
||||
col.prop(text, "text_on_curve", text="")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column(align=True)
|
||||
col.itemL(text="Underline:")
|
||||
col.itemR(text, "ul_position", text="Position")
|
||||
col.itemR(text, "ul_height", text="Thickness")
|
||||
col.label(text="Underline:")
|
||||
col.prop(text, "ul_position", text="Position")
|
||||
col.prop(text, "ul_height", text="Thickness")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Character:")
|
||||
col.itemR(char, "bold")
|
||||
col.itemR(char, "italic")
|
||||
col.itemR(char, "underline")
|
||||
# col.itemR(char, "style")
|
||||
# col.itemR(char, "wrap")
|
||||
col.label(text="Character:")
|
||||
col.prop(char, "bold")
|
||||
col.prop(char, "italic")
|
||||
col.prop(char, "underline")
|
||||
# col.prop(char, "style")
|
||||
# col.prop(char, "wrap")
|
||||
|
||||
|
||||
class DATA_PT_paragraph(DataButtonsPanel):
|
||||
@ -323,25 +323,25 @@ class DATA_PT_paragraph(DataButtonsPanel):
|
||||
text = context.curve
|
||||
wide_ui = context.region.width > narrowui
|
||||
|
||||
layout.itemL(text="Align:")
|
||||
layout.label(text="Align:")
|
||||
if wide_ui:
|
||||
layout.itemR(text, "spacemode", expand=True)
|
||||
layout.prop(text, "spacemode", expand=True)
|
||||
else:
|
||||
layout.itemR(text, "spacemode", text="")
|
||||
layout.prop(text, "spacemode", text="")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column(align=True)
|
||||
col.itemL(text="Spacing:")
|
||||
col.itemR(text, "spacing", text="Character")
|
||||
col.itemR(text, "word_spacing", text="Word")
|
||||
col.itemR(text, "line_dist", text="Line")
|
||||
col.label(text="Spacing:")
|
||||
col.prop(text, "spacing", text="Character")
|
||||
col.prop(text, "word_spacing", text="Word")
|
||||
col.prop(text, "line_dist", text="Line")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column(align=True)
|
||||
col.itemL(text="Offset:")
|
||||
col.itemR(text, "offset_x", text="X")
|
||||
col.itemR(text, "offset_y", text="Y")
|
||||
col.label(text="Offset:")
|
||||
col.prop(text, "offset_x", text="X")
|
||||
col.prop(text, "offset_y", text="Y")
|
||||
|
||||
|
||||
class DATA_PT_textboxes(DataButtonsPanel):
|
||||
@ -360,15 +360,15 @@ class DATA_PT_textboxes(DataButtonsPanel):
|
||||
split = layout.box().split()
|
||||
|
||||
col = split.column(align=True)
|
||||
col.itemL(text="Dimensions:")
|
||||
col.itemR(box, "width", text="Width")
|
||||
col.itemR(box, "height", text="Height")
|
||||
col.label(text="Dimensions:")
|
||||
col.prop(box, "width", text="Width")
|
||||
col.prop(box, "height", text="Height")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column(align=True)
|
||||
col.itemL(text="Offset:")
|
||||
col.itemR(box, "x", text="X")
|
||||
col.itemR(box, "y", text="Y")
|
||||
col.label(text="Offset:")
|
||||
col.prop(box, "x", text="X")
|
||||
col.prop(box, "y", text="Y")
|
||||
|
||||
bpy.types.register(DATA_PT_context_curve)
|
||||
bpy.types.register(DATA_PT_shape_curve)
|
||||
|
@ -41,10 +41,10 @@ class DATA_PT_empty(DataButtonsPanel):
|
||||
wide_ui = context.region.width > narrowui
|
||||
|
||||
if wide_ui:
|
||||
layout.itemR(ob, "empty_draw_type", text="Display")
|
||||
layout.prop(ob, "empty_draw_type", text="Display")
|
||||
else:
|
||||
layout.itemR(ob, "empty_draw_type", text="")
|
||||
layout.prop(ob, "empty_draw_type", text="")
|
||||
|
||||
layout.itemR(ob, "empty_draw_size", text="Size")
|
||||
layout.prop(ob, "empty_draw_size", text="Size")
|
||||
|
||||
bpy.types.register(DATA_PT_empty)
|
||||
|
@ -54,10 +54,10 @@ class DATA_PT_context_lamp(DataButtonsPanel):
|
||||
split = layout.split(percentage=0.65)
|
||||
if ob:
|
||||
split.template_ID(ob, "data")
|
||||
split.itemS()
|
||||
split.separator()
|
||||
elif lamp:
|
||||
split.template_ID(space, "pin_id")
|
||||
split.itemS()
|
||||
split.separator()
|
||||
else:
|
||||
if ob:
|
||||
layout.template_ID(ob, "data")
|
||||
@ -75,40 +75,40 @@ class DATA_PT_lamp(DataButtonsPanel):
|
||||
wide_ui = context.region.width > narrowui
|
||||
|
||||
if wide_ui:
|
||||
layout.itemR(lamp, "type", expand=True)
|
||||
layout.prop(lamp, "type", expand=True)
|
||||
else:
|
||||
layout.itemR(lamp, "type", text="")
|
||||
layout.prop(lamp, "type", text="")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
sub = col.column()
|
||||
sub.itemR(lamp, "color", text="")
|
||||
sub.itemR(lamp, "energy")
|
||||
sub.prop(lamp, "color", text="")
|
||||
sub.prop(lamp, "energy")
|
||||
|
||||
if lamp.type in ('POINT', 'SPOT'):
|
||||
sub.itemL(text="Falloff:")
|
||||
sub.itemR(lamp, "falloff_type", text="")
|
||||
sub.itemR(lamp, "distance")
|
||||
sub.label(text="Falloff:")
|
||||
sub.prop(lamp, "falloff_type", text="")
|
||||
sub.prop(lamp, "distance")
|
||||
|
||||
if lamp.falloff_type == 'LINEAR_QUADRATIC_WEIGHTED':
|
||||
col.itemL(text="Attenuation Factors:")
|
||||
col.label(text="Attenuation Factors:")
|
||||
sub = col.column(align=True)
|
||||
sub.itemR(lamp, "linear_attenuation", slider=True, text="Linear")
|
||||
sub.itemR(lamp, "quadratic_attenuation", slider=True, text="Quadratic")
|
||||
sub.prop(lamp, "linear_attenuation", slider=True, text="Linear")
|
||||
sub.prop(lamp, "quadratic_attenuation", slider=True, text="Quadratic")
|
||||
|
||||
col.itemR(lamp, "sphere")
|
||||
col.prop(lamp, "sphere")
|
||||
|
||||
if lamp.type == 'AREA':
|
||||
col.itemR(lamp, "distance")
|
||||
col.itemR(lamp, "gamma")
|
||||
col.prop(lamp, "distance")
|
||||
col.prop(lamp, "gamma")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(lamp, "negative")
|
||||
col.itemR(lamp, "layer", text="This Layer Only")
|
||||
col.itemR(lamp, "specular")
|
||||
col.itemR(lamp, "diffuse")
|
||||
col.prop(lamp, "negative")
|
||||
col.prop(lamp, "layer", text="This Layer Only")
|
||||
col.prop(lamp, "specular")
|
||||
col.prop(lamp, "diffuse")
|
||||
|
||||
|
||||
class DATA_PT_sunsky(DataButtonsPanel):
|
||||
@ -124,59 +124,59 @@ class DATA_PT_sunsky(DataButtonsPanel):
|
||||
lamp = context.lamp.sky
|
||||
wide_ui = context.region.width > narrowui
|
||||
|
||||
layout.itemR(lamp, "sky")
|
||||
layout.prop(lamp, "sky")
|
||||
|
||||
row = layout.row()
|
||||
row.active = lamp.sky or lamp.atmosphere
|
||||
row.itemR(lamp, "atmosphere_turbidity", text="Turbidity")
|
||||
row.prop(lamp, "atmosphere_turbidity", text="Turbidity")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.active = lamp.sky
|
||||
col.itemL(text="Blending:")
|
||||
col.label(text="Blending:")
|
||||
sub = col.column()
|
||||
sub.itemR(lamp, "sky_blend_type", text="")
|
||||
sub.itemR(lamp, "sky_blend", text="Factor")
|
||||
sub.prop(lamp, "sky_blend_type", text="")
|
||||
sub.prop(lamp, "sky_blend", text="Factor")
|
||||
|
||||
col.itemL(text="Color Space:")
|
||||
col.label(text="Color Space:")
|
||||
sub = col.column()
|
||||
sub.row().itemR(lamp, "sky_color_space", expand=True)
|
||||
sub.itemR(lamp, "sky_exposure", text="Exposure")
|
||||
sub.row().prop(lamp, "sky_color_space", expand=True)
|
||||
sub.prop(lamp, "sky_exposure", text="Exposure")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.active = lamp.sky
|
||||
col.itemL(text="Horizon:")
|
||||
col.label(text="Horizon:")
|
||||
sub = col.column()
|
||||
sub.itemR(lamp, "horizon_brightness", text="Brightness")
|
||||
sub.itemR(lamp, "spread", text="Spread")
|
||||
sub.prop(lamp, "horizon_brightness", text="Brightness")
|
||||
sub.prop(lamp, "spread", text="Spread")
|
||||
|
||||
col.itemL(text="Sun:")
|
||||
col.label(text="Sun:")
|
||||
sub = col.column()
|
||||
sub.itemR(lamp, "sun_brightness", text="Brightness")
|
||||
sub.itemR(lamp, "sun_size", text="Size")
|
||||
sub.itemR(lamp, "backscattered_light", slider=True, text="Back Light")
|
||||
sub.prop(lamp, "sun_brightness", text="Brightness")
|
||||
sub.prop(lamp, "sun_size", text="Size")
|
||||
sub.prop(lamp, "backscattered_light", slider=True, text="Back Light")
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
layout.itemR(lamp, "atmosphere")
|
||||
layout.prop(lamp, "atmosphere")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.active = lamp.atmosphere
|
||||
col.itemL(text="Intensity:")
|
||||
col.itemR(lamp, "sun_intensity", text="Sun")
|
||||
col.itemR(lamp, "atmosphere_distance_factor", text="Distance")
|
||||
col.label(text="Intensity:")
|
||||
col.prop(lamp, "sun_intensity", text="Sun")
|
||||
col.prop(lamp, "atmosphere_distance_factor", text="Distance")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.active = lamp.atmosphere
|
||||
col.itemL(text="Scattering:")
|
||||
col.label(text="Scattering:")
|
||||
sub = col.column(align=True)
|
||||
sub.itemR(lamp, "atmosphere_inscattering", slider=True, text="Inscattering")
|
||||
sub.itemR(lamp, "atmosphere_extinction", slider=True, text="Extinction")
|
||||
sub.prop(lamp, "atmosphere_inscattering", slider=True, text="Inscattering")
|
||||
sub.prop(lamp, "atmosphere_extinction", slider=True, text="Extinction")
|
||||
|
||||
|
||||
class DATA_PT_shadow(DataButtonsPanel):
|
||||
@ -193,38 +193,38 @@ class DATA_PT_shadow(DataButtonsPanel):
|
||||
wide_ui = context.region.width > narrowui
|
||||
|
||||
if wide_ui:
|
||||
layout.itemR(lamp, "shadow_method", expand=True)
|
||||
layout.prop(lamp, "shadow_method", expand=True)
|
||||
else:
|
||||
layout.itemR(lamp, "shadow_method", text="")
|
||||
layout.prop(lamp, "shadow_method", text="")
|
||||
|
||||
if lamp.shadow_method != 'NOSHADOW':
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(lamp, "shadow_color", text="")
|
||||
col.prop(lamp, "shadow_color", text="")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(lamp, "shadow_layer", text="This Layer Only")
|
||||
col.itemR(lamp, "only_shadow")
|
||||
col.prop(lamp, "shadow_layer", text="This Layer Only")
|
||||
col.prop(lamp, "only_shadow")
|
||||
|
||||
if lamp.shadow_method == 'RAY_SHADOW':
|
||||
col = layout.column()
|
||||
col.itemL(text="Sampling:")
|
||||
col.label(text="Sampling:")
|
||||
if wide_ui:
|
||||
col.row().itemR(lamp, "shadow_ray_sampling_method", expand=True)
|
||||
col.row().prop(lamp, "shadow_ray_sampling_method", expand=True)
|
||||
else:
|
||||
col.itemR(lamp, "shadow_ray_sampling_method", text="")
|
||||
col.prop(lamp, "shadow_ray_sampling_method", text="")
|
||||
|
||||
if lamp.type in ('POINT', 'SUN', 'SPOT'):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(lamp, "shadow_soft_size", text="Soft Size")
|
||||
col.prop(lamp, "shadow_soft_size", text="Soft Size")
|
||||
|
||||
col.itemR(lamp, "shadow_ray_samples", text="Samples")
|
||||
col.prop(lamp, "shadow_ray_samples", text="Samples")
|
||||
if lamp.shadow_ray_sampling_method == 'ADAPTIVE_QMC':
|
||||
col.itemR(lamp, "shadow_adaptive_threshold", text="Threshold")
|
||||
col.prop(lamp, "shadow_adaptive_threshold", text="Threshold")
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
|
||||
@ -234,22 +234,22 @@ class DATA_PT_shadow(DataButtonsPanel):
|
||||
col = split.column()
|
||||
|
||||
if lamp.shape == 'SQUARE':
|
||||
col.itemR(lamp, "shadow_ray_samples_x", text="Samples")
|
||||
col.prop(lamp, "shadow_ray_samples_x", text="Samples")
|
||||
elif lamp.shape == 'RECTANGLE':
|
||||
col.itemR(lamp, "shadow_ray_samples_x", text="Samples X")
|
||||
col.itemR(lamp, "shadow_ray_samples_y", text="Samples Y")
|
||||
col.prop(lamp, "shadow_ray_samples_x", text="Samples X")
|
||||
col.prop(lamp, "shadow_ray_samples_y", text="Samples Y")
|
||||
|
||||
if lamp.shadow_ray_sampling_method == 'ADAPTIVE_QMC':
|
||||
col.itemR(lamp, "shadow_adaptive_threshold", text="Threshold")
|
||||
col.prop(lamp, "shadow_adaptive_threshold", text="Threshold")
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
|
||||
elif lamp.shadow_ray_sampling_method == 'CONSTANT_JITTERED':
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(lamp, "umbra")
|
||||
col.itemR(lamp, "dither")
|
||||
col.itemR(lamp, "jitter")
|
||||
col.prop(lamp, "umbra")
|
||||
col.prop(lamp, "dither")
|
||||
col.prop(lamp, "jitter")
|
||||
else:
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
@ -257,49 +257,49 @@ class DATA_PT_shadow(DataButtonsPanel):
|
||||
|
||||
elif lamp.shadow_method == 'BUFFER_SHADOW':
|
||||
col = layout.column()
|
||||
col.itemL(text="Buffer Type:")
|
||||
col.label(text="Buffer Type:")
|
||||
if wide_ui:
|
||||
col.row().itemR(lamp, "shadow_buffer_type", expand=True)
|
||||
col.row().prop(lamp, "shadow_buffer_type", expand=True)
|
||||
else:
|
||||
col.row().itemR(lamp, "shadow_buffer_type", text="")
|
||||
col.row().prop(lamp, "shadow_buffer_type", text="")
|
||||
|
||||
if lamp.shadow_buffer_type in ('REGULAR', 'HALFWAY', 'DEEP'):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Filter Type:")
|
||||
col.itemR(lamp, "shadow_filter_type", text="")
|
||||
col.label(text="Filter Type:")
|
||||
col.prop(lamp, "shadow_filter_type", text="")
|
||||
sub = col.column(align=True)
|
||||
sub.itemR(lamp, "shadow_buffer_soft", text="Soft")
|
||||
sub.itemR(lamp, "shadow_buffer_bias", text="Bias")
|
||||
sub.prop(lamp, "shadow_buffer_soft", text="Soft")
|
||||
sub.prop(lamp, "shadow_buffer_bias", text="Bias")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Sample Buffers:")
|
||||
col.itemR(lamp, "shadow_sample_buffers", text="")
|
||||
col.label(text="Sample Buffers:")
|
||||
col.prop(lamp, "shadow_sample_buffers", text="")
|
||||
sub = col.column(align=True)
|
||||
sub.itemR(lamp, "shadow_buffer_size", text="Size")
|
||||
sub.itemR(lamp, "shadow_buffer_samples", text="Samples")
|
||||
sub.prop(lamp, "shadow_buffer_size", text="Size")
|
||||
sub.prop(lamp, "shadow_buffer_samples", text="Samples")
|
||||
if lamp.shadow_buffer_type == 'DEEP':
|
||||
col.itemR(lamp, "compression_threshold")
|
||||
col.prop(lamp, "compression_threshold")
|
||||
|
||||
elif lamp.shadow_buffer_type == 'IRREGULAR':
|
||||
layout.itemR(lamp, "shadow_buffer_bias", text="Bias")
|
||||
layout.prop(lamp, "shadow_buffer_bias", text="Bias")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(lamp, "auto_clip_start", text="Autoclip Start")
|
||||
col.prop(lamp, "auto_clip_start", text="Autoclip Start")
|
||||
sub = col.column()
|
||||
sub.active = not lamp.auto_clip_start
|
||||
sub.itemR(lamp, "shadow_buffer_clip_start", text="Clip Start")
|
||||
sub.prop(lamp, "shadow_buffer_clip_start", text="Clip Start")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(lamp, "auto_clip_end", text="Autoclip End")
|
||||
col.prop(lamp, "auto_clip_end", text="Autoclip End")
|
||||
sub = col.column()
|
||||
sub.active = not lamp.auto_clip_end
|
||||
sub.itemR(lamp, "shadow_buffer_clip_end", text=" Clip End")
|
||||
sub.prop(lamp, "shadow_buffer_clip_end", text=" Clip End")
|
||||
|
||||
|
||||
class DATA_PT_area(DataButtonsPanel):
|
||||
@ -317,14 +317,14 @@ class DATA_PT_area(DataButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.row().itemR(lamp, "shape", expand=True)
|
||||
col.row().prop(lamp, "shape", expand=True)
|
||||
|
||||
sub = col.column(align=True)
|
||||
if (lamp.shape == 'SQUARE'):
|
||||
sub.itemR(lamp, "size")
|
||||
sub.prop(lamp, "size")
|
||||
elif (lamp.shape == 'RECTANGLE'):
|
||||
sub.itemR(lamp, "size", text="Size X")
|
||||
sub.itemR(lamp, "size_y", text="Size Y")
|
||||
sub.prop(lamp, "size", text="Size X")
|
||||
sub.prop(lamp, "size_y", text="Size Y")
|
||||
|
||||
|
||||
class DATA_PT_spot(DataButtonsPanel):
|
||||
@ -344,20 +344,20 @@ class DATA_PT_spot(DataButtonsPanel):
|
||||
|
||||
col = split.column()
|
||||
sub = col.column()
|
||||
sub.itemR(lamp, "spot_size", text="Size")
|
||||
sub.itemR(lamp, "spot_blend", text="Blend", slider=True)
|
||||
col.itemR(lamp, "square")
|
||||
sub.prop(lamp, "spot_size", text="Size")
|
||||
sub.prop(lamp, "spot_blend", text="Blend", slider=True)
|
||||
col.prop(lamp, "square")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
else:
|
||||
col.itemS()
|
||||
col.itemR(lamp, "halo")
|
||||
col.separator()
|
||||
col.prop(lamp, "halo")
|
||||
sub = col.column(align=True)
|
||||
sub.active = lamp.halo
|
||||
sub.itemR(lamp, "halo_intensity", text="Intensity")
|
||||
sub.prop(lamp, "halo_intensity", text="Intensity")
|
||||
if lamp.shadow_method == 'BUFFER_SHADOW':
|
||||
sub.itemR(lamp, "halo_step", text="Step")
|
||||
sub.prop(lamp, "halo_step", text="Step")
|
||||
|
||||
|
||||
class DATA_PT_falloff_curve(DataButtonsPanel):
|
||||
|
@ -47,10 +47,10 @@ class DATA_PT_context_lattice(DataButtonsPanel):
|
||||
split = layout.split(percentage=0.65)
|
||||
if ob:
|
||||
split.template_ID(ob, "data")
|
||||
split.itemS()
|
||||
split.separator()
|
||||
elif lat:
|
||||
split.template_ID(space, "pin_id")
|
||||
split.itemS()
|
||||
split.separator()
|
||||
else:
|
||||
if ob:
|
||||
layout.template_ID(ob, "data")
|
||||
@ -69,26 +69,26 @@ class DATA_PT_lattice(DataButtonsPanel):
|
||||
|
||||
split = layout.split()
|
||||
col = split.column()
|
||||
col.itemR(lat, "points_u")
|
||||
col.prop(lat, "points_u")
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(lat, "interpolation_type_u", text="")
|
||||
col.prop(lat, "interpolation_type_u", text="")
|
||||
|
||||
split = layout.split()
|
||||
col = split.column()
|
||||
col.itemR(lat, "points_v")
|
||||
col.prop(lat, "points_v")
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(lat, "interpolation_type_v", text="")
|
||||
col.prop(lat, "interpolation_type_v", text="")
|
||||
|
||||
split = layout.split()
|
||||
col = split.column()
|
||||
col.itemR(lat, "points_w")
|
||||
col.prop(lat, "points_w")
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(lat, "interpolation_type_w", text="")
|
||||
col.prop(lat, "interpolation_type_w", text="")
|
||||
|
||||
layout.itemR(lat, "outside")
|
||||
layout.prop(lat, "outside")
|
||||
|
||||
bpy.types.register(DATA_PT_context_lattice)
|
||||
bpy.types.register(DATA_PT_lattice)
|
||||
|
@ -47,10 +47,10 @@ class DATA_PT_context_mesh(DataButtonsPanel):
|
||||
split = layout.split(percentage=0.65)
|
||||
if ob:
|
||||
split.template_ID(ob, "data")
|
||||
split.itemS()
|
||||
split.separator()
|
||||
elif mesh:
|
||||
split.template_ID(space, "pin_id")
|
||||
split.itemS()
|
||||
split.separator()
|
||||
else:
|
||||
if ob:
|
||||
layout.template_ID(ob, "data")
|
||||
@ -70,17 +70,17 @@ class DATA_PT_normals(DataButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(mesh, "autosmooth")
|
||||
col.prop(mesh, "autosmooth")
|
||||
sub = col.column()
|
||||
sub.active = mesh.autosmooth
|
||||
sub.itemR(mesh, "autosmooth_angle", text="Angle")
|
||||
sub.prop(mesh, "autosmooth_angle", text="Angle")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
else:
|
||||
col.itemS()
|
||||
col.itemR(mesh, "vertex_normal_flip")
|
||||
col.itemR(mesh, "double_sided")
|
||||
col.separator()
|
||||
col.prop(mesh, "vertex_normal_flip")
|
||||
col.prop(mesh, "double_sided")
|
||||
|
||||
|
||||
class DATA_PT_settings(DataButtonsPanel):
|
||||
@ -91,7 +91,7 @@ class DATA_PT_settings(DataButtonsPanel):
|
||||
|
||||
mesh = context.mesh
|
||||
|
||||
layout.itemR(mesh, "texture_mesh")
|
||||
layout.prop(mesh, "texture_mesh")
|
||||
|
||||
|
||||
class DATA_PT_vertex_groups(DataButtonsPanel):
|
||||
@ -114,29 +114,29 @@ class DATA_PT_vertex_groups(DataButtonsPanel):
|
||||
row.template_list(ob, "vertex_groups", ob, "active_vertex_group_index", rows=rows)
|
||||
|
||||
col = row.column(align=True)
|
||||
col.itemO("object.vertex_group_add", icon='ICON_ZOOMIN', text="")
|
||||
col.itemO("object.vertex_group_remove", icon='ICON_ZOOMOUT', text="")
|
||||
col.operator("object.vertex_group_add", icon='ICON_ZOOMIN', text="")
|
||||
col.operator("object.vertex_group_remove", icon='ICON_ZOOMOUT', text="")
|
||||
|
||||
col.itemO("object.vertex_group_copy", icon='ICON_COPY_ID', text="")
|
||||
col.operator("object.vertex_group_copy", icon='ICON_COPY_ID', text="")
|
||||
if ob.data.users > 1:
|
||||
col.itemO("object.vertex_group_copy_to_linked", icon='ICON_LINK_AREA', text="")
|
||||
col.operator("object.vertex_group_copy_to_linked", icon='ICON_LINK_AREA', text="")
|
||||
|
||||
if group:
|
||||
row = layout.row()
|
||||
row.itemR(group, "name")
|
||||
row.prop(group, "name")
|
||||
|
||||
if ob.mode == 'EDIT' and len(ob.vertex_groups) > 0:
|
||||
row = layout.row()
|
||||
|
||||
sub = row.row(align=True)
|
||||
sub.itemO("object.vertex_group_assign", text="Assign")
|
||||
sub.itemO("object.vertex_group_remove_from", text="Remove")
|
||||
sub.operator("object.vertex_group_assign", text="Assign")
|
||||
sub.operator("object.vertex_group_remove_from", text="Remove")
|
||||
|
||||
sub = row.row(align=True)
|
||||
sub.itemO("object.vertex_group_select", text="Select")
|
||||
sub.itemO("object.vertex_group_deselect", text="Deselect")
|
||||
sub.operator("object.vertex_group_select", text="Select")
|
||||
sub.operator("object.vertex_group_deselect", text="Deselect")
|
||||
|
||||
layout.itemR(context.tool_settings, "vertex_group_weight", text="Weight")
|
||||
layout.prop(context.tool_settings, "vertex_group_weight", text="Weight")
|
||||
|
||||
|
||||
class DATA_PT_shape_keys(DataButtonsPanel):
|
||||
@ -156,7 +156,7 @@ class DATA_PT_shape_keys(DataButtonsPanel):
|
||||
enable_edit = ob.mode != 'EDIT'
|
||||
enable_edit_value = False
|
||||
|
||||
if ob.shape_key_lock == False:
|
||||
if ob.shape_key_lock is False:
|
||||
if enable_edit or (ob.type == 'MESH' and ob.shape_key_edit_mode):
|
||||
enable_edit_value = True
|
||||
|
||||
@ -170,27 +170,27 @@ class DATA_PT_shape_keys(DataButtonsPanel):
|
||||
col = row.column()
|
||||
|
||||
sub = col.column(align=True)
|
||||
sub.itemO("object.shape_key_add", icon='ICON_ZOOMIN', text="")
|
||||
sub.itemO("object.shape_key_remove", icon='ICON_ZOOMOUT', text="")
|
||||
sub.operator("object.shape_key_add", icon='ICON_ZOOMIN', text="")
|
||||
sub.operator("object.shape_key_remove", icon='ICON_ZOOMOUT', text="")
|
||||
|
||||
if kb:
|
||||
col.itemS()
|
||||
col.separator()
|
||||
|
||||
sub = col.column(align=True)
|
||||
sub.item_enumO("object.shape_key_move", "type", 'UP', icon='ICON_TRIA_UP', text="")
|
||||
sub.item_enumO("object.shape_key_move", "type", 'DOWN', icon='ICON_TRIA_DOWN', text="")
|
||||
sub.operator("object.shape_key_move", icon='ICON_TRIA_UP', text="").type = 'UP'
|
||||
sub.operator("object.shape_key_move", icon='ICON_TRIA_DOWN', text="").type = 'DOWN'
|
||||
|
||||
split = layout.split(percentage=0.4)
|
||||
row = split.row()
|
||||
row.enabled = enable_edit
|
||||
if wide_ui:
|
||||
row.itemR(key, "relative")
|
||||
row.prop(key, "relative")
|
||||
|
||||
row = split.row()
|
||||
row.alignment = 'RIGHT'
|
||||
|
||||
if not wide_ui:
|
||||
layout.itemR(key, "relative")
|
||||
layout.prop(key, "relative")
|
||||
row = layout.row()
|
||||
|
||||
|
||||
@ -198,48 +198,48 @@ class DATA_PT_shape_keys(DataButtonsPanel):
|
||||
subsub = sub.row(align=True)
|
||||
subsub.active = enable_edit_value
|
||||
if ob.shape_key_lock:
|
||||
subsub.itemR(ob, "shape_key_lock", icon='ICON_PINNED', text="")
|
||||
subsub.prop(ob, "shape_key_lock", icon='ICON_PINNED', text="")
|
||||
else:
|
||||
subsub.itemR(ob, "shape_key_lock", icon='ICON_UNPINNED', text="")
|
||||
subsub.prop(ob, "shape_key_lock", icon='ICON_UNPINNED', text="")
|
||||
if kb.mute:
|
||||
subsub.itemR(kb, "mute", icon='ICON_MUTE_IPO_ON', text="")
|
||||
subsub.prop(kb, "mute", icon='ICON_MUTE_IPO_ON', text="")
|
||||
else:
|
||||
subsub.itemR(kb, "mute", icon='ICON_MUTE_IPO_OFF', text="")
|
||||
sub.itemR(ob, "shape_key_edit_mode", text="")
|
||||
subsub.prop(kb, "mute", icon='ICON_MUTE_IPO_OFF', text="")
|
||||
sub.prop(ob, "shape_key_edit_mode", text="")
|
||||
|
||||
sub = row.row(align=True)
|
||||
sub.itemO("object.shape_key_mirror", icon='ICON_ARROW_LEFTRIGHT', text="")
|
||||
sub.itemO("object.shape_key_clear", icon='ICON_X', text="")
|
||||
sub.operator("object.shape_key_mirror", icon='ICON_ARROW_LEFTRIGHT', text="")
|
||||
sub.operator("object.shape_key_clear", icon='ICON_X', text="")
|
||||
|
||||
|
||||
row = layout.row()
|
||||
row.itemR(kb, "name")
|
||||
row.prop(kb, "name")
|
||||
|
||||
if key.relative:
|
||||
if ob.active_shape_key_index != 0:
|
||||
row = layout.row()
|
||||
row.active = enable_edit_value
|
||||
row.itemR(kb, "value")
|
||||
row.prop(kb, "value")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column(align=True)
|
||||
col.active = enable_edit_value
|
||||
col.itemL(text="Range:")
|
||||
col.itemR(kb, "slider_min", text="Min")
|
||||
col.itemR(kb, "slider_max", text="Max")
|
||||
col.label(text="Range:")
|
||||
col.prop(kb, "slider_min", text="Min")
|
||||
col.prop(kb, "slider_max", text="Max")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column(align=True)
|
||||
col.active = enable_edit_value
|
||||
col.itemL(text="Blend:")
|
||||
col.item_pointerR(kb, "vertex_group", ob, "vertex_groups", text="")
|
||||
col.item_pointerR(kb, "relative_key", key, "keys", text="")
|
||||
col.label(text="Blend:")
|
||||
col.prop_object(kb, "vertex_group", ob, "vertex_groups", text="")
|
||||
col.prop_object(kb, "relative_key", key, "keys", text="")
|
||||
|
||||
else:
|
||||
row = layout.row()
|
||||
row.active = enable_edit_value
|
||||
row.itemR(key, "slurph")
|
||||
row.prop(key, "slurph")
|
||||
|
||||
|
||||
class DATA_PT_uv_texture(DataButtonsPanel):
|
||||
@ -256,12 +256,12 @@ class DATA_PT_uv_texture(DataButtonsPanel):
|
||||
col.template_list(me, "uv_textures", me, "active_uv_texture_index", rows=2)
|
||||
|
||||
col = row.column(align=True)
|
||||
col.itemO("mesh.uv_texture_add", icon='ICON_ZOOMIN', text="")
|
||||
col.itemO("mesh.uv_texture_remove", icon='ICON_ZOOMOUT', text="")
|
||||
col.operator("mesh.uv_texture_add", icon='ICON_ZOOMIN', text="")
|
||||
col.operator("mesh.uv_texture_remove", icon='ICON_ZOOMOUT', text="")
|
||||
|
||||
lay = me.active_uv_texture
|
||||
if lay:
|
||||
layout.itemR(lay, "name")
|
||||
layout.prop(lay, "name")
|
||||
|
||||
|
||||
class DATA_PT_vertex_colors(DataButtonsPanel):
|
||||
@ -278,12 +278,12 @@ class DATA_PT_vertex_colors(DataButtonsPanel):
|
||||
col.template_list(me, "vertex_colors", me, "active_vertex_color_index", rows=2)
|
||||
|
||||
col = row.column(align=True)
|
||||
col.itemO("mesh.vertex_color_add", icon='ICON_ZOOMIN', text="")
|
||||
col.itemO("mesh.vertex_color_remove", icon='ICON_ZOOMOUT', text="")
|
||||
col.operator("mesh.vertex_color_add", icon='ICON_ZOOMIN', text="")
|
||||
col.operator("mesh.vertex_color_remove", icon='ICON_ZOOMOUT', text="")
|
||||
|
||||
lay = me.active_vertex_color
|
||||
if lay:
|
||||
layout.itemR(lay, "name")
|
||||
layout.prop(lay, "name")
|
||||
|
||||
bpy.types.register(DATA_PT_context_mesh)
|
||||
bpy.types.register(DATA_PT_normals)
|
||||
|
@ -47,10 +47,10 @@ class DATA_PT_context_metaball(DataButtonsPanel):
|
||||
split = layout.split(percentage=0.65)
|
||||
if ob:
|
||||
split.template_ID(ob, "data")
|
||||
split.itemS()
|
||||
split.separator()
|
||||
elif mball:
|
||||
split.template_ID(space, "pin_id")
|
||||
split.itemS()
|
||||
split.separator()
|
||||
else:
|
||||
if ob:
|
||||
layout.template_ID(ob, "data")
|
||||
@ -70,21 +70,21 @@ class DATA_PT_metaball(DataButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Resolution:")
|
||||
col.label(text="Resolution:")
|
||||
sub = col.column(align=True)
|
||||
sub.itemR(mball, "wire_size", text="View")
|
||||
sub.itemR(mball, "render_size", text="Render")
|
||||
sub.prop(mball, "wire_size", text="View")
|
||||
sub.prop(mball, "render_size", text="Render")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Settings:")
|
||||
col.itemR(mball, "threshold", text="Threshold")
|
||||
col.label(text="Settings:")
|
||||
col.prop(mball, "threshold", text="Threshold")
|
||||
|
||||
layout.itemL(text="Update:")
|
||||
layout.label(text="Update:")
|
||||
if wide_ui:
|
||||
layout.itemR(mball, "flag", expand=True)
|
||||
layout.prop(mball, "flag", expand=True)
|
||||
else:
|
||||
layout.itemR(mball, "flag", text="")
|
||||
layout.prop(mball, "flag", text="")
|
||||
|
||||
|
||||
class DATA_PT_metaball_element(DataButtonsPanel):
|
||||
@ -100,35 +100,35 @@ class DATA_PT_metaball_element(DataButtonsPanel):
|
||||
wide_ui = context.region.width > narrowui
|
||||
|
||||
if wide_ui:
|
||||
layout.itemR(metaelem, "type")
|
||||
layout.prop(metaelem, "type")
|
||||
else:
|
||||
layout.itemR(metaelem, "type", text="")
|
||||
layout.prop(metaelem, "type", text="")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column(align=True)
|
||||
col.itemL(text="Settings:")
|
||||
col.itemR(metaelem, "stiffness", text="Stiffness")
|
||||
col.itemR(metaelem, "negative", text="Negative")
|
||||
col.itemR(metaelem, "hide", text="Hide")
|
||||
col.label(text="Settings:")
|
||||
col.prop(metaelem, "stiffness", text="Stiffness")
|
||||
col.prop(metaelem, "negative", text="Negative")
|
||||
col.prop(metaelem, "hide", text="Hide")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column(align=True)
|
||||
|
||||
if metaelem.type in ('CUBE', 'ELLIPSOID'):
|
||||
col.itemL(text="Size:")
|
||||
col.itemR(metaelem, "size_x", text="X")
|
||||
col.itemR(metaelem, "size_y", text="Y")
|
||||
col.itemR(metaelem, "size_z", text="Z")
|
||||
col.label(text="Size:")
|
||||
col.prop(metaelem, "size_x", text="X")
|
||||
col.prop(metaelem, "size_y", text="Y")
|
||||
col.prop(metaelem, "size_z", text="Z")
|
||||
|
||||
elif metaelem.type == 'TUBE':
|
||||
col.itemL(text="Size:")
|
||||
col.itemR(metaelem, "size_x", text="X")
|
||||
col.label(text="Size:")
|
||||
col.prop(metaelem, "size_x", text="X")
|
||||
|
||||
elif metaelem.type == 'PLANE':
|
||||
col.itemL(text="Size:")
|
||||
col.itemR(metaelem, "size_x", text="X")
|
||||
col.itemR(metaelem, "size_y", text="Y")
|
||||
col.label(text="Size:")
|
||||
col.prop(metaelem, "size_x", text="X")
|
||||
col.prop(metaelem, "size_y", text="Y")
|
||||
|
||||
bpy.types.register(DATA_PT_context_metaball)
|
||||
bpy.types.register(DATA_PT_metaball)
|
||||
|
@ -38,9 +38,9 @@ class DATA_PT_modifiers(DataButtonsPanel):
|
||||
wide_ui = context.region.width > narrowui
|
||||
|
||||
row = layout.row()
|
||||
row.item_menu_enumO("object.modifier_add", "type")
|
||||
row.operator_menu_enum("object.modifier_add", "type")
|
||||
if wide_ui:
|
||||
row.itemL()
|
||||
row.label()
|
||||
|
||||
for md in ob.modifiers:
|
||||
box = layout.template_modifier(md)
|
||||
@ -56,447 +56,449 @@ class DATA_PT_modifiers(DataButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Object:")
|
||||
col.itemR(md, "object", text="")
|
||||
col.label(text="Object:")
|
||||
col.prop(md, "object", text="")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Vertex Group::")
|
||||
col.item_pointerR(md, "vertex_group", ob, "vertex_groups", text="")
|
||||
col.label(text="Vertex Group::")
|
||||
col.prop_object(md, "vertex_group", ob, "vertex_groups", text="")
|
||||
sub = col.column()
|
||||
sub.active = md.vertex_group
|
||||
sub.itemR(md, "invert")
|
||||
sub.active = bool(md.vertex_group)
|
||||
sub.prop(md, "invert")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Bind To:")
|
||||
col.itemR(md, "use_vertex_groups", text="Vertex Groups")
|
||||
col.itemR(md, "use_bone_envelopes", text="Bone Envelopes")
|
||||
col.label(text="Bind To:")
|
||||
col.prop(md, "use_vertex_groups", text="Vertex Groups")
|
||||
col.prop(md, "use_bone_envelopes", text="Bone Envelopes")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Deformation:")
|
||||
col.itemR(md, "quaternion")
|
||||
col.itemR(md, "multi_modifier")
|
||||
col.label(text="Deformation:")
|
||||
col.prop(md, "quaternion")
|
||||
col.prop(md, "multi_modifier")
|
||||
|
||||
def ARRAY(self, layout, ob, md, wide_ui):
|
||||
if wide_ui:
|
||||
layout.itemR(md, "fit_type")
|
||||
layout.prop(md, "fit_type")
|
||||
else:
|
||||
layout.itemR(md, "fit_type", text="")
|
||||
layout.prop(md, "fit_type", text="")
|
||||
|
||||
|
||||
if md.fit_type == 'FIXED_COUNT':
|
||||
layout.itemR(md, "count")
|
||||
layout.prop(md, "count")
|
||||
elif md.fit_type == 'FIT_LENGTH':
|
||||
layout.itemR(md, "length")
|
||||
layout.prop(md, "length")
|
||||
elif md.fit_type == 'FIT_CURVE':
|
||||
layout.itemR(md, "curve")
|
||||
layout.prop(md, "curve")
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(md, "constant_offset")
|
||||
col.prop(md, "constant_offset")
|
||||
sub = col.column()
|
||||
sub.active = md.constant_offset
|
||||
sub.itemR(md, "constant_offset_displacement", text="")
|
||||
sub.prop(md, "constant_offset_displacement", text="")
|
||||
|
||||
col.itemS()
|
||||
col.separator()
|
||||
|
||||
col.itemR(md, "merge_adjacent_vertices", text="Merge")
|
||||
col.prop(md, "merge_adjacent_vertices", text="Merge")
|
||||
sub = col.column()
|
||||
sub.active = md.merge_adjacent_vertices
|
||||
sub.itemR(md, "merge_end_vertices", text="First Last")
|
||||
sub.itemR(md, "merge_distance", text="Distance")
|
||||
sub.prop(md, "merge_end_vertices", text="First Last")
|
||||
sub.prop(md, "merge_distance", text="Distance")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(md, "relative_offset")
|
||||
col.prop(md, "relative_offset")
|
||||
sub = col.column()
|
||||
sub.active = md.relative_offset
|
||||
sub.itemR(md, "relative_offset_displacement", text="")
|
||||
sub.prop(md, "relative_offset_displacement", text="")
|
||||
|
||||
col.itemS()
|
||||
col.separator()
|
||||
|
||||
col.itemR(md, "add_offset_object")
|
||||
col.prop(md, "add_offset_object")
|
||||
sub = col.column()
|
||||
sub.active = md.add_offset_object
|
||||
sub.itemR(md, "offset_object", text="")
|
||||
sub.prop(md, "offset_object", text="")
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
col = layout.column()
|
||||
col.itemR(md, "start_cap")
|
||||
col.itemR(md, "end_cap")
|
||||
col.prop(md, "start_cap")
|
||||
col.prop(md, "end_cap")
|
||||
|
||||
def BEVEL(self, layout, ob, md, wide_ui):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(md, "width")
|
||||
col.prop(md, "width")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(md, "only_vertices")
|
||||
col.prop(md, "only_vertices")
|
||||
|
||||
layout.itemL(text="Limit Method:")
|
||||
layout.row().itemR(md, "limit_method", expand=True)
|
||||
layout.label(text="Limit Method:")
|
||||
layout.row().prop(md, "limit_method", expand=True)
|
||||
if md.limit_method == 'ANGLE':
|
||||
layout.itemR(md, "angle")
|
||||
layout.prop(md, "angle")
|
||||
elif md.limit_method == 'WEIGHT':
|
||||
layout.row().itemR(md, "edge_weight_method", expand=True)
|
||||
layout.row().prop(md, "edge_weight_method", expand=True)
|
||||
|
||||
def BOOLEAN(self, layout, ob, md, wide_ui):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Operation:")
|
||||
col.itemR(md, "operation", text="")
|
||||
col.label(text="Operation:")
|
||||
col.prop(md, "operation", text="")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Object:")
|
||||
col.itemR(md, "object", text="")
|
||||
col.label(text="Object:")
|
||||
col.prop(md, "object", text="")
|
||||
|
||||
def BUILD(self, layout, ob, md, wide_ui):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(md, "start")
|
||||
col.itemR(md, "length")
|
||||
col.prop(md, "start")
|
||||
col.prop(md, "length")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(md, "randomize")
|
||||
col.prop(md, "randomize")
|
||||
sub = col.column()
|
||||
sub.active = md.randomize
|
||||
sub.itemR(md, "seed")
|
||||
sub.prop(md, "seed")
|
||||
|
||||
def CAST(self, layout, ob, md, wide_ui):
|
||||
split = layout.split(percentage=0.25)
|
||||
|
||||
if wide_ui:
|
||||
split.itemL(text="Cast Type:")
|
||||
split.itemR(md, "cast_type", text="")
|
||||
split.label(text="Cast Type:")
|
||||
split.prop(md, "cast_type", text="")
|
||||
else:
|
||||
layout.itemR(md, "cast_type", text="")
|
||||
layout.prop(md, "cast_type", text="")
|
||||
|
||||
split = layout.split(percentage=0.25)
|
||||
|
||||
col = split.column()
|
||||
col.itemR(md, "x")
|
||||
col.itemR(md, "y")
|
||||
col.itemR(md, "z")
|
||||
col.prop(md, "x")
|
||||
col.prop(md, "y")
|
||||
col.prop(md, "z")
|
||||
|
||||
col = split.column()
|
||||
col.itemR(md, "factor")
|
||||
col.itemR(md, "radius")
|
||||
col.itemR(md, "size")
|
||||
col.itemR(md, "from_radius")
|
||||
col.prop(md, "factor")
|
||||
col.prop(md, "radius")
|
||||
col.prop(md, "size")
|
||||
col.prop(md, "from_radius")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Vertex Group:")
|
||||
col.item_pointerR(md, "vertex_group", ob, "vertex_groups", text="")
|
||||
col.label(text="Vertex Group:")
|
||||
col.prop_object(md, "vertex_group", ob, "vertex_groups", text="")
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Control Object:")
|
||||
col.itemR(md, "object", text="")
|
||||
col.label(text="Control Object:")
|
||||
col.prop(md, "object", text="")
|
||||
if md.object:
|
||||
col.itemR(md, "use_transform")
|
||||
col.prop(md, "use_transform")
|
||||
|
||||
def CLOTH(self, layout, ob, md, wide_ui):
|
||||
layout.itemL(text="See Cloth panel.")
|
||||
layout.label(text="See Cloth panel.")
|
||||
|
||||
def COLLISION(self, layout, ob, md, wide_ui):
|
||||
layout.itemL(text="See Collision panel.")
|
||||
layout.label(text="See Collision panel.")
|
||||
|
||||
def CURVE(self, layout, ob, md, wide_ui):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Object:")
|
||||
col.itemR(md, "object", text="")
|
||||
col.label(text="Object:")
|
||||
col.prop(md, "object", text="")
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Vertex Group:")
|
||||
col.item_pointerR(md, "vertex_group", ob, "vertex_groups", text="")
|
||||
layout.itemL(text="Deformation Axis:")
|
||||
layout.row().itemR(md, "deform_axis", expand=True)
|
||||
col.label(text="Vertex Group:")
|
||||
col.prop_object(md, "vertex_group", ob, "vertex_groups", text="")
|
||||
layout.label(text="Deformation Axis:")
|
||||
layout.row().prop(md, "deform_axis", expand=True)
|
||||
|
||||
def DECIMATE(self, layout, ob, md, wide_ui):
|
||||
layout.itemR(md, "ratio")
|
||||
layout.itemR(md, "face_count")
|
||||
layout.prop(md, "ratio")
|
||||
layout.prop(md, "face_count")
|
||||
|
||||
def DISPLACE(self, layout, ob, md, wide_ui):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Texture:")
|
||||
col.itemR(md, "texture", text="")
|
||||
col.itemL(text="Vertex Group:")
|
||||
col.item_pointerR(md, "vertex_group", ob, "vertex_groups", text="")
|
||||
col.label(text="Texture:")
|
||||
col.prop(md, "texture", text="")
|
||||
col.label(text="Vertex Group:")
|
||||
col.prop_object(md, "vertex_group", ob, "vertex_groups", text="")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Direction:")
|
||||
col.itemR(md, "direction", text="")
|
||||
col.itemL(text="Texture Coordinates:")
|
||||
col.itemR(md, "texture_coordinates", text="")
|
||||
col.label(text="Direction:")
|
||||
col.prop(md, "direction", text="")
|
||||
col.label(text="Texture Coordinates:")
|
||||
col.prop(md, "texture_coordinates", text="")
|
||||
if md.texture_coordinates == 'OBJECT':
|
||||
layout.itemR(md, "texture_coordinate_object", text="Object")
|
||||
layout.prop(md, "texture_coordinate_object", text="Object")
|
||||
elif md.texture_coordinates == 'UV' and ob.type == 'MESH':
|
||||
layout.item_pointerR(md, "uv_layer", ob.data, "uv_textures")
|
||||
layout.prop_object(md, "uv_layer", ob.data, "uv_textures")
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(md, "midlevel")
|
||||
col.prop(md, "midlevel")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(md, "strength")
|
||||
col.prop(md, "strength")
|
||||
|
||||
def EDGE_SPLIT(self, layout, ob, md, wide_ui):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(md, "use_edge_angle", text="Edge Angle")
|
||||
col.prop(md, "use_edge_angle", text="Edge Angle")
|
||||
sub = col.column()
|
||||
sub.active = md.use_edge_angle
|
||||
sub.itemR(md, "split_angle")
|
||||
sub.prop(md, "split_angle")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(md, "use_sharp", text="Sharp Edges")
|
||||
col.prop(md, "use_sharp", text="Sharp Edges")
|
||||
|
||||
def EXPLODE(self, layout, ob, md, wide_ui):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Vertex group:")
|
||||
col.item_pointerR(md, "vertex_group", ob, "vertex_groups", text="")
|
||||
col.label(text="Vertex group:")
|
||||
col.prop_object(md, "vertex_group", ob, "vertex_groups", text="")
|
||||
sub = col.column()
|
||||
sub.active = md.vertex_group
|
||||
sub.itemR(md, "protect")
|
||||
sub.active = bool(md.vertex_group)
|
||||
sub.prop(md, "protect")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(md, "split_edges")
|
||||
col.itemR(md, "unborn")
|
||||
col.itemR(md, "alive")
|
||||
col.itemR(md, "dead")
|
||||
col.prop(md, "split_edges")
|
||||
col.prop(md, "unborn")
|
||||
col.prop(md, "alive")
|
||||
col.prop(md, "dead")
|
||||
|
||||
layout.itemO("object.explode_refresh", text="Refresh")
|
||||
layout.operator("object.explode_refresh", text="Refresh")
|
||||
|
||||
def FLUID_SIMULATION(self, layout, ob, md, wide_ui):
|
||||
layout.itemL(text="See Fluid panel.")
|
||||
layout.label(text="See Fluid panel.")
|
||||
|
||||
def HOOK(self, layout, ob, md, wide_ui):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Object:")
|
||||
col.itemR(md, "object", text="")
|
||||
col.label(text="Object:")
|
||||
col.prop(md, "object", text="")
|
||||
if md.object and md.object.type == 'ARMATURE':
|
||||
col.itemL(text="Bone:")
|
||||
col.item_pointerR(md, "subtarget", md.object.data, "bones", text="")
|
||||
col.label(text="Bone:")
|
||||
col.prop_object(md, "subtarget", md.object.data, "bones", text="")
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Vertex Group:")
|
||||
col.item_pointerR(md, "vertex_group", ob, "vertex_groups", text="")
|
||||
col.label(text="Vertex Group:")
|
||||
col.prop_object(md, "vertex_group", ob, "vertex_groups", text="")
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(md, "falloff")
|
||||
col.itemR(md, "force", slider=True)
|
||||
col.prop(md, "falloff")
|
||||
col.prop(md, "force", slider=True)
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
else:
|
||||
col.itemS()
|
||||
col.itemO("object.hook_reset", text="Reset")
|
||||
col.itemO("object.hook_recenter", text="Recenter")
|
||||
col.separator()
|
||||
col.operator("object.hook_reset", text="Reset")
|
||||
col.operator("object.hook_recenter", text="Recenter")
|
||||
|
||||
if ob.mode == 'EDIT':
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
row = layout.row()
|
||||
row.itemO("object.hook_select", text="Select")
|
||||
row.itemO("object.hook_assign", text="Assign")
|
||||
row.operator("object.hook_select", text="Select")
|
||||
row.operator("object.hook_assign", text="Assign")
|
||||
|
||||
def LATTICE(self, layout, ob, md, wide_ui):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Object:")
|
||||
col.itemR(md, "object", text="")
|
||||
col.label(text="Object:")
|
||||
col.prop(md, "object", text="")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Vertex Group:")
|
||||
col.item_pointerR(md, "vertex_group", ob, "vertex_groups", text="")
|
||||
col.label(text="Vertex Group:")
|
||||
col.prop_object(md, "vertex_group", ob, "vertex_groups", text="")
|
||||
|
||||
def MASK(self, layout, ob, md, wide_ui):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Mode:")
|
||||
col.itemR(md, "mode", text="")
|
||||
col.label(text="Mode:")
|
||||
col.prop(md, "mode", text="")
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Vertex Group:")
|
||||
col.label(text="Vertex Group:")
|
||||
if md.mode == 'ARMATURE':
|
||||
col.itemR(md, "armature", text="")
|
||||
col.prop(md, "armature", text="")
|
||||
elif md.mode == 'VERTEX_GROUP':
|
||||
col.item_pointerR(md, "vertex_group", ob, "vertex_groups", text="")
|
||||
col.prop_object(md, "vertex_group", ob, "vertex_groups", text="")
|
||||
|
||||
sub = col.column()
|
||||
sub.active = md.vertex_group
|
||||
sub.itemR(md, "invert")
|
||||
sub.active = bool(md.vertex_group)
|
||||
sub.prop(md, "invert")
|
||||
|
||||
def MESH_DEFORM(self, layout, ob, md, wide_ui):
|
||||
split = layout.split()
|
||||
col = split.column()
|
||||
col.itemL(text="Object:")
|
||||
col.itemR(md, "object", text="")
|
||||
if md.object and md.object.type == 'ARMATURE':
|
||||
col.itemL(text="Bone:")
|
||||
col.item_pointerR(md, "subtarget", md.object.data, "bones", text="")
|
||||
sub = col.column()
|
||||
sub.label(text="Object:")
|
||||
sub.prop(md, "object", text="")
|
||||
sub.prop(md, "mode", text="")
|
||||
sub.active = not md.is_bound
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Vertex Group:")
|
||||
col.item_pointerR(md, "vertex_group", ob, "vertex_groups", text="")
|
||||
col.label(text="Vertex Group:")
|
||||
col.prop_object(md, "vertex_group", ob, "vertex_groups", text="")
|
||||
|
||||
sub = col.column()
|
||||
sub.active = md.vertex_group
|
||||
sub.itemR(md, "invert")
|
||||
sub.active = bool(md.vertex_group)
|
||||
sub.prop(md, "invert")
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
if md.is_bound:
|
||||
layout.itemO("object.meshdeform_bind", text="Unbind")
|
||||
layout.operator("object.meshdeform_bind", text="Unbind")
|
||||
else:
|
||||
layout.itemO("object.meshdeform_bind", text="Bind")
|
||||
split = layout.split()
|
||||
layout.operator("object.meshdeform_bind", text="Bind")
|
||||
|
||||
col = split.column()
|
||||
col.itemR(md, "precision")
|
||||
if md.mode == 'VOLUME':
|
||||
split = layout.split()
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(md, "dynamic")
|
||||
col.prop(md, "precision")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.prop(md, "dynamic")
|
||||
|
||||
def MIRROR(self, layout, ob, md, wide_ui):
|
||||
layout.itemR(md, "merge_limit")
|
||||
layout.prop(md, "merge_limit")
|
||||
if wide_ui:
|
||||
split = layout.split(percentage=0.25)
|
||||
else:
|
||||
split = layout.split(percentage=0.4)
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Axis:")
|
||||
col.itemR(md, "x")
|
||||
col.itemR(md, "y")
|
||||
col.itemR(md, "z")
|
||||
col.label(text="Axis:")
|
||||
col.prop(md, "x")
|
||||
col.prop(md, "y")
|
||||
col.prop(md, "z")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
else:
|
||||
subsplit = layout.split()
|
||||
col = subsplit.column()
|
||||
col.itemL(text="Options:")
|
||||
col.itemR(md, "clip", text="Clipping")
|
||||
col.itemR(md, "mirror_vertex_groups", text="Vertex Groups")
|
||||
col.label(text="Options:")
|
||||
col.prop(md, "clip", text="Clipping")
|
||||
col.prop(md, "mirror_vertex_groups", text="Vertex Groups")
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Textures:")
|
||||
col.itemR(md, "mirror_u", text="U")
|
||||
col.itemR(md, "mirror_v", text="V")
|
||||
col.label(text="Textures:")
|
||||
col.prop(md, "mirror_u", text="U")
|
||||
col.prop(md, "mirror_v", text="V")
|
||||
|
||||
col = layout.column()
|
||||
col.itemL(text="Mirror Object:")
|
||||
col.itemR(md, "mirror_object", text="")
|
||||
col.label(text="Mirror Object:")
|
||||
col.prop(md, "mirror_object", text="")
|
||||
|
||||
def MULTIRES(self, layout, ob, md, wide_ui):
|
||||
if wide_ui:
|
||||
layout.row().itemR(md, "subdivision_type", expand=True)
|
||||
layout.row().prop(md, "subdivision_type", expand=True)
|
||||
else:
|
||||
layout.row().itemR(md, "subdivision_type", text="")
|
||||
layout.itemR(md, "level")
|
||||
layout.row().prop(md, "subdivision_type", text="")
|
||||
layout.prop(md, "level")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemO("object.multires_subdivide", text="Subdivide")
|
||||
col.operator("object.multires_subdivide", text="Subdivide")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemO("object.multires_higher_levels_delete", text="Delete Higher")
|
||||
col.operator("object.multires_higher_levels_delete", text="Delete Higher")
|
||||
|
||||
def PARTICLE_INSTANCE(self, layout, ob, md, wide_ui):
|
||||
layout.itemR(md, "object")
|
||||
layout.itemR(md, "particle_system_number", text="Particle System")
|
||||
layout.prop(md, "object")
|
||||
layout.prop(md, "particle_system_number", text="Particle System")
|
||||
|
||||
split = layout.split()
|
||||
col = split.column()
|
||||
col.itemL(text="Create From:")
|
||||
col.itemR(md, "normal")
|
||||
col.itemR(md, "children")
|
||||
col.itemR(md, "size")
|
||||
col.label(text="Create From:")
|
||||
col.prop(md, "normal")
|
||||
col.prop(md, "children")
|
||||
col.prop(md, "size")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Show Particles When:")
|
||||
col.itemR(md, "alive")
|
||||
col.itemR(md, "unborn")
|
||||
col.itemR(md, "dead")
|
||||
col.label(text="Show Particles When:")
|
||||
col.prop(md, "alive")
|
||||
col.prop(md, "unborn")
|
||||
col.prop(md, "dead")
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
layout.itemR(md, "path", text="Create Along Paths")
|
||||
layout.prop(md, "path", text="Create Along Paths")
|
||||
|
||||
split = layout.split()
|
||||
split.active = md.path
|
||||
col = split.column()
|
||||
col.row().itemR(md, "axis", expand=True)
|
||||
col.itemR(md, "keep_shape")
|
||||
col.row().prop(md, "axis", expand=True)
|
||||
col.prop(md, "keep_shape")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(md, "position", slider=True)
|
||||
col.itemR(md, "random_position", text="Random", slider=True)
|
||||
col.prop(md, "position", slider=True)
|
||||
col.prop(md, "random_position", text="Random", slider=True)
|
||||
|
||||
def PARTICLE_SYSTEM(self, layout, ob, md, wide_ui):
|
||||
layout.itemL(text="See Particle panel.")
|
||||
layout.label(text="See Particle panel.")
|
||||
|
||||
def SHRINKWRAP(self, layout, ob, md, wide_ui):
|
||||
split = layout.split()
|
||||
col = split.column()
|
||||
col.itemL(text="Target:")
|
||||
col.itemR(md, "target", text="")
|
||||
col.label(text="Target:")
|
||||
col.prop(md, "target", text="")
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Vertex Group:")
|
||||
col.item_pointerR(md, "vertex_group", ob, "vertex_groups", text="")
|
||||
col.label(text="Vertex Group:")
|
||||
col.prop_object(md, "vertex_group", ob, "vertex_groups", text="")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(md, "offset")
|
||||
col.itemR(md, "subsurf_levels")
|
||||
col.prop(md, "offset")
|
||||
col.prop(md, "subsurf_levels")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Mode:")
|
||||
col.itemR(md, "mode", text="")
|
||||
col.label(text="Mode:")
|
||||
col.prop(md, "mode", text="")
|
||||
|
||||
if wide_ui:
|
||||
split = layout.split(percentage=0.25)
|
||||
@ -505,186 +507,186 @@ class DATA_PT_modifiers(DataButtonsPanel):
|
||||
col = split.column()
|
||||
|
||||
if md.mode == 'PROJECT':
|
||||
col.itemL(text="Axis:")
|
||||
col.itemR(md, "x")
|
||||
col.itemR(md, "y")
|
||||
col.itemR(md, "z")
|
||||
col.label(text="Axis:")
|
||||
col.prop(md, "x")
|
||||
col.prop(md, "y")
|
||||
col.prop(md, "z")
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Direction:")
|
||||
col.itemR(md, "negative")
|
||||
col.itemR(md, "positive")
|
||||
col.label(text="Direction:")
|
||||
col.prop(md, "negative")
|
||||
col.prop(md, "positive")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
else:
|
||||
subsplit = layout.split()
|
||||
col = subsplit.column()
|
||||
col.itemL(text="Cull Faces:")
|
||||
col.itemR(md, "cull_front_faces", text="Front")
|
||||
col.itemR(md, "cull_back_faces", text="Back")
|
||||
col.label(text="Cull Faces:")
|
||||
col.prop(md, "cull_front_faces", text="Front")
|
||||
col.prop(md, "cull_back_faces", text="Back")
|
||||
|
||||
layout.itemL(text="Auxiliary Target:")
|
||||
layout.itemR(md, "auxiliary_target", text="")
|
||||
layout.label(text="Auxiliary Target:")
|
||||
layout.prop(md, "auxiliary_target", text="")
|
||||
|
||||
elif md.mode == 'NEAREST_SURFACEPOINT':
|
||||
layout.itemR(md, "keep_above_surface")
|
||||
layout.prop(md, "keep_above_surface")
|
||||
|
||||
def SIMPLE_DEFORM(self, layout, ob, md, wide_ui):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Mode:")
|
||||
col.itemR(md, "mode", text="")
|
||||
col.label(text="Mode:")
|
||||
col.prop(md, "mode", text="")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Vertex Group:")
|
||||
col.item_pointerR(md, "vertex_group", ob, "vertex_groups", text="")
|
||||
col.label(text="Vertex Group:")
|
||||
col.prop_object(md, "vertex_group", ob, "vertex_groups", text="")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Origin:")
|
||||
col.itemR(md, "origin", text="")
|
||||
col.label(text="Origin:")
|
||||
col.prop(md, "origin", text="")
|
||||
sub = col.column()
|
||||
sub.active = md.origin
|
||||
sub.itemR(md, "relative")
|
||||
sub.active = (md.origin != "")
|
||||
sub.prop(md, "relative")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Deform:")
|
||||
col.itemR(md, "factor")
|
||||
col.itemR(md, "limits", slider=True)
|
||||
col.label(text="Deform:")
|
||||
col.prop(md, "factor")
|
||||
col.prop(md, "limits", slider=True)
|
||||
if md.mode in ('TAPER', 'STRETCH'):
|
||||
col.itemR(md, "lock_x_axis")
|
||||
col.itemR(md, "lock_y_axis")
|
||||
col.prop(md, "lock_x_axis")
|
||||
col.prop(md, "lock_y_axis")
|
||||
|
||||
def SMOKE(self, layout, ob, md, wide_ui):
|
||||
layout.itemL(text="See Smoke panel.")
|
||||
layout.label(text="See Smoke panel.")
|
||||
|
||||
def SMOOTH(self, layout, ob, md, wide_ui):
|
||||
split = layout.split(percentage=0.25)
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Axis:")
|
||||
col.itemR(md, "x")
|
||||
col.itemR(md, "y")
|
||||
col.itemR(md, "z")
|
||||
col.label(text="Axis:")
|
||||
col.prop(md, "x")
|
||||
col.prop(md, "y")
|
||||
col.prop(md, "z")
|
||||
|
||||
col = split.column()
|
||||
col.itemR(md, "factor")
|
||||
col.itemR(md, "repeat")
|
||||
col.itemL(text="Vertex Group:")
|
||||
col.item_pointerR(md, "vertex_group", ob, "vertex_groups", text="")
|
||||
col.prop(md, "factor")
|
||||
col.prop(md, "repeat")
|
||||
col.label(text="Vertex Group:")
|
||||
col.prop_object(md, "vertex_group", ob, "vertex_groups", text="")
|
||||
|
||||
def SOFT_BODY(self, layout, ob, md, wide_ui):
|
||||
layout.itemL(text="See Soft Body panel.")
|
||||
layout.label(text="See Soft Body panel.")
|
||||
|
||||
def SUBSURF(self, layout, ob, md, wide_ui):
|
||||
if wide_ui:
|
||||
layout.row().itemR(md, "subdivision_type", expand=True)
|
||||
layout.row().prop(md, "subdivision_type", expand=True)
|
||||
else:
|
||||
layout.row().itemR(md, "subdivision_type", text="")
|
||||
layout.row().prop(md, "subdivision_type", text="")
|
||||
|
||||
split = layout.split()
|
||||
col = split.column()
|
||||
col.itemL(text="Subdivisions:")
|
||||
col.itemR(md, "levels", text="View")
|
||||
col.itemR(md, "render_levels", text="Render")
|
||||
col.label(text="Subdivisions:")
|
||||
col.prop(md, "levels", text="View")
|
||||
col.prop(md, "render_levels", text="Render")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Options:")
|
||||
col.itemR(md, "optimal_draw", text="Optimal Display")
|
||||
col.itemR(md, "subsurf_uv")
|
||||
col.label(text="Options:")
|
||||
col.prop(md, "optimal_draw", text="Optimal Display")
|
||||
col.prop(md, "subsurf_uv")
|
||||
|
||||
def SURFACE(self, layout, ob, md, wide_ui):
|
||||
layout.itemL(text="See Fields panel.")
|
||||
layout.label(text="See Fields panel.")
|
||||
|
||||
def UV_PROJECT(self, layout, ob, md, wide_ui):
|
||||
if ob.type == 'MESH':
|
||||
split = layout.split()
|
||||
col = split.column()
|
||||
col.itemL(text="UV Layer:")
|
||||
col.item_pointerR(md, "uv_layer", ob.data, "uv_textures", text="")
|
||||
col.label(text="UV Layer:")
|
||||
col.prop_object(md, "uv_layer", ob.data, "uv_textures", text="")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Image:")
|
||||
col.itemR(md, "image", text="")
|
||||
col.label(text="Image:")
|
||||
col.prop(md, "image", text="")
|
||||
|
||||
split = layout.split()
|
||||
col = split.column()
|
||||
col.itemR(md, "override_image")
|
||||
col.itemR(md, "num_projectors", text="Projectors")
|
||||
col.prop(md, "override_image")
|
||||
col.prop(md, "num_projectors", text="Projectors")
|
||||
for proj in md.projectors:
|
||||
col.itemR(proj, "object", text="")
|
||||
col.prop(proj, "object", text="")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
sub = col.column(align=True)
|
||||
sub.itemL(text="Aspect Ratio:")
|
||||
sub.itemR(md, "horizontal_aspect_ratio", text="Horizontal")
|
||||
sub.itemR(md, "vertical_aspect_ratio", text="Vertical")
|
||||
sub.label(text="Aspect Ratio:")
|
||||
sub.prop(md, "horizontal_aspect_ratio", text="Horizontal")
|
||||
sub.prop(md, "vertical_aspect_ratio", text="Vertical")
|
||||
|
||||
def WAVE(self, layout, ob, md, wide_ui):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Motion:")
|
||||
col.itemR(md, "x")
|
||||
col.itemR(md, "y")
|
||||
col.itemR(md, "cyclic")
|
||||
col.label(text="Motion:")
|
||||
col.prop(md, "x")
|
||||
col.prop(md, "y")
|
||||
col.prop(md, "cyclic")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(md, "normals")
|
||||
col.prop(md, "normals")
|
||||
sub = col.column()
|
||||
sub.active = md.normals
|
||||
sub.itemR(md, "x_normal", text="X")
|
||||
sub.itemR(md, "y_normal", text="Y")
|
||||
sub.itemR(md, "z_normal", text="Z")
|
||||
sub.prop(md, "x_normal", text="X")
|
||||
sub.prop(md, "y_normal", text="Y")
|
||||
sub.prop(md, "z_normal", text="Z")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Time:")
|
||||
col.label(text="Time:")
|
||||
sub = col.column(align=True)
|
||||
sub.itemR(md, "time_offset", text="Offset")
|
||||
sub.itemR(md, "lifetime", text="Life")
|
||||
col.itemR(md, "damping_time", text="Damping")
|
||||
sub.prop(md, "time_offset", text="Offset")
|
||||
sub.prop(md, "lifetime", text="Life")
|
||||
col.prop(md, "damping_time", text="Damping")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Position:")
|
||||
col.label(text="Position:")
|
||||
sub = col.column(align=True)
|
||||
sub.itemR(md, "start_position_x", text="X")
|
||||
sub.itemR(md, "start_position_y", text="Y")
|
||||
col.itemR(md, "falloff_radius", text="Falloff")
|
||||
sub.prop(md, "start_position_x", text="X")
|
||||
sub.prop(md, "start_position_y", text="Y")
|
||||
col.prop(md, "falloff_radius", text="Falloff")
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
layout.itemR(md, "start_position_object")
|
||||
layout.item_pointerR(md, "vertex_group", ob, "vertex_groups")
|
||||
layout.itemR(md, "texture")
|
||||
layout.itemR(md, "texture_coordinates")
|
||||
layout.prop(md, "start_position_object")
|
||||
layout.prop_object(md, "vertex_group", ob, "vertex_groups")
|
||||
layout.prop(md, "texture")
|
||||
layout.prop(md, "texture_coordinates")
|
||||
if md.texture_coordinates == 'MAP_UV' and ob.type == 'MESH':
|
||||
layout.item_pointerR(md, "uv_layer", ob.data, "uv_textures")
|
||||
layout.prop_object(md, "uv_layer", ob.data, "uv_textures")
|
||||
elif md.texture_coordinates == 'OBJECT':
|
||||
layout.itemR(md, "texture_coordinates_object")
|
||||
layout.prop(md, "texture_coordinates_object")
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(md, "speed", slider=True)
|
||||
col.itemR(md, "height", slider=True)
|
||||
col.prop(md, "speed", slider=True)
|
||||
col.prop(md, "height", slider=True)
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(md, "width", slider=True)
|
||||
col.itemR(md, "narrowness", slider=True)
|
||||
col.prop(md, "width", slider=True)
|
||||
col.prop(md, "narrowness", slider=True)
|
||||
|
||||
bpy.types.register(DATA_PT_modifiers)
|
||||
|
@ -45,120 +45,120 @@ class PHYSICS_PT_game_physics(PhysicsButtonsPanel):
|
||||
wide_ui = context.region.width > narrowui
|
||||
|
||||
if wide_ui:
|
||||
layout.itemR(game, "physics_type")
|
||||
layout.prop(game, "physics_type")
|
||||
else:
|
||||
layout.itemR(game, "physics_type", text="")
|
||||
layout.itemS()
|
||||
layout.prop(game, "physics_type", text="")
|
||||
layout.separator()
|
||||
|
||||
#if game.physics_type == 'DYNAMIC':
|
||||
if game.physics_type in ('DYNAMIC', 'RIGID_BODY'):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(game, "actor")
|
||||
col.itemR(game, "ghost")
|
||||
col.itemR(ob, "restrict_render", text="Invisible") # out of place but useful
|
||||
col.prop(game, "actor")
|
||||
col.prop(game, "ghost")
|
||||
col.prop(ob, "restrict_render", text="Invisible") # out of place but useful
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(game, "material_physics")
|
||||
col.itemR(game, "rotate_from_normal")
|
||||
col.itemR(game, "no_sleeping")
|
||||
col.prop(game, "material_physics")
|
||||
col.prop(game, "rotate_from_normal")
|
||||
col.prop(game, "no_sleeping")
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Attributes:")
|
||||
col.itemR(game, "mass")
|
||||
col.itemR(game, "radius")
|
||||
col.itemR(game, "form_factor")
|
||||
col.label(text="Attributes:")
|
||||
col.prop(game, "mass")
|
||||
col.prop(game, "radius")
|
||||
col.prop(game, "form_factor")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
sub = col.column()
|
||||
sub.active = (game.physics_type == 'RIGID_BODY')
|
||||
sub.itemR(game, "anisotropic_friction")
|
||||
sub.prop(game, "anisotropic_friction")
|
||||
subsub = sub.column()
|
||||
subsub.active = game.anisotropic_friction
|
||||
subsub.itemR(game, "friction_coefficients", text="", slider=True)
|
||||
subsub.prop(game, "friction_coefficients", text="", slider=True)
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Velocity:")
|
||||
col.label(text="Velocity:")
|
||||
sub = col.column(align=True)
|
||||
sub.itemR(game, "minimum_velocity", text="Minimum")
|
||||
sub.itemR(game, "maximum_velocity", text="Maximum")
|
||||
sub.prop(game, "minimum_velocity", text="Minimum")
|
||||
sub.prop(game, "maximum_velocity", text="Maximum")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Damping:")
|
||||
col.label(text="Damping:")
|
||||
sub = col.column(align=True)
|
||||
sub.itemR(game, "damping", text="Translation", slider=True)
|
||||
sub.itemR(game, "rotation_damping", text="Rotation", slider=True)
|
||||
sub.prop(game, "damping", text="Translation", slider=True)
|
||||
sub.prop(game, "rotation_damping", text="Rotation", slider=True)
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Lock Translation:")
|
||||
col.itemR(game, "lock_x_axis", text="X")
|
||||
col.itemR(game, "lock_y_axis", text="Y")
|
||||
col.itemR(game, "lock_z_axis", text="Z")
|
||||
col.label(text="Lock Translation:")
|
||||
col.prop(game, "lock_x_axis", text="X")
|
||||
col.prop(game, "lock_y_axis", text="Y")
|
||||
col.prop(game, "lock_z_axis", text="Z")
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Lock Rotation:")
|
||||
col.itemR(game, "lock_x_rot_axis", text="X")
|
||||
col.itemR(game, "lock_y_rot_axis", text="Y")
|
||||
col.itemR(game, "lock_z_rot_axis", text="Z")
|
||||
col.label(text="Lock Rotation:")
|
||||
col.prop(game, "lock_x_rot_axis", text="X")
|
||||
col.prop(game, "lock_y_rot_axis", text="Y")
|
||||
col.prop(game, "lock_z_rot_axis", text="Z")
|
||||
|
||||
elif game.physics_type == 'SOFT_BODY':
|
||||
col = layout.column()
|
||||
col.itemR(game, "actor")
|
||||
col.itemR(game, "ghost")
|
||||
col.itemR(ob, "restrict_render", text="Invisible")
|
||||
col.prop(game, "actor")
|
||||
col.prop(game, "ghost")
|
||||
col.prop(ob, "restrict_render", text="Invisible")
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Attributes:")
|
||||
col.itemR(game, "mass")
|
||||
col.itemR(soft, "welding")
|
||||
col.itemR(soft, "position_iterations")
|
||||
col.itemR(soft, "linstiff", slider=True)
|
||||
col.itemR(soft, "dynamic_friction", slider=True)
|
||||
col.itemR(soft, "margin", slider=True)
|
||||
col.itemR(soft, "bending_const", text="Bending Constraints")
|
||||
col.label(text="Attributes:")
|
||||
col.prop(game, "mass")
|
||||
col.prop(soft, "welding")
|
||||
col.prop(soft, "position_iterations")
|
||||
col.prop(soft, "linstiff", slider=True)
|
||||
col.prop(soft, "dynamic_friction", slider=True)
|
||||
col.prop(soft, "margin", slider=True)
|
||||
col.prop(soft, "bending_const", text="Bending Constraints")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(soft, "shape_match")
|
||||
col.prop(soft, "shape_match")
|
||||
sub = col.column()
|
||||
sub.active = soft.shape_match
|
||||
sub.itemR(soft, "threshold", slider=True)
|
||||
sub.prop(soft, "threshold", slider=True)
|
||||
|
||||
col.itemS()
|
||||
col.separator()
|
||||
|
||||
col.itemL(text="Cluster Collision:")
|
||||
col.itemR(soft, "cluster_rigid_to_softbody")
|
||||
col.itemR(soft, "cluster_soft_to_softbody")
|
||||
col.label(text="Cluster Collision:")
|
||||
col.prop(soft, "cluster_rigid_to_softbody")
|
||||
col.prop(soft, "cluster_soft_to_softbody")
|
||||
sub = col.column()
|
||||
sub.active = (soft.cluster_rigid_to_softbody or soft.cluster_soft_to_softbody)
|
||||
sub.itemR(soft, "cluster_iterations", text="Iterations")
|
||||
sub.prop(soft, "cluster_iterations", text="Iterations")
|
||||
|
||||
elif game.physics_type == 'STATIC':
|
||||
col = layout.column()
|
||||
col.itemR(game, "actor")
|
||||
col.itemR(game, "ghost")
|
||||
col.itemR(ob, "restrict_render", text="Invisible")
|
||||
col.prop(game, "actor")
|
||||
col.prop(game, "ghost")
|
||||
col.prop(ob, "restrict_render", text="Invisible")
|
||||
|
||||
elif game.physics_type in ('SENSOR', 'INVISIBLE', 'NO_COLLISION', 'OCCLUDE'):
|
||||
layout.itemR(ob, "restrict_render", text="Invisible")
|
||||
layout.prop(ob, "restrict_render", text="Invisible")
|
||||
|
||||
|
||||
class PHYSICS_PT_game_collision_bounds(PhysicsButtonsPanel):
|
||||
@ -172,7 +172,7 @@ class PHYSICS_PT_game_collision_bounds(PhysicsButtonsPanel):
|
||||
def draw_header(self, context):
|
||||
game = context.active_object.game
|
||||
|
||||
self.layout.itemR(game, "use_collision_bounds", text="")
|
||||
self.layout.prop(game, "use_collision_bounds", text="")
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@ -182,18 +182,18 @@ class PHYSICS_PT_game_collision_bounds(PhysicsButtonsPanel):
|
||||
|
||||
layout.active = game.use_collision_bounds
|
||||
if wide_ui:
|
||||
layout.itemR(game, "collision_bounds", text="Bounds")
|
||||
layout.prop(game, "collision_bounds", text="Bounds")
|
||||
else:
|
||||
layout.itemR(game, "collision_bounds", text="")
|
||||
layout.prop(game, "collision_bounds", text="")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(game, "collision_margin", text="Margin", slider=True)
|
||||
col.prop(game, "collision_margin", text="Margin", slider=True)
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(game, "collision_compound", text="Compound")
|
||||
col.prop(game, "collision_compound", text="Compound")
|
||||
|
||||
|
||||
bpy.types.register(PHYSICS_PT_game_physics)
|
||||
@ -217,8 +217,8 @@ class RENDER_PT_game(RenderButtonsPanel):
|
||||
layout = self.layout
|
||||
|
||||
row = layout.row()
|
||||
row.itemO("view3d.game_start", text="Start")
|
||||
row.itemL()
|
||||
row.operator("view3d.game_start", text="Start")
|
||||
row.label()
|
||||
|
||||
|
||||
class RENDER_PT_game_player(RenderButtonsPanel):
|
||||
@ -230,32 +230,32 @@ class RENDER_PT_game_player(RenderButtonsPanel):
|
||||
gs = context.scene.game_data
|
||||
wide_ui = context.region.width > narrowui
|
||||
|
||||
layout.itemR(gs, "fullscreen")
|
||||
layout.prop(gs, "fullscreen")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Resolution:")
|
||||
col.label(text="Resolution:")
|
||||
sub = col.column(align=True)
|
||||
sub.itemR(gs, "resolution_x", slider=False, text="X")
|
||||
sub.itemR(gs, "resolution_y", slider=False, text="Y")
|
||||
sub.prop(gs, "resolution_x", slider=False, text="X")
|
||||
sub.prop(gs, "resolution_y", slider=False, text="Y")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Quality:")
|
||||
col.label(text="Quality:")
|
||||
sub = col.column(align=True)
|
||||
sub.itemR(gs, "depth", text="Bit Depth", slider=False)
|
||||
sub.itemR(gs, "frequency", text="FPS", slider=False)
|
||||
sub.prop(gs, "depth", text="Bit Depth", slider=False)
|
||||
sub.prop(gs, "frequency", text="FPS", slider=False)
|
||||
|
||||
# framing:
|
||||
col = layout.column()
|
||||
col.itemL(text="Framing:")
|
||||
col.label(text="Framing:")
|
||||
if wide_ui:
|
||||
col.row().itemR(gs, "framing_type", expand=True)
|
||||
col.row().prop(gs, "framing_type", expand=True)
|
||||
else:
|
||||
col.itemR(gs, "framing_type", text="")
|
||||
col.prop(gs, "framing_type", text="")
|
||||
if gs.framing_type == 'LETTERBOX':
|
||||
col.itemR(gs, "framing_color", text="")
|
||||
col.prop(gs, "framing_color", text="")
|
||||
|
||||
|
||||
class RENDER_PT_game_stereo(RenderButtonsPanel):
|
||||
@ -269,20 +269,20 @@ class RENDER_PT_game_stereo(RenderButtonsPanel):
|
||||
wide_ui = context.region.width > narrowui
|
||||
|
||||
# stereo options:
|
||||
layout.itemR(gs, "stereo", expand=True)
|
||||
layout.prop(gs, "stereo", expand=True)
|
||||
|
||||
# stereo:
|
||||
if stereo_mode == 'STEREO':
|
||||
layout.itemR(gs, "stereo_mode")
|
||||
layout.itemL(text="To do: Focal Length")
|
||||
layout.itemL(text="To do: Eye Separation")
|
||||
layout.prop(gs, "stereo_mode")
|
||||
# layout.label(text="To do: Focal Length") # to be done after 2.5alpha0 is out
|
||||
# layout.label(text="To do: Eye Separation") # to be done after 2.5alpha0 is out
|
||||
|
||||
# dome:
|
||||
elif stereo_mode == 'DOME':
|
||||
if wide_ui:
|
||||
layout.itemR(gs, "dome_mode", text="Dome Type")
|
||||
layout.prop(gs, "dome_mode", text="Dome Type")
|
||||
else:
|
||||
layout.itemR(gs, "dome_mode", text="")
|
||||
layout.prop(gs, "dome_mode", text="")
|
||||
|
||||
dome_type = gs.dome_mode
|
||||
|
||||
@ -293,29 +293,29 @@ class RENDER_PT_game_stereo(RenderButtonsPanel):
|
||||
dome_type == 'TRUNCATED_FRONT':
|
||||
|
||||
col = split.column()
|
||||
col.itemR(gs, "dome_buffer_resolution", text="Resolution", slider=True)
|
||||
col.itemR(gs, "dome_angle", slider=True)
|
||||
col.prop(gs, "dome_buffer_resolution", text="Resolution", slider=True)
|
||||
col.prop(gs, "dome_angle", slider=True)
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(gs, "dome_tesselation", text="Tesselation")
|
||||
col.itemR(gs, "dome_tilt")
|
||||
col.prop(gs, "dome_tesselation", text="Tesselation")
|
||||
col.prop(gs, "dome_tilt")
|
||||
|
||||
elif dome_type == 'PANORAM_SPH':
|
||||
col = split.column()
|
||||
|
||||
col.itemR(gs, "dome_buffer_resolution", text="Resolution", slider=True)
|
||||
col.prop(gs, "dome_buffer_resolution", text="Resolution", slider=True)
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(gs, "dome_tesselation", text="Tesselation")
|
||||
col.prop(gs, "dome_tesselation", text="Tesselation")
|
||||
|
||||
else: # cube map
|
||||
col = split.column()
|
||||
col.itemR(gs, "dome_buffer_resolution", text="Resolution", slider=True)
|
||||
col.prop(gs, "dome_buffer_resolution", text="Resolution", slider=True)
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
|
||||
layout.itemR(gs, "dome_text")
|
||||
layout.prop(gs, "dome_text")
|
||||
|
||||
|
||||
class RENDER_PT_game_shading(RenderButtonsPanel):
|
||||
@ -328,22 +328,22 @@ class RENDER_PT_game_shading(RenderButtonsPanel):
|
||||
wide_ui = context.region.width > narrowui
|
||||
|
||||
if wide_ui:
|
||||
layout.itemR(gs, "material_mode", expand=True)
|
||||
layout.prop(gs, "material_mode", expand=True)
|
||||
else:
|
||||
layout.itemR(gs, "material_mode", text="")
|
||||
layout.prop(gs, "material_mode", text="")
|
||||
|
||||
if gs.material_mode == 'GLSL':
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(gs, "glsl_lights", text="Lights")
|
||||
col.itemR(gs, "glsl_shaders", text="Shaders")
|
||||
col.itemR(gs, "glsl_shadows", text="Shadows")
|
||||
col.prop(gs, "glsl_lights", text="Lights")
|
||||
col.prop(gs, "glsl_shaders", text="Shaders")
|
||||
col.prop(gs, "glsl_shadows", text="Shadows")
|
||||
|
||||
col = split.column()
|
||||
col.itemR(gs, "glsl_ramps", text="Ramps")
|
||||
col.itemR(gs, "glsl_nodes", text="Nodes")
|
||||
col.itemR(gs, "glsl_extra_textures", text="Extra Textures")
|
||||
col.prop(gs, "glsl_ramps", text="Ramps")
|
||||
col.prop(gs, "glsl_nodes", text="Nodes")
|
||||
col.prop(gs, "glsl_extra_textures", text="Extra Textures")
|
||||
|
||||
|
||||
class RENDER_PT_game_performance(RenderButtonsPanel):
|
||||
@ -358,17 +358,17 @@ class RENDER_PT_game_performance(RenderButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Show:")
|
||||
col.itemR(gs, "show_debug_properties", text="Debug Properties")
|
||||
col.itemR(gs, "show_framerate_profile", text="Framerate and Profile")
|
||||
col.itemR(gs, "show_physics_visualization", text="Physics Visualization")
|
||||
col.itemR(gs, "deprecation_warnings")
|
||||
col.label(text="Show:")
|
||||
col.prop(gs, "show_debug_properties", text="Debug Properties")
|
||||
col.prop(gs, "show_framerate_profile", text="Framerate and Profile")
|
||||
col.prop(gs, "show_physics_visualization", text="Physics Visualization")
|
||||
col.prop(gs, "deprecation_warnings")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Render:")
|
||||
col.itemR(gs, "all_frames")
|
||||
col.itemR(gs, "display_lists")
|
||||
col.label(text="Render:")
|
||||
col.prop(gs, "all_frames")
|
||||
col.prop(gs, "display_lists")
|
||||
|
||||
|
||||
class RENDER_PT_game_sound(RenderButtonsPanel):
|
||||
@ -381,11 +381,11 @@ class RENDER_PT_game_sound(RenderButtonsPanel):
|
||||
wide_ui = context.region.width > narrowui
|
||||
|
||||
if wide_ui:
|
||||
layout.itemR(scene, "distance_model")
|
||||
layout.prop(scene, "distance_model")
|
||||
else:
|
||||
layout.itemR(scene, "distance_model", text="")
|
||||
layout.itemR(scene, "speed_of_sound", text="Speed")
|
||||
layout.itemR(scene, "doppler_factor")
|
||||
layout.prop(scene, "distance_model", text="")
|
||||
layout.prop(scene, "speed_of_sound", text="Speed")
|
||||
layout.prop(scene, "doppler_factor")
|
||||
|
||||
bpy.types.register(RENDER_PT_game)
|
||||
bpy.types.register(RENDER_PT_game_player)
|
||||
@ -446,11 +446,11 @@ class WORLD_PT_game_world(WorldButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(world, "horizon_color")
|
||||
col.prop(world, "horizon_color")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(world, "ambient_color")
|
||||
col.prop(world, "ambient_color")
|
||||
|
||||
|
||||
class WORLD_PT_game_mist(WorldButtonsPanel):
|
||||
@ -459,7 +459,7 @@ class WORLD_PT_game_mist(WorldButtonsPanel):
|
||||
def draw_header(self, context):
|
||||
world = context.world
|
||||
|
||||
self.layout.itemR(world.mist, "enabled", text="")
|
||||
self.layout.prop(world.mist, "enabled", text="")
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@ -471,11 +471,11 @@ class WORLD_PT_game_mist(WorldButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(world.mist, "start")
|
||||
col.prop(world.mist, "start")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(world.mist, "depth")
|
||||
col.prop(world.mist, "depth")
|
||||
|
||||
|
||||
class WORLD_PT_game_physics(WorldButtonsPanel):
|
||||
@ -487,40 +487,40 @@ class WORLD_PT_game_physics(WorldButtonsPanel):
|
||||
gs = context.scene.game_data
|
||||
wide_ui = context.region.width > narrowui
|
||||
|
||||
layout.itemR(gs, "physics_engine")
|
||||
layout.prop(gs, "physics_engine")
|
||||
if gs.physics_engine != 'NONE':
|
||||
layout.itemR(gs, "physics_gravity", text="Gravity")
|
||||
layout.prop(gs, "physics_gravity", text="Gravity")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Physics Steps:")
|
||||
col.label(text="Physics Steps:")
|
||||
sub = col.column(align=True)
|
||||
sub.itemR(gs, "physics_step_max", text="Max")
|
||||
sub.itemR(gs, "physics_step_sub", text="Substeps")
|
||||
col.itemR(gs, "fps", text="FPS")
|
||||
sub.prop(gs, "physics_step_max", text="Max")
|
||||
sub.prop(gs, "physics_step_sub", text="Substeps")
|
||||
col.prop(gs, "fps", text="FPS")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Logic Steps:")
|
||||
col.itemR(gs, "logic_step_max", text="Max")
|
||||
col.label(text="Logic Steps:")
|
||||
col.prop(gs, "logic_step_max", text="Max")
|
||||
|
||||
col = layout.column()
|
||||
col.itemR(gs, "use_occlusion_culling", text="Occlusion Culling")
|
||||
col.prop(gs, "use_occlusion_culling", text="Occlusion Culling")
|
||||
sub = col.column()
|
||||
sub.active = gs.use_occlusion_culling
|
||||
sub.itemR(gs, "occlusion_culling_resolution", text="Resolution")
|
||||
sub.prop(gs, "occlusion_culling_resolution", text="Resolution")
|
||||
|
||||
else:
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Physics Steps:")
|
||||
col.itemR(gs, "fps", text="FPS")
|
||||
col.label(text="Physics Steps:")
|
||||
col.prop(gs, "fps", text="FPS")
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Logic Steps:")
|
||||
col.itemR(gs, "logic_step_max", text="Max")
|
||||
col.label(text="Logic Steps:")
|
||||
col.prop(gs, "logic_step_max", text="Max")
|
||||
|
||||
bpy.types.register(WORLD_PT_game_context_world)
|
||||
bpy.types.register(WORLD_PT_game_world)
|
||||
|
@ -89,15 +89,15 @@ class MATERIAL_PT_context_material(MaterialButtonsPanel):
|
||||
row.template_list(ob, "materials", ob, "active_material_index", rows=2)
|
||||
|
||||
col = row.column(align=True)
|
||||
col.itemO("object.material_slot_add", icon='ICON_ZOOMIN', text="")
|
||||
col.itemO("object.material_slot_remove", icon='ICON_ZOOMOUT', text="")
|
||||
col.itemO("object.material_slot_copy", icon='ICON_COPY_ID', text="")
|
||||
col.operator("object.material_slot_add", icon='ICON_ZOOMIN', text="")
|
||||
col.operator("object.material_slot_remove", icon='ICON_ZOOMOUT', text="")
|
||||
col.operator("object.material_slot_copy", icon='ICON_COPY_ID', text="")
|
||||
|
||||
if ob.mode == 'EDIT':
|
||||
row = layout.row(align=True)
|
||||
row.itemO("object.material_slot_assign", text="Assign")
|
||||
row.itemO("object.material_slot_select", text="Select")
|
||||
row.itemO("object.material_slot_deselect", text="Deselect")
|
||||
row.operator("object.material_slot_assign", text="Assign")
|
||||
row.operator("object.material_slot_select", text="Select")
|
||||
row.operator("object.material_slot_deselect", text="Deselect")
|
||||
|
||||
if wide_ui:
|
||||
split = layout.split(percentage=0.65)
|
||||
@ -106,12 +106,12 @@ class MATERIAL_PT_context_material(MaterialButtonsPanel):
|
||||
split.template_ID(ob, "active_material", new="material.new")
|
||||
row = split.row()
|
||||
if slot:
|
||||
row.itemR(slot, "link", text="")
|
||||
row.prop(slot, "link", text="")
|
||||
else:
|
||||
row.itemL()
|
||||
row.label()
|
||||
elif mat:
|
||||
split.template_ID(space, "pin_id")
|
||||
split.itemS()
|
||||
split.separator()
|
||||
else:
|
||||
if ob:
|
||||
layout.template_ID(ob, "active_material", new="material.new")
|
||||
@ -120,9 +120,9 @@ class MATERIAL_PT_context_material(MaterialButtonsPanel):
|
||||
|
||||
if mat:
|
||||
if wide_ui:
|
||||
layout.itemR(mat, "type", expand=True)
|
||||
layout.prop(mat, "type", expand=True)
|
||||
else:
|
||||
layout.itemR(mat, "type", text="")
|
||||
layout.prop(mat, "type", text="")
|
||||
|
||||
|
||||
class MATERIAL_PT_shading(MaterialButtonsPanel):
|
||||
@ -146,21 +146,21 @@ class MATERIAL_PT_shading(MaterialButtonsPanel):
|
||||
col = split.column()
|
||||
sub = col.column()
|
||||
sub.active = not mat.shadeless
|
||||
sub.itemR(mat, "emit")
|
||||
sub.itemR(mat, "ambient")
|
||||
sub.prop(mat, "emit")
|
||||
sub.prop(mat, "ambient")
|
||||
sub = col.column()
|
||||
sub.itemR(mat, "translucency")
|
||||
sub.prop(mat, "translucency")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(mat, "shadeless")
|
||||
col.prop(mat, "shadeless")
|
||||
sub = col.column()
|
||||
sub.active = not mat.shadeless
|
||||
sub.itemR(mat, "tangent_shading")
|
||||
sub.itemR(mat, "cubic")
|
||||
sub.prop(mat, "tangent_shading")
|
||||
sub.prop(mat, "cubic")
|
||||
|
||||
elif mat.type == 'HALO':
|
||||
layout.itemR(mat, "alpha")
|
||||
layout.prop(mat, "alpha")
|
||||
|
||||
|
||||
class MATERIAL_PT_strand(MaterialButtonsPanel):
|
||||
@ -184,32 +184,32 @@ class MATERIAL_PT_strand(MaterialButtonsPanel):
|
||||
|
||||
col = split.column()
|
||||
sub = col.column(align=True)
|
||||
sub.itemL(text="Size:")
|
||||
sub.itemR(tan, "root_size", text="Root")
|
||||
sub.itemR(tan, "tip_size", text="Tip")
|
||||
sub.itemR(tan, "min_size", text="Minimum")
|
||||
sub.itemR(tan, "blender_units")
|
||||
sub.label(text="Size:")
|
||||
sub.prop(tan, "root_size", text="Root")
|
||||
sub.prop(tan, "tip_size", text="Tip")
|
||||
sub.prop(tan, "min_size", text="Minimum")
|
||||
sub.prop(tan, "blender_units")
|
||||
sub = col.column()
|
||||
sub.active = (not mat.shadeless)
|
||||
sub.itemR(tan, "tangent_shading")
|
||||
col.itemR(tan, "shape")
|
||||
sub.prop(tan, "tangent_shading")
|
||||
col.prop(tan, "shape")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Shading:")
|
||||
col.itemR(tan, "width_fade")
|
||||
col.label(text="Shading:")
|
||||
col.prop(tan, "width_fade")
|
||||
ob = context.object
|
||||
if ob and ob.type == 'MESH':
|
||||
col.item_pointerR(tan, "uv_layer", ob.data, "uv_textures", text="")
|
||||
col.prop_object(tan, "uv_layer", ob.data, "uv_textures", text="")
|
||||
else:
|
||||
col.itemR(tan, "uv_layer", text="")
|
||||
col.itemS()
|
||||
col.prop(tan, "uv_layer", text="")
|
||||
col.separator()
|
||||
sub = col.column()
|
||||
sub.active = (not mat.shadeless)
|
||||
sub.itemR(tan, "surface_diffuse")
|
||||
sub.prop(tan, "surface_diffuse")
|
||||
sub = col.column()
|
||||
sub.active = tan.surface_diffuse
|
||||
sub.itemR(tan, "blend_distance", text="Distance")
|
||||
sub.prop(tan, "blend_distance", text="Distance")
|
||||
|
||||
|
||||
class MATERIAL_PT_physics(MaterialButtonsPanel):
|
||||
@ -225,15 +225,15 @@ class MATERIAL_PT_physics(MaterialButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(phys, "distance")
|
||||
col.itemR(phys, "friction")
|
||||
col.itemR(phys, "align_to_normal")
|
||||
col.prop(phys, "distance")
|
||||
col.prop(phys, "friction")
|
||||
col.prop(phys, "align_to_normal")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(phys, "force", slider=True)
|
||||
col.itemR(phys, "elasticity", slider=True)
|
||||
col.itemR(phys, "damp", slider=True)
|
||||
col.prop(phys, "force", slider=True)
|
||||
col.prop(phys, "elasticity", slider=True)
|
||||
col.prop(phys, "damp", slider=True)
|
||||
|
||||
|
||||
class MATERIAL_PT_options(MaterialButtonsPanel):
|
||||
@ -254,31 +254,31 @@ class MATERIAL_PT_options(MaterialButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(mat, "traceable")
|
||||
col.itemR(mat, "full_oversampling")
|
||||
col.itemR(mat, "sky")
|
||||
col.itemR(mat, "exclude_mist")
|
||||
col.itemR(mat, "invert_z")
|
||||
col.prop(mat, "traceable")
|
||||
col.prop(mat, "full_oversampling")
|
||||
col.prop(mat, "sky")
|
||||
col.prop(mat, "exclude_mist")
|
||||
col.prop(mat, "invert_z")
|
||||
sub = col.row()
|
||||
sub.itemR(mat, "z_offset")
|
||||
sub.prop(mat, "z_offset")
|
||||
sub.active = mat.transparency and mat.transparency_method == 'Z_TRANSPARENCY'
|
||||
sub = col.column(align=True)
|
||||
sub.itemL(text="Light Group:")
|
||||
sub.itemR(mat, "light_group", text="")
|
||||
sub.label(text="Light Group:")
|
||||
sub.prop(mat, "light_group", text="")
|
||||
row = sub.row()
|
||||
row.active = mat.light_group
|
||||
row.itemR(mat, "light_group_exclusive", text="Exclusive")
|
||||
row.active = bool(mat.light_group)
|
||||
row.prop(mat, "light_group_exclusive", text="Exclusive")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(mat, "face_texture")
|
||||
col.prop(mat, "face_texture")
|
||||
sub = col.column()
|
||||
sub.active = mat.face_texture
|
||||
sub.itemR(mat, "face_texture_alpha")
|
||||
col.itemS()
|
||||
col.itemR(mat, "vertex_color_paint")
|
||||
col.itemR(mat, "vertex_color_light")
|
||||
col.itemR(mat, "object_color")
|
||||
sub.prop(mat, "face_texture_alpha")
|
||||
col.separator()
|
||||
col.prop(mat, "vertex_color_paint")
|
||||
col.prop(mat, "vertex_color_light")
|
||||
col.prop(mat, "object_color")
|
||||
|
||||
|
||||
class MATERIAL_PT_shadow(MaterialButtonsPanel):
|
||||
@ -300,22 +300,22 @@ class MATERIAL_PT_shadow(MaterialButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(mat, "shadows", text="Receive")
|
||||
col.itemR(mat, "receive_transparent_shadows", text="Receive Transparent")
|
||||
col.itemR(mat, "only_shadow", text="Shadows Only")
|
||||
col.itemR(mat, "cast_shadows_only", text="Cast Only")
|
||||
col.itemR(mat, "shadow_casting_alpha", text="Casting Alpha")
|
||||
col.prop(mat, "shadows", text="Receive")
|
||||
col.prop(mat, "receive_transparent_shadows", text="Receive Transparent")
|
||||
col.prop(mat, "only_shadow", text="Shadows Only")
|
||||
col.prop(mat, "cast_shadows_only", text="Cast Only")
|
||||
col.prop(mat, "shadow_casting_alpha", text="Casting Alpha")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(mat, "cast_buffer_shadows")
|
||||
col.prop(mat, "cast_buffer_shadows")
|
||||
sub = col.column()
|
||||
sub.active = mat.cast_buffer_shadows
|
||||
sub.itemR(mat, "shadow_buffer_bias", text="Buffer Bias")
|
||||
col.itemR(mat, "ray_shadow_bias", text="Auto Ray Bias")
|
||||
sub.prop(mat, "shadow_buffer_bias", text="Buffer Bias")
|
||||
col.prop(mat, "ray_shadow_bias", text="Auto Ray Bias")
|
||||
sub = col.column()
|
||||
sub.active = (not mat.ray_shadow_bias)
|
||||
sub.itemR(mat, "shadow_ray_bias", text="Ray Bias")
|
||||
sub.prop(mat, "shadow_ray_bias", text="Ray Bias")
|
||||
|
||||
|
||||
class MATERIAL_PT_diffuse(MaterialButtonsPanel):
|
||||
@ -336,57 +336,57 @@ class MATERIAL_PT_diffuse(MaterialButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(mat, "diffuse_color", text="")
|
||||
col.prop(mat, "diffuse_color", text="")
|
||||
sub = col.column()
|
||||
sub.active = (not mat.shadeless)
|
||||
sub.itemR(mat, "diffuse_intensity", text="Intensity")
|
||||
sub.prop(mat, "diffuse_intensity", text="Intensity")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.active = (not mat.shadeless)
|
||||
col.itemR(mat, "diffuse_shader", text="")
|
||||
col.itemR(mat, "use_diffuse_ramp", text="Ramp")
|
||||
col.prop(mat, "diffuse_shader", text="")
|
||||
col.prop(mat, "use_diffuse_ramp", text="Ramp")
|
||||
|
||||
col = layout.column()
|
||||
col.active = (not mat.shadeless)
|
||||
if mat.diffuse_shader == 'OREN_NAYAR':
|
||||
col.itemR(mat, "roughness")
|
||||
col.prop(mat, "roughness")
|
||||
elif mat.diffuse_shader == 'MINNAERT':
|
||||
col.itemR(mat, "darkness")
|
||||
col.prop(mat, "darkness")
|
||||
elif mat.diffuse_shader == 'TOON':
|
||||
split = col.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(mat, "diffuse_toon_size", text="Size")
|
||||
col.prop(mat, "diffuse_toon_size", text="Size")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(mat, "diffuse_toon_smooth", text="Smooth")
|
||||
col.prop(mat, "diffuse_toon_smooth", text="Smooth")
|
||||
elif mat.diffuse_shader == 'FRESNEL':
|
||||
split = col.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(mat, "diffuse_fresnel", text="Fresnel")
|
||||
col.prop(mat, "diffuse_fresnel", text="Fresnel")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(mat, "diffuse_fresnel_factor", text="Factor")
|
||||
col.prop(mat, "diffuse_fresnel_factor", text="Factor")
|
||||
|
||||
if mat.use_diffuse_ramp:
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
layout.template_color_ramp(mat, "diffuse_ramp", expand=True)
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(mat, "diffuse_ramp_input", text="Input")
|
||||
col.prop(mat, "diffuse_ramp_input", text="Input")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(mat, "diffuse_ramp_blend", text="Blend")
|
||||
col.prop(mat, "diffuse_ramp_blend", text="Blend")
|
||||
row = layout.row()
|
||||
row.itemR(mat, "diffuse_ramp_factor", text="Factor")
|
||||
row.prop(mat, "diffuse_ramp_factor", text="Factor")
|
||||
|
||||
|
||||
class MATERIAL_PT_specular(MaterialButtonsPanel):
|
||||
@ -409,53 +409,53 @@ class MATERIAL_PT_specular(MaterialButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(mat, "specular_color", text="")
|
||||
col.itemR(mat, "specular_intensity", text="Intensity")
|
||||
col.prop(mat, "specular_color", text="")
|
||||
col.prop(mat, "specular_intensity", text="Intensity")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(mat, "specular_shader", text="")
|
||||
col.itemR(mat, "use_specular_ramp", text="Ramp")
|
||||
col.prop(mat, "specular_shader", text="")
|
||||
col.prop(mat, "use_specular_ramp", text="Ramp")
|
||||
|
||||
col = layout.column()
|
||||
if mat.specular_shader in ('COOKTORR', 'PHONG'):
|
||||
col.itemR(mat, "specular_hardness", text="Hardness")
|
||||
col.prop(mat, "specular_hardness", text="Hardness")
|
||||
elif mat.specular_shader == 'BLINN':
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(mat, "specular_hardness", text="Hardness")
|
||||
col.prop(mat, "specular_hardness", text="Hardness")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(mat, "specular_ior", text="IOR")
|
||||
col.prop(mat, "specular_ior", text="IOR")
|
||||
elif mat.specular_shader == 'WARDISO':
|
||||
col.itemR(mat, "specular_slope", text="Slope")
|
||||
col.prop(mat, "specular_slope", text="Slope")
|
||||
elif mat.specular_shader == 'TOON':
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(mat, "specular_toon_size", text="Size")
|
||||
col.prop(mat, "specular_toon_size", text="Size")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(mat, "specular_toon_smooth", text="Smooth")
|
||||
col.prop(mat, "specular_toon_smooth", text="Smooth")
|
||||
|
||||
if mat.use_specular_ramp:
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
layout.template_color_ramp(mat, "specular_ramp", expand=True)
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(mat, "specular_ramp_input", text="Input")
|
||||
col.prop(mat, "specular_ramp_input", text="Input")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(mat, "specular_ramp_blend", text="Blend")
|
||||
col.prop(mat, "specular_ramp_blend", text="Blend")
|
||||
|
||||
row = layout.row()
|
||||
row.itemR(mat, "specular_ramp_factor", text="Factor")
|
||||
row.prop(mat, "specular_ramp_factor", text="Factor")
|
||||
|
||||
|
||||
class MATERIAL_PT_sss(MaterialButtonsPanel):
|
||||
@ -473,7 +473,7 @@ class MATERIAL_PT_sss(MaterialButtonsPanel):
|
||||
sss = mat.subsurface_scattering
|
||||
|
||||
self.layout.active = (not mat.shadeless)
|
||||
self.layout.itemR(sss, "enabled", text="")
|
||||
self.layout.prop(sss, "enabled", text="")
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@ -481,33 +481,33 @@ class MATERIAL_PT_sss(MaterialButtonsPanel):
|
||||
mat = active_node_mat(context.material)
|
||||
sss = mat.subsurface_scattering
|
||||
wide_ui = context.region.width > narrowui
|
||||
|
||||
|
||||
layout.active = (sss.enabled) and (not mat.shadeless)
|
||||
|
||||
row = layout.row().split()
|
||||
sub = row.row(align=True).split(percentage=0.75)
|
||||
sub.itemM("MATERIAL_MT_sss_presets", text="Presets")
|
||||
sub.itemO("material.sss_preset_add", text="Add")
|
||||
sub.menu("MATERIAL_MT_sss_presets", text="Presets")
|
||||
sub.operator("material.sss_preset_add", text="Add")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(sss, "ior")
|
||||
col.itemR(sss, "scale")
|
||||
col.itemR(sss, "color", text="")
|
||||
col.itemR(sss, "radius", text="RGB Radius")
|
||||
col.prop(sss, "ior")
|
||||
col.prop(sss, "scale")
|
||||
col.prop(sss, "color", text="")
|
||||
col.prop(sss, "radius", text="RGB Radius")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
sub = col.column(align=True)
|
||||
sub.itemL(text="Blend:")
|
||||
sub.itemR(sss, "color_factor", text="Color")
|
||||
sub.itemR(sss, "texture_factor", text="Texture")
|
||||
sub.itemL(text="Scattering Weight:")
|
||||
sub.itemR(sss, "front")
|
||||
sub.itemR(sss, "back")
|
||||
col.itemS()
|
||||
col.itemR(sss, "error_tolerance", text="Error")
|
||||
sub.label(text="Blend:")
|
||||
sub.prop(sss, "color_factor", text="Color")
|
||||
sub.prop(sss, "texture_factor", text="Texture")
|
||||
sub.label(text="Scattering Weight:")
|
||||
sub.prop(sss, "front")
|
||||
sub.prop(sss, "back")
|
||||
col.separator()
|
||||
col.prop(sss, "error_tolerance", text="Error")
|
||||
|
||||
|
||||
class MATERIAL_PT_mirror(MaterialButtonsPanel):
|
||||
@ -523,7 +523,7 @@ class MATERIAL_PT_mirror(MaterialButtonsPanel):
|
||||
def draw_header(self, context):
|
||||
raym = active_node_mat(context.material).raytrace_mirror
|
||||
|
||||
self.layout.itemR(raym, "enabled", text="")
|
||||
self.layout.prop(raym, "enabled", text="")
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@ -537,36 +537,36 @@ class MATERIAL_PT_mirror(MaterialButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(raym, "reflect_factor")
|
||||
col.itemR(mat, "mirror_color", text="")
|
||||
col.prop(raym, "reflect_factor")
|
||||
col.prop(mat, "mirror_color", text="")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(raym, "fresnel")
|
||||
col.prop(raym, "fresnel")
|
||||
sub = col.column()
|
||||
sub.active = raym.fresnel > 0
|
||||
sub.itemR(raym, "fresnel_factor", text="Blend")
|
||||
sub.prop(raym, "fresnel_factor", text="Blend")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemS()
|
||||
col.itemR(raym, "distance", text="Max Dist")
|
||||
col.itemR(raym, "depth")
|
||||
col.itemS()
|
||||
col.separator()
|
||||
col.prop(raym, "distance", text="Max Dist")
|
||||
col.prop(raym, "depth")
|
||||
col.separator()
|
||||
sub = col.split(percentage=0.4)
|
||||
sub.itemL(text="Fade To:")
|
||||
sub.itemR(raym, "fade_to", text="")
|
||||
sub.label(text="Fade To:")
|
||||
sub.prop(raym, "fade_to", text="")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Gloss:")
|
||||
col.itemR(raym, "gloss_factor", text="Amount")
|
||||
col.label(text="Gloss:")
|
||||
col.prop(raym, "gloss_factor", text="Amount")
|
||||
sub = col.column()
|
||||
sub.active = raym.gloss_factor < 1.0
|
||||
sub.itemR(raym, "gloss_threshold", text="Threshold")
|
||||
sub.itemR(raym, "gloss_samples", text="Samples")
|
||||
sub.itemR(raym, "gloss_anisotropic", text="Anisotropic")
|
||||
sub.prop(raym, "gloss_threshold", text="Threshold")
|
||||
sub.prop(raym, "gloss_samples", text="Samples")
|
||||
sub.prop(raym, "gloss_anisotropic", text="Anisotropic")
|
||||
|
||||
|
||||
class MATERIAL_PT_transp(MaterialButtonsPanel):
|
||||
@ -582,7 +582,7 @@ class MATERIAL_PT_transp(MaterialButtonsPanel):
|
||||
def draw_header(self, context):
|
||||
mat = active_node_mat(context.material)
|
||||
|
||||
self.layout.itemR(mat, "transparency", text="")
|
||||
self.layout.prop(mat, "transparency", text="")
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@ -594,46 +594,46 @@ class MATERIAL_PT_transp(MaterialButtonsPanel):
|
||||
row = layout.row()
|
||||
row.active = mat.transparency and (not mat.shadeless)
|
||||
if wide_ui:
|
||||
row.itemR(mat, "transparency_method", expand=True)
|
||||
row.prop(mat, "transparency_method", expand=True)
|
||||
else:
|
||||
row.itemR(mat, "transparency_method", text="")
|
||||
row.prop(mat, "transparency_method", text="")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(mat, "alpha")
|
||||
col.prop(mat, "alpha")
|
||||
row = col.row()
|
||||
row.active = mat.transparency and (not mat.shadeless)
|
||||
row.itemR(mat, "specular_alpha", text="Specular")
|
||||
row.prop(mat, "specular_alpha", text="Specular")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.active = (not mat.shadeless)
|
||||
col.itemR(rayt, "fresnel")
|
||||
col.prop(rayt, "fresnel")
|
||||
sub = col.column()
|
||||
sub.active = rayt.fresnel > 0
|
||||
sub.itemR(rayt, "fresnel_factor", text="Blend")
|
||||
sub.prop(rayt, "fresnel_factor", text="Blend")
|
||||
|
||||
if mat.transparency_method == 'RAYTRACE':
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
split = layout.split()
|
||||
split.active = mat.transparency
|
||||
|
||||
col = split.column()
|
||||
col.itemR(rayt, "ior")
|
||||
col.itemR(rayt, "filter")
|
||||
col.itemR(rayt, "falloff")
|
||||
col.itemR(rayt, "limit")
|
||||
col.itemR(rayt, "depth")
|
||||
col.prop(rayt, "ior")
|
||||
col.prop(rayt, "filter")
|
||||
col.prop(rayt, "falloff")
|
||||
col.prop(rayt, "limit")
|
||||
col.prop(rayt, "depth")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Gloss:")
|
||||
col.itemR(rayt, "gloss_factor", text="Amount")
|
||||
col.label(text="Gloss:")
|
||||
col.prop(rayt, "gloss_factor", text="Amount")
|
||||
sub = col.column()
|
||||
sub.active = rayt.gloss_factor < 1.0
|
||||
sub.itemR(rayt, "gloss_threshold", text="Threshold")
|
||||
sub.itemR(rayt, "gloss_samples", text="Samples")
|
||||
sub.prop(rayt, "gloss_threshold", text="Threshold")
|
||||
sub.prop(rayt, "gloss_samples", text="Samples")
|
||||
|
||||
|
||||
class MATERIAL_PT_halo(MaterialButtonsPanel):
|
||||
@ -655,35 +655,35 @@ class MATERIAL_PT_halo(MaterialButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(mat, "diffuse_color", text="")
|
||||
col.itemR(halo, "size")
|
||||
col.itemR(halo, "hardness")
|
||||
col.itemR(halo, "add")
|
||||
col.itemL(text="Options:")
|
||||
col.itemR(halo, "texture")
|
||||
col.itemR(halo, "vertex_normal")
|
||||
col.itemR(halo, "xalpha")
|
||||
col.itemR(halo, "shaded")
|
||||
col.itemR(halo, "soft")
|
||||
col.prop(mat, "diffuse_color", text="")
|
||||
col.prop(halo, "size")
|
||||
col.prop(halo, "hardness")
|
||||
col.prop(halo, "add")
|
||||
col.label(text="Options:")
|
||||
col.prop(halo, "texture")
|
||||
col.prop(halo, "vertex_normal")
|
||||
col.prop(halo, "xalpha")
|
||||
col.prop(halo, "shaded")
|
||||
col.prop(halo, "soft")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(halo, "ring")
|
||||
col.prop(halo, "ring")
|
||||
sub = col.column()
|
||||
sub.active = halo.ring
|
||||
sub.itemR(halo, "rings")
|
||||
sub.itemR(mat, "mirror_color", text="")
|
||||
col.itemS()
|
||||
col.itemR(halo, "lines")
|
||||
sub.prop(halo, "rings")
|
||||
sub.prop(mat, "mirror_color", text="")
|
||||
col.separator()
|
||||
col.prop(halo, "lines")
|
||||
sub = col.column()
|
||||
sub.active = halo.lines
|
||||
sub.itemR(halo, "line_number", text="Lines")
|
||||
sub.itemR(mat, "specular_color", text="")
|
||||
col.itemS()
|
||||
col.itemR(halo, "star")
|
||||
sub.prop(halo, "line_number", text="Lines")
|
||||
sub.prop(mat, "specular_color", text="")
|
||||
col.separator()
|
||||
col.prop(halo, "star")
|
||||
sub = col.column()
|
||||
sub.active = halo.star
|
||||
sub.itemR(halo, "star_tips")
|
||||
sub.prop(halo, "star_tips")
|
||||
|
||||
|
||||
class MATERIAL_PT_flare(MaterialButtonsPanel):
|
||||
@ -698,7 +698,7 @@ class MATERIAL_PT_flare(MaterialButtonsPanel):
|
||||
def draw_header(self, context):
|
||||
halo = context.material.halo
|
||||
|
||||
self.layout.itemR(halo, "flare_mode", text="")
|
||||
self.layout.prop(halo, "flare_mode", text="")
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@ -712,13 +712,13 @@ class MATERIAL_PT_flare(MaterialButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(halo, "flare_size", text="Size")
|
||||
col.itemR(halo, "flare_boost", text="Boost")
|
||||
col.itemR(halo, "flare_seed", text="Seed")
|
||||
col.prop(halo, "flare_size", text="Size")
|
||||
col.prop(halo, "flare_boost", text="Boost")
|
||||
col.prop(halo, "flare_seed", text="Seed")
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(halo, "flares_sub", text="Subflares")
|
||||
col.itemR(halo, "flare_subsize", text="Subsize")
|
||||
col.prop(halo, "flares_sub", text="Subflares")
|
||||
col.prop(halo, "flare_subsize", text="Subsize")
|
||||
|
||||
bpy.types.register(MATERIAL_PT_context_material)
|
||||
bpy.types.register(MATERIAL_PT_preview)
|
||||
@ -760,11 +760,11 @@ class MATERIAL_PT_volume_density(VolumeButtonsPanel):
|
||||
|
||||
split = layout.split()
|
||||
col = split.column()
|
||||
col.itemR(vol, "density")
|
||||
col.prop(vol, "density")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(vol, "density_scale")
|
||||
col.prop(vol, "density_scale")
|
||||
|
||||
|
||||
class MATERIAL_PT_volume_shading(VolumeButtonsPanel):
|
||||
@ -781,18 +781,18 @@ class MATERIAL_PT_volume_shading(VolumeButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(vol, "scattering")
|
||||
col.itemR(vol, "asymmetry")
|
||||
col.itemR(vol, "transmission_color")
|
||||
col.prop(vol, "scattering")
|
||||
col.prop(vol, "asymmetry")
|
||||
col.prop(vol, "transmission_color")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
sub = col.column(align=True)
|
||||
sub.itemR(vol, "emission")
|
||||
sub.itemR(vol, "emission_color", text="")
|
||||
sub.prop(vol, "emission")
|
||||
sub.prop(vol, "emission_color", text="")
|
||||
sub = col.column(align=True)
|
||||
sub.itemR(vol, "reflection")
|
||||
sub.itemR(vol, "reflection_color", text="")
|
||||
sub.prop(vol, "reflection")
|
||||
sub.prop(vol, "reflection_color", text="")
|
||||
|
||||
|
||||
class MATERIAL_PT_volume_lighting(VolumeButtonsPanel):
|
||||
@ -809,28 +809,28 @@ class MATERIAL_PT_volume_lighting(VolumeButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(vol, "lighting_mode", text="")
|
||||
col.prop(vol, "lighting_mode", text="")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
|
||||
if vol.lighting_mode == 'SHADED':
|
||||
col.itemR(vol, "external_shadows")
|
||||
col.itemR(vol, "light_cache")
|
||||
col.prop(vol, "external_shadows")
|
||||
col.prop(vol, "light_cache")
|
||||
sub = col.column()
|
||||
sub.active = vol.light_cache
|
||||
sub.itemR(vol, "cache_resolution")
|
||||
sub.prop(vol, "cache_resolution")
|
||||
elif vol.lighting_mode in ('MULTIPLE_SCATTERING', 'SHADED_PLUS_MULTIPLE_SCATTERING'):
|
||||
sub = col.column()
|
||||
sub.enabled = True
|
||||
sub.active = False
|
||||
sub.itemR(vol, "light_cache")
|
||||
col.itemR(vol, "cache_resolution")
|
||||
sub.prop(vol, "light_cache")
|
||||
col.prop(vol, "cache_resolution")
|
||||
|
||||
sub = col.column(align=True)
|
||||
sub.itemR(vol, "ms_diffusion")
|
||||
sub.itemR(vol, "ms_spread")
|
||||
sub.itemR(vol, "ms_intensity")
|
||||
sub.prop(vol, "ms_diffusion")
|
||||
sub.prop(vol, "ms_spread")
|
||||
sub.prop(vol, "ms_intensity")
|
||||
|
||||
|
||||
class MATERIAL_PT_volume_transp(VolumeButtonsPanel):
|
||||
@ -844,9 +844,9 @@ class MATERIAL_PT_volume_transp(VolumeButtonsPanel):
|
||||
wide_ui = context.region.width > narrowui
|
||||
|
||||
if wide_ui:
|
||||
layout.itemR(mat, "transparency_method", expand=True)
|
||||
layout.prop(mat, "transparency_method", expand=True)
|
||||
else:
|
||||
layout.itemR(mat, "transparency_method", text="")
|
||||
layout.prop(mat, "transparency_method", text="")
|
||||
|
||||
|
||||
class MATERIAL_PT_volume_integration(VolumeButtonsPanel):
|
||||
@ -863,15 +863,15 @@ class MATERIAL_PT_volume_integration(VolumeButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Step Calculation:")
|
||||
col.itemR(vol, "step_calculation", text="")
|
||||
col.label(text="Step Calculation:")
|
||||
col.prop(vol, "step_calculation", text="")
|
||||
col = col.column(align=True)
|
||||
col.itemR(vol, "step_size")
|
||||
col.prop(vol, "step_size")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL()
|
||||
col.itemR(vol, "depth_cutoff")
|
||||
col.label()
|
||||
col.prop(vol, "depth_cutoff")
|
||||
|
||||
bpy.types.register(MATERIAL_MT_sss_presets)
|
||||
|
||||
|
@ -38,8 +38,8 @@ class OBJECT_PT_context_object(ObjectButtonsPanel):
|
||||
ob = context.object
|
||||
|
||||
row = layout.row()
|
||||
row.itemL(text="", icon='ICON_OBJECT_DATA')
|
||||
row.itemR(ob, "name", text="")
|
||||
row.label(text="", icon='ICON_OBJECT_DATA')
|
||||
row.prop(ob, "name", text="")
|
||||
|
||||
|
||||
class OBJECT_PT_transform(ObjectButtonsPanel):
|
||||
@ -54,32 +54,32 @@ class OBJECT_PT_transform(ObjectButtonsPanel):
|
||||
if wide_ui:
|
||||
row = layout.row()
|
||||
|
||||
row.column().itemR(ob, "location")
|
||||
row.column().prop(ob, "location")
|
||||
if ob.rotation_mode == 'QUATERNION':
|
||||
row.column().itemR(ob, "rotation_quaternion", text="Rotation")
|
||||
row.column().prop(ob, "rotation_quaternion", text="Rotation")
|
||||
elif ob.rotation_mode == 'AXIS_ANGLE':
|
||||
#row.column().itemL(text="Rotation")
|
||||
#row.column().itemR(pchan, "rotation_angle", text="Angle")
|
||||
#row.column().itemR(pchan, "rotation_axis", text="Axis")
|
||||
row.column().itemR(ob, "rotation_axis_angle", text="Rotation")
|
||||
#row.column().label(text="Rotation")
|
||||
#row.column().prop(pchan, "rotation_angle", text="Angle")
|
||||
#row.column().prop(pchan, "rotation_axis", text="Axis")
|
||||
row.column().prop(ob, "rotation_axis_angle", text="Rotation")
|
||||
else:
|
||||
row.column().itemR(ob, "rotation_euler", text="Rotation")
|
||||
row.column().prop(ob, "rotation_euler", text="Rotation")
|
||||
|
||||
row.column().itemR(ob, "scale")
|
||||
row.column().prop(ob, "scale")
|
||||
|
||||
layout.itemR(ob, "rotation_mode")
|
||||
layout.prop(ob, "rotation_mode")
|
||||
else:
|
||||
col = layout.column()
|
||||
col.itemR(ob, "location")
|
||||
col.itemL(text="Rotation:")
|
||||
col.itemR(ob, "rotation_mode", text="")
|
||||
col.prop(ob, "location")
|
||||
col.label(text="Rotation:")
|
||||
col.prop(ob, "rotation_mode", text="")
|
||||
if ob.rotation_mode == 'QUATERNION':
|
||||
col.itemR(ob, "rotation_quaternion", text="")
|
||||
col.prop(ob, "rotation_quaternion", text="")
|
||||
elif ob.rotation_mode == 'AXIS_ANGLE':
|
||||
col.itemR(ob, "rotation_axis_angle", text="")
|
||||
col.prop(ob, "rotation_axis_angle", text="")
|
||||
else:
|
||||
col.itemR(ob, "rotation_euler", text="")
|
||||
col.itemR(ob, "scale")
|
||||
col.prop(ob, "rotation_euler", text="")
|
||||
col.prop(ob, "scale")
|
||||
|
||||
|
||||
class OBJECT_PT_transform_locks(ObjectButtonsPanel):
|
||||
@ -95,18 +95,18 @@ class OBJECT_PT_transform_locks(ObjectButtonsPanel):
|
||||
row = layout.row()
|
||||
|
||||
col = row.column()
|
||||
col.itemR(ob, "lock_location", text="Location")
|
||||
col.prop(ob, "lock_location", text="Location")
|
||||
|
||||
col = row.column()
|
||||
if ob.rotation_mode in ('QUATERNION', 'AXIS_ANGLE'):
|
||||
col.itemR(ob, "lock_rotations_4d", text="Rotation")
|
||||
col.prop(ob, "lock_rotations_4d", text="Rotation")
|
||||
if ob.lock_rotations_4d:
|
||||
col.itemR(ob, "lock_rotation_w", text="W")
|
||||
col.itemR(ob, "lock_rotation", text="")
|
||||
col.prop(ob, "lock_rotation_w", text="W")
|
||||
col.prop(ob, "lock_rotation", text="")
|
||||
else:
|
||||
col.itemR(ob, "lock_rotation", text="Rotation")
|
||||
col.prop(ob, "lock_rotation", text="Rotation")
|
||||
|
||||
row.column().itemR(ob, "lock_scale", text="Scale")
|
||||
row.column().prop(ob, "lock_scale", text="Scale")
|
||||
|
||||
|
||||
class OBJECT_PT_relations(ObjectButtonsPanel):
|
||||
@ -121,21 +121,21 @@ class OBJECT_PT_relations(ObjectButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(ob, "layers")
|
||||
col.itemS()
|
||||
col.itemR(ob, "pass_index")
|
||||
col.prop(ob, "layers")
|
||||
col.separator()
|
||||
col.prop(ob, "pass_index")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Parent:")
|
||||
col.itemR(ob, "parent", text="")
|
||||
col.label(text="Parent:")
|
||||
col.prop(ob, "parent", text="")
|
||||
|
||||
sub = col.column()
|
||||
sub.itemR(ob, "parent_type", text="")
|
||||
sub.prop(ob, "parent_type", text="")
|
||||
parent = ob.parent
|
||||
if parent and ob.parent_type == 'BONE' and parent.type == 'ARMATURE':
|
||||
sub.item_pointerR(ob, "parent_bone", parent.data, "bones", text="")
|
||||
sub.active = parent != None
|
||||
sub.prop_object(ob, "parent_bone", parent.data, "bones", text="")
|
||||
sub.active = (parent is not None)
|
||||
|
||||
|
||||
class OBJECT_PT_groups(ObjectButtonsPanel):
|
||||
@ -149,10 +149,10 @@ class OBJECT_PT_groups(ObjectButtonsPanel):
|
||||
|
||||
if wide_ui:
|
||||
split = layout.split()
|
||||
split.item_menu_enumO("object.group_add", "group", text="Add to Group")
|
||||
split.itemL()
|
||||
split.operator_menu_enum("object.group_add", "group", text="Add to Group")
|
||||
split.label()
|
||||
else:
|
||||
layout.item_menu_enumO("object.group_add", "group", text="Add to Group")
|
||||
layout.operator_menu_enum("object.group_add", "group", text="Add to Group")
|
||||
|
||||
for group in bpy.data.groups:
|
||||
if ob.name in group.objects:
|
||||
@ -161,17 +161,17 @@ class OBJECT_PT_groups(ObjectButtonsPanel):
|
||||
col.set_context_pointer("group", group)
|
||||
|
||||
row = col.box().row()
|
||||
row.itemR(group, "name", text="")
|
||||
row.itemO("object.group_remove", text="", icon='VICON_X')
|
||||
row.prop(group, "name", text="")
|
||||
row.operator("object.group_remove", text="", icon='ICON_X')
|
||||
|
||||
split = col.box().split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(group, "layer", text="Dupli")
|
||||
col.prop(group, "layer", text="Dupli")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(group, "dupli_offset", text="")
|
||||
col.prop(group, "dupli_offset", text="")
|
||||
|
||||
|
||||
class OBJECT_PT_display(ObjectButtonsPanel):
|
||||
@ -185,28 +185,28 @@ class OBJECT_PT_display(ObjectButtonsPanel):
|
||||
|
||||
split = layout.split()
|
||||
col = split.column()
|
||||
col.itemR(ob, "max_draw_type", text="Type")
|
||||
col.prop(ob, "max_draw_type", text="Type")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
row = col.row()
|
||||
row.itemR(ob, "draw_bounds", text="Bounds")
|
||||
row.prop(ob, "draw_bounds", text="Bounds")
|
||||
sub = row.row()
|
||||
sub.active = ob.draw_bounds
|
||||
sub.itemR(ob, "draw_bounds_type", text="")
|
||||
sub.prop(ob, "draw_bounds_type", text="")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(ob, "draw_name", text="Name")
|
||||
col.itemR(ob, "draw_axis", text="Axis")
|
||||
col.itemR(ob, "draw_wire", text="Wire")
|
||||
col.prop(ob, "draw_name", text="Name")
|
||||
col.prop(ob, "draw_axis", text="Axis")
|
||||
col.prop(ob, "draw_wire", text="Wire")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(ob, "draw_texture_space", text="Texture Space")
|
||||
col.itemR(ob, "x_ray", text="X-Ray")
|
||||
col.itemR(ob, "draw_transparent", text="Transparency")
|
||||
col.prop(ob, "draw_texture_space", text="Texture Space")
|
||||
col.prop(ob, "x_ray", text="X-Ray")
|
||||
col.prop(ob, "draw_transparent", text="Transparency")
|
||||
|
||||
|
||||
class OBJECT_PT_duplication(ObjectButtonsPanel):
|
||||
@ -219,42 +219,42 @@ class OBJECT_PT_duplication(ObjectButtonsPanel):
|
||||
wide_ui = context.region.width > narrowui
|
||||
|
||||
if wide_ui:
|
||||
layout.itemR(ob, "dupli_type", expand=True)
|
||||
layout.prop(ob, "dupli_type", expand=True)
|
||||
else:
|
||||
layout.itemR(ob, "dupli_type", text="")
|
||||
layout.prop(ob, "dupli_type", text="")
|
||||
|
||||
if ob.dupli_type == 'FRAMES':
|
||||
split = layout.split()
|
||||
|
||||
col = split.column(align=True)
|
||||
col.itemR(ob, "dupli_frames_start", text="Start")
|
||||
col.itemR(ob, "dupli_frames_end", text="End")
|
||||
col.prop(ob, "dupli_frames_start", text="Start")
|
||||
col.prop(ob, "dupli_frames_end", text="End")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column(align=True)
|
||||
col.itemR(ob, "dupli_frames_on", text="On")
|
||||
col.itemR(ob, "dupli_frames_off", text="Off")
|
||||
col.prop(ob, "dupli_frames_on", text="On")
|
||||
col.prop(ob, "dupli_frames_off", text="Off")
|
||||
|
||||
layout.itemR(ob, "dupli_frames_no_speed", text="No Speed")
|
||||
layout.prop(ob, "dupli_frames_no_speed", text="No Speed")
|
||||
|
||||
elif ob.dupli_type == 'VERTS':
|
||||
layout.itemR(ob, "dupli_verts_rotation", text="Rotation")
|
||||
layout.prop(ob, "dupli_verts_rotation", text="Rotation")
|
||||
|
||||
elif ob.dupli_type == 'FACES':
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(ob, "dupli_faces_scale", text="Scale")
|
||||
col.prop(ob, "dupli_faces_scale", text="Scale")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(ob, "dupli_faces_inherit_scale", text="Inherit Scale")
|
||||
col.prop(ob, "dupli_faces_inherit_scale", text="Inherit Scale")
|
||||
|
||||
elif ob.dupli_type == 'GROUP':
|
||||
if wide_ui:
|
||||
layout.itemR(ob, "dupli_group", text="Group")
|
||||
layout.prop(ob, "dupli_group", text="Group")
|
||||
else:
|
||||
layout.itemR(ob, "dupli_group", text="")
|
||||
layout.prop(ob, "dupli_group", text="")
|
||||
|
||||
|
||||
class OBJECT_PT_animation(ObjectButtonsPanel):
|
||||
@ -269,28 +269,28 @@ class OBJECT_PT_animation(ObjectButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Time Offset:")
|
||||
col.itemR(ob, "time_offset_edit", text="Edit")
|
||||
col.label(text="Time Offset:")
|
||||
col.prop(ob, "time_offset_edit", text="Edit")
|
||||
row = col.row()
|
||||
row.itemR(ob, "time_offset_particle", text="Particle")
|
||||
row.prop(ob, "time_offset_particle", text="Particle")
|
||||
row.active = len(ob.particle_systems) != 0
|
||||
row = col.row()
|
||||
row.itemR(ob, "time_offset_parent", text="Parent")
|
||||
row.active = ob.parent != None
|
||||
row.prop(ob, "time_offset_parent", text="Parent")
|
||||
row.active = (ob.parent is not None)
|
||||
row = col.row()
|
||||
row.itemR(ob, "slow_parent")
|
||||
row.active = ob.parent != None
|
||||
col.itemR(ob, "time_offset", text="Offset")
|
||||
row.prop(ob, "slow_parent")
|
||||
row.active = (ob.parent is not None)
|
||||
col.prop(ob, "time_offset", text="Offset")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Track:")
|
||||
col.itemR(ob, "track", text="")
|
||||
col.itemR(ob, "track_axis", text="Axis")
|
||||
col.itemR(ob, "up_axis", text="Up Axis")
|
||||
col.label(text="Track:")
|
||||
col.prop(ob, "track", text="")
|
||||
col.prop(ob, "track_axis", text="Axis")
|
||||
col.prop(ob, "up_axis", text="Up Axis")
|
||||
row = col.row()
|
||||
row.itemR(ob, "track_override_parent", text="Override Parent")
|
||||
row.active = ob.parent != None
|
||||
row.prop(ob, "track_override_parent", text="Override Parent")
|
||||
row.active = (ob.parent is not None)
|
||||
|
||||
|
||||
class OBJECT_PT_properties(ObjectButtonsPanel):
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -27,8 +27,8 @@ from properties_physics_common import effector_weights_ui
|
||||
|
||||
|
||||
def cloth_panel_enabled(md):
|
||||
return md.point_cache.baked == False
|
||||
|
||||
return md.point_cache.baked is False
|
||||
|
||||
|
||||
class CLOTH_MT_presets(bpy.types.Menu):
|
||||
'''
|
||||
@ -67,17 +67,19 @@ class PHYSICS_PT_cloth(PhysicButtonsPanel):
|
||||
if md:
|
||||
# remove modifier + settings
|
||||
split.set_context_pointer("modifier", md)
|
||||
split.itemO("object.modifier_remove", text="Remove")
|
||||
split.operator("object.modifier_remove", text="Remove")
|
||||
|
||||
row = split.row(align=True)
|
||||
row.itemR(md, "render", text="")
|
||||
row.itemR(md, "realtime", text="")
|
||||
row.prop(md, "render", text="")
|
||||
row.prop(md, "realtime", text="")
|
||||
else:
|
||||
# add modifier
|
||||
split.item_enumO("object.modifier_add", "type", 'CLOTH', text="Add")
|
||||
split.operator("object.modifier_add", text="Add").type = 'CLOTH'
|
||||
if wide_ui:
|
||||
split.column()
|
||||
|
||||
split.operator_context = 'INVOKE_DEFAULT'
|
||||
|
||||
if md:
|
||||
cloth = md.settings
|
||||
|
||||
@ -87,44 +89,44 @@ class PHYSICS_PT_cloth(PhysicButtonsPanel):
|
||||
|
||||
col = split.column()
|
||||
|
||||
col.itemL(text="Presets:")
|
||||
col.label(text="Presets:")
|
||||
sub = col.row(align=True).split(percentage=0.75)
|
||||
sub.itemM("CLOTH_MT_presets", text="Presets")
|
||||
sub.itemO("cloth.preset_add", text="Add")
|
||||
sub.menu("CLOTH_MT_presets", text="Presets")
|
||||
sub.operator("cloth.preset_add", text="Add")
|
||||
|
||||
col.itemL(text="Quality:")
|
||||
col.itemR(cloth, "quality", text="Steps", slider=True)
|
||||
col.label(text="Quality:")
|
||||
col.prop(cloth, "quality", text="Steps", slider=True)
|
||||
|
||||
col.itemL(text="Material:")
|
||||
col.itemR(cloth, "mass")
|
||||
col.itemR(cloth, "structural_stiffness", text="Structural")
|
||||
col.itemR(cloth, "bending_stiffness", text="Bending")
|
||||
col.label(text="Material:")
|
||||
col.prop(cloth, "mass")
|
||||
col.prop(cloth, "structural_stiffness", text="Structural")
|
||||
col.prop(cloth, "bending_stiffness", text="Bending")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
|
||||
col.itemL(text="Damping:")
|
||||
col.itemR(cloth, "spring_damping", text="Spring")
|
||||
col.itemR(cloth, "air_damping", text="Air")
|
||||
col.label(text="Damping:")
|
||||
col.prop(cloth, "spring_damping", text="Spring")
|
||||
col.prop(cloth, "air_damping", text="Air")
|
||||
|
||||
col.itemR(cloth, "pin_cloth", text="Pinning")
|
||||
col.prop(cloth, "pin_cloth", text="Pinning")
|
||||
sub = col.column()
|
||||
sub.active = cloth.pin_cloth
|
||||
sub.item_pointerR(cloth, "mass_vertex_group", ob, "vertex_groups", text="")
|
||||
sub.itemR(cloth, "pin_stiffness", text="Stiffness")
|
||||
sub.prop_object(cloth, "mass_vertex_group", ob, "vertex_groups", text="")
|
||||
sub.prop(cloth, "pin_stiffness", text="Stiffness")
|
||||
|
||||
col.itemL(text="Pre roll:")
|
||||
col.itemR(cloth, "pre_roll", text="Frame")
|
||||
col.label(text="Pre roll:")
|
||||
col.prop(cloth, "pre_roll", text="Frame")
|
||||
|
||||
# Disabled for now
|
||||
"""
|
||||
if cloth.mass_vertex_group:
|
||||
layout.itemL(text="Goal:")
|
||||
layout.label(text="Goal:")
|
||||
|
||||
col = layout.column_flow()
|
||||
col.itemR(cloth, "goal_default", text="Default")
|
||||
col.itemR(cloth, "goal_spring", text="Stiffness")
|
||||
col.itemR(cloth, "goal_friction", text="Friction")
|
||||
col.prop(cloth, "goal_default", text="Default")
|
||||
col.prop(cloth, "goal_spring", text="Stiffness")
|
||||
col.prop(cloth, "goal_friction", text="Friction")
|
||||
"""
|
||||
|
||||
|
||||
@ -151,7 +153,7 @@ class PHYSICS_PT_cloth_collision(PhysicButtonsPanel):
|
||||
cloth = context.cloth.collision_settings
|
||||
|
||||
self.layout.active = cloth_panel_enabled(context.cloth)
|
||||
self.layout.itemR(cloth, "enable_collision", text="")
|
||||
self.layout.prop(cloth, "enable_collision", text="")
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@ -165,17 +167,17 @@ class PHYSICS_PT_cloth_collision(PhysicButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(cloth, "collision_quality", slider=True, text="Quality")
|
||||
col.itemR(cloth, "min_distance", slider=True, text="Distance")
|
||||
col.itemR(cloth, "friction")
|
||||
col.prop(cloth, "collision_quality", slider=True, text="Quality")
|
||||
col.prop(cloth, "min_distance", slider=True, text="Distance")
|
||||
col.prop(cloth, "friction")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(cloth, "enable_self_collision", text="Self Collision")
|
||||
col.prop(cloth, "enable_self_collision", text="Self Collision")
|
||||
sub = col.column()
|
||||
sub.active = cloth.enable_self_collision
|
||||
sub.itemR(cloth, "self_collision_quality", slider=True, text="Quality")
|
||||
sub.itemR(cloth, "self_min_distance", slider=True, text="Distance")
|
||||
sub.prop(cloth, "self_collision_quality", slider=True, text="Quality")
|
||||
sub.prop(cloth, "self_min_distance", slider=True, text="Distance")
|
||||
|
||||
|
||||
class PHYSICS_PT_cloth_stiffness(PhysicButtonsPanel):
|
||||
@ -189,7 +191,7 @@ class PHYSICS_PT_cloth_stiffness(PhysicButtonsPanel):
|
||||
cloth = context.cloth.settings
|
||||
|
||||
self.layout.active = cloth_panel_enabled(context.cloth)
|
||||
self.layout.itemR(cloth, "stiffness_scaling", text="")
|
||||
self.layout.prop(cloth, "stiffness_scaling", text="")
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@ -204,15 +206,15 @@ class PHYSICS_PT_cloth_stiffness(PhysicButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Structural Stiffness:")
|
||||
col.item_pointerR(cloth, "structural_stiffness_vertex_group", ob, "vertex_groups", text="")
|
||||
col.itemR(cloth, "structural_stiffness_max", text="Max")
|
||||
col.label(text="Structural Stiffness:")
|
||||
col.prop_object(cloth, "structural_stiffness_vertex_group", ob, "vertex_groups", text="")
|
||||
col.prop(cloth, "structural_stiffness_max", text="Max")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Bending Stiffness:")
|
||||
col.item_pointerR(cloth, "bending_vertex_group", ob, "vertex_groups", text="")
|
||||
col.itemR(cloth, "bending_stiffness_max", text="Max")
|
||||
col.label(text="Bending Stiffness:")
|
||||
col.prop_object(cloth, "bending_vertex_group", ob, "vertex_groups", text="")
|
||||
col.prop(cloth, "bending_stiffness_max", text="Max")
|
||||
|
||||
|
||||
class PHYSICS_PT_cloth_field_weights(PhysicButtonsPanel):
|
||||
@ -225,7 +227,7 @@ class PHYSICS_PT_cloth_field_weights(PhysicButtonsPanel):
|
||||
def draw(self, context):
|
||||
cloth = context.cloth.settings
|
||||
effector_weights_ui(self, context, cloth.effector_weights)
|
||||
|
||||
|
||||
bpy.types.register(CLOTH_MT_presets)
|
||||
|
||||
bpy.types.register(PHYSICS_PT_cloth)
|
||||
|
@ -30,64 +30,64 @@ def point_cache_ui(self, context, cache, enabled, particles, smoke):
|
||||
row = layout.row()
|
||||
row.template_list(cache, "point_cache_list", cache, "active_point_cache_index", rows=2)
|
||||
col = row.column(align=True)
|
||||
col.itemO("ptcache.add_new", icon='ICON_ZOOMIN', text="")
|
||||
col.itemO("ptcache.remove", icon='ICON_ZOOMOUT', text="")
|
||||
col.operator("ptcache.add", icon='ICON_ZOOMIN', text="")
|
||||
col.operator("ptcache.remove", icon='ICON_ZOOMOUT', text="")
|
||||
|
||||
row = layout.row()
|
||||
row.itemL(text="File Name:")
|
||||
row.label(text="File Name:")
|
||||
if particles:
|
||||
row.itemR(cache, "external")
|
||||
row.prop(cache, "external")
|
||||
|
||||
if cache.external:
|
||||
split = layout.split(percentage=0.80)
|
||||
split.itemR(cache, "name", text="")
|
||||
split.itemR(cache, "index", text="")
|
||||
split.prop(cache, "name", text="")
|
||||
split.prop(cache, "index", text="")
|
||||
|
||||
layout.itemL(text="File Path:")
|
||||
layout.itemR(cache, "filepath", text="")
|
||||
layout.label(text="File Path:")
|
||||
layout.prop(cache, "filepath", text="")
|
||||
|
||||
layout.itemL(text=cache.info)
|
||||
layout.label(text=cache.info)
|
||||
else:
|
||||
layout.itemR(cache, "name", text="")
|
||||
layout.prop(cache, "name", text="")
|
||||
|
||||
if not particles:
|
||||
row = layout.row()
|
||||
row.enabled = enabled
|
||||
row.itemR(cache, "start_frame")
|
||||
row.itemR(cache, "end_frame")
|
||||
row.prop(cache, "start_frame")
|
||||
row.prop(cache, "end_frame")
|
||||
|
||||
row = layout.row()
|
||||
|
||||
if cache.baked == True:
|
||||
row.itemO("ptcache.free_bake", text="Free Bake")
|
||||
row.operator("ptcache.free_bake", text="Free Bake")
|
||||
else:
|
||||
row.item_booleanO("ptcache.bake", "bake", True, text="Bake")
|
||||
row.operator("ptcache.bake", text="Bake").bake = True
|
||||
|
||||
sub = row.row()
|
||||
sub.enabled = (cache.frames_skipped or cache.outdated) and enabled
|
||||
sub.itemO("ptcache.bake", "bake", False, text="Calculate to Current Frame")
|
||||
sub.operator("ptcache.bake", "bake", False, text="Calculate to Current Frame")
|
||||
|
||||
row = layout.row()
|
||||
row.enabled = enabled
|
||||
row.itemO("ptcache.bake_from_cache", text="Current Cache to Bake")
|
||||
row.operator("ptcache.bake_from_cache", text="Current Cache to Bake")
|
||||
if not smoke:
|
||||
row.itemR(cache, "step")
|
||||
row.prop(cache, "step")
|
||||
|
||||
if not smoke:
|
||||
row = layout.row()
|
||||
sub = row.row()
|
||||
sub.enabled = enabled
|
||||
sub.itemR(cache, "quick_cache")
|
||||
row.itemR(cache, "disk_cache")
|
||||
sub.prop(cache, "quick_cache")
|
||||
row.prop(cache, "disk_cache")
|
||||
|
||||
layout.itemL(text=cache.info)
|
||||
layout.label(text=cache.info)
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
row = layout.row()
|
||||
row.item_booleanO("ptcache.bake_all", "bake", True, text="Bake All Dynamics")
|
||||
row.itemO("ptcache.free_bake_all", text="Free All Bakes")
|
||||
layout.itemO("ptcache.bake_all", "bake", False, text="Update All Dynamics to current frame")
|
||||
row.operator("ptcache.bake_all", text="Bake All Dynamics").bake = True
|
||||
row.operator("ptcache.free_bake_all", text="Free All Bakes")
|
||||
layout.operator("ptcache.bake_all", "bake", False, text="Update All Dynamics to current frame")
|
||||
|
||||
|
||||
def effector_weights_ui(self, context, weights):
|
||||
@ -95,37 +95,37 @@ def effector_weights_ui(self, context, weights):
|
||||
|
||||
wide_ui = context.region.width > narrowui
|
||||
|
||||
layout.itemR(weights, "group")
|
||||
layout.prop(weights, "group")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(weights, "gravity", slider=True)
|
||||
col.prop(weights, "gravity", slider=True)
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(weights, "all", slider=True)
|
||||
col.prop(weights, "all", slider=True)
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(weights, "force", slider=True)
|
||||
col.itemR(weights, "vortex", slider=True)
|
||||
col.itemR(weights, "magnetic", slider=True)
|
||||
col.itemR(weights, "wind", slider=True)
|
||||
col.itemR(weights, "curveguide", slider=True)
|
||||
col.itemR(weights, "texture", slider=True)
|
||||
col.prop(weights, "force", slider=True)
|
||||
col.prop(weights, "vortex", slider=True)
|
||||
col.prop(weights, "magnetic", slider=True)
|
||||
col.prop(weights, "wind", slider=True)
|
||||
col.prop(weights, "curveguide", slider=True)
|
||||
col.prop(weights, "texture", slider=True)
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(weights, "harmonic", slider=True)
|
||||
col.itemR(weights, "charge", slider=True)
|
||||
col.itemR(weights, "lennardjones", slider=True)
|
||||
col.itemR(weights, "turbulence", slider=True)
|
||||
col.itemR(weights, "drag", slider=True)
|
||||
col.itemR(weights, "boid", slider=True)
|
||||
col.prop(weights, "harmonic", slider=True)
|
||||
col.prop(weights, "charge", slider=True)
|
||||
col.prop(weights, "lennardjones", slider=True)
|
||||
col.prop(weights, "turbulence", slider=True)
|
||||
col.prop(weights, "drag", slider=True)
|
||||
col.prop(weights, "boid", slider=True)
|
||||
|
||||
|
||||
def basic_force_field_settings_ui(self, context, field):
|
||||
@ -141,40 +141,40 @@ def basic_force_field_settings_ui(self, context, field):
|
||||
col = split.column()
|
||||
|
||||
if field.type == 'DRAG':
|
||||
col.itemR(field, "linear_drag", text="Linear")
|
||||
col.prop(field, "linear_drag", text="Linear")
|
||||
else:
|
||||
col.itemR(field, "strength")
|
||||
col.prop(field, "strength")
|
||||
|
||||
if field.type == 'TURBULENCE':
|
||||
col.itemR(field, "size")
|
||||
col.itemR(field, "flow")
|
||||
col.prop(field, "size")
|
||||
col.prop(field, "flow")
|
||||
elif field.type == 'HARMONIC':
|
||||
col.itemR(field, "harmonic_damping", text="Damping")
|
||||
col.prop(field, "harmonic_damping", text="Damping")
|
||||
elif field.type == 'VORTEX' and field.shape != 'POINT':
|
||||
col.itemR(field, "inflow")
|
||||
col.prop(field, "inflow")
|
||||
elif field.type == 'DRAG':
|
||||
col.itemR(field, "quadratic_drag", text="Quadratic")
|
||||
col.prop(field, "quadratic_drag", text="Quadratic")
|
||||
else:
|
||||
col.itemR(field, "flow")
|
||||
col.prop(field, "flow")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(field, "noise")
|
||||
col.itemR(field, "seed")
|
||||
col.prop(field, "noise")
|
||||
col.prop(field, "seed")
|
||||
if field.type == 'TURBULENCE':
|
||||
col.itemR(field, "global_coordinates", text="Global")
|
||||
col.prop(field, "global_coordinates", text="Global")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Effect point:")
|
||||
col.itemR(field, "do_location")
|
||||
col.itemR(field, "do_rotation")
|
||||
col.label(text="Effect point:")
|
||||
col.prop(field, "do_location")
|
||||
col.prop(field, "do_rotation")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Collision:")
|
||||
col.itemR(field, "do_absorption")
|
||||
col.label(text="Collision:")
|
||||
col.prop(field, "do_absorption")
|
||||
|
||||
|
||||
def basic_force_field_falloff_ui(self, context, field):
|
||||
@ -192,18 +192,18 @@ def basic_force_field_falloff_ui(self, context, field):
|
||||
return
|
||||
|
||||
col = split.column()
|
||||
col.itemR(field, "z_direction", text="")
|
||||
col.itemR(field, "use_min_distance", text="Use Minimum")
|
||||
col.itemR(field, "use_max_distance", text="Use Maximum")
|
||||
col.prop(field, "z_direction", text="")
|
||||
col.prop(field, "use_min_distance", text="Use Minimum")
|
||||
col.prop(field, "use_max_distance", text="Use Maximum")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(field, "falloff_power", text="Power")
|
||||
col.prop(field, "falloff_power", text="Power")
|
||||
|
||||
sub = col.column()
|
||||
sub.active = field.use_min_distance
|
||||
sub.itemR(field, "minimum_distance", text="Distance")
|
||||
sub.prop(field, "minimum_distance", text="Distance")
|
||||
|
||||
sub = col.column()
|
||||
sub.active = field.use_max_distance
|
||||
sub.itemR(field, "maximum_distance", text="Distance")
|
||||
sub.prop(field, "maximum_distance", text="Distance")
|
||||
|
@ -48,19 +48,19 @@ class PHYSICS_PT_field(PhysicButtonsPanel):
|
||||
|
||||
if wide_ui:
|
||||
split = layout.split(percentage=0.2)
|
||||
split.itemL(text="Type:")
|
||||
split.label(text="Type:")
|
||||
else:
|
||||
split = layout.split()
|
||||
|
||||
split.itemR(field, "type", text="")
|
||||
split.prop(field, "type", text="")
|
||||
|
||||
if field.type not in ('NONE', 'GUIDE', 'TEXTURE'):
|
||||
if wide_ui:
|
||||
split = layout.split(percentage=0.2)
|
||||
split.itemL(text="Shape:")
|
||||
split.label(text="Shape:")
|
||||
else:
|
||||
split = layout.split()
|
||||
split.itemR(field, "shape", text="")
|
||||
split.prop(field, "shape", text="")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
@ -68,104 +68,104 @@ class PHYSICS_PT_field(PhysicButtonsPanel):
|
||||
return # nothing to draw
|
||||
elif field.type == 'GUIDE':
|
||||
col = split.column()
|
||||
col.itemR(field, "guide_minimum")
|
||||
col.itemR(field, "guide_free")
|
||||
col.itemR(field, "falloff_power")
|
||||
col.itemR(field, "guide_path_add")
|
||||
col.prop(field, "guide_minimum")
|
||||
col.prop(field, "guide_free")
|
||||
col.prop(field, "falloff_power")
|
||||
col.prop(field, "guide_path_add")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Clumping:")
|
||||
col.itemR(field, "guide_clump_amount")
|
||||
col.itemR(field, "guide_clump_shape")
|
||||
col.label(text="Clumping:")
|
||||
col.prop(field, "guide_clump_amount")
|
||||
col.prop(field, "guide_clump_shape")
|
||||
|
||||
row = layout.row()
|
||||
row.itemR(field, "use_max_distance")
|
||||
row.prop(field, "use_max_distance")
|
||||
sub = row.row()
|
||||
sub.active = field.use_max_distance
|
||||
sub.itemR(field, "maximum_distance")
|
||||
sub.prop(field, "maximum_distance")
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
layout.itemR(field, "guide_kink_type")
|
||||
layout.prop(field, "guide_kink_type")
|
||||
if (field.guide_kink_type != 'NONE'):
|
||||
layout.itemR(field, "guide_kink_axis")
|
||||
layout.prop(field, "guide_kink_axis")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(field, "guide_kink_frequency")
|
||||
col.itemR(field, "guide_kink_shape")
|
||||
col.prop(field, "guide_kink_frequency")
|
||||
col.prop(field, "guide_kink_shape")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(field, "guide_kink_amplitude")
|
||||
col.prop(field, "guide_kink_amplitude")
|
||||
|
||||
elif field.type == 'TEXTURE':
|
||||
col = split.column()
|
||||
col.itemR(field, "strength")
|
||||
col.itemR(field, "texture", text="")
|
||||
col.itemR(field, "texture_mode", text="")
|
||||
col.itemR(field, "texture_nabla")
|
||||
col.prop(field, "strength")
|
||||
col.prop(field, "texture", text="")
|
||||
col.prop(field, "texture_mode", text="")
|
||||
col.prop(field, "texture_nabla")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(field, "use_coordinates")
|
||||
col.itemR(field, "root_coordinates")
|
||||
col.itemR(field, "force_2d")
|
||||
col.prop(field, "use_coordinates")
|
||||
col.prop(field, "root_coordinates")
|
||||
col.prop(field, "force_2d")
|
||||
else:
|
||||
basic_force_field_settings_ui(self, context, field)
|
||||
|
||||
if field.type not in ('NONE', 'GUIDE'):
|
||||
|
||||
layout.itemL(text="Falloff:")
|
||||
layout.itemR(field, "falloff_type", expand=True)
|
||||
layout.label(text="Falloff:")
|
||||
layout.prop(field, "falloff_type", expand=True)
|
||||
|
||||
basic_force_field_falloff_ui(self, context, field)
|
||||
|
||||
if field.falloff_type == 'CONE':
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
split = layout.split(percentage=0.35)
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Angular:")
|
||||
col.itemR(field, "use_radial_min", text="Use Minimum")
|
||||
col.itemR(field, "use_radial_max", text="Use Maximum")
|
||||
col.label(text="Angular:")
|
||||
col.prop(field, "use_radial_min", text="Use Minimum")
|
||||
col.prop(field, "use_radial_max", text="Use Maximum")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(field, "radial_falloff", text="Power")
|
||||
col.prop(field, "radial_falloff", text="Power")
|
||||
|
||||
sub = col.column()
|
||||
sub.active = field.use_radial_min
|
||||
sub.itemR(field, "radial_minimum", text="Angle")
|
||||
sub.prop(field, "radial_minimum", text="Angle")
|
||||
|
||||
sub = col.column()
|
||||
sub.active = field.use_radial_max
|
||||
sub.itemR(field, "radial_maximum", text="Angle")
|
||||
sub.prop(field, "radial_maximum", text="Angle")
|
||||
|
||||
elif field.falloff_type == 'TUBE':
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
split = layout.split(percentage=0.35)
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Radial:")
|
||||
col.itemR(field, "use_radial_min", text="Use Minimum")
|
||||
col.itemR(field, "use_radial_max", text="Use Maximum")
|
||||
col.label(text="Radial:")
|
||||
col.prop(field, "use_radial_min", text="Use Minimum")
|
||||
col.prop(field, "use_radial_max", text="Use Maximum")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(field, "radial_falloff", text="Power")
|
||||
col.prop(field, "radial_falloff", text="Power")
|
||||
|
||||
sub = col.column()
|
||||
sub.active = field.use_radial_min
|
||||
sub.itemR(field, "radial_minimum", text="Distance")
|
||||
sub.prop(field, "radial_minimum", text="Distance")
|
||||
|
||||
sub = col.column()
|
||||
sub.active = field.use_radial_max
|
||||
sub.itemR(field, "radial_maximum", text="Distance")
|
||||
sub.prop(field, "radial_maximum", text="Distance")
|
||||
|
||||
|
||||
class PHYSICS_PT_collision(PhysicButtonsPanel):
|
||||
@ -189,21 +189,21 @@ class PHYSICS_PT_collision(PhysicButtonsPanel):
|
||||
if md:
|
||||
# remove modifier + settings
|
||||
split.set_context_pointer("modifier", md)
|
||||
split.itemO("object.modifier_remove", text="Remove")
|
||||
split.operator("object.modifier_remove", text="Remove")
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
|
||||
#row = split.row(align=True)
|
||||
#row.itemR(md, "render", text="")
|
||||
#row.itemR(md, "realtime", text="")
|
||||
#row.prop(md, "render", text="")
|
||||
#row.prop(md, "realtime", text="")
|
||||
|
||||
coll = md.settings
|
||||
|
||||
else:
|
||||
# add modifier
|
||||
split.item_enumO("object.modifier_add", "type", 'COLLISION', text="Add")
|
||||
split.operator("object.modifier_add", text="Add").type = 'COLLISION'
|
||||
if wide_ui:
|
||||
split.itemL()
|
||||
split.label()
|
||||
|
||||
coll = None
|
||||
|
||||
@ -215,31 +215,31 @@ class PHYSICS_PT_collision(PhysicButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Particle:")
|
||||
col.itemR(settings, "permeability", slider=True)
|
||||
col.itemR(settings, "kill_particles")
|
||||
col.itemL(text="Particle Damping:")
|
||||
col.label(text="Particle:")
|
||||
col.prop(settings, "permeability", slider=True)
|
||||
col.prop(settings, "kill_particles")
|
||||
col.label(text="Particle Damping:")
|
||||
sub = col.column(align=True)
|
||||
sub.itemR(settings, "damping_factor", text="Factor", slider=True)
|
||||
sub.itemR(settings, "random_damping", text="Random", slider=True)
|
||||
sub.prop(settings, "damping_factor", text="Factor", slider=True)
|
||||
sub.prop(settings, "random_damping", text="Random", slider=True)
|
||||
|
||||
col.itemL(text="Particle Friction:")
|
||||
col.label(text="Particle Friction:")
|
||||
sub = col.column(align=True)
|
||||
sub.itemR(settings, "friction_factor", text="Factor", slider=True)
|
||||
sub.itemR(settings, "random_friction", text="Random", slider=True)
|
||||
sub.prop(settings, "friction_factor", text="Factor", slider=True)
|
||||
sub.prop(settings, "random_friction", text="Random", slider=True)
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Soft Body and Cloth:")
|
||||
col.label(text="Soft Body and Cloth:")
|
||||
sub = col.column(align=True)
|
||||
sub.itemR(settings, "outer_thickness", text="Outer", slider=True)
|
||||
sub.itemR(settings, "inner_thickness", text="Inner", slider=True)
|
||||
sub.prop(settings, "outer_thickness", text="Outer", slider=True)
|
||||
sub.prop(settings, "inner_thickness", text="Inner", slider=True)
|
||||
|
||||
col.itemL(text="Soft Body Damping:")
|
||||
col.itemR(settings, "damping", text="Factor", slider=True)
|
||||
col.label(text="Soft Body Damping:")
|
||||
col.prop(settings, "damping", text="Factor", slider=True)
|
||||
|
||||
col.itemL(text="Force Fields:")
|
||||
col.itemR(settings, "absorption", text="Absorption")
|
||||
col.label(text="Force Fields:")
|
||||
col.prop(settings, "absorption", text="Absorption")
|
||||
|
||||
bpy.types.register(PHYSICS_PT_field)
|
||||
bpy.types.register(PHYSICS_PT_collision)
|
||||
|
@ -48,114 +48,114 @@ class PHYSICS_PT_fluid(PhysicButtonsPanel):
|
||||
if md:
|
||||
# remove modifier + settings
|
||||
split.set_context_pointer("modifier", md)
|
||||
split.itemO("object.modifier_remove", text="Remove")
|
||||
split.operator("object.modifier_remove", text="Remove")
|
||||
|
||||
row = split.row(align=True)
|
||||
row.itemR(md, "render", text="")
|
||||
row.itemR(md, "realtime", text="")
|
||||
row.prop(md, "render", text="")
|
||||
row.prop(md, "realtime", text="")
|
||||
|
||||
fluid = md.settings
|
||||
|
||||
else:
|
||||
# add modifier
|
||||
split.item_enumO("object.modifier_add", "type", 'FLUID_SIMULATION', text="Add")
|
||||
split.operator("object.modifier_add", text="Add").type = 'FLUID_SIMULATION'
|
||||
if wide_ui:
|
||||
split.itemL()
|
||||
split.label()
|
||||
|
||||
fluid = None
|
||||
|
||||
|
||||
if fluid:
|
||||
if wide_ui:
|
||||
layout.itemR(fluid, "type")
|
||||
layout.prop(fluid, "type")
|
||||
else:
|
||||
layout.itemR(fluid, "type", text="")
|
||||
layout.prop(fluid, "type", text="")
|
||||
|
||||
if fluid.type == 'DOMAIN':
|
||||
layout.itemO("fluid.bake", text="Bake Fluid Simulation", icon='ICON_MOD_FLUIDSIM')
|
||||
layout.operator("fluid.bake", text="Bake Fluid Simulation", icon='ICON_MOD_FLUIDSIM')
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Resolution:")
|
||||
col.itemR(fluid, "resolution", text="Final")
|
||||
col.itemL(text="Render Display:")
|
||||
col.itemR(fluid, "render_display_mode", text="")
|
||||
col.label(text="Resolution:")
|
||||
col.prop(fluid, "resolution", text="Final")
|
||||
col.label(text="Render Display:")
|
||||
col.prop(fluid, "render_display_mode", text="")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Required Memory: " + fluid.memory_estimate)
|
||||
col.itemR(fluid, "preview_resolution", text="Preview")
|
||||
col.itemL(text="Viewport Display:")
|
||||
col.itemR(fluid, "viewport_display_mode", text="")
|
||||
col.label(text="Required Memory: " + fluid.memory_estimate)
|
||||
col.prop(fluid, "preview_resolution", text="Preview")
|
||||
col.label(text="Viewport Display:")
|
||||
col.prop(fluid, "viewport_display_mode", text="")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Time:")
|
||||
col.label(text="Time:")
|
||||
sub = col.column(align=True)
|
||||
sub.itemR(fluid, "start_time", text="Start")
|
||||
sub.itemR(fluid, "end_time", text="End")
|
||||
sub.prop(fluid, "start_time", text="Start")
|
||||
sub.prop(fluid, "end_time", text="End")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL()
|
||||
col.itemR(fluid, "generate_speed_vectors")
|
||||
col.itemR(fluid, "reverse_frames")
|
||||
col.label()
|
||||
col.prop(fluid, "generate_speed_vectors")
|
||||
col.prop(fluid, "reverse_frames")
|
||||
|
||||
layout.itemR(fluid, "path", text="")
|
||||
layout.prop(fluid, "path", text="")
|
||||
|
||||
elif fluid.type == 'FLUID':
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Volume Initialization:")
|
||||
col.itemR(fluid, "volume_initialization", text="")
|
||||
col.itemR(fluid, "export_animated_mesh")
|
||||
col.label(text="Volume Initialization:")
|
||||
col.prop(fluid, "volume_initialization", text="")
|
||||
col.prop(fluid, "export_animated_mesh")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Initial Velocity:")
|
||||
col.itemR(fluid, "initial_velocity", text="")
|
||||
col.label(text="Initial Velocity:")
|
||||
col.prop(fluid, "initial_velocity", text="")
|
||||
|
||||
elif fluid.type == 'OBSTACLE':
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Volume Initialization:")
|
||||
col.itemR(fluid, "volume_initialization", text="")
|
||||
col.itemR(fluid, "export_animated_mesh")
|
||||
col.label(text="Volume Initialization:")
|
||||
col.prop(fluid, "volume_initialization", text="")
|
||||
col.prop(fluid, "export_animated_mesh")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Slip Type:")
|
||||
col.itemR(fluid, "slip_type", text="")
|
||||
col.label(text="Slip Type:")
|
||||
col.prop(fluid, "slip_type", text="")
|
||||
if fluid.slip_type == 'PARTIALSLIP':
|
||||
col.itemR(fluid, "partial_slip_factor", slider=True, text="Amount")
|
||||
col.prop(fluid, "partial_slip_factor", slider=True, text="Amount")
|
||||
|
||||
col.itemL(text="Impact:")
|
||||
col.itemR(fluid, "impact_factor", text="Factor")
|
||||
col.label(text="Impact:")
|
||||
col.prop(fluid, "impact_factor", text="Factor")
|
||||
|
||||
elif fluid.type == 'INFLOW':
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Volume Initialization:")
|
||||
col.itemR(fluid, "volume_initialization", text="")
|
||||
col.itemR(fluid, "export_animated_mesh")
|
||||
col.itemR(fluid, "local_coordinates")
|
||||
col.label(text="Volume Initialization:")
|
||||
col.prop(fluid, "volume_initialization", text="")
|
||||
col.prop(fluid, "export_animated_mesh")
|
||||
col.prop(fluid, "local_coordinates")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Inflow Velocity:")
|
||||
col.itemR(fluid, "inflow_velocity", text="")
|
||||
col.label(text="Inflow Velocity:")
|
||||
col.prop(fluid, "inflow_velocity", text="")
|
||||
|
||||
elif fluid.type == 'OUTFLOW':
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Volume Initialization:")
|
||||
col.itemR(fluid, "volume_initialization", text="")
|
||||
col.itemR(fluid, "export_animated_mesh")
|
||||
col.label(text="Volume Initialization:")
|
||||
col.prop(fluid, "volume_initialization", text="")
|
||||
col.prop(fluid, "export_animated_mesh")
|
||||
|
||||
if wide_ui:
|
||||
split.column()
|
||||
@ -164,48 +164,48 @@ class PHYSICS_PT_fluid(PhysicButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Influence:")
|
||||
col.itemR(fluid, "particle_influence", text="Size")
|
||||
col.itemR(fluid, "alpha_influence", text="Alpha")
|
||||
col.label(text="Influence:")
|
||||
col.prop(fluid, "particle_influence", text="Size")
|
||||
col.prop(fluid, "alpha_influence", text="Alpha")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Type:")
|
||||
col.itemR(fluid, "drops")
|
||||
col.itemR(fluid, "floats")
|
||||
col.itemR(fluid, "tracer")
|
||||
col.label(text="Type:")
|
||||
col.prop(fluid, "drops")
|
||||
col.prop(fluid, "floats")
|
||||
col.prop(fluid, "tracer")
|
||||
|
||||
layout.itemR(fluid, "path", text="")
|
||||
layout.prop(fluid, "path", text="")
|
||||
|
||||
elif fluid.type == 'CONTROL':
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="")
|
||||
col.itemR(fluid, "quality", slider=True)
|
||||
col.itemR(fluid, "reverse_frames")
|
||||
col.label(text="")
|
||||
col.prop(fluid, "quality", slider=True)
|
||||
col.prop(fluid, "reverse_frames")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Time:")
|
||||
col.label(text="Time:")
|
||||
sub = col.column(align=True)
|
||||
sub.itemR(fluid, "start_time", text="Start")
|
||||
sub.itemR(fluid, "end_time", text="End")
|
||||
sub.prop(fluid, "start_time", text="Start")
|
||||
sub.prop(fluid, "end_time", text="End")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Attraction Force:")
|
||||
col.label(text="Attraction Force:")
|
||||
sub = col.column(align=True)
|
||||
sub.itemR(fluid, "attraction_strength", text="Strength")
|
||||
sub.itemR(fluid, "attraction_radius", text="Radius")
|
||||
sub.prop(fluid, "attraction_strength", text="Strength")
|
||||
sub.prop(fluid, "attraction_radius", text="Radius")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Velocity Force:")
|
||||
col.label(text="Velocity Force:")
|
||||
sub = col.column(align=True)
|
||||
sub.itemR(fluid, "velocity_strength", text="Strength")
|
||||
sub.itemR(fluid, "velocity_radius", text="Radius")
|
||||
sub.prop(fluid, "velocity_strength", text="Strength")
|
||||
sub.prop(fluid, "velocity_radius", text="Radius")
|
||||
|
||||
|
||||
class PHYSICS_PT_domain_gravity(PhysicButtonsPanel):
|
||||
@ -225,24 +225,24 @@ class PHYSICS_PT_domain_gravity(PhysicButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Gravity:")
|
||||
col.itemR(fluid, "gravity", text="")
|
||||
col.itemL(text="Real World Size:")
|
||||
col.itemR(fluid, "real_world_size", text="Metres")
|
||||
col.label(text="Gravity:")
|
||||
col.prop(fluid, "gravity", text="")
|
||||
col.label(text="Real World Size:")
|
||||
col.prop(fluid, "real_world_size", text="Metres")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Viscosity Presets:")
|
||||
col.label(text="Viscosity Presets:")
|
||||
sub = col.column(align=True)
|
||||
sub.itemR(fluid, "viscosity_preset", text="")
|
||||
sub.prop(fluid, "viscosity_preset", text="")
|
||||
|
||||
if fluid.viscosity_preset == 'MANUAL':
|
||||
sub.itemR(fluid, "viscosity_base", text="Base")
|
||||
sub.itemR(fluid, "viscosity_exponent", text="Exponent", slider=True)
|
||||
sub.prop(fluid, "viscosity_base", text="Base")
|
||||
sub.prop(fluid, "viscosity_exponent", text="Exponent", slider=True)
|
||||
|
||||
col.itemL(text="Optimization:")
|
||||
col.itemR(fluid, "grid_levels", slider=True)
|
||||
col.itemR(fluid, "compressibility", slider=True)
|
||||
col.label(text="Optimization:")
|
||||
col.prop(fluid, "grid_levels", slider=True)
|
||||
col.prop(fluid, "compressibility", slider=True)
|
||||
|
||||
|
||||
class PHYSICS_PT_domain_boundary(PhysicButtonsPanel):
|
||||
@ -262,16 +262,16 @@ class PHYSICS_PT_domain_boundary(PhysicButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Slip Type:")
|
||||
col.itemR(fluid, "slip_type", text="")
|
||||
col.label(text="Slip Type:")
|
||||
col.prop(fluid, "slip_type", text="")
|
||||
if fluid.slip_type == 'PARTIALSLIP':
|
||||
col.itemR(fluid, "partial_slip_factor", slider=True, text="Amount")
|
||||
col.prop(fluid, "partial_slip_factor", slider=True, text="Amount")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Surface:")
|
||||
col.itemR(fluid, "surface_smoothing", text="Smoothing")
|
||||
col.itemR(fluid, "surface_subdivisions", text="Subdivisions")
|
||||
col.label(text="Surface:")
|
||||
col.prop(fluid, "surface_smoothing", text="Smoothing")
|
||||
col.prop(fluid, "surface_subdivisions", text="Subdivisions")
|
||||
|
||||
|
||||
class PHYSICS_PT_domain_particles(PhysicButtonsPanel):
|
||||
@ -288,8 +288,8 @@ class PHYSICS_PT_domain_particles(PhysicButtonsPanel):
|
||||
fluid = context.fluid.settings
|
||||
|
||||
col = layout.column(align=True)
|
||||
col.itemR(fluid, "tracer_particles")
|
||||
col.itemR(fluid, "generate_particles")
|
||||
col.prop(fluid, "tracer_particles")
|
||||
col.prop(fluid, "generate_particles")
|
||||
|
||||
bpy.types.register(PHYSICS_PT_fluid)
|
||||
bpy.types.register(PHYSICS_PT_domain_gravity)
|
||||
|
@ -53,23 +53,23 @@ class PHYSICS_PT_smoke(PhysicButtonsPanel):
|
||||
if md:
|
||||
# remove modifier + settings
|
||||
split.set_context_pointer("modifier", md)
|
||||
split.itemO("object.modifier_remove", text="Remove")
|
||||
split.operator("object.modifier_remove", text="Remove")
|
||||
|
||||
row = split.row(align=True)
|
||||
row.itemR(md, "render", text="")
|
||||
row.itemR(md, "realtime", text="")
|
||||
row.prop(md, "render", text="")
|
||||
row.prop(md, "realtime", text="")
|
||||
|
||||
else:
|
||||
# add modifier
|
||||
split.item_enumO("object.modifier_add", "type", 'SMOKE', text="Add")
|
||||
split.operator("object.modifier_add", text="Add").type = 'SMOKE'
|
||||
if wide_ui:
|
||||
split.itemL()
|
||||
split.label()
|
||||
|
||||
if md:
|
||||
if wide_ui:
|
||||
layout.itemR(md, "smoke_type", expand=True)
|
||||
layout.prop(md, "smoke_type", expand=True)
|
||||
else:
|
||||
layout.itemR(md, "smoke_type", text="")
|
||||
layout.prop(md, "smoke_type", text="")
|
||||
|
||||
if md.smoke_type == 'TYPE_DOMAIN':
|
||||
|
||||
@ -78,19 +78,19 @@ class PHYSICS_PT_smoke(PhysicButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Resolution:")
|
||||
col.itemR(domain, "maxres", text="Divisions")
|
||||
col.label(text="Resolution:")
|
||||
col.prop(domain, "maxres", text="Divisions")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Behavior:")
|
||||
col.itemR(domain, "alpha")
|
||||
col.itemR(domain, "beta")
|
||||
col.itemR(domain, "dissolve_smoke", text="Dissolve")
|
||||
col.label(text="Behavior:")
|
||||
col.prop(domain, "alpha")
|
||||
col.prop(domain, "beta")
|
||||
col.prop(domain, "dissolve_smoke", text="Dissolve")
|
||||
sub = col.column()
|
||||
sub.active = domain.dissolve_smoke
|
||||
sub.itemR(domain, "dissolve_speed", text="Time")
|
||||
sub.itemR(domain, "dissolve_smoke_log", text="Slow")
|
||||
sub.prop(domain, "dissolve_speed", text="Time")
|
||||
sub.prop(domain, "dissolve_smoke_log", text="Slow")
|
||||
|
||||
elif md.smoke_type == 'TYPE_FLOW':
|
||||
|
||||
@ -99,9 +99,9 @@ class PHYSICS_PT_smoke(PhysicButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(flow, "outflow")
|
||||
col.itemL(text="Particle System:")
|
||||
col.item_pointerR(flow, "psys", ob, "particle_systems", text="")
|
||||
col.prop(flow, "outflow")
|
||||
col.label(text="Particle System:")
|
||||
col.prop_object(flow, "psys", ob, "particle_systems", text="")
|
||||
|
||||
if md.flow_settings.outflow:
|
||||
if wide_ui:
|
||||
@ -109,12 +109,12 @@ class PHYSICS_PT_smoke(PhysicButtonsPanel):
|
||||
else:
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Behavior:")
|
||||
col.itemR(flow, "temperature")
|
||||
col.itemR(flow, "density")
|
||||
col.label(text="Behavior:")
|
||||
col.prop(flow, "temperature")
|
||||
col.prop(flow, "density")
|
||||
|
||||
#elif md.smoke_type == 'TYPE_COLL':
|
||||
# layout.itemS()
|
||||
# layout.separator()
|
||||
|
||||
|
||||
class PHYSICS_PT_smoke_groups(PhysicButtonsPanel):
|
||||
@ -134,16 +134,16 @@ class PHYSICS_PT_smoke_groups(PhysicButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Flow Group:")
|
||||
col.itemR(group, "fluid_group", text="")
|
||||
col.label(text="Flow Group:")
|
||||
col.prop(group, "fluid_group", text="")
|
||||
|
||||
#col.itemL(text="Effector Group:")
|
||||
#col.itemR(group, "eff_group", text="")
|
||||
#col.label(text="Effector Group:")
|
||||
#col.prop(group, "eff_group", text="")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Collision Group:")
|
||||
col.itemR(group, "coll_group", text="")
|
||||
col.label(text="Collision Group:")
|
||||
col.prop(group, "coll_group", text="")
|
||||
|
||||
|
||||
class PHYSICS_PT_smoke_cache(PhysicButtonsPanel):
|
||||
@ -158,7 +158,7 @@ class PHYSICS_PT_smoke_cache(PhysicButtonsPanel):
|
||||
md = context.smoke.domain_settings
|
||||
cache = md.point_cache_low
|
||||
|
||||
point_cache_ui(self, context, cache, cache.baked == False, 0, 1)
|
||||
point_cache_ui(self, context, cache, (cache.baked is False), 0, 1)
|
||||
|
||||
|
||||
class PHYSICS_PT_smoke_highres(PhysicButtonsPanel):
|
||||
@ -172,7 +172,7 @@ class PHYSICS_PT_smoke_highres(PhysicButtonsPanel):
|
||||
def draw_header(self, context):
|
||||
high = context.smoke.domain_settings
|
||||
|
||||
self.layout.itemR(high, "highres", text="")
|
||||
self.layout.prop(high, "highres", text="")
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@ -183,15 +183,15 @@ class PHYSICS_PT_smoke_highres(PhysicButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Resolution:")
|
||||
col.itemR(md, "amplify", text="Divisions")
|
||||
col.itemR(md, "viewhighres")
|
||||
col.label(text="Resolution:")
|
||||
col.prop(md, "amplify", text="Divisions")
|
||||
col.prop(md, "viewhighres")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Noise Method:")
|
||||
col.row().itemR(md, "noise_type", text="")
|
||||
col.itemR(md, "strength")
|
||||
col.label(text="Noise Method:")
|
||||
col.row().prop(md, "noise_type", text="")
|
||||
col.prop(md, "strength")
|
||||
|
||||
|
||||
class PHYSICS_PT_smoke_cache_highres(PhysicButtonsPanel):
|
||||
@ -206,7 +206,7 @@ class PHYSICS_PT_smoke_cache_highres(PhysicButtonsPanel):
|
||||
md = context.smoke.domain_settings
|
||||
cache = md.point_cache_high
|
||||
|
||||
point_cache_ui(self, context, cache, cache.baked == False, 0, 1)
|
||||
point_cache_ui(self, context, cache, (cache.baked is False), 0, 1)
|
||||
|
||||
|
||||
class PHYSICS_PT_smoke_field_weights(PhysicButtonsPanel):
|
||||
|
@ -27,7 +27,7 @@ from properties_physics_common import effector_weights_ui
|
||||
|
||||
|
||||
def softbody_panel_enabled(md):
|
||||
return md.point_cache.baked == False
|
||||
return (md.point_cache.baked is False)
|
||||
|
||||
|
||||
class PhysicButtonsPanel(bpy.types.Panel):
|
||||
@ -57,14 +57,14 @@ class PHYSICS_PT_softbody(PhysicButtonsPanel):
|
||||
if md:
|
||||
# remove modifier + settings
|
||||
split.set_context_pointer("modifier", md)
|
||||
split.itemO("object.modifier_remove", text="Remove")
|
||||
split.operator("object.modifier_remove", text="Remove")
|
||||
|
||||
row = split.row(align=True)
|
||||
row.itemR(md, "render", text="")
|
||||
row.itemR(md, "realtime", text="")
|
||||
row.prop(md, "render", text="")
|
||||
row.prop(md, "realtime", text="")
|
||||
else:
|
||||
# add modifier
|
||||
split.item_enumO("object.modifier_add", "type", 'SOFT_BODY', text="Add")
|
||||
split.operator("object.modifier_add", text="Add").type = 'SOFT_BODY'
|
||||
if wide_ui:
|
||||
split.column()
|
||||
|
||||
@ -76,15 +76,15 @@ class PHYSICS_PT_softbody(PhysicButtonsPanel):
|
||||
split.enabled = softbody_panel_enabled(md)
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Object:")
|
||||
col.itemR(softbody, "friction")
|
||||
col.itemR(softbody, "mass")
|
||||
col.item_pointerR(softbody, "mass_vertex_group", ob, "vertex_groups", text="Mass:")
|
||||
col.label(text="Object:")
|
||||
col.prop(softbody, "friction")
|
||||
col.prop(softbody, "mass")
|
||||
col.prop_object(softbody, "mass_vertex_group", ob, "vertex_groups", text="Mass:")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Simulation:")
|
||||
col.itemR(softbody, "speed")
|
||||
col.label(text="Simulation:")
|
||||
col.prop(softbody, "speed")
|
||||
|
||||
|
||||
class PHYSICS_PT_softbody_cache(PhysicButtonsPanel):
|
||||
@ -110,7 +110,7 @@ class PHYSICS_PT_softbody_goal(PhysicButtonsPanel):
|
||||
softbody = context.soft_body.settings
|
||||
|
||||
self.layout.active = softbody_panel_enabled(context.soft_body)
|
||||
self.layout.itemR(softbody, "use_goal", text="")
|
||||
self.layout.prop(softbody, "use_goal", text="")
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@ -128,19 +128,19 @@ class PHYSICS_PT_softbody_goal(PhysicButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Goal Strengths:")
|
||||
col.itemR(softbody, "goal_default", text="Default")
|
||||
col.label(text="Goal Strengths:")
|
||||
col.prop(softbody, "goal_default", text="Default")
|
||||
sub = col.column(align=True)
|
||||
sub.itemR(softbody, "goal_min", text="Minimum")
|
||||
sub.itemR(softbody, "goal_max", text="Maximum")
|
||||
sub.prop(softbody, "goal_min", text="Minimum")
|
||||
sub.prop(softbody, "goal_max", text="Maximum")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Goal Settings:")
|
||||
col.itemR(softbody, "goal_spring", text="Stiffness")
|
||||
col.itemR(softbody, "goal_friction", text="Damping")
|
||||
col.label(text="Goal Settings:")
|
||||
col.prop(softbody, "goal_spring", text="Stiffness")
|
||||
col.prop(softbody, "goal_friction", text="Damping")
|
||||
|
||||
layout.item_pointerR(softbody, "goal_vertex_group", ob, "vertex_groups", text="Vertex Group")
|
||||
layout.prop_object(softbody, "goal_vertex_group", ob, "vertex_groups", text="Vertex Group")
|
||||
|
||||
|
||||
class PHYSICS_PT_softbody_edge(PhysicButtonsPanel):
|
||||
@ -154,7 +154,7 @@ class PHYSICS_PT_softbody_edge(PhysicButtonsPanel):
|
||||
softbody = context.soft_body.settings
|
||||
|
||||
self.layout.active = softbody_panel_enabled(context.soft_body)
|
||||
self.layout.itemR(softbody, "use_edges", text="")
|
||||
self.layout.prop(softbody, "use_edges", text="")
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@ -169,30 +169,30 @@ class PHYSICS_PT_softbody_edge(PhysicButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Springs:")
|
||||
col.itemR(softbody, "pull")
|
||||
col.itemR(softbody, "push")
|
||||
col.itemR(softbody, "damp")
|
||||
col.itemR(softbody, "plastic")
|
||||
col.itemR(softbody, "bending")
|
||||
col.itemR(softbody, "spring_length", text="Length")
|
||||
col.item_pointerR(softbody, "spring_vertex_group", ob, "vertex_groups", text="Springs:")
|
||||
col.label(text="Springs:")
|
||||
col.prop(softbody, "pull")
|
||||
col.prop(softbody, "push")
|
||||
col.prop(softbody, "damp")
|
||||
col.prop(softbody, "plastic")
|
||||
col.prop(softbody, "bending")
|
||||
col.prop(softbody, "spring_length", text="Length")
|
||||
col.prop_object(softbody, "spring_vertex_group", ob, "vertex_groups", text="Springs:")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(softbody, "stiff_quads")
|
||||
col.prop(softbody, "stiff_quads")
|
||||
sub = col.column()
|
||||
sub.active = softbody.stiff_quads
|
||||
sub.itemR(softbody, "shear")
|
||||
sub.prop(softbody, "shear")
|
||||
|
||||
col.itemR(softbody, "new_aero", text="Aero")
|
||||
col.prop(softbody, "new_aero", text="Aero")
|
||||
sub = col.column()
|
||||
sub.enabled = softbody.new_aero
|
||||
sub.itemR(softbody, "aero", text="Factor")
|
||||
sub.prop(softbody, "aero", text="Factor")
|
||||
|
||||
col.itemL(text="Collision:")
|
||||
col.itemR(softbody, "edge_collision", text="Edge")
|
||||
col.itemR(softbody, "face_collision", text="Face")
|
||||
col.label(text="Collision:")
|
||||
col.prop(softbody, "edge_collision", text="Edge")
|
||||
col.prop(softbody, "face_collision", text="Face")
|
||||
|
||||
|
||||
class PHYSICS_PT_softbody_collision(PhysicButtonsPanel):
|
||||
@ -206,7 +206,7 @@ class PHYSICS_PT_softbody_collision(PhysicButtonsPanel):
|
||||
softbody = context.soft_body.settings
|
||||
|
||||
self.layout.active = softbody_panel_enabled(context.soft_body)
|
||||
self.layout.itemR(softbody, "self_collision", text="")
|
||||
self.layout.prop(softbody, "self_collision", text="")
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@ -217,17 +217,17 @@ class PHYSICS_PT_softbody_collision(PhysicButtonsPanel):
|
||||
|
||||
layout.active = softbody.self_collision and softbody_panel_enabled(md)
|
||||
|
||||
layout.itemL(text="Collision Type:")
|
||||
layout.label(text="Collision Type:")
|
||||
if wide_ui:
|
||||
layout.itemR(softbody, "collision_type", expand=True)
|
||||
layout.prop(softbody, "collision_type", expand=True)
|
||||
else:
|
||||
layout.itemR(softbody, "collision_type", text="")
|
||||
layout.prop(softbody, "collision_type", text="")
|
||||
|
||||
col = layout.column(align=True)
|
||||
col.itemL(text="Ball:")
|
||||
col.itemR(softbody, "ball_size", text="Size")
|
||||
col.itemR(softbody, "ball_stiff", text="Stiffness")
|
||||
col.itemR(softbody, "ball_damp", text="Dampening")
|
||||
col.label(text="Ball:")
|
||||
col.prop(softbody, "ball_size", text="Size")
|
||||
col.prop(softbody, "ball_stiff", text="Stiffness")
|
||||
col.prop(softbody, "ball_damp", text="Dampening")
|
||||
|
||||
|
||||
class PHYSICS_PT_softbody_solver(PhysicButtonsPanel):
|
||||
@ -250,20 +250,20 @@ class PHYSICS_PT_softbody_solver(PhysicButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column(align=True)
|
||||
col.itemL(text="Step Size:")
|
||||
col.itemR(softbody, "minstep")
|
||||
col.itemR(softbody, "maxstep")
|
||||
col.itemR(softbody, "auto_step", text="Auto-Step")
|
||||
col.label(text="Step Size:")
|
||||
col.prop(softbody, "minstep")
|
||||
col.prop(softbody, "maxstep")
|
||||
col.prop(softbody, "auto_step", text="Auto-Step")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(softbody, "error_limit")
|
||||
col.itemL(text="Helpers:")
|
||||
col.itemR(softbody, "choke")
|
||||
col.itemR(softbody, "fuzzy")
|
||||
col.prop(softbody, "error_limit")
|
||||
col.label(text="Helpers:")
|
||||
col.prop(softbody, "choke")
|
||||
col.prop(softbody, "fuzzy")
|
||||
|
||||
layout.itemL(text="Diagnostics:")
|
||||
layout.itemR(softbody, "diagnose")
|
||||
layout.label(text="Diagnostics:")
|
||||
layout.prop(softbody, "diagnose")
|
||||
|
||||
|
||||
class PHYSICS_PT_softbody_field_weights(PhysicButtonsPanel):
|
||||
|
@ -37,7 +37,7 @@ class RenderButtonsPanel(bpy.types.Panel):
|
||||
|
||||
def poll(self, context):
|
||||
rd = context.scene.render_data
|
||||
return (context.scene and rd.use_game_engine == False) and (rd.engine in self.COMPAT_ENGINES)
|
||||
return (context.scene and rd.use_game_engine is False) and (rd.engine in self.COMPAT_ENGINES)
|
||||
|
||||
|
||||
class RENDER_PT_render(RenderButtonsPanel):
|
||||
@ -53,13 +53,13 @@ class RENDER_PT_render(RenderButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemO("screen.render", text="Image", icon='ICON_RENDER_STILL')
|
||||
col.operator("screen.render", text="Image", icon='ICON_RENDER_STILL')
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.item_booleanO("screen.render", "animation", True, text="Animation", icon='ICON_RENDER_ANIMATION')
|
||||
col.operator("screen.render", text="Animation", icon='ICON_RENDER_ANIMATION').animation = True
|
||||
|
||||
layout.itemR(rd, "display_mode", text="Display")
|
||||
layout.prop(rd, "display_mode", text="Display")
|
||||
|
||||
|
||||
class RENDER_PT_layers(RenderButtonsPanel):
|
||||
@ -78,86 +78,86 @@ class RENDER_PT_layers(RenderButtonsPanel):
|
||||
row.template_list(rd, "layers", rd, "active_layer_index", rows=2)
|
||||
|
||||
col = row.column(align=True)
|
||||
col.itemO("scene.render_layer_add", icon='ICON_ZOOMIN', text="")
|
||||
col.itemO("scene.render_layer_remove", icon='ICON_ZOOMOUT', text="")
|
||||
col.operator("scene.render_layer_add", icon='ICON_ZOOMIN', text="")
|
||||
col.operator("scene.render_layer_remove", icon='ICON_ZOOMOUT', text="")
|
||||
|
||||
rl = rd.layers[rd.active_layer_index]
|
||||
|
||||
if rl:
|
||||
layout.itemR(rl, "name")
|
||||
layout.prop(rl, "name")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(scene, "visible_layers", text="Scene")
|
||||
col.prop(scene, "visible_layers", text="Scene")
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(rl, "visible_layers", text="Layer")
|
||||
col.prop(rl, "visible_layers", text="Layer")
|
||||
|
||||
layout.itemR(rl, "light_override", text="Light")
|
||||
layout.itemR(rl, "material_override", text="Material")
|
||||
layout.prop(rl, "light_override", text="Light")
|
||||
layout.prop(rl, "material_override", text="Material")
|
||||
|
||||
layout.itemS()
|
||||
layout.itemL(text="Include:")
|
||||
layout.separator()
|
||||
layout.label(text="Include:")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(rl, "zmask")
|
||||
col.prop(rl, "zmask")
|
||||
row = col.row()
|
||||
row.itemR(rl, "zmask_negate", text="Negate")
|
||||
row.prop(rl, "zmask_negate", text="Negate")
|
||||
row.active = rl.zmask
|
||||
col.itemR(rl, "all_z")
|
||||
col.prop(rl, "all_z")
|
||||
|
||||
col = split.column()
|
||||
col.itemR(rl, "solid")
|
||||
col.itemR(rl, "halo")
|
||||
col.itemR(rl, "ztransp")
|
||||
col.prop(rl, "solid")
|
||||
col.prop(rl, "halo")
|
||||
col.prop(rl, "ztransp")
|
||||
|
||||
col = split.column()
|
||||
col.itemR(rl, "sky")
|
||||
col.itemR(rl, "edge")
|
||||
col.itemR(rl, "strand")
|
||||
col.prop(rl, "sky")
|
||||
col.prop(rl, "edge")
|
||||
col.prop(rl, "strand")
|
||||
|
||||
if rl.zmask:
|
||||
split = layout.split()
|
||||
split.itemL(text="Zmask Layers:")
|
||||
split.column().itemR(rl, "zmask_layers", text="")
|
||||
split.label(text="Zmask Layers:")
|
||||
split.column().prop(rl, "zmask_layers", text="")
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Passes:")
|
||||
col.itemR(rl, "pass_combined")
|
||||
col.itemR(rl, "pass_z")
|
||||
col.itemR(rl, "pass_vector")
|
||||
col.itemR(rl, "pass_normal")
|
||||
col.itemR(rl, "pass_uv")
|
||||
col.itemR(rl, "pass_mist")
|
||||
col.itemR(rl, "pass_object_index")
|
||||
col.label(text="Passes:")
|
||||
col.prop(rl, "pass_combined")
|
||||
col.prop(rl, "pass_z")
|
||||
col.prop(rl, "pass_vector")
|
||||
col.prop(rl, "pass_normal")
|
||||
col.prop(rl, "pass_uv")
|
||||
col.prop(rl, "pass_mist")
|
||||
col.prop(rl, "pass_object_index")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL()
|
||||
col.itemR(rl, "pass_color")
|
||||
col.itemR(rl, "pass_diffuse")
|
||||
col.label()
|
||||
col.prop(rl, "pass_color")
|
||||
col.prop(rl, "pass_diffuse")
|
||||
row = col.row()
|
||||
row.itemR(rl, "pass_specular")
|
||||
row.itemR(rl, "pass_specular_exclude", text="", icon='ICON_X')
|
||||
row.prop(rl, "pass_specular")
|
||||
row.prop(rl, "pass_specular_exclude", text="", icon='ICON_X')
|
||||
row = col.row()
|
||||
row.itemR(rl, "pass_shadow")
|
||||
row.itemR(rl, "pass_shadow_exclude", text="", icon='ICON_X')
|
||||
row.prop(rl, "pass_shadow")
|
||||
row.prop(rl, "pass_shadow_exclude", text="", icon='ICON_X')
|
||||
row = col.row()
|
||||
row.itemR(rl, "pass_ao")
|
||||
row.itemR(rl, "pass_ao_exclude", text="", icon='ICON_X')
|
||||
row.prop(rl, "pass_ao")
|
||||
row.prop(rl, "pass_ao_exclude", text="", icon='ICON_X')
|
||||
row = col.row()
|
||||
row.itemR(rl, "pass_reflection")
|
||||
row.itemR(rl, "pass_reflection_exclude", text="", icon='ICON_X')
|
||||
row.prop(rl, "pass_reflection")
|
||||
row.prop(rl, "pass_reflection_exclude", text="", icon='ICON_X')
|
||||
row = col.row()
|
||||
row.itemR(rl, "pass_refraction")
|
||||
row.itemR(rl, "pass_refraction_exclude", text="", icon='ICON_X')
|
||||
row.prop(rl, "pass_refraction")
|
||||
row.prop(rl, "pass_refraction_exclude", text="", icon='ICON_X')
|
||||
|
||||
|
||||
class RENDER_PT_shading(RenderButtonsPanel):
|
||||
@ -173,16 +173,16 @@ class RENDER_PT_shading(RenderButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(rd, "render_textures", text="Textures")
|
||||
col.itemR(rd, "render_shadows", text="Shadows")
|
||||
col.itemR(rd, "render_sss", text="Subsurface Scattering")
|
||||
col.itemR(rd, "render_envmaps", text="Environment Map")
|
||||
col.prop(rd, "render_textures", text="Textures")
|
||||
col.prop(rd, "render_shadows", text="Shadows")
|
||||
col.prop(rd, "render_sss", text="Subsurface Scattering")
|
||||
col.prop(rd, "render_envmaps", text="Environment Map")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(rd, "render_raytracing", text="Ray Tracing")
|
||||
col.itemR(rd, "color_management")
|
||||
col.itemR(rd, "alpha_mode", text="Alpha")
|
||||
col.prop(rd, "render_raytracing", text="Ray Tracing")
|
||||
col.prop(rd, "color_management")
|
||||
col.prop(rd, "alpha_mode", text="Alpha")
|
||||
|
||||
|
||||
class RENDER_PT_performance(RenderButtonsPanel):
|
||||
@ -199,34 +199,34 @@ class RENDER_PT_performance(RenderButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Threads:")
|
||||
col.row().itemR(rd, "threads_mode", expand=True)
|
||||
col.label(text="Threads:")
|
||||
col.row().prop(rd, "threads_mode", expand=True)
|
||||
sub = col.column()
|
||||
sub.enabled = rd.threads_mode == 'THREADS_FIXED'
|
||||
sub.itemR(rd, "threads")
|
||||
sub.prop(rd, "threads")
|
||||
sub = col.column(align=True)
|
||||
sub.itemL(text="Tiles:")
|
||||
sub.itemR(rd, "parts_x", text="X")
|
||||
sub.itemR(rd, "parts_y", text="Y")
|
||||
sub.label(text="Tiles:")
|
||||
sub.prop(rd, "parts_x", text="X")
|
||||
sub.prop(rd, "parts_y", text="Y")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Memory:")
|
||||
col.label(text="Memory:")
|
||||
sub = col.column()
|
||||
sub.itemR(rd, "save_buffers")
|
||||
sub.prop(rd, "save_buffers")
|
||||
sub.enabled = not rd.full_sample
|
||||
sub = col.column()
|
||||
sub.active = rd.use_compositing
|
||||
sub.itemR(rd, "free_image_textures")
|
||||
sub.prop(rd, "free_image_textures")
|
||||
sub = col.column()
|
||||
sub.active = rd.render_raytracing
|
||||
sub.itemL(text="Acceleration structure:")
|
||||
sub.itemR(rd, "raytrace_structure", text="")
|
||||
sub.label(text="Acceleration structure:")
|
||||
sub.prop(rd, "raytrace_structure", text="")
|
||||
if rd.raytrace_structure == 'OCTREE':
|
||||
sub.itemR(rd, "octree_resolution", text="Resolution")
|
||||
sub.prop(rd, "octree_resolution", text="Resolution")
|
||||
else:
|
||||
sub.itemR(rd, "use_instances", text="Instances")
|
||||
sub.itemR(rd, "use_local_coords", text="Local Coordinates")
|
||||
sub.prop(rd, "use_instances", text="Instances")
|
||||
sub.prop(rd, "use_local_coords", text="Local Coordinates")
|
||||
|
||||
|
||||
class RENDER_PT_post_processing(RenderButtonsPanel):
|
||||
@ -243,34 +243,34 @@ class RENDER_PT_post_processing(RenderButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(rd, "use_compositing")
|
||||
col.itemR(rd, "use_sequencer")
|
||||
col.prop(rd, "use_compositing")
|
||||
col.prop(rd, "use_sequencer")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(rd, "dither_intensity", text="Dither", slider=True)
|
||||
col.prop(rd, "dither_intensity", text="Dither", slider=True)
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(rd, "fields", text="Fields")
|
||||
col.prop(rd, "fields", text="Fields")
|
||||
sub = col.column()
|
||||
sub.active = rd.fields
|
||||
sub.row().itemR(rd, "field_order", expand=True)
|
||||
sub.itemR(rd, "fields_still", text="Still")
|
||||
sub.row().prop(rd, "field_order", expand=True)
|
||||
sub.prop(rd, "fields_still", text="Still")
|
||||
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
else:
|
||||
col.itemS()
|
||||
col.itemR(rd, "edge")
|
||||
col.separator()
|
||||
col.prop(rd, "edge")
|
||||
sub = col.column()
|
||||
sub.active = rd.edge
|
||||
sub.itemR(rd, "edge_threshold", text="Threshold", slider=True)
|
||||
sub.itemR(rd, "edge_color", text="")
|
||||
sub.prop(rd, "edge_threshold", text="Threshold", slider=True)
|
||||
sub.prop(rd, "edge_color", text="")
|
||||
|
||||
|
||||
class RENDER_PT_output(RenderButtonsPanel):
|
||||
@ -283,91 +283,72 @@ class RENDER_PT_output(RenderButtonsPanel):
|
||||
rd = context.scene.render_data
|
||||
wide_ui = context.region.width > narrowui
|
||||
|
||||
layout.itemR(rd, "output_path", text="")
|
||||
layout.prop(rd, "output_path", text="")
|
||||
|
||||
split = layout.split()
|
||||
col = split.column()
|
||||
col.itemR(rd, "file_format", text="")
|
||||
col.row().itemR(rd, "color_mode", text="Color", expand=True)
|
||||
col.prop(rd, "file_format", text="")
|
||||
col.row().prop(rd, "color_mode", text="Color", expand=True)
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(rd, "file_extensions")
|
||||
col.itemR(rd, "use_overwrite")
|
||||
col.itemR(rd, "use_placeholder")
|
||||
col.prop(rd, "file_extensions")
|
||||
col.prop(rd, "use_overwrite")
|
||||
col.prop(rd, "use_placeholder")
|
||||
|
||||
if rd.file_format in ('AVIJPEG', 'JPEG'):
|
||||
split = layout.split()
|
||||
split.itemR(rd, "quality", slider=True)
|
||||
split.prop(rd, "quality", slider=True)
|
||||
|
||||
elif rd.file_format == 'OPENEXR':
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Codec:")
|
||||
col.itemR(rd, "exr_codec", text="")
|
||||
col.label(text="Codec:")
|
||||
col.prop(rd, "exr_codec", text="")
|
||||
|
||||
if wide_ui:
|
||||
subsplit = split.split()
|
||||
col = subsplit.column()
|
||||
col.itemR(rd, "exr_half")
|
||||
col.itemR(rd, "exr_zbuf")
|
||||
col.prop(rd, "exr_half")
|
||||
col.prop(rd, "exr_zbuf")
|
||||
|
||||
if wide_ui:
|
||||
col = subsplit.column()
|
||||
col.itemR(rd, "exr_preview")
|
||||
col.prop(rd, "exr_preview")
|
||||
|
||||
elif rd.file_format == 'JPEG2000':
|
||||
split = layout.split()
|
||||
col = split.column()
|
||||
col.itemL(text="Depth:")
|
||||
col.row().itemR(rd, "jpeg2k_depth", expand=True)
|
||||
col.label(text="Depth:")
|
||||
col.row().prop(rd, "jpeg2k_depth", expand=True)
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(rd, "jpeg2k_preset", text="")
|
||||
col.itemR(rd, "jpeg2k_ycc")
|
||||
col.prop(rd, "jpeg2k_preset", text="")
|
||||
col.prop(rd, "jpeg2k_ycc")
|
||||
|
||||
elif rd.file_format in ('CINEON', 'DPX'):
|
||||
split = layout.split()
|
||||
col = split.column()
|
||||
col.itemR(rd, "cineon_log", text="Convert to Log")
|
||||
col.prop(rd, "cineon_log", text="Convert to Log")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column(align=True)
|
||||
col.active = rd.cineon_log
|
||||
col.itemR(rd, "cineon_black", text="Black")
|
||||
col.itemR(rd, "cineon_white", text="White")
|
||||
col.itemR(rd, "cineon_gamma", text="Gamma")
|
||||
col.prop(rd, "cineon_black", text="Black")
|
||||
col.prop(rd, "cineon_white", text="White")
|
||||
col.prop(rd, "cineon_gamma", text="Gamma")
|
||||
|
||||
elif rd.file_format == 'TIFF':
|
||||
split = layout.split()
|
||||
split.itemR(rd, "tiff_bit")
|
||||
split.prop(rd, "tiff_bit")
|
||||
|
||||
|
||||
class RENDER_PT_QTencoding(RenderButtonsPanel):
|
||||
bl_label = "Encoding"
|
||||
bl_default_closed = True
|
||||
COMPAT_ENGINES = set(['BLENDER_RENDER'])
|
||||
|
||||
def poll(self, context):
|
||||
rd = context.scene.render_data
|
||||
return rd.file_format in ('QUICKTIME_QTKIT') # QUICKTIME will be added later
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
rd = context.scene.render_data
|
||||
wide_ui = context.region.width > narrowui
|
||||
|
||||
split = layout.split()
|
||||
|
||||
split.itemR(rd, "quicktime_codec_type")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
if rd.file_format == 'QUICKTIME_QTKIT':
|
||||
split.itemR(rd, "quicktime_codec_spatial_quality", text="Quality", slider=True)
|
||||
elif rd.file_format == 'QUICKTIME_QTKIT':
|
||||
split = layout.split()
|
||||
col = split.column()
|
||||
col.prop(rd, "quicktime_codec_type")
|
||||
col.prop(rd, "quicktime_codec_spatial_quality", text="Quality")
|
||||
|
||||
|
||||
class RENDER_PT_encoding(RenderButtonsPanel):
|
||||
@ -388,54 +369,56 @@ class RENDER_PT_encoding(RenderButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(rd, "ffmpeg_format")
|
||||
col.prop(rd, "ffmpeg_format")
|
||||
if rd.ffmpeg_format in ('AVI', 'QUICKTIME', 'MKV', 'OGG'):
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(rd, "ffmpeg_codec")
|
||||
col.prop(rd, "ffmpeg_codec")
|
||||
else:
|
||||
if wide_ui:
|
||||
split.itemL()
|
||||
split.label()
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(rd, "ffmpeg_video_bitrate")
|
||||
col.prop(rd, "ffmpeg_video_bitrate")
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(rd, "ffmpeg_gopsize")
|
||||
col.prop(rd, "ffmpeg_gopsize")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Rate:")
|
||||
col.itemR(rd, "ffmpeg_minrate", text="Minimum")
|
||||
col.itemR(rd, "ffmpeg_maxrate", text="Maximum")
|
||||
col.itemR(rd, "ffmpeg_buffersize", text="Buffer")
|
||||
col.label(text="Rate:")
|
||||
col.prop(rd, "ffmpeg_minrate", text="Minimum")
|
||||
col.prop(rd, "ffmpeg_maxrate", text="Maximum")
|
||||
col.prop(rd, "ffmpeg_buffersize", text="Buffer")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
|
||||
col.itemR(rd, "ffmpeg_autosplit")
|
||||
col.itemL(text="Mux:")
|
||||
col.itemR(rd, "ffmpeg_muxrate", text="Rate")
|
||||
col.itemR(rd, "ffmpeg_packetsize", text="Packet Size")
|
||||
col.prop(rd, "ffmpeg_autosplit")
|
||||
col.label(text="Mux:")
|
||||
col.prop(rd, "ffmpeg_muxrate", text="Rate")
|
||||
col.prop(rd, "ffmpeg_packetsize", text="Packet Size")
|
||||
|
||||
row = layout.row()
|
||||
row.itemL(text="Audio:")
|
||||
row = layout.row()
|
||||
row.itemR(rd, "ffmpeg_audio_codec", text="Codec")
|
||||
# Audio:
|
||||
layout.prop(rd, "ffmpeg_multiplex_audio", text="Audio")
|
||||
|
||||
split = layout.split()
|
||||
sub = layout.column()
|
||||
sub.active = rd.ffmpeg_multiplex_audio
|
||||
sub.prop(rd, "ffmpeg_audio_codec", text="Codec")
|
||||
sub.separator()
|
||||
|
||||
split = sub.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(rd, "ffmpeg_audio_bitrate")
|
||||
col.itemR(rd, "ffmpeg_audio_mixrate")
|
||||
col.prop(rd, "ffmpeg_audio_bitrate")
|
||||
col.prop(rd, "ffmpeg_audio_mixrate")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(rd, "ffmpeg_multiplex_audio")
|
||||
col.itemR(rd, "ffmpeg_audio_volume", slider=True)
|
||||
col.prop(rd, "ffmpeg_audio_volume", slider=True)
|
||||
|
||||
|
||||
class RENDER_PT_antialiasing(RenderButtonsPanel):
|
||||
@ -445,7 +428,7 @@ class RENDER_PT_antialiasing(RenderButtonsPanel):
|
||||
def draw_header(self, context):
|
||||
rd = context.scene.render_data
|
||||
|
||||
self.layout.itemR(rd, "antialiasing", text="")
|
||||
self.layout.prop(rd, "antialiasing", text="")
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@ -457,13 +440,13 @@ class RENDER_PT_antialiasing(RenderButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.row().itemR(rd, "antialiasing_samples", expand=True)
|
||||
col.itemR(rd, "full_sample")
|
||||
col.row().prop(rd, "antialiasing_samples", expand=True)
|
||||
col.prop(rd, "full_sample")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(rd, "pixel_filter", text="")
|
||||
col.itemR(rd, "filter_size", text="Size", slider=True)
|
||||
col.prop(rd, "pixel_filter", text="")
|
||||
col.prop(rd, "filter_size", text="Size")
|
||||
|
||||
|
||||
class RENDER_PT_dimensions(RenderButtonsPanel):
|
||||
@ -476,42 +459,42 @@ class RENDER_PT_dimensions(RenderButtonsPanel):
|
||||
scene = context.scene
|
||||
rd = scene.render_data
|
||||
wide_ui = context.region.width > narrowui
|
||||
|
||||
|
||||
row = layout.row().split()
|
||||
sub = row.row(align=True).split(percentage=0.75)
|
||||
sub.itemM("RENDER_MT_presets", text="Presets")
|
||||
sub.itemO("render.preset_add", text="Add")
|
||||
sub.menu("RENDER_MT_presets", text="Presets")
|
||||
sub.operator("render.preset_add", text="Add")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
sub = col.column(align=True)
|
||||
sub.itemL(text="Resolution:")
|
||||
sub.itemR(rd, "resolution_x", text="X")
|
||||
sub.itemR(rd, "resolution_y", text="Y")
|
||||
sub.itemR(rd, "resolution_percentage", text="")
|
||||
sub.label(text="Resolution:")
|
||||
sub.prop(rd, "resolution_x", text="X")
|
||||
sub.prop(rd, "resolution_y", text="Y")
|
||||
sub.prop(rd, "resolution_percentage", text="")
|
||||
|
||||
sub.itemL(text="Aspect Ratio:")
|
||||
sub.itemR(rd, "pixel_aspect_x", text="X")
|
||||
sub.itemR(rd, "pixel_aspect_y", text="Y")
|
||||
sub.label(text="Aspect Ratio:")
|
||||
sub.prop(rd, "pixel_aspect_x", text="X")
|
||||
sub.prop(rd, "pixel_aspect_y", text="Y")
|
||||
|
||||
row = col.row()
|
||||
row.itemR(rd, "use_border", text="Border")
|
||||
row.prop(rd, "use_border", text="Border")
|
||||
sub = row.row()
|
||||
sub.active = rd.use_border
|
||||
sub.itemR(rd, "crop_to_border", text="Crop")
|
||||
sub.prop(rd, "crop_to_border", text="Crop")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
sub = col.column(align=True)
|
||||
sub.itemL(text="Frame Range:")
|
||||
sub.itemR(scene, "start_frame", text="Start")
|
||||
sub.itemR(scene, "end_frame", text="End")
|
||||
sub.itemR(scene, "frame_step", text="Step")
|
||||
sub.label(text="Frame Range:")
|
||||
sub.prop(scene, "start_frame", text="Start")
|
||||
sub.prop(scene, "end_frame", text="End")
|
||||
sub.prop(scene, "frame_step", text="Step")
|
||||
|
||||
sub.itemL(text="Frame Rate:")
|
||||
sub.itemR(rd, "fps")
|
||||
sub.itemR(rd, "fps_base", text="/")
|
||||
sub.label(text="Frame Rate:")
|
||||
sub.prop(rd, "fps")
|
||||
sub.prop(rd, "fps_base", text="/")
|
||||
|
||||
|
||||
class RENDER_PT_stamp(RenderButtonsPanel):
|
||||
@ -522,7 +505,7 @@ class RENDER_PT_stamp(RenderButtonsPanel):
|
||||
def draw_header(self, context):
|
||||
rd = context.scene.render_data
|
||||
|
||||
self.layout.itemR(rd, "render_stamp", text="")
|
||||
self.layout.prop(rd, "render_stamp", text="")
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@ -535,29 +518,29 @@ class RENDER_PT_stamp(RenderButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(rd, "stamp_time", text="Time")
|
||||
col.itemR(rd, "stamp_date", text="Date")
|
||||
col.itemR(rd, "stamp_render_time", text="RenderTime")
|
||||
col.itemR(rd, "stamp_frame", text="Frame")
|
||||
col.itemR(rd, "stamp_scene", text="Scene")
|
||||
col.itemR(rd, "stamp_camera", text="Camera")
|
||||
col.itemR(rd, "stamp_filename", text="Filename")
|
||||
col.itemR(rd, "stamp_marker", text="Marker")
|
||||
col.itemR(rd, "stamp_sequence_strip", text="Seq. Strip")
|
||||
col.prop(rd, "stamp_time", text="Time")
|
||||
col.prop(rd, "stamp_date", text="Date")
|
||||
col.prop(rd, "stamp_render_time", text="RenderTime")
|
||||
col.prop(rd, "stamp_frame", text="Frame")
|
||||
col.prop(rd, "stamp_scene", text="Scene")
|
||||
col.prop(rd, "stamp_camera", text="Camera")
|
||||
col.prop(rd, "stamp_filename", text="Filename")
|
||||
col.prop(rd, "stamp_marker", text="Marker")
|
||||
col.prop(rd, "stamp_sequence_strip", text="Seq. Strip")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.active = rd.render_stamp
|
||||
col.itemR(rd, "stamp_foreground", slider=True)
|
||||
col.itemR(rd, "stamp_background", slider=True)
|
||||
col.itemS()
|
||||
col.itemR(rd, "stamp_font_size", text="Font Size")
|
||||
col.prop(rd, "stamp_foreground", slider=True)
|
||||
col.prop(rd, "stamp_background", slider=True)
|
||||
col.separator()
|
||||
col.prop(rd, "stamp_font_size", text="Font Size")
|
||||
|
||||
row = layout.split(percentage=0.2)
|
||||
row.itemR(rd, "stamp_note", text="Note")
|
||||
row.prop(rd, "stamp_note", text="Note")
|
||||
sub = row.row()
|
||||
sub.active = rd.stamp_note
|
||||
sub.itemR(rd, "stamp_note_text", text="")
|
||||
sub.prop(rd, "stamp_note_text", text="")
|
||||
|
||||
|
||||
bpy.types.register(RENDER_MT_presets)
|
||||
@ -568,7 +551,6 @@ bpy.types.register(RENDER_PT_dimensions)
|
||||
bpy.types.register(RENDER_PT_antialiasing)
|
||||
bpy.types.register(RENDER_PT_shading)
|
||||
bpy.types.register(RENDER_PT_output)
|
||||
bpy.types.register(RENDER_PT_QTencoding)
|
||||
bpy.types.register(RENDER_PT_encoding)
|
||||
bpy.types.register(RENDER_PT_performance)
|
||||
bpy.types.register(RENDER_PT_post_processing)
|
||||
|
@ -41,11 +41,11 @@ class SCENE_PT_scene(SceneButtonsPanel):
|
||||
scene = context.scene
|
||||
|
||||
if wide_ui:
|
||||
layout.itemR(scene, "camera")
|
||||
layout.itemR(scene, "set", text="Background")
|
||||
layout.prop(scene, "camera")
|
||||
layout.prop(scene, "set", text="Background")
|
||||
else:
|
||||
layout.itemR(scene, "camera", text="")
|
||||
layout.itemR(scene, "set", text="")
|
||||
layout.prop(scene, "camera", text="")
|
||||
layout.prop(scene, "set", text="")
|
||||
|
||||
|
||||
class SCENE_PT_unit(SceneButtonsPanel):
|
||||
@ -58,17 +58,17 @@ class SCENE_PT_unit(SceneButtonsPanel):
|
||||
unit = context.scene.unit_settings
|
||||
|
||||
col = layout.column()
|
||||
col.row().itemR(unit, "system", expand=True)
|
||||
col.row().prop(unit, "system", expand=True)
|
||||
|
||||
split = layout.split()
|
||||
split.active = (unit.system != 'NONE')
|
||||
|
||||
col = split.column()
|
||||
col.itemR(unit, "scale_length", text="Scale")
|
||||
col.prop(unit, "scale_length", text="Scale")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(unit, "use_separate")
|
||||
col.prop(unit, "use_separate")
|
||||
|
||||
|
||||
class SCENE_PT_keying_sets(SceneButtonsPanel):
|
||||
@ -85,29 +85,29 @@ class SCENE_PT_keying_sets(SceneButtonsPanel):
|
||||
col.template_list(scene, "keying_sets", scene, "active_keying_set_index", rows=2)
|
||||
|
||||
col = row.column(align=True)
|
||||
col.itemO("anim.keying_set_add", icon='ICON_ZOOMIN', text="")
|
||||
col.itemO("anim.keying_set_remove", icon='ICON_ZOOMOUT', text="")
|
||||
col.operator("anim.keying_set_add", icon='ICON_ZOOMIN', text="")
|
||||
col.operator("anim.keying_set_remove", icon='ICON_ZOOMOUT', text="")
|
||||
|
||||
ks = scene.active_keying_set
|
||||
if ks:
|
||||
row = layout.row()
|
||||
|
||||
col = row.column()
|
||||
col.itemR(ks, "name")
|
||||
col.itemR(ks, "absolute")
|
||||
col.prop(ks, "name")
|
||||
col.prop(ks, "absolute")
|
||||
|
||||
if wide_ui:
|
||||
col = row.column()
|
||||
col.itemL(text="Keyframing Settings:")
|
||||
col.itemR(ks, "insertkey_needed", text="Needed")
|
||||
col.itemR(ks, "insertkey_visual", text="Visual")
|
||||
col.label(text="Keyframing Settings:")
|
||||
col.prop(ks, "insertkey_needed", text="Needed")
|
||||
col.prop(ks, "insertkey_visual", text="Visual")
|
||||
|
||||
|
||||
class SCENE_PT_keying_set_paths(SceneButtonsPanel):
|
||||
bl_label = "Active Keying Set"
|
||||
|
||||
def poll(self, context):
|
||||
return (context.scene != None) and (context.scene.active_keying_set != None)
|
||||
return (context.scene.active_keying_set is not None)
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@ -117,7 +117,7 @@ class SCENE_PT_keying_set_paths(SceneButtonsPanel):
|
||||
wide_ui = context.region.width > narrowui
|
||||
|
||||
row = layout.row()
|
||||
row.itemL(text="Paths:")
|
||||
row.label(text="Paths:")
|
||||
|
||||
row = layout.row()
|
||||
|
||||
@ -125,13 +125,13 @@ class SCENE_PT_keying_set_paths(SceneButtonsPanel):
|
||||
col.template_list(ks, "paths", ks, "active_path_index", rows=2)
|
||||
|
||||
col = row.column(align=True)
|
||||
col.itemO("anim.keying_set_path_add", icon='ICON_ZOOMIN', text="")
|
||||
col.itemO("anim.keying_set_path_remove", icon='ICON_ZOOMOUT', text="")
|
||||
col.operator("anim.keying_set_path_add", icon='ICON_ZOOMIN', text="")
|
||||
col.operator("anim.keying_set_path_remove", icon='ICON_ZOOMOUT', text="")
|
||||
|
||||
ksp = ks.active_path
|
||||
if ksp:
|
||||
col = layout.column()
|
||||
col.itemL(text="Target:")
|
||||
col.label(text="Target:")
|
||||
col.template_any_ID(ksp, "id", "id_type")
|
||||
col.template_path_builder(ksp, "rna_path", ksp.id)
|
||||
|
||||
@ -139,17 +139,17 @@ class SCENE_PT_keying_set_paths(SceneButtonsPanel):
|
||||
row = layout.row()
|
||||
|
||||
col = row.column()
|
||||
col.itemL(text="Array Target:")
|
||||
col.itemR(ksp, "entire_array")
|
||||
if ksp.entire_array == False:
|
||||
col.itemR(ksp, "array_index")
|
||||
col.label(text="Array Target:")
|
||||
col.prop(ksp, "entire_array")
|
||||
if ksp.entire_array is False:
|
||||
col.prop(ksp, "array_index")
|
||||
|
||||
if wide_ui:
|
||||
col = row.column()
|
||||
col.itemL(text="F-Curve Grouping:")
|
||||
col.itemR(ksp, "grouping")
|
||||
col.label(text="F-Curve Grouping:")
|
||||
col.prop(ksp, "grouping")
|
||||
if ksp.grouping == 'NAMED':
|
||||
col.itemR(ksp, "group")
|
||||
col.prop(ksp, "group")
|
||||
|
||||
|
||||
class SCENE_PT_physics(SceneButtonsPanel):
|
||||
@ -157,7 +157,7 @@ class SCENE_PT_physics(SceneButtonsPanel):
|
||||
COMPAT_ENGINES = set(['BLENDER_RENDER'])
|
||||
|
||||
def draw_header(self, context):
|
||||
self.layout.itemR(context.scene, "use_gravity", text="")
|
||||
self.layout.prop(context.scene, "use_gravity", text="")
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@ -168,9 +168,9 @@ class SCENE_PT_physics(SceneButtonsPanel):
|
||||
layout.active = scene.use_gravity
|
||||
|
||||
if wide_ui:
|
||||
layout.itemR(scene, "gravity", text="")
|
||||
layout.prop(scene, "gravity", text="")
|
||||
else:
|
||||
layout.column().itemR(scene, "gravity", text="")
|
||||
layout.column().prop(scene, "gravity", text="")
|
||||
|
||||
bpy.types.register(SCENE_PT_scene)
|
||||
bpy.types.register(SCENE_PT_unit)
|
||||
|
@ -99,8 +99,8 @@ class TEXTURE_PT_context_texture(TextureButtonsPanel):
|
||||
row.template_list(idblock, "textures", idblock, "active_texture_index", rows=2)
|
||||
|
||||
col = row.column(align=True)
|
||||
col.item_enumO("texture.slot_move", "type", 'UP', text="", icon='ICON_TRIA_UP')
|
||||
col.item_enumO("texture.slot_move", "type", 'DOWN', text="", icon='ICON_TRIA_DOWN')
|
||||
col.operator("texture.slot_move", text="", icon='ICON_TRIA_UP').type = 'UP'
|
||||
col.operator("texture.slot_move", text="", icon='ICON_TRIA_DOWN').type = 'DOWN'
|
||||
|
||||
|
||||
if wide_ui:
|
||||
@ -118,10 +118,10 @@ class TEXTURE_PT_context_texture(TextureButtonsPanel):
|
||||
context.weight_paint_object or
|
||||
context.texture_paint_object):
|
||||
|
||||
split.itemR(space, "brush_texture", text="Brush", toggle=True)
|
||||
split.prop(space, "brush_texture", text="Brush", toggle=True)
|
||||
|
||||
if tex:
|
||||
layout.itemR(tex, "use_nodes")
|
||||
layout.prop(tex, "use_nodes")
|
||||
|
||||
split = layout.split(percentage=0.2)
|
||||
|
||||
@ -129,15 +129,15 @@ class TEXTURE_PT_context_texture(TextureButtonsPanel):
|
||||
slot = context.texture_slot
|
||||
|
||||
if slot:
|
||||
split.itemL(text="Output:")
|
||||
split.itemR(slot, "output_node", text="")
|
||||
split.label(text="Output:")
|
||||
split.prop(slot, "output_node", text="")
|
||||
|
||||
else:
|
||||
if wide_ui:
|
||||
split.itemL(text="Type:")
|
||||
split.itemR(tex, "type", text="")
|
||||
split.label(text="Type:")
|
||||
split.prop(tex, "type", text="")
|
||||
else:
|
||||
layout.itemR(tex, "type", text="")
|
||||
layout.prop(tex, "type", text="")
|
||||
|
||||
|
||||
class TEXTURE_PT_colors(TextureButtonsPanel):
|
||||
@ -150,24 +150,24 @@ class TEXTURE_PT_colors(TextureButtonsPanel):
|
||||
tex = context.texture
|
||||
wide_ui = context.region.width > narrowui
|
||||
|
||||
layout.itemR(tex, "use_color_ramp", text="Ramp")
|
||||
layout.prop(tex, "use_color_ramp", text="Ramp")
|
||||
if tex.use_color_ramp:
|
||||
layout.template_color_ramp(tex, "color_ramp", expand=True)
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="RGB Multiply:")
|
||||
col.label(text="RGB Multiply:")
|
||||
sub = col.column(align=True)
|
||||
sub.itemR(tex, "factor_red", text="R")
|
||||
sub.itemR(tex, "factor_green", text="G")
|
||||
sub.itemR(tex, "factor_blue", text="B")
|
||||
sub.prop(tex, "factor_red", text="R")
|
||||
sub.prop(tex, "factor_green", text="G")
|
||||
sub.prop(tex, "factor_blue", text="B")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Adjust:")
|
||||
col.itemR(tex, "brightness")
|
||||
col.itemR(tex, "contrast")
|
||||
col.label(text="Adjust:")
|
||||
col.prop(tex, "brightness")
|
||||
col.prop(tex, "contrast")
|
||||
|
||||
# Texture Slot Panels #
|
||||
|
||||
@ -194,74 +194,74 @@ class TEXTURE_PT_mapping(TextureSlotPanel):
|
||||
if type(idblock) != bpy.types.Brush:
|
||||
split = layout.split(percentage=0.3)
|
||||
col = split.column()
|
||||
col.itemL(text="Coordinates:")
|
||||
col.label(text="Coordinates:")
|
||||
col = split.column()
|
||||
col.itemR(tex, "texture_coordinates", text="")
|
||||
col.prop(tex, "texture_coordinates", text="")
|
||||
|
||||
if tex.texture_coordinates == 'ORCO':
|
||||
"""
|
||||
ob = context.object
|
||||
if ob and ob.type == 'MESH':
|
||||
split = layout.split(percentage=0.3)
|
||||
split.itemL(text="Mesh:")
|
||||
split.itemR(ob.data, "texco_mesh", text="")
|
||||
split.label(text="Mesh:")
|
||||
split.prop(ob.data, "texco_mesh", text="")
|
||||
"""
|
||||
elif tex.texture_coordinates == 'UV':
|
||||
split = layout.split(percentage=0.3)
|
||||
split.itemL(text="Layer:")
|
||||
split.label(text="Layer:")
|
||||
ob = context.object
|
||||
if ob and ob.type == 'MESH':
|
||||
split.item_pointerR(tex, "uv_layer", ob.data, "uv_textures", text="")
|
||||
split.prop_object(tex, "uv_layer", ob.data, "uv_textures", text="")
|
||||
else:
|
||||
split.itemR(tex, "uv_layer", text="")
|
||||
split.prop(tex, "uv_layer", text="")
|
||||
|
||||
elif tex.texture_coordinates == 'OBJECT':
|
||||
split = layout.split(percentage=0.3)
|
||||
split.itemL(text="Object:")
|
||||
split.itemR(tex, "object", text="")
|
||||
split.label(text="Object:")
|
||||
split.prop(tex, "object", text="")
|
||||
|
||||
if type(idblock) == bpy.types.Brush:
|
||||
layout.itemR(tex, "map_mode", expand=True)
|
||||
layout.prop(tex, "map_mode", expand=True)
|
||||
|
||||
row = layout.row()
|
||||
row.active = tex.map_mode in ('FIXED', 'TILED')
|
||||
row.itemR(tex, "angle")
|
||||
row.prop(tex, "angle")
|
||||
|
||||
row = layout.row()
|
||||
row.active = tex.map_mode in ('TILED', '3D')
|
||||
row.column().itemR(tex, "size")
|
||||
row.column().prop(tex, "size")
|
||||
else:
|
||||
if type(idblock) == bpy.types.Material:
|
||||
split = layout.split(percentage=0.3)
|
||||
split.itemL(text="Projection:")
|
||||
split.itemR(tex, "mapping", text="")
|
||||
split.label(text="Projection:")
|
||||
split.prop(tex, "mapping", text="")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
if tex.texture_coordinates in ('ORCO', 'UV'):
|
||||
col.itemR(tex, "from_dupli")
|
||||
col.prop(tex, "from_dupli")
|
||||
elif tex.texture_coordinates == 'OBJECT':
|
||||
col.itemR(tex, "from_original")
|
||||
col.prop(tex, "from_original")
|
||||
elif wide_ui:
|
||||
col.itemL()
|
||||
col.label()
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
row = col.row()
|
||||
row.itemR(tex, "x_mapping", text="")
|
||||
row.itemR(tex, "y_mapping", text="")
|
||||
row.itemR(tex, "z_mapping", text="")
|
||||
row.prop(tex, "x_mapping", text="")
|
||||
row.prop(tex, "y_mapping", text="")
|
||||
row.prop(tex, "z_mapping", text="")
|
||||
|
||||
# any non brush
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(tex, "offset")
|
||||
col.prop(tex, "offset")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(tex, "size")
|
||||
col.prop(tex, "size")
|
||||
|
||||
|
||||
class TEXTURE_PT_influence(TextureSlotPanel):
|
||||
@ -282,43 +282,43 @@ class TEXTURE_PT_influence(TextureSlotPanel):
|
||||
|
||||
def factor_but(layout, active, toggle, factor, name):
|
||||
row = layout.row(align=True)
|
||||
row.itemR(tex, toggle, text="")
|
||||
row.prop(tex, toggle, text="")
|
||||
sub = row.row()
|
||||
sub.active = active
|
||||
sub.itemR(tex, factor, text=name, slider=True)
|
||||
sub.prop(tex, factor, text=name, slider=True)
|
||||
|
||||
if type(idblock) == bpy.types.Material:
|
||||
if idblock.type in ('SURFACE', 'HALO', 'WIRE'):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Diffuse:")
|
||||
col.label(text="Diffuse:")
|
||||
factor_but(col, tex.map_diffuse, "map_diffuse", "diffuse_factor", "Intensity")
|
||||
factor_but(col, tex.map_colordiff, "map_colordiff", "colordiff_factor", "Color")
|
||||
factor_but(col, tex.map_alpha, "map_alpha", "alpha_factor", "Alpha")
|
||||
factor_but(col, tex.map_translucency, "map_translucency", "translucency_factor", "Translucency")
|
||||
|
||||
col.itemL(text="Specular:")
|
||||
col.label(text="Specular:")
|
||||
factor_but(col, tex.map_specular, "map_specular", "specular_factor", "Intensity")
|
||||
factor_but(col, tex.map_colorspec, "map_colorspec", "colorspec_factor", "Color")
|
||||
factor_but(col, tex.map_hardness, "map_hardness", "hardness_factor", "Hardness")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Shading:")
|
||||
col.label(text="Shading:")
|
||||
factor_but(col, tex.map_ambient, "map_ambient", "ambient_factor", "Ambient")
|
||||
factor_but(col, tex.map_emit, "map_emit", "emit_factor", "Emit")
|
||||
factor_but(col, tex.map_mirror, "map_mirror", "mirror_factor", "Mirror")
|
||||
factor_but(col, tex.map_raymir, "map_raymir", "raymir_factor", "Ray Mirror")
|
||||
|
||||
col.itemL(text="Geometry:")
|
||||
col.label(text="Geometry:")
|
||||
factor_but(col, tex.map_normal, "map_normal", "normal_factor", "Normal")
|
||||
factor_but(col, tex.map_warp, "map_warp", "warp_factor", "Warp")
|
||||
factor_but(col, tex.map_displacement, "map_displacement", "displacement_factor", "Displace")
|
||||
|
||||
#sub = col.column()
|
||||
#sub.active = tex.map_translucency or tex.map_emit or tex.map_alpha or tex.map_raymir or tex.map_hardness or tex.map_ambient or tex.map_specularity or tex.map_reflection or tex.map_mirror
|
||||
#sub.itemR(tex, "default_value", text="Amount", slider=True)
|
||||
#sub.prop(tex, "default_value", text="Amount", slider=True)
|
||||
elif idblock.type == 'VOLUME':
|
||||
split = layout.split()
|
||||
|
||||
@ -330,7 +330,7 @@ class TEXTURE_PT_influence(TextureSlotPanel):
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text=" ")
|
||||
col.label(text=" ")
|
||||
factor_but(col, tex.map_alpha, "map_coloremission", "coloremission_factor", "Emission Color")
|
||||
factor_but(col, tex.map_colortransmission, "map_colortransmission", "colortransmission_factor", "Transmission Color")
|
||||
factor_but(col, tex.map_colorreflection, "map_colorreflection", "colorreflection_factor", "Reflection Color")
|
||||
@ -357,24 +357,24 @@ class TEXTURE_PT_influence(TextureSlotPanel):
|
||||
factor_but(col, tex.map_zenith_up, "map_zenith_up", "zenith_up_factor", "Zenith Up")
|
||||
factor_but(col, tex.map_zenith_down, "map_zenith_down", "zenith_down_factor", "Zenith Down")
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(tex, "blend_type", text="Blend")
|
||||
col.itemR(tex, "rgb_to_intensity")
|
||||
col.prop(tex, "blend_type", text="Blend")
|
||||
col.prop(tex, "rgb_to_intensity")
|
||||
sub = col.column()
|
||||
sub.active = tex.rgb_to_intensity
|
||||
sub.itemR(tex, "color", text="")
|
||||
sub.prop(tex, "color", text="")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(tex, "negate", text="Negative")
|
||||
col.itemR(tex, "stencil")
|
||||
col.prop(tex, "negate", text="Negative")
|
||||
col.prop(tex, "stencil")
|
||||
|
||||
if type(idblock) in (bpy.types.Material, bpy.types.World):
|
||||
col.itemR(tex, "default_value", text="DVar", slider=True)
|
||||
col.prop(tex, "default_value", text="DVar", slider=True)
|
||||
|
||||
# Texture Type Panels #
|
||||
|
||||
@ -396,23 +396,23 @@ class TEXTURE_PT_clouds(TextureTypePanel):
|
||||
tex = context.texture
|
||||
wide_ui = context.region.width > narrowui
|
||||
|
||||
layout.itemR(tex, "stype", expand=True)
|
||||
layout.itemL(text="Noise:")
|
||||
layout.itemR(tex, "noise_type", text="Type", expand=True)
|
||||
layout.prop(tex, "stype", expand=True)
|
||||
layout.label(text="Noise:")
|
||||
layout.prop(tex, "noise_type", text="Type", expand=True)
|
||||
if wide_ui:
|
||||
layout.itemR(tex, "noise_basis", text="Basis")
|
||||
layout.prop(tex, "noise_basis", text="Basis")
|
||||
else:
|
||||
layout.itemR(tex, "noise_basis", text="")
|
||||
layout.prop(tex, "noise_basis", text="")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(tex, "noise_size", text="Size")
|
||||
col.itemR(tex, "noise_depth", text="Depth")
|
||||
col.prop(tex, "noise_size", text="Size")
|
||||
col.prop(tex, "noise_depth", text="Depth")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(tex, "nabla", text="Nabla")
|
||||
col.prop(tex, "nabla", text="Nabla")
|
||||
|
||||
|
||||
class TEXTURE_PT_wood(TextureTypePanel):
|
||||
@ -425,30 +425,30 @@ class TEXTURE_PT_wood(TextureTypePanel):
|
||||
tex = context.texture
|
||||
wide_ui = context.region.width > narrowui
|
||||
|
||||
layout.itemR(tex, "noisebasis2", expand=True)
|
||||
layout.prop(tex, "noisebasis2", expand=True)
|
||||
if wide_ui:
|
||||
layout.itemR(tex, "stype", expand=True)
|
||||
layout.prop(tex, "stype", expand=True)
|
||||
else:
|
||||
layout.itemR(tex, "stype", text="")
|
||||
layout.prop(tex, "stype", text="")
|
||||
|
||||
col = layout.column()
|
||||
col.active = tex.stype in ('RINGNOISE', 'BANDNOISE')
|
||||
col.itemL(text="Noise:")
|
||||
col.row().itemR(tex, "noise_type", text="Type", expand=True)
|
||||
col.label(text="Noise:")
|
||||
col.row().prop(tex, "noise_type", text="Type", expand=True)
|
||||
if wide_ui:
|
||||
layout.itemR(tex, "noise_basis", text="Basis")
|
||||
layout.prop(tex, "noise_basis", text="Basis")
|
||||
else:
|
||||
layout.itemR(tex, "noise_basis", text="")
|
||||
layout.prop(tex, "noise_basis", text="")
|
||||
|
||||
split = layout.split()
|
||||
split.active = tex.stype in ('RINGNOISE', 'BANDNOISE')
|
||||
|
||||
col = split.column()
|
||||
col.itemR(tex, "noise_size", text="Size")
|
||||
col.itemR(tex, "turbulence")
|
||||
col.prop(tex, "noise_size", text="Size")
|
||||
col.prop(tex, "turbulence")
|
||||
|
||||
col = split.column()
|
||||
col.itemR(tex, "nabla")
|
||||
col.prop(tex, "nabla")
|
||||
|
||||
|
||||
class TEXTURE_PT_marble(TextureTypePanel):
|
||||
@ -461,25 +461,25 @@ class TEXTURE_PT_marble(TextureTypePanel):
|
||||
tex = context.texture
|
||||
wide_ui = context.region.width > narrowui
|
||||
|
||||
layout.itemR(tex, "stype", expand=True)
|
||||
layout.itemR(tex, "noisebasis2", expand=True)
|
||||
layout.itemL(text="Noise:")
|
||||
layout.itemR(tex, "noise_type", text="Type", expand=True)
|
||||
layout.prop(tex, "stype", expand=True)
|
||||
layout.prop(tex, "noisebasis2", expand=True)
|
||||
layout.label(text="Noise:")
|
||||
layout.prop(tex, "noise_type", text="Type", expand=True)
|
||||
if wide_ui:
|
||||
layout.itemR(tex, "noise_basis", text="Basis")
|
||||
layout.prop(tex, "noise_basis", text="Basis")
|
||||
else:
|
||||
layout.itemR(tex, "noise_basis", text="")
|
||||
layout.prop(tex, "noise_basis", text="")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(tex, "noise_size", text="Size")
|
||||
col.itemR(tex, "noise_depth", text="Depth")
|
||||
col.prop(tex, "noise_size", text="Size")
|
||||
col.prop(tex, "noise_depth", text="Depth")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(tex, "turbulence")
|
||||
col.itemR(tex, "nabla")
|
||||
col.prop(tex, "turbulence")
|
||||
col.prop(tex, "nabla")
|
||||
|
||||
|
||||
class TEXTURE_PT_magic(TextureTypePanel):
|
||||
@ -495,11 +495,11 @@ class TEXTURE_PT_magic(TextureTypePanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(tex, "noise_depth", text="Depth")
|
||||
col.prop(tex, "noise_depth", text="Depth")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(tex, "turbulence")
|
||||
col.prop(tex, "turbulence")
|
||||
|
||||
|
||||
class TEXTURE_PT_blend(TextureTypePanel):
|
||||
@ -513,14 +513,14 @@ class TEXTURE_PT_blend(TextureTypePanel):
|
||||
wide_ui = context.region.width > narrowui
|
||||
|
||||
if wide_ui:
|
||||
layout.itemR(tex, "progression")
|
||||
layout.prop(tex, "progression")
|
||||
else:
|
||||
layout.itemR(tex, "progression", text="")
|
||||
layout.prop(tex, "progression", text="")
|
||||
|
||||
sub = layout.row()
|
||||
|
||||
sub.active = (tex.progression in ('LINEAR', 'QUADRATIC', 'EASING', 'RADIAL'))
|
||||
sub.itemR(tex, "flip_axis", expand=True)
|
||||
sub.prop(tex, "flip_axis", expand=True)
|
||||
|
||||
|
||||
class TEXTURE_PT_stucci(TextureTypePanel):
|
||||
@ -533,22 +533,22 @@ class TEXTURE_PT_stucci(TextureTypePanel):
|
||||
tex = context.texture
|
||||
wide_ui = context.region.width > narrowui
|
||||
|
||||
layout.itemR(tex, "stype", expand=True)
|
||||
layout.itemL(text="Noise:")
|
||||
layout.itemR(tex, "noise_type", text="Type", expand=True)
|
||||
layout.prop(tex, "stype", expand=True)
|
||||
layout.label(text="Noise:")
|
||||
layout.prop(tex, "noise_type", text="Type", expand=True)
|
||||
if wide_ui:
|
||||
layout.itemR(tex, "noise_basis", text="Basis")
|
||||
layout.prop(tex, "noise_basis", text="Basis")
|
||||
else:
|
||||
layout.itemR(tex, "noise_basis", text="")
|
||||
layout.prop(tex, "noise_basis", text="")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(tex, "noise_size", text="Size")
|
||||
col.prop(tex, "noise_size", text="Size")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(tex, "turbulence")
|
||||
col.prop(tex, "turbulence")
|
||||
|
||||
|
||||
class TEXTURE_PT_image(TextureTypePanel):
|
||||
@ -578,38 +578,38 @@ class TEXTURE_PT_image_sampling(TextureTypePanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Alpha:")
|
||||
col.itemR(tex, "use_alpha", text="Use")
|
||||
col.itemR(tex, "calculate_alpha", text="Calculate")
|
||||
col.itemR(tex, "invert_alpha", text="Invert")
|
||||
col.itemS()
|
||||
col.itemR(tex, "flip_axis", text="Flip X/Y Axis")
|
||||
col.label(text="Alpha:")
|
||||
col.prop(tex, "use_alpha", text="Use")
|
||||
col.prop(tex, "calculate_alpha", text="Calculate")
|
||||
col.prop(tex, "invert_alpha", text="Invert")
|
||||
col.separator()
|
||||
col.prop(tex, "flip_axis", text="Flip X/Y Axis")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
else:
|
||||
col.itemS()
|
||||
col.itemR(tex, "normal_map")
|
||||
col.separator()
|
||||
col.prop(tex, "normal_map")
|
||||
row = col.row()
|
||||
row.active = tex.normal_map
|
||||
row.itemR(tex, "normal_space", text="")
|
||||
row.prop(tex, "normal_space", text="")
|
||||
|
||||
col.itemL(text="Filter:")
|
||||
col.itemR(tex, "filter", text="")
|
||||
col.itemR(tex, "filter_size")
|
||||
col.itemR(tex, "filter_size_minimum")
|
||||
col.itemR(tex, "mipmap")
|
||||
col.label(text="Filter:")
|
||||
col.prop(tex, "filter", text="")
|
||||
col.prop(tex, "filter_size")
|
||||
col.prop(tex, "filter_size_minimum")
|
||||
col.prop(tex, "mipmap")
|
||||
|
||||
row = col.row()
|
||||
row.active = tex.mipmap
|
||||
row.itemR(tex, "mipmap_gauss")
|
||||
row.prop(tex, "mipmap_gauss")
|
||||
|
||||
col.itemR(tex, "interpolation")
|
||||
col.prop(tex, "interpolation")
|
||||
if tex.mipmap and tex.filter != 'DEFAULT':
|
||||
if tex.filter == 'FELINE':
|
||||
col.itemR(tex, "filter_probes", text="Probes")
|
||||
col.prop(tex, "filter_probes", text="Probes")
|
||||
else:
|
||||
col.itemR(tex, "filter_eccentricity", text="Eccentricity")
|
||||
col.prop(tex, "filter_eccentricity", text="Eccentricity")
|
||||
|
||||
|
||||
class TEXTURE_PT_image_mapping(TextureTypePanel):
|
||||
@ -624,50 +624,50 @@ class TEXTURE_PT_image_mapping(TextureTypePanel):
|
||||
wide_ui = context.region.width > narrowui
|
||||
|
||||
if wide_ui:
|
||||
layout.itemR(tex, "extension")
|
||||
layout.prop(tex, "extension")
|
||||
else:
|
||||
layout.itemR(tex, "extension", text="")
|
||||
layout.prop(tex, "extension", text="")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
if tex.extension == 'REPEAT':
|
||||
col = split.column(align=True)
|
||||
col.itemL(text="Repeat:")
|
||||
col.itemR(tex, "repeat_x", text="X")
|
||||
col.itemR(tex, "repeat_y", text="Y")
|
||||
col.label(text="Repeat:")
|
||||
col.prop(tex, "repeat_x", text="X")
|
||||
col.prop(tex, "repeat_y", text="Y")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column(align=True)
|
||||
col.itemL(text="Mirror:")
|
||||
col.itemR(tex, "mirror_x", text="X")
|
||||
col.itemR(tex, "mirror_y", text="Y")
|
||||
layout.itemS()
|
||||
col.label(text="Mirror:")
|
||||
col.prop(tex, "mirror_x", text="X")
|
||||
col.prop(tex, "mirror_y", text="Y")
|
||||
layout.separator()
|
||||
|
||||
elif tex.extension == 'CHECKER':
|
||||
col = split.column(align=True)
|
||||
row = col.row()
|
||||
row.itemR(tex, "checker_even", text="Even")
|
||||
row.itemR(tex, "checker_odd", text="Odd")
|
||||
row.prop(tex, "checker_even", text="Even")
|
||||
row.prop(tex, "checker_odd", text="Odd")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(tex, "checker_distance", text="Distance")
|
||||
col.prop(tex, "checker_distance", text="Distance")
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column(align=True)
|
||||
#col.itemR(tex, "crop_rectangle")
|
||||
col.itemL(text="Crop Minimum:")
|
||||
col.itemR(tex, "crop_min_x", text="X")
|
||||
col.itemR(tex, "crop_min_y", text="Y")
|
||||
#col.prop(tex, "crop_rectangle")
|
||||
col.label(text="Crop Minimum:")
|
||||
col.prop(tex, "crop_min_x", text="X")
|
||||
col.prop(tex, "crop_min_y", text="Y")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column(align=True)
|
||||
col.itemL(text="Crop Maximum:")
|
||||
col.itemR(tex, "crop_max_x", text="X")
|
||||
col.itemR(tex, "crop_max_y", text="Y")
|
||||
col.label(text="Crop Maximum:")
|
||||
col.prop(tex, "crop_max_x", text="X")
|
||||
col.prop(tex, "crop_max_y", text="Y")
|
||||
|
||||
|
||||
class TEXTURE_PT_plugin(TextureTypePanel):
|
||||
@ -679,7 +679,7 @@ class TEXTURE_PT_plugin(TextureTypePanel):
|
||||
|
||||
# tex = context.texture
|
||||
|
||||
layout.itemL(text="Nothing yet")
|
||||
layout.label(text="Nothing yet")
|
||||
|
||||
|
||||
class TEXTURE_PT_envmap(TextureTypePanel):
|
||||
@ -691,7 +691,7 @@ class TEXTURE_PT_envmap(TextureTypePanel):
|
||||
|
||||
# tex = context.texture
|
||||
|
||||
layout.itemL(text="Nothing yet")
|
||||
layout.label(text="Nothing yet")
|
||||
|
||||
|
||||
class TEXTURE_PT_musgrave(TextureTypePanel):
|
||||
@ -705,40 +705,40 @@ class TEXTURE_PT_musgrave(TextureTypePanel):
|
||||
wide_ui = context.region.width > narrowui
|
||||
|
||||
if wide_ui:
|
||||
layout.itemR(tex, "musgrave_type")
|
||||
layout.prop(tex, "musgrave_type")
|
||||
else:
|
||||
layout.itemR(tex, "musgrave_type", text="")
|
||||
layout.prop(tex, "musgrave_type", text="")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(tex, "highest_dimension", text="Dimension")
|
||||
col.itemR(tex, "lacunarity")
|
||||
col.itemR(tex, "octaves")
|
||||
col.prop(tex, "highest_dimension", text="Dimension")
|
||||
col.prop(tex, "lacunarity")
|
||||
col.prop(tex, "octaves")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
if (tex.musgrave_type in ('HETERO_TERRAIN', 'RIDGED_MULTIFRACTAL', 'HYBRID_MULTIFRACTAL')):
|
||||
col.itemR(tex, "offset")
|
||||
col.prop(tex, "offset")
|
||||
if (tex.musgrave_type in ('RIDGED_MULTIFRACTAL', 'HYBRID_MULTIFRACTAL')):
|
||||
col.itemR(tex, "gain")
|
||||
col.itemR(tex, "noise_intensity", text="Intensity")
|
||||
col.prop(tex, "gain")
|
||||
col.prop(tex, "noise_intensity", text="Intensity")
|
||||
|
||||
layout.itemL(text="Noise:")
|
||||
layout.label(text="Noise:")
|
||||
|
||||
if wide_ui:
|
||||
layout.itemR(tex, "noise_basis", text="Basis")
|
||||
layout.prop(tex, "noise_basis", text="Basis")
|
||||
else:
|
||||
layout.itemR(tex, "noise_basis", text="")
|
||||
layout.prop(tex, "noise_basis", text="")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(tex, "noise_size", text="Size")
|
||||
col.prop(tex, "noise_size", text="Size")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(tex, "nabla")
|
||||
col.prop(tex, "nabla")
|
||||
|
||||
|
||||
class TEXTURE_PT_voronoi(TextureTypePanel):
|
||||
@ -754,34 +754,34 @@ class TEXTURE_PT_voronoi(TextureTypePanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Distance Metric:")
|
||||
col.itemR(tex, "distance_metric", text="")
|
||||
col.label(text="Distance Metric:")
|
||||
col.prop(tex, "distance_metric", text="")
|
||||
sub = col.column()
|
||||
sub.active = tex.distance_metric == 'MINKOVSKY'
|
||||
sub.itemR(tex, "minkovsky_exponent", text="Exponent")
|
||||
col.itemL(text="Coloring:")
|
||||
col.itemR(tex, "coloring", text="")
|
||||
col.itemR(tex, "noise_intensity", text="Intensity")
|
||||
sub.prop(tex, "minkovsky_exponent", text="Exponent")
|
||||
col.label(text="Coloring:")
|
||||
col.prop(tex, "coloring", text="")
|
||||
col.prop(tex, "noise_intensity", text="Intensity")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
sub = col.column(align=True)
|
||||
sub.itemL(text="Feature Weights:")
|
||||
sub.itemR(tex, "weight_1", text="1", slider=True)
|
||||
sub.itemR(tex, "weight_2", text="2", slider=True)
|
||||
sub.itemR(tex, "weight_3", text="3", slider=True)
|
||||
sub.itemR(tex, "weight_4", text="4", slider=True)
|
||||
sub.label(text="Feature Weights:")
|
||||
sub.prop(tex, "weight_1", text="1", slider=True)
|
||||
sub.prop(tex, "weight_2", text="2", slider=True)
|
||||
sub.prop(tex, "weight_3", text="3", slider=True)
|
||||
sub.prop(tex, "weight_4", text="4", slider=True)
|
||||
|
||||
layout.itemL(text="Noise:")
|
||||
layout.label(text="Noise:")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(tex, "noise_size", text="Size")
|
||||
col.prop(tex, "noise_size", text="Size")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(tex, "nabla")
|
||||
col.prop(tex, "nabla")
|
||||
|
||||
|
||||
class TEXTURE_PT_distortednoise(TextureTypePanel):
|
||||
@ -795,21 +795,21 @@ class TEXTURE_PT_distortednoise(TextureTypePanel):
|
||||
wide_ui = context.region.width > narrowui
|
||||
|
||||
if wide_ui:
|
||||
layout.itemR(tex, "noise_distortion")
|
||||
layout.itemR(tex, "noise_basis", text="Basis")
|
||||
layout.prop(tex, "noise_distortion")
|
||||
layout.prop(tex, "noise_basis", text="Basis")
|
||||
else:
|
||||
layout.itemR(tex, "noise_distortion", text="")
|
||||
layout.itemR(tex, "noise_basis", text="")
|
||||
layout.prop(tex, "noise_distortion", text="")
|
||||
layout.prop(tex, "noise_basis", text="")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(tex, "distortion", text="Distortion")
|
||||
col.itemR(tex, "noise_size", text="Size")
|
||||
col.prop(tex, "distortion", text="Distortion")
|
||||
col.prop(tex, "noise_size", text="Size")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(tex, "nabla")
|
||||
col.prop(tex, "nabla")
|
||||
|
||||
|
||||
class TEXTURE_PT_voxeldata(TextureButtonsPanel):
|
||||
@ -825,22 +825,22 @@ class TEXTURE_PT_voxeldata(TextureButtonsPanel):
|
||||
tex = context.texture
|
||||
vd = tex.voxeldata
|
||||
|
||||
layout.itemR(vd, "file_format")
|
||||
layout.prop(vd, "file_format")
|
||||
if vd.file_format in ['BLENDER_VOXEL', 'RAW_8BIT']:
|
||||
layout.itemR(vd, "source_path")
|
||||
layout.prop(vd, "source_path")
|
||||
if vd.file_format == 'RAW_8BIT':
|
||||
layout.itemR(vd, "resolution")
|
||||
layout.prop(vd, "resolution")
|
||||
elif vd.file_format == 'SMOKE':
|
||||
layout.itemR(vd, "domain_object")
|
||||
layout.prop(vd, "domain_object")
|
||||
|
||||
layout.itemR(vd, "still")
|
||||
layout.prop(vd, "still")
|
||||
row = layout.row()
|
||||
row.active = vd.still
|
||||
row.itemR(vd, "still_frame_number")
|
||||
row.prop(vd, "still_frame_number")
|
||||
|
||||
layout.itemR(vd, "interpolation")
|
||||
layout.itemR(vd, "extension")
|
||||
layout.itemR(vd, "intensity")
|
||||
layout.prop(vd, "interpolation")
|
||||
layout.prop(vd, "extension")
|
||||
layout.prop(vd, "intensity")
|
||||
|
||||
|
||||
class TEXTURE_PT_pointdensity(TextureButtonsPanel):
|
||||
@ -858,47 +858,47 @@ class TEXTURE_PT_pointdensity(TextureButtonsPanel):
|
||||
wide_ui = context.region.width > narrowui
|
||||
|
||||
if wide_ui:
|
||||
layout.itemR(pd, "point_source", expand=True)
|
||||
layout.prop(pd, "point_source", expand=True)
|
||||
else:
|
||||
layout.itemR(pd, "point_source", text="")
|
||||
layout.prop(pd, "point_source", text="")
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
if pd.point_source == 'PARTICLE_SYSTEM':
|
||||
col.itemL(text="Object:")
|
||||
col.itemR(pd, "object", text="")
|
||||
col.label(text="Object:")
|
||||
col.prop(pd, "object", text="")
|
||||
|
||||
sub = col.column()
|
||||
sub.enabled = pd.object
|
||||
sub.enabled = bool(pd.object)
|
||||
if pd.object:
|
||||
sub.itemL(text="System:")
|
||||
sub.item_pointerR(pd, "particle_system", pd.object, "particle_systems", text="")
|
||||
sub.itemL(text="Cache:")
|
||||
sub.itemR(pd, "particle_cache", text="")
|
||||
sub.label(text="System:")
|
||||
sub.prop_object(pd, "particle_system", pd.object, "particle_systems", text="")
|
||||
sub.label(text="Cache:")
|
||||
sub.prop(pd, "particle_cache", text="")
|
||||
else:
|
||||
col.itemL(text="Object:")
|
||||
col.itemR(pd, "object", text="")
|
||||
col.itemL(text="Cache:")
|
||||
col.itemR(pd, "vertices_cache", text="")
|
||||
col.label(text="Object:")
|
||||
col.prop(pd, "object", text="")
|
||||
col.label(text="Cache:")
|
||||
col.prop(pd, "vertices_cache", text="")
|
||||
|
||||
col.itemS()
|
||||
col.separator()
|
||||
|
||||
col.itemL(text="Color Source:")
|
||||
col.itemR(pd, "color_source", text="")
|
||||
col.label(text="Color Source:")
|
||||
col.prop(pd, "color_source", text="")
|
||||
if pd.color_source in ('PARTICLE_SPEED', 'PARTICLE_VELOCITY'):
|
||||
col.itemR(pd, "speed_scale")
|
||||
col.prop(pd, "speed_scale")
|
||||
if pd.color_source in ('PARTICLE_SPEED', 'PARTICLE_AGE'):
|
||||
layout.template_color_ramp(pd, "color_ramp", expand=True)
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL()
|
||||
col.itemR(pd, "radius")
|
||||
col.itemL(text="Falloff:")
|
||||
col.itemR(pd, "falloff", text="")
|
||||
col.label()
|
||||
col.prop(pd, "radius")
|
||||
col.label(text="Falloff:")
|
||||
col.prop(pd, "falloff", text="")
|
||||
if pd.falloff == 'SOFT':
|
||||
col.itemR(pd, "falloff_softness")
|
||||
col.prop(pd, "falloff_softness")
|
||||
|
||||
|
||||
class TEXTURE_PT_pointdensity_turbulence(TextureButtonsPanel):
|
||||
@ -914,7 +914,7 @@ class TEXTURE_PT_pointdensity_turbulence(TextureButtonsPanel):
|
||||
tex = context.texture
|
||||
pd = tex.pointdensity
|
||||
|
||||
layout.itemR(pd, "turbulence", text="")
|
||||
layout.prop(pd, "turbulence", text="")
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@ -927,17 +927,17 @@ class TEXTURE_PT_pointdensity_turbulence(TextureButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Influence:")
|
||||
col.itemR(pd, "turbulence_influence", text="")
|
||||
col.itemL(text="Noise Basis:")
|
||||
col.itemR(pd, "noise_basis", text="")
|
||||
col.label(text="Influence:")
|
||||
col.prop(pd, "turbulence_influence", text="")
|
||||
col.label(text="Noise Basis:")
|
||||
col.prop(pd, "noise_basis", text="")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL()
|
||||
col.itemR(pd, "turbulence_size")
|
||||
col.itemR(pd, "turbulence_depth")
|
||||
col.itemR(pd, "turbulence_strength")
|
||||
col.label()
|
||||
col.prop(pd, "turbulence_size")
|
||||
col.prop(pd, "turbulence_depth")
|
||||
col.prop(pd, "turbulence_strength")
|
||||
|
||||
bpy.types.register(TEXTURE_PT_context_texture)
|
||||
bpy.types.register(TEXTURE_PT_preview)
|
||||
|
@ -80,21 +80,21 @@ class WORLD_PT_world(WorldButtonsPanel):
|
||||
|
||||
if wide_ui:
|
||||
row = layout.row()
|
||||
row.itemR(world, "paper_sky")
|
||||
row.itemR(world, "blend_sky")
|
||||
row.itemR(world, "real_sky")
|
||||
row.prop(world, "paper_sky")
|
||||
row.prop(world, "blend_sky")
|
||||
row.prop(world, "real_sky")
|
||||
else:
|
||||
col = layout.column()
|
||||
col.itemR(world, "paper_sky")
|
||||
col.itemR(world, "blend_sky")
|
||||
col.itemR(world, "real_sky")
|
||||
col.prop(world, "paper_sky")
|
||||
col.prop(world, "blend_sky")
|
||||
col.prop(world, "real_sky")
|
||||
|
||||
row = layout.row()
|
||||
row.column().itemR(world, "horizon_color")
|
||||
row.column().prop(world, "horizon_color")
|
||||
col = row.column()
|
||||
col.itemR(world, "zenith_color")
|
||||
col.prop(world, "zenith_color")
|
||||
col.active = world.blend_sky
|
||||
row.column().itemR(world, "ambient_color")
|
||||
row.column().prop(world, "ambient_color")
|
||||
|
||||
|
||||
class WORLD_PT_mist(WorldButtonsPanel):
|
||||
@ -104,7 +104,7 @@ class WORLD_PT_mist(WorldButtonsPanel):
|
||||
def draw_header(self, context):
|
||||
world = context.world
|
||||
|
||||
self.layout.itemR(world.mist, "enabled", text="")
|
||||
self.layout.prop(world.mist, "enabled", text="")
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@ -116,15 +116,15 @@ class WORLD_PT_mist(WorldButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(world.mist, "intensity", slider=True)
|
||||
col.itemR(world.mist, "start")
|
||||
col.prop(world.mist, "intensity", slider=True)
|
||||
col.prop(world.mist, "start")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(world.mist, "depth")
|
||||
col.itemR(world.mist, "height")
|
||||
col.prop(world.mist, "depth")
|
||||
col.prop(world.mist, "height")
|
||||
|
||||
layout.itemR(world.mist, "falloff")
|
||||
layout.prop(world.mist, "falloff")
|
||||
|
||||
|
||||
class WORLD_PT_stars(WorldButtonsPanel):
|
||||
@ -134,7 +134,7 @@ class WORLD_PT_stars(WorldButtonsPanel):
|
||||
def draw_header(self, context):
|
||||
world = context.world
|
||||
|
||||
self.layout.itemR(world.stars, "enabled", text="")
|
||||
self.layout.prop(world.stars, "enabled", text="")
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@ -146,13 +146,13 @@ class WORLD_PT_stars(WorldButtonsPanel):
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(world.stars, "size")
|
||||
col.itemR(world.stars, "color_randomization", text="Colors")
|
||||
col.prop(world.stars, "size")
|
||||
col.prop(world.stars, "color_randomization", text="Colors")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(world.stars, "min_distance", text="Min. Dist")
|
||||
col.itemR(world.stars, "average_separation", text="Separation")
|
||||
col.prop(world.stars, "min_distance", text="Min. Dist")
|
||||
col.prop(world.stars, "average_separation", text="Separation")
|
||||
|
||||
|
||||
class WORLD_PT_ambient_occlusion(WorldButtonsPanel):
|
||||
@ -162,7 +162,7 @@ class WORLD_PT_ambient_occlusion(WorldButtonsPanel):
|
||||
def draw_header(self, context):
|
||||
world = context.world
|
||||
|
||||
self.layout.itemR(world.ambient_occlusion, "enabled", text="")
|
||||
self.layout.prop(world.ambient_occlusion, "enabled", text="")
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@ -171,58 +171,58 @@ class WORLD_PT_ambient_occlusion(WorldButtonsPanel):
|
||||
|
||||
layout.active = ao.enabled
|
||||
|
||||
layout.itemR(ao, "gather_method", expand=True)
|
||||
layout.prop(ao, "gather_method", expand=True)
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemL(text="Attenuation:")
|
||||
col.label(text="Attenuation:")
|
||||
if ao.gather_method == 'RAYTRACE':
|
||||
col.itemR(ao, "distance")
|
||||
col.itemR(ao, "falloff")
|
||||
col.prop(ao, "distance")
|
||||
col.prop(ao, "falloff")
|
||||
sub = col.row()
|
||||
sub.active = ao.falloff
|
||||
sub.itemR(ao, "falloff_strength", text="Strength")
|
||||
sub.prop(ao, "falloff_strength", text="Strength")
|
||||
|
||||
if ao.gather_method == 'RAYTRACE':
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
|
||||
col.itemL(text="Sampling:")
|
||||
col.itemR(ao, "sample_method", text="")
|
||||
col.label(text="Sampling:")
|
||||
col.prop(ao, "sample_method", text="")
|
||||
|
||||
sub = col.column()
|
||||
sub.itemR(ao, "samples")
|
||||
sub.prop(ao, "samples")
|
||||
|
||||
if ao.sample_method == 'ADAPTIVE_QMC':
|
||||
sub.itemR(ao, "threshold")
|
||||
sub.itemR(ao, "adapt_to_speed", slider=True)
|
||||
sub.prop(ao, "threshold")
|
||||
sub.prop(ao, "adapt_to_speed", slider=True)
|
||||
elif ao.sample_method == 'CONSTANT_JITTERED':
|
||||
sub.itemR(ao, "bias")
|
||||
sub.prop(ao, "bias")
|
||||
|
||||
if ao.gather_method == 'APPROXIMATE':
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
|
||||
col.itemL(text="Sampling:")
|
||||
col.itemR(ao, "passes")
|
||||
col.itemR(ao, "error_tolerance", text="Error")
|
||||
col.itemR(ao, "pixel_cache")
|
||||
col.itemR(ao, "correction")
|
||||
col.label(text="Sampling:")
|
||||
col.prop(ao, "passes")
|
||||
col.prop(ao, "error_tolerance", text="Error")
|
||||
col.prop(ao, "pixel_cache")
|
||||
col.prop(ao, "correction")
|
||||
|
||||
col = layout.column()
|
||||
col.itemL(text="Influence:")
|
||||
col.label(text="Influence:")
|
||||
|
||||
col.row().itemR(ao, "blend_mode", expand=True)
|
||||
col.row().prop(ao, "blend_mode", expand=True)
|
||||
|
||||
split = layout.split()
|
||||
|
||||
col = split.column()
|
||||
col.itemR(ao, "energy")
|
||||
col.prop(ao, "energy")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(ao, "color")
|
||||
col.prop(ao, "color")
|
||||
|
||||
bpy.types.register(WORLD_PT_context_world)
|
||||
bpy.types.register(WORLD_PT_preview)
|
||||
|
@ -34,11 +34,11 @@ class Buttons_HT_header(bpy.types.Header):
|
||||
|
||||
if context.area.show_menus:
|
||||
sub = row.row(align=True)
|
||||
sub.itemM("Buttons_MT_view", text="View")
|
||||
sub.menu("Buttons_MT_view", text="View")
|
||||
|
||||
row = layout.row()
|
||||
row.itemR(so, "buttons_context", expand=True, text="")
|
||||
row.itemR(scene, "current_frame")
|
||||
row.prop(so, "buttons_context", expand=True, text="")
|
||||
row.prop(scene, "current_frame")
|
||||
|
||||
|
||||
class Buttons_MT_view(bpy.types.Menu):
|
||||
@ -49,7 +49,7 @@ class Buttons_MT_view(bpy.types.Menu):
|
||||
so = context.space_data
|
||||
|
||||
col = layout.column()
|
||||
col.itemR(so, "panel_alignment", expand=True)
|
||||
col.prop(so, "panel_alignment", expand=True)
|
||||
|
||||
bpy.types.register(Buttons_HT_header)
|
||||
bpy.types.register(Buttons_MT_view)
|
||||
|
@ -36,27 +36,27 @@ class CONSOLE_HT_header(bpy.types.Header):
|
||||
sub = row.row(align=True)
|
||||
|
||||
if sc.console_type == 'REPORT':
|
||||
sub.itemM("CONSOLE_MT_report")
|
||||
sub.menu("CONSOLE_MT_report")
|
||||
else:
|
||||
sub.itemM("CONSOLE_MT_console")
|
||||
sub.menu("CONSOLE_MT_console")
|
||||
|
||||
layout.itemS()
|
||||
layout.itemR(sc, "console_type", expand=True)
|
||||
layout.separator()
|
||||
layout.prop(sc, "console_type", expand=True)
|
||||
|
||||
if sc.console_type == 'REPORT':
|
||||
row = layout.row(align=True)
|
||||
row.itemR(sc, "show_report_debug", text="Debug")
|
||||
row.itemR(sc, "show_report_info", text="Info")
|
||||
row.itemR(sc, "show_report_operator", text="Operators")
|
||||
row.itemR(sc, "show_report_warn", text="Warnings")
|
||||
row.itemR(sc, "show_report_error", text="Errors")
|
||||
row.prop(sc, "show_report_debug", text="Debug")
|
||||
row.prop(sc, "show_report_info", text="Info")
|
||||
row.prop(sc, "show_report_operator", text="Operators")
|
||||
row.prop(sc, "show_report_warn", text="Warnings")
|
||||
row.prop(sc, "show_report_error", text="Errors")
|
||||
|
||||
row = layout.row()
|
||||
row.enabled = sc.show_report_operator
|
||||
row.itemO("console.report_replay")
|
||||
row.operator("console.report_replay")
|
||||
else:
|
||||
row = layout.row(align=True)
|
||||
row.itemO("console.autocomplete", text="Autocomplete")
|
||||
row.operator("console.autocomplete", text="Autocomplete")
|
||||
|
||||
|
||||
class CONSOLE_MT_console(bpy.types.Menu):
|
||||
@ -65,10 +65,10 @@ class CONSOLE_MT_console(bpy.types.Menu):
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
layout.column()
|
||||
layout.itemO("console.clear")
|
||||
layout.itemO("console.copy")
|
||||
layout.itemO("console.paste")
|
||||
layout.itemM("CONSOLE_MT_language")
|
||||
layout.operator("console.clear")
|
||||
layout.operator("console.copy")
|
||||
layout.operator("console.paste")
|
||||
layout.menu("CONSOLE_MT_language")
|
||||
|
||||
|
||||
class CONSOLE_MT_report(bpy.types.Menu):
|
||||
@ -77,10 +77,10 @@ class CONSOLE_MT_report(bpy.types.Menu):
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
layout.column()
|
||||
layout.itemO("console.select_all_toggle")
|
||||
layout.itemO("console.select_border")
|
||||
layout.itemO("console.report_delete")
|
||||
layout.itemO("console.report_copy")
|
||||
layout.operator("console.select_all_toggle")
|
||||
layout.operator("console.select_border")
|
||||
layout.operator("console.report_delete")
|
||||
layout.operator("console.report_copy")
|
||||
|
||||
|
||||
class CONSOLE_MT_language(bpy.types.Menu):
|
||||
@ -101,7 +101,7 @@ class CONSOLE_MT_language(bpy.types.Menu):
|
||||
languages.sort()
|
||||
|
||||
for language in languages:
|
||||
layout.item_stringO("console.language", "language", language, text=language[0].upper() + language[1:])
|
||||
layout.operator("console.language", text=language[0].upper() + language[1:]).language = language
|
||||
|
||||
|
||||
def add_scrollback(text, text_type):
|
||||
|
@ -32,36 +32,36 @@ class FILEBROWSER_HT_header(bpy.types.Header):
|
||||
layout.template_header(menus=False)
|
||||
|
||||
row = layout.row()
|
||||
row.itemS()
|
||||
row.separator()
|
||||
|
||||
row = layout.row(align=True)
|
||||
row.itemO("file.previous", text="", icon='ICON_BACK')
|
||||
row.itemO("file.next", text="", icon='ICON_FORWARD')
|
||||
row.itemO("file.parent", text="", icon='ICON_FILE_PARENT')
|
||||
row.itemO("file.refresh", text="", icon='ICON_FILE_REFRESH')
|
||||
row.operator("file.previous", text="", icon='ICON_BACK')
|
||||
row.operator("file.next", text="", icon='ICON_FORWARD')
|
||||
row.operator("file.parent", text="", icon='ICON_FILE_PARENT')
|
||||
row.operator("file.refresh", text="", icon='ICON_FILE_REFRESH')
|
||||
|
||||
row = layout.row()
|
||||
row.itemS()
|
||||
row.separator()
|
||||
|
||||
row = layout.row(align=True)
|
||||
row.itemO("file.directory_new", text="", icon='ICON_NEWFOLDER')
|
||||
row.operator("file.directory_new", text="", icon='ICON_NEWFOLDER')
|
||||
|
||||
layout.itemR(params, "display", expand=True, text="")
|
||||
layout.itemR(params, "sort", expand=True, text="")
|
||||
layout.prop(params, "display", expand=True, text="")
|
||||
layout.prop(params, "sort", expand=True, text="")
|
||||
|
||||
layout.itemR(params, "hide_dot", text="Hide Invisible")
|
||||
layout.itemR(params, "do_filter", text="", icon='ICON_FILTER')
|
||||
layout.prop(params, "hide_dot", text="Hide Invisible")
|
||||
layout.prop(params, "do_filter", text="", icon='ICON_FILTER')
|
||||
|
||||
row = layout.row(align=True)
|
||||
row.active = params.do_filter
|
||||
|
||||
row.itemR(params, "filter_folder", text="")
|
||||
row.itemR(params, "filter_blender", text="")
|
||||
row.itemR(params, "filter_image", text="")
|
||||
row.itemR(params, "filter_movie", text="")
|
||||
row.itemR(params, "filter_script", text="")
|
||||
row.itemR(params, "filter_font", text="")
|
||||
row.itemR(params, "filter_sound", text="")
|
||||
row.itemR(params, "filter_text", text="")
|
||||
row.prop(params, "filter_folder", text="")
|
||||
row.prop(params, "filter_blender", text="")
|
||||
row.prop(params, "filter_image", text="")
|
||||
row.prop(params, "filter_movie", text="")
|
||||
row.prop(params, "filter_script", text="")
|
||||
row.prop(params, "filter_font", text="")
|
||||
row.prop(params, "filter_sound", text="")
|
||||
row.prop(params, "filter_text", text="")
|
||||
|
||||
bpy.types.register(FILEBROWSER_HT_header)
|
||||
|
@ -34,34 +34,34 @@ class IMAGE_MT_view(bpy.types.Menu):
|
||||
|
||||
show_uvedit = sima.show_uvedit
|
||||
|
||||
layout.itemO("image.properties", icon='ICON_MENU_PANEL')
|
||||
layout.operator("image.properties", icon='ICON_MENU_PANEL')
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
layout.itemR(sima, "update_automatically")
|
||||
layout.prop(sima, "update_automatically")
|
||||
if show_uvedit:
|
||||
layout.itemR(settings, "uv_local_view") # Numpad /
|
||||
layout.prop(settings, "uv_local_view") # Numpad /
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
layout.itemO("image.view_zoom_in")
|
||||
layout.itemO("image.view_zoom_out")
|
||||
layout.operator("image.view_zoom_in")
|
||||
layout.operator("image.view_zoom_out")
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
ratios = [[1, 8], [1, 4], [1, 2], [1, 1], [2, 1], [4, 1], [8, 1]]
|
||||
|
||||
for a, b in ratios:
|
||||
text = "Zoom %d:%d" % (a, b)
|
||||
layout.item_floatO("image.view_zoom_ratio", "ratio", a / b, text=text)
|
||||
layout.operator("image.view_zoom_ratio", text=text).ratio = a / b
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
if show_uvedit:
|
||||
layout.itemO("image.view_selected")
|
||||
layout.operator("image.view_selected")
|
||||
|
||||
layout.itemO("image.view_all")
|
||||
layout.itemO("screen.screen_full_area")
|
||||
layout.operator("image.view_all")
|
||||
layout.operator("screen.screen_full_area")
|
||||
|
||||
|
||||
class IMAGE_MT_select(bpy.types.Menu):
|
||||
@ -70,19 +70,19 @@ class IMAGE_MT_select(bpy.types.Menu):
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
layout.itemO("uv.select_border")
|
||||
layout.item_booleanO("uv.select_border", "pinned", True)
|
||||
layout.operator("uv.select_border")
|
||||
layout.operator("uv.select_border").pinned = True
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
layout.itemO("uv.select_all_toggle")
|
||||
layout.itemO("uv.select_inverse")
|
||||
layout.itemO("uv.unlink_selection")
|
||||
layout.operator("uv.select_all_toggle")
|
||||
layout.operator("uv.select_inverse")
|
||||
layout.operator("uv.unlink_selection")
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
layout.itemO("uv.select_pinned")
|
||||
layout.itemO("uv.select_linked")
|
||||
layout.operator("uv.select_pinned")
|
||||
layout.operator("uv.select_linked")
|
||||
|
||||
|
||||
class IMAGE_MT_image(bpy.types.Menu):
|
||||
@ -94,39 +94,39 @@ class IMAGE_MT_image(bpy.types.Menu):
|
||||
sima = context.space_data
|
||||
ima = sima.image
|
||||
|
||||
layout.itemO("image.new")
|
||||
layout.itemO("image.open")
|
||||
layout.operator("image.new")
|
||||
layout.operator("image.open")
|
||||
|
||||
show_render = sima.show_render
|
||||
|
||||
if ima:
|
||||
if not show_render:
|
||||
layout.itemO("image.replace")
|
||||
layout.itemO("image.reload")
|
||||
layout.operator("image.replace")
|
||||
layout.operator("image.reload")
|
||||
|
||||
layout.itemO("image.save")
|
||||
layout.itemO("image.save_as")
|
||||
layout.operator("image.save")
|
||||
layout.operator("image.save_as")
|
||||
|
||||
if ima.source == 'SEQUENCE':
|
||||
layout.itemO("image.save_sequence")
|
||||
layout.operator("image.save_sequence")
|
||||
|
||||
if not show_render:
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
if ima.packed_file:
|
||||
layout.itemO("image.unpack")
|
||||
layout.operator("image.unpack")
|
||||
else:
|
||||
layout.itemO("image.pack")
|
||||
layout.operator("image.pack")
|
||||
|
||||
# only for dirty && specific image types, perhaps
|
||||
# this could be done in operator poll too
|
||||
if ima.dirty:
|
||||
if ima.source in ('FILE', 'GENERATED') and ima.type != 'MULTILAYER':
|
||||
layout.item_booleanO("image.pack", "as_png", True, text="Pack As PNG")
|
||||
layout.operator("image.pack", text="Pack As PNG").as_png = True
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
layout.itemR(sima, "image_painting")
|
||||
layout.prop(sima, "image_painting")
|
||||
|
||||
|
||||
class IMAGE_MT_uvs_showhide(bpy.types.Menu):
|
||||
@ -135,9 +135,9 @@ class IMAGE_MT_uvs_showhide(bpy.types.Menu):
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
layout.itemO("uv.reveal")
|
||||
layout.itemO("uv.hide")
|
||||
layout.item_booleanO("uv.hide", "unselected", True)
|
||||
layout.operator("uv.reveal")
|
||||
layout.operator("uv.hide")
|
||||
layout.operator("uv.hide").unselected = True
|
||||
|
||||
|
||||
class IMAGE_MT_uvs_transform(bpy.types.Menu):
|
||||
@ -146,9 +146,26 @@ class IMAGE_MT_uvs_transform(bpy.types.Menu):
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
layout.itemO("tfm.translate")
|
||||
layout.itemO("tfm.rotate")
|
||||
layout.itemO("tfm.resize")
|
||||
layout.operator("tfm.translate")
|
||||
layout.operator("tfm.rotate")
|
||||
layout.operator("tfm.resize")
|
||||
|
||||
|
||||
class IMAGE_MT_uvs_snap(bpy.types.Menu):
|
||||
bl_label = "Snap"
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
layout.operator_context = 'EXEC_REGION_WIN'
|
||||
|
||||
layout.operator("uv.snap_selection", text="Selected to Pixels").target = 'PIXELS'
|
||||
layout.operator("uv.snap_selection", text="Selected to Cursor").target = 'CURSOR'
|
||||
layout.operator("uv.snap_selection", text="Selected to Adjacent Unselected").target = 'ADJACENT_UNSELECTED'
|
||||
|
||||
layout.separator()
|
||||
|
||||
layout.operator("uv.snap_cursor", text="Cursor to Pixels").target = 'PIXELS'
|
||||
layout.operator("uv.snap_cursor", text="Cursor to Selection").target = 'SELECTION'
|
||||
|
||||
|
||||
class IMAGE_MT_uvs_mirror(bpy.types.Menu):
|
||||
@ -158,11 +175,8 @@ class IMAGE_MT_uvs_mirror(bpy.types.Menu):
|
||||
layout = self.layout
|
||||
layout.operator_context = 'EXEC_REGION_WIN'
|
||||
|
||||
props = layout.itemO("tfm.mirror", text="X Axis", properties=True)
|
||||
props.constraint_axis[0] = True
|
||||
|
||||
props = layout.itemO("tfm.mirror", text="Y Axis", properties=True)
|
||||
props.constraint_axis[1] = True
|
||||
layout.operator("tfm.mirror", text="X Axis").constraint_axis[0] = True
|
||||
layout.operator("tfm.mirror", text="Y Axis").constraint_axis[1] = True
|
||||
|
||||
|
||||
class IMAGE_MT_uvs_weldalign(bpy.types.Menu):
|
||||
@ -171,8 +185,8 @@ class IMAGE_MT_uvs_weldalign(bpy.types.Menu):
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
layout.itemO("uv.weld") # W, 1
|
||||
layout.items_enumO("uv.align", "axis") # W, 2/3/4
|
||||
layout.operator("uv.weld") # W, 1
|
||||
layout.operator_enums("uv.align", "axis") # W, 2/3/4
|
||||
|
||||
|
||||
class IMAGE_MT_uvs(bpy.types.Menu):
|
||||
@ -185,37 +199,38 @@ class IMAGE_MT_uvs(bpy.types.Menu):
|
||||
uv = sima.uv_editor
|
||||
settings = context.tool_settings
|
||||
|
||||
layout.itemR(uv, "snap_to_pixels")
|
||||
layout.itemR(uv, "constrain_to_image_bounds")
|
||||
layout.prop(uv, "snap_to_pixels")
|
||||
layout.prop(uv, "constrain_to_image_bounds")
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
layout.itemR(uv, "live_unwrap")
|
||||
layout.itemO("uv.unwrap")
|
||||
layout.item_booleanO("uv.pin", "clear", True, text="Unpin")
|
||||
layout.itemO("uv.pin")
|
||||
layout.prop(uv, "live_unwrap")
|
||||
layout.operator("uv.unwrap")
|
||||
layout.operator("uv.pin", text="Unpin").clear = True
|
||||
layout.operator("uv.pin")
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
layout.itemO("uv.pack_islands")
|
||||
layout.itemO("uv.average_islands_scale")
|
||||
layout.itemO("uv.minimize_stretch")
|
||||
layout.itemO("uv.stitch")
|
||||
layout.operator("uv.pack_islands")
|
||||
layout.operator("uv.average_islands_scale")
|
||||
layout.operator("uv.minimize_stretch")
|
||||
layout.operator("uv.stitch")
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
layout.itemM("IMAGE_MT_uvs_transform")
|
||||
layout.itemM("IMAGE_MT_uvs_mirror")
|
||||
layout.itemM("IMAGE_MT_uvs_weldalign")
|
||||
layout.menu("IMAGE_MT_uvs_transform")
|
||||
layout.menu("IMAGE_MT_uvs_mirror")
|
||||
layout.menu("IMAGE_MT_uvs_snap")
|
||||
layout.menu("IMAGE_MT_uvs_weldalign")
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
layout.item_menu_enumR(settings, "proportional_editing")
|
||||
layout.item_menu_enumR(settings, "proportional_editing_falloff")
|
||||
layout.prop_menu_enum(settings, "proportional_editing")
|
||||
layout.prop_menu_enum(settings, "proportional_editing_falloff")
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
layout.itemM("IMAGE_MT_uvs_showhide")
|
||||
layout.menu("IMAGE_MT_uvs_showhide")
|
||||
|
||||
|
||||
class IMAGE_HT_header(bpy.types.Header):
|
||||
@ -239,18 +254,18 @@ class IMAGE_HT_header(bpy.types.Header):
|
||||
# menus
|
||||
if context.area.show_menus:
|
||||
sub = row.row(align=True)
|
||||
sub.itemM("IMAGE_MT_view")
|
||||
sub.menu("IMAGE_MT_view")
|
||||
|
||||
if show_uvedit:
|
||||
sub.itemM("IMAGE_MT_select")
|
||||
sub.menu("IMAGE_MT_select")
|
||||
|
||||
if ima and ima.dirty:
|
||||
sub.itemM("IMAGE_MT_image", text="Image*")
|
||||
sub.menu("IMAGE_MT_image", text="Image*")
|
||||
else:
|
||||
sub.itemM("IMAGE_MT_image", text="Image")
|
||||
sub.menu("IMAGE_MT_image", text="Image")
|
||||
|
||||
if show_uvedit:
|
||||
sub.itemM("IMAGE_MT_uvs")
|
||||
sub.menu("IMAGE_MT_uvs")
|
||||
|
||||
layout.template_ID(sima, "image", new="image.new")
|
||||
|
||||
@ -258,42 +273,42 @@ class IMAGE_HT_header(bpy.types.Header):
|
||||
if show_uvedit:
|
||||
uvedit = sima.uv_editor
|
||||
|
||||
layout.itemR(uvedit, "pivot", text="", icon_only=True)
|
||||
layout.itemR(settings, "uv_sync_selection", text="")
|
||||
layout.prop(uvedit, "pivot", text="", icon_only=True)
|
||||
layout.prop(settings, "uv_sync_selection", text="")
|
||||
|
||||
if settings.uv_sync_selection:
|
||||
layout.itemR(settings, "mesh_selection_mode", text="", expand=True)
|
||||
layout.prop(settings, "mesh_selection_mode", text="", expand=True)
|
||||
else:
|
||||
layout.itemR(settings, "uv_selection_mode", text="", expand=True)
|
||||
layout.itemR(uvedit, "sticky_selection_mode", text="", icon_only=True)
|
||||
layout.prop(settings, "uv_selection_mode", text="", expand=True)
|
||||
layout.prop(uvedit, "sticky_selection_mode", text="", icon_only=True)
|
||||
|
||||
row = layout.row(align=True)
|
||||
row.itemR(settings, "snap", text="")
|
||||
row.prop(settings, "snap", text="")
|
||||
if settings.snap:
|
||||
row.itemR(settings, "snap_mode", text="")
|
||||
row.prop(settings, "snap_mode", text="")
|
||||
|
||||
# mesh = context.edit_object.data
|
||||
# row.item_pointerR(mesh, "active_uv_layer", mesh, "uv_textures")
|
||||
# row.prop_object(mesh, "active_uv_layer", mesh, "uv_textures")
|
||||
|
||||
if ima:
|
||||
# layers
|
||||
layout.template_image_layers(ima, iuser)
|
||||
|
||||
# painting
|
||||
layout.itemR(sima, "image_painting", text="")
|
||||
layout.prop(sima, "image_painting", text="")
|
||||
|
||||
# draw options
|
||||
row = layout.row(align=True)
|
||||
row.itemR(sima, "draw_channels", text="", expand=True)
|
||||
row.prop(sima, "draw_channels", text="", expand=True)
|
||||
|
||||
row = layout.row(align=True)
|
||||
if ima.type == 'COMPOSITE':
|
||||
row.itemO("image.record_composite", icon='ICON_REC')
|
||||
row.operator("image.record_composite", icon='ICON_REC')
|
||||
if ima.type == 'COMPOSITE' and ima.source in ('MOVIE', 'SEQUENCE'):
|
||||
row.itemO("image.play_composite", icon='ICON_PLAY')
|
||||
row.operator("image.play_composite", icon='ICON_PLAY')
|
||||
|
||||
if show_uvedit or sima.image_painting:
|
||||
layout.itemR(sima, "update_automatically", text="")
|
||||
layout.prop(sima, "update_automatically", text="")
|
||||
|
||||
|
||||
class IMAGE_PT_image_properties(bpy.types.Panel):
|
||||
@ -337,27 +352,27 @@ class IMAGE_PT_game_properties(bpy.types.Panel):
|
||||
col = split.column()
|
||||
|
||||
sub = col.column(align=True)
|
||||
sub.itemR(ima, "animated")
|
||||
sub.prop(ima, "animated")
|
||||
|
||||
subsub = sub.column()
|
||||
subsub.active = ima.animated
|
||||
subsub.itemR(ima, "animation_start", text="Start")
|
||||
subsub.itemR(ima, "animation_end", text="End")
|
||||
subsub.itemR(ima, "animation_speed", text="Speed")
|
||||
subsub.prop(ima, "animation_start", text="Start")
|
||||
subsub.prop(ima, "animation_end", text="End")
|
||||
subsub.prop(ima, "animation_speed", text="Speed")
|
||||
|
||||
col.itemR(ima, "tiles")
|
||||
col.prop(ima, "tiles")
|
||||
sub = col.column(align=True)
|
||||
sub.active = ima.tiles or ima.animated
|
||||
sub.itemR(ima, "tiles_x", text="X")
|
||||
sub.itemR(ima, "tiles_y", text="Y")
|
||||
sub.prop(ima, "tiles_x", text="X")
|
||||
sub.prop(ima, "tiles_y", text="Y")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Clamp:")
|
||||
col.itemR(ima, "clamp_x", text="X")
|
||||
col.itemR(ima, "clamp_y", text="Y")
|
||||
col.itemS()
|
||||
col.itemR(ima, "mapping", expand=True)
|
||||
col.label(text="Clamp:")
|
||||
col.prop(ima, "clamp_x", text="X")
|
||||
col.prop(ima, "clamp_y", text="Y")
|
||||
col.separator()
|
||||
col.prop(ima, "mapping", expand=True)
|
||||
|
||||
|
||||
class IMAGE_PT_view_properties(bpy.types.Panel):
|
||||
@ -382,41 +397,41 @@ class IMAGE_PT_view_properties(bpy.types.Panel):
|
||||
|
||||
col = split.column()
|
||||
if ima:
|
||||
col.itemR(ima, "display_aspect", text="Aspect Ratio")
|
||||
col.prop(ima, "display_aspect", text="Aspect Ratio")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemL(text="Coordinates:")
|
||||
col.itemR(sima, "draw_repeated", text="Repeat")
|
||||
col.label(text="Coordinates:")
|
||||
col.prop(sima, "draw_repeated", text="Repeat")
|
||||
if show_uvedit:
|
||||
col.itemR(uvedit, "normalized_coordinates", text="Normalized")
|
||||
col.prop(uvedit, "normalized_coordinates", text="Normalized")
|
||||
elif show_uvedit:
|
||||
col.itemL(text="Coordinates:")
|
||||
col.itemR(uvedit, "normalized_coordinates", text="Normalized")
|
||||
col.label(text="Coordinates:")
|
||||
col.prop(uvedit, "normalized_coordinates", text="Normalized")
|
||||
|
||||
if show_uvedit:
|
||||
|
||||
col = layout.column()
|
||||
col.itemL(text="UVs:")
|
||||
col.label(text="UVs:")
|
||||
row = col.row()
|
||||
if wide_ui:
|
||||
row.itemR(uvedit, "edge_draw_type", expand=True)
|
||||
row.prop(uvedit, "edge_draw_type", expand=True)
|
||||
else:
|
||||
row.itemR(uvedit, "edge_draw_type", text="")
|
||||
row.prop(uvedit, "edge_draw_type", text="")
|
||||
|
||||
split = layout.split()
|
||||
col = split.column()
|
||||
col.itemR(uvedit, "draw_smooth_edges", text="Smooth")
|
||||
col.itemR(uvedit, "draw_modified_edges", text="Modified")
|
||||
#col.itemR(uvedit, "draw_edges")
|
||||
#col.itemR(uvedit, "draw_faces")
|
||||
col.prop(uvedit, "draw_smooth_edges", text="Smooth")
|
||||
col.prop(uvedit, "draw_modified_edges", text="Modified")
|
||||
#col.prop(uvedit, "draw_edges")
|
||||
#col.prop(uvedit, "draw_faces")
|
||||
|
||||
if wide_ui:
|
||||
col = split.column()
|
||||
col.itemR(uvedit, "draw_stretch", text="Stretch")
|
||||
col.prop(uvedit, "draw_stretch", text="Stretch")
|
||||
sub = col.column()
|
||||
sub.active = uvedit.draw_stretch
|
||||
sub.row().itemR(uvedit, "draw_stretch_type", expand=True)
|
||||
sub.row().prop(uvedit, "draw_stretch_type", expand=True)
|
||||
|
||||
|
||||
class IMAGE_PT_paint(bpy.types.Panel):
|
||||
@ -445,28 +460,28 @@ class IMAGE_PT_paint(bpy.types.Panel):
|
||||
sub = layout.row(align=True)
|
||||
else:
|
||||
sub = layout.column(align=True)
|
||||
sub.item_enumR(settings, "tool", 'DRAW')
|
||||
sub.item_enumR(settings, "tool", 'SOFTEN')
|
||||
sub.item_enumR(settings, "tool", 'CLONE')
|
||||
sub.item_enumR(settings, "tool", 'SMEAR')
|
||||
sub.prop_enum(settings, "tool", 'DRAW')
|
||||
sub.prop_enum(settings, "tool", 'SOFTEN')
|
||||
sub.prop_enum(settings, "tool", 'CLONE')
|
||||
sub.prop_enum(settings, "tool", 'SMEAR')
|
||||
|
||||
if brush:
|
||||
col = layout.column()
|
||||
col.itemR(brush, "color", text="")
|
||||
col.prop(brush, "color", text="")
|
||||
|
||||
row = col.row(align=True)
|
||||
row.itemR(brush, "size", slider=True)
|
||||
row.itemR(brush, "use_size_pressure", toggle=True, text="")
|
||||
row.prop(brush, "size", slider=True)
|
||||
row.prop(brush, "use_size_pressure", toggle=True, text="")
|
||||
|
||||
row = col.row(align=True)
|
||||
row.itemR(brush, "strength", slider=True)
|
||||
row.itemR(brush, "use_strength_pressure", toggle=True, text="")
|
||||
row.prop(brush, "strength", slider=True)
|
||||
row.prop(brush, "use_strength_pressure", toggle=True, text="")
|
||||
|
||||
row = col.row(align=True)
|
||||
row.itemR(brush, "jitter", slider=True)
|
||||
row.itemR(brush, "use_jitter_pressure", toggle=True, text="")
|
||||
row.prop(brush, "jitter", slider=True)
|
||||
row.prop(brush, "use_jitter_pressure", toggle=True, text="")
|
||||
|
||||
col.itemR(brush, "blend", text="Blend")
|
||||
col.prop(brush, "blend", text="Blend")
|
||||
|
||||
|
||||
class IMAGE_PT_paint_stroke(bpy.types.Panel):
|
||||
@ -486,16 +501,16 @@ class IMAGE_PT_paint_stroke(bpy.types.Panel):
|
||||
settings = context.tool_settings.image_paint
|
||||
brush = settings.brush
|
||||
|
||||
layout.itemR(brush, "use_airbrush")
|
||||
layout.prop(brush, "use_airbrush")
|
||||
col = layout.column()
|
||||
col.active = brush.use_airbrush
|
||||
col.itemR(brush, "rate", slider=True)
|
||||
col.prop(brush, "rate", slider=True)
|
||||
|
||||
layout.itemR(brush, "use_space")
|
||||
layout.prop(brush, "use_space")
|
||||
row = layout.row(align=True)
|
||||
row.active = brush.use_space
|
||||
row.itemR(brush, "spacing", text="Distance", slider=True)
|
||||
row.itemR(brush, "use_spacing_pressure", toggle=True, text="")
|
||||
row.prop(brush, "spacing", text="Distance", slider=True)
|
||||
row.prop(brush, "use_spacing_pressure", toggle=True, text="")
|
||||
|
||||
|
||||
class IMAGE_PT_paint_curve(bpy.types.Panel):
|
||||
@ -516,13 +531,14 @@ class IMAGE_PT_paint_curve(bpy.types.Panel):
|
||||
brush = settings.brush
|
||||
|
||||
layout.template_curve_mapping(brush, "curve")
|
||||
layout.item_menu_enumO("brush.curve_preset", property="shape")
|
||||
layout.operator_menu_enum("brush.curve_preset", property="shape")
|
||||
|
||||
bpy.types.register(IMAGE_MT_view)
|
||||
bpy.types.register(IMAGE_MT_select)
|
||||
bpy.types.register(IMAGE_MT_image)
|
||||
bpy.types.register(IMAGE_MT_uvs_showhide)
|
||||
bpy.types.register(IMAGE_MT_uvs_transform)
|
||||
bpy.types.register(IMAGE_MT_uvs_snap)
|
||||
bpy.types.register(IMAGE_MT_uvs_mirror)
|
||||
bpy.types.register(IMAGE_MT_uvs_weldalign)
|
||||
bpy.types.register(IMAGE_MT_uvs)
|
||||
|
@ -37,30 +37,30 @@ class INFO_HT_header(bpy.types.Header):
|
||||
|
||||
if context.area.show_menus:
|
||||
sub = row.row(align=True)
|
||||
sub.itemM("INFO_MT_file")
|
||||
sub.itemM("INFO_MT_add")
|
||||
sub.menu("INFO_MT_file")
|
||||
sub.menu("INFO_MT_add")
|
||||
if rd.use_game_engine:
|
||||
sub.itemM("INFO_MT_game")
|
||||
sub.menu("INFO_MT_game")
|
||||
else:
|
||||
sub.itemM("INFO_MT_render")
|
||||
sub.itemM("INFO_MT_help")
|
||||
sub.menu("INFO_MT_render")
|
||||
sub.menu("INFO_MT_help")
|
||||
|
||||
layout.template_ID(context.window, "screen", new="screen.new", unlink="screen.delete")
|
||||
layout.template_ID(context.screen, "scene", new="scene.new", unlink="scene.delete")
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
if rd.multiple_engines:
|
||||
layout.itemR(rd, "engine", text="")
|
||||
layout.prop(rd, "engine", text="")
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
layout.template_operator_search()
|
||||
layout.template_running_jobs()
|
||||
|
||||
layout.itemL(text=scene.statistics())
|
||||
layout.label(text=scene.statistics())
|
||||
|
||||
layout.itemO("wm.window_fullscreen_toggle", icon='ICON_FULLSCREEN_ENTER', text="")
|
||||
layout.operator("wm.window_fullscreen_toggle", icon='ICON_FULLSCREEN_ENTER', text="")
|
||||
|
||||
|
||||
class INFO_MT_file(bpy.types.Menu):
|
||||
@ -70,38 +70,38 @@ class INFO_MT_file(bpy.types.Menu):
|
||||
layout = self.layout
|
||||
|
||||
layout.operator_context = 'EXEC_AREA'
|
||||
layout.itemO("wm.read_homefile", text="New", icon='ICON_NEW')
|
||||
layout.operator("wm.read_homefile", text="New", icon='ICON_NEW')
|
||||
layout.operator_context = 'INVOKE_AREA'
|
||||
layout.itemO("wm.open_mainfile", text="Open...", icon='ICON_FILE_FOLDER')
|
||||
layout.item_menu_enumO("wm.open_recentfile", "file", text="Open Recent")
|
||||
layout.itemO("wm.recover_last_session")
|
||||
layout.itemO("wm.recover_auto_save", text="Recover Auto Save...")
|
||||
layout.operator("wm.open_mainfile", text="Open...", icon='ICON_FILE_FOLDER')
|
||||
layout.operator_menu_enum("wm.open_recentfile", "file", text="Open Recent")
|
||||
layout.operator("wm.recover_last_session")
|
||||
layout.operator("wm.recover_auto_save", text="Recover Auto Save...")
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
layout.operator_context = 'EXEC_AREA'
|
||||
layout.itemO("wm.save_mainfile", text="Save", icon='ICON_FILE_TICK')
|
||||
layout.operator("wm.save_mainfile", text="Save", icon='ICON_FILE_TICK')
|
||||
layout.operator_context = 'INVOKE_AREA'
|
||||
layout.itemO("wm.save_as_mainfile", text="Save As...")
|
||||
layout.itemO("screen.userpref_show", text="User Preferences...", icon='ICON_PREFERENCES')
|
||||
layout.operator("wm.save_as_mainfile", text="Save As...")
|
||||
layout.operator("screen.userpref_show", text="User Preferences...", icon='ICON_PREFERENCES')
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
layout.operator_context = 'INVOKE_AREA'
|
||||
layout.itemO("wm.link_append", text="Link")
|
||||
layout.item_booleanO("wm.link_append", "link", False, text="Append")
|
||||
layout.itemS()
|
||||
layout.operator("wm.link_append", text="Link")
|
||||
layout.operator("wm.link_append", text="Append").link = False
|
||||
layout.separator()
|
||||
|
||||
layout.itemM("INFO_MT_file_import")
|
||||
layout.itemM("INFO_MT_file_export")
|
||||
layout.menu("INFO_MT_file_import")
|
||||
layout.menu("INFO_MT_file_export")
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
layout.itemM("INFO_MT_file_external_data")
|
||||
layout.menu("INFO_MT_file_external_data")
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
layout.operator_context = 'EXEC_AREA'
|
||||
layout.itemO("wm.exit_blender", text="Quit", icon='ICON_QUIT')
|
||||
layout.operator("wm.exit_blender", text="Quit", icon='ICON_QUIT')
|
||||
|
||||
# test for expanding menus
|
||||
'''
|
||||
@ -111,7 +111,7 @@ class INFO_MT_file_more(INFO_MT_file):
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
layout.itemO("wm.read_homefile", text="TESTING ")
|
||||
layout.operator("wm.read_homefile", text="TESTING ")
|
||||
|
||||
dynamic_menu.setup(INFO_MT_file_more)
|
||||
'''
|
||||
@ -123,7 +123,7 @@ class INFO_MT_file_import(dynamic_menu.DynMenu):
|
||||
|
||||
def draw(self, context):
|
||||
if "collada_import" in dir(bpy.ops.wm):
|
||||
self.layout.itemO("wm.collada_import", text="COLLADA (.dae)...")
|
||||
self.layout.operator("wm.collada_import", text="COLLADA (.dae)...")
|
||||
|
||||
|
||||
class INFO_MT_file_export(dynamic_menu.DynMenu):
|
||||
@ -132,7 +132,7 @@ class INFO_MT_file_export(dynamic_menu.DynMenu):
|
||||
|
||||
def draw(self, context):
|
||||
if "collada_export" in dir(bpy.ops.wm):
|
||||
self.layout.itemO("wm.collada_export", text="COLLADA (.dae)...")
|
||||
self.layout.operator("wm.collada_export", text="COLLADA (.dae)...")
|
||||
|
||||
|
||||
class INFO_MT_file_external_data(bpy.types.Menu):
|
||||
@ -141,15 +141,15 @@ class INFO_MT_file_external_data(bpy.types.Menu):
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
layout.itemO("file.pack_all", text="Pack into .blend file")
|
||||
layout.itemO("file.unpack_all", text="Unpack into Files...")
|
||||
layout.operator("file.pack_all", text="Pack into .blend file")
|
||||
layout.operator("file.unpack_all", text="Unpack into Files...")
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
layout.itemO("file.make_paths_relative")
|
||||
layout.itemO("file.make_paths_absolute")
|
||||
layout.itemO("file.report_missing_files")
|
||||
layout.itemO("file.find_missing_files")
|
||||
layout.operator("file.make_paths_relative")
|
||||
layout.operator("file.make_paths_absolute")
|
||||
layout.operator("file.report_missing_files")
|
||||
layout.operator("file.find_missing_files")
|
||||
|
||||
|
||||
class INFO_MT_mesh_add(dynamic_menu.DynMenu):
|
||||
@ -159,16 +159,16 @@ class INFO_MT_mesh_add(dynamic_menu.DynMenu):
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
layout.operator_context = 'INVOKE_REGION_WIN'
|
||||
layout.itemO("mesh.primitive_plane_add", icon='ICON_MESH_PLANE', text="Plane")
|
||||
layout.itemO("mesh.primitive_cube_add", icon='ICON_MESH_CUBE', text="Cube")
|
||||
layout.itemO("mesh.primitive_circle_add", icon='ICON_MESH_CIRCLE', text="Circle")
|
||||
layout.itemO("mesh.primitive_uv_sphere_add", icon='ICON_MESH_UVSPHERE', text="UV Sphere")
|
||||
layout.itemO("mesh.primitive_ico_sphere_add", icon='ICON_MESH_ICOSPHERE', text="Icosphere")
|
||||
layout.itemO("mesh.primitive_tube_add", icon='ICON_MESH_TUBE', text="Tube")
|
||||
layout.itemO("mesh.primitive_cone_add", icon='ICON_MESH_CONE', text="Cone")
|
||||
layout.itemS()
|
||||
layout.itemO("mesh.primitive_grid_add", icon='ICON_MESH_GRID', text="Grid")
|
||||
layout.itemO("mesh.primitive_monkey_add", icon='ICON_MESH_MONKEY', text="Monkey")
|
||||
layout.operator("mesh.primitive_plane_add", icon='ICON_MESH_PLANE', text="Plane")
|
||||
layout.operator("mesh.primitive_cube_add", icon='ICON_MESH_CUBE', text="Cube")
|
||||
layout.operator("mesh.primitive_circle_add", icon='ICON_MESH_CIRCLE', text="Circle")
|
||||
layout.operator("mesh.primitive_uv_sphere_add", icon='ICON_MESH_UVSPHERE', text="UV Sphere")
|
||||
layout.operator("mesh.primitive_ico_sphere_add", icon='ICON_MESH_ICOSPHERE', text="Icosphere")
|
||||
layout.operator("mesh.primitive_tube_add", icon='ICON_MESH_TUBE', text="Tube")
|
||||
layout.operator("mesh.primitive_cone_add", icon='ICON_MESH_CONE', text="Cone")
|
||||
layout.separator()
|
||||
layout.operator("mesh.primitive_grid_add", icon='ICON_MESH_GRID', text="Grid")
|
||||
layout.operator("mesh.primitive_monkey_add", icon='ICON_MESH_MONKEY', text="Monkey")
|
||||
|
||||
|
||||
class INFO_MT_add(bpy.types.Menu):
|
||||
@ -179,37 +179,37 @@ class INFO_MT_add(bpy.types.Menu):
|
||||
|
||||
layout.operator_context = 'EXEC_SCREEN'
|
||||
|
||||
# layout.item_menu_enumO("object.mesh_add", "type", text="Mesh", icon='ICON_OUTLINER_OB_MESH')
|
||||
layout.itemM("INFO_MT_mesh_add", icon='ICON_OUTLINER_OB_MESH')
|
||||
#layout.operator_menu_enum("object.mesh_add", "type", text="Mesh", icon='ICON_OUTLINER_OB_MESH')
|
||||
layout.menu("INFO_MT_mesh_add", icon='ICON_OUTLINER_OB_MESH')
|
||||
|
||||
layout.item_menu_enumO("object.curve_add", "type", text="Curve", icon='ICON_OUTLINER_OB_CURVE')
|
||||
layout.item_menu_enumO("object.surface_add", "type", text="Surface", icon='ICON_OUTLINER_OB_SURFACE')
|
||||
layout.item_menu_enumO("object.metaball_add", "type", 'META', text="Metaball", icon='ICON_OUTLINER_OB_META')
|
||||
layout.itemO("object.text_add", text="Text", icon='ICON_OUTLINER_OB_FONT')
|
||||
layout.operator_menu_enum("object.curve_add", "type", text="Curve", icon='ICON_OUTLINER_OB_CURVE')
|
||||
layout.operator_menu_enum("object.surface_add", "type", text="Surface", icon='ICON_OUTLINER_OB_SURFACE')
|
||||
layout.operator_menu_enum("object.metaball_add", "type", 'META', text="Metaball", icon='ICON_OUTLINER_OB_META')
|
||||
layout.operator("object.text_add", text="Text", icon='ICON_OUTLINER_OB_FONT')
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
layout.operator_context = 'INVOKE_SCREEN'
|
||||
layout.operator_context = 'INVOKE_REGION_WIN'
|
||||
|
||||
layout.itemO("object.armature_add", text="Armature", icon='ICON_OUTLINER_OB_ARMATURE')
|
||||
layout.item_enumO("object.add", "type", 'LATTICE', icon='ICON_OUTLINER_OB_LATTICE')
|
||||
layout.item_enumO("object.add", "type", 'EMPTY', icon='ICON_OUTLINER_OB_EMPTY')
|
||||
layout.operator("object.armature_add", text="Armature", icon='ICON_OUTLINER_OB_ARMATURE')
|
||||
layout.operator("object.add", text="Lattice", icon='ICON_OUTLINER_OB_LATTICE').type = 'LATTICE'
|
||||
layout.operator("object.add", text="Empty", icon='ICON_OUTLINER_OB_EMPTY').type = 'EMPTY'
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
layout.item_enumO("object.add", "type", 'CAMERA', icon='ICON_OUTLINER_OB_CAMERA')
|
||||
layout.operator("object.add", text="Camera", icon='ICON_OUTLINER_OB_CAMERA').type = 'CAMERA'
|
||||
|
||||
layout.operator_context = 'EXEC_SCREEN'
|
||||
|
||||
layout.item_menu_enumO("object.lamp_add", "type", 'LAMP', text="Lamp", icon='ICON_OUTLINER_OB_LAMP')
|
||||
layout.operator_menu_enum("object.lamp_add", "type", 'LAMP', text="Lamp", icon='ICON_OUTLINER_OB_LAMP')
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
layout.item_menu_enumO("object.effector_add", "type", 'EMPTY', text="Force Field", icon='ICON_OUTLINER_OB_EMPTY')
|
||||
layout.operator_menu_enum("object.effector_add", "type", 'EMPTY', text="Force Field", icon='ICON_OUTLINER_OB_EMPTY')
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
layout.item_menu_enumO("object.group_instance_add", "type", text="Group Instance", icon='ICON_OUTLINER_OB_EMPTY')
|
||||
layout.operator_menu_enum("object.group_instance_add", "type", text="Group Instance", icon='ICON_OUTLINER_OB_EMPTY')
|
||||
|
||||
|
||||
class INFO_MT_game(bpy.types.Menu):
|
||||
@ -220,14 +220,14 @@ class INFO_MT_game(bpy.types.Menu):
|
||||
|
||||
gs = context.scene.game_data
|
||||
|
||||
layout.itemO("view3d.game_start")
|
||||
layout.operator("view3d.game_start")
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
layout.itemR(gs, "show_debug_properties")
|
||||
layout.itemR(gs, "show_framerate_profile")
|
||||
layout.itemR(gs, "show_physics_visualization")
|
||||
layout.itemR(gs, "deprecation_warnings")
|
||||
layout.prop(gs, "show_debug_properties")
|
||||
layout.prop(gs, "show_framerate_profile")
|
||||
layout.prop(gs, "show_physics_visualization")
|
||||
layout.prop(gs, "deprecation_warnings")
|
||||
|
||||
|
||||
class INFO_MT_render(bpy.types.Menu):
|
||||
@ -238,17 +238,17 @@ class INFO_MT_render(bpy.types.Menu):
|
||||
|
||||
# rd = context.scene.render_data
|
||||
|
||||
layout.itemO("screen.render", text="Render Image", icon='ICON_RENDER_STILL')
|
||||
layout.item_booleanO("screen.render", "animation", True, text="Render Animation", icon='ICON_RENDER_ANIMATION')
|
||||
layout.operator("screen.render", text="Render Image", icon='ICON_RENDER_STILL')
|
||||
layout.operator("screen.render", text="Render Animation", icon='ICON_RENDER_ANIMATION').animation = True
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
layout.itemO("screen.opengl_render", text="OpenGL Render Image")
|
||||
layout.item_booleanO("screen.opengl_render", "animation", True, text="OpenGL Render Animation")
|
||||
layout.operator("screen.opengl_render", text="OpenGL Render Image")
|
||||
layout.operator("screen.opengl_render", text="OpenGL Render Animation").animation = True
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
layout.itemO("screen.render_view_show")
|
||||
layout.operator("screen.render_view_show")
|
||||
|
||||
|
||||
class INFO_MT_help(bpy.types.Menu):
|
||||
@ -257,19 +257,20 @@ class INFO_MT_help(bpy.types.Menu):
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
layout.itemO("help.manual", icon='ICON_HELP')
|
||||
layout.itemO("help.release_logs", icon='ICON_URL')
|
||||
layout.operator("help.manual", icon='ICON_HELP')
|
||||
layout.operator("help.release_logs", icon='ICON_URL')
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
layout.itemO("help.blender_website", icon='ICON_URL')
|
||||
layout.itemO("help.blender_eshop", icon='ICON_URL')
|
||||
layout.itemO("help.developer_community", icon='ICON_URL')
|
||||
layout.itemO("help.user_community", icon='ICON_URL')
|
||||
layout.itemS()
|
||||
layout.itemO("help.report_bug", icon='ICON_URL')
|
||||
layout.itemS()
|
||||
layout.itemO("help.operator_cheat_sheet")
|
||||
layout.operator("help.blender_website", icon='ICON_URL')
|
||||
layout.operator("help.blender_eshop", icon='ICON_URL')
|
||||
layout.operator("help.developer_community", icon='ICON_URL')
|
||||
layout.operator("help.user_community", icon='ICON_URL')
|
||||
layout.separator()
|
||||
layout.operator("help.report_bug", icon='ICON_URL')
|
||||
layout.separator()
|
||||
layout.operator("help.python_api", icon='ICON_URL')
|
||||
layout.operator("help.operator_cheat_sheet")
|
||||
|
||||
bpy.types.register(INFO_HT_header)
|
||||
bpy.types.register(INFO_MT_file)
|
||||
@ -297,14 +298,14 @@ class HELP_OT_manual(HelpOperator):
|
||||
'''The Blender Wiki manual'''
|
||||
bl_idname = "help.manual"
|
||||
bl_label = "Manual"
|
||||
_url = 'http://wiki.blender.org/index.php/Manual'
|
||||
_url = 'http://wiki.blender.org/index.php/Doc:Manual'
|
||||
|
||||
|
||||
class HELP_OT_release_logs(HelpOperator):
|
||||
'''Information about the changes in this version of Blender'''
|
||||
bl_idname = "help.release_logs"
|
||||
bl_label = "Release Logs"
|
||||
_url = 'http://www.blender.org/development/release-logs/'
|
||||
bl_label = "Release Log"
|
||||
_url = 'http://www.blender.org/development/release-logs/blender-250/'
|
||||
|
||||
|
||||
class HELP_OT_blender_website(HelpOperator):
|
||||
@ -342,6 +343,13 @@ class HELP_OT_report_bug(HelpOperator):
|
||||
_url = 'http://projects.blender.org/tracker/?atid=498&group_id=9&func=browse'
|
||||
|
||||
|
||||
class HELP_OT_python_api(HelpOperator):
|
||||
'''Reference for operator and data Python API'''
|
||||
bl_idname = "help.python_api"
|
||||
bl_label = "Python API Reference"
|
||||
_url = 'http://www.blender.org/documentation/250PythonDoc/'
|
||||
|
||||
|
||||
class HELP_OT_operator_cheat_sheet(bpy.types.Operator):
|
||||
bl_idname = "help.operator_cheat_sheet"
|
||||
bl_label = "Operator Cheat Sheet (new textblock)"
|
||||
@ -375,4 +383,5 @@ bpy.ops.add(HELP_OT_blender_eshop)
|
||||
bpy.ops.add(HELP_OT_developer_community)
|
||||
bpy.ops.add(HELP_OT_user_community)
|
||||
bpy.ops.add(HELP_OT_report_bug)
|
||||
bpy.ops.add(HELP_OT_python_api)
|
||||
bpy.ops.add(HELP_OT_operator_cheat_sheet)
|
||||
|
@ -35,15 +35,15 @@ class LOGIC_PT_properties(bpy.types.Panel):
|
||||
ob = context.active_object
|
||||
game = ob.game
|
||||
|
||||
layout.itemO("object.game_property_new", text="Add Game Property")
|
||||
layout.operator("object.game_property_new", text="Add Game Property")
|
||||
|
||||
for i, prop in enumerate(game.properties):
|
||||
|
||||
row = layout.row(align=True)
|
||||
row.itemR(prop, "name", text="")
|
||||
row.itemR(prop, "type", text="")
|
||||
row.itemR(prop, "value", text="", toggle=True) # we dont care about the type. rna will display correctly
|
||||
row.itemR(prop, "debug", text="", toggle=True, icon='ICON_INFO')
|
||||
row.item_intO("object.game_property_remove", "index", i, text="", icon='ICON_X')
|
||||
row.prop(prop, "name", text="")
|
||||
row.prop(prop, "type", text="")
|
||||
row.prop(prop, "value", text="", toggle=True) # we dont care about the type. rna will display correctly
|
||||
row.prop(prop, "debug", text="", toggle=True, icon='ICON_INFO')
|
||||
row.operator("object.game_property_remove", text="", icon='ICON_X').index = i
|
||||
|
||||
bpy.types.register(LOGIC_PT_properties)
|
||||
|
@ -33,13 +33,13 @@ class NODE_HT_header(bpy.types.Header):
|
||||
|
||||
if context.area.show_menus:
|
||||
sub = row.row(align=True)
|
||||
sub.itemM("NODE_MT_view")
|
||||
sub.itemM("NODE_MT_select")
|
||||
sub.itemM("NODE_MT_add")
|
||||
sub.itemM("NODE_MT_node")
|
||||
sub.menu("NODE_MT_view")
|
||||
sub.menu("NODE_MT_select")
|
||||
sub.menu("NODE_MT_add")
|
||||
sub.menu("NODE_MT_node")
|
||||
|
||||
row = layout.row()
|
||||
row.itemR(snode, "tree_type", text="", expand=True)
|
||||
row.prop(snode, "tree_type", text="", expand=True)
|
||||
|
||||
if snode.tree_type == 'MATERIAL':
|
||||
ob = snode.id_from
|
||||
@ -47,24 +47,24 @@ class NODE_HT_header(bpy.types.Header):
|
||||
if ob:
|
||||
layout.template_ID(ob, "active_material", new="material.new")
|
||||
if snode_id:
|
||||
layout.itemR(snode_id, "use_nodes")
|
||||
layout.prop(snode_id, "use_nodes")
|
||||
|
||||
elif snode.tree_type == 'TEXTURE':
|
||||
row.itemR(snode, "texture_type", text="", expand=True)
|
||||
row.prop(snode, "texture_type", text="", expand=True)
|
||||
|
||||
snode_id = snode.id
|
||||
id_from = snode.id_from
|
||||
if id_from:
|
||||
layout.template_ID(id_from, "active_texture", new="texture.new")
|
||||
if snode_id:
|
||||
layout.itemR(snode_id, "use_nodes")
|
||||
layout.prop(snode_id, "use_nodes")
|
||||
|
||||
elif snode.tree_type == 'COMPOSITING':
|
||||
snode_id = snode.id
|
||||
|
||||
layout.itemR(snode_id, "use_nodes")
|
||||
layout.itemR(snode_id.render_data, "free_unused_nodes", text="Free Unused")
|
||||
layout.itemR(snode, "backdrop")
|
||||
layout.prop(snode_id, "use_nodes")
|
||||
layout.prop(snode_id.render_data, "free_unused_nodes", text="Free Unused")
|
||||
layout.prop(snode, "backdrop")
|
||||
|
||||
|
||||
class NODE_MT_view(bpy.types.Menu):
|
||||
@ -73,16 +73,16 @@ class NODE_MT_view(bpy.types.Menu):
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
layout.itemO("node.properties", icon='ICON_MENU_PANEL')
|
||||
layout.itemS()
|
||||
layout.operator("node.properties", icon='ICON_MENU_PANEL')
|
||||
layout.separator()
|
||||
|
||||
layout.itemO("view2d.zoom_in")
|
||||
layout.itemO("view2d.zoom_out")
|
||||
layout.operator("view2d.zoom_in")
|
||||
layout.operator("view2d.zoom_out")
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
layout.itemO("node.view_all")
|
||||
layout.itemO("screen.screen_full_area")
|
||||
layout.operator("node.view_all")
|
||||
layout.operator("screen.screen_full_area")
|
||||
|
||||
|
||||
class NODE_MT_select(bpy.types.Menu):
|
||||
@ -91,12 +91,12 @@ class NODE_MT_select(bpy.types.Menu):
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
layout.itemO("node.select_border")
|
||||
layout.operator("node.select_border")
|
||||
|
||||
layout.itemS()
|
||||
layout.itemO("node.select_all")
|
||||
layout.itemO("node.select_linked_from")
|
||||
layout.itemO("node.select_linked_to")
|
||||
layout.separator()
|
||||
layout.operator("node.select_all")
|
||||
layout.operator("node.select_linked_from")
|
||||
layout.operator("node.select_linked_to")
|
||||
|
||||
|
||||
class NODE_MT_node(bpy.types.Menu):
|
||||
@ -105,34 +105,34 @@ class NODE_MT_node(bpy.types.Menu):
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
layout.itemO("tfm.translate")
|
||||
layout.itemO("tfm.rotate")
|
||||
layout.itemO("tfm.resize")
|
||||
layout.operator("tfm.translate")
|
||||
layout.operator("tfm.rotate")
|
||||
layout.operator("tfm.resize")
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
layout.itemO("node.duplicate_move")
|
||||
layout.itemO("node.delete")
|
||||
layout.operator("node.duplicate_move")
|
||||
layout.operator("node.delete")
|
||||
|
||||
layout.itemS()
|
||||
layout.itemO("node.link_make")
|
||||
layout.separator()
|
||||
layout.operator("node.link_make")
|
||||
|
||||
layout.itemS()
|
||||
layout.itemO("node.group_edit")
|
||||
layout.itemO("node.group_ungroup")
|
||||
layout.itemO("node.group_make")
|
||||
layout.separator()
|
||||
layout.operator("node.group_edit")
|
||||
layout.operator("node.group_ungroup")
|
||||
layout.operator("node.group_make")
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
layout.itemO("node.hide")
|
||||
layout.itemO("node.mute")
|
||||
layout.operator("node.hide")
|
||||
layout.operator("node.mute")
|
||||
|
||||
# XXX
|
||||
# layout.itemO("node.rename")
|
||||
# layout.operator("node.rename")
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
layout.itemO("node.show_cyclic_dependencies")
|
||||
layout.operator("node.show_cyclic_dependencies")
|
||||
|
||||
bpy.types.register(NODE_HT_header)
|
||||
bpy.types.register(NODE_MT_view)
|
||||
|
@ -35,29 +35,29 @@ class OUTLINER_HT_header(bpy.types.Header):
|
||||
|
||||
if context.area.show_menus:
|
||||
sub = row.row(align=True)
|
||||
sub.itemM("OUTLINER_MT_view")
|
||||
sub.menu("OUTLINER_MT_view")
|
||||
if space.display_mode == 'DATABLOCKS':
|
||||
sub.itemM("OUTLINER_MT_edit_datablocks")
|
||||
sub.menu("OUTLINER_MT_edit_datablocks")
|
||||
|
||||
layout.itemR(space, "display_mode", text="")
|
||||
layout.prop(space, "display_mode", text="")
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
if space.display_mode == 'DATABLOCKS':
|
||||
row = layout.row(align=True)
|
||||
row.itemO("outliner.keyingset_add_selected", icon='ICON_ZOOMIN', text="")
|
||||
row.itemO("outliner.keyingset_remove_selected", icon='ICON_ZOOMOUT', text="")
|
||||
row.operator("outliner.keyingset_add_selected", icon='ICON_ZOOMIN', text="")
|
||||
row.operator("outliner.keyingset_remove_selected", icon='ICON_ZOOMOUT', text="")
|
||||
|
||||
if ks:
|
||||
row = layout.row(align=False)
|
||||
row.item_pointerR(scene, "active_keying_set", scene, "keying_sets", text="")
|
||||
row.prop_object(scene, "active_keying_set", scene, "keying_sets", text="")
|
||||
|
||||
row = layout.row(align=True)
|
||||
row.itemO("anim.insert_keyframe", text="", icon='ICON_KEY_HLT')
|
||||
row.itemO("anim.delete_keyframe", text="", icon='ICON_KEY_DEHLT')
|
||||
row.operator("anim.keyframe_insert", text="", icon='ICON_KEY_HLT')
|
||||
row.operator("anim.keyframe_delete", text="", icon='ICON_KEY_DEHLT')
|
||||
else:
|
||||
row = layout.row(align=False)
|
||||
row.itemL(text="No Keying Set active")
|
||||
row.label(text="No Keying Set active")
|
||||
|
||||
|
||||
class OUTLINER_MT_view(bpy.types.Menu):
|
||||
@ -70,12 +70,12 @@ class OUTLINER_MT_view(bpy.types.Menu):
|
||||
|
||||
col = layout.column()
|
||||
if space.display_mode not in ('DATABLOCKS', 'USER_PREFERENCES', 'KEYMAPS'):
|
||||
col.itemR(space, "show_restriction_columns")
|
||||
col.itemS()
|
||||
col.itemO("outliner.show_active")
|
||||
col.prop(space, "show_restriction_columns")
|
||||
col.separator()
|
||||
col.operator("outliner.show_active")
|
||||
|
||||
col.itemO("outliner.show_one_level")
|
||||
col.itemO("outliner.show_hierarchy")
|
||||
col.operator("outliner.show_one_level")
|
||||
col.operator("outliner.show_hierarchy")
|
||||
|
||||
|
||||
class OUTLINER_MT_edit_datablocks(bpy.types.Menu):
|
||||
@ -86,13 +86,13 @@ class OUTLINER_MT_edit_datablocks(bpy.types.Menu):
|
||||
|
||||
col = layout.column()
|
||||
|
||||
col.itemO("outliner.keyingset_add_selected")
|
||||
col.itemO("outliner.keyingset_remove_selected")
|
||||
col.operator("outliner.keyingset_add_selected")
|
||||
col.operator("outliner.keyingset_remove_selected")
|
||||
|
||||
col.itemS()
|
||||
col.separator()
|
||||
|
||||
col.itemO("outliner.drivers_add_selected")
|
||||
col.itemO("outliner.drivers_delete_selected")
|
||||
col.operator("outliner.drivers_add_selected")
|
||||
col.operator("outliner.drivers_delete_selected")
|
||||
|
||||
bpy.types.register(OUTLINER_HT_header)
|
||||
bpy.types.register(OUTLINER_MT_view)
|
||||
|
@ -40,23 +40,23 @@ class SEQUENCER_HT_header(bpy.types.Header):
|
||||
|
||||
if context.area.show_menus:
|
||||
sub = row.row(align=True)
|
||||
sub.itemM("SEQUENCER_MT_view")
|
||||
sub.menu("SEQUENCER_MT_view")
|
||||
|
||||
row.itemS()
|
||||
row.separator()
|
||||
|
||||
if st.display_mode == 'SEQUENCER':
|
||||
sub.itemM("SEQUENCER_MT_select")
|
||||
sub.itemM("SEQUENCER_MT_marker")
|
||||
sub.itemM("SEQUENCER_MT_add")
|
||||
sub.itemM("SEQUENCER_MT_strip")
|
||||
sub.menu("SEQUENCER_MT_select")
|
||||
sub.menu("SEQUENCER_MT_marker")
|
||||
sub.menu("SEQUENCER_MT_add")
|
||||
sub.menu("SEQUENCER_MT_strip")
|
||||
|
||||
layout.itemR(st, "display_mode", text="")
|
||||
layout.prop(st, "display_mode", text="")
|
||||
|
||||
if st.display_mode == 'SEQUENCER':
|
||||
layout.itemS()
|
||||
layout.itemO("sequencer.reload")
|
||||
layout.separator()
|
||||
layout.operator("sequencer.refresh_all")
|
||||
else:
|
||||
layout.itemR(st, "display_channel", text="Channel")
|
||||
layout.prop(st, "display_channel", text="Channel")
|
||||
|
||||
|
||||
class SEQUENCER_MT_view(bpy.types.Menu):
|
||||
@ -97,11 +97,11 @@ class SEQUENCER_MT_view(bpy.types.Menu):
|
||||
menuwidth, 19, NULL, 0.0, 0.0, 1, 2, "");
|
||||
|
||||
"""
|
||||
layout.itemS()
|
||||
layout.itemO("sequencer.view_all")
|
||||
layout.itemO("sequencer.view_selected")
|
||||
layout.itemS()
|
||||
layout.itemO("screen.screen_full_area", text="Toggle Full Screen")
|
||||
layout.separator()
|
||||
layout.operator("sequencer.view_all")
|
||||
layout.operator("sequencer.view_selected")
|
||||
layout.separator()
|
||||
layout.operator("screen.screen_full_area", text="Toggle Full Screen")
|
||||
"""
|
||||
|
||||
|
||||
@ -114,12 +114,12 @@ class SEQUENCER_MT_view(bpy.types.Menu):
|
||||
uiDefMenuSep(block);
|
||||
"""
|
||||
|
||||
layout.itemR(st, "draw_frames")
|
||||
layout.itemR(st, "show_cframe_indicator")
|
||||
layout.prop(st, "draw_frames")
|
||||
layout.prop(st, "show_cframe_indicator")
|
||||
if st.display_mode == 'IMAGE':
|
||||
layout.itemR(st, "draw_safe_margin")
|
||||
layout.prop(st, "draw_safe_margin")
|
||||
if st.display_mode == 'WAVEFORM':
|
||||
layout.itemR(st, "separate_color_preview")
|
||||
layout.prop(st, "separate_color_preview")
|
||||
|
||||
"""
|
||||
if(!sa->full) uiDefIconTextBut(block, BUTM, B_FULL, ICON_BLANK1, "Maximize Window|Ctrl UpArrow", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0,0, "");
|
||||
@ -135,16 +135,16 @@ class SEQUENCER_MT_select(bpy.types.Menu):
|
||||
layout = self.layout
|
||||
|
||||
layout.column()
|
||||
layout.item_enumO("sequencer.select_active_side", "side", 'LEFT', text="Strips to the Left")
|
||||
layout.item_enumO("sequencer.select_active_side", "side", 'RIGHT', text="Strips to the Right")
|
||||
layout.itemS()
|
||||
layout.item_enumO("sequencer.select_handles", "side", 'BOTH', text="Surrounding Handles")
|
||||
layout.item_enumO("sequencer.select_handles", "side", 'LEFT', text="Left Handle")
|
||||
layout.item_enumO("sequencer.select_handles", "side", 'RIGHT', text="Right Handle")
|
||||
layout.itemS()
|
||||
layout.itemO("sequencer.select_linked")
|
||||
layout.itemO("sequencer.select_all_toggle")
|
||||
layout.itemO("sequencer.select_inverse")
|
||||
layout.operator("sequencer.select_active_side", text="Strips to the Left").side = 'LEFT'
|
||||
layout.operator("sequencer.select_active_side", text="Strips to the Right").side = 'RIGHT'
|
||||
layout.separator()
|
||||
layout.operator("sequencer.select_handles", text="Surrounding Handles").side = 'BOTH'
|
||||
layout.operator("sequencer.select_handles", text="Left Handle").side = 'LEFT'
|
||||
layout.operator("sequencer.select_handles", text="Right Handle").side = 'RIGHT'
|
||||
layout.separator()
|
||||
layout.operator("sequencer.select_linked")
|
||||
layout.operator("sequencer.select_all_toggle")
|
||||
layout.operator("sequencer.select_inverse")
|
||||
|
||||
|
||||
class SEQUENCER_MT_marker(bpy.types.Menu):
|
||||
@ -154,14 +154,14 @@ class SEQUENCER_MT_marker(bpy.types.Menu):
|
||||
layout = self.layout
|
||||
|
||||
layout.column()
|
||||
layout.itemO("marker.add", text="Add Marker")
|
||||
layout.itemO("marker.duplicate", text="Duplicate Marker")
|
||||
layout.itemO("marker.move", text="Grab/Move Marker")
|
||||
layout.itemO("marker.delete", text="Delete Marker")
|
||||
layout.itemS()
|
||||
layout.itemL(text="ToDo: Name Marker")
|
||||
layout.operator("marker.add", text="Add Marker")
|
||||
layout.operator("marker.duplicate", text="Duplicate Marker")
|
||||
layout.operator("marker.move", text="Grab/Move Marker")
|
||||
layout.operator("marker.delete", text="Delete Marker")
|
||||
layout.separator()
|
||||
layout.label(text="ToDo: Name Marker")
|
||||
|
||||
#layout.itemO("sequencer.sound_strip_add", text="Transform Markers") # toggle, will be rna - (sseq->flag & SEQ_MARKER_TRANS)
|
||||
#layout.operator("sequencer.sound_strip_add", text="Transform Markers") # toggle, will be rna - (sseq->flag & SEQ_MARKER_TRANS)
|
||||
|
||||
|
||||
class SEQUENCER_MT_add(bpy.types.Menu):
|
||||
@ -172,12 +172,12 @@ class SEQUENCER_MT_add(bpy.types.Menu):
|
||||
layout.operator_context = 'INVOKE_REGION_WIN'
|
||||
|
||||
layout.column()
|
||||
layout.itemO("sequencer.scene_strip_add", text="Scene")
|
||||
layout.itemO("sequencer.movie_strip_add", text="Movie")
|
||||
layout.itemO("sequencer.image_strip_add", text="Image")
|
||||
layout.itemO("sequencer.sound_strip_add", text="Sound")
|
||||
layout.operator("sequencer.scene_strip_add", text="Scene")
|
||||
layout.operator("sequencer.movie_strip_add", text="Movie")
|
||||
layout.operator("sequencer.image_strip_add", text="Image")
|
||||
layout.operator("sequencer.sound_strip_add", text="Sound")
|
||||
|
||||
layout.itemM("SEQUENCER_MT_add_effect")
|
||||
layout.menu("SEQUENCER_MT_add_effect")
|
||||
|
||||
|
||||
class SEQUENCER_MT_add_effect(bpy.types.Menu):
|
||||
@ -188,19 +188,19 @@ class SEQUENCER_MT_add_effect(bpy.types.Menu):
|
||||
layout.operator_context = 'INVOKE_REGION_WIN'
|
||||
|
||||
layout.column()
|
||||
layout.item_enumO("sequencer.effect_strip_add", 'type', 'ADD')
|
||||
layout.item_enumO("sequencer.effect_strip_add", 'type', 'SUBTRACT')
|
||||
layout.item_enumO("sequencer.effect_strip_add", 'type', 'ALPHA_OVER')
|
||||
layout.item_enumO("sequencer.effect_strip_add", 'type', 'ALPHA_UNDER')
|
||||
layout.item_enumO("sequencer.effect_strip_add", 'type', 'GAMMA_CROSS')
|
||||
layout.item_enumO("sequencer.effect_strip_add", 'type', 'MULTIPLY')
|
||||
layout.item_enumO("sequencer.effect_strip_add", 'type', 'OVER_DROP')
|
||||
layout.item_enumO("sequencer.effect_strip_add", 'type', 'PLUGIN')
|
||||
layout.item_enumO("sequencer.effect_strip_add", 'type', 'WIPE')
|
||||
layout.item_enumO("sequencer.effect_strip_add", 'type', 'GLOW')
|
||||
layout.item_enumO("sequencer.effect_strip_add", 'type', 'TRANSFORM')
|
||||
layout.item_enumO("sequencer.effect_strip_add", 'type', 'COLOR')
|
||||
layout.item_enumO("sequencer.effect_strip_add", 'type', 'SPEED')
|
||||
layout.operator("sequencer.effect_strip_add", text="Add").type = 'ADD'
|
||||
layout.operator("sequencer.effect_strip_add", text="Subtract").type = 'SUBTRACT'
|
||||
layout.operator("sequencer.effect_strip_add", text="Alpha Over").type = 'ALPHA_OVER'
|
||||
layout.operator("sequencer.effect_strip_add", text="Alpha Under").type = 'ALPHA_UNDER'
|
||||
layout.operator("sequencer.effect_strip_add", text="Gamma Cross").type = 'GAMMA_CROSS'
|
||||
layout.operator("sequencer.effect_strip_add", text="Multiply").type = 'MULTIPLY'
|
||||
layout.operator("sequencer.effect_strip_add", text="Over Drop").type = 'OVER_DROP'
|
||||
layout.operator("sequencer.effect_strip_add", text="Plugin").type = 'PLUGIN'
|
||||
layout.operator("sequencer.effect_strip_add", text="Wipe").type = 'WIPE'
|
||||
layout.operator("sequencer.effect_strip_add", text="Glow").type = 'GLOW'
|
||||
layout.operator("sequencer.effect_strip_add", text="Transform").type = 'TRANSFORM'
|
||||
layout.operator("sequencer.effect_strip_add", text="Color").type = 'COLOR'
|
||||
layout.operator("sequencer.effect_strip_add", text="Speed Control").type = 'SPEED'
|
||||
|
||||
|
||||
class SEQUENCER_MT_strip(bpy.types.Menu):
|
||||
@ -212,18 +212,18 @@ class SEQUENCER_MT_strip(bpy.types.Menu):
|
||||
layout.operator_context = 'INVOKE_REGION_WIN'
|
||||
|
||||
layout.column()
|
||||
layout.item_enumO("tfm.transform", "mode", 'TRANSLATION', text="Grab/Move")
|
||||
layout.item_enumO("tfm.transform", "mode", 'TIME_EXTEND', text="Grab/Extend from frame")
|
||||
layout.operator("tfm.transform", text="Grab/Move").mode = 'TRANSLATION'
|
||||
layout.operator("tfm.transform", text="Grab/Extend from frame").mode = 'TIME_EXTEND'
|
||||
# uiItemO(layout, NULL, 0, "sequencer.strip_snap"); // TODO - add this operator
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
layout.item_enumO("sequencer.cut", "type", 'HARD', text="Cut (hard) at frame")
|
||||
layout.item_enumO("sequencer.cut", "type", 'SOFT', text="Cut (soft) at frame")
|
||||
layout.itemO("sequencer.images_separate")
|
||||
layout.itemS()
|
||||
layout.operator("sequencer.cut", text="Cut (hard) at frame").type = 'HARD'
|
||||
layout.operator("sequencer.cut", text="Cut (soft) at frame").type = 'SOFT'
|
||||
layout.operator("sequencer.images_separate")
|
||||
layout.separator()
|
||||
|
||||
layout.itemO("sequencer.duplicate")
|
||||
layout.itemO("sequencer.delete")
|
||||
layout.operator("sequencer.duplicate")
|
||||
layout.operator("sequencer.delete")
|
||||
|
||||
strip = act_strip(context)
|
||||
|
||||
@ -231,45 +231,45 @@ class SEQUENCER_MT_strip(bpy.types.Menu):
|
||||
stype = strip.type
|
||||
|
||||
if stype == 'EFFECT':
|
||||
layout.itemS()
|
||||
layout.itemO("sequencer.effect_change")
|
||||
layout.itemO("sequencer.effect_reassign_inputs")
|
||||
layout.separator()
|
||||
layout.operator("sequencer.effect_change")
|
||||
layout.operator("sequencer.effect_reassign_inputs")
|
||||
elif stype == 'IMAGE':
|
||||
layout.itemS()
|
||||
layout.itemO("sequencer.image_change")
|
||||
layout.itemO("sequencer.rendersize")
|
||||
layout.separator()
|
||||
layout.operator("sequencer.image_change")
|
||||
layout.operator("sequencer.rendersize")
|
||||
elif stype == 'SCENE':
|
||||
layout.itemS()
|
||||
layout.itemO("sequencer.scene_change", text="Change Scene")
|
||||
layout.separator()
|
||||
layout.operator("sequencer.scene_change", text="Change Scene")
|
||||
elif stype == 'MOVIE':
|
||||
layout.itemS()
|
||||
layout.itemO("sequencer.movie_change")
|
||||
layout.itemO("sequencer.rendersize")
|
||||
layout.separator()
|
||||
layout.operator("sequencer.movie_change")
|
||||
layout.operator("sequencer.rendersize")
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
layout.itemO("sequencer.meta_make")
|
||||
layout.itemO("sequencer.meta_separate")
|
||||
layout.operator("sequencer.meta_make")
|
||||
layout.operator("sequencer.meta_separate")
|
||||
|
||||
#if (ed && (ed->metastack.first || (ed->act_seq && ed->act_seq->type == SEQ_META))) {
|
||||
# uiItemS(layout);
|
||||
# uiItemO(layout, NULL, 0, "sequencer.meta_toggle");
|
||||
#}
|
||||
|
||||
layout.itemS()
|
||||
layout.itemO("sequencer.reload")
|
||||
layout.itemS()
|
||||
layout.itemO("sequencer.lock")
|
||||
layout.itemO("sequencer.unlock")
|
||||
layout.itemO("sequencer.mute")
|
||||
layout.itemO("sequencer.unmute")
|
||||
layout.separator()
|
||||
layout.operator("sequencer.reload")
|
||||
layout.separator()
|
||||
layout.operator("sequencer.lock")
|
||||
layout.operator("sequencer.unlock")
|
||||
layout.operator("sequencer.mute")
|
||||
layout.operator("sequencer.unmute")
|
||||
|
||||
layout.item_booleanO("sequencer.mute", "unselected", 1, text="Mute Deselected Strips")
|
||||
layout.operator("sequencer.mute", text="Mute Deselected Strips").unselected = True
|
||||
|
||||
layout.itemO("sequencer.snap")
|
||||
layout.operator("sequencer.snap")
|
||||
|
||||
layout.itemO("sequencer.swap_right")
|
||||
layout.itemO("sequencer.swap_left")
|
||||
layout.operator("sequencer.swap_right")
|
||||
layout.operator("sequencer.swap_left")
|
||||
|
||||
|
||||
class SequencerButtonsPanel(bpy.types.Panel):
|
||||
@ -277,7 +277,7 @@ class SequencerButtonsPanel(bpy.types.Panel):
|
||||
bl_region_type = 'UI'
|
||||
|
||||
def poll(self, context):
|
||||
return context.space_data.display_mode == 'SEQUENCER' and act_strip(context) != None
|
||||
return (context.space_data.display_mode == 'SEQUENCER') and (act_strip(context) is not None)
|
||||
|
||||
|
||||
class SequencerButtonsPanel_Output(bpy.types.Panel):
|
||||
@ -297,47 +297,47 @@ class SEQUENCER_PT_edit(SequencerButtonsPanel):
|
||||
strip = act_strip(context)
|
||||
|
||||
split = layout.split(percentage=0.3)
|
||||
split.itemL(text="Name:")
|
||||
split.itemR(strip, "name", text="")
|
||||
split.label(text="Name:")
|
||||
split.prop(strip, "name", text="")
|
||||
|
||||
split = layout.split(percentage=0.3)
|
||||
split.itemL(text="Type:")
|
||||
split.itemR(strip, "type", text="")
|
||||
split.label(text="Type:")
|
||||
split.prop(strip, "type", text="")
|
||||
|
||||
split = layout.split(percentage=0.3)
|
||||
split.itemL(text="Blend:")
|
||||
split.itemR(strip, "blend_mode", text="")
|
||||
split.label(text="Blend:")
|
||||
split.prop(strip, "blend_mode", text="")
|
||||
|
||||
row = layout.row()
|
||||
if strip.mute == True:
|
||||
row.itemR(strip, "mute", toggle=True, icon='ICON_RESTRICT_VIEW_ON', text="")
|
||||
elif strip.mute == False:
|
||||
row.itemR(strip, "mute", toggle=True, icon='ICON_RESTRICT_VIEW_OFF', text="")
|
||||
row.prop(strip, "mute", toggle=True, icon='ICON_RESTRICT_VIEW_ON', text="")
|
||||
elif strip.mute is False:
|
||||
row.prop(strip, "mute", toggle=True, icon='ICON_RESTRICT_VIEW_OFF', text="")
|
||||
|
||||
sub = row.row()
|
||||
sub.active = (not strip.mute)
|
||||
|
||||
sub.itemR(strip, "blend_opacity", text="Opacity", slider=True)
|
||||
sub.prop(strip, "blend_opacity", text="Opacity", slider=True)
|
||||
|
||||
row = layout.row()
|
||||
row.itemR(strip, "lock")
|
||||
row.itemR(strip, "frame_locked", text="Frame Lock")
|
||||
row.prop(strip, "lock")
|
||||
row.prop(strip, "frame_locked", text="Frame Lock")
|
||||
|
||||
col = layout.column()
|
||||
col.enabled = not strip.lock
|
||||
col.itemR(strip, "channel")
|
||||
col.itemR(strip, "start_frame")
|
||||
col.itemR(strip, "length")
|
||||
col.prop(strip, "channel")
|
||||
col.prop(strip, "start_frame")
|
||||
col.prop(strip, "length")
|
||||
|
||||
col = layout.column(align=True)
|
||||
col.itemL(text="Offset:")
|
||||
col.itemR(strip, "start_offset", text="Start")
|
||||
col.itemR(strip, "end_offset", text="End")
|
||||
col.label(text="Offset:")
|
||||
col.prop(strip, "start_offset", text="Start")
|
||||
col.prop(strip, "end_offset", text="End")
|
||||
|
||||
col = layout.column(align=True)
|
||||
col.itemL(text="Still:")
|
||||
col.itemR(strip, "start_still", text="Start")
|
||||
col.itemR(strip, "end_still", text="End")
|
||||
col.label(text="Still:")
|
||||
col.prop(strip, "start_still", text="Start")
|
||||
col.prop(strip, "end_still", text="End")
|
||||
|
||||
|
||||
class SEQUENCER_PT_effect(SequencerButtonsPanel):
|
||||
@ -359,77 +359,79 @@ class SEQUENCER_PT_effect(SequencerButtonsPanel):
|
||||
strip = act_strip(context)
|
||||
|
||||
if strip.type == 'COLOR':
|
||||
layout.itemR(strip, "color")
|
||||
layout.prop(strip, "color")
|
||||
|
||||
elif strip.type == 'WIPE':
|
||||
|
||||
col = layout.column()
|
||||
col.itemR(strip, "transition_type")
|
||||
col.itemL(text="Direction:")
|
||||
col.row().itemR(strip, "direction", expand=True)
|
||||
col.prop(strip, "transition_type")
|
||||
col.label(text="Direction:")
|
||||
col.row().prop(strip, "direction", expand=True)
|
||||
|
||||
col = layout.column()
|
||||
col.itemR(strip, "blur_width", slider=True)
|
||||
col.prop(strip, "blur_width", slider=True)
|
||||
if strip.transition_type in ('SINGLE', 'DOUBLE'):
|
||||
col.itemR(strip, "angle")
|
||||
col.prop(strip, "angle")
|
||||
|
||||
elif strip.type == 'GLOW':
|
||||
flow = layout.column_flow()
|
||||
flow.itemR(strip, "threshold", slider=True)
|
||||
flow.itemR(strip, "clamp", slider=True)
|
||||
flow.itemR(strip, "boost_factor")
|
||||
flow.itemR(strip, "blur_distance")
|
||||
flow.prop(strip, "threshold", slider=True)
|
||||
flow.prop(strip, "clamp", slider=True)
|
||||
flow.prop(strip, "boost_factor")
|
||||
flow.prop(strip, "blur_distance")
|
||||
|
||||
row = layout.row()
|
||||
row.itemR(strip, "quality", slider=True)
|
||||
row.itemR(strip, "only_boost")
|
||||
row.prop(strip, "quality", slider=True)
|
||||
row.prop(strip, "only_boost")
|
||||
|
||||
elif strip.type == 'SPEED':
|
||||
layout.itemR(strip, "global_speed")
|
||||
layout.prop(strip, "global_speed")
|
||||
|
||||
flow = layout.column_flow()
|
||||
flow.itemR(strip, "curve_velocity")
|
||||
flow.itemR(strip, "curve_compress_y")
|
||||
flow.itemR(strip, "frame_blending")
|
||||
flow.prop(strip, "curve_velocity")
|
||||
flow.prop(strip, "curve_compress_y")
|
||||
flow.prop(strip, "frame_blending")
|
||||
|
||||
elif strip.type == 'TRANSFORM':
|
||||
|
||||
col = layout.column()
|
||||
col.itemR(strip, "interpolation")
|
||||
col.itemR(strip, "translation_unit")
|
||||
col.prop(strip, "interpolation")
|
||||
col.prop(strip, "translation_unit")
|
||||
|
||||
col = layout.column(align=True)
|
||||
col.itemL(text="Position X:")
|
||||
col.itemR(strip, "translate_start_x", text="Start")
|
||||
col.itemR(strip, "translate_end_x", text="End")
|
||||
col.label(text="Position X:")
|
||||
col.prop(strip, "translate_start_x", text="Start")
|
||||
col.prop(strip, "translate_end_x", text="End")
|
||||
|
||||
col = layout.column(align=True)
|
||||
col.itemL(text="Position Y:")
|
||||
col.itemR(strip, "translate_start_y", text="Start")
|
||||
col.itemR(strip, "translate_end_y", text="End")
|
||||
col.label(text="Position Y:")
|
||||
col.prop(strip, "translate_start_y", text="Start")
|
||||
col.prop(strip, "translate_end_y", text="End")
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
col = layout.column(align=True)
|
||||
col.itemL(text="Scale X:")
|
||||
col.itemR(strip, "scale_start_x", text="Start")
|
||||
col.itemR(strip, "scale_end_x", text="End")
|
||||
col.label(text="Scale X:")
|
||||
col.prop(strip, "scale_start_x", text="Start")
|
||||
col.prop(strip, "scale_end_x", text="End")
|
||||
|
||||
col = layout.column(align=True)
|
||||
col.itemL(text="Scale Y:")
|
||||
col.itemR(strip, "scale_start_y", text="Start")
|
||||
col.itemR(strip, "scale_end_y", text="End")
|
||||
col.label(text="Scale Y:")
|
||||
col.prop(strip, "scale_start_y", text="Start")
|
||||
col.prop(strip, "scale_end_y", text="End")
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
col = layout.column(align=True)
|
||||
col.itemL(text="Rotation:")
|
||||
col.itemR(strip, "rotation_start", text="Start")
|
||||
col.itemR(strip, "rotation_end", text="End")
|
||||
col.label(text="Rotation:")
|
||||
col.prop(strip, "rotation_start", text="Start")
|
||||
col.prop(strip, "rotation_end", text="End")
|
||||
|
||||
col = layout.column(align=True)
|
||||
col.itemR(strip, "factor_0", text="Anim0")
|
||||
col.itemR(strip, "factor_1", text="Anim1")
|
||||
if strip.type == 'SPEED':
|
||||
col.prop(strip, "speed_fader", text="Speed fader")
|
||||
else:
|
||||
col.prop(strip, "effect_fader", text="Effect fader")
|
||||
|
||||
|
||||
class SEQUENCER_PT_input(SequencerButtonsPanel):
|
||||
@ -452,9 +454,9 @@ class SEQUENCER_PT_input(SequencerButtonsPanel):
|
||||
|
||||
split = layout.split(percentage=0.2)
|
||||
col = split.column()
|
||||
col.itemL(text="Path:")
|
||||
col.label(text="Path:")
|
||||
col = split.column()
|
||||
col.itemR(strip, "directory", text="")
|
||||
col.prop(strip, "directory", text="")
|
||||
|
||||
# Current element for the filename
|
||||
|
||||
@ -462,30 +464,30 @@ class SEQUENCER_PT_input(SequencerButtonsPanel):
|
||||
if elem:
|
||||
split = layout.split(percentage=0.2)
|
||||
col = split.column()
|
||||
col.itemL(text="File:")
|
||||
col.label(text="File:")
|
||||
col = split.column()
|
||||
col.itemR(elem, "filename", text="") # strip.elements[0] could be a fallback
|
||||
col.prop(elem, "filename", text="") # strip.elements[0] could be a fallback
|
||||
|
||||
layout.itemR(strip, "use_translation", text="Image Offset:")
|
||||
layout.prop(strip, "use_translation", text="Image Offset:")
|
||||
if strip.transform:
|
||||
col = layout.column(align=True)
|
||||
col.active = strip.use_translation
|
||||
col.itemR(strip.transform, "offset_x", text="X")
|
||||
col.itemR(strip.transform, "offset_y", text="Y")
|
||||
col.prop(strip.transform, "offset_x", text="X")
|
||||
col.prop(strip.transform, "offset_y", text="Y")
|
||||
|
||||
layout.itemR(strip, "use_crop", text="Image Crop:")
|
||||
layout.prop(strip, "use_crop", text="Image Crop:")
|
||||
if strip.crop:
|
||||
col = layout.column(align=True)
|
||||
col.active = strip.use_crop
|
||||
col.itemR(strip.crop, "top")
|
||||
col.itemR(strip.crop, "left")
|
||||
col.itemR(strip.crop, "bottom")
|
||||
col.itemR(strip.crop, "right")
|
||||
col.prop(strip.crop, "top")
|
||||
col.prop(strip.crop, "left")
|
||||
col.prop(strip.crop, "bottom")
|
||||
col.prop(strip.crop, "right")
|
||||
|
||||
col = layout.column(align=True)
|
||||
col.itemL(text="Trim Duration:")
|
||||
col.itemR(strip, "animation_start_offset", text="Start")
|
||||
col.itemR(strip, "animation_end_offset", text="End")
|
||||
col.label(text="Trim Duration:")
|
||||
col.prop(strip, "animation_start_offset", text="Start")
|
||||
col.prop(strip, "animation_end_offset", text="End")
|
||||
|
||||
|
||||
class SEQUENCER_PT_sound(SequencerButtonsPanel):
|
||||
@ -499,7 +501,7 @@ class SEQUENCER_PT_sound(SequencerButtonsPanel):
|
||||
if not strip:
|
||||
return False
|
||||
|
||||
return strip.type in ('SOUND', )
|
||||
return (strip.type == 'SOUND')
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@ -508,18 +510,39 @@ class SEQUENCER_PT_sound(SequencerButtonsPanel):
|
||||
|
||||
layout.template_ID(strip, "sound", open="sound.open")
|
||||
|
||||
layout.itemS()
|
||||
layout.itemR(strip.sound, "filename", text="")
|
||||
layout.separator()
|
||||
layout.prop(strip.sound, "filename", text="")
|
||||
|
||||
row = layout.row()
|
||||
if strip.sound.packed_file:
|
||||
row.itemO("sound.unpack", icon='ICON_PACKAGE', text="Unpack")
|
||||
row.operator("sound.unpack", icon='ICON_PACKAGE', text="Unpack")
|
||||
else:
|
||||
row.itemO("sound.pack", icon='ICON_UGLYPACKAGE', text="Pack")
|
||||
row.operator("sound.pack", icon='ICON_UGLYPACKAGE', text="Pack")
|
||||
|
||||
row.itemR(strip.sound, "caching")
|
||||
row.prop(strip.sound, "caching")
|
||||
|
||||
layout.itemR(strip, "volume")
|
||||
layout.prop(strip, "volume")
|
||||
|
||||
|
||||
class SEQUENCER_PT_scene(SequencerButtonsPanel):
|
||||
bl_label = "Scene"
|
||||
|
||||
def poll(self, context):
|
||||
if context.space_data.display_mode != 'SEQUENCER':
|
||||
return False
|
||||
|
||||
strip = act_strip(context)
|
||||
if not strip:
|
||||
return False
|
||||
|
||||
return (strip.type == 'SCENE')
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
strip = act_strip(context)
|
||||
|
||||
layout.template_ID(strip, "scene")
|
||||
|
||||
|
||||
class SEQUENCER_PT_filter(SequencerButtonsPanel):
|
||||
@ -541,35 +564,35 @@ class SEQUENCER_PT_filter(SequencerButtonsPanel):
|
||||
strip = act_strip(context)
|
||||
|
||||
col = layout.column()
|
||||
col.itemL(text="Video:")
|
||||
col.itemR(strip, "strobe")
|
||||
col.itemR(strip, "de_interlace")
|
||||
col.label(text="Video:")
|
||||
col.prop(strip, "strobe")
|
||||
col.prop(strip, "de_interlace")
|
||||
|
||||
col = layout.column()
|
||||
col.itemL(text="Colors:")
|
||||
col.itemR(strip, "multiply_colors", text="Multiply")
|
||||
col.itemR(strip, "premultiply")
|
||||
col.itemR(strip, "convert_float")
|
||||
col.label(text="Colors:")
|
||||
col.prop(strip, "multiply_colors", text="Multiply")
|
||||
col.prop(strip, "premultiply")
|
||||
col.prop(strip, "convert_float")
|
||||
|
||||
col = layout.column()
|
||||
col.itemL(text="Flip:")
|
||||
col.itemR(strip, "flip_x", text="X")
|
||||
col.itemR(strip, "flip_y", text="Y")
|
||||
col.itemR(strip, "reverse_frames", text="Backwards")
|
||||
col.label(text="Flip:")
|
||||
col.prop(strip, "flip_x", text="X")
|
||||
col.prop(strip, "flip_y", text="Y")
|
||||
col.prop(strip, "reverse_frames", text="Backwards")
|
||||
|
||||
layout.itemR(strip, "use_color_balance")
|
||||
layout.prop(strip, "use_color_balance")
|
||||
if strip.color_balance: # TODO - need to add this somehow
|
||||
row = layout.row()
|
||||
row.active = strip.use_color_balance
|
||||
col = row.column()
|
||||
col.itemR(strip.color_balance, "lift")
|
||||
col.itemR(strip.color_balance, "inverse_lift", text="Inverse")
|
||||
col.prop(strip.color_balance, "lift")
|
||||
col.prop(strip.color_balance, "inverse_lift", text="Inverse")
|
||||
col = row.column()
|
||||
col.itemR(strip.color_balance, "gamma")
|
||||
col.itemR(strip.color_balance, "inverse_gamma", text="Inverse")
|
||||
col.prop(strip.color_balance, "gamma")
|
||||
col.prop(strip.color_balance, "inverse_gamma", text="Inverse")
|
||||
col = row.column()
|
||||
col.itemR(strip.color_balance, "gain")
|
||||
col.itemR(strip.color_balance, "inverse_gain", text="Inverse")
|
||||
col.prop(strip.color_balance, "gain")
|
||||
col.prop(strip.color_balance, "inverse_gain", text="Inverse")
|
||||
|
||||
|
||||
class SEQUENCER_PT_proxy(SequencerButtonsPanel):
|
||||
@ -588,7 +611,7 @@ class SEQUENCER_PT_proxy(SequencerButtonsPanel):
|
||||
def draw_header(self, context):
|
||||
strip = act_strip(context)
|
||||
|
||||
self.layout.itemR(strip, "use_proxy", text="")
|
||||
self.layout.prop(strip, "use_proxy", text="")
|
||||
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
@ -596,10 +619,10 @@ class SEQUENCER_PT_proxy(SequencerButtonsPanel):
|
||||
strip = act_strip(context)
|
||||
|
||||
flow = layout.column_flow()
|
||||
flow.itemR(strip, "proxy_custom_directory")
|
||||
flow.prop(strip, "proxy_custom_directory")
|
||||
if strip.proxy: # TODO - need to add this somehow
|
||||
flow.itemR(strip.proxy, "directory")
|
||||
flow.itemR(strip.proxy, "file")
|
||||
flow.prop(strip.proxy, "directory")
|
||||
flow.prop(strip.proxy, "file")
|
||||
|
||||
|
||||
class SEQUENCER_PT_view(SequencerButtonsPanel_Output):
|
||||
@ -611,8 +634,8 @@ class SEQUENCER_PT_view(SequencerButtonsPanel_Output):
|
||||
st = context.space_data
|
||||
|
||||
col = layout.column()
|
||||
col.itemR(st, "draw_overexposed") # text="Zebra"
|
||||
col.itemR(st, "draw_safe_margin")
|
||||
col.prop(st, "draw_overexposed") # text="Zebra"
|
||||
col.prop(st, "draw_safe_margin")
|
||||
|
||||
bpy.types.register(SEQUENCER_HT_header) # header/menu classes
|
||||
bpy.types.register(SEQUENCER_MT_view)
|
||||
@ -626,6 +649,7 @@ bpy.types.register(SEQUENCER_PT_edit) # sequencer panels
|
||||
bpy.types.register(SEQUENCER_PT_effect)
|
||||
bpy.types.register(SEQUENCER_PT_input)
|
||||
bpy.types.register(SEQUENCER_PT_sound)
|
||||
bpy.types.register(SEQUENCER_PT_scene)
|
||||
bpy.types.register(SEQUENCER_PT_filter)
|
||||
bpy.types.register(SEQUENCER_PT_proxy)
|
||||
|
||||
|
@ -34,39 +34,39 @@ class TEXT_HT_header(bpy.types.Header):
|
||||
|
||||
if context.area.show_menus:
|
||||
sub = row.row(align=True)
|
||||
sub.itemM("TEXT_MT_text")
|
||||
sub.menu("TEXT_MT_text")
|
||||
if text:
|
||||
sub.itemM("TEXT_MT_edit")
|
||||
sub.itemM("TEXT_MT_format")
|
||||
sub.menu("TEXT_MT_edit")
|
||||
sub.menu("TEXT_MT_format")
|
||||
|
||||
if text and text.modified:
|
||||
row = layout.row()
|
||||
# row.color(redalert)
|
||||
row.itemO("text.resolve_conflict", text="", icon='ICON_HELP')
|
||||
row.operator("text.resolve_conflict", text="", icon='ICON_HELP')
|
||||
|
||||
layout.template_ID(st, "text", new="text.new", unlink="text.unlink")
|
||||
|
||||
row = layout.row(align=True)
|
||||
row.itemR(st, "line_numbers", text="")
|
||||
row.itemR(st, "word_wrap", text="")
|
||||
row.itemR(st, "syntax_highlight", text="")
|
||||
|
||||
row = layout.row()
|
||||
row.itemO("text.run_script")
|
||||
row.itemR(text, "use_module")
|
||||
row.prop(st, "line_numbers", text="")
|
||||
row.prop(st, "word_wrap", text="")
|
||||
row.prop(st, "syntax_highlight", text="")
|
||||
|
||||
if text:
|
||||
row = layout.row()
|
||||
row.operator("text.run_script")
|
||||
row.prop(text, "use_module")
|
||||
|
||||
row = layout.row()
|
||||
if text.filename != "":
|
||||
if text.dirty:
|
||||
row.itemL(text="File: *%s (unsaved)" % text.filename)
|
||||
row.label(text="File: *%s (unsaved)" % text.filename)
|
||||
else:
|
||||
row.itemL(text="File: %s" % text.filename)
|
||||
row.label(text="File: %s" % text.filename)
|
||||
else:
|
||||
if text.library:
|
||||
row.itemL(text="Text: External")
|
||||
row.label(text="Text: External")
|
||||
else:
|
||||
row.itemL(text="Text: Internal")
|
||||
row.label(text="Text: Internal")
|
||||
|
||||
|
||||
class TEXT_PT_properties(bpy.types.Panel):
|
||||
@ -80,14 +80,14 @@ class TEXT_PT_properties(bpy.types.Panel):
|
||||
st = context.space_data
|
||||
|
||||
flow = layout.column_flow()
|
||||
flow.itemR(st, "line_numbers")
|
||||
flow.itemR(st, "word_wrap")
|
||||
flow.itemR(st, "syntax_highlight")
|
||||
flow.itemR(st, "live_edit")
|
||||
flow.prop(st, "line_numbers")
|
||||
flow.prop(st, "word_wrap")
|
||||
flow.prop(st, "syntax_highlight")
|
||||
flow.prop(st, "live_edit")
|
||||
|
||||
flow = layout.column_flow()
|
||||
flow.itemR(st, "font_size")
|
||||
flow.itemR(st, "tab_width")
|
||||
flow.prop(st, "font_size")
|
||||
flow.prop(st, "tab_width")
|
||||
|
||||
|
||||
class TEXT_PT_find(bpy.types.Panel):
|
||||
@ -103,24 +103,24 @@ class TEXT_PT_find(bpy.types.Panel):
|
||||
# find
|
||||
col = layout.column(align=True)
|
||||
row = col.row()
|
||||
row.itemR(st, "find_text", text="")
|
||||
row.itemO("text.find_set_selected", text="", icon='ICON_TEXT')
|
||||
col.itemO("text.find")
|
||||
row.prop(st, "find_text", text="")
|
||||
row.operator("text.find_set_selected", text="", icon='ICON_TEXT')
|
||||
col.operator("text.find")
|
||||
|
||||
# replace
|
||||
col = layout.column(align=True)
|
||||
row = col.row()
|
||||
row.itemR(st, "replace_text", text="")
|
||||
row.itemO("text.replace_set_selected", text="", icon='ICON_TEXT')
|
||||
col.itemO("text.replace")
|
||||
row.prop(st, "replace_text", text="")
|
||||
row.operator("text.replace_set_selected", text="", icon='ICON_TEXT')
|
||||
col.operator("text.replace")
|
||||
|
||||
# mark
|
||||
layout.itemO("text.mark_all")
|
||||
layout.operator("text.mark_all")
|
||||
|
||||
# settings
|
||||
row = layout.row()
|
||||
row.itemR(st, "find_wrap", text="Wrap")
|
||||
row.itemR(st, "find_all", text="All")
|
||||
row.prop(st, "find_wrap", text="Wrap")
|
||||
row.prop(st, "find_all", text="All")
|
||||
|
||||
|
||||
class TEXT_MT_text(bpy.types.Menu):
|
||||
@ -133,32 +133,32 @@ class TEXT_MT_text(bpy.types.Menu):
|
||||
text = st.text
|
||||
|
||||
layout.column()
|
||||
layout.itemO("text.new")
|
||||
layout.itemO("text.open")
|
||||
layout.operator("text.new")
|
||||
layout.operator("text.open")
|
||||
|
||||
if text:
|
||||
layout.itemO("text.reload")
|
||||
layout.operator("text.reload")
|
||||
|
||||
layout.column()
|
||||
layout.itemO("text.save")
|
||||
layout.itemO("text.save_as")
|
||||
layout.operator("text.save")
|
||||
layout.operator("text.save_as")
|
||||
|
||||
if text.filename != "":
|
||||
layout.itemO("text.make_internal")
|
||||
layout.operator("text.make_internal")
|
||||
|
||||
layout.column()
|
||||
layout.itemO("text.run_script")
|
||||
layout.operator("text.run_script")
|
||||
|
||||
#ifndef DISABLE_PYTHON
|
||||
# XXX if(BPY_is_pyconstraint(text))
|
||||
# XXX uiMenuItemO(head, 0, "text.refresh_pyconstraints");
|
||||
#endif
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
layout.itemO("text.properties", icon='ICON_MENU_PANEL')
|
||||
layout.operator("text.properties", icon='ICON_MENU_PANEL')
|
||||
|
||||
layout.itemM("TEXT_MT_templates")
|
||||
layout.menu("TEXT_MT_templates")
|
||||
|
||||
|
||||
class TEXT_MT_templates(bpy.types.Menu):
|
||||
@ -168,7 +168,6 @@ class TEXT_MT_templates(bpy.types.Menu):
|
||||
bl_label = "Script Templates"
|
||||
|
||||
def draw(self, context):
|
||||
import os
|
||||
self.path_menu(bpy.utils.script_paths("templates"), "text.open")
|
||||
|
||||
|
||||
@ -178,8 +177,8 @@ class TEXT_MT_edit_view(bpy.types.Menu):
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
layout.item_enumO("text.move", "type", 'FILE_TOP', text="Top of File")
|
||||
layout.item_enumO("text.move", "type", 'FILE_BOTTOM', text="Bottom of File")
|
||||
layout.operator("text.move", text="Top of File").type = 'FILE_TOP'
|
||||
layout.operator("text.move", text="Bottom of File").type = 'FILE_BOTTOM'
|
||||
|
||||
|
||||
class TEXT_MT_edit_select(bpy.types.Menu):
|
||||
@ -188,8 +187,8 @@ class TEXT_MT_edit_select(bpy.types.Menu):
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
layout.itemO("text.select_all")
|
||||
layout.itemO("text.select_line")
|
||||
layout.operator("text.select_all")
|
||||
layout.operator("text.select_line")
|
||||
|
||||
|
||||
class TEXT_MT_edit_markers(bpy.types.Menu):
|
||||
@ -198,9 +197,9 @@ class TEXT_MT_edit_markers(bpy.types.Menu):
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
layout.itemO("text.markers_clear")
|
||||
layout.itemO("text.next_marker")
|
||||
layout.itemO("text.previous_marker")
|
||||
layout.operator("text.markers_clear")
|
||||
layout.operator("text.next_marker")
|
||||
layout.operator("text.previous_marker")
|
||||
|
||||
|
||||
class TEXT_MT_format(bpy.types.Menu):
|
||||
@ -209,17 +208,17 @@ class TEXT_MT_format(bpy.types.Menu):
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
layout.itemO("text.indent")
|
||||
layout.itemO("text.unindent")
|
||||
layout.operator("text.indent")
|
||||
layout.operator("text.unindent")
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
layout.itemO("text.comment")
|
||||
layout.itemO("text.uncomment")
|
||||
layout.operator("text.comment")
|
||||
layout.operator("text.uncomment")
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
layout.item_menu_enumO("text.convert_whitespace", "type")
|
||||
layout.operator_menu_enum("text.convert_whitespace", "type")
|
||||
|
||||
|
||||
class TEXT_MT_edit_to3d(bpy.types.Menu):
|
||||
@ -228,8 +227,8 @@ class TEXT_MT_edit_to3d(bpy.types.Menu):
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
layout.item_booleanO("text.to_3d_object", "split_lines", False, text="One Object")
|
||||
layout.item_booleanO("text.to_3d_object", "split_lines", True, text="One Object Per Line")
|
||||
layout.operator("text.to_3d_object", text="One Object").split_lines = False
|
||||
layout.operator("text.to_3d_object", text="One Object Per Line").split_lines = True
|
||||
|
||||
|
||||
class TEXT_MT_edit(bpy.types.Menu):
|
||||
@ -241,29 +240,29 @@ class TEXT_MT_edit(bpy.types.Menu):
|
||||
def draw(self, context):
|
||||
layout = self.layout
|
||||
|
||||
layout.itemO("ed.undo")
|
||||
layout.itemO("ed.redo")
|
||||
layout.operator("ed.undo")
|
||||
layout.operator("ed.redo")
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
layout.itemO("text.cut")
|
||||
layout.itemO("text.copy")
|
||||
layout.itemO("text.paste")
|
||||
layout.operator("text.cut")
|
||||
layout.operator("text.copy")
|
||||
layout.operator("text.paste")
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
layout.itemM("TEXT_MT_edit_view")
|
||||
layout.itemM("TEXT_MT_edit_select")
|
||||
layout.itemM("TEXT_MT_edit_markers")
|
||||
layout.menu("TEXT_MT_edit_view")
|
||||
layout.menu("TEXT_MT_edit_select")
|
||||
layout.menu("TEXT_MT_edit_markers")
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
layout.itemO("text.jump")
|
||||
layout.itemO("text.properties", text="Find...")
|
||||
layout.operator("text.jump")
|
||||
layout.operator("text.properties", text="Find...")
|
||||
|
||||
layout.itemS()
|
||||
layout.separator()
|
||||
|
||||
layout.itemM("TEXT_MT_edit_to3d")
|
||||
layout.menu("TEXT_MT_edit_to3d")
|
||||
|
||||
bpy.types.register(TEXT_HT_header)
|
||||
bpy.types.register(TEXT_PT_properties)
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user