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

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/gameengine/Ketsji/KX_PyMath.h')
-rw-r--r--source/gameengine/Ketsji/KX_PyMath.h281
1 files changed, 0 insertions, 281 deletions
diff --git a/source/gameengine/Ketsji/KX_PyMath.h b/source/gameengine/Ketsji/KX_PyMath.h
deleted file mode 100644
index c9059da8913..00000000000
--- a/source/gameengine/Ketsji/KX_PyMath.h
+++ /dev/null
@@ -1,281 +0,0 @@
-/*
- * ***** BEGIN GPL LICENSE BLOCK *****
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
- * All rights reserved.
- *
- * The Original Code is: all of this file.
- *
- * Contributor(s): none yet.
- *
- * ***** END GPL LICENSE BLOCK *****
- */
-
-/** \file KX_PyMath.h
- * \ingroup ketsji
- * \brief Initialize Python thingies.
- */
-
-#ifndef __KX_PYMATH_H__
-#define __KX_PYMATH_H__
-
-#include "MT_Point2.h"
-#include "MT_Point3.h"
-#include "MT_Vector2.h"
-#include "MT_Vector3.h"
-#include "MT_Vector4.h"
-#include "MT_Matrix3x3.h"
-#include "MT_Matrix4x4.h"
-
-#include "EXP_Python.h"
-#include "EXP_PyObjectPlus.h"
-
-#ifdef WITH_PYTHON
-#ifdef USE_MATHUTILS
-extern "C" {
-#include "../../blender/python/mathutils/mathutils.h" /* so we can have mathutils callbacks */
-}
-#endif
-
-inline unsigned int Size(const MT_Matrix4x4&) { return 4; }
-inline unsigned int Size(const MT_Matrix3x3&) { return 3; }
-inline unsigned int Size(const MT_Tuple2&) { return 2; }
-inline unsigned int Size(const MT_Tuple3&) { return 3; }
-inline unsigned int Size(const MT_Tuple4&) { return 4; }
-
-/**
- * Converts the given python matrix (column-major) to an MT class (row-major).
- */
-template<class T>
-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 rows = PySequence_Size(pymat);
- if (rows != Size(mat))
- return false;
-
- for (unsigned int row = 0; noerror && row < rows; row++)
- {
- PyObject *pyrow = PySequence_GetItem(pymat, row); /* new ref */
- if (!PyErr_Occurred() && PySequence_Check(pyrow))
- {
- unsigned int cols = PySequence_Size(pyrow);
- if (cols != Size(mat)) {
- noerror = false;
- }
- else {
- for (unsigned int col = 0; col < cols; col++) {
- PyObject *item = PySequence_GetItem(pyrow, col); /* new ref */
- mat[row][col] = PyFloat_AsDouble(item);
- Py_DECREF(item);
- }
- }
- }
- else {
- noerror = false;
- }
- Py_DECREF(pyrow);
- }
- } else
- noerror = false;
-
- if (noerror==false)
- PyErr_SetString(PyExc_TypeError, "could not be converted to a matrix (sequence of sequences)");
-
- return noerror;
-}
-
-/**
- * Converts a python sequence to a MT class.
- */
-template<class T>
-bool PyVecTo(PyObject *pyval, T& vec)
-{
-#ifdef USE_MATHUTILS
- /* no need for BaseMath_ReadCallback() here, reading the sequences will do this */
-
- if (VectorObject_Check(pyval)) {
- VectorObject *pyvec= (VectorObject *)pyval;
- if (BaseMath_ReadCallback(pyvec) == -1) {
- return false; /* exception raised */
- }
- if (pyvec->size != Size(vec)) {
- PyErr_Format(PyExc_AttributeError, "error setting vector, %d args, should be %d", pyvec->size, Size(vec));
- return false;
- }
- vec.setValue((float *) pyvec->vec);
- return true;
- }
- else if (QuaternionObject_Check(pyval)) {
- QuaternionObject *pyquat= (QuaternionObject *)pyval;
- if (BaseMath_ReadCallback(pyquat) == -1) {
- return false; /* exception raised */
- }
- if (4 != Size(vec)) {
- PyErr_Format(PyExc_AttributeError, "error setting vector, %d args, should be %d", 4, Size(vec));
- return false;
- }
- /* xyzw -> wxyz reordering is done by PyQuatTo */
- vec.setValue((float *) pyquat->quat);
- return true;
- }
- else if (EulerObject_Check(pyval)) {
- EulerObject *pyeul= (EulerObject *)pyval;
- if (BaseMath_ReadCallback(pyeul) == -1) {
- return false; /* exception raised */
- }
- if (3 != Size(vec)) {
- PyErr_Format(PyExc_AttributeError, "error setting vector, %d args, should be %d", 3, Size(vec));
- return false;
- }
- vec.setValue((float *) pyeul->eul);
- return true;
- }
- else
-#endif
- if (PyTuple_Check(pyval)) {
- unsigned int numitems = PyTuple_GET_SIZE(pyval);
- if (numitems != Size(vec)) {
- PyErr_Format(PyExc_AttributeError, "error setting vector, %d args, should be %d", numitems, Size(vec));
- return false;
- }
-
- for (unsigned int x = 0; x < numitems; x++)
- vec[x] = PyFloat_AsDouble(PyTuple_GET_ITEM(pyval, x)); /* borrow ref */
-
- if (PyErr_Occurred()) {
- PyErr_SetString(PyExc_AttributeError, "one or more of the items in the sequence was not a float");
- return false;
- }
-
- return true;
- }
- else if (PyObject_TypeCheck(pyval, (PyTypeObject *)&PyObjectPlus::Type)) {
- /* note, include this check because PySequence_Check does too much introspection
- * on the PyObject (like getting its __class__, on a BGE type this means searching up
- * the parent list each time only to discover its not a sequence.
- * GameObjects are often used as an alternative to vectors so this is a common case
- * better to do a quick check for it, likely the error below will be ignored.
- *
- * This is not 'correct' since we have proxy type CListValues's which could
- * contain floats/ints but there no cases of CValueLists being this way
- */
- PyErr_Format(PyExc_AttributeError, "expected a sequence type");
- return false;
- }
- else if (PySequence_Check(pyval)) {
- unsigned int numitems = PySequence_Size(pyval);
- if (numitems != Size(vec)) {
- PyErr_Format(PyExc_AttributeError, "error setting vector, %d args, should be %d", numitems, Size(vec));
- return false;
- }
-
- for (unsigned int x = 0; x < numitems; x++) {
- PyObject *item = PySequence_GetItem(pyval, x); /* new ref */
- vec[x] = PyFloat_AsDouble(item);
- Py_DECREF(item);
- }
-
- if (PyErr_Occurred()) {
- PyErr_SetString(PyExc_AttributeError, "one or more of the items in the sequence was not a float");
- return false;
- }
-
- return true;
- }
- else {
- PyErr_Format(PyExc_AttributeError, "not a sequence type, expected a sequence of numbers size %d", Size(vec));
- }
-
- return false;
-}
-
-
-bool PyQuatTo(PyObject *pyval, MT_Quaternion &qrot);
-
-bool PyOrientationTo(PyObject *pyval, MT_Matrix3x3 &mat, const char *error_prefix);
-
-/**
- * Converts an MT_Matrix4x4 to a python object.
- */
-PyObject *PyObjectFrom(const MT_Matrix4x4 &mat);
-
-/**
- * Converts an MT_Matrix3x3 to a python object.
- */
-PyObject *PyObjectFrom(const MT_Matrix3x3 &mat);
-
-/**
- * Converts an MT_Tuple2 to a python object.
- */
-PyObject *PyObjectFrom(const MT_Tuple2 &vec);
-
-/**
- * Converts an MT_Tuple3 to a python object
- */
-PyObject *PyObjectFrom(const MT_Tuple3 &vec);
-
-#ifdef USE_MATHUTILS
-/**
- * Converts an MT_Quaternion to a python object.
- */
-PyObject *PyObjectFrom(const MT_Quaternion &qrot);
-#endif
-
-/**
- * Converts an MT_Tuple4 to a python object.
- */
-PyObject *PyObjectFrom(const MT_Tuple4 &pos);
-
-#endif
-
-/**
- * Converts an MT_Vector3 to a python color object.
- */
-PyObject *PyColorFromVector(const MT_Vector3 &vec);
-
-#endif /* WITH_PYTHON */