Skip to content

Commit cb3b003

Browse files
committed
switch the prevdir for each object.
1 parent e29df99 commit cb3b003

File tree

2 files changed

+17
-23
lines changed

2 files changed

+17
-23
lines changed

src/Interface/Modules/Render/ES/systems/RenderTransBasicSys.cc

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -83,18 +83,20 @@ class RenderBasicSysTrans :
8383
public:
8484
std::string mName;
8585
GLuint mSortedID;
86+
Core::Geometry::Vector prevDir = Core::Geometry::Vector(0.0);
8687

8788
SortedObject() :
8889
mSortedID(0)
8990
{}
9091

91-
SortedObject(const std::string& name, GLuint ID) :
92+
SortedObject(const std::string& name, GLuint ID, Core::Geometry::Vector& dir) :
9293
mName(name),
93-
mSortedID(ID)
94+
mSortedID(ID),
95+
prevDir(dir)
9496
{}
9597
};
9698

97-
Core::Geometry::Vector prevDir = Core::Geometry::Vector(0.0);
99+
//Core::Geometry::Vector prevDir = Core::Geometry::Vector(0.0);
98100
std::vector<SortedObject> sortedObjects;
99101

100102
class DepthIndex {
@@ -217,11 +219,6 @@ class RenderBasicSysTrans :
217219
camera.front().data.worldToView[1][2],
218220
camera.front().data.worldToView[2][2]);
219221

220-
if (sortedObjects.size() <= 0)
221-
{
222-
prevDir = dir;
223-
}
224-
225222
if (!drawLines)
226223
{
227224
switch (pass.front().renderState.mSortType)
@@ -247,18 +244,18 @@ class RenderBasicSysTrans :
247244
if (!indexed)
248245
{
249246
index = sortedObjects.size();
250-
sortedObjects.push_back(SortedObject(pass.front().ibo.name, 0));
247+
sortedObjects.push_back(SortedObject(pass.front().ibo.name, 0, dir));
251248
}
252249

253-
Core::Geometry::Vector diff = prevDir - dir;
250+
Core::Geometry::Vector diff = sortedObjects[index].prevDir - dir;
254251
float distance = sqrtf(Core::Geometry::Dot(diff, diff));
255252
if (distance >= 1.23 || sortedObjects[index].mSortedID == 0)
256253
{
257254
if (sortedObjects[index].mSortedID != 0)
258255
{
259256
iboMan.front().instance->removeInMemoryIBO(sortedObjects[index].mSortedID);
260257
}
261-
prevDir = dir;
258+
sortedObjects[index].prevDir = dir;
262259
sortedObjects[index].mSortedID = sortObjects(dir, ibo, pass, iboMan);
263260
}
264261
iboID = sortedObjects[index].mSortedID;

src/Interface/Modules/Render/ES/systems/RenderTransColorMapSys.cc

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -80,18 +80,20 @@ class RenderColorMapSysTrans :
8080
public:
8181
std::string mName;
8282
GLuint mSortedID;
83+
Core::Geometry::Vector prevDir = Core::Geometry::Vector(0.0);;
8384

8485
SortedObject() :
8586
mSortedID(0)
8687
{}
8788

88-
SortedObject(const std::string& name, GLuint ID) :
89+
SortedObject(const std::string& name, GLuint ID, Core::Geometry::Vector& dir) :
8990
mName(name),
90-
mSortedID(ID)
91+
mSortedID(ID),
92+
prevDir(dir)
9193
{}
9294
};
9395

94-
Core::Geometry::Vector prevDir = Core::Geometry::Vector(0.0);
96+
//Core::Geometry::Vector prevDir = Core::Geometry::Vector(0.0);
9597
std::vector<SortedObject> sortedObjects;
9698

9799
class DepthIndex {
@@ -214,12 +216,7 @@ class RenderColorMapSysTrans :
214216
Core::Geometry::Vector dir(camera.front().data.worldToView[0][2],
215217
camera.front().data.worldToView[1][2],
216218
camera.front().data.worldToView[2][2]);
217-
218-
if (sortedObjects.size() <=0)
219-
{
220-
prevDir = dir;
221-
}
222-
219+
223220
if (!drawLines)
224221
{
225222
switch (pass.front().renderState.mSortType)
@@ -245,18 +242,18 @@ class RenderColorMapSysTrans :
245242
if (!indexed)
246243
{
247244
index = sortedObjects.size();
248-
sortedObjects.push_back(SortedObject(pass.front().ibo.name, 0));
245+
sortedObjects.push_back(SortedObject(pass.front().ibo.name, 0, dir));
249246
}
250247

251-
Core::Geometry::Vector diff = prevDir - dir;
248+
Core::Geometry::Vector diff = sortedObjects[index].prevDir - dir;
252249
float distance = sqrtf(Core::Geometry::Dot(diff, diff));
253250
if (distance >= 1.23 || sortedObjects[index].mSortedID == 0)
254251
{
255252
if (sortedObjects[index].mSortedID != 0)
256253
{
257254
iboMan.front().instance->removeInMemoryIBO(sortedObjects[index].mSortedID);
258255
}
259-
prevDir = dir;
256+
sortedObjects[index].prevDir = dir;
260257
sortedObjects[index].mSortedID = sortObjects(dir, ibo, pass, iboMan);
261258
}
262259
iboID = sortedObjects[index].mSortedID;

0 commit comments

Comments
 (0)