~swag/armagetronad/0.2.9-sty+ct+ap-fork

« back to all changes in this revision

Viewing changes to src/engine/eDebugLine.cpp

  • Committer: luke-jr
  • Date: 2006-05-29 01:55:42 UTC
  • Revision ID: svn-v3-list-QlpoOTFBWSZTWZvbKhsAAAdRgAAQABK6798QIABURMgAAaeoNT1TxT1DQbKaeobXKiyAmlWT7Y5MkdJOtXDtB7w7DOGFBHiOBxaUIu7HQyyQSvxdyRThQkJvbKhs:7d95bf1e-0414-0410-9756-b78462a59f44:armagetronad%2Fbranches%2F0.2.8%2Farmagetronad:4612
Unify tags/branches of modules released together

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 
 
3
*************************************************************************
 
4
 
 
5
ArmageTron -- Just another Tron Lightcycle Game in 3D.
 
6
Copyright (C) 2000  Manuel Moos (manuel@moosnet.de)
 
7
 
 
8
**************************************************************************
 
9
 
 
10
This program is free software; you can redistribute it and/or
 
11
modify it under the terms of the GNU General Public License
 
12
as published by the Free Software Foundation; either version 2
 
13
of the License, or (at your option) any later version.
 
14
 
 
15
This program is distributed in the hope that it will be useful,
 
16
but WITHOUT ANY WARRANTY; without even the implied warranty of
 
17
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
18
GNU General Public License for more details.
 
19
 
 
20
You should have received a copy of the GNU General Public License
 
21
along with this program; if not, write to the Free Software
 
22
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
23
  
 
24
***************************************************************************
 
25
 
 
26
*/
 
27
 
 
28
#include "eDebugLine.h"
 
29
#include "tArray.h"
 
30
#include "rRender.h"
 
31
 
 
32
#ifdef DEBUG
 
33
#define DEBUGLINE
 
34
#endif
 
35
 
 
36
 
 
37
static REAL se_r=1, se_g=1, se_b=1;
 
38
static REAL se_timeout=.1;
 
39
 
 
40
class eLineEntry
 
41
{
 
42
public:
 
43
    int    index;
 
44
    REAL   r, g, b;
 
45
    REAL   timeout;
 
46
    eCoord start , stop;
 
47
    REAL   startH, stopH;
 
48
 
 
49
    eLineEntry()
 
50
            :r(se_r), g(se_g), b(se_b),
 
51
            timeout(se_timeout)
 
52
    {
 
53
    }
 
54
 
 
55
    void Delete();
 
56
    static eLineEntry& Create();
 
57
};
 
58
 
 
59
static tArray<eLineEntry> se_lines;
 
60
 
 
61
void eLineEntry::Delete()
 
62
{
 
63
    int i = index;
 
64
    *this = se_lines(se_lines.Len()-1);
 
65
    index = i;
 
66
 
 
67
    if (se_lines.Len() > 0)
 
68
        se_lines.SetLen(se_lines.Len()-1);
 
69
}
 
70
 
 
71
eLineEntry& eLineEntry::Create()
 
72
{
 
73
    eLineEntry& ret = se_lines[se_lines.Len()];
 
74
    ret.index = se_lines.Len()-1;
 
75
    ret.timeout = se_timeout;
 
76
    ret.r       = se_r;
 
77
    ret.g       = se_g;
 
78
    ret.b       = se_b;
 
79
    return ret;
 
80
}
 
81
 
 
82
 
 
83
void eDebugLine::Update(REAL ts)
 
84
{
 
85
    for (int i = se_lines.Len()-1; i>=0; i--)
 
86
    {
 
87
        eLineEntry& entry = se_lines(i);
 
88
        entry.timeout -= ts;
 
89
        if (entry.timeout < 0)
 
90
            entry.Delete();
 
91
    }
 
92
}
 
93
 
 
94
 
 
95
void eDebugLine::Render()
 
96
{
 
97
#ifndef DEDICATED
 
98
#ifdef DEBUGLINE
 
99
    glDisable(GL_TEXTURE_2D);
 
100
    glDisable(GL_LIGHTING);
 
101
    BeginLines();
 
102
    for (int i = se_lines.Len()-1; i>=0; i--)
 
103
    {
 
104
        eLineEntry& entry = se_lines(i);
 
105
        Color(entry.r, entry.g, entry.b);
 
106
        Vertex(entry.start.x, entry.start.y, entry.startH);
 
107
        Vertex(entry.stop.x,  entry.stop.y,  entry.stopH);
 
108
    }
 
109
    RenderEnd();
 
110
#endif
 
111
#endif
 
112
}
 
113
 
 
114
void eDebugLine::SetColor(REAL r, REAL g, REAL b)
 
115
{
 
116
    se_r = r;
 
117
    se_g = g;
 
118
    se_b = b;
 
119
}
 
120
 
 
121
void eDebugLine::SetTimeout(REAL time)
 
122
{
 
123
    se_timeout = time;
 
124
}
 
125
 
 
126
void eDebugLine::ResetOptions()
 
127
{
 
128
    se_r = 1;
 
129
    se_g = 1;
 
130
    se_b = 1;
 
131
    se_timeout = .1f;
 
132
}
 
133
 
 
134
void eDebugLine::Draw(const eCoord& start, REAL startH,
 
135
                      const eCoord& stop , REAL stopH)
 
136
{
 
137
#ifdef DEBUGLINE
 
138
    eLineEntry& line = eLineEntry::Create();
 
139
    line.start  = start;
 
140
    line.startH = startH;
 
141
    line.stop   = stop;
 
142
    line.stopH  = stopH;
 
143
#endif
 
144
}
 
145