aboutsummaryrefslogtreecommitdiff
path: root/src/shared/vmap/DebugCmdLogger.h
diff options
context:
space:
mode:
authorNeo2003 <none@none>2008-10-02 16:23:55 -0500
committerNeo2003 <none@none>2008-10-02 16:23:55 -0500
commit9b1c0e006f20091f28f3f468cfcab1feb51286bd (patch)
treeb5d1ba94a656e6679f8737f9ea6bed1239b73b14 /src/shared/vmap/DebugCmdLogger.h
[svn] * Proper SVN structureinit
--HG-- branch : trunk
Diffstat (limited to 'src/shared/vmap/DebugCmdLogger.h')
-rw-r--r--src/shared/vmap/DebugCmdLogger.h116
1 files changed, 116 insertions, 0 deletions
diff --git a/src/shared/vmap/DebugCmdLogger.h b/src/shared/vmap/DebugCmdLogger.h
new file mode 100644
index 00000000000..8440707d75f
--- /dev/null
+++ b/src/shared/vmap/DebugCmdLogger.h
@@ -0,0 +1,116 @@
+/*
+ * Copyright (C) 2005-2008 MaNGOS <http://www.mangosproject.org/>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#ifndef _DEBUGCMDLOGGER_H
+#define _DEBUGCMDLOGGER_H
+
+#include <G3D/Vector3.h>
+#include <G3D/Array.h>
+
+/**
+Class is used for debugging. We log activities into a file.
+With an external Class we read that log and display the activity in a graphical view.
+*/
+
+namespace VMAP
+{
+
+ //==========================================
+ enum C_TYPES
+ {
+ STOP,
+ START,
+ LOAD_TILE,
+ UNLOAD_TILE,
+ SET_POS,
+ TEST_VIS,
+ LOAD_INSTANCE,
+ UNLOAD_INSTANCE,
+ TEST_HEIGHT,
+ TEST_OBJECT_HIT,
+ };
+
+ class Command
+ {
+ int iType;
+ float floats[9];
+ int ints[4];
+ char buffer[100];
+ public:
+
+ Command() { iType = STOP; }
+
+ inline int getType() { return iType; }
+ inline G3D::Vector3 getVector(int pos) { return(G3D::Vector3(floats[pos*3+0], floats[pos*3+1], floats[pos*3+2])); }
+ inline int getInt(int pos) { return(ints[pos]); }
+ inline char* getBuffer() { return(buffer); }
+
+ void fillStopCmd() { iType = STOP; }
+ void fillStartCmd() { iType = START; }
+ void fillLoadTileCmd(int x, int y, G3D::uint32 pMapId) { iType = LOAD_TILE; ints[0] = x; ints[1] = y; ints[2] = pMapId; }
+ //void fillLoadTileCmd(int x,int y) { iType = LOAD_TILE; ints[0] = x; ints[1] = y; }
+ void fillUnloadTileCmd(G3D::uint32 pMapId) { iType = UNLOAD_INSTANCE; ints[0] = pMapId; }
+ void fillUnloadTileCmd(unsigned int pMapId, int x,int y) { iType = UNLOAD_TILE; ints[0] = x; ints[1] = y; ints[0]=pMapId; }
+ void fillSetPosCmd(G3D::Vector3 pPos) { iType = SET_POS; floats[0] = pPos.x; floats[1]=pPos.y; floats[2]=pPos.z; }
+ void fillTestVisCmd(int pMapId, G3D::Vector3 pPos1, G3D::Vector3 pPos2, bool result)
+ {
+ iType = TEST_VIS; floats[0] = pPos1.x; floats[1]=pPos1.y; floats[2]=pPos1.z;
+ floats[3] = pPos2.x; floats[4]=pPos2.y; floats[5]=pPos2.z;
+ ints[0] = result; ints[1] = pMapId;
+ }
+ void fillTestHeightCmd(int pMapId, G3D::Vector3 pPos, float result)
+ {
+ iType = TEST_HEIGHT; floats[0] = pPos.x; floats[1]=pPos.y; floats[2]=pPos.z;
+ floats[3] = result; ints[0] = pMapId;
+ }
+ void fillTestObjectHitCmd(int pMapId, G3D::Vector3 pPos1, G3D::Vector3 pPos2, G3D::Vector3 pResultPos, bool result)
+ {
+ iType = TEST_OBJECT_HIT; floats[0] = pPos1.x; floats[1]=pPos1.y; floats[2]=pPos1.z;
+ floats[3] = pPos2.x; floats[4]=pPos2.y; floats[5]=pPos2.z;
+ floats[6] = pResultPos.x; floats[7]=pResultPos.y; floats[8]=pResultPos.z;
+ ints[0] = result; ints[1] = pMapId;
+ }
+
+ bool isCoreCmd() const { return(iType != TEST_VIS); }
+ };
+
+ //==========================================
+
+ class CommandFileRW
+ {
+ private:
+ std::string iFileName;
+ long iLastPos;
+ G3D::Array<G3D::Array<Command> > iCommandArray;
+ bool resetfile;
+ bool iWritingEnabled;
+ public:
+ CommandFileRW() { iLastPos=0; iWritingEnabled = true; resetfile = true;}
+ CommandFileRW(const std::string& pFileName) { iLastPos = 0; iFileName = pFileName; iWritingEnabled = true; resetfile = true; }
+ void setResetFile() { resetfile = true; }
+ void enableWriting(bool pValue) { iWritingEnabled = pValue; }
+ void setFileName(const std::string& pName) { iFileName = pName; }
+ bool getNewCommands(G3D::Array<Command>& commandArray);
+ const G3D::Array<G3D::Array<Command> >& getFullCommandArray() { return iCommandArray; }
+
+ bool appendCmd(const Command& pCommand);
+ bool appendCmds(const G3D::Array<Command>& pCmdArray);
+ };
+
+}
+#endif