From ee2ce718b473edeb613be6d5e3330d1f61fcfc59 Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Tue, 16 Dec 2014 15:14:14 -0800 Subject: [PATCH 01/11] header file cleanup --- interface/src/entities/EntityTreeRenderer.h | 3 +++ .../src/entities/RenderableModelEntityItem.cpp | 8 +------- .../src/entities/RenderableModelEntityItem.h | 15 +++++---------- .../src/entities/RenderableSphereEntityItem.cpp | 8 +------- .../src/entities/RenderableSphereEntityItem.h | 12 +----------- .../src/entities/RenderableTextEntityItem.cpp | 6 ++---- interface/src/entities/RenderableTextEntityItem.h | 12 +----------- 7 files changed, 14 insertions(+), 50 deletions(-) diff --git a/interface/src/entities/EntityTreeRenderer.h b/interface/src/entities/EntityTreeRenderer.h index 87f45d5f56..215a9df975 100644 --- a/interface/src/entities/EntityTreeRenderer.h +++ b/interface/src/entities/EntityTreeRenderer.h @@ -18,6 +18,7 @@ #include #include // for RayToEntityIntersectionResult #include +#include #include #include #include @@ -26,6 +27,8 @@ #include #include +class ScriptEngine; + class EntityScriptDetails { public: diff --git a/interface/src/entities/RenderableModelEntityItem.cpp b/interface/src/entities/RenderableModelEntityItem.cpp index 13bc097f27..c998570a27 100644 --- a/interface/src/entities/RenderableModelEntityItem.cpp +++ b/interface/src/entities/RenderableModelEntityItem.cpp @@ -11,18 +11,12 @@ #include -#include +#include -#include "InterfaceConfig.h" - -#include #include -#include #include - #include "Menu.h" -#include "EntityTreeRenderer.h" #include "RenderableModelEntityItem.h" EntityItem* RenderableModelEntityItem::factory(const EntityItemID& entityID, const EntityItemProperties& properties) { diff --git a/interface/src/entities/RenderableModelEntityItem.h b/interface/src/entities/RenderableModelEntityItem.h index 2c194467d2..b68723019f 100644 --- a/interface/src/entities/RenderableModelEntityItem.h +++ b/interface/src/entities/RenderableModelEntityItem.h @@ -12,18 +12,13 @@ #ifndef hifi_RenderableModelEntityItem_h #define hifi_RenderableModelEntityItem_h -#include -#include +#include +#include -#include -#include #include -#include -#include -#include -#include -#include -#include + +class Model; +class RenderArgs; class RenderableModelEntityItem : public ModelEntityItem { public: diff --git a/interface/src/entities/RenderableSphereEntityItem.cpp b/interface/src/entities/RenderableSphereEntityItem.cpp index db10edca73..97e3ee7869 100644 --- a/interface/src/entities/RenderableSphereEntityItem.cpp +++ b/interface/src/entities/RenderableSphereEntityItem.cpp @@ -11,18 +11,12 @@ #include -#include - -#include "InterfaceConfig.h" +#include #include #include #include -#include - -#include "Menu.h" -#include "EntityTreeRenderer.h" #include "RenderableSphereEntityItem.h" EntityItem* RenderableSphereEntityItem::factory(const EntityItemID& entityID, const EntityItemProperties& properties) { diff --git a/interface/src/entities/RenderableSphereEntityItem.h b/interface/src/entities/RenderableSphereEntityItem.h index 3c24889e79..0c8c6af7c2 100644 --- a/interface/src/entities/RenderableSphereEntityItem.h +++ b/interface/src/entities/RenderableSphereEntityItem.h @@ -12,18 +12,8 @@ #ifndef hifi_RenderableSphereEntityItem_h #define hifi_RenderableSphereEntityItem_h -#include -#include - -#include -#include -#include -#include -#include -#include -#include - #include +class RenderArgs; class RenderableSphereEntityItem : public SphereEntityItem { public: diff --git a/interface/src/entities/RenderableTextEntityItem.cpp b/interface/src/entities/RenderableTextEntityItem.cpp index 4059ee5751..1f680a8a0d 100644 --- a/interface/src/entities/RenderableTextEntityItem.cpp +++ b/interface/src/entities/RenderableTextEntityItem.cpp @@ -11,14 +11,12 @@ #include -#include "InterfaceConfig.h" - -#include +#include #include -#include "Menu.h" #include "EntityTreeRenderer.h" #include "RenderableTextEntityItem.h" +#include "ui/TextRenderer.h" const int FIXED_FONT_POINT_SIZE = 40; const float LINE_SCALE_RATIO = 1.2f; diff --git a/interface/src/entities/RenderableTextEntityItem.h b/interface/src/entities/RenderableTextEntityItem.h index 8760cb9df7..7fe85d9ef5 100644 --- a/interface/src/entities/RenderableTextEntityItem.h +++ b/interface/src/entities/RenderableTextEntityItem.h @@ -12,18 +12,8 @@ #ifndef hifi_RenderableTextEntityItem_h #define hifi_RenderableTextEntityItem_h -#include -#include - -#include -#include -#include -#include -#include -#include -#include - #include +class RenderArgs; class RenderableTextEntityItem : public TextEntityItem { public: From d385a7b8acb300061b40c42f7b3866dd62a7b7ee Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Tue, 16 Dec 2014 15:35:56 -0800 Subject: [PATCH 02/11] header file cleanup --- interface/src/entities/EntityTreeRenderer.cpp | 15 +++------------ interface/src/entities/EntityTreeRenderer.h | 12 +----------- .../src/entities/RenderableBoxEntityItem.cpp | 10 +--------- interface/src/entities/RenderableBoxEntityItem.h | 11 ----------- .../src/entities/RenderableLightEntityItem.cpp | 8 +------- .../src/entities/RenderableLightEntityItem.h | 11 ----------- .../src/entities/RenderableModelEntityItem.h | 1 - .../src/entities/RenderableSphereEntityItem.h | 1 - .../src/entities/RenderableTextEntityItem.cpp | 1 - interface/src/entities/RenderableTextEntityItem.h | 1 - interface/src/ui/overlays/LocalModelsOverlay.h | 4 ++-- 11 files changed, 8 insertions(+), 67 deletions(-) diff --git a/interface/src/entities/EntityTreeRenderer.cpp b/interface/src/entities/EntityTreeRenderer.cpp index 59b3f697c8..727a21c4c8 100644 --- a/interface/src/entities/EntityTreeRenderer.cpp +++ b/interface/src/entities/EntityTreeRenderer.cpp @@ -9,28 +9,19 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // +#include + #include #include -#include - -#include "InterfaceConfig.h" - -#include #include -#include -#include +#include #include -#include - #include "Menu.h" -#include "NetworkAccessManager.h" #include "EntityTreeRenderer.h" -#include "devices/OculusManager.h" - #include "RenderableBoxEntityItem.h" #include "RenderableLightEntityItem.h" #include "RenderableModelEntityItem.h" diff --git a/interface/src/entities/EntityTreeRenderer.h b/interface/src/entities/EntityTreeRenderer.h index 215a9df975..1e0f4de125 100644 --- a/interface/src/entities/EntityTreeRenderer.h +++ b/interface/src/entities/EntityTreeRenderer.h @@ -12,24 +12,14 @@ #ifndef hifi_EntityTreeRenderer_h #define hifi_EntityTreeRenderer_h -#include -#include - #include #include // for RayToEntityIntersectionResult -#include #include -#include -#include #include -#include -#include -#include -#include +class Model; class ScriptEngine; - class EntityScriptDetails { public: QString scriptText; diff --git a/interface/src/entities/RenderableBoxEntityItem.cpp b/interface/src/entities/RenderableBoxEntityItem.cpp index f7b403bff2..bb0de0ce6d 100644 --- a/interface/src/entities/RenderableBoxEntityItem.cpp +++ b/interface/src/entities/RenderableBoxEntityItem.cpp @@ -11,21 +11,13 @@ #include -#include +#include -#include "InterfaceConfig.h" - -#include #include -#include #include - -#include "Menu.h" -#include "EntityTreeRenderer.h" #include "RenderableBoxEntityItem.h" - EntityItem* RenderableBoxEntityItem::factory(const EntityItemID& entityID, const EntityItemProperties& properties) { return new RenderableBoxEntityItem(entityID, properties); } diff --git a/interface/src/entities/RenderableBoxEntityItem.h b/interface/src/entities/RenderableBoxEntityItem.h index da4714f32b..c4495d2328 100644 --- a/interface/src/entities/RenderableBoxEntityItem.h +++ b/interface/src/entities/RenderableBoxEntityItem.h @@ -12,17 +12,6 @@ #ifndef hifi_RenderableBoxEntityItem_h #define hifi_RenderableBoxEntityItem_h -#include -#include - -#include -#include -#include -#include -#include -#include -#include - #include class RenderableBoxEntityItem : public BoxEntityItem { diff --git a/interface/src/entities/RenderableLightEntityItem.cpp b/interface/src/entities/RenderableLightEntityItem.cpp index 58a3c3f18a..be64fe7520 100644 --- a/interface/src/entities/RenderableLightEntityItem.cpp +++ b/interface/src/entities/RenderableLightEntityItem.cpp @@ -11,21 +11,15 @@ #include -#include - -#include "InterfaceConfig.h" +#include #include #include -#include - #include "Application.h" #include "Menu.h" -#include "EntityTreeRenderer.h" #include "RenderableLightEntityItem.h" - EntityItem* RenderableLightEntityItem::factory(const EntityItemID& entityID, const EntityItemProperties& properties) { return new RenderableLightEntityItem(entityID, properties); } diff --git a/interface/src/entities/RenderableLightEntityItem.h b/interface/src/entities/RenderableLightEntityItem.h index 2113f486cc..cfafb85983 100644 --- a/interface/src/entities/RenderableLightEntityItem.h +++ b/interface/src/entities/RenderableLightEntityItem.h @@ -12,17 +12,6 @@ #ifndef hifi_RenderableLightEntityItem_h #define hifi_RenderableLightEntityItem_h -#include -#include - -#include -#include -#include -#include -#include -#include -#include - #include class RenderableLightEntityItem : public LightEntityItem { diff --git a/interface/src/entities/RenderableModelEntityItem.h b/interface/src/entities/RenderableModelEntityItem.h index b68723019f..9e66e4ef40 100644 --- a/interface/src/entities/RenderableModelEntityItem.h +++ b/interface/src/entities/RenderableModelEntityItem.h @@ -18,7 +18,6 @@ #include class Model; -class RenderArgs; class RenderableModelEntityItem : public ModelEntityItem { public: diff --git a/interface/src/entities/RenderableSphereEntityItem.h b/interface/src/entities/RenderableSphereEntityItem.h index 0c8c6af7c2..3ed651b0ae 100644 --- a/interface/src/entities/RenderableSphereEntityItem.h +++ b/interface/src/entities/RenderableSphereEntityItem.h @@ -13,7 +13,6 @@ #define hifi_RenderableSphereEntityItem_h #include -class RenderArgs; class RenderableSphereEntityItem : public SphereEntityItem { public: diff --git a/interface/src/entities/RenderableTextEntityItem.cpp b/interface/src/entities/RenderableTextEntityItem.cpp index 1f680a8a0d..5a3d5df8f9 100644 --- a/interface/src/entities/RenderableTextEntityItem.cpp +++ b/interface/src/entities/RenderableTextEntityItem.cpp @@ -14,7 +14,6 @@ #include #include -#include "EntityTreeRenderer.h" #include "RenderableTextEntityItem.h" #include "ui/TextRenderer.h" diff --git a/interface/src/entities/RenderableTextEntityItem.h b/interface/src/entities/RenderableTextEntityItem.h index 7fe85d9ef5..e57ab0538a 100644 --- a/interface/src/entities/RenderableTextEntityItem.h +++ b/interface/src/entities/RenderableTextEntityItem.h @@ -13,7 +13,6 @@ #define hifi_RenderableTextEntityItem_h #include -class RenderArgs; class RenderableTextEntityItem : public TextEntityItem { public: diff --git a/interface/src/ui/overlays/LocalModelsOverlay.h b/interface/src/ui/overlays/LocalModelsOverlay.h index 39465de7f9..a82943a4a0 100644 --- a/interface/src/ui/overlays/LocalModelsOverlay.h +++ b/interface/src/ui/overlays/LocalModelsOverlay.h @@ -12,10 +12,10 @@ #ifndef hifi_LocalModelsOverlay_h #define hifi_LocalModelsOverlay_h -#include "entities/EntityTreeRenderer.h" - #include "Volume3DOverlay.h" +class EntityTreeRenderer; + class LocalModelsOverlay : public Volume3DOverlay { Q_OBJECT public: From 74a8f0059d0eb34a4fa1e20f0ddc6acf30a2931f Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Tue, 16 Dec 2014 15:43:24 -0800 Subject: [PATCH 03/11] some Application dependecy cleanup --- interface/src/entities/EntityTreeRenderer.cpp | 4 ---- interface/src/entities/EntityTreeRenderer.h | 2 -- 2 files changed, 6 deletions(-) diff --git a/interface/src/entities/EntityTreeRenderer.cpp b/interface/src/entities/EntityTreeRenderer.cpp index 727a21c4c8..951c214c44 100644 --- a/interface/src/entities/EntityTreeRenderer.cpp +++ b/interface/src/entities/EntityTreeRenderer.cpp @@ -29,10 +29,6 @@ #include "RenderableTextEntityItem.h" -QThread* EntityTreeRenderer::getMainThread() { - return Application::getInstance()->getEntities()->thread(); -} - EntityTreeRenderer::EntityTreeRenderer(bool wantScripts) : OctreeRenderer(), _wantScripts(wantScripts), diff --git a/interface/src/entities/EntityTreeRenderer.h b/interface/src/entities/EntityTreeRenderer.h index 1e0f4de125..b9fe516efd 100644 --- a/interface/src/entities/EntityTreeRenderer.h +++ b/interface/src/entities/EntityTreeRenderer.h @@ -57,8 +57,6 @@ public: /// clears the tree virtual void clear(); - static QThread* getMainThread(); - /// if a renderable entity item needs a model, we will allocate it for them Q_INVOKABLE Model* allocateModel(const QString& url); From 3dfded89b8c172a4ad8f2a9b7a9f9ed58e91f725 Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Tue, 16 Dec 2014 16:28:09 -0800 Subject: [PATCH 04/11] remove menu dependency from EntityTreeRenderer, some Application cleanup --- interface/src/Application.cpp | 16 ++- interface/src/Application.h | 3 + interface/src/entities/EntityTreeRenderer.cpp | 127 +++++++----------- interface/src/entities/EntityTreeRenderer.h | 15 ++- .../render-utils/src/ViewStateInterface.h | 3 + 5 files changed, 83 insertions(+), 81 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 8b3c5a2fa1..d8c7811b6a 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -155,9 +155,9 @@ Application::Application(int& argc, char** argv, QElapsedTimer &startup_time) : _voxelImporter(), _importSucceded(false), _sharedVoxelSystem(TREE_SCALE, DEFAULT_MAX_VOXELS_PER_SYSTEM, &_clipboard), - _entities(true), + _entities(true, this), _entityCollisionSystem(), - _entityClipboardRenderer(false), + _entityClipboardRenderer(false, this), _entityClipboard(), _wantToKillLocalVoxels(false), _viewFrustum(), @@ -2943,6 +2943,18 @@ bool Application::shouldRenderMesh(float largestDimension, float distanceToCamer return Menu::getInstance()->shouldRenderMesh(largestDimension, distanceToCamera); } +float Application::getSizeScale() const { + return Menu::getInstance()->getVoxelSizeScale(); +} + +int Application::getBoundaryLevelAdjust() const { + return Menu::getInstance()->getBoundaryLevelAdjust(); +} + +PickRay Application::computePickRay(float x, float y) { + return getCamera()->computePickRay(x, y); +} + QImage Application::renderAvatarBillboard() { DependencyManager::get()->getPrimaryFramebufferObject()->bind(); diff --git a/interface/src/Application.h b/interface/src/Application.h index 9aca90fac8..86683a6608 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -285,6 +285,9 @@ public: virtual bool getShadowsEnabled(); virtual bool getCascadeShadowsEnabled(); virtual QThread* getMainThread() { return thread(); } + virtual float getSizeScale() const; + virtual int getBoundaryLevelAdjust() const; + virtual PickRay computePickRay(float x, float y); NodeBounds& getNodeBoundsDisplay() { return _nodeBoundsDisplay; } diff --git a/interface/src/entities/EntityTreeRenderer.cpp b/interface/src/entities/EntityTreeRenderer.cpp index 951c214c44..6684daf7e8 100644 --- a/interface/src/entities/EntityTreeRenderer.cpp +++ b/interface/src/entities/EntityTreeRenderer.cpp @@ -18,8 +18,9 @@ #include #include #include +#include -#include "Menu.h" +#include "Application.h" #include "EntityTreeRenderer.h" #include "RenderableBoxEntityItem.h" @@ -29,11 +30,16 @@ #include "RenderableTextEntityItem.h" -EntityTreeRenderer::EntityTreeRenderer(bool wantScripts) : +EntityTreeRenderer::EntityTreeRenderer(bool wantScripts, ViewStateInterface* viewState) : OctreeRenderer(), _wantScripts(wantScripts), _entitiesScriptEngine(NULL), - _lastMouseEventValid(false) + _lastMouseEventValid(false), + _viewState(viewState), + _displayElementChildProxies(false), + _displayModelBounds(false), + _displayModelElementProxy(false), + _dontDoPrecisionPicking(false) { REGISTER_ENTITY_TYPE_WITH_FACTORY(Model, RenderableModelEntityItem::factory) REGISTER_ENTITY_TYPE_WITH_FACTORY(Box, RenderableBoxEntityItem::factory) @@ -63,7 +69,7 @@ void EntityTreeRenderer::init() { entityTree->setFBXService(this); if (_wantScripts) { - _entitiesScriptEngine = new ScriptEngine(NO_SCRIPT, "Entities", + _entitiesScriptEngine = new ScriptEngine(NO_SCRIPT, "Entities", Application::getInstance()->getControllerScriptingInterface()); Application::getInstance()->registerScriptEngineWithApplicationServices(_entitiesScriptEngine); } @@ -276,44 +282,38 @@ void EntityTreeRenderer::checkEnterLeaveEntities() { } void EntityTreeRenderer::render(RenderArgs::RenderMode renderMode, RenderArgs::RenderSide renderSide) { - bool dontRenderAsScene = Menu::getInstance()->isOptionChecked(MenuOption::DontRenderEntitiesAsScene); + if (_tree) { + Model::startScene(renderSide); + RenderArgs args = { this, _viewFrustum, getSizeScale(), getBoundaryLevelAdjust(), renderMode, renderSide, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; + _tree->lockForRead(); + _tree->recurseTreeWithOperation(renderOperation, &args); + + Model::RenderMode modelRenderMode = renderMode == RenderArgs::SHADOW_RENDER_MODE + ? Model::SHADOW_RENDER_MODE : Model::DEFAULT_RENDER_MODE; + + // we must call endScene while we still have the tree locked so that no one deletes a model + // on us while rendering the scene + Model::endScene(modelRenderMode, &args); + _tree->unlock(); - if (dontRenderAsScene) { - OctreeRenderer::render(renderMode, renderSide); - } else { - if (_tree) { - Model::startScene(renderSide); - RenderArgs args = { this, _viewFrustum, getSizeScale(), getBoundaryLevelAdjust(), renderMode, renderSide, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; - _tree->lockForRead(); - _tree->recurseTreeWithOperation(renderOperation, &args); + // stats... + _meshesConsidered = args._meshesConsidered; + _meshesRendered = args._meshesRendered; + _meshesOutOfView = args._meshesOutOfView; + _meshesTooSmall = args._meshesTooSmall; - Model::RenderMode modelRenderMode = renderMode == RenderArgs::SHADOW_RENDER_MODE - ? Model::SHADOW_RENDER_MODE : Model::DEFAULT_RENDER_MODE; + _elementsTouched = args._elementsTouched; + _itemsRendered = args._itemsRendered; + _itemsOutOfView = args._itemsOutOfView; + _itemsTooSmall = args._itemsTooSmall; - // we must call endScene while we still have the tree locked so that no one deletes a model - // on us while rendering the scene - Model::endScene(modelRenderMode, &args); - _tree->unlock(); - - // stats... - _meshesConsidered = args._meshesConsidered; - _meshesRendered = args._meshesRendered; - _meshesOutOfView = args._meshesOutOfView; - _meshesTooSmall = args._meshesTooSmall; + _materialSwitches = args._materialSwitches; + _trianglesRendered = args._trianglesRendered; + _quadsRendered = args._quadsRendered; - _elementsTouched = args._elementsTouched; - _itemsRendered = args._itemsRendered; - _itemsOutOfView = args._itemsOutOfView; - _itemsTooSmall = args._itemsTooSmall; - - _materialSwitches = args._materialSwitches; - _trianglesRendered = args._trianglesRendered; - _quadsRendered = args._quadsRendered; - - _translucentMeshPartsRendered = args._translucentMeshPartsRendered; - _opaqueMeshPartsRendered = args._opaqueMeshPartsRendered; - } + _translucentMeshPartsRendered = args._translucentMeshPartsRendered; + _opaqueMeshPartsRendered = args._opaqueMeshPartsRendered; } deleteReleasedModels(); // seems like as good as any other place to do some memory cleanup } @@ -345,7 +345,7 @@ const Model* EntityTreeRenderer::getModelForEntityItem(const EntityItem* entityI return result; } -void renderElementProxy(EntityTreeElement* entityTreeElement) { +void EntityTreeRenderer::renderElementProxy(EntityTreeElement* entityTreeElement) { glm::vec3 elementCenter = entityTreeElement->getAACube().calcCenter() * (float) TREE_SCALE; float elementSize = entityTreeElement->getScale() * (float) TREE_SCALE; glColor3f(1.0f, 0.0f, 0.0f); @@ -354,9 +354,7 @@ void renderElementProxy(EntityTreeElement* entityTreeElement) { glutWireCube(elementSize); glPopMatrix(); - bool displayElementChildProxies = Menu::getInstance()->isOptionChecked(MenuOption::DisplayModelElementChildProxies); - - if (displayElementChildProxies) { + if (_displayElementChildProxies) { // draw the children float halfSize = elementSize / 2.0f; float quarterSize = elementSize / 4.0f; @@ -412,8 +410,7 @@ void renderElementProxy(EntityTreeElement* entityTreeElement) { void EntityTreeRenderer::renderProxies(const EntityItem* entity, RenderArgs* args) { bool isShadowMode = args->_renderMode == RenderArgs::SHADOW_RENDER_MODE; - bool displayModelBounds = Menu::getInstance()->isOptionChecked(MenuOption::DisplayModelBounds); - if (!isShadowMode && displayModelBounds) { + if (!isShadowMode && _displayModelBounds) { PerformanceTimer perfTimer("renderProxies"); AACube maxCube = entity->getMaximumAACube(); @@ -473,8 +470,6 @@ void EntityTreeRenderer::renderProxies(const EntityItem* entity, RenderArgs* arg } void EntityTreeRenderer::renderElement(OctreeElement* element, RenderArgs* args) { - bool wantDebug = false; - args->_elementsTouched++; // actually render it here... // we need to iterate the actual entityItems of the element @@ -486,11 +481,8 @@ void EntityTreeRenderer::renderElement(OctreeElement* element, RenderArgs* args) uint16_t numberOfEntities = entityItems.size(); bool isShadowMode = args->_renderMode == RenderArgs::SHADOW_RENDER_MODE; - bool displayElementProxy = Menu::getInstance()->isOptionChecked(MenuOption::DisplayModelElementProxy); - - - if (!isShadowMode && displayElementProxy && numberOfEntities > 0) { + if (!isShadowMode && _displayModelElementProxy && numberOfEntities > 0) { renderElementProxy(entityTreeElement); } @@ -507,23 +499,9 @@ void EntityTreeRenderer::renderElement(OctreeElement* element, RenderArgs* args) // when they are outside of the view frustum... float distance = args->_viewFrustum->distanceToCamera(entityBox.calcCenter()); - if (wantDebug) { - qDebug() << "------- renderElement() ----------"; - qDebug() << " type:" << EntityTypes::getEntityTypeName(entityItem->getType()); - if (entityItem->getType() == EntityTypes::Model) { - ModelEntityItem* modelEntity = static_cast(entityItem); - qDebug() << " url:" << modelEntity->getModelURL(); - } - qDebug() << " entityBox:" << entityItem->getAABox(); - qDebug() << " dimensions:" << entityItem->getDimensionsInMeters() << "in meters"; - qDebug() << " largestDimension:" << entityBox.getLargestDimension() << "in meters"; - qDebug() << " shouldRender:" << Menu::getInstance()->shouldRenderMesh(entityBox.getLargestDimension(), distance); - qDebug() << " in frustum:" << (args->_viewFrustum->boxInFrustum(entityBox) != ViewFrustum::OUTSIDE); - } - bool outOfView = args->_viewFrustum->boxInFrustum(entityBox) == ViewFrustum::OUTSIDE; if (!outOfView) { - bool bigEnoughToRender = Menu::getInstance()->shouldRenderMesh(entityBox.getLargestDimension(), distance); + bool bigEnoughToRender = _viewState->shouldRenderMesh(entityBox.getLargestDimension(), distance); if (bigEnoughToRender) { renderProxies(entityItem, args); @@ -548,11 +526,11 @@ void EntityTreeRenderer::renderElement(OctreeElement* element, RenderArgs* args) } float EntityTreeRenderer::getSizeScale() const { - return Menu::getInstance()->getVoxelSizeScale(); + return _viewState->getSizeScale(); } int EntityTreeRenderer::getBoundaryLevelAdjust() const { - return Menu::getInstance()->getBoundaryLevelAdjust(); + return _viewState->getBoundaryLevelAdjust(); } @@ -627,11 +605,6 @@ void EntityTreeRenderer::deleteReleasedModels() { } } -PickRay EntityTreeRenderer::computePickRay(float x, float y) { - return Application::getInstance()->getCamera()->computePickRay(x, y); -} - - RayToEntityIntersectionResult EntityTreeRenderer::findRayIntersectionWorker(const PickRay& ray, Octree::lockType lockType, bool precisionPicking) { RayToEntityIntersectionResult result; @@ -693,9 +666,9 @@ QScriptValueList EntityTreeRenderer::createEntityArgs(const EntityItemID& entity void EntityTreeRenderer::mousePressEvent(QMouseEvent* event, unsigned int deviceID) { PerformanceTimer perfTimer("EntityTreeRenderer::mousePressEvent"); - PickRay ray = computePickRay(event->x(), event->y()); + PickRay ray = _viewState->computePickRay(event->x(), event->y()); - bool precisionPicking = !Menu::getInstance()->isOptionChecked(MenuOption::DontDoPrecisionPicking); + bool precisionPicking = !_dontDoPrecisionPicking; RayToEntityIntersectionResult rayPickResult = findRayIntersectionWorker(ray, Octree::Lock, precisionPicking); if (rayPickResult.intersects) { //qDebug() << "mousePressEvent over entity:" << rayPickResult.entityID; @@ -719,8 +692,8 @@ void EntityTreeRenderer::mousePressEvent(QMouseEvent* event, unsigned int device void EntityTreeRenderer::mouseReleaseEvent(QMouseEvent* event, unsigned int deviceID) { PerformanceTimer perfTimer("EntityTreeRenderer::mouseReleaseEvent"); - PickRay ray = computePickRay(event->x(), event->y()); - bool precisionPicking = !Menu::getInstance()->isOptionChecked(MenuOption::DontDoPrecisionPicking); + PickRay ray = _viewState->computePickRay(event->x(), event->y()); + bool precisionPicking = !_dontDoPrecisionPicking; RayToEntityIntersectionResult rayPickResult = findRayIntersectionWorker(ray, Octree::Lock, precisionPicking); if (rayPickResult.intersects) { //qDebug() << "mouseReleaseEvent over entity:" << rayPickResult.entityID; @@ -754,7 +727,7 @@ void EntityTreeRenderer::mouseReleaseEvent(QMouseEvent* event, unsigned int devi void EntityTreeRenderer::mouseMoveEvent(QMouseEvent* event, unsigned int deviceID) { PerformanceTimer perfTimer("EntityTreeRenderer::mouseMoveEvent"); - PickRay ray = computePickRay(event->x(), event->y()); + PickRay ray = _viewState->computePickRay(event->x(), event->y()); bool precisionPicking = false; // for mouse moves we do not do precision picking RayToEntityIntersectionResult rayPickResult = findRayIntersectionWorker(ray, Octree::TryLock, precisionPicking); diff --git a/interface/src/entities/EntityTreeRenderer.h b/interface/src/entities/EntityTreeRenderer.h index b9fe516efd..c3bd77aba7 100644 --- a/interface/src/entities/EntityTreeRenderer.h +++ b/interface/src/entities/EntityTreeRenderer.h @@ -30,7 +30,7 @@ public: class EntityTreeRenderer : public OctreeRenderer, public EntityItemFBXService { Q_OBJECT public: - EntityTreeRenderer(bool wantScripts); + EntityTreeRenderer(bool wantScripts, ViewStateInterface* viewState); virtual ~EntityTreeRenderer(); virtual char getMyNodeType() const { return NodeType::EntityServer; } @@ -100,17 +100,22 @@ public slots: void entityCollisionWithVoxel(const EntityItemID& entityID, const VoxelDetail& voxel, const Collision& collision); void entityCollisionWithEntity(const EntityItemID& idA, const EntityItemID& idB, const Collision& collision); + // optional slots that can be wired to menu items + void setDisplayElementChildProxies(bool value) { _displayElementChildProxies = value; } + void setDisplayModelBounds(bool value) { _displayModelBounds = value; } + void setDisplayModelElementProxy(bool value) { _displayModelElementProxy = value; } + void setDontDoPrecisionPicking(bool value) { _dontDoPrecisionPicking = value; } protected: virtual Octree* createTree() { return new EntityTree(true); } private: + void renderElementProxy(EntityTreeElement* entityTreeElement); void checkAndCallPreload(const EntityItemID& entityID); void checkAndCallUnload(const EntityItemID& entityID); QList _releasedModels; void renderProxies(const EntityItem* entity, RenderArgs* args); - PickRay computePickRay(float x, float y); RayToEntityIntersectionResult findRayIntersectionWorker(const PickRay& ray, Octree::lockType lockType, bool precisionPicking); @@ -136,6 +141,12 @@ private: bool _lastMouseEventValid; MouseEvent _lastMouseEvent; + ViewStateInterface* _viewState; + bool _displayElementChildProxies; + bool _displayModelBounds; + bool _displayModelElementProxy; + bool _dontDoPrecisionPicking; + }; #endif // hifi_EntityTreeRenderer_h diff --git a/libraries/render-utils/src/ViewStateInterface.h b/libraries/render-utils/src/ViewStateInterface.h index 9110eb8eb6..5f85e998a4 100644 --- a/libraries/render-utils/src/ViewStateInterface.h +++ b/libraries/render-utils/src/ViewStateInterface.h @@ -38,6 +38,9 @@ public: virtual const Transform& getViewTransform() const = 0; virtual void setupWorldLight() = 0; virtual bool shouldRenderMesh(float largestDimension, float distanceToCamera) = 0; + virtual float getSizeScale() const = 0; + virtual int getBoundaryLevelAdjust() const = 0; + virtual PickRay computePickRay(float x, float y) = 0; }; From d3bf28e87971ac8abbde30d68a61a82b62cda9b3 Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Wed, 17 Dec 2014 11:10:24 -0800 Subject: [PATCH 05/11] more Application dependency cleanup --- libraries/gpu/src/gpu/GLUTConfig.h | 25 +++++++++++++ ...terface.h => AbstractViewStateInterface.h} | 0 .../src/AbstractScriptingServicesInterface.h | 35 +++++++++++++++++++ 3 files changed, 60 insertions(+) create mode 100644 libraries/gpu/src/gpu/GLUTConfig.h rename libraries/render-utils/src/{ViewStateInterface.h => AbstractViewStateInterface.h} (100%) create mode 100644 libraries/script-engine/src/AbstractScriptingServicesInterface.h diff --git a/libraries/gpu/src/gpu/GLUTConfig.h b/libraries/gpu/src/gpu/GLUTConfig.h new file mode 100644 index 0000000000..214f2bb2b0 --- /dev/null +++ b/libraries/gpu/src/gpu/GLUTConfig.h @@ -0,0 +1,25 @@ +// +// GPUConfig.h +// libraries/gpu/src/gpu +// +// Created by Brad Hefta-Gaub on 12/17/14. +// Copyright 2014 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#ifndef gpu__GLUTConfig__ +#define gpu__GLUTConfig__ + +// TODO: remove these once we migrate away from GLUT calls +#if defined(__APPLE__) +#include +#elif defined(WIN32) +#include +#else +#include +#endif + + +#endif // gpu__GLUTConfig__ diff --git a/libraries/render-utils/src/ViewStateInterface.h b/libraries/render-utils/src/AbstractViewStateInterface.h similarity index 100% rename from libraries/render-utils/src/ViewStateInterface.h rename to libraries/render-utils/src/AbstractViewStateInterface.h diff --git a/libraries/script-engine/src/AbstractScriptingServicesInterface.h b/libraries/script-engine/src/AbstractScriptingServicesInterface.h new file mode 100644 index 0000000000..5e7ad81f67 --- /dev/null +++ b/libraries/script-engine/src/AbstractScriptingServicesInterface.h @@ -0,0 +1,35 @@ +// +// AbstractScriptingServicesInterface.h +// interface/src/script-engine +// +// Created by Brad Hefta-Gaub on 12/16/14. +// Copyright 2014 High Fidelity, Inc. +// +// Distributed under the Apache License, Version 2.0. +// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html +// + +#ifndef hifi_AbstractScriptingServicesInterface_h +#define hifi_AbstractScriptingServicesInterface_h + +//#include + +class AbstractControllerScriptingInterface; +class Transform; +class ScriptEngine; +class QThread; + +/// Interface provided by Application to other objects that need access to scripting services of the application +class AbstractScriptingServicesInterface { +public: + + /// Returns the controller interface for the application + virtual AbstractControllerScriptingInterface* getControllerScriptingInterface() = 0; + + /// Registers application specific services with a script engine. + virtual void registerScriptEngineWithApplicationServices(ScriptEngine* scriptEngine) = 0; + +}; + + +#endif // hifi_AbstractScriptingServicesInterface_h From 5d636e21c64d8789f198bbdaf4cbf325372740cc Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Wed, 17 Dec 2014 11:10:45 -0800 Subject: [PATCH 06/11] more Application dependency cleanup --- interface/src/Application.cpp | 6 ++--- interface/src/Application.h | 14 ++++++----- interface/src/entities/EntityTreeRenderer.cpp | 23 ++++++++++++------- interface/src/entities/EntityTreeRenderer.h | 8 +++++-- .../src/AbstractViewStateInterface.h | 16 ++++++++----- .../src/AmbientOcclusionEffect.cpp | 3 ++- .../render-utils/src/AmbientOcclusionEffect.h | 7 +++--- .../src/DeferredLightingEffect.cpp | 15 ++++-------- .../render-utils/src/DeferredLightingEffect.h | 6 ++--- libraries/render-utils/src/Model.cpp | 4 +++- libraries/render-utils/src/Model.h | 6 ++--- 11 files changed, 60 insertions(+), 48 deletions(-) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index d8c7811b6a..1453cec53b 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -155,9 +155,9 @@ Application::Application(int& argc, char** argv, QElapsedTimer &startup_time) : _voxelImporter(), _importSucceded(false), _sharedVoxelSystem(TREE_SCALE, DEFAULT_MAX_VOXELS_PER_SYSTEM, &_clipboard), - _entities(true, this), + _entities(true, this, this), _entityCollisionSystem(), - _entityClipboardRenderer(false, this), + _entityClipboardRenderer(false, this, this), _entityClipboard(), _wantToKillLocalVoxels(false), _viewFrustum(), @@ -191,7 +191,7 @@ Application::Application(int& argc, char** argv, QElapsedTimer &startup_time) : _isVSyncOn(true), _aboutToQuit(false) { - Model::setViewStateInterface(this); // The model class will sometimes need to know view state details from us + Model::setAbstractViewStateInterface(this); // The model class will sometimes need to know view state details from us // read the ApplicationInfo.ini file for Name/Version/Domain information QSettings applicationInfo(PathUtils::resourcesPath() + "info/ApplicationInfo.ini", QSettings::IniFormat); diff --git a/interface/src/Application.h b/interface/src/Application.h index 86683a6608..d192a9abe6 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -32,6 +32,8 @@ #include #include +#include +#include #include #include #include @@ -42,7 +44,6 @@ #include #include #include -#include #include #include "MainWindow.h" @@ -127,7 +128,7 @@ static const quint64 TOO_LONG_SINCE_LAST_SEND_DOWNSTREAM_AUDIO_STATS = 1 * USECS static const QString INFO_HELP_PATH = "html/interface-welcome-allsvg.html"; static const QString INFO_EDIT_ENTITIES_PATH = "html/edit-entities-commands.html"; -class Application : public QApplication, public ViewStateInterface { +class Application : public QApplication, public AbstractViewStateInterface, AbstractScriptingServicesInterface { Q_OBJECT friend class OctreePacketProcessor; @@ -186,6 +187,7 @@ public: GLCanvas* getGLWidget() { return _glWidget; } bool isThrottleRendering() const { return _glWidget->isThrottleRendering(); } MyAvatar* getAvatar() { return _myAvatar; } + const MyAvatar* getAvatar() const { return _myAvatar; } Audio* getAudio() { return &_audio; } Camera* getCamera() { return &_myCamera; } ViewFrustum* getViewFrustum() { return &_viewFrustum; } @@ -248,7 +250,9 @@ public: ToolWindow* getToolWindow() { return _toolWindow ; } - ControllerScriptingInterface* getControllerScriptingInterface() { return &_controllerScriptingInterface; } + virtual AbstractControllerScriptingInterface* getControllerScriptingInterface() { return &_controllerScriptingInterface; } + virtual void registerScriptEngineWithApplicationServices(ScriptEngine* scriptEngine); + AvatarManager& getAvatarManager() { return _avatarManager; } void resetProfile(const QString& username); @@ -288,6 +292,7 @@ public: virtual float getSizeScale() const; virtual int getBoundaryLevelAdjust() const; virtual PickRay computePickRay(float x, float y); + virtual const glm::vec3& getAvatarPosition() const { return getAvatar()->getPosition(); } NodeBounds& getNodeBoundsDisplay() { return _nodeBoundsDisplay; } @@ -312,9 +317,6 @@ public: bool isVSyncEditable() const; bool isAboutToQuit() const { return _aboutToQuit; } - - void registerScriptEngineWithApplicationServices(ScriptEngine* scriptEngine); - // the isHMDmode is true whenever we use the interface from an HMD and not a standard flat display // rendering of several elements depend on that // TODO: carry that information on the Camera as a setting diff --git a/interface/src/entities/EntityTreeRenderer.cpp b/interface/src/entities/EntityTreeRenderer.cpp index 6684daf7e8..5654b416f1 100644 --- a/interface/src/entities/EntityTreeRenderer.cpp +++ b/interface/src/entities/EntityTreeRenderer.cpp @@ -11,16 +11,21 @@ #include +#include // TODO - we need to get rid of this ASAP + #include +#include #include - + +#include +#include #include +#include #include #include -#include +#include -#include "Application.h" #include "EntityTreeRenderer.h" #include "RenderableBoxEntityItem.h" @@ -30,12 +35,14 @@ #include "RenderableTextEntityItem.h" -EntityTreeRenderer::EntityTreeRenderer(bool wantScripts, ViewStateInterface* viewState) : +EntityTreeRenderer::EntityTreeRenderer(bool wantScripts, AbstractViewStateInterface* viewState, + AbstractScriptingServicesInterface* scriptingServices) : OctreeRenderer(), _wantScripts(wantScripts), _entitiesScriptEngine(NULL), _lastMouseEventValid(false), _viewState(viewState), + _scriptingServices(scriptingServices), _displayElementChildProxies(false), _displayModelBounds(false), _displayModelElementProxy(false), @@ -70,13 +77,13 @@ void EntityTreeRenderer::init() { if (_wantScripts) { _entitiesScriptEngine = new ScriptEngine(NO_SCRIPT, "Entities", - Application::getInstance()->getControllerScriptingInterface()); - Application::getInstance()->registerScriptEngineWithApplicationServices(_entitiesScriptEngine); + _scriptingServices->getControllerScriptingInterface()); + _scriptingServices->registerScriptEngineWithApplicationServices(_entitiesScriptEngine); } // make sure our "last avatar position" is something other than our current position, so that on our // first chance, we'll check for enter/leave entity events. - glm::vec3 avatarPosition = Application::getInstance()->getAvatar()->getPosition(); + glm::vec3 avatarPosition = _viewState->getAvatarPosition(); _lastAvatarPosition = avatarPosition + glm::vec3(1.0f, 1.0f, 1.0f); connect(entityTree, &EntityTree::deletingEntity, this, &EntityTreeRenderer::deletingEntity); @@ -233,7 +240,7 @@ void EntityTreeRenderer::update() { void EntityTreeRenderer::checkEnterLeaveEntities() { if (_tree) { _tree->lockForWrite(); // so that our scripts can do edits if they want - glm::vec3 avatarPosition = Application::getInstance()->getAvatar()->getPosition() / (float) TREE_SCALE; + glm::vec3 avatarPosition = _viewState->getAvatarPosition() / (float) TREE_SCALE; if (avatarPosition != _lastAvatarPosition) { float radius = 1.0f / (float) TREE_SCALE; // for now, assume 1 meter radius diff --git a/interface/src/entities/EntityTreeRenderer.h b/interface/src/entities/EntityTreeRenderer.h index c3bd77aba7..f827685409 100644 --- a/interface/src/entities/EntityTreeRenderer.h +++ b/interface/src/entities/EntityTreeRenderer.h @@ -19,6 +19,8 @@ class Model; class ScriptEngine; +class AbstractViewStateInterface; +class AbstractScriptingServicesInterface; class EntityScriptDetails { public: @@ -30,7 +32,8 @@ public: class EntityTreeRenderer : public OctreeRenderer, public EntityItemFBXService { Q_OBJECT public: - EntityTreeRenderer(bool wantScripts, ViewStateInterface* viewState); + EntityTreeRenderer(bool wantScripts, AbstractViewStateInterface* viewState, + AbstractScriptingServicesInterface* scriptingServices); virtual ~EntityTreeRenderer(); virtual char getMyNodeType() const { return NodeType::EntityServer; } @@ -141,7 +144,8 @@ private: bool _lastMouseEventValid; MouseEvent _lastMouseEvent; - ViewStateInterface* _viewState; + AbstractViewStateInterface* _viewState; + AbstractScriptingServicesInterface* _scriptingServices; bool _displayElementChildProxies; bool _displayModelBounds; bool _displayModelElementProxy; diff --git a/libraries/render-utils/src/AbstractViewStateInterface.h b/libraries/render-utils/src/AbstractViewStateInterface.h index 5f85e998a4..50a75c769a 100644 --- a/libraries/render-utils/src/AbstractViewStateInterface.h +++ b/libraries/render-utils/src/AbstractViewStateInterface.h @@ -1,5 +1,5 @@ // -// ViewStateInterface.h +// AbstractViewStateInterface.h // interface/src/renderer // // Created by Brad Hefta-Gaub on 12/16/14. @@ -9,16 +9,18 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // -#ifndef hifi_ViewStateInterface_h -#define hifi_ViewStateInterface_h +#ifndef hifi_AbstractViewStateInterface_h +#define hifi_AbstractViewStateInterface_h -#include +#include class Transform; class QThread; +class ViewFrustum; +class PickRay; /// Interface provided by Application to other objects that need access to the current view state details -class ViewStateInterface { +class AbstractViewStateInterface { public: /// Returns the shadow distances for the current view state @@ -41,7 +43,9 @@ public: virtual float getSizeScale() const = 0; virtual int getBoundaryLevelAdjust() const = 0; virtual PickRay computePickRay(float x, float y) = 0; + + virtual const glm::vec3& getAvatarPosition() const = 0; }; -#endif // hifi_ViewStateInterface_h +#endif // hifi_AbstractViewStateInterface_h diff --git a/libraries/render-utils/src/AmbientOcclusionEffect.cpp b/libraries/render-utils/src/AmbientOcclusionEffect.cpp index b9289204c7..40a02a60a4 100644 --- a/libraries/render-utils/src/AmbientOcclusionEffect.cpp +++ b/libraries/render-utils/src/AmbientOcclusionEffect.cpp @@ -19,6 +19,7 @@ #include #include +#include "AbstractViewStateInterface.h" #include "AmbientOcclusionEffect.h" #include "GlowEffect.h" #include "ProgramObject.h" @@ -28,7 +29,7 @@ const int ROTATION_WIDTH = 4; const int ROTATION_HEIGHT = 4; -void AmbientOcclusionEffect::init(ViewStateInterface* viewState) { +void AmbientOcclusionEffect::init(AbstractViewStateInterface* viewState) { _viewState = viewState; // we will use this for view state services _occlusionProgram = new ProgramObject(); diff --git a/libraries/render-utils/src/AmbientOcclusionEffect.h b/libraries/render-utils/src/AmbientOcclusionEffect.h index 1ee7269480..59ab8b7c8b 100644 --- a/libraries/render-utils/src/AmbientOcclusionEffect.h +++ b/libraries/render-utils/src/AmbientOcclusionEffect.h @@ -14,8 +14,7 @@ #include -#include "ViewStateInterface.h" - +class AbstractViewStateInterface; class ProgramObject; /// A screen space ambient occlusion effect. See John Chapman's tutorial at @@ -23,7 +22,7 @@ class ProgramObject; class AmbientOcclusionEffect: public DependencyManager::Dependency { public: - void init(ViewStateInterface* viewState); + void init(AbstractViewStateInterface* viewState); void render(); private: @@ -44,7 +43,7 @@ private: int _blurScaleLocation; GLuint _rotationTextureID; - ViewStateInterface* _viewState; + AbstractViewStateInterface* _viewState; }; #endif // hifi_AmbientOcclusionEffect_h diff --git a/libraries/render-utils/src/DeferredLightingEffect.cpp b/libraries/render-utils/src/DeferredLightingEffect.cpp index 9f54b25441..5af14b6640 100644 --- a/libraries/render-utils/src/DeferredLightingEffect.cpp +++ b/libraries/render-utils/src/DeferredLightingEffect.cpp @@ -12,22 +12,15 @@ // include this before QOpenGLFramebufferObject, which includes an earlier version of OpenGL #include - -// TODO: remove these once we migrate away from GLUT calls -#if defined(__APPLE__) -#include -#elif defined(WIN32) -#include -#else -#include -#endif +#include // TODO - we need to get rid of this ASAP #include #include #include +#include - +#include "AbstractViewStateInterface.h" #include "DeferredLightingEffect.h" #include "GeometryCache.h" #include "GlowEffect.h" @@ -35,7 +28,7 @@ #include "TextureCache.h" -void DeferredLightingEffect::init(ViewStateInterface* viewState) { +void DeferredLightingEffect::init(AbstractViewStateInterface* viewState) { _viewState = viewState; _simpleProgram.addShaderFromSourceFile(QGLShader::Vertex, PathUtils::resourcesPath() + "shaders/simple.vert"); _simpleProgram.addShaderFromSourceFile(QGLShader::Fragment, PathUtils::resourcesPath() + "shaders/simple.frag"); diff --git a/libraries/render-utils/src/DeferredLightingEffect.h b/libraries/render-utils/src/DeferredLightingEffect.h index 5dcd7d35f4..955a289f6d 100644 --- a/libraries/render-utils/src/DeferredLightingEffect.h +++ b/libraries/render-utils/src/DeferredLightingEffect.h @@ -18,15 +18,15 @@ #include #include "ProgramObject.h" -#include "ViewStateInterface.h" +class AbstractViewStateInterface; class PostLightingRenderable; /// Handles deferred lighting for the bits that require it (voxels, metavoxels...) class DeferredLightingEffect: public DependencyManager::Dependency { public: - void init(ViewStateInterface* viewState); + void init(AbstractViewStateInterface* viewState); /// Returns a reference to a simple program suitable for rendering static /// untextured geometry (such as that generated by glutSolidSphere, etc.) @@ -125,7 +125,7 @@ private: QVector _spotLights; QVector _postLightingRenderables; - ViewStateInterface* _viewState; + AbstractViewStateInterface* _viewState; }; /// Simple interface for objects that require something to be rendered after deferred lighting. diff --git a/libraries/render-utils/src/Model.cpp b/libraries/render-utils/src/Model.cpp index 16e6b1bf02..b422a7f404 100644 --- a/libraries/render-utils/src/Model.cpp +++ b/libraries/render-utils/src/Model.cpp @@ -27,7 +27,9 @@ #include #include #include +#include +#include "AbstractViewStateInterface.h" #include "AnimationHandle.h" #include "DeferredLightingEffect.h" #include "GlowEffect.h" @@ -111,7 +113,7 @@ Model::SkinLocations Model::_skinNormalSpecularMapLocations; Model::SkinLocations Model::_skinShadowLocations; Model::SkinLocations Model::_skinTranslucentLocations; -ViewStateInterface* Model::_viewState = NULL; +AbstractViewStateInterface* Model::_viewState = NULL; void Model::setScale(const glm::vec3& scale) { setScaleInternal(scale); diff --git a/libraries/render-utils/src/Model.h b/libraries/render-utils/src/Model.h index d24f349f81..841389073e 100644 --- a/libraries/render-utils/src/Model.h +++ b/libraries/render-utils/src/Model.h @@ -32,8 +32,8 @@ #include "JointState.h" #include "ProgramObject.h" #include "TextureCache.h" -#include "ViewStateInterface.h" +class AbstractViewStateInterface; class QScriptEngine; class Shape; @@ -47,7 +47,7 @@ class Model : public QObject, public PhysicsEntity { public: - static void setViewStateInterface(ViewStateInterface* viewState) { _viewState = viewState; } + static void setAbstractViewStateInterface(AbstractViewStateInterface* viewState) { _viewState = viewState; } Model(QObject* parent = NULL); virtual ~Model(); @@ -459,7 +459,7 @@ private: bool hasLightmap, bool hasTangents, bool hasSpecular, bool isSkinned, RenderArgs* args); - static ViewStateInterface* _viewState; + static AbstractViewStateInterface* _viewState; }; From a465aa20ff5bb2b6a9b3ac396137fd74ab65c34d Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Wed, 17 Dec 2014 11:41:42 -0800 Subject: [PATCH 07/11] more Application and Menu dependency removal --- .../entities/RenderableLightEntityItem.cpp | 33 ++++++++----------- .../entities/RenderableModelEntityItem.cpp | 24 +++----------- .../src/entities/RenderableModelEntityItem.h | 1 + .../entities/src/EntityScriptingInterface.cpp | 10 ++---- libraries/entities/src/EntityTree.cpp | 1 - libraries/entities/src/EntityTree.h | 3 -- libraries/entities/src/LightEntityItem.cpp | 1 + libraries/entities/src/LightEntityItem.h | 5 +++ 8 files changed, 29 insertions(+), 49 deletions(-) diff --git a/interface/src/entities/RenderableLightEntityItem.cpp b/interface/src/entities/RenderableLightEntityItem.cpp index be64fe7520..9097956c88 100644 --- a/interface/src/entities/RenderableLightEntityItem.cpp +++ b/interface/src/entities/RenderableLightEntityItem.cpp @@ -16,8 +16,6 @@ #include #include -#include "Application.h" -#include "Menu.h" #include "RenderableLightEntityItem.h" EntityItem* RenderableLightEntityItem::factory(const EntityItemID& entityID, const EntityItemProperties& properties) { @@ -55,17 +53,13 @@ void RenderableLightEntityItem::render(RenderArgs* args) { float exponent = getExponent(); float cutoff = glm::radians(getCutoff()); - bool disableLights = Menu::getInstance()->isOptionChecked(MenuOption::DisableLightEntities); - - if (!disableLights) { - if (_isSpotlight) { - DependencyManager::get()->addSpotLight(position, largestDiameter / 2.0f, - ambient, diffuse, specular, constantAttenuation, linearAttenuation, quadraticAttenuation, - direction, exponent, cutoff); - } else { - DependencyManager::get()->addPointLight(position, largestDiameter / 2.0f, - ambient, diffuse, specular, constantAttenuation, linearAttenuation, quadraticAttenuation); - } + if (_isSpotlight) { + DependencyManager::get()->addSpotLight(position, largestDiameter / 2.0f, + ambient, diffuse, specular, constantAttenuation, linearAttenuation, quadraticAttenuation, + direction, exponent, cutoff); + } else { + DependencyManager::get()->addPointLight(position, largestDiameter / 2.0f, + ambient, diffuse, specular, constantAttenuation, linearAttenuation, quadraticAttenuation); } #ifdef WANT_DEBUG @@ -88,10 +82,11 @@ void RenderableLightEntityItem::render(RenderArgs* args) { bool RenderableLightEntityItem::findDetailedRayIntersection(const glm::vec3& origin, const glm::vec3& direction, bool& keepSearching, OctreeElement*& element, float& distance, BoxFace& face, void** intersectedObject, bool precisionPicking) const { - - // TODO: this isn't really correct because we don't know if we actually live in the main tree of the applications's - // EntityTreeRenderer. But we probably do. Technically we could be on the clipboard and someone might be trying to - // use the ray intersection API there. Anyway... if you ever try to do ray intersection testing off of trees other - // than the main tree of the main entity renderer, then you'll need to fix this mechanism. - return Application::getInstance()->getEntities()->getTree()->getLightsArePickable(); + + // TODO: consider if this is really what we want to do. We've made it so that "lights are pickable" is a global state + // this is probably reasonable since there's typically only one tree you'd be picking on at a time. Technically we could + // be on the clipboard and someone might be trying to use the ray intersection API there. Anyway... if you ever try to + // do ray intersection testing off of trees other than the main tree of the main entity renderer, then we'll need to + // fix this mechanism. + return _lightsArePickable; } diff --git a/interface/src/entities/RenderableModelEntityItem.cpp b/interface/src/entities/RenderableModelEntityItem.cpp index c998570a27..3e5118d203 100644 --- a/interface/src/entities/RenderableModelEntityItem.cpp +++ b/interface/src/entities/RenderableModelEntityItem.cpp @@ -13,10 +13,13 @@ #include +#include + #include +#include #include -#include "Menu.h" +#include "EntityTreeRenderer.h" #include "RenderableModelEntityItem.h" EntityItem* RenderableModelEntityItem::factory(const EntityItemID& entityID, const EntityItemProperties& properties) { @@ -159,28 +162,11 @@ void RenderableModelEntityItem::render(RenderArgs* args) { _needsInitialSimulation = false; } - // TODO: should we allow entityItems to have alpha on their models? - Model::RenderMode modelRenderMode = args->_renderMode == RenderArgs::SHADOW_RENDER_MODE - ? Model::SHADOW_RENDER_MODE : Model::DEFAULT_RENDER_MODE; - if (_model->isActive()) { // TODO: this is the majority of model render time. And rendering of a cube model vs the basic Box render // is significantly more expensive. Is there a way to call this that doesn't cost us as much? PerformanceTimer perfTimer("model->render"); - bool dontRenderAsScene = Menu::getInstance()->isOptionChecked(MenuOption::DontRenderEntitiesAsScene); - bool displayModelTriangles = Menu::getInstance()->isOptionChecked(MenuOption::DisplayModelTriangles); - bool rendered = false; - if (displayModelTriangles) { - rendered = _model->renderTriangleProxies(); - } - - if (!rendered) { - if (dontRenderAsScene) { - _model->render(alpha, modelRenderMode, args); - } else { - _model->renderInScene(alpha, args); - } - } + _model->renderInScene(alpha, args); } else { // if we couldn't get a model, then just draw a cube glColor3ub(getColor()[RED_INDEX],getColor()[GREEN_INDEX],getColor()[BLUE_INDEX]); diff --git a/interface/src/entities/RenderableModelEntityItem.h b/interface/src/entities/RenderableModelEntityItem.h index 9e66e4ef40..6f61a1b9db 100644 --- a/interface/src/entities/RenderableModelEntityItem.h +++ b/interface/src/entities/RenderableModelEntityItem.h @@ -18,6 +18,7 @@ #include class Model; +class EntityTreeRenderer; class RenderableModelEntityItem : public ModelEntityItem { public: diff --git a/libraries/entities/src/EntityScriptingInterface.cpp b/libraries/entities/src/EntityScriptingInterface.cpp index 26870ad9bb..6226012052 100644 --- a/libraries/entities/src/EntityScriptingInterface.cpp +++ b/libraries/entities/src/EntityScriptingInterface.cpp @@ -11,6 +11,7 @@ #include "EntityScriptingInterface.h" #include "EntityTree.h" +#include "LightEntityItem.h" #include "ModelEntityItem.h" EntityScriptingInterface::EntityScriptingInterface() : @@ -226,16 +227,11 @@ RayToEntityIntersectionResult EntityScriptingInterface::findRayIntersectionWorke } void EntityScriptingInterface::setLightsArePickable(bool value) { - if (_entityTree) { - _entityTree->setLightsArePickable(value); - } + LightEntityItem::setLightsArePickable(value); } bool EntityScriptingInterface::getLightsArePickable() const { - if (_entityTree) { - return _entityTree->getLightsArePickable(); - } - return false; + return LightEntityItem::getLightsArePickable(); } diff --git a/libraries/entities/src/EntityTree.cpp b/libraries/entities/src/EntityTree.cpp index 17178ccbed..fb8e4345f4 100644 --- a/libraries/entities/src/EntityTree.cpp +++ b/libraries/entities/src/EntityTree.cpp @@ -22,7 +22,6 @@ EntityTree::EntityTree(bool shouldReaverage) : Octree(shouldReaverage), _fbxService(NULL), - _lightsArePickable(true), _simulation(NULL) { _rootElement = createNewElement(); diff --git a/libraries/entities/src/EntityTree.h b/libraries/entities/src/EntityTree.h index 9a0fb43ecb..cfd08c3b5c 100644 --- a/libraries/entities/src/EntityTree.h +++ b/libraries/entities/src/EntityTree.h @@ -150,8 +150,6 @@ public: void emitEntityScriptChanging(const EntityItemID& entityItemID); - bool getLightsArePickable() const { return _lightsArePickable; } - void setLightsArePickable(bool value) { _lightsArePickable = value; } void setSimulation(EntitySimulation* simulation); signals: @@ -180,7 +178,6 @@ private: QHash _entityToElementMap; - bool _lightsArePickable; EntitySimulation* _simulation; }; diff --git a/libraries/entities/src/LightEntityItem.cpp b/libraries/entities/src/LightEntityItem.cpp index a24fe58c2a..44b83bc94e 100644 --- a/libraries/entities/src/LightEntityItem.cpp +++ b/libraries/entities/src/LightEntityItem.cpp @@ -18,6 +18,7 @@ #include "EntityTreeElement.h" #include "LightEntityItem.h" +bool LightEntityItem::_lightsArePickable = false; EntityItem* LightEntityItem::factory(const EntityItemID& entityID, const EntityItemProperties& properties) { return new LightEntityItem(entityID, properties); diff --git a/libraries/entities/src/LightEntityItem.h b/libraries/entities/src/LightEntityItem.h index eb9a2ed051..6ebb85beda 100644 --- a/libraries/entities/src/LightEntityItem.h +++ b/libraries/entities/src/LightEntityItem.h @@ -99,6 +99,9 @@ public: void setCutoff(float value) { _cutoff = value; } virtual const Shape& getCollisionShapeInMeters() const { return _emptyShape; } + + static bool getLightsArePickable() { return _lightsArePickable; } + static void setLightsArePickable(bool value) { _lightsArePickable = value; } protected: virtual void recalculateCollisionShape() { /* nothing to do */ } @@ -116,6 +119,8 @@ protected: // used for collision detection SphereShape _emptyShape; + + static bool _lightsArePickable; }; #endif // hifi_LightEntityItem_h From 2be3b73e8c81da64f53fe10379f426d8c9fa9e91 Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Wed, 17 Dec 2014 12:32:52 -0800 Subject: [PATCH 08/11] move TextRender to libraries/render-utils --- interface/src/Application.cpp | 2 +- interface/src/Util.cpp | 6 +++--- interface/src/avatar/Avatar.cpp | 2 +- interface/src/avatar/MyAvatar.cpp | 2 +- interface/src/devices/PrioVR.cpp | 2 +- interface/src/entities/RenderableTextEntityItem.cpp | 2 +- interface/src/ui/BandwidthMeter.h | 2 +- interface/src/ui/overlays/Text3DOverlay.cpp | 3 ++- interface/src/ui/overlays/TextOverlay.cpp | 2 +- .../src/ui => libraries/render-utils/src}/TextRenderer.cpp | 3 ++- .../src/ui => libraries/render-utils/src}/TextRenderer.h | 7 ++++--- 11 files changed, 18 insertions(+), 15 deletions(-) rename {interface/src/ui => libraries/render-utils/src}/TextRenderer.cpp (99%) rename {interface/src/ui => libraries/render-utils/src}/TextRenderer.h (97%) diff --git a/interface/src/Application.cpp b/interface/src/Application.cpp index 1453cec53b..62f06f81d5 100644 --- a/interface/src/Application.cpp +++ b/interface/src/Application.cpp @@ -73,6 +73,7 @@ #include #include #include +#include #include #include @@ -109,7 +110,6 @@ #include "ui/InfoView.h" #include "ui/Snapshot.h" #include "ui/Stats.h" -#include "ui/TextRenderer.h" diff --git a/interface/src/Util.cpp b/interface/src/Util.cpp index 6d40726f14..458640820b 100644 --- a/interface/src/Util.cpp +++ b/interface/src/Util.cpp @@ -19,12 +19,12 @@ #include #include -#include - #include +#include +#include + #include "InterfaceConfig.h" -#include "ui/TextRenderer.h" #include "VoxelConstants.h" #include "world.h" #include "Application.h" diff --git a/interface/src/avatar/Avatar.cpp b/interface/src/avatar/Avatar.cpp index 51fde3df43..81d7920783 100644 --- a/interface/src/avatar/Avatar.cpp +++ b/interface/src/avatar/Avatar.cpp @@ -30,6 +30,7 @@ #include #include #include +#include #include #include "Application.h" @@ -42,7 +43,6 @@ #include "Recorder.h" #include "world.h" #include "devices/OculusManager.h" -#include "ui/TextRenderer.h" using namespace std; diff --git a/interface/src/avatar/MyAvatar.cpp b/interface/src/avatar/MyAvatar.cpp index 6976e26e86..37afd404dc 100644 --- a/interface/src/avatar/MyAvatar.cpp +++ b/interface/src/avatar/MyAvatar.cpp @@ -30,6 +30,7 @@ #include #include #include +#include #include "Application.h" #include "Audio.h" @@ -41,7 +42,6 @@ #include "Recorder.h" #include "devices/Faceshift.h" #include "devices/OculusManager.h" -#include "ui/TextRenderer.h" using namespace std; diff --git a/interface/src/devices/PrioVR.cpp b/interface/src/devices/PrioVR.cpp index d3e985d259..0417a50527 100644 --- a/interface/src/devices/PrioVR.cpp +++ b/interface/src/devices/PrioVR.cpp @@ -14,11 +14,11 @@ #include #include +#include #include "Application.h" #include "PrioVR.h" #include "scripting/JoystickScriptingInterface.h" -#include "ui/TextRenderer.h" #ifdef HAVE_PRIOVR const unsigned int SERIAL_LIST[] = { 0x00000001, 0x00000000, 0x00000008, 0x00000009, 0x0000000A, diff --git a/interface/src/entities/RenderableTextEntityItem.cpp b/interface/src/entities/RenderableTextEntityItem.cpp index 5a3d5df8f9..24f4a71295 100644 --- a/interface/src/entities/RenderableTextEntityItem.cpp +++ b/interface/src/entities/RenderableTextEntityItem.cpp @@ -13,9 +13,9 @@ #include #include +#include #include "RenderableTextEntityItem.h" -#include "ui/TextRenderer.h" const int FIXED_FONT_POINT_SIZE = 40; const float LINE_SCALE_RATIO = 1.2f; diff --git a/interface/src/ui/BandwidthMeter.h b/interface/src/ui/BandwidthMeter.h index 09353512d1..9931355f8e 100644 --- a/interface/src/ui/BandwidthMeter.h +++ b/interface/src/ui/BandwidthMeter.h @@ -16,7 +16,7 @@ #include -#include "ui/TextRenderer.h" +#include class BandwidthMeter { diff --git a/interface/src/ui/overlays/Text3DOverlay.cpp b/interface/src/ui/overlays/Text3DOverlay.cpp index 41e36cb396..9b80d873f9 100644 --- a/interface/src/ui/overlays/Text3DOverlay.cpp +++ b/interface/src/ui/overlays/Text3DOverlay.cpp @@ -11,9 +11,10 @@ // include this before QGLWidget, which includes an earlier version of OpenGL #include "InterfaceConfig.h" +#include + #include "Application.h" #include "Text3DOverlay.h" -#include "ui/TextRenderer.h" const xColor DEFAULT_BACKGROUND_COLOR = { 0, 0, 0 }; const float DEFAULT_BACKGROUND_ALPHA = 0.7f; diff --git a/interface/src/ui/overlays/TextOverlay.cpp b/interface/src/ui/overlays/TextOverlay.cpp index ae8a7cbcfe..97d910eb64 100644 --- a/interface/src/ui/overlays/TextOverlay.cpp +++ b/interface/src/ui/overlays/TextOverlay.cpp @@ -13,9 +13,9 @@ #include #include +#include #include "TextOverlay.h" -#include "ui/TextRenderer.h" TextOverlay::TextOverlay() : _backgroundColor(DEFAULT_BACKGROUND_COLOR), diff --git a/interface/src/ui/TextRenderer.cpp b/libraries/render-utils/src/TextRenderer.cpp similarity index 99% rename from interface/src/ui/TextRenderer.cpp rename to libraries/render-utils/src/TextRenderer.cpp index fce4c76c0d..34098c6862 100644 --- a/interface/src/ui/TextRenderer.cpp +++ b/libraries/render-utils/src/TextRenderer.cpp @@ -9,6 +9,8 @@ // See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html // +#include + #include #include #include @@ -18,7 +20,6 @@ #include #include -#include "InterfaceConfig.h" #include "TextRenderer.h" #include "glm/glm.hpp" diff --git a/interface/src/ui/TextRenderer.h b/libraries/render-utils/src/TextRenderer.h similarity index 97% rename from interface/src/ui/TextRenderer.h rename to libraries/render-utils/src/TextRenderer.h index 2ffd8b24b7..078efb0463 100644 --- a/interface/src/ui/TextRenderer.h +++ b/libraries/render-utils/src/TextRenderer.h @@ -12,6 +12,8 @@ #ifndef hifi_TextRenderer_h #define hifi_TextRenderer_h +#include + #include #include #include @@ -19,11 +21,10 @@ #include #include -#include "gpu/Resource.h" -#include "gpu/Stream.h" +#include +#include -#include "InterfaceConfig.h" // a special "character" that renders as a solid block const char SOLID_BLOCK_CHAR = 127; From 9f9b8bcb68432c8a511f17d8f1f1b63b1c6d0d54 Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Wed, 17 Dec 2014 12:54:41 -0800 Subject: [PATCH 09/11] move interface/entities to libraries/entities-renderer --- interface/CMakeLists.txt | 3 +- interface/src/Application.h | 2 +- libraries/entities-renderer/CMakeLists.txt | 37 +++++++++++++++++++ .../src}/EntityTreeRenderer.cpp | 0 .../src}/EntityTreeRenderer.h | 0 .../src}/RenderableBoxEntityItem.cpp | 0 .../src}/RenderableBoxEntityItem.h | 0 .../src}/RenderableLightEntityItem.cpp | 0 .../src}/RenderableLightEntityItem.h | 0 .../src}/RenderableModelEntityItem.cpp | 0 .../src}/RenderableModelEntityItem.h | 0 .../src}/RenderableSphereEntityItem.cpp | 0 .../src}/RenderableSphereEntityItem.h | 0 .../src}/RenderableTextEntityItem.cpp | 0 .../src}/RenderableTextEntityItem.h | 0 15 files changed, 40 insertions(+), 2 deletions(-) create mode 100644 libraries/entities-renderer/CMakeLists.txt rename {interface/src/entities => libraries/entities-renderer/src}/EntityTreeRenderer.cpp (100%) rename {interface/src/entities => libraries/entities-renderer/src}/EntityTreeRenderer.h (100%) rename {interface/src/entities => libraries/entities-renderer/src}/RenderableBoxEntityItem.cpp (100%) rename {interface/src/entities => libraries/entities-renderer/src}/RenderableBoxEntityItem.h (100%) rename {interface/src/entities => libraries/entities-renderer/src}/RenderableLightEntityItem.cpp (100%) rename {interface/src/entities => libraries/entities-renderer/src}/RenderableLightEntityItem.h (100%) rename {interface/src/entities => libraries/entities-renderer/src}/RenderableModelEntityItem.cpp (100%) rename {interface/src/entities => libraries/entities-renderer/src}/RenderableModelEntityItem.h (100%) rename {interface/src/entities => libraries/entities-renderer/src}/RenderableSphereEntityItem.cpp (100%) rename {interface/src/entities => libraries/entities-renderer/src}/RenderableSphereEntityItem.h (100%) rename {interface/src/entities => libraries/entities-renderer/src}/RenderableTextEntityItem.cpp (100%) rename {interface/src/entities => libraries/entities-renderer/src}/RenderableTextEntityItem.h (100%) diff --git a/interface/CMakeLists.txt b/interface/CMakeLists.txt index ffc401ba63..8c7b7b2211 100644 --- a/interface/CMakeLists.txt +++ b/interface/CMakeLists.txt @@ -107,7 +107,8 @@ endif() add_executable(${TARGET_NAME} MACOSX_BUNDLE ${INTERFACE_SRCS} ${QM}) # link required hifi libraries -link_hifi_libraries(shared octree voxels gpu fbx metavoxels networking entities avatars audio animation script-engine physics render-utils) +link_hifi_libraries(shared octree voxels gpu fbx metavoxels networking entities avatars audio animation script-engine physics + render-utils entities-renderer) # find any optional and required libraries find_package(ZLIB REQUIRED) diff --git a/interface/src/Application.h b/interface/src/Application.h index d192a9abe6..7a727d07b5 100644 --- a/interface/src/Application.h +++ b/interface/src/Application.h @@ -36,6 +36,7 @@ #include #include #include +#include #include #include #include @@ -62,7 +63,6 @@ #include "avatar/MyAvatar.h" #include "devices/PrioVR.h" #include "devices/SixenseManager.h" -#include "entities/EntityTreeRenderer.h" #include "scripting/ControllerScriptingInterface.h" #include "ui/BandwidthDialog.h" #include "ui/BandwidthMeter.h" diff --git a/libraries/entities-renderer/CMakeLists.txt b/libraries/entities-renderer/CMakeLists.txt new file mode 100644 index 0000000000..5744ea0b7b --- /dev/null +++ b/libraries/entities-renderer/CMakeLists.txt @@ -0,0 +1,37 @@ +set(TARGET_NAME entities-renderer) + +# use setup_hifi_library macro to setup our project and link appropriate Qt modules +setup_hifi_library(Widgets OpenGL Network Script) + +include_glm() + +link_hifi_libraries(shared gpu) +if (APPLE) + # link in required OS X frameworks and include the right GL headers + find_library(OpenGL OpenGL) + + #target_link_libraries(${TARGET_NAME} ${OpenGL}) + +else (APPLE) + find_package(OpenGL REQUIRED) + + if (${OPENGL_INCLUDE_DIR}) + include_directories(SYSTEM "${OPENGL_INCLUDE_DIR}") + endif () + + # link target to external libraries + if (WIN32) + find_package(GLEW REQUIRED) + include_directories(${GLEW_INCLUDE_DIRS}) + + find_package(GLUT REQUIRED) + include_directories(SYSTEM "${GLUT_INCLUDE_DIRS}") + + # we're using static GLEW, so define GLEW_STATIC + add_definitions(-DGLEW_STATIC) + target_link_libraries(${TARGET_NAME} "${GLEW_LIBRARIES}") + endif() +endif (APPLE) + +# call macro to link our dependencies and bubble them up via a property on our target +link_shared_dependencies() diff --git a/interface/src/entities/EntityTreeRenderer.cpp b/libraries/entities-renderer/src/EntityTreeRenderer.cpp similarity index 100% rename from interface/src/entities/EntityTreeRenderer.cpp rename to libraries/entities-renderer/src/EntityTreeRenderer.cpp diff --git a/interface/src/entities/EntityTreeRenderer.h b/libraries/entities-renderer/src/EntityTreeRenderer.h similarity index 100% rename from interface/src/entities/EntityTreeRenderer.h rename to libraries/entities-renderer/src/EntityTreeRenderer.h diff --git a/interface/src/entities/RenderableBoxEntityItem.cpp b/libraries/entities-renderer/src/RenderableBoxEntityItem.cpp similarity index 100% rename from interface/src/entities/RenderableBoxEntityItem.cpp rename to libraries/entities-renderer/src/RenderableBoxEntityItem.cpp diff --git a/interface/src/entities/RenderableBoxEntityItem.h b/libraries/entities-renderer/src/RenderableBoxEntityItem.h similarity index 100% rename from interface/src/entities/RenderableBoxEntityItem.h rename to libraries/entities-renderer/src/RenderableBoxEntityItem.h diff --git a/interface/src/entities/RenderableLightEntityItem.cpp b/libraries/entities-renderer/src/RenderableLightEntityItem.cpp similarity index 100% rename from interface/src/entities/RenderableLightEntityItem.cpp rename to libraries/entities-renderer/src/RenderableLightEntityItem.cpp diff --git a/interface/src/entities/RenderableLightEntityItem.h b/libraries/entities-renderer/src/RenderableLightEntityItem.h similarity index 100% rename from interface/src/entities/RenderableLightEntityItem.h rename to libraries/entities-renderer/src/RenderableLightEntityItem.h diff --git a/interface/src/entities/RenderableModelEntityItem.cpp b/libraries/entities-renderer/src/RenderableModelEntityItem.cpp similarity index 100% rename from interface/src/entities/RenderableModelEntityItem.cpp rename to libraries/entities-renderer/src/RenderableModelEntityItem.cpp diff --git a/interface/src/entities/RenderableModelEntityItem.h b/libraries/entities-renderer/src/RenderableModelEntityItem.h similarity index 100% rename from interface/src/entities/RenderableModelEntityItem.h rename to libraries/entities-renderer/src/RenderableModelEntityItem.h diff --git a/interface/src/entities/RenderableSphereEntityItem.cpp b/libraries/entities-renderer/src/RenderableSphereEntityItem.cpp similarity index 100% rename from interface/src/entities/RenderableSphereEntityItem.cpp rename to libraries/entities-renderer/src/RenderableSphereEntityItem.cpp diff --git a/interface/src/entities/RenderableSphereEntityItem.h b/libraries/entities-renderer/src/RenderableSphereEntityItem.h similarity index 100% rename from interface/src/entities/RenderableSphereEntityItem.h rename to libraries/entities-renderer/src/RenderableSphereEntityItem.h diff --git a/interface/src/entities/RenderableTextEntityItem.cpp b/libraries/entities-renderer/src/RenderableTextEntityItem.cpp similarity index 100% rename from interface/src/entities/RenderableTextEntityItem.cpp rename to libraries/entities-renderer/src/RenderableTextEntityItem.cpp diff --git a/interface/src/entities/RenderableTextEntityItem.h b/libraries/entities-renderer/src/RenderableTextEntityItem.h similarity index 100% rename from interface/src/entities/RenderableTextEntityItem.h rename to libraries/entities-renderer/src/RenderableTextEntityItem.h From 881119ebf3f87112db8c29a904fb216517d393bc Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Wed, 17 Dec 2014 13:23:12 -0800 Subject: [PATCH 10/11] removed dead code --- .../script-engine/src/AbstractScriptingServicesInterface.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/libraries/script-engine/src/AbstractScriptingServicesInterface.h b/libraries/script-engine/src/AbstractScriptingServicesInterface.h index 5e7ad81f67..9d24531b60 100644 --- a/libraries/script-engine/src/AbstractScriptingServicesInterface.h +++ b/libraries/script-engine/src/AbstractScriptingServicesInterface.h @@ -12,8 +12,6 @@ #ifndef hifi_AbstractScriptingServicesInterface_h #define hifi_AbstractScriptingServicesInterface_h -//#include - class AbstractControllerScriptingInterface; class Transform; class ScriptEngine; From 7db350eac29057728fd28e5a415f62b7ec8758bb Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Wed, 17 Dec 2014 14:07:26 -0800 Subject: [PATCH 11/11] remove calls to glut in entities --- .../src/EntityTreeRenderer.cpp | 29 +++++++++---------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.cpp b/libraries/entities-renderer/src/EntityTreeRenderer.cpp index 5654b416f1..7253b96480 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.cpp +++ b/libraries/entities-renderer/src/EntityTreeRenderer.cpp @@ -11,8 +11,6 @@ #include -#include // TODO - we need to get rid of this ASAP - #include #include @@ -20,6 +18,7 @@ #include #include +#include #include #include #include @@ -358,7 +357,7 @@ void EntityTreeRenderer::renderElementProxy(EntityTreeElement* entityTreeElement glColor3f(1.0f, 0.0f, 0.0f); glPushMatrix(); glTranslatef(elementCenter.x, elementCenter.y, elementCenter.z); - glutWireCube(elementSize); + DependencyManager::get()->renderWireCube(elementSize); glPopMatrix(); if (_displayElementChildProxies) { @@ -368,49 +367,49 @@ void EntityTreeRenderer::renderElementProxy(EntityTreeElement* entityTreeElement glColor3f(1.0f, 1.0f, 0.0f); glPushMatrix(); glTranslatef(elementCenter.x - quarterSize, elementCenter.y - quarterSize, elementCenter.z - quarterSize); - glutWireCube(halfSize); + DependencyManager::get()->renderWireCube(halfSize); glPopMatrix(); glColor3f(1.0f, 0.0f, 1.0f); glPushMatrix(); glTranslatef(elementCenter.x + quarterSize, elementCenter.y - quarterSize, elementCenter.z - quarterSize); - glutWireCube(halfSize); + DependencyManager::get()->renderWireCube(halfSize); glPopMatrix(); glColor3f(0.0f, 1.0f, 0.0f); glPushMatrix(); glTranslatef(elementCenter.x - quarterSize, elementCenter.y + quarterSize, elementCenter.z - quarterSize); - glutWireCube(halfSize); + DependencyManager::get()->renderWireCube(halfSize); glPopMatrix(); glColor3f(0.0f, 0.0f, 1.0f); glPushMatrix(); glTranslatef(elementCenter.x - quarterSize, elementCenter.y - quarterSize, elementCenter.z + quarterSize); - glutWireCube(halfSize); + DependencyManager::get()->renderWireCube(halfSize); glPopMatrix(); glColor3f(1.0f, 1.0f, 1.0f); glPushMatrix(); glTranslatef(elementCenter.x + quarterSize, elementCenter.y + quarterSize, elementCenter.z + quarterSize); - glutWireCube(halfSize); + DependencyManager::get()->renderWireCube(halfSize); glPopMatrix(); glColor3f(0.0f, 0.5f, 0.5f); glPushMatrix(); glTranslatef(elementCenter.x - quarterSize, elementCenter.y + quarterSize, elementCenter.z + quarterSize); - glutWireCube(halfSize); + DependencyManager::get()->renderWireCube(halfSize); glPopMatrix(); glColor3f(0.5f, 0.0f, 0.0f); glPushMatrix(); glTranslatef(elementCenter.x + quarterSize, elementCenter.y - quarterSize, elementCenter.z + quarterSize); - glutWireCube(halfSize); + DependencyManager::get()->renderWireCube(halfSize); glPopMatrix(); glColor3f(0.0f, 0.5f, 0.0f); glPushMatrix(); glTranslatef(elementCenter.x + quarterSize, elementCenter.y + quarterSize, elementCenter.z - quarterSize); - glutWireCube(halfSize); + DependencyManager::get()->renderWireCube(halfSize); glPopMatrix(); } } @@ -437,14 +436,14 @@ void EntityTreeRenderer::renderProxies(const EntityItem* entity, RenderArgs* arg glColor4f(1.0f, 1.0f, 0.0f, 1.0f); glPushMatrix(); glTranslatef(maxCenter.x, maxCenter.y, maxCenter.z); - glutWireCube(maxCube.getScale()); + DependencyManager::get()->renderWireCube(maxCube.getScale()); glPopMatrix(); // draw the min bounding cube glColor4f(0.0f, 1.0f, 0.0f, 1.0f); glPushMatrix(); glTranslatef(minCenter.x, minCenter.y, minCenter.z); - glutWireCube(minCube.getScale()); + DependencyManager::get()->renderWireCube(minCube.getScale()); glPopMatrix(); // draw the entityBox bounding box @@ -452,7 +451,7 @@ void EntityTreeRenderer::renderProxies(const EntityItem* entity, RenderArgs* arg glPushMatrix(); glTranslatef(entityBoxCenter.x, entityBoxCenter.y, entityBoxCenter.z); glScalef(entityBoxScale.x, entityBoxScale.y, entityBoxScale.z); - glutWireCube(1.0f); + DependencyManager::get()->renderWireCube(1.0f); glPopMatrix(); @@ -470,7 +469,7 @@ void EntityTreeRenderer::renderProxies(const EntityItem* entity, RenderArgs* arg glm::vec3 positionToCenter = center - position; glTranslatef(positionToCenter.x, positionToCenter.y, positionToCenter.z); glScalef(dimensions.x, dimensions.y, dimensions.z); - glutWireCube(1.0f); + DependencyManager::get()->renderWireCube(1.0f); glPopMatrix(); glPopMatrix(); }