diff options
-rw-r--r-- | release/datafiles/splash.jpg | bin | 197158 -> 197165 bytes | |||
-rw-r--r-- | source/gameengine/Ketsji/KX_GameObject.cpp | 2 | ||||
-rw-r--r-- | source/gameengine/Ketsji/KX_PolyProxy.cpp | 10 | ||||
-rw-r--r-- | source/gameengine/Physics/Bullet/CcdPhysicsController.cpp | 2 | ||||
-rw-r--r-- | source/gameengine/Rasterizer/RAS_MaterialBucket.h | 3 | ||||
-rw-r--r-- | source/gameengine/Rasterizer/RAS_Polygon.cpp | 15 | ||||
-rw-r--r-- | source/gameengine/Rasterizer/RAS_Polygon.h | 1 |
7 files changed, 26 insertions, 7 deletions
diff --git a/release/datafiles/splash.jpg b/release/datafiles/splash.jpg Binary files differindex 1c34cf36f75..e35a26a2c23 100644 --- a/release/datafiles/splash.jpg +++ b/release/datafiles/splash.jpg diff --git a/source/gameengine/Ketsji/KX_GameObject.cpp b/source/gameengine/Ketsji/KX_GameObject.cpp index eeff39ab9b1..8193aa8c37b 100644 --- a/source/gameengine/Ketsji/KX_GameObject.cpp +++ b/source/gameengine/Ketsji/KX_GameObject.cpp @@ -2716,7 +2716,7 @@ KX_PYMETHODDEF_DOC_VARARGS(KX_GameObject, sendMessage, char* to = (char *)""; const STR_String& from = GetName(); - if (!PyArg_ParseTuple(args, "s|sss:sendMessage", &subject, &body, &to)) + if (!PyArg_ParseTuple(args, "s|ss:sendMessage", &subject, &body, &to)) return NULL; scene->GetNetworkScene()->SendMessage(to, from, subject, body); diff --git a/source/gameengine/Ketsji/KX_PolyProxy.cpp b/source/gameengine/Ketsji/KX_PolyProxy.cpp index eae1894428c..af8e0510a11 100644 --- a/source/gameengine/Ketsji/KX_PolyProxy.cpp +++ b/source/gameengine/Ketsji/KX_PolyProxy.cpp @@ -132,19 +132,19 @@ PyObject* KX_PolyProxy::py_getattro(PyObject *attr) } if (!strcmp(attr_str, "v1")) { - return PyLong_FromSsize_t(m_polygon->GetVertexOffset(0)); + return PyLong_FromSsize_t(m_polygon->GetVertexOffsetAbs(m_mesh, 0)); } if (!strcmp(attr_str, "v2")) { - return PyLong_FromSsize_t(m_polygon->GetVertexOffset(1)); + return PyLong_FromSsize_t(m_polygon->GetVertexOffsetAbs(m_mesh, 1)); } if (!strcmp(attr_str, "v3")) { - return PyLong_FromSsize_t(m_polygon->GetVertexOffset(2)); + return PyLong_FromSsize_t(m_polygon->GetVertexOffsetAbs(m_mesh, 2)); } if (!strcmp(attr_str, "v4")) { - return PyLong_FromSsize_t(((m_polygon->VertexCount()>3)?m_polygon->GetVertexOffset(3):0)); + return PyLong_FromSsize_t(((m_polygon->VertexCount()>3)?m_polygon->GetVertexOffsetAbs(m_mesh, 3):0)); } if (!strcmp(attr_str, "visible")) { @@ -244,7 +244,7 @@ KX_PYMETHODDEF_DOC(KX_PolyProxy, getVertexIndex, } if (index < m_polygon->VertexCount()) { - return PyLong_FromSsize_t(m_polygon->GetVertexOffset(index)); + return PyLong_FromSsize_t(m_polygon->GetVertexOffsetAbs(m_mesh, index)); } return PyLong_FromSsize_t(0); } diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp b/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp index 12562e34583..df8dc3560ac 100644 --- a/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp +++ b/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp @@ -1073,7 +1073,7 @@ void CcdPhysicsController::ApplyTorque(float torqueX,float torqueY,float torque //workaround for incompatibility between 'DYNAMIC' game object, and angular factor //a DYNAMIC object has some inconsistency: it has no angular effect due to collisions, but still has torque const btVector3& angFac = body->getAngularFactor(); - btVector3 tmpFac(0,0,1); + btVector3 tmpFac(1,1,1); body->setAngularFactor(tmpFac); body->applyTorque(torque); body->setAngularFactor(angFac); diff --git a/source/gameengine/Rasterizer/RAS_MaterialBucket.h b/source/gameengine/Rasterizer/RAS_MaterialBucket.h index 207763392b2..dc9abbfbddf 100644 --- a/source/gameengine/Rasterizer/RAS_MaterialBucket.h +++ b/source/gameengine/Rasterizer/RAS_MaterialBucket.h @@ -79,8 +79,11 @@ class RAS_DisplayArray public: vector<RAS_TexVert> m_vertex; vector<unsigned short> m_index; + /* LINE currently isnt used */ enum { LINE = 2, TRIANGLE = 3, QUAD = 4 } m_type; //RAS_MeshSlot *m_origSlot; + + /* Number of RAS_MeshSlot using this array */ int m_users; enum { BUCKET_MAX_INDEX = 65535 }; diff --git a/source/gameengine/Rasterizer/RAS_Polygon.cpp b/source/gameengine/Rasterizer/RAS_Polygon.cpp index eacc1285166..87c5118c5fb 100644 --- a/source/gameengine/Rasterizer/RAS_Polygon.cpp +++ b/source/gameengine/Rasterizer/RAS_Polygon.cpp @@ -31,6 +31,7 @@ #endif #include "RAS_Polygon.h" +#include "RAS_MeshObject.h" /* only for GetVertexOffsetAbs */ RAS_Polygon::RAS_Polygon(RAS_MaterialBucket* bucket, RAS_DisplayArray *darray, int numvert) { @@ -63,6 +64,20 @@ int RAS_Polygon::GetVertexOffset(int i) return m_offset[i]; } +int RAS_Polygon::GetVertexOffsetAbs(RAS_MeshObject *mesh, int i) +{ + /* hack that only works because there can only ever be 2 different + * GetDisplayArray's per mesh. if this uses a different display array to the first + * then its incices are offset. + * if support for edges is added back this would need to be changed. */ + RAS_DisplayArray* darray= mesh->GetPolygon(0)->GetDisplayArray(); + + if(m_darray != darray) + return m_offset[i] + darray->m_vertex.size(); + + return m_offset[i]; +} + /* int RAS_Polygon::GetEdgeCode() { diff --git a/source/gameengine/Rasterizer/RAS_Polygon.h b/source/gameengine/Rasterizer/RAS_Polygon.h index a5b77738026..bd8cfe0be28 100644 --- a/source/gameengine/Rasterizer/RAS_Polygon.h +++ b/source/gameengine/Rasterizer/RAS_Polygon.h @@ -72,6 +72,7 @@ public: void SetVertexOffset(int i, unsigned short offset); int GetVertexOffset(int i); + int GetVertexOffsetAbs(RAS_MeshObject *mesh, int i); /* accounts for quad and tri arrays, slower, for python */ // each bit is for a visible edge, starting with bit 1 for the first edge, bit 2 for second etc. // - Not used yet! |