[Scummvm-cvs-logs] SF.net SVN: scummvm: [26114] residual/trunk
aquadran at users.sourceforge.net
aquadran at users.sourceforge.net
Mon Mar 12 22:50:45 CET 2007
Revision: 26114
http://scummvm.svn.sourceforge.net/scummvm/?rev=26114&view=rev
Author: aquadran
Date: 2007-03-12 14:50:44 -0700 (Mon, 12 Mar 2007)
Log Message:
-----------
a little more code with shadow stuff
Modified Paths:
--------------
residual/trunk/actor.cpp
residual/trunk/actor.h
residual/trunk/driver.h
residual/trunk/driver_gl.cpp
residual/trunk/driver_gl.h
residual/trunk/driver_tinygl.cpp
residual/trunk/driver_tinygl.h
residual/trunk/walkplane.h
Modified: residual/trunk/actor.cpp
===================================================================
--- residual/trunk/actor.cpp 2007-03-12 20:43:56 UTC (rev 26113)
+++ residual/trunk/actor.cpp 2007-03-12 21:50:44 UTC (rev 26114)
@@ -55,6 +55,8 @@
_constrain = false;
_talkSoundName = "";
_activeShadowSlot = -1;
+ _shadowArray = new Shadow[5];
+ memset(_shadowArray, 0, sizeof(Shadow) * 5);
for (int i = 0; i < 10; i++) {
_talkCostume[i] = NULL;
@@ -587,13 +589,16 @@
}
void Actor::draw() {
+ setupDrawShadow();
for (std::list<Costume *>::iterator i = _costumeStack.begin(); i != _costumeStack.end(); i++)
(*i)->setupTextures();
if (!_costumeStack.empty()) {
+ setupDrawShadow();
g_driver->startActorDraw(_pos, _yaw, _pitch, _roll);
_costumeStack.back()->draw();
g_driver->finishActorDraw();
+ finishDrawShadow();
}
}
@@ -645,3 +650,14 @@
}
}
}
+
+void Actor::setupDrawShadow() {
+ if (_activeShadowSlot == -1)
+ return;
+
+ g_driver->setupShadower(_shadowArray);
+}
+
+void Actor::finishDrawShadow() {
+ g_driver->setupShadower(NULL);
+}
Modified: residual/trunk/actor.h
===================================================================
--- residual/trunk/actor.h 2007-03-12 20:43:56 UTC (rev 26113)
+++ residual/trunk/actor.h 2007-03-12 21:50:44 UTC (rev 26114)
@@ -36,10 +36,12 @@
class TextObject;
class Sector;
+typedef std::list<Sector *> SectorListType;
+
struct Shadow {
std::string name;
Vector3d pos;
- std::list<Sector *>planeList;
+ SectorListType planeList;
bool active;
};
@@ -126,6 +128,8 @@
void setShadowPlane(const char *name);
void addShadowPlane(const char *name);
void clearShadowPlanes();
+ void setupDrawShadow();
+ void finishDrawShadow();
void setConstrain(bool constrain) {
_constrain = constrain;
@@ -194,7 +198,7 @@
Costume *_mumbleCostume;
int _mumbleChore;
- Shadow _shadowArray[5];
+ Shadow *_shadowArray;
int _activeShadowSlot;
static Font *_sayLineFont;
Modified: residual/trunk/driver.h
===================================================================
--- residual/trunk/driver.h 2007-03-12 20:43:56 UTC (rev 26113)
+++ residual/trunk/driver.h 2007-03-12 21:50:44 UTC (rev 26114)
@@ -31,6 +31,7 @@
#include "colormap.h"
#include "font.h"
#include "primitives.h"
+#include "actor.h"
class Material;
class Bitmap;
@@ -67,7 +68,8 @@
virtual void startActorDraw(Vector3d pos, float yaw, float pitch, float roll) = 0;
virtual void finishActorDraw() = 0;
-
+ virtual void setupShadower(Shadow *shadow) = 0;
+
virtual void set3DMode() = 0;
virtual void translateViewpoint(Vector3d pos, float pitch, float yaw, float roll) = 0;
@@ -322,6 +324,7 @@
protected:
int _screenWidth, _screenHeight, _screenBPP;
bool _isFullscreen;
+ Shadow *_currentShadowArray;
};
extern Driver *g_driver;
Modified: residual/trunk/driver_gl.cpp
===================================================================
--- residual/trunk/driver_gl.cpp 2007-03-12 20:43:56 UTC (rev 26113)
+++ residual/trunk/driver_gl.cpp 2007-03-12 21:50:44 UTC (rev 26114)
@@ -125,6 +125,9 @@
glDisable(GL_TEXTURE_2D);
}
+void DriverGL::setupShadower(Shadow *shadow) {
+}
+
void DriverGL::set3DMode() {
glMatrixMode(GL_MODELVIEW);
glEnable(GL_DEPTH_TEST);
Modified: residual/trunk/driver_gl.h
===================================================================
--- residual/trunk/driver_gl.h 2007-03-12 20:43:56 UTC (rev 26113)
+++ residual/trunk/driver_gl.h 2007-03-12 21:50:44 UTC (rev 26114)
@@ -52,6 +52,7 @@
void startActorDraw(Vector3d pos, float yaw, float pitch, float roll);
void finishActorDraw();
+ void setupShadower(Shadow *shadow);
void set3DMode();
Modified: residual/trunk/driver_tinygl.cpp
===================================================================
--- residual/trunk/driver_tinygl.cpp 2007-03-12 20:43:56 UTC (rev 26113)
+++ residual/trunk/driver_tinygl.cpp 2007-03-12 21:50:44 UTC (rev 26114)
@@ -184,6 +184,25 @@
tglMatrixMode(TGL_MODELVIEW);
tglPopMatrix();
tglDisable(TGL_TEXTURE_2D);
+
+/* // enable to draw shadow planes (Special Sectors)
+ int k, r;
+ if (!_currentShadowArray)
+ return;
+
+ tglColor3f(0.8,0.8,0.8);
+ for (r = 0; r < 5; r++) {
+ _currentShadowArray[r].planeList.begin();
+ for (SectorListType::iterator i = _currentShadowArray[r].planeList.begin(); i != _currentShadowArray[r].planeList.end(); i++) {
+ Sector *shadowSector = *i;
+ tglBegin(TGL_POLYGON);
+ tglNormal3f(shadowSector->getNormal().x(), shadowSector->getNormal().y(), shadowSector->getNormal().z());
+ for (k = 0; k < shadowSector->getNumVertices(); k++) {
+ tglVertex3f(shadowSector->getVertices()[k].x(), shadowSector->getVertices()[k].y(), shadowSector->getVertices()[k].z());
+ }
+ tglEnd();
+ }
+ }*/
}
void DriverTinyGL::set3DMode() {
@@ -191,6 +210,10 @@
tglEnable(TGL_DEPTH_TEST);
}
+void DriverTinyGL::setupShadower(Shadow *shadow) {
+ _currentShadowArray = shadow;
+}
+
void DriverTinyGL::drawModelFace(const Model::Face *face, float *vertices, float *vertNormals, float *textureVerts) {
tglNormal3fv((float *)face->_normal._coords);
tglBegin(TGL_POLYGON);
Modified: residual/trunk/driver_tinygl.h
===================================================================
--- residual/trunk/driver_tinygl.h 2007-03-12 20:43:56 UTC (rev 26113)
+++ residual/trunk/driver_tinygl.h 2007-03-12 21:50:44 UTC (rev 26114)
@@ -53,6 +53,7 @@
void startActorDraw(Vector3d pos, float yaw, float pitch, float roll);
void finishActorDraw();
+ void setupShadower(Shadow *shadow);
void set3DMode();
Modified: residual/trunk/walkplane.h
===================================================================
--- residual/trunk/walkplane.h 2007-03-12 20:43:56 UTC (rev 26113)
+++ residual/trunk/walkplane.h 2007-03-12 21:50:44 UTC (rev 26114)
@@ -33,7 +33,7 @@
class Sector {
public:
Sector() : _vertices(0) {}
- ~Sector() { if(_vertices) delete[] _vertices; }
+ ~Sector() { if (_vertices) delete[] _vertices; }
void load(TextSplitter &ts);
@@ -56,9 +56,12 @@
float angleWithEdge;
Vector3d edgeDir;
};
- void getExitInfo(Vector3d start, Vector3d dir,
- struct ExitInfo *result);
+ void getExitInfo(Vector3d start, Vector3d dir, struct ExitInfo *result);
+ int getNumVertices() { return _numVertices; }
+ Vector3d *getVertices() { return _vertices; }
+ Vector3d getNormal() { return _normal; }
+
private:
int _numVertices, _id;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
More information about the Scummvm-git-logs
mailing list