annotate engine/core/model/structures/layer.cpp @ 595:ea80b41c9bd7

- tested & applied patch by Helios - fixes API inconsistence and removed NotFound Exceptions for: - layer.getInstance() - model.getObjects() NOTE: - model.getObject() returned 0 if no objects were found, whereas model.getObjects() throws an exception (-> inconsistent)
author chewie@33b003aa-7bff-0310-803a-e67f0ece8222
date Sat, 21 Aug 2010 15:44:03 +0000
parents 16c2b3ee59ce
children 4f36c890b1dd
rev   line source
0
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
1 /***************************************************************************
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
2 * Copyright (C) 2005-2008 by the FIFE team *
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
3 * http://www.fifengine.de *
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
4 * This file is part of FIFE. *
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
5 * *
46
90005975cdbb * Final LGPL switch step by adjusting the file headers
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 6
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: 6
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: 6
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: 6
diff changeset
9 * version 2.1 of the License, or (at your option) any later version. *
0
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
10 * *
46
90005975cdbb * Final LGPL switch step by adjusting the file headers
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 6
diff changeset
11 * This library is distributed in the hope that it will be useful, *
0
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
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: 6
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: 6
diff changeset
14 * Lesser General Public License for more details. *
0
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
15 * *
46
90005975cdbb * Final LGPL switch step by adjusting the file headers
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 6
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: 6
diff changeset
17 * License along with this library; if not, write to the *
0
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
18 * Free Software Foundation, Inc., *
46
90005975cdbb * Final LGPL switch step by adjusting the file headers
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 6
diff changeset
19 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
0
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
20 ***************************************************************************/
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
21
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
22 // Standard C++ library includes
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
23
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
24 // 3rd party library includes
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
25 #include <SDL.h>
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
26
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
27 // FIFE includes
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
28 // These includes are split up in two parts, separated by one empty line
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
29 // First block: files included from the FIFE root src directory
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
30 // Second block: files included from the same folder
92
746df66978da * Fix by Sleek & GreyGhost
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 91
diff changeset
31 #include "util/log/logger.h"
0
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
32 #include "util/structures/purge.h"
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
33
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
34 #include "layer.h"
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
35 #include "instance.h"
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
36 #include "map.h"
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
37 #include "instancetree.h"
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
38
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
39 namespace FIFE {
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
40
92
746df66978da * Fix by Sleek & GreyGhost
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 91
diff changeset
41 static Logger _log(LM_STRUCTURES);
746df66978da * Fix by Sleek & GreyGhost
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 91
diff changeset
42
0
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
43 Layer::Layer(const std::string& identifier, Map* map, CellGrid* grid)
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
44 : m_id(identifier),
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
45 m_map(map),
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
46 m_instances_visibility(true),
356
ab41334e8a57 Added or1andov's code with a few adjustments to fix instance transparencies fixed[t:378]
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 255
diff changeset
47 m_transparency(0),
0
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
48 m_instanceTree(new InstanceTree()),
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
49 m_grid(grid),
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
50 m_pathingstrategy(CELL_EDGES_ONLY),
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
51 m_changelisteners(),
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
52 m_changedinstances(),
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
53 m_changed(false) {
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
54 }
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
55
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
56 Layer::~Layer() {
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
57 purge(m_instances);
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
58 delete m_instanceTree;
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
59 }
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
60
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
61 bool Layer::hasInstances() const {
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
62 return !m_instances.empty();
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
63 }
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
64
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
65 Instance* Layer::createInstance(Object* object, const ModelCoordinate& p, const std::string& id) {
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
66 ExactModelCoordinate emc(static_cast<double>(p.x), static_cast<double>(p.y), static_cast<double>(p.z));
356
ab41334e8a57 Added or1andov's code with a few adjustments to fix instance transparencies fixed[t:378]
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 255
diff changeset
67 return createInstance(object, emc, id);
0
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
68 }
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
69
356
ab41334e8a57 Added or1andov's code with a few adjustments to fix instance transparencies fixed[t:378]
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 255
diff changeset
70 Instance* Layer::createInstance(Object* object, const ExactModelCoordinate& p, const std::string& id) {
482
16c2b3ee59ce * Merged the view performance branch back into trunk. fixes[ticket:419]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 356
diff changeset
71 Location location;
16c2b3ee59ce * Merged the view performance branch back into trunk. fixes[ticket:419]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 356
diff changeset
72 location.setLayer(this);
16c2b3ee59ce * Merged the view performance branch back into trunk. fixes[ticket:419]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 356
diff changeset
73 location.setExactLayerCoordinates(p);
0
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
74
482
16c2b3ee59ce * Merged the view performance branch back into trunk. fixes[ticket:419]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 356
diff changeset
75 Instance* instance = new Instance(object, location, id);
16c2b3ee59ce * Merged the view performance branch back into trunk. fixes[ticket:419]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 356
diff changeset
76 if(instance->isActive()) {
16c2b3ee59ce * Merged the view performance branch back into trunk. fixes[ticket:419]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 356
diff changeset
77 setInstanceActivityStatus(instance, instance->isActive());
16c2b3ee59ce * Merged the view performance branch back into trunk. fixes[ticket:419]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 356
diff changeset
78 }
0
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
79 m_instances.push_back(instance);
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
80 m_instanceTree->addInstance(instance);
356
ab41334e8a57 Added or1andov's code with a few adjustments to fix instance transparencies fixed[t:378]
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 255
diff changeset
81
0
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
82 std::vector<LayerChangeListener*>::iterator i = m_changelisteners.begin();
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
83 while (i != m_changelisteners.end()) {
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
84 (*i)->onInstanceCreate(this, instance);
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
85 ++i;
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
86 }
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
87 m_changed = true;
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
88 return instance;
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
89 }
356
ab41334e8a57 Added or1andov's code with a few adjustments to fix instance transparencies fixed[t:378]
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 255
diff changeset
90
90
9855464762c1 Layer::addInstance for moving instances around layers. Useful when we have multi-level buildings.
Sleek@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 46
diff changeset
91 bool Layer::addInstance(Instance* instance, const ExactModelCoordinate& p){
91
e7b55b2b398f Corrected Layer::addInstance() to return appropriate bool. Added the function to layer.i for swig
Sleek@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 90
diff changeset
92 if( !instance ){
90
9855464762c1 Layer::addInstance for moving instances around layers. Useful when we have multi-level buildings.
Sleek@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 46
diff changeset
93 FL_ERR(_log, "Tried to add an instance to layer, but given instance is invalid");
91
e7b55b2b398f Corrected Layer::addInstance() to return appropriate bool. Added the function to layer.i for swig
Sleek@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 90
diff changeset
94 return false;
e7b55b2b398f Corrected Layer::addInstance() to return appropriate bool. Added the function to layer.i for swig
Sleek@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 90
diff changeset
95 }
356
ab41334e8a57 Added or1andov's code with a few adjustments to fix instance transparencies fixed[t:378]
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 255
diff changeset
96
482
16c2b3ee59ce * Merged the view performance branch back into trunk. fixes[ticket:419]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 356
diff changeset
97 Location location;
16c2b3ee59ce * Merged the view performance branch back into trunk. fixes[ticket:419]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 356
diff changeset
98 location.setLayer(this);
16c2b3ee59ce * Merged the view performance branch back into trunk. fixes[ticket:419]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 356
diff changeset
99 location.setExactLayerCoordinates(p);
16c2b3ee59ce * Merged the view performance branch back into trunk. fixes[ticket:419]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 356
diff changeset
100 instance->setLocation(location);
90
9855464762c1 Layer::addInstance for moving instances around layers. Useful when we have multi-level buildings.
Sleek@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 46
diff changeset
101
9855464762c1 Layer::addInstance for moving instances around layers. Useful when we have multi-level buildings.
Sleek@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 46
diff changeset
102 m_instances.push_back(instance);
9855464762c1 Layer::addInstance for moving instances around layers. Useful when we have multi-level buildings.
Sleek@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 46
diff changeset
103 m_instanceTree->addInstance(instance);
482
16c2b3ee59ce * Merged the view performance branch back into trunk. fixes[ticket:419]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 356
diff changeset
104 if(instance->isActive()) {
16c2b3ee59ce * Merged the view performance branch back into trunk. fixes[ticket:419]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 356
diff changeset
105 setInstanceActivityStatus(instance, instance->isActive());
16c2b3ee59ce * Merged the view performance branch back into trunk. fixes[ticket:419]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 356
diff changeset
106 }
90
9855464762c1 Layer::addInstance for moving instances around layers. Useful when we have multi-level buildings.
Sleek@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 46
diff changeset
107
9855464762c1 Layer::addInstance for moving instances around layers. Useful when we have multi-level buildings.
Sleek@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 46
diff changeset
108 std::vector<LayerChangeListener*>::iterator i = m_changelisteners.begin();
9855464762c1 Layer::addInstance for moving instances around layers. Useful when we have multi-level buildings.
Sleek@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 46
diff changeset
109 while (i != m_changelisteners.end()) {
9855464762c1 Layer::addInstance for moving instances around layers. Useful when we have multi-level buildings.
Sleek@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 46
diff changeset
110 (*i)->onInstanceCreate(this, instance);
9855464762c1 Layer::addInstance for moving instances around layers. Useful when we have multi-level buildings.
Sleek@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 46
diff changeset
111 ++i;
9855464762c1 Layer::addInstance for moving instances around layers. Useful when we have multi-level buildings.
Sleek@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 46
diff changeset
112 }
9855464762c1 Layer::addInstance for moving instances around layers. Useful when we have multi-level buildings.
Sleek@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 46
diff changeset
113 m_changed = true;
91
e7b55b2b398f Corrected Layer::addInstance() to return appropriate bool. Added the function to layer.i for swig
Sleek@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 90
diff changeset
114 return true;
90
9855464762c1 Layer::addInstance for moving instances around layers. Useful when we have multi-level buildings.
Sleek@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 46
diff changeset
115 }
356
ab41334e8a57 Added or1andov's code with a few adjustments to fix instance transparencies fixed[t:378]
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 255
diff changeset
116
0
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
117 void Layer::deleteInstance(Instance* instance) {
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
118 std::vector<LayerChangeListener*>::iterator i = m_changelisteners.begin();
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
119 while (i != m_changelisteners.end()) {
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
120 (*i)->onInstanceDelete(this, instance);
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
121 ++i;
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
122 }
482
16c2b3ee59ce * Merged the view performance branch back into trunk. fixes[ticket:419]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 356
diff changeset
123 setInstanceActivityStatus(instance, false);
0
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
124 std::vector<Instance*>::iterator it = m_instances.begin();
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
125 for(; it != m_instances.end(); ++it) {
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
126 if(*it == instance) {
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
127 m_instanceTree->removeInstance(*it);
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
128 delete *it;
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
129 m_instances.erase(it);
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
130 break;
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
131 }
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
132 }
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
133 m_changed = true;
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
134 }
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
135
482
16c2b3ee59ce * Merged the view performance branch back into trunk. fixes[ticket:419]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 356
diff changeset
136 void Layer::setInstanceActivityStatus(Instance* instance, bool active) {
16c2b3ee59ce * Merged the view performance branch back into trunk. fixes[ticket:419]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 356
diff changeset
137 if(active) {
16c2b3ee59ce * Merged the view performance branch back into trunk. fixes[ticket:419]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 356
diff changeset
138 m_active_instances.insert(instance);
16c2b3ee59ce * Merged the view performance branch back into trunk. fixes[ticket:419]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 356
diff changeset
139 } else {
16c2b3ee59ce * Merged the view performance branch back into trunk. fixes[ticket:419]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 356
diff changeset
140 m_active_instances.erase(instance);
16c2b3ee59ce * Merged the view performance branch back into trunk. fixes[ticket:419]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 356
diff changeset
141 }
16c2b3ee59ce * Merged the view performance branch back into trunk. fixes[ticket:419]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 356
diff changeset
142 }
16c2b3ee59ce * Merged the view performance branch back into trunk. fixes[ticket:419]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 356
diff changeset
143
0
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
144 Instance* Layer::getInstance(const std::string& id) {
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
145 std::vector<Instance*>::iterator it = m_instances.begin();
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
146 for(; it != m_instances.end(); ++it) {
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
147 if((*it)->getId() == id)
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
148 return *it;
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
149 }
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
150
595
ea80b41c9bd7 - tested & applied patch by Helios
chewie@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 482
diff changeset
151 return 0;
0
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
152 }
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
153
99
64e7fe3d4288 - added possibility to change instance ids
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 92
diff changeset
154 std::vector<Instance*> Layer::getInstances(const std::string& id) {
64e7fe3d4288 - added possibility to change instance ids
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 92
diff changeset
155 std::vector<Instance*> matching_instances;
64e7fe3d4288 - added possibility to change instance ids
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 92
diff changeset
156 std::vector<Instance*>::iterator it = m_instances.begin();
64e7fe3d4288 - added possibility to change instance ids
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 92
diff changeset
157 for(; it != m_instances.end(); ++it) {
64e7fe3d4288 - added possibility to change instance ids
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 92
diff changeset
158 if((*it)->getId() == id)
64e7fe3d4288 - added possibility to change instance ids
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 92
diff changeset
159 matching_instances.push_back(*it);
64e7fe3d4288 - added possibility to change instance ids
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 92
diff changeset
160 }
64e7fe3d4288 - added possibility to change instance ids
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 92
diff changeset
161 return matching_instances;
64e7fe3d4288 - added possibility to change instance ids
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 92
diff changeset
162 }
64e7fe3d4288 - added possibility to change instance ids
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 92
diff changeset
163
255
51cc05d862f2 Merged editor_rewrite branch to trunk.
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 181
diff changeset
164 std::vector<Instance*> Layer::getInstancesAt(Location& loc, bool use_exactcoordinates) {
51cc05d862f2 Merged editor_rewrite branch to trunk.
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 181
diff changeset
165 std::vector<Instance*> matching_instances;
51cc05d862f2 Merged editor_rewrite branch to trunk.
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 181
diff changeset
166 std::vector<Instance*>::iterator it = m_instances.begin();
51cc05d862f2 Merged editor_rewrite branch to trunk.
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 181
diff changeset
167
51cc05d862f2 Merged editor_rewrite branch to trunk.
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 181
diff changeset
168 for(; it != m_instances.end(); ++it) {
51cc05d862f2 Merged editor_rewrite branch to trunk.
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 181
diff changeset
169 if (use_exactcoordinates) {
51cc05d862f2 Merged editor_rewrite branch to trunk.
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 181
diff changeset
170 if ((*it)->getLocationRef().getExactLayerCoordinatesRef() == loc.getExactLayerCoordinatesRef()) {
51cc05d862f2 Merged editor_rewrite branch to trunk.
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 181
diff changeset
171 matching_instances.push_back(*it);
51cc05d862f2 Merged editor_rewrite branch to trunk.
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 181
diff changeset
172 }
51cc05d862f2 Merged editor_rewrite branch to trunk.
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 181
diff changeset
173 } else {
51cc05d862f2 Merged editor_rewrite branch to trunk.
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 181
diff changeset
174 if ((*it)->getLocationRef().getLayerCoordinates() == loc.getLayerCoordinates()) {
51cc05d862f2 Merged editor_rewrite branch to trunk.
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 181
diff changeset
175 matching_instances.push_back(*it);
51cc05d862f2 Merged editor_rewrite branch to trunk.
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 181
diff changeset
176 }
51cc05d862f2 Merged editor_rewrite branch to trunk.
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 181
diff changeset
177 }
51cc05d862f2 Merged editor_rewrite branch to trunk.
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 181
diff changeset
178 }
51cc05d862f2 Merged editor_rewrite branch to trunk.
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 181
diff changeset
179
51cc05d862f2 Merged editor_rewrite branch to trunk.
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 181
diff changeset
180 return matching_instances;
51cc05d862f2 Merged editor_rewrite branch to trunk.
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 181
diff changeset
181 }
51cc05d862f2 Merged editor_rewrite branch to trunk.
cheesesucker@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 181
diff changeset
182
0
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
183 void Layer::getMinMaxCoordinates(ModelCoordinate& min, ModelCoordinate& max, const Layer* layer) const {
6
61fdc090b0d4 both techdemo maps are now loaded correctly. Still segfaulting when scripts end
jasoka@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
184 if (!layer) {
0
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
185 layer = this;
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
186 }
356
ab41334e8a57 Added or1andov's code with a few adjustments to fix instance transparencies fixed[t:378]
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 255
diff changeset
187
6
61fdc090b0d4 both techdemo maps are now loaded correctly. Still segfaulting when scripts end
jasoka@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
188 bool first_found = false;
61fdc090b0d4 both techdemo maps are now loaded correctly. Still segfaulting when scripts end
jasoka@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
189 for (std::vector<Instance*>::const_iterator i = m_instances.begin(); i != m_instances.end(); ++i) {
61fdc090b0d4 both techdemo maps are now loaded correctly. Still segfaulting when scripts end
jasoka@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
190 if (!first_found) {
61fdc090b0d4 both techdemo maps are now loaded correctly. Still segfaulting when scripts end
jasoka@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
191 min = m_instances.front()->getLocationRef().getLayerCoordinates(layer);
61fdc090b0d4 both techdemo maps are now loaded correctly. Still segfaulting when scripts end
jasoka@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
192 max = min;
61fdc090b0d4 both techdemo maps are now loaded correctly. Still segfaulting when scripts end
jasoka@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
193 first_found = true;
61fdc090b0d4 both techdemo maps are now loaded correctly. Still segfaulting when scripts end
jasoka@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
194 } else {
61fdc090b0d4 both techdemo maps are now loaded correctly. Still segfaulting when scripts end
jasoka@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
195 ModelCoordinate coord = (*i)->getLocationRef().getLayerCoordinates(layer);
356
ab41334e8a57 Added or1andov's code with a few adjustments to fix instance transparencies fixed[t:378]
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 255
diff changeset
196
6
61fdc090b0d4 both techdemo maps are now loaded correctly. Still segfaulting when scripts end
jasoka@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
197 if(coord.x < min.x) {
61fdc090b0d4 both techdemo maps are now loaded correctly. Still segfaulting when scripts end
jasoka@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
198 min.x = coord.x;
61fdc090b0d4 both techdemo maps are now loaded correctly. Still segfaulting when scripts end
jasoka@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
199 }
356
ab41334e8a57 Added or1andov's code with a few adjustments to fix instance transparencies fixed[t:378]
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 255
diff changeset
200
6
61fdc090b0d4 both techdemo maps are now loaded correctly. Still segfaulting when scripts end
jasoka@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
201 if(coord.x > max.x) {
61fdc090b0d4 both techdemo maps are now loaded correctly. Still segfaulting when scripts end
jasoka@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
202 max.x = coord.x;
61fdc090b0d4 both techdemo maps are now loaded correctly. Still segfaulting when scripts end
jasoka@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
203 }
356
ab41334e8a57 Added or1andov's code with a few adjustments to fix instance transparencies fixed[t:378]
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 255
diff changeset
204
6
61fdc090b0d4 both techdemo maps are now loaded correctly. Still segfaulting when scripts end
jasoka@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
205 if(coord.y < min.y) {
61fdc090b0d4 both techdemo maps are now loaded correctly. Still segfaulting when scripts end
jasoka@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
206 min.y = coord.y;
61fdc090b0d4 both techdemo maps are now loaded correctly. Still segfaulting when scripts end
jasoka@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
207 }
356
ab41334e8a57 Added or1andov's code with a few adjustments to fix instance transparencies fixed[t:378]
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 255
diff changeset
208
6
61fdc090b0d4 both techdemo maps are now loaded correctly. Still segfaulting when scripts end
jasoka@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
209 if(coord.y > max.y) {
61fdc090b0d4 both techdemo maps are now loaded correctly. Still segfaulting when scripts end
jasoka@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
210 max.y = coord.y;
61fdc090b0d4 both techdemo maps are now loaded correctly. Still segfaulting when scripts end
jasoka@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
211 }
0
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
212 }
6
61fdc090b0d4 both techdemo maps are now loaded correctly. Still segfaulting when scripts end
jasoka@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
213 }
61fdc090b0d4 both techdemo maps are now loaded correctly. Still segfaulting when scripts end
jasoka@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
214 if (!first_found) {
61fdc090b0d4 both techdemo maps are now loaded correctly. Still segfaulting when scripts end
jasoka@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
215 min = ModelCoordinate();
61fdc090b0d4 both techdemo maps are now loaded correctly. Still segfaulting when scripts end
jasoka@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 0
diff changeset
216 max = min;
0
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
217 }
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
218 }
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
219
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
220 void Layer::setInstancesVisible(bool vis) {
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
221 m_instances_visibility = vis;
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
222 }
356
ab41334e8a57 Added or1andov's code with a few adjustments to fix instance transparencies fixed[t:378]
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 255
diff changeset
223
ab41334e8a57 Added or1andov's code with a few adjustments to fix instance transparencies fixed[t:378]
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 255
diff changeset
224 void Layer::setLayerTransparency(uint8_t transparency) {
ab41334e8a57 Added or1andov's code with a few adjustments to fix instance transparencies fixed[t:378]
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 255
diff changeset
225 m_transparency = transparency;
ab41334e8a57 Added or1andov's code with a few adjustments to fix instance transparencies fixed[t:378]
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 255
diff changeset
226 }
ab41334e8a57 Added or1andov's code with a few adjustments to fix instance transparencies fixed[t:378]
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 255
diff changeset
227
ab41334e8a57 Added or1andov's code with a few adjustments to fix instance transparencies fixed[t:378]
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 255
diff changeset
228 uint8_t Layer::getLayerTransparency() {
ab41334e8a57 Added or1andov's code with a few adjustments to fix instance transparencies fixed[t:378]
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 255
diff changeset
229 return m_transparency;
ab41334e8a57 Added or1andov's code with a few adjustments to fix instance transparencies fixed[t:378]
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 255
diff changeset
230 }
ab41334e8a57 Added or1andov's code with a few adjustments to fix instance transparencies fixed[t:378]
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 255
diff changeset
231
0
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
232 void Layer::toggleInstancesVisible() {
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
233 m_instances_visibility = !m_instances_visibility;
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
234 }
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
235
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
236 bool Layer::cellContainsBlockingInstance(const ModelCoordinate& cellCoordinate) {
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
237 std::list<Instance*> adjacentInstances;
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
238 m_instanceTree->findInstances(cellCoordinate, 0, 0, adjacentInstances);
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
239 bool blockingInstance = false;
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
240 for(std::list<Instance*>::const_iterator j = adjacentInstances.begin(); j != adjacentInstances.end(); ++j) {
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
241 if((*j)->getObject()->isBlocking() && (*j)->getLocationRef().getLayerCoordinates() == cellCoordinate) {
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
242 blockingInstance = true;
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
243 }
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
244 }
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
245 return blockingInstance;
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
246 }
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
247
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
248 bool Layer::update() {
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
249 m_changedinstances.clear();
482
16c2b3ee59ce * Merged the view performance branch back into trunk. fixes[ticket:419]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 356
diff changeset
250 std::set<Instance*>::iterator it = m_active_instances.begin();
16c2b3ee59ce * Merged the view performance branch back into trunk. fixes[ticket:419]
helios2000@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 356
diff changeset
251 for(; it != m_active_instances.end(); ++it) {
181
56ac89189bc4 fixed time handling in fife:
spq@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 99
diff changeset
252 if ((*it)->update() != ICHANGE_NO_CHANGES) {
0
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
253 m_changedinstances.push_back(*it);
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
254 m_changed = true;
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
255 }
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
256 }
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
257 if (!m_changedinstances.empty()) {
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
258 std::vector<LayerChangeListener*>::iterator i = m_changelisteners.begin();
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
259 while (i != m_changelisteners.end()) {
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
260 (*i)->onLayerChanged(this, m_changedinstances);
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
261 ++i;
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
262 }
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
263 //std::cout << "Layer named " << Id() << " changed = 1\n";
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
264 }
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
265 //std::cout << "Layer named " << Id() << " changed = 0\n";
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
266 bool retval = m_changed;
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
267 m_changed = false;
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
268 return retval;
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
269 }
356
ab41334e8a57 Added or1andov's code with a few adjustments to fix instance transparencies fixed[t:378]
prock@33b003aa-7bff-0310-803a-e67f0ece8222
parents: 255
diff changeset
270
0
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
271 void Layer::addChangeListener(LayerChangeListener* listener) {
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
272 m_changelisteners.push_back(listener);
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
273 }
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
274
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
275 void Layer::removeChangeListener(LayerChangeListener* listener) {
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
276 std::vector<LayerChangeListener*>::iterator i = m_changelisteners.begin();
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
277 while (i != m_changelisteners.end()) {
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
278 if ((*i) == listener) {
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
279 m_changelisteners.erase(i);
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
280 return;
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
281 }
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
282 ++i;
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
283 }
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
284 }
4a0efb7baf70 * Datasets becomes the new trunk and retires after that :-)
mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
parents:
diff changeset
285 } // FIFE