History

show actions in status icons

Seth Alves committed 11 years ago

Commit 715a46e1 parent f07d5d98 files · +72 −31Browse files

Showing the changes to libraries/render/src/render/DrawStatus.cpp (1 of 8 files). Show all

Unified · Split

libraries/render/src/render/DrawStatus.cpp+32−9
@@ -68,7 +68,8 @@ const gpu::PipelinePointer DrawStatus::getDrawItemStatusPipeline() { · 67 unmodified lines
6868
6969 _drawItemStatusPosLoc = program->getUniforms().findLocation("inBoundPos");
7070 _drawItemStatusDimLoc = program->getUniforms().findLocation("inBoundDim");
71− _drawItemStatusValueLoc = program->getUniforms().findLocation("inStatus");
71+ _drawItemStatusValue0Loc = program->getUniforms().findLocation("inStatus0");
72+ _drawItemStatusValue1Loc = program->getUniforms().findLocation("inStatus1");
7273
7374 auto state = std::make_shared<gpu::State>();
7475
@@ -98,6 +99,8 @@ void DrawStatus::run(const SceneContextPointer& sceneContext, const RenderContex · 23 unmodified lines
9899 assert(renderContext->args->_viewFrustum);
99100 RenderArgs* args = renderContext->args;
100101 auto& scene = sceneContext->_scene;
102+ const int NUM_STATUS_VEC4_PER_ITEM = 2;
103+ const int VEC4_LENGTH = 4;
101104
102105 // FIrst thing, we collect the bound and the status for all the items we want to render
103106 int nbItems = 0;
@@ -109,8 +112,8 @@ void DrawStatus::run(const SceneContextPointer& sceneContext, const RenderContex · 5 unmodified lines
109112 _itemStatus = std::make_shared<gpu::Buffer>();;
110113 }
111114
112− _itemBounds->resize((inItems.size() * sizeof(AABox)));
113− _itemStatus->resize((inItems.size() * sizeof(glm::vec4)));
115+ _itemBounds->resize((inItems.size() * sizeof(AABox)));
116+ _itemStatus->resize((inItems.size() * NUM_STATUS_VEC4_PER_ITEM * sizeof(glm::vec4)));
114117 AABox* itemAABox = reinterpret_cast<AABox*> (_itemBounds->editData());
115118 glm::ivec4* itemStatus = reinterpret_cast<glm::ivec4*> (_itemStatus->editData());
116119 for (auto& item : inItems) {
@@ -121,11 +124,31 @@ void DrawStatus::run(const SceneContextPointer& sceneContext, const RenderContex · 4 unmodified lines
121124 (*itemAABox).setBox(item.bounds.getCorner(), 0.1f);
122125 }
123126 auto& itemScene = scene->getItem(item.id);
124− (*itemStatus) = itemScene.getStatusPackedValues();
127+
128+ auto itemStatusPointer = itemScene.getStatus();
129+ if (itemStatusPointer) {
130+ // Query the current status values, this is where the statusGetter lambda get called
131+ auto&& currentStatusValues = itemStatusPointer->getCurrentValues();
132+ int valueNum = 0;
133+ for (int vec4Num = 0; vec4Num < NUM_STATUS_VEC4_PER_ITEM; vec4Num++) {
134+ (*itemStatus) = glm::ivec4(Item::Status::Value::INVALID.getPackedData());
135+ for (int component = 0; component < VEC4_LENGTH; component++) {
136+ valueNum = vec4Num * VEC4_LENGTH + component;
137+ if (valueNum < (int)currentStatusValues.size()) {
138+ (*itemStatus)[component] = currentStatusValues[valueNum].getPackedData();
139+ }
140+ }
141+ itemStatus++;
142+ }
143+ } else {
144+ (*itemStatus) = glm::ivec4(Item::Status::Value::INVALID.getPackedData());
145+ itemStatus++;
146+ (*itemStatus) = glm::ivec4(Item::Status::Value::INVALID.getPackedData());
147+ itemStatus++;
148+ }
125149
126150 nbItems++;
127− itemAABox++;
128− itemStatus++;
151+ itemAABox++;
129152 }
130153 }
131154 }
@@ -170,9 +193,9 @@ void DrawStatus::run(const SceneContextPointer& sceneContext, const RenderContex · 38 unmodified lines
170193 for (int i = 0; i < nbItems; i++) {
171194 batch._glUniform3fv(_drawItemStatusPosLoc, 1, (const float*) (itemAABox + i));
172195 batch._glUniform3fv(_drawItemStatusDimLoc, 1, ((const float*) (itemAABox + i)) + VEC3_ADRESS_OFFSET);
173− batch._glUniform4iv(_drawItemStatusValueLoc, 1, (const int*) (itemStatus + i));
174−
175− batch.draw(gpu::TRIANGLES, 24, 0);
196+ batch._glUniform4iv(_drawItemStatusValue0Loc, 1, (const int*)(itemStatus + NUM_STATUS_VEC4_PER_ITEM * i));
197+ batch._glUniform4iv(_drawItemStatusValue1Loc, 1, (const int*)(itemStatus + NUM_STATUS_VEC4_PER_ITEM * i + 1));
198+ batch.draw(gpu::TRIANGLES, 24 * NUM_STATUS_VEC4_PER_ITEM, 0);
176199 }
177200 }
178201 batch.setResourceTexture(0, 0);

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t