Revision: 19108
          
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=19108
Author:   campbellbarton
Date:     2009-02-25 07:43:03 +0100 (Wed, 25 Feb 2009)

Log Message:
-----------
Minor speedups for the BGE
* Where possible use vec.setValue(x,y,z) to assign values to a vector instead 
of vec= MT_Vector3(x,y,z), for MT_Point and MT_Matrix types too.
* Comparing TexVerts was creating 10 MT_Vector types - instead compare as 
floats.
* Added SG_Spatial::SetWorldFromLocalTransform() since the local transform is 
use for world transform in some cases.
* removed some unneeded vars from UpdateChildCoordinates functions 
* Py API - Mouse, Ray, Radar sensors - use PyObjectFrom(vec) rather then 
filling the lists in each function. Use METH_NOARGS for get*() functions.

Modified Paths:
--------------
    trunk/blender/source/blender/python/api2_2x/Mathutils.c
    trunk/blender/source/gameengine/Converter/BL_BlenderDataConversion.cpp
    trunk/blender/source/gameengine/Converter/BL_MeshDeformer.cpp
    trunk/blender/source/gameengine/Ketsji/KX_GameObject.cpp
    trunk/blender/source/gameengine/Ketsji/KX_MouseFocusSensor.cpp
    trunk/blender/source/gameengine/Ketsji/KX_MouseFocusSensor.h
    trunk/blender/source/gameengine/Ketsji/KX_RadarSensor.cpp
    trunk/blender/source/gameengine/Ketsji/KX_RadarSensor.h
    trunk/blender/source/gameengine/Ketsji/KX_RaySensor.cpp
    trunk/blender/source/gameengine/Ketsji/KX_RaySensor.h
    trunk/blender/source/gameengine/Ketsji/KX_SG_BoneParentNodeRelationship.cpp
    trunk/blender/source/gameengine/Ketsji/KX_SG_NodeRelationships.cpp
    trunk/blender/source/gameengine/Ketsji/KX_TrackToActuator.cpp
    trunk/blender/source/gameengine/Rasterizer/RAS_TexVert.cpp
    trunk/blender/source/gameengine/Rasterizer/RAS_TexVert.h
    trunk/blender/source/gameengine/SceneGraph/SG_BBox.cpp
    trunk/blender/source/gameengine/SceneGraph/SG_Spatial.cpp
    trunk/blender/source/gameengine/SceneGraph/SG_Spatial.h

Modified: trunk/blender/source/blender/python/api2_2x/Mathutils.c
===================================================================
--- trunk/blender/source/blender/python/api2_2x/Mathutils.c     2009-02-25 
03:26:02 UTC (rev 19107)
+++ trunk/blender/source/blender/python/api2_2x/Mathutils.c     2009-02-25 
06:43:03 UTC (rev 19108)
@@ -350,7 +350,7 @@
 PyObject *M_Mathutils_Rand(PyObject * self, PyObject * args)
 {
        float high, low, range;
-       double rand;
+       double drand;
        //initializers
        high = 1.0;
        low = 0.0;
@@ -364,14 +364,14 @@
                        "Mathutils.Rand(): high value should be larger than low 
value\n"));
 
        //get the random number 0 - 1
-       rand = BLI_drand();
+       drand = BLI_drand();
 
        //set it to range
        range = high - low;
-       rand = rand * range;
-       rand = rand + low;
+       drand = drand * range;
+       drand = drand + low;
 
-       return PyFloat_FromDouble(rand);
+       return PyFloat_FromDouble(drand);
 }
 //----------------------------------VECTOR FUNCTIONS---------------------
 //----------------------------------Mathutils.Vector() ------------------

Modified: trunk/blender/source/gameengine/Converter/BL_BlenderDataConversion.cpp
===================================================================
--- trunk/blender/source/gameengine/Converter/BL_BlenderDataConversion.cpp      
2009-02-25 03:26:02 UTC (rev 19107)
+++ trunk/blender/source/gameengine/Converter/BL_BlenderDataConversion.cpp      
2009-02-25 06:43:03 UTC (rev 19108)
@@ -593,7 +593,7 @@
        MT_Point2 uv2[4];
        const char *uvName = "", *uv2Name = "";
 
-       uv[0]= uv[1]= uv[2]= uv[3]= MT_Point2(0.0f, 0.0f);
+       
        uv2[0]= uv2[1]= uv2[2]= uv2[3]= MT_Point2(0.0f, 0.0f);
 
        if( validface ) {
@@ -607,12 +607,12 @@
                material->tile  = tface->tile;
                material->mode  = tface->mode;
                        
-               uv[0]   = MT_Point2(tface->uv[0]);
-               uv[1]   = MT_Point2(tface->uv[1]);
-               uv[2]   = MT_Point2(tface->uv[2]);
+               uv[0].setValue(tface->uv[0]);
+               uv[1].setValue(tface->uv[1]);
+               uv[2].setValue(tface->uv[2]);
 
                if (mface->v4) 
-                       uv[3]   = MT_Point2(tface->uv[3]);
+                       uv[3].setValue(tface->uv[3]);
 
                uvName = tfaceName;
        } 
@@ -622,6 +622,8 @@
                material->mode          = default_face_mode;    
                material->transp        = TF_SOLID;
                material->tile          = 0;
+               
+               uv[0]= uv[1]= uv[2]= uv[3]= MT_Point2(0.0f, 0.0f);
        }
 
        // with ztransp enabled, enforce alpha blending mode
@@ -665,14 +667,14 @@
                                        {
                                                MT_Point2 uvSet[4];
 
-                                               uvSet[0]        = 
MT_Point2(layer.face->uv[0]);
-                                               uvSet[1]        = 
MT_Point2(layer.face->uv[1]);
-                                               uvSet[2]        = 
MT_Point2(layer.face->uv[2]);
+                                               
uvSet[0].setValue(layer.face->uv[0]);
+                                               
uvSet[1].setValue(layer.face->uv[1]);
+                                               
uvSet[2].setValue(layer.face->uv[2]);
 
                                                if (mface->v4) 
-                                                       uvSet[3]        = 
MT_Point2(layer.face->uv[3]);
+                                                       
uvSet[3].setValue(layer.face->uv[3]);
                                                else
-                                                       uvSet[3]        = 
MT_Point2(0.0f, 0.0f);
+                                                       uvSet[3].setValue(0.0f, 
0.0f);
 
                                                if (isFirstSet)
                                                {
@@ -790,10 +792,10 @@
                MT_Vector4 tan0(0,0,0,0), tan1(0,0,0,0), tan2(0,0,0,0), 
tan3(0,0,0,0);
 
                /* get coordinates, normals and tangents */
-               pt0 = MT_Point3(mvert[mface->v1].co);
-               pt1 = MT_Point3(mvert[mface->v2].co);
-               pt2 = MT_Point3(mvert[mface->v3].co);
-               pt3 = (mface->v4)? MT_Point3(mvert[mface->v4].co): 
MT_Point3(0.0, 0.0, 0.0);
+               pt0.setValue(mvert[mface->v1].co);
+               pt1.setValue(mvert[mface->v2].co);
+               pt2.setValue(mvert[mface->v3].co);
+               if (mface->v4) pt3.setValue(mvert[mface->v4].co);
 
                if(mface->flag & ME_SMOOTH) {
                        float n0[3], n1[3], n2[3], n3[3];
@@ -894,12 +896,12 @@
                                        
                                        visible = !((mface->flag & 
ME_HIDE)||(tface->mode & TF_INVISIBLE));
                                        
-                                       uv0 = MT_Point2(tface->uv[0]);
-                                       uv1 = MT_Point2(tface->uv[1]);
-                                       uv2 = MT_Point2(tface->uv[2]);
+                                       uv0.setValue(tface->uv[0]);
+                                       uv1.setValue(tface->uv[1]);
+                                       uv2.setValue(tface->uv[2]);
        
                                        if (mface->v4)
-                                               uv3 = MT_Point2(tface->uv[3]);
+                                               uv3.setValue(tface->uv[3]);
                                } 
                                else {
                                        /* no texfaces, set COLLSION true and 
everything else FALSE */
@@ -960,7 +962,7 @@
                                        polymat->m_diffuse = MT_Vector3(ma->r, 
ma->g, ma->b)*(ma->emit + ma->ref);
                                }
                                else {
-                                       polymat->m_specular = 
MT_Vector3(0.0f,0.0f,0.0f);
+                                       
polymat->m_specular.setValue(0.0f,0.0f,0.0f);
                                        polymat->m_shininess = 35.0;
                                }
                        }
@@ -1911,21 +1913,14 @@
                        MT_Matrix3x3 angor;                     
                        if (converter->addInitFromFrame) 
blenderscene->r.cfra=blenderscene->r.sfra;
                        
-                       MT_Point3 pos = MT_Point3(
+                       MT_Point3 pos;
+                       pos.setValue(
                                blenderobject->loc[0]+blenderobject->dloc[0],
                                blenderobject->loc[1]+blenderobject->dloc[1],
                                blenderobject->loc[2]+blenderobject->dloc[2]
                        );
-                       MT_Vector3 eulxyz = MT_Vector3(
-                               blenderobject->rot[0],
-                               blenderobject->rot[1],
-                               blenderobject->rot[2]
-                       );
-                       MT_Vector3 scale = MT_Vector3(
-                               blenderobject->size[0],
-                               blenderobject->size[1],
-                               blenderobject->size[2]
-                       );
+                       MT_Vector3 eulxyz(blenderobject->rot);
+                       MT_Vector3 scale(blenderobject->size);
                        if (converter->addInitFromFrame){//rcruiz
                                float eulxyzPrev[3];
                                blenderscene->r.cfra=blenderscene->r.sfra-1;
@@ -2113,21 +2108,13 @@
                                                        if 
(converter->addInitFromFrame) 
                                                                
blenderscene->r.cfra=blenderscene->r.sfra;
                                                        
-                                                       MT_Point3 pos = 
MT_Point3(
+                                                       MT_Point3 pos(
                                                                
blenderobject->loc[0]+blenderobject->dloc[0],
                                                                
blenderobject->loc[1]+blenderobject->dloc[1],
                                                                
blenderobject->loc[2]+blenderobject->dloc[2]
                                                        );
-                                                       MT_Vector3 eulxyz = 
MT_Vector3(
-                                                               
blenderobject->rot[0],
-                                                               
blenderobject->rot[1],
-                                                               
blenderobject->rot[2]
-                                                       );
-                                                       MT_Vector3 scale = 
MT_Vector3(
-                                                               
blenderobject->size[0],
-                                                               
blenderobject->size[1],
-                                                               
blenderobject->size[2]
-                                                       );
+                                                       MT_Vector3 
eulxyz(blenderobject->rot);
+                                                       MT_Vector3 
scale(blenderobject->size);
                                                        if 
(converter->addInitFromFrame){//rcruiz
                                                                float 
eulxyzPrev[3];
                                                                
blenderscene->r.cfra=blenderscene->r.sfra-1;

Modified: trunk/blender/source/gameengine/Converter/BL_MeshDeformer.cpp
===================================================================
--- trunk/blender/source/gameengine/Converter/BL_MeshDeformer.cpp       
2009-02-25 03:26:02 UTC (rev 19107)
+++ trunk/blender/source/gameengine/Converter/BL_MeshDeformer.cpp       
2009-02-25 06:43:03 UTC (rev 19108)
@@ -51,7 +51,6 @@
 bool BL_MeshDeformer::Apply(RAS_IPolyMaterial*)
 {
        size_t i;
-       float *co;
 
        // only apply once per frame if the mesh is actually modified
        if(m_pMeshObject->MeshModified() &&
@@ -70,8 +69,7 @@
                                //      For each vertex
                                for(i=it.startvertex; i<it.endvertex; i++) {
                                        RAS_TexVert& v = it.vertex[i];
-                                       co = 
m_bmesh->mvert[v.getOrigIndex()].co;
-                                       v.SetXYZ(MT_Point3(co));
+                                       
v.SetXYZ(m_bmesh->mvert[v.getOrigIndex()].co);
                                }
                        }
                }

Modified: trunk/blender/source/gameengine/Ketsji/KX_GameObject.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_GameObject.cpp    2009-02-25 
03:26:02 UTC (rev 19107)
+++ trunk/blender/source/gameengine/Ketsji/KX_GameObject.cpp    2009-02-25 
06:43:03 UTC (rev 19108)
@@ -690,9 +690,9 @@
        switch (axis)
        {       
                case 0: //x axis
-                       ori = MT_Vector3(orimat[0][2], orimat[1][2], 
orimat[2][2]); //pivot axis
+                       ori.setValue(orimat[0][2], orimat[1][2], orimat[2][2]); 
//pivot axis
                        if (MT_abs(vect.dot(ori)) > 1.0-3.0*MT_EPSILON) //is 
the vector paralell to the pivot?
-                               ori = MT_Vector3(orimat[0][1], orimat[1][1], 
orimat[2][1]); //change the pivot!
+                               ori.setValue(orimat[0][1], orimat[1][1], 
orimat[2][1]); //change the pivot!
                        if (fac == 1.0) {
                                x = vect;
                        } else {
@@ -705,9 +705,9 @@
                        z = x.cross(y);
                        break;
                case 1: //y axis
-                       ori = MT_Vector3(orimat[0][0], orimat[1][0], 
orimat[2][0]);
+                       ori.setValue(orimat[0][0], orimat[1][0], orimat[2][0]);
                        if (MT_abs(vect.dot(ori)) > 1.0-3.0*MT_EPSILON)
-                               ori = MT_Vector3(orimat[0][2], orimat[1][2], 
orimat[2][2]);
+                               ori.setValue(orimat[0][2], orimat[1][2], 
orimat[2][2]);
                        if (fac == 1.0) {
                                y = vect;
                        } else {
@@ -720,9 +720,9 @@
                        x = y.cross(z);
                        break;
                case 2: //z axis
-                       ori = MT_Vector3(orimat[0][1], orimat[1][1], 
orimat[2][1]);
+                       ori.setValue(orimat[0][1], orimat[1][1], orimat[2][1]);
                        if (MT_abs(vect.dot(ori)) > 1.0-3.0*MT_EPSILON)
-                               ori = MT_Vector3(orimat[0][0], orimat[1][0], 
orimat[2][0]);
+                               ori.setValue(orimat[0][0], orimat[1][0], 
orimat[2][0]);
                        if (fac == 1.0) {
                                z = vect;
                        } else {
@@ -741,9 +741,9 @@
        x.normalize(); //normalize the vectors
        y.normalize();
        z.normalize();
-       orimat = MT_Matrix3x3(  x[0],y[0],z[0],
-                                                       x[1],y[1],z[1],
-                                                       x[2],y[2],z[2]);
+       orimat.setValue(        x[0],y[0],z[0],
+                                               x[1],y[1],z[1],
+                                               x[2],y[2],z[2]);
        if (GetSGNode()->GetSGParent() != NULL)
        {
                // the object is a child, adapt its local orientation so that 
@@ -945,13 +945,11 @@
 
 const MT_Point3& KX_GameObject::NodeGetWorldPosition() const
 {
-       static MT_Point3 defaultPosition = MT_Point3(0.0, 0.0, 0.0);
-
        // check on valid node in case a python controller holds a reference to 
a deleted object
-       if (!GetSGNode())
-               return defaultPosition;
-
-       return GetSGNode()->GetWorldPosition();
+       if (GetSGNode())
+               return GetSGNode()->GetWorldPosition();
+       else
+               return MT_Point3(0.0, 0.0, 0.0);
 }
 
 /* Suspend/ resume: for the dynamic behaviour, there is a simple

Modified: trunk/blender/source/gameengine/Ketsji/KX_MouseFocusSensor.cpp
===================================================================
--- trunk/blender/source/gameengine/Ketsji/KX_MouseFocusSensor.cpp      
2009-02-25 03:26:02 UTC (rev 19107)
+++ trunk/blender/source/gameengine/Ketsji/KX_MouseFocusSensor.cpp      
2009-02-25 06:43:03 UTC (rev 19108)
@@ -42,6 +42,7 @@
 #include "KX_Scene.h"
 #include "KX_Camera.h"
 #include "KX_MouseFocusSensor.h"
+#include "KX_PyMath.h"
 
 #include "KX_RayCast.h"
 #include "KX_IPhysicsController.h"
@@ -320,12 +321,12 @@
 };
 
 PyMethodDef KX_MouseFocusSensor::Methods[] = {
-       {"getRayTarget", (PyCFunction) KX_MouseFocusSensor::sPyGetRayTarget, 
METH_VARARGS, (PY_METHODCHAR)GetRayTarget_doc},
-       {"getRaySource", (PyCFunction) KX_MouseFocusSensor::sPyGetRaySource, 
METH_VARARGS, (PY_METHODCHAR)GetRaySource_doc},
-       {"getHitObject",(PyCFunction) 
KX_MouseFocusSensor::sPyGetHitObject,METH_VARARGS, 
(PY_METHODCHAR)GetHitObject_doc},
-       {"getHitPosition",(PyCFunction) 
KX_MouseFocusSensor::sPyGetHitPosition,METH_VARARGS, 
(PY_METHODCHAR)GetHitPosition_doc},

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to