Mercurial > fife-parpg
annotate engine/core/view/renderers/genericrenderer.cpp @ 522:7b451e3b2439
FloatingTextRenderer no longer modifies the default font color when rendering.
author | prock@33b003aa-7bff-0310-803a-e67f0ece8222 |
---|---|
date | Thu, 27 May 2010 18:26:11 +0000 |
parents | 16c2b3ee59ce |
children | b2feacaed53c |
rev | line source |
---|---|
23 | 1 /*************************************************************************** |
2 * Copyright (C) 2005-2008 by the FIFE team * | |
3 * http://www.fifengine.de * | |
4 * This file is part of FIFE. * | |
5 * * | |
46
90005975cdbb
* Final LGPL switch step by adjusting the file headers
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
36
diff
changeset
|
6 * FIFE is free software; you can redistribute it and/or * |
90005975cdbb
* Final LGPL switch step by adjusting the file headers
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
36
diff
changeset
|
7 * modify it under the terms of the GNU Lesser General Public * |
90005975cdbb
* Final LGPL switch step by adjusting the file headers
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
36
diff
changeset
|
8 * License as published by the Free Software Foundation; either * |
90005975cdbb
* Final LGPL switch step by adjusting the file headers
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
36
diff
changeset
|
9 * version 2.1 of the License, or (at your option) any later version. * |
23 | 10 * * |
46
90005975cdbb
* Final LGPL switch step by adjusting the file headers
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
36
diff
changeset
|
11 * This library is distributed in the hope that it will be useful, * |
23 | 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of * |
46
90005975cdbb
* Final LGPL switch step by adjusting the file headers
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
36
diff
changeset
|
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * |
90005975cdbb
* Final LGPL switch step by adjusting the file headers
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
36
diff
changeset
|
14 * Lesser General Public License for more details. * |
23 | 15 * * |
46
90005975cdbb
* Final LGPL switch step by adjusting the file headers
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
36
diff
changeset
|
16 * You should have received a copy of the GNU Lesser General Public * |
90005975cdbb
* Final LGPL switch step by adjusting the file headers
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
36
diff
changeset
|
17 * License along with this library; if not, write to the * |
23 | 18 * Free Software Foundation, Inc., * |
46
90005975cdbb
* Final LGPL switch step by adjusting the file headers
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
36
diff
changeset
|
19 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA * |
23 | 20 ***************************************************************************/ |
21 | |
22 // Standard C++ library includes | |
23 | |
24 // 3rd party library includes | |
25 | |
26 // FIFE includes | |
27 // These includes are split up in two parts, separated by one empty line | |
28 // First block: files included from the FIFE root src directory | |
29 // Second block: files included from the same folder | |
30 #include "video/renderbackend.h" | |
27
788cb9525b2f
add image and text renderer to generic renderer
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
26
diff
changeset
|
31 #include "video/imagepool.h" |
788cb9525b2f
add image and text renderer to generic renderer
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
26
diff
changeset
|
32 #include "video/animation.h" |
788cb9525b2f
add image and text renderer to generic renderer
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
26
diff
changeset
|
33 #include "video/animationpool.h" |
788cb9525b2f
add image and text renderer to generic renderer
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
26
diff
changeset
|
34 #include "video/fonts/abstractfont.h" |
788cb9525b2f
add image and text renderer to generic renderer
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
26
diff
changeset
|
35 #include "video/image.h" |
23 | 36 #include "util/math/fife_math.h" |
37 #include "util/log/logger.h" | |
181
56ac89189bc4
fixed time handling in fife:
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
105
diff
changeset
|
38 #include "util/time/timemanager.h" |
23 | 39 #include "model/metamodel/grids/cellgrid.h" |
31
9a9f4447af7c
add animation renderer
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
30
diff
changeset
|
40 #include "model/metamodel/timeprovider.h" |
23 | 41 #include "model/structures/instance.h" |
42 #include "model/structures/layer.h" | |
43 #include "model/structures/location.h" | |
44 | |
45 #include "view/camera.h" | |
46 #include "genericrenderer.h" | |
47 | |
48 | |
49 namespace FIFE { | |
50 static Logger _log(LM_VIEWVIEW); | |
51 | |
445
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
52 GenericRendererNode::GenericRendererNode(Instance* attached_instance, Location* relative_location, Layer* relative_layer, const Point &relative_point): |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
53 m_instance(attached_instance), |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
54 m_location(relative_location), |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
55 m_layer(relative_layer), |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
56 m_point(relative_point) { |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
57 } |
23 | 58 GenericRendererNode::GenericRendererNode(Instance* attached_instance, Location* relative_location, const Point &relative_point): |
59 m_instance(attached_instance), | |
60 m_location(relative_location), | |
445
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
61 m_layer(NULL), |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
62 m_point(relative_point) { |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
63 } |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
64 GenericRendererNode::GenericRendererNode(Instance* attached_instance, Layer* relative_layer, const Point &relative_point): |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
65 m_instance(attached_instance), |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
66 m_location(NULL), |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
67 m_layer(relative_layer), |
23 | 68 m_point(relative_point) { |
69 } | |
70 GenericRendererNode::GenericRendererNode(Instance* attached_instance, const Point &relative_point): | |
71 m_instance(attached_instance), | |
72 m_location(NULL), | |
445
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
73 m_layer(NULL), |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
74 m_point(relative_point) { |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
75 } |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
76 GenericRendererNode::GenericRendererNode(Location* attached_location, Layer* relative_layer, const Point &relative_point): |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
77 m_instance(NULL), |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
78 m_location(attached_location), |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
79 m_layer(relative_layer), |
23 | 80 m_point(relative_point) { |
81 } | |
82 GenericRendererNode::GenericRendererNode(Location* attached_location, const Point &relative_point): | |
83 m_instance(NULL), | |
84 m_location(attached_location), | |
445
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
85 m_layer(NULL), |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
86 m_point(relative_point) { |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
87 } |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
88 GenericRendererNode::GenericRendererNode(Layer* attached_layer, const Point &relative_point): |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
89 m_instance(NULL), |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
90 m_location(NULL), |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
91 m_layer(attached_layer), |
23 | 92 m_point(relative_point) { |
93 } | |
94 GenericRendererNode::GenericRendererNode(const Point &attached_point): | |
95 m_instance(NULL), | |
96 m_location(NULL), | |
445
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
97 m_layer(NULL), |
23 | 98 m_point(attached_point) { |
99 } | |
100 GenericRendererNode::~GenericRendererNode() { | |
101 } | |
102 | |
26
70f41ea8e7db
fix compile errors in node setters...
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
25
diff
changeset
|
103 void GenericRendererNode::setAttached(Instance* attached_instance, Location* relative_location, const Point &relative_point) { |
25
fc6713d72b80
add setter for nodes
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
24
diff
changeset
|
104 m_instance = attached_instance; |
fc6713d72b80
add setter for nodes
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
24
diff
changeset
|
105 m_location = relative_location; |
fc6713d72b80
add setter for nodes
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
24
diff
changeset
|
106 m_point = relative_point; |
23 | 107 } |
26
70f41ea8e7db
fix compile errors in node setters...
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
25
diff
changeset
|
108 void GenericRendererNode::setAttached(Instance* attached_instance, Location* relative_location) { |
25
fc6713d72b80
add setter for nodes
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
24
diff
changeset
|
109 m_instance = attached_instance; |
fc6713d72b80
add setter for nodes
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
24
diff
changeset
|
110 m_location = relative_location; |
23 | 111 } |
112 void GenericRendererNode::setAttached(Instance* attached_instance, const Point &relative_point) { | |
25
fc6713d72b80
add setter for nodes
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
24
diff
changeset
|
113 m_instance = attached_instance; |
fc6713d72b80
add setter for nodes
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
24
diff
changeset
|
114 m_point = relative_point; |
23 | 115 } |
116 void GenericRendererNode::setAttached(Instance* attached_instance) { | |
25
fc6713d72b80
add setter for nodes
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
24
diff
changeset
|
117 m_instance = attached_instance; |
23 | 118 } |
26
70f41ea8e7db
fix compile errors in node setters...
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
25
diff
changeset
|
119 void GenericRendererNode::setAttached(Location* attached_location, const Point &relative_point) { |
25
fc6713d72b80
add setter for nodes
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
24
diff
changeset
|
120 m_instance = NULL; |
fc6713d72b80
add setter for nodes
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
24
diff
changeset
|
121 m_location = attached_location; |
fc6713d72b80
add setter for nodes
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
24
diff
changeset
|
122 m_point = relative_point; |
23 | 123 } |
26
70f41ea8e7db
fix compile errors in node setters...
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
25
diff
changeset
|
124 void GenericRendererNode::setAttached(Location* attached_location) { |
25
fc6713d72b80
add setter for nodes
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
24
diff
changeset
|
125 m_instance = NULL; |
fc6713d72b80
add setter for nodes
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
24
diff
changeset
|
126 m_location = attached_location; |
23 | 127 } |
445
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
128 void GenericRendererNode::setAttached(Layer* attached_layer) { |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
129 m_layer = attached_layer; |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
130 } |
23 | 131 void GenericRendererNode::setAttached(const Point &attached_point) { |
25
fc6713d72b80
add setter for nodes
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
24
diff
changeset
|
132 m_instance = NULL; |
fc6713d72b80
add setter for nodes
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
24
diff
changeset
|
133 m_location = NULL; |
fc6713d72b80
add setter for nodes
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
24
diff
changeset
|
134 m_point = attached_point; |
23 | 135 } |
136 | |
26
70f41ea8e7db
fix compile errors in node setters...
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
25
diff
changeset
|
137 void GenericRendererNode::setRelative(Location* relative_location) { |
25
fc6713d72b80
add setter for nodes
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
24
diff
changeset
|
138 if(m_instance == NULL) { |
fc6713d72b80
add setter for nodes
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
24
diff
changeset
|
139 throw NotSupported("No instance attached."); |
fc6713d72b80
add setter for nodes
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
24
diff
changeset
|
140 } |
fc6713d72b80
add setter for nodes
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
24
diff
changeset
|
141 m_location = relative_location; |
23 | 142 } |
26
70f41ea8e7db
fix compile errors in node setters...
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
25
diff
changeset
|
143 void GenericRendererNode::setRelative(Location* relative_location, Point relative_point) { |
25
fc6713d72b80
add setter for nodes
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
24
diff
changeset
|
144 if(m_instance == NULL) { |
fc6713d72b80
add setter for nodes
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
24
diff
changeset
|
145 throw NotSupported("No instance attached."); |
fc6713d72b80
add setter for nodes
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
24
diff
changeset
|
146 } |
fc6713d72b80
add setter for nodes
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
24
diff
changeset
|
147 m_location = relative_location; |
fc6713d72b80
add setter for nodes
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
24
diff
changeset
|
148 m_point = relative_point; |
23 | 149 } |
150 void GenericRendererNode::setRelative(const Point &relative_point) { | |
36
6f1227f4932b
Fixed and's and or's.
aldart@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
32
diff
changeset
|
151 if(m_instance == NULL || m_location == NULL) { |
25
fc6713d72b80
add setter for nodes
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
24
diff
changeset
|
152 throw NotSupported("No instance or location attached."); |
fc6713d72b80
add setter for nodes
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
24
diff
changeset
|
153 } |
fc6713d72b80
add setter for nodes
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
24
diff
changeset
|
154 m_point = relative_point; |
23 | 155 } |
156 | |
157 Instance* GenericRendererNode::getAttachedInstance() { | |
158 if(m_instance == NULL) { | |
24
cb87d40e9342
fix exceptions and cleanup code
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
23
diff
changeset
|
159 throw NotSupported("No instance attached."); |
23 | 160 } |
161 return m_instance; | |
162 } | |
163 Location* GenericRendererNode::getAttachedLocation() { | |
36
6f1227f4932b
Fixed and's and or's.
aldart@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
32
diff
changeset
|
164 if(m_instance != NULL || m_location == NULL) { |
24
cb87d40e9342
fix exceptions and cleanup code
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
23
diff
changeset
|
165 throw NotSupported("No location attached."); |
23 | 166 } |
167 return m_location; | |
168 } | |
445
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
169 Layer* GenericRendererNode::getAttachedLayer() { |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
170 if(m_layer == NULL) { |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
171 throw NotSupported("No layer attached."); |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
172 } |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
173 return m_layer; |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
174 } |
23 | 175 Point GenericRendererNode::getAttachedPoint() { |
36
6f1227f4932b
Fixed and's and or's.
aldart@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
32
diff
changeset
|
176 if(m_instance != NULL || m_location != NULL) { |
24
cb87d40e9342
fix exceptions and cleanup code
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
23
diff
changeset
|
177 throw NotSupported("No point attached."); |
23 | 178 } |
179 return m_point; | |
180 } | |
181 | |
182 Location* GenericRendererNode::getOffsetLocation() { | |
36
6f1227f4932b
Fixed and's and or's.
aldart@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
32
diff
changeset
|
183 if(m_instance == NULL || m_location == NULL) { |
24
cb87d40e9342
fix exceptions and cleanup code
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
23
diff
changeset
|
184 throw NotSupported("No location as offset used."); |
23 | 185 } |
186 return m_location; | |
187 } | |
188 Point GenericRendererNode::getOffsetPoint() { | |
36
6f1227f4932b
Fixed and's and or's.
aldart@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
32
diff
changeset
|
189 if(m_instance == NULL && m_location == NULL) { |
24
cb87d40e9342
fix exceptions and cleanup code
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
23
diff
changeset
|
190 throw NotSupported("No point as offset used."); |
23 | 191 } |
192 return m_point; | |
193 } | |
194 | |
195 Instance* GenericRendererNode::getInstance() { | |
196 return m_instance; | |
197 } | |
198 Location* GenericRendererNode::getLocation() { | |
199 return m_location; | |
200 } | |
445
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
201 Layer* GenericRendererNode::getLayer() { |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
202 return m_layer; |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
203 } |
23 | 204 Point GenericRendererNode::getPoint() { |
205 return m_point; | |
206 } | |
207 | |
482
16c2b3ee59ce
* Merged the view performance branch back into trunk. fixes[ticket:419]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
445
diff
changeset
|
208 Point GenericRendererNode::getCalculatedPoint(Camera* cam, Layer* layer) { |
23 | 209 ScreenPoint p; |
210 if(m_instance != NULL) { | |
445
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
211 if(m_layer == NULL) { |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
212 m_layer = m_instance->getLocation().getLayer(); |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
213 } |
23 | 214 if(m_location != NULL) { |
215 p = cam->toScreenCoordinates(m_instance->getLocationRef().getMapCoordinates() + m_location->getMapCoordinates()); | |
445
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
216 } else { |
23 | 217 p = cam->toScreenCoordinates(m_instance->getLocation().getMapCoordinates()); |
218 } | |
445
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
219 } else if(m_location != NULL) { |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
220 if(m_layer == NULL) { |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
221 m_layer = m_location->getLayer(); |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
222 } |
23 | 223 p = cam->toScreenCoordinates(m_location->getMapCoordinates()); |
445
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
224 } else if(m_layer == NULL) { |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
225 const std::list<Layer*>& layers = cam->getRenderer("GenericRenderer")->getActiveLayers(); |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
226 std::list<Layer*>::const_iterator layer_it = layers.begin(); |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
227 for (; layer_it != layers.end(); ++layer_it) { |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
228 setAttached(*layer_it); |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
229 } |
23 | 230 } |
231 return Point(m_point.x + p.x, m_point.y + p.y); | |
232 } | |
233 | |
234 GenericRendererLineInfo::GenericRendererLineInfo(GenericRendererNode n1, GenericRendererNode n2, uint8_t r, uint8_t g, uint8_t b): | |
235 GenericRendererElementInfo(), | |
29
0cb049f291e1
make members private and prefix with m_
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
27
diff
changeset
|
236 m_edge1(n1), |
0cb049f291e1
make members private and prefix with m_
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
27
diff
changeset
|
237 m_edge2(n2), |
0cb049f291e1
make members private and prefix with m_
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
27
diff
changeset
|
238 m_red(r), |
0cb049f291e1
make members private and prefix with m_
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
27
diff
changeset
|
239 m_green(g), |
0cb049f291e1
make members private and prefix with m_
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
27
diff
changeset
|
240 m_blue(b) { |
23 | 241 } |
482
16c2b3ee59ce
* Merged the view performance branch back into trunk. fixes[ticket:419]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
445
diff
changeset
|
242 void GenericRendererLineInfo::render(Camera* cam, Layer* layer, RenderList& instances, RenderBackend* renderbackend, ImagePool* imagepool, AnimationPool* animpool) { |
16c2b3ee59ce
* Merged the view performance branch back into trunk. fixes[ticket:419]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
445
diff
changeset
|
243 Point p1 = m_edge1.getCalculatedPoint(cam, layer); |
16c2b3ee59ce
* Merged the view performance branch back into trunk. fixes[ticket:419]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
445
diff
changeset
|
244 Point p2 = m_edge2.getCalculatedPoint(cam, layer); |
445
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
245 if(m_edge1.getLayer() == layer) { |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
246 renderbackend->drawLine(p1, p2, m_red, m_green, m_blue); |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
247 } |
23 | 248 } |
430
ad1f09d954f9
Added the ability to render a vertex on the screen. The vertex is represented by a small square. fixes[t:455]
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
181
diff
changeset
|
249 |
29
0cb049f291e1
make members private and prefix with m_
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
27
diff
changeset
|
250 GenericRendererPointInfo::GenericRendererPointInfo(GenericRendererNode anchor, uint8_t r, uint8_t g, uint8_t b): |
23 | 251 GenericRendererElementInfo(), |
29
0cb049f291e1
make members private and prefix with m_
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
27
diff
changeset
|
252 m_anchor(anchor), |
0cb049f291e1
make members private and prefix with m_
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
27
diff
changeset
|
253 m_red(r), |
0cb049f291e1
make members private and prefix with m_
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
27
diff
changeset
|
254 m_green(g), |
0cb049f291e1
make members private and prefix with m_
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
27
diff
changeset
|
255 m_blue(b) { |
23 | 256 } |
482
16c2b3ee59ce
* Merged the view performance branch back into trunk. fixes[ticket:419]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
445
diff
changeset
|
257 void GenericRendererPointInfo::render(Camera* cam, Layer* layer, RenderList& instances, RenderBackend* renderbackend, ImagePool* imagepool, AnimationPool* animpool) { |
16c2b3ee59ce
* Merged the view performance branch back into trunk. fixes[ticket:419]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
445
diff
changeset
|
258 Point p = m_anchor.getCalculatedPoint(cam, layer); |
445
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
259 if(m_anchor.getLayer() == layer) { |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
260 renderbackend->putPixel(p.x, p.y, m_red, m_green, m_blue); |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
261 } |
23 | 262 } |
430
ad1f09d954f9
Added the ability to render a vertex on the screen. The vertex is represented by a small square. fixes[t:455]
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
181
diff
changeset
|
263 |
23 | 264 GenericRendererQuadInfo::GenericRendererQuadInfo(GenericRendererNode n1, GenericRendererNode n2, GenericRendererNode n3, GenericRendererNode n4, uint8_t r, uint8_t g, uint8_t b): |
265 GenericRendererElementInfo(), | |
29
0cb049f291e1
make members private and prefix with m_
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
27
diff
changeset
|
266 m_edge1(n1), |
0cb049f291e1
make members private and prefix with m_
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
27
diff
changeset
|
267 m_edge2(n2), |
0cb049f291e1
make members private and prefix with m_
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
27
diff
changeset
|
268 m_edge3(n3), |
0cb049f291e1
make members private and prefix with m_
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
27
diff
changeset
|
269 m_edge4(n4), |
0cb049f291e1
make members private and prefix with m_
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
27
diff
changeset
|
270 m_red(r), |
0cb049f291e1
make members private and prefix with m_
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
27
diff
changeset
|
271 m_green(g), |
0cb049f291e1
make members private and prefix with m_
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
27
diff
changeset
|
272 m_blue(b) { |
23 | 273 } |
482
16c2b3ee59ce
* Merged the view performance branch back into trunk. fixes[ticket:419]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
445
diff
changeset
|
274 void GenericRendererQuadInfo::render(Camera* cam, Layer* layer, RenderList& instances, RenderBackend* renderbackend, ImagePool* imagepool, AnimationPool* animpool) { |
16c2b3ee59ce
* Merged the view performance branch back into trunk. fixes[ticket:419]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
445
diff
changeset
|
275 Point p1 = m_edge1.getCalculatedPoint(cam, layer); |
16c2b3ee59ce
* Merged the view performance branch back into trunk. fixes[ticket:419]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
445
diff
changeset
|
276 Point p2 = m_edge2.getCalculatedPoint(cam, layer); |
16c2b3ee59ce
* Merged the view performance branch back into trunk. fixes[ticket:419]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
445
diff
changeset
|
277 Point p3 = m_edge3.getCalculatedPoint(cam, layer); |
16c2b3ee59ce
* Merged the view performance branch back into trunk. fixes[ticket:419]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
445
diff
changeset
|
278 Point p4 = m_edge4.getCalculatedPoint(cam, layer); |
445
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
279 if(m_edge1.getLayer() == layer) { |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
280 renderbackend->drawQuad(p1, p2, p3, p4, m_red, m_green, m_blue); |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
281 } |
23 | 282 } |
430
ad1f09d954f9
Added the ability to render a vertex on the screen. The vertex is represented by a small square. fixes[t:455]
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
181
diff
changeset
|
283 |
ad1f09d954f9
Added the ability to render a vertex on the screen. The vertex is represented by a small square. fixes[t:455]
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
181
diff
changeset
|
284 GenericRendererVertexInfo::GenericRendererVertexInfo(GenericRendererNode center, int size, uint8_t r, uint8_t g, uint8_t b): |
ad1f09d954f9
Added the ability to render a vertex on the screen. The vertex is represented by a small square. fixes[t:455]
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
181
diff
changeset
|
285 GenericRendererElementInfo(), |
ad1f09d954f9
Added the ability to render a vertex on the screen. The vertex is represented by a small square. fixes[t:455]
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
181
diff
changeset
|
286 m_center(center), |
ad1f09d954f9
Added the ability to render a vertex on the screen. The vertex is represented by a small square. fixes[t:455]
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
181
diff
changeset
|
287 m_size(size), |
ad1f09d954f9
Added the ability to render a vertex on the screen. The vertex is represented by a small square. fixes[t:455]
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
181
diff
changeset
|
288 m_red(r), |
ad1f09d954f9
Added the ability to render a vertex on the screen. The vertex is represented by a small square. fixes[t:455]
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
181
diff
changeset
|
289 m_green(g), |
ad1f09d954f9
Added the ability to render a vertex on the screen. The vertex is represented by a small square. fixes[t:455]
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
181
diff
changeset
|
290 m_blue(b) { |
ad1f09d954f9
Added the ability to render a vertex on the screen. The vertex is represented by a small square. fixes[t:455]
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
181
diff
changeset
|
291 } |
482
16c2b3ee59ce
* Merged the view performance branch back into trunk. fixes[ticket:419]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
445
diff
changeset
|
292 void GenericRendererVertexInfo::render(Camera* cam, Layer* layer, RenderList& instances, RenderBackend* renderbackend, ImagePool* imagepool, AnimationPool* animpool) { |
16c2b3ee59ce
* Merged the view performance branch back into trunk. fixes[ticket:419]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
445
diff
changeset
|
293 Point p = m_center.getCalculatedPoint(cam, layer); |
445
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
294 if(m_center.getLayer() == layer) { |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
295 renderbackend->drawVertex(p, m_size, m_red, m_green, m_blue); |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
296 } |
430
ad1f09d954f9
Added the ability to render a vertex on the screen. The vertex is represented by a small square. fixes[t:455]
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
181
diff
changeset
|
297 } |
ad1f09d954f9
Added the ability to render a vertex on the screen. The vertex is represented by a small square. fixes[t:455]
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
181
diff
changeset
|
298 |
29
0cb049f291e1
make members private and prefix with m_
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
27
diff
changeset
|
299 GenericRendererImageInfo::GenericRendererImageInfo(GenericRendererNode anchor, int image): |
23 | 300 GenericRendererElementInfo(), |
29
0cb049f291e1
make members private and prefix with m_
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
27
diff
changeset
|
301 m_anchor(anchor), |
0cb049f291e1
make members private and prefix with m_
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
27
diff
changeset
|
302 m_image(image) { |
23 | 303 } |
482
16c2b3ee59ce
* Merged the view performance branch back into trunk. fixes[ticket:419]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
445
diff
changeset
|
304 void GenericRendererImageInfo::render(Camera* cam, Layer* layer, RenderList& instances, RenderBackend* renderbackend, ImagePool* imagepool, AnimationPool* animpool) { |
16c2b3ee59ce
* Merged the view performance branch back into trunk. fixes[ticket:419]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
445
diff
changeset
|
305 Point p = m_anchor.getCalculatedPoint(cam, layer); |
445
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
306 if(m_anchor.getLayer() == layer) { |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
307 Image* img = &imagepool->getImage(m_image); |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
308 Rect r; |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
309 r.x = p.x-img->getWidth()/2; |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
310 r.y = p.y-img->getHeight()/2; |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
311 r.w = img->getWidth(); |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
312 r.h = img->getHeight(); |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
313 img->render(r); |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
314 } |
23 | 315 } |
430
ad1f09d954f9
Added the ability to render a vertex on the screen. The vertex is represented by a small square. fixes[t:455]
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
181
diff
changeset
|
316 |
29
0cb049f291e1
make members private and prefix with m_
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
27
diff
changeset
|
317 GenericRendererAnimationInfo::GenericRendererAnimationInfo(GenericRendererNode anchor, int animation): |
23 | 318 GenericRendererElementInfo(), |
29
0cb049f291e1
make members private and prefix with m_
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
27
diff
changeset
|
319 m_anchor(anchor), |
31
9a9f4447af7c
add animation renderer
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
30
diff
changeset
|
320 m_animation(animation), |
181
56ac89189bc4
fixed time handling in fife:
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
105
diff
changeset
|
321 m_start_time(TimeManager::instance()->getTime()), |
31
9a9f4447af7c
add animation renderer
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
30
diff
changeset
|
322 m_time_scale(1.0) { |
23 | 323 } |
482
16c2b3ee59ce
* Merged the view performance branch back into trunk. fixes[ticket:419]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
445
diff
changeset
|
324 void GenericRendererAnimationInfo::render(Camera* cam, Layer* layer, RenderList& instances, RenderBackend* renderbackend, ImagePool* imagepool, AnimationPool* animpool) { |
16c2b3ee59ce
* Merged the view performance branch back into trunk. fixes[ticket:419]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
445
diff
changeset
|
325 Point p = m_anchor.getCalculatedPoint(cam, layer); |
445
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
326 if(m_anchor.getLayer() == layer) { |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
327 Animation& animation = animpool->getAnimation(m_animation); |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
328 int animtime = scaleTime(m_time_scale, TimeManager::instance()->getTime() - m_start_time) % animation.getDuration(); |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
329 Image* img = animation.getFrameByTimestamp(animtime); |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
330 Rect r; |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
331 r.x = p.x-img->getWidth()/2; |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
332 r.y = p.y-img->getHeight()/2; |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
333 r.w = img->getWidth(); |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
334 r.h = img->getHeight(); |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
335 img->render(r); |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
336 } |
23 | 337 } |
430
ad1f09d954f9
Added the ability to render a vertex on the screen. The vertex is represented by a small square. fixes[t:455]
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
181
diff
changeset
|
338 |
29
0cb049f291e1
make members private and prefix with m_
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
27
diff
changeset
|
339 GenericRendererTextInfo::GenericRendererTextInfo(GenericRendererNode anchor, AbstractFont* font, std::string text): |
23 | 340 GenericRendererElementInfo(), |
29
0cb049f291e1
make members private and prefix with m_
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
27
diff
changeset
|
341 m_anchor(anchor), |
0cb049f291e1
make members private and prefix with m_
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
27
diff
changeset
|
342 m_font(font), |
0cb049f291e1
make members private and prefix with m_
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
27
diff
changeset
|
343 m_text(text) { |
23 | 344 } |
482
16c2b3ee59ce
* Merged the view performance branch back into trunk. fixes[ticket:419]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
445
diff
changeset
|
345 void GenericRendererTextInfo::render(Camera* cam, Layer* layer, RenderList& instances, RenderBackend* renderbackend, ImagePool* imagepool, AnimationPool* animpool) { |
16c2b3ee59ce
* Merged the view performance branch back into trunk. fixes[ticket:419]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
445
diff
changeset
|
346 Point p = m_anchor.getCalculatedPoint(cam, layer); |
445
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
347 if(m_anchor.getLayer() == layer) { |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
348 Image* img = m_font->getAsImageMultiline(m_text); |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
349 Rect r; |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
350 r.x = p.x-img->getWidth()/2; |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
351 r.y = p.y-img->getHeight()/2; |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
352 r.w = img->getWidth(); |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
353 r.h = img->getHeight(); |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
354 img->render(r); |
f855809822cf
* Fixed GenericRenderer, now it only render to a specific layer. If the node is only a point then it used the last active layer. fixes #[ticket:458]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
430
diff
changeset
|
355 } |
23 | 356 } |
430
ad1f09d954f9
Added the ability to render a vertex on the screen. The vertex is represented by a small square. fixes[t:455]
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
181
diff
changeset
|
357 |
23 | 358 GenericRenderer* GenericRenderer::getInstance(IRendererContainer* cnt) { |
359 return dynamic_cast<GenericRenderer*>(cnt->getRenderer("GenericRenderer")); | |
360 } | |
430
ad1f09d954f9
Added the ability to render a vertex on the screen. The vertex is represented by a small square. fixes[t:455]
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
181
diff
changeset
|
361 |
27
788cb9525b2f
add image and text renderer to generic renderer
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
26
diff
changeset
|
362 GenericRenderer::GenericRenderer(RenderBackend* renderbackend, int position, ImagePool* imagepool, AnimationPool* animpool): |
23 | 363 RendererBase(renderbackend, position), |
27
788cb9525b2f
add image and text renderer to generic renderer
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
26
diff
changeset
|
364 m_imagepool(imagepool), |
788cb9525b2f
add image and text renderer to generic renderer
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
26
diff
changeset
|
365 m_animationpool(animpool), |
32
75b6394ced14
* remove geometric renderer, its not replaced by the more functional generic renderern
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
31
diff
changeset
|
366 m_groups() { |
23 | 367 setEnabled(false); |
368 } | |
369 | |
370 GenericRenderer::GenericRenderer(const GenericRenderer& old): | |
30
9c3f37432a28
fix clone constructor
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
29
diff
changeset
|
371 RendererBase(old), |
9c3f37432a28
fix clone constructor
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
29
diff
changeset
|
372 m_imagepool(old.m_imagepool), |
9c3f37432a28
fix clone constructor
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
29
diff
changeset
|
373 m_animationpool(old.m_animationpool), |
32
75b6394ced14
* remove geometric renderer, its not replaced by the more functional generic renderern
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
31
diff
changeset
|
374 m_groups() { |
23 | 375 setEnabled(false); |
376 } | |
377 | |
378 RendererBase* GenericRenderer::clone() { | |
379 return new GenericRenderer(*this); | |
380 } | |
381 | |
382 GenericRenderer::~GenericRenderer() { | |
383 } | |
105
2241b0d5379e
use strings as grouping in generic renderer, easier for the clients...
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
46
diff
changeset
|
384 void GenericRenderer::addLine(const std::string &group, GenericRendererNode n1, GenericRendererNode n2, uint8_t r, uint8_t g, uint8_t b) { |
23 | 385 GenericRendererElementInfo* info = new GenericRendererLineInfo(n1, n2, r, g, b); |
32
75b6394ced14
* remove geometric renderer, its not replaced by the more functional generic renderern
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
31
diff
changeset
|
386 m_groups[group].push_back(info); |
23 | 387 } |
105
2241b0d5379e
use strings as grouping in generic renderer, easier for the clients...
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
46
diff
changeset
|
388 void GenericRenderer::addPoint(const std::string &group, GenericRendererNode n, uint8_t r, uint8_t g, uint8_t b) { |
23 | 389 GenericRendererElementInfo* info = new GenericRendererPointInfo(n, r, g, b); |
32
75b6394ced14
* remove geometric renderer, its not replaced by the more functional generic renderern
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
31
diff
changeset
|
390 m_groups[group].push_back(info); |
23 | 391 } |
105
2241b0d5379e
use strings as grouping in generic renderer, easier for the clients...
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
46
diff
changeset
|
392 void GenericRenderer::addQuad(const std::string &group, GenericRendererNode n1, GenericRendererNode n2, GenericRendererNode n3, GenericRendererNode n4, uint8_t r, uint8_t g, uint8_t b) { |
23 | 393 GenericRendererElementInfo* info = new GenericRendererQuadInfo(n1, n2, n3, n4, r, g, b); |
32
75b6394ced14
* remove geometric renderer, its not replaced by the more functional generic renderern
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
31
diff
changeset
|
394 m_groups[group].push_back(info); |
23 | 395 } |
430
ad1f09d954f9
Added the ability to render a vertex on the screen. The vertex is represented by a small square. fixes[t:455]
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
181
diff
changeset
|
396 void GenericRenderer::addVertex(const std::string &group, GenericRendererNode n, int size, uint8_t r, uint8_t g, uint8_t b) { |
ad1f09d954f9
Added the ability to render a vertex on the screen. The vertex is represented by a small square. fixes[t:455]
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
181
diff
changeset
|
397 GenericRendererElementInfo* info = new GenericRendererVertexInfo(n, size, r, g, b); |
ad1f09d954f9
Added the ability to render a vertex on the screen. The vertex is represented by a small square. fixes[t:455]
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
181
diff
changeset
|
398 m_groups[group].push_back(info); |
ad1f09d954f9
Added the ability to render a vertex on the screen. The vertex is represented by a small square. fixes[t:455]
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
181
diff
changeset
|
399 } |
105
2241b0d5379e
use strings as grouping in generic renderer, easier for the clients...
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
46
diff
changeset
|
400 void GenericRenderer::addText(const std::string &group, GenericRendererNode n, AbstractFont* font, const std::string &text) { |
23 | 401 GenericRendererElementInfo* info = new GenericRendererTextInfo(n, font, text); |
32
75b6394ced14
* remove geometric renderer, its not replaced by the more functional generic renderern
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
31
diff
changeset
|
402 m_groups[group].push_back(info); |
23 | 403 } |
105
2241b0d5379e
use strings as grouping in generic renderer, easier for the clients...
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
46
diff
changeset
|
404 void GenericRenderer::addImage(const std::string &group, GenericRendererNode n, int image) { |
23 | 405 GenericRendererElementInfo* info = new GenericRendererImageInfo(n, image); |
32
75b6394ced14
* remove geometric renderer, its not replaced by the more functional generic renderern
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
31
diff
changeset
|
406 m_groups[group].push_back(info); |
23 | 407 } |
105
2241b0d5379e
use strings as grouping in generic renderer, easier for the clients...
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
46
diff
changeset
|
408 void GenericRenderer::addAnimation(const std::string &group, GenericRendererNode n, int animation) { |
23 | 409 GenericRendererElementInfo* info = new GenericRendererAnimationInfo(n, animation); |
32
75b6394ced14
* remove geometric renderer, its not replaced by the more functional generic renderern
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
31
diff
changeset
|
410 m_groups[group].push_back(info); |
23 | 411 } |
430
ad1f09d954f9
Added the ability to render a vertex on the screen. The vertex is represented by a small square. fixes[t:455]
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
181
diff
changeset
|
412 |
105
2241b0d5379e
use strings as grouping in generic renderer, easier for the clients...
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
46
diff
changeset
|
413 void GenericRenderer::removeAll(const std::string &group) { |
32
75b6394ced14
* remove geometric renderer, its not replaced by the more functional generic renderern
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
31
diff
changeset
|
414 std::vector<GenericRendererElementInfo*>::const_iterator info_it = m_groups[group].begin(); |
75b6394ced14
* remove geometric renderer, its not replaced by the more functional generic renderern
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
31
diff
changeset
|
415 for (;info_it != m_groups[group].end(); ++info_it) { |
24
cb87d40e9342
fix exceptions and cleanup code
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
23
diff
changeset
|
416 delete *info_it; |
cb87d40e9342
fix exceptions and cleanup code
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
23
diff
changeset
|
417 } |
32
75b6394ced14
* remove geometric renderer, its not replaced by the more functional generic renderern
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
31
diff
changeset
|
418 m_groups[group].clear(); |
75b6394ced14
* remove geometric renderer, its not replaced by the more functional generic renderern
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
31
diff
changeset
|
419 m_groups.erase(group); |
23 | 420 } |
421 | |
482
16c2b3ee59ce
* Merged the view performance branch back into trunk. fixes[ticket:419]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
445
diff
changeset
|
422 void GenericRenderer::render(Camera* cam, Layer* layer, RenderList& instances) { |
105
2241b0d5379e
use strings as grouping in generic renderer, easier for the clients...
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
46
diff
changeset
|
423 std::map<std::string, std::vector<GenericRendererElementInfo*> >::iterator group_it = m_groups.begin(); |
32
75b6394ced14
* remove geometric renderer, its not replaced by the more functional generic renderern
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
31
diff
changeset
|
424 for(; group_it != m_groups.end(); ++group_it) { |
75b6394ced14
* remove geometric renderer, its not replaced by the more functional generic renderern
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
31
diff
changeset
|
425 std::vector<GenericRendererElementInfo*>::const_iterator info_it = group_it->second.begin(); |
75b6394ced14
* remove geometric renderer, its not replaced by the more functional generic renderern
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
31
diff
changeset
|
426 for (;info_it != group_it->second.end(); ++info_it) { |
75b6394ced14
* remove geometric renderer, its not replaced by the more functional generic renderern
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
31
diff
changeset
|
427 (*info_it)->render(cam, layer, instances, m_renderbackend, m_imagepool, m_animationpool); |
75b6394ced14
* remove geometric renderer, its not replaced by the more functional generic renderern
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
31
diff
changeset
|
428 } |
23 | 429 } |
430 } | |
431 } |