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:
-rw-r--r--source/gameengine/Expressions/ListValue.cpp17
-rw-r--r--source/gameengine/GameLogic/SCA_ILogicBrick.h2
-rw-r--r--source/gameengine/GameLogic/SCA_RandomActuator.cpp2
-rw-r--r--source/gameengine/Ketsji/KX_CameraActuator.h4
-rw-r--r--source/gameengine/Ketsji/KX_ConstraintActuator.h2
-rw-r--r--source/gameengine/Ketsji/KX_GameActuator.h1
-rw-r--r--source/gameengine/Ketsji/KX_IpoActuator.cpp6
-rw-r--r--source/gameengine/Ketsji/KX_IpoActuator.h2
-rw-r--r--source/gameengine/Ketsji/KX_RadarSensor.cpp23
-rw-r--r--source/gameengine/Ketsji/KX_RadarSensor.h1
-rw-r--r--source/gameengine/Rasterizer/RAS_IPolygonMaterial.cpp49
-rw-r--r--source/gameengine/Rasterizer/RAS_IPolygonMaterial.h4
-rw-r--r--source/gameengine/Rasterizer/RAS_IRasterizer.h12
-rw-r--r--source/gameengine/Rasterizer/RAS_MaterialBucket.cpp4
-rw-r--r--source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp4
-rw-r--r--source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_VAOpenGLRasterizer.cpp4
16 files changed, 76 insertions, 61 deletions
diff --git a/source/gameengine/Expressions/ListValue.cpp b/source/gameengine/Expressions/ListValue.cpp
index 6984e5663db..3ee8a5a3501 100644
--- a/source/gameengine/Expressions/ListValue.cpp
+++ b/source/gameengine/Expressions/ListValue.cpp
@@ -28,8 +28,6 @@ int listvalue_bufferlen(PyObject* list)
return ( ((CListValue*)list)->GetCount());
}
-
-
PyObject* listvalue_buffer_item(PyObject* list,int index)
{
if (index >= 0 && index < ((CListValue*) list)->GetCount())
@@ -45,6 +43,19 @@ PyObject* listvalue_buffer_item(PyObject* list,int index)
return NULL;
}
+PyObject* listvalue_mapping_subscript(PyObject* list,PyObject* pyindex)
+{
+ if (PyString_Check(pyindex))
+ {
+ STR_String index(PyString_AsString(pyindex));
+ CValue *item = ((CListValue*) list)->FindValue(index);
+ if (item)
+ return (PyObject*) item;
+
+ }
+ Py_Error(PyExc_IndexError, "Python ListIndex out of range");
+ Py_Return;
+}
/* just slice it into a python list... */
@@ -157,7 +168,7 @@ static PySequenceMethods listvalue_as_sequence = {
/* Is this one used ? */
static PyMappingMethods instance_as_mapping = {
(inquiry)listvalue_bufferlen, /*mp_length*/
- 0,//(binaryfunc)instance_subscript, /*mp_subscript*/
+ (binaryfunc)listvalue_mapping_subscript, /*mp_subscript*/
0,//(objobjargproc)instance_ass_subscript, /*mp_ass_subscript*/
};
diff --git a/source/gameengine/GameLogic/SCA_ILogicBrick.h b/source/gameengine/GameLogic/SCA_ILogicBrick.h
index 5199f66f409..588c5ca7aba 100644
--- a/source/gameengine/GameLogic/SCA_ILogicBrick.h
+++ b/source/gameengine/GameLogic/SCA_ILogicBrick.h
@@ -39,6 +39,7 @@
class SCA_ILogicBrick : public CValue
{
Py_Header;
+protected:
SCA_IObject* m_gameobj;
int m_Execute_Priority;
int m_Execute_Ueber_Priority;
@@ -48,7 +49,6 @@ class SCA_ILogicBrick : public CValue
STR_String m_text;
STR_String m_name;
//unsigned long m_drawcolor;
-protected:
void RegisterEvent(CValue* eventval);
void RemoveEvent();
CValue* GetEvent();
diff --git a/source/gameengine/GameLogic/SCA_RandomActuator.cpp b/source/gameengine/GameLogic/SCA_RandomActuator.cpp
index 4bc0e2539f0..d483f400064 100644
--- a/source/gameengine/GameLogic/SCA_RandomActuator.cpp
+++ b/source/gameengine/GameLogic/SCA_RandomActuator.cpp
@@ -495,7 +495,7 @@ PyObject* SCA_RandomActuator::PySetBoolBernouilli(PyObject* self,
return NULL;
}
- m_distribution = KX_RANDOMACT_BOOL_CONST;
+ m_distribution = KX_RANDOMACT_BOOL_BERNOUILLI;
m_parameter1 = paraArg;
enforceConstraints();
Py_Return;
diff --git a/source/gameengine/Ketsji/KX_CameraActuator.h b/source/gameengine/Ketsji/KX_CameraActuator.h
index 21d4af64135..cb061206a21 100644
--- a/source/gameengine/Ketsji/KX_CameraActuator.h
+++ b/source/gameengine/Ketsji/KX_CameraActuator.h
@@ -48,10 +48,8 @@
class KX_CameraActuator : public SCA_IActuator
{
-
-private :
Py_Header;
-
+private :
/** Object that will be tracked. */
const CValue *m_ob;
diff --git a/source/gameengine/Ketsji/KX_ConstraintActuator.h b/source/gameengine/Ketsji/KX_ConstraintActuator.h
index 800a1ae10fb..c1c58b3b664 100644
--- a/source/gameengine/Ketsji/KX_ConstraintActuator.h
+++ b/source/gameengine/Ketsji/KX_ConstraintActuator.h
@@ -41,7 +41,7 @@
class KX_ConstraintActuator : public SCA_IActuator
{
Py_Header;
-
+protected:
// Damp time (int),
int m_dampTime;
// min (float),
diff --git a/source/gameengine/Ketsji/KX_GameActuator.h b/source/gameengine/Ketsji/KX_GameActuator.h
index b3acd3b7400..19908a37e54 100644
--- a/source/gameengine/Ketsji/KX_GameActuator.h
+++ b/source/gameengine/Ketsji/KX_GameActuator.h
@@ -41,6 +41,7 @@
class KX_GameActuator : public SCA_IActuator
{
Py_Header;
+protected:
int m_mode;
bool m_restart;
STR_String m_filename;
diff --git a/source/gameengine/Ketsji/KX_IpoActuator.cpp b/source/gameengine/Ketsji/KX_IpoActuator.cpp
index 6d2b8dc49eb..7a894db6647 100644
--- a/source/gameengine/Ketsji/KX_IpoActuator.cpp
+++ b/source/gameengine/Ketsji/KX_IpoActuator.cpp
@@ -428,6 +428,10 @@ PyMethodDef KX_IpoActuator::Methods[] = {
METH_VARARGS, SetType_doc},
{"getType", (PyCFunction) KX_IpoActuator::sPyGetType,
METH_VARARGS, GetType_doc},
+ {"setForceIpoActsLocal", (PyCFunction) KX_IpoActuator::sPySetForceIpoActsLocal,
+ METH_VARARGS, SetForceIpoActsLocal_doc},
+ {"getForceIpoActsLocal", (PyCFunction) KX_IpoActuator::sPyGetForceIpoActsLocal,
+ METH_VARARGS, GetForceIpoActsLocal_doc},
{NULL,NULL} //Sentinel
};
@@ -494,6 +498,8 @@ PyObject* KX_IpoActuator::PySetProperty(PyObject* self,
return NULL;
}
+ m_propname = propertyName;
+
Py_Return;
}
diff --git a/source/gameengine/Ketsji/KX_IpoActuator.h b/source/gameengine/Ketsji/KX_IpoActuator.h
index 49c06a74ece..e2f877c7f7c 100644
--- a/source/gameengine/Ketsji/KX_IpoActuator.h
+++ b/source/gameengine/Ketsji/KX_IpoActuator.h
@@ -40,7 +40,7 @@
class KX_IpoActuator : public SCA_IActuator
{
Py_Header;
-
+protected:
bool m_bNegativeEvent;
/** Begin frame of the ipo. */
diff --git a/source/gameengine/Ketsji/KX_RadarSensor.cpp b/source/gameengine/Ketsji/KX_RadarSensor.cpp
index d167349789c..798ebdfc944 100644
--- a/source/gameengine/Ketsji/KX_RadarSensor.cpp
+++ b/source/gameengine/Ketsji/KX_RadarSensor.cpp
@@ -77,6 +77,29 @@ KX_RadarSensor::~KX_RadarSensor()
}
+CValue* KX_RadarSensor::GetReplica()
+{
+ KX_RadarSensor* replica = new KX_RadarSensor(*this);
+ replica->m_colliders = new CListValue();
+ replica->m_bCollision = false;
+ replica->m_bTriggered= false;
+ replica->m_hitObject = NULL;
+ replica->m_bLastTriggered = false;
+ // this will copy properties and so on...
+ CValue::AddDataToReplica(replica);
+
+ replica->m_client_info = new KX_ClientObjectInfo(m_client_info->m_clientobject, KX_ClientObjectInfo::RADAR);
+
+ replica->m_sumoObj = new SM_Object(DT_NewCone(m_coneradius, m_coneheight),NULL,NULL,NULL);
+ replica->m_sumoObj->setMargin(m_Margin);
+ replica->m_sumoObj->setClientObject(replica->m_client_info);
+
+ replica->SynchronizeTransform();
+
+ return replica;
+}
+
+
/**
* Transforms the collision object. A cone is not correctly centered
* for usage. */
diff --git a/source/gameengine/Ketsji/KX_RadarSensor.h b/source/gameengine/Ketsji/KX_RadarSensor.h
index 055041f749c..0e055357f18 100644
--- a/source/gameengine/Ketsji/KX_RadarSensor.h
+++ b/source/gameengine/Ketsji/KX_RadarSensor.h
@@ -77,6 +77,7 @@ public:
KX_RadarSensor();
virtual ~KX_RadarSensor();
virtual void SynchronizeTransform();
+ virtual CValue* GetReplica();
/* --------------------------------------------------------------------- */
/* Python interface ---------------------------------------------------- */
diff --git a/source/gameengine/Rasterizer/RAS_IPolygonMaterial.cpp b/source/gameengine/Rasterizer/RAS_IPolygonMaterial.cpp
index b5b47598b1b..babecdd585a 100644
--- a/source/gameengine/Rasterizer/RAS_IPolygonMaterial.cpp
+++ b/source/gameengine/Rasterizer/RAS_IPolygonMaterial.cpp
@@ -57,7 +57,8 @@ RAS_IPolyMaterial::RAS_IPolyMaterial(const STR_String& texname,
m_transparant(transparant),
m_zsort(zsort),
m_lightlayer(lightlayer),
- m_bIsTriangle(bIsTriangle)
+ m_bIsTriangle(bIsTriangle),
+ m_polymatid(m_newpolymatid++)
{
m_shininess = 35.0;
m_specular = MT_Vector3(0.5,0.5,0.5);
@@ -84,48 +85,10 @@ bool RAS_IPolyMaterial::Equals(const RAS_IPolyMaterial& lhs) const
bool RAS_IPolyMaterial::Less(const RAS_IPolyMaterial& rhs) const
{
- /**
- * @warning STL requires lhs.Less(rhs) == rhs.Less(lhs) implies lhs.Equals(rhs).
- * This function *must* return different values for lhs.Less(rhs) and rhs.Less(lhs) if
- * !lhs.Equals(rhs) !!
- */
- if (m_materialname.hash() < rhs.m_materialname.hash())
- return true;
-
- if (m_materialname.hash() > rhs.m_materialname.hash() ||
- m_texturename.hash() > rhs.m_texturename.hash())
+ if (Equals(rhs))
return false;
-
- if (m_texturename.hash() < rhs.m_texturename.hash() ||
- m_lightlayer < rhs.m_lightlayer)
- return true;
-
- if (m_lightlayer > rhs.m_lightlayer ||
- m_bIsTriangle > rhs.m_bIsTriangle)
- return false;
-
- if (m_bIsTriangle < rhs.m_bIsTriangle ||
- m_drawingmode < rhs.m_drawingmode)
- return true;
-
- if (m_drawingmode > rhs.m_drawingmode ||
- m_transparant > !rhs.m_transparant)
- return false;
-
- if (m_transparant < rhs.m_transparant ||
- m_tileyrep < rhs.m_tileyrep)
- return true;
-
- if (m_tileyrep > rhs.m_tileyrep ||
- m_tilexrep > rhs.m_tilexrep)
- return false;
-
- if (m_tilexrep < rhs.m_tilexrep ||
- m_tile < rhs.m_tile)
- return true;
-
- return !(m_tile > rhs.m_tile ||
- m_zsort > rhs.m_zsort);
+
+ return m_polymatid < rhs.m_polymatid;
}
int RAS_IPolyMaterial::GetLightLayer() const
@@ -167,3 +130,5 @@ const STR_String& RAS_IPolyMaterial::GetTextureName() const
{
return m_texturename;
}
+
+unsigned int RAS_IPolyMaterial::m_newpolymatid = 0;
diff --git a/source/gameengine/Rasterizer/RAS_IPolygonMaterial.h b/source/gameengine/Rasterizer/RAS_IPolygonMaterial.h
index 93c6d829e85..648a8b63464 100644
--- a/source/gameengine/Rasterizer/RAS_IPolygonMaterial.h
+++ b/source/gameengine/Rasterizer/RAS_IPolygonMaterial.h
@@ -60,6 +60,10 @@ protected:
int m_lightlayer;
bool m_bIsTriangle;
+ unsigned int m_polymatid;
+
+ static unsigned int m_newpolymatid;
+
public:
MT_Vector3 m_diffuse;
diff --git a/source/gameengine/Rasterizer/RAS_IRasterizer.h b/source/gameengine/Rasterizer/RAS_IRasterizer.h
index 815c095e583..21e47e12050 100644
--- a/source/gameengine/Rasterizer/RAS_IRasterizer.h
+++ b/source/gameengine/Rasterizer/RAS_IRasterizer.h
@@ -299,13 +299,21 @@ public:
float frustfar,
bool perspective = true
)=0;
-
+ /**
+ * Sets the specular colour component of the lighting equation.
+ */
virtual void SetSpecularity(float specX,
float specY,
float specZ,
float specval)=0;
-
+
+ /**
+ * Sets the specular exponent component of the lighting equation.
+ */
virtual void SetShinyness(float shiny)=0;
+ /**
+ * Sets the diffuse colour component of the lighting equation.
+ */
virtual void SetDiffuse(float difX,
float difY,
float difZ,
diff --git a/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp b/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp
index faaeafb0d05..83e981b840a 100644
--- a/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp
+++ b/source/gameengine/Rasterizer/RAS_MaterialBucket.cpp
@@ -257,9 +257,9 @@ void RAS_MaterialBucket::Render(const MT_Transform& cameratrans,
if (m_meshSlots.begin()== m_meshSlots.end())
return;
- rendertools->SetViewMat(cameratrans);
+ //rendertools->SetViewMat(cameratrans);
- rasty->SetMaterial(*m_material);
+ //rasty->SetMaterial(*m_material);
if (m_meshSlots.size() >0)
{
diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp
index 5df296970a3..3e93a7a74b9 100644
--- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp
+++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_OpenGLRasterizer.cpp
@@ -686,7 +686,7 @@ void RAS_OpenGLRasterizer::IndexPrimitives_Ex(const vecVertexArray & vertexarray
numindices = indexarray.size();
if (!numindices)
- break;
+ continue;
int vindex=0;
switch (mode)
@@ -777,7 +777,7 @@ void RAS_OpenGLRasterizer::IndexPrimitives_Ex(const vecVertexArray & vertexarray
mv1 = MT_Point3(vertexarray[(indexarray[vindex])].getLocalXYZ());
mv2 = MT_Point3(vertexarray[(indexarray[vindex+1])].getLocalXYZ());
mv3 = MT_Point3(vertexarray[(indexarray[vindex+2])].getLocalXYZ());
- mv4 = MT_Point3(vertexarray[(indexarray[vindex+2])].getLocalXYZ());
+ mv4 = MT_Point3(vertexarray[(indexarray[vindex+3])].getLocalXYZ());
fnor = (((mv2-mv1).cross(mv3-mv2))+((mv4-mv3).cross(mv1-mv4))).safe_normalized();
diff --git a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_VAOpenGLRasterizer.cpp b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_VAOpenGLRasterizer.cpp
index c0d90bb3c09..50b786bb120 100644
--- a/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_VAOpenGLRasterizer.cpp
+++ b/source/gameengine/Rasterizer/RAS_OpenGLRasterizer/RAS_VAOpenGLRasterizer.cpp
@@ -183,8 +183,6 @@ void RAS_VAOpenGLRasterizer::IndexPrimitives( const vecVertexArray& vertexarrays
glColor3d(0,0,0);
}
// use glDrawElements to draw each vertexarray
- static bool doWarning = true;
-
for (vt=0;vt<vertexarrays.size();vt++)
{
vertexarray = &((*vertexarrays[vt]) [0]);
@@ -193,7 +191,7 @@ void RAS_VAOpenGLRasterizer::IndexPrimitives( const vecVertexArray& vertexarrays
int numverts = vertexarrays[vt]->size();
if (!numindices)
- break;
+ continue;
glVertexPointer(3,GL_FLOAT,vtxstride,vertexarray->getLocalXYZ());
glTexCoordPointer(2,GL_FLOAT,vtxstride,vertexarray->getUV1());