svn merge ^/trunk/blender -r42778:42839
This commit is contained in:
@@ -3032,4 +3032,4 @@ void BL_ConvertBlenderObjects(struct Main* maggie,
|
||||
SCA_IInputDevice::KX_EnumInputs ConvertKeyCode(int key_code)
|
||||
{
|
||||
return gReverseKeyTranslateTable[key_code];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -789,6 +789,10 @@ void GPG_Application::stopEngine()
|
||||
|
||||
void GPG_Application::exitEngine()
|
||||
{
|
||||
// We only want to kill the engine if it has been initialized
|
||||
if (!m_engineInitialized)
|
||||
return;
|
||||
|
||||
sound_exit();
|
||||
if (m_ketsjiengine)
|
||||
{
|
||||
|
||||
@@ -145,7 +145,8 @@ bool KX_IpoSGController::Update(double currentTime)
|
||||
}
|
||||
|
||||
//modifies position?
|
||||
if (m_ipo_channels_active[OB_LOC_X] || m_ipo_channels_active[OB_LOC_Y] || m_ipo_channels_active[OB_LOC_Z] || m_ipo_channels_active[OB_DLOC_X] || m_ipo_channels_active[OB_DLOC_Y] || m_ipo_channels_active[OB_DLOC_Z])
|
||||
if (m_ipo_channels_active[OB_LOC_X] || m_ipo_channels_active[OB_LOC_Y] || m_ipo_channels_active[OB_LOC_Z] ||
|
||||
m_ipo_channels_active[OB_DLOC_X] || m_ipo_channels_active[OB_DLOC_Y] || m_ipo_channels_active[OB_DLOC_Z])
|
||||
{
|
||||
if (m_ipo_as_force == true)
|
||||
{
|
||||
@@ -198,7 +199,9 @@ bool KX_IpoSGController::Update(double currentTime)
|
||||
}
|
||||
}
|
||||
//modifies orientation?
|
||||
if (m_ipo_channels_active[OB_ROT_X] || m_ipo_channels_active[OB_ROT_Y] || m_ipo_channels_active[OB_ROT_Z] || m_ipo_channels_active[OB_DROT_X] || m_ipo_channels_active[OB_DROT_Y] || m_ipo_channels_active[OB_DROT_Z]) {
|
||||
if (m_ipo_channels_active[OB_ROT_X] || m_ipo_channels_active[OB_ROT_Y] || m_ipo_channels_active[OB_ROT_Z] ||
|
||||
m_ipo_channels_active[OB_DROT_X] || m_ipo_channels_active[OB_DROT_Y] || m_ipo_channels_active[OB_DROT_Z])
|
||||
{
|
||||
if (m_ipo_as_force) {
|
||||
|
||||
if (m_game_object && ob) {
|
||||
@@ -293,7 +296,9 @@ bool KX_IpoSGController::Update(double currentTime)
|
||||
}
|
||||
}
|
||||
//modifies scale?
|
||||
if (m_ipo_channels_active[OB_SIZE_X] || m_ipo_channels_active[OB_SIZE_Y] || m_ipo_channels_active[OB_SIZE_Z] || m_ipo_channels_active[OB_DSIZE_X] || m_ipo_channels_active[OB_DSIZE_Y] || m_ipo_channels_active[OB_DSIZE_Z]) {
|
||||
if (m_ipo_channels_active[OB_SIZE_X] || m_ipo_channels_active[OB_SIZE_Y] || m_ipo_channels_active[OB_SIZE_Z] ||
|
||||
m_ipo_channels_active[OB_DSIZE_X] || m_ipo_channels_active[OB_DSIZE_Y] || m_ipo_channels_active[OB_DSIZE_Z])
|
||||
{
|
||||
//default is no scale change
|
||||
MT_Vector3 newScale(1.0,1.0,1.0);
|
||||
if (!m_ipo_add)
|
||||
|
||||
@@ -65,32 +65,59 @@ bool PyMatTo(PyObject* pymat, T& mat)
|
||||
{
|
||||
bool noerror = true;
|
||||
mat.setIdentity();
|
||||
|
||||
|
||||
#ifdef USE_MATHUTILS
|
||||
|
||||
if (MatrixObject_Check(pymat))
|
||||
{
|
||||
MatrixObject *pymatrix = (MatrixObject *)pymat;
|
||||
|
||||
if (BaseMath_ReadCallback(pymatrix) == -1)
|
||||
return false;
|
||||
|
||||
if (pymatrix->num_col != Size(mat) || pymatrix->num_row != Size(mat))
|
||||
return false;
|
||||
|
||||
for (unsigned int row = 0; row < Size(mat); row++)
|
||||
{
|
||||
for (unsigned int col = 0; col < Size(mat); col++)
|
||||
{
|
||||
mat[row][col] = *(pymatrix->matrix + col * pymatrix->num_row + row);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
|
||||
#endif /* USE_MATHUTILS */
|
||||
|
||||
|
||||
if (PySequence_Check(pymat))
|
||||
{
|
||||
unsigned int cols = PySequence_Size(pymat);
|
||||
if (cols != Size(mat))
|
||||
unsigned int rows = PySequence_Size(pymat);
|
||||
if (rows != Size(mat))
|
||||
return false;
|
||||
|
||||
for (unsigned int x = 0; noerror && x < cols; x++)
|
||||
for (unsigned int row = 0; noerror && row < rows; row++)
|
||||
{
|
||||
PyObject *pycol = PySequence_GetItem(pymat, x); /* new ref */
|
||||
if (!PyErr_Occurred() && PySequence_Check(pycol))
|
||||
PyObject *pyrow = PySequence_GetItem(pymat, row); /* new ref */
|
||||
if (!PyErr_Occurred() && PySequence_Check(pyrow))
|
||||
{
|
||||
unsigned int rows = PySequence_Size(pycol);
|
||||
if (rows != Size(mat))
|
||||
unsigned int cols = PySequence_Size(pyrow);
|
||||
if (cols != Size(mat))
|
||||
noerror = false;
|
||||
else
|
||||
{
|
||||
for( unsigned int y = 0; y < rows; y++)
|
||||
for( unsigned int col = 0; col < cols; col++)
|
||||
{
|
||||
PyObject *item = PySequence_GetItem(pycol, y); /* new ref */
|
||||
mat[y][x] = PyFloat_AsDouble(item);
|
||||
PyObject *item = PySequence_GetItem(pyrow, col); /* new ref */
|
||||
mat[row][col] = PyFloat_AsDouble(item);
|
||||
Py_DECREF(item);
|
||||
}
|
||||
}
|
||||
} else
|
||||
noerror = false;
|
||||
Py_DECREF(pycol);
|
||||
Py_DECREF(pyrow);
|
||||
}
|
||||
} else
|
||||
noerror = false;
|
||||
|
||||
Reference in New Issue
Block a user