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:
authorKester Maddock <Christopher.Maddock.1@uni.massey.ac.nz>2004-06-04 07:00:13 +0400
committerKester Maddock <Christopher.Maddock.1@uni.massey.ac.nz>2004-06-04 07:00:13 +0400
commit44f45894c2fca8f7e0b7bbfff0e50f24e6c993a5 (patch)
tree740e361ce3f2fb47885348bed9b0ff5cd537a9ad /source/gameengine
parent4ff321d50773166712a611233437c7b19183087c (diff)
Miscellaneous Fixes:
Add Python Mapping method to CListValue Fix Bernoulli bool distribution python method for random actuator Fix Python IpoActuator methods setProperty and force acts local Make data objects private Better sort method for polygon materials - much easier to understand
Diffstat (limited to 'source/gameengine')
-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());