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
path: root/source
diff options
context:
space:
mode:
authorKester Maddock <Christopher.Maddock.1@uni.massey.ac.nz>2004-06-26 13:15:41 +0400
committerKester Maddock <Christopher.Maddock.1@uni.massey.ac.nz>2004-06-26 13:15:41 +0400
commit4c53f38756976704bab11a3dd8c33c71d926e6b8 (patch)
tree5db17347afbc71062a77f01f1197a9bfe7f0c20d /source
parentf69cc652e283bfa1958ae6945b0a014eb7d50906 (diff)
Minor Fixes:
Better use of booleans for python #include fixes for Windows Python Doc fixes Use the farthest vertex as the face position when z sorting faces. (Camera is on -z axis!)
Diffstat (limited to 'source')
-rw-r--r--source/gameengine/GameLogic/SCA_ILogicBrick.cpp5
-rw-r--r--source/gameengine/GameLogic/SCA_RandomActuator.cpp2
-rw-r--r--source/gameengine/GamePlayer/common/GPC_PolygonMaterial.cpp24
-rw-r--r--source/gameengine/GamePlayer/ghost/GPG_Application.cpp9
-rw-r--r--source/gameengine/Ketsji/KX_Scene.h18
-rw-r--r--source/gameengine/Ketsji/KX_SceneActuator.cpp13
-rw-r--r--source/gameengine/Ketsji/KX_TouchSensor.cpp18
-rw-r--r--source/gameengine/PyDoc/GameKeys.py76
-rw-r--r--source/gameengine/PyDoc/GameLogic.py137
-rw-r--r--source/gameengine/PyDoc/KX_Camera.py2
-rw-r--r--source/gameengine/PyDoc/KX_Scene.py2
-rw-r--r--source/gameengine/PyDoc/SCA_KeyboardSensor.py4
-rw-r--r--source/gameengine/Rasterizer/RAS_MaterialBucket.h7
-rw-r--r--source/gameengine/Rasterizer/RAS_MeshObject.cpp9
14 files changed, 196 insertions, 130 deletions
diff --git a/source/gameengine/GameLogic/SCA_ILogicBrick.cpp b/source/gameengine/GameLogic/SCA_ILogicBrick.cpp
index 422f6d9cf0d..1780458ba45 100644
--- a/source/gameengine/GameLogic/SCA_ILogicBrick.cpp
+++ b/source/gameengine/GameLogic/SCA_ILogicBrick.cpp
@@ -309,12 +309,9 @@ PyObject* SCA_ILogicBrick::PyGetExecutePriority(PyObject* self,
/* Conversions for making life better. */
bool SCA_ILogicBrick::PyArgToBool(int boolArg)
{
- if (boolArg == KX_TRUE) {
+ if (boolArg) {
return true;
- } else if (boolArg == KX_FALSE){
- return false;
} else {
- ; /* error: bad conversion: how to catch this? */
return false;
}
}
diff --git a/source/gameengine/GameLogic/SCA_RandomActuator.cpp b/source/gameengine/GameLogic/SCA_RandomActuator.cpp
index d483f400064..b4a28291e66 100644
--- a/source/gameengine/GameLogic/SCA_RandomActuator.cpp
+++ b/source/gameengine/GameLogic/SCA_RandomActuator.cpp
@@ -464,7 +464,7 @@ PyObject* SCA_RandomActuator::PySetBoolConst(PyObject* self,
}
m_distribution = KX_RANDOMACT_BOOL_CONST;
- if (paraArg == KX_TRUE) {
+ if (paraArg) {
m_parameter1 = 1;
}
diff --git a/source/gameengine/GamePlayer/common/GPC_PolygonMaterial.cpp b/source/gameengine/GamePlayer/common/GPC_PolygonMaterial.cpp
index 472d921dbe9..c4715c5f060 100644
--- a/source/gameengine/GamePlayer/common/GPC_PolygonMaterial.cpp
+++ b/source/gameengine/GamePlayer/common/GPC_PolygonMaterial.cpp
@@ -34,6 +34,19 @@
#include <config.h>
#endif
+#ifdef WIN32
+#include <windows.h>
+#endif // WIN32
+#ifdef __APPLE__
+#include <OpenGL/gl.h>
+#include <OpenGL/glu.h>
+#else
+#include <GL/gl.h>
+#include <GL/glu.h>
+#endif
+
+
+
#include "GPC_PolygonMaterial.h"
#include "MT_Vector3.h"
#include "RAS_IRasterizer.h"
@@ -66,17 +79,6 @@
#include "IMB_imbuf_types.h"
/* end of blender include block */
-#ifdef WIN32
-#include <windows.h>
-#endif // WIN32
-#ifdef __APPLE__
-#include <OpenGL/gl.h>
-#include <OpenGL/glu.h>
-#else
-#include <GL/gl.h>
-#include <GL/glu.h>
-#endif
-
static Image *fCurpage=0;
static int fCurtile=0, fCurmode=0, fCurTileXRep=0, fCurTileYRep=0;
static short fTexWindx, fTexWindy, fTexWinsx, fTexWinsy;
diff --git a/source/gameengine/GamePlayer/ghost/GPG_Application.cpp b/source/gameengine/GamePlayer/ghost/GPG_Application.cpp
index 868f9f1ea40..48859392b54 100644
--- a/source/gameengine/GamePlayer/ghost/GPG_Application.cpp
+++ b/source/gameengine/GamePlayer/ghost/GPG_Application.cpp
@@ -37,6 +37,15 @@
#ifdef WIN32
#pragma warning (disable:4786) // suppress stl-MSVC debug info warning
+ #include <windows.h>
+#endif
+
+#ifdef __APPLE__
+#include <OpenGL/gl.h>
+#include <OpenGL/glu.h>
+#else
+#include <GL/gl.h>
+#include <GL/glu.h>
#endif
#include "GPG_Application.h"
diff --git a/source/gameengine/Ketsji/KX_Scene.h b/source/gameengine/Ketsji/KX_Scene.h
index c32cd4182aa..1df126ce1b0 100644
--- a/source/gameengine/Ketsji/KX_Scene.h
+++ b/source/gameengine/Ketsji/KX_Scene.h
@@ -57,38 +57,38 @@
struct SM_MaterialProps;
struct SM_ShapeProps;
+class GEN_HashedPtr;
class CListValue;
-class RAS_BucketManager;
-class KX_Camera;
+class CValue;
class SCA_LogicManager;
class SCA_KeyboardManager;
class SCA_TimeEventManager;
class SCA_MouseManager;
-class KX_WorldInfo;
+class SCA_ISystem;
+class SCA_IInputDevice;
class SND_Scene;
class SND_IAudioDevice;
class NG_NetworkDeviceInterface;
class NG_NetworkScene;
+class SG_IObject;
class SG_Node;
class SG_Tree;
+class KX_WorldInfo;
class KX_Camera;
-class GEN_HashedPtr;
class KX_GameObject;
-class SCA_ISystem;
-class SCA_IInputDevice;
+class KX_LightObject;
+class RAS_BucketManager;
class RAS_BucketManager;
class RAS_MaterialBucket;
class RAS_IPolyMaterial;
class RAS_IRasterizer;
class RAS_IRenderTools;
-class CValue;
-class SG_IObject;
/**
* The KX_Scene holds all data for an independent scene. It relates
* KX_Objects to the specific objects in the modules.
* */
-class KX_Scene : public SCA_IScene, public PyObjectPlus
+class KX_Scene : public PyObjectPlus, public SCA_IScene
{
Py_Header;
protected:
diff --git a/source/gameengine/Ketsji/KX_SceneActuator.cpp b/source/gameengine/Ketsji/KX_SceneActuator.cpp
index 996b671094a..721d01a3da3 100644
--- a/source/gameengine/Ketsji/KX_SceneActuator.cpp
+++ b/source/gameengine/Ketsji/KX_SceneActuator.cpp
@@ -247,18 +247,7 @@ PyObject* KX_SceneActuator::PySetUseRestart(PyObject* self,
return NULL;
}
- if (boolArg == KX_TRUE)
- {
- m_restart = true;
- }
- else if (boolArg == KX_FALSE)
- {
- m_restart = false;
- }
- else
- {
- ; /* internal error */
- }
+ m_restart = boolArg != 0;
Py_Return;
}
diff --git a/source/gameengine/Ketsji/KX_TouchSensor.cpp b/source/gameengine/Ketsji/KX_TouchSensor.cpp
index 9baa9377f02..9091a41d054 100644
--- a/source/gameengine/Ketsji/KX_TouchSensor.cpp
+++ b/source/gameengine/Ketsji/KX_TouchSensor.cpp
@@ -369,15 +369,7 @@ PyObject* KX_TouchSensor::PyGetTouchMaterial(PyObject* self,
PyObject* args,
PyObject* kwds)
{
- int retval = 0;
-
- if (m_bFindMaterial) {
- retval = KX_TRUE;
- } else {
- retval = KX_FALSE;
- }
-
- return PyInt_FromLong(retval);
+ return PyInt_FromLong(m_bFindMaterial);
}
/* 6. setTouchMaterial */
@@ -394,13 +386,7 @@ PyObject* KX_TouchSensor::PySetTouchMaterial(PyObject* self, PyObject* args, PyO
return NULL;
}
- if (pulseArg == KX_TRUE) {
- m_bFindMaterial = true;
- } else if (pulseArg == KX_FALSE){
- m_bFindMaterial = false;
- } else {
- ; /* internal error */
- }
+ m_bFindMaterial = pulseArg != 0;
Py_Return;
}
diff --git a/source/gameengine/PyDoc/GameKeys.py b/source/gameengine/PyDoc/GameKeys.py
index 8dbc040368b..268fb9cc172 100644
--- a/source/gameengine/PyDoc/GameKeys.py
+++ b/source/gameengine/PyDoc/GameKeys.py
@@ -101,28 +101,66 @@ Function Keys
Other Keys
----------
- - ESCKEY
- - TABKEY
- - RETKEY
- - SPACEKEY
- - LINEFEEDKEY
- - BACKSPACEKEY
- - DELKEY
- - SEMICOLONKEY
- - PERIODKEY
- - COMMAKEY
- - QUOTEKEY
- ACCENTGRAVEKEY
- - MINUSKEY
- - SLASHKEY
- BACKSLASHKEY
+ - BACKSPACEKEY
+ - COMMAKEY
+ - DELKEY
+ - ENDKEY
- EQUALKEY
- - LEFTBRACKETKEY
- - RIGHTBRACKETKEY
- - PAUSEKEY
- - INSERTKEY
+ - ESCKEY
- HOMEKEY
- - PAGEUPKEY
+ - INSERTKEY
+ - LEFTBRACKETKEY
+ - LINEFEEDKEY
+ - MINUSKEY
- PAGEDOWNKEY
- - ENDKEY
+ - PAGEUPKEY
+ - PAUSEKEY
+ - PERIODKEY
+ - QUOTEKEY
+ - RIGHTBRACKETKEY
+ - RETKEY
+ - SEMICOLONKEY
+ - SLASHKEY
+ - SPACEKEY
+ - TABKEY
+
+Example::
+ # Set a connected keyboard sensor to accept F1
+ import GameLogic
+ import GameKeys
+
+ co = GameLogic.getCurrentController()
+ # 'Keyboard' is a keyboard sensor
+ sensor = co.getSensor('Keyboard')
+ sensor.setKey(GameKeys.F1KEY)
+
+Example::
+ # Do the all keys thing
+ import GameLogic
+ import GameKeys
+
+ # status: these should be added to a module somewhere
+ KX_NO_INPUTSTATUS = 0
+ KX_JUSTACTIVATED = 1
+ KX_ACTIVE = 2
+ KX_JUSTRELEASED = 3
+
+ co = GameLogic.getCurrentController()
+ # 'Keyboard' is a keyboard sensor
+ sensor = co.getSensor('Keyboard')
+ keylist = sensor.getPressedKeys()
+ for key in keylist:
+ # key[0] == GameKeys.keycode, key[1] = status
+ if key[1] == KX_JUSTACTIVATED:
+ if key[0] == GameKeys.WKEY:
+ # Activate Forward!
+ if key[0] == GameKeys.SKEY:
+ # Activate Backward!
+ if key[0] == GameKeys.AKEY:
+ # Activate Left!
+ if key[0] == GameKeys.DKEY:
+ # Activate Right!
+
"""
diff --git a/source/gameengine/PyDoc/GameLogic.py b/source/gameengine/PyDoc/GameLogic.py
index 08f71e50f97..d4fccc7c3a0 100644
--- a/source/gameengine/PyDoc/GameLogic.py
+++ b/source/gameengine/PyDoc/GameLogic.py
@@ -17,65 +17,108 @@ Documentation for the GameLogic Module.
# To get the game object associated with this controller:
obj = co.getOwner()
- L{KX_GameObject} and possibly L{KX_Camera} and L{KX_Light} methods are
+ L{KX_GameObject} and L{KX_Camera} or L{KX_Light} methods are
available depending on the type of object::
# To get a sensor linked to this controller.
# "sensorname" is the name of the sensor as defined in the Blender interface.
+ # +---------------------+ +--------+
+ # | Sensor "sensorname" +--+ Python +
+ # +---------------------+ +--------+
sens = co.getSensor("sensorname")
- L{KX_NetworkMessageSensor}, L{KX_RaySensor}, L{KX_TouchSensor}, L{SCA_KeyboardSensor},
- L{SCA_MouseSensor}, L{SCA_PropertySensor} and L{SCA_RandomSensor} methods are available,
- depending on the type of sensor::
+
# To get a list of all sensors:
- sensors = co.B{getSensors}()
+ sensors = co.getSensors()
+
+ See the sensor's reference for available methods:
+ - L{KX_NetworkMessageSensor}
+ - L{KX_RaySensor}
+ - L{KX_MouseFocusSensor}
+ - L{KX_NearSensor}
+ - L{KX_RadarSensor}
+ - L{KX_TouchSensor}
+ - L{SCA_KeyboardSensor}
+ - L{SCA_MouseSensor}
+ - L{SCA_PropertySensor}
+ - L{SCA_RandomSensor}
+
+ You can also access actuators linked to the controller::
+ # To get an actuator attached to the controller:
+ # +--------+ +-------------------------+
+ # + Python +--+ Actuator "actuatorname" |
+ # +--------+ +-------------------------+
+ actuator = co.getActuator("actuatorname")
+
+ # Activate an actuator
+ GameLogic.addActiveActuator(actuator, True)
+
+ See the actuator's reference for available methods:
+ - L{BL_ActionActuator}
+ - L{KX_CameraActuator}
+ - L{KX_CDActuator}
+ - L{KX_ConstraintActuator}
+ - L{KX_GameActuator}
+ - L{KX_IpoActuator}
+ - L{KX_NetworkMessageActuator}
+ - L{KX_ObjectActuator}
+ - L{KX_SCA_AddObjectActuator}
+ - L{KX_SCA_EndObjectActuator}
+ - L{KX_SCA_ReplaceMeshActuator}
+ - L{KX_SceneActuator}
+ - L{KX_SoundActuator}
+ - L{KX_TrackToActuator}
+ - L{KX_VisibilityActuator}
+ - L{SCA_PropertyActuator}
+ - L{SCA_RandomActuator}
+
+ There are also methods to access the current L{KX_Scene}::
+ # Get the current scene
+ scene = GameLogic.getCurrentScene()
+
+ # Get the current camera
+ cam = scene.active_camera
+ Matricies as used by the game engine are B{row major}::
+ matrix[row][col] = blah
+ L{KX_Camera} has some examples using matricies.
-Constants
-=========
- - KX_TRUE: True value used by some modules
- - KX_FALSE: False value used by some modules.
+@group Constants: KX_TRUE, KX_FALSE
+@var KX_TRUE: True value used by some modules.
+@var KX_FALSE: False value used by some modules.
-Property Sensor
----------------
- Tests that the property sensor is able to perform. See L{SCA_PropertySensor}
- - KX_PROPSENSOR_EQUAL: Activate when the property is equal to the sensor value.
- - KX_PROPSENSOR_NOTEQUAL: Activate when the property is not equal to the sensor value.
- - KX_PROPSENSOR_INTERVAL: Activate when the property is between the specified limits.
- - KX_PROPSENSOR_CHANGED: Activate when the property changes
- - KX_PROPSENSOR_EXPRESSION: Activate when the expression matches
+@group Property Sensor: KX_PROPSENSOR_EQUAL, KX_PROPSENSOR_NOTEQUAL, KX_PROPSENSOR_INTERVAL, KX_PROPSENSOR_CHANGED, KX_PROPSENSOR_EXPRESSION
+@var KX_PROPSENSOR_EQUAL: Activate when the property is equal to the sensor value.
+@var KX_PROPSENSOR_NOTEQUAL: Activate when the property is not equal to the sensor value.
+@var KX_PROPSENSOR_INTERVAL: Activate when the property is between the specified limits.
+@var KX_PROPSENSOR_CHANGED: Activate when the property changes
+@var KX_PROPSENSOR_EXPRESSION: Activate when the expression matches
-Constraint Actuator
--------------------
- The axis and type (location/rotation) of constraint. See L{KX_ConstraintActuator}
- - KX_CONSTRAINTACT_LOCX
- - KX_CONSTRAINTACT_LOCY
- - KX_CONSTRAINTACT_LOCZ
- - KX_CONSTRAINTACT_ROTX
- - KX_CONSTRAINTACT_ROTY
- - KX_CONSTRAINTACT_ROTZ
+@group Constraint Actuator: KX_CONSTRAINTACT_LOCX, KX_CONSTRAINTACT_LOCY, KX_CONSTRAINTACT_LOCZ, KX_CONSTRAINTACT_ROTX, KX_CONSTRAINTACT_ROTY, KX_CONSTRAINTACT_ROTZ
+@var KX_CONSTRAINTACT_LOCX: See L{KX_ConstraintActuator}
+@var KX_CONSTRAINTACT_LOCY: See L{KX_ConstraintActuator}
+@var KX_CONSTRAINTACT_LOCZ: See L{KX_ConstraintActuator}
+@var KX_CONSTRAINTACT_ROTX: See L{KX_ConstraintActuator}
+@var KX_CONSTRAINTACT_ROTY: See L{KX_ConstraintActuator}
+@var KX_CONSTRAINTACT_ROTZ: See L{KX_ConstraintActuator}
-IPO Actuator
-------------
- IPO Types. See L{KX_IpoActuator}
- - KX_IPOACT_PLAY
- - KX_IPOACT_PINGPONG
- - KX_IPOACT_FLIPPER
- - KX_IPOACT_LOOPSTOP
- - KX_IPOACT_LOOPEND
+@group IPO Actuator: KX_IPOACT_PLAY, KX_IPOACT_PINGPONG, KX_IPOACT_FLIPPER, KX_IPOACT_LOOPSTOP, KX_IPOACT_LOOPEND
+@var KX_IPOACT_PLAY: See L{KX_IpoActuator}
+@var KX_IPOACT_PINGPONG: See L{KX_IpoActuator}
+@var KX_IPOACT_FLIPPER: See L{KX_IpoActuator}
+@var KX_IPOACT_LOOPSTOP: See L{KX_IpoActuator}
+@var KX_IPOACT_LOOPEND: See L{KX_IpoActuator}
-Random Distributions
---------------------
- See L{SCA_RandomActuator}
- - KX_RANDOMACT_BOOL_CONST
- - KX_RANDOMACT_BOOL_UNIFORM
- - KX_RANDOMACT_BOOL_BERNOUILLI
- - KX_RANDOMACT_INT_CONST
- - KX_RANDOMACT_INT_UNIFORM
- - KX_RANDOMACT_INT_POISSON
- - KX_RANDOMACT_FLOAT_CONST
- - KX_RANDOMACT_FLOAT_UNIFORM
- - KX_RANDOMACT_FLOAT_NORMAL
- - KX_RANDOMACT_FLOAT_NEGATIVE_EXPONENTIAL
+@group Random Distributions: KX_RANDOMACT_BOOL_CONST, KX_RANDOMACT_BOOL_UNIFORM, KX_RANDOMACT_BOOL_BERNOUILLI, KX_RANDOMACT_INT_CONST, KX_RANDOMACT_INT_UNIFORM, KX_RANDOMACT_INT_POISSON, KX_RANDOMACT_FLOAT_CONST, KX_RANDOMACT_FLOAT_UNIFORM, KX_RANDOMACT_FLOAT_NORMAL, KX_RANDOMACT_FLOAT_NEGATIVE_EXPONENTIAL
+@var KX_RANDOMACT_BOOL_CONST: See L{SCA_RandomActuator}
+@var KX_RANDOMACT_BOOL_UNIFORM: See L{SCA_RandomActuator}
+@var KX_RANDOMACT_BOOL_BERNOUILLI: See L{SCA_RandomActuator}
+@var KX_RANDOMACT_INT_CONST: See L{SCA_RandomActuator}
+@var KX_RANDOMACT_INT_UNIFORM: See L{SCA_RandomActuator}
+@var KX_RANDOMACT_INT_POISSON: See L{SCA_RandomActuator}
+@var KX_RANDOMACT_FLOAT_CONST: See L{SCA_RandomActuator}
+@var KX_RANDOMACT_FLOAT_UNIFORM: See L{SCA_RandomActuator}
+@var KX_RANDOMACT_FLOAT_NORMAL: See L{SCA_RandomActuator}
+@var KX_RANDOMACT_FLOAT_NEGATIVE_EXPONENTIAL: See L{SCA_RandomActuator}
"""
diff --git a/source/gameengine/PyDoc/KX_Camera.py b/source/gameengine/PyDoc/KX_Camera.py
index 1d1b7197977..939da3da591 100644
--- a/source/gameengine/PyDoc/KX_Camera.py
+++ b/source/gameengine/PyDoc/KX_Camera.py
@@ -94,7 +94,7 @@ class KX_Camera(KX_GameObject):
co = GameLogic.getCurrentController()
cam = co.GetOwner()
- # Test point [0.0, 0.0, 0.0]"
+ # Test point [0.0, 0.0, 0.0]
if (cam.pointInsideFrustum([0.0, 0.0, 0.0])):
# Point is inside frustum !
# Do something useful !
diff --git a/source/gameengine/PyDoc/KX_Scene.py b/source/gameengine/PyDoc/KX_Scene.py
index 2ba57dc9d78..4a0a7a9556d 100644
--- a/source/gameengine/PyDoc/KX_Scene.py
+++ b/source/gameengine/PyDoc/KX_Scene.py
@@ -34,6 +34,8 @@ class KX_Scene:
# Depth is negative and decreasing further from the camera
depth = obj.position[0]*cam.world_to_camera[2][0] + obj.position[1]*cam.world_to_camera[2][1] + obj.position[2]*cam.world_to_camera[2][2] + cam.world_to_camera[2][3]
+
+ @bug: All attributes are read only at the moment.
@ivar name: The scene's name
@type name: string
diff --git a/source/gameengine/PyDoc/SCA_KeyboardSensor.py b/source/gameengine/PyDoc/SCA_KeyboardSensor.py
index e90fb9cc2f1..2f741f7d6a2 100644
--- a/source/gameengine/PyDoc/SCA_KeyboardSensor.py
+++ b/source/gameengine/PyDoc/SCA_KeyboardSensor.py
@@ -6,7 +6,7 @@ class SCA_KeyboardSensor(SCA_ISensor):
"""
A keyboard sensor detects player key presses.
- See module GameKeys for keycode values.
+ See module L{GameKeys} for keycode values.
"""
def getKey():
@@ -18,7 +18,7 @@ class SCA_KeyboardSensor(SCA_ISensor):
"""
Set the key this sensor should listen for.
- @type keycode: keycode from GameKeys module
+ @type keycode: keycode from L{GameKeys} module
"""
def getHold1():
diff --git a/source/gameengine/Rasterizer/RAS_MaterialBucket.h b/source/gameengine/Rasterizer/RAS_MaterialBucket.h
index 28185dabca6..480bd9f1d11 100644
--- a/source/gameengine/Rasterizer/RAS_MaterialBucket.h
+++ b/source/gameengine/Rasterizer/RAS_MaterialBucket.h
@@ -70,10 +70,11 @@ public:
class KX_MeshSlot
{
public:
- void* m_clientObj;
+ void* m_clientObj;
RAS_Deformer* m_pDeformer; // __NLA
- double* m_OpenGLMatrix;
- class RAS_MeshObject* m_mesh;
+ double* m_OpenGLMatrix;
+ class RAS_MeshObject* m_mesh;
+
mutable bool m_bVisible; // for visibility
mutable bool m_bObjectColor;
mutable MT_Vector4 m_RGBAcolor;
diff --git a/source/gameengine/Rasterizer/RAS_MeshObject.cpp b/source/gameengine/Rasterizer/RAS_MeshObject.cpp
index c048479a46e..ff5e674150b 100644
--- a/source/gameengine/Rasterizer/RAS_MeshObject.cpp
+++ b/source/gameengine/Rasterizer/RAS_MeshObject.cpp
@@ -564,14 +564,14 @@ RAS_MeshObject::polygonSlot::polygonSlot(const MT_Vector3 &pnorm, const MT_Scala
{
vert = mesh->GetVertex(base.m_vtxarray, base.m_indexarray[i], poly->GetMaterial()->GetPolyMaterial());
float z = MT_dot(pnorm, vert->getLocalXYZ()) + pval;
- if (z > m_z)
+ if (z < m_z)
m_z = z;
}
}
void RAS_MeshObject::SortPolygons(const MT_Transform &transform)
{
-
+ // Extract camera Z plane...
const MT_Vector3 pnorm(transform.getBasis()[2]);
const MT_Scalar pval = transform.getOrigin()[2];
@@ -593,6 +593,7 @@ void RAS_MeshObject::SortPolygons(const MT_Transform &transform)
}
}
+ // Clear current array data.
for (RAS_MaterialBucket::Set::iterator it = m_materials.begin();it!=m_materials.end();++it)
{
vector<KX_IndexArray*> *indexcache = &GetArrayOptimizer((*it)->GetPolyMaterial())->m_IndexArrayCache1;
@@ -600,8 +601,6 @@ void RAS_MeshObject::SortPolygons(const MT_Transform &transform)
(*iit)->clear();
}
- //ClearArrayData();
-
std::multiset<polygonSlot, fronttoback>::iterator sit = solidpolyset.begin();
for (; sit != solidpolyset.end(); ++sit)
SchedulePoly((*sit).m_poly->GetVertexIndexBase(), (*sit).m_poly->VertexCount(), (*sit).m_poly->GetMaterial()->GetPolyMaterial());
@@ -659,7 +658,7 @@ void RAS_MeshObject::SchedulePolygons(const MT_Transform &transform, int drawing
m_bModified = false;
}
- if (m_zsort)
+ if (m_zsort && rasty->GetDrawingMode() >= RAS_IRasterizer::KX_SOLID)
{
SortPolygons(transform);
}