From 8366dd02a0f1c0f3bdad779dae359c5a607c0645 Mon Sep 17 00:00:00 2001 From: ZappoMan Date: Tue, 21 Apr 2015 15:03:04 -0700 Subject: [PATCH] remove RenderableZoneEntityItem class since zones don't render like other entities --- .../src/EntityTreeRenderer.cpp | 52 +++++++++---------- .../src/RenderableZoneEntityItem.cpp | 52 ------------------- .../src/RenderableZoneEntityItem.h | 29 ----------- 3 files changed, 25 insertions(+), 108 deletions(-) delete mode 100644 libraries/entities-renderer/src/RenderableZoneEntityItem.cpp delete mode 100644 libraries/entities-renderer/src/RenderableZoneEntityItem.h diff --git a/libraries/entities-renderer/src/EntityTreeRenderer.cpp b/libraries/entities-renderer/src/EntityTreeRenderer.cpp index 59f7aa0f5c..c14a821a38 100644 --- a/libraries/entities-renderer/src/EntityTreeRenderer.cpp +++ b/libraries/entities-renderer/src/EntityTreeRenderer.cpp @@ -34,7 +34,6 @@ #include "RenderableParticleEffectEntityItem.h" #include "RenderableSphereEntityItem.h" #include "RenderableTextEntityItem.h" -#include "RenderableZoneEntityItem.h" #include "EntitiesRendererLogging.h" #include "ZoneEntityItem.h" @@ -58,7 +57,6 @@ EntityTreeRenderer::EntityTreeRenderer(bool wantScripts, AbstractViewStateInterf REGISTER_ENTITY_TYPE_WITH_FACTORY(Light, RenderableLightEntityItem::factory) REGISTER_ENTITY_TYPE_WITH_FACTORY(Text, RenderableTextEntityItem::factory) REGISTER_ENTITY_TYPE_WITH_FACTORY(ParticleEffect, RenderableParticleEffectEntityItem::factory) - REGISTER_ENTITY_TYPE_WITH_FACTORY(Zone, RenderableZoneEntityItem::factory) _currentHoverOverEntityID = EntityItemID::createInvalidEntityID(); // makes it the unknown ID _currentClickingOnEntityID = EntityItemID::createInvalidEntityID(); // makes it the unknown ID @@ -696,42 +694,42 @@ void EntityTreeRenderer::renderElement(OctreeElement* element, RenderArgs* args) if (entityItem->isVisible()) { - // Zone Entities are a special case we handle here... + // NOTE: Zone Entities are a special case we handle here... Zones don't render + // like other entity types. So we will skip the normal rendering tests if (entityItem->getType() == EntityTypes::Zone) { if (entityItem->contains(args->_viewFrustum->getPosition())) { _currentZones << entityItem->getEntityItemID(); } - } - // NOTE: we might not want to render zones here... - - // render entityItem - AABox entityBox = entityItem->getAABox(); + } else { + // render entityItem + AABox entityBox = entityItem->getAABox(); - // TODO: some entity types (like lights) might want to be rendered even - // when they are outside of the view frustum... - float distance = args->_viewFrustum->distanceToCamera(entityBox.calcCenter()); + // TODO: some entity types (like lights) might want to be rendered even + // when they are outside of the view frustum... + float distance = args->_viewFrustum->distanceToCamera(entityBox.calcCenter()); - bool outOfView = args->_viewFrustum->boxInFrustum(entityBox) == ViewFrustum::OUTSIDE; - if (!outOfView) { - bool bigEnoughToRender = _viewState->shouldRenderMesh(entityBox.getLargestDimension(), distance); + bool outOfView = args->_viewFrustum->boxInFrustum(entityBox) == ViewFrustum::OUTSIDE; + if (!outOfView) { + bool bigEnoughToRender = _viewState->shouldRenderMesh(entityBox.getLargestDimension(), distance); - if (bigEnoughToRender) { - renderProxies(entityItem, args); + if (bigEnoughToRender) { + renderProxies(entityItem, args); - Glower* glower = NULL; - if (entityItem->getGlowLevel() > 0.0f) { - glower = new Glower(entityItem->getGlowLevel()); - } - entityItem->render(args); - args->_itemsRendered++; - if (glower) { - delete glower; + Glower* glower = NULL; + if (entityItem->getGlowLevel() > 0.0f) { + glower = new Glower(entityItem->getGlowLevel()); + } + entityItem->render(args); + args->_itemsRendered++; + if (glower) { + delete glower; + } + } else { + args->_itemsTooSmall++; } } else { - args->_itemsTooSmall++; + args->_itemsOutOfView++; } - } else { - args->_itemsOutOfView++; } } } diff --git a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp b/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp deleted file mode 100644 index d13fa37681..0000000000 --- a/libraries/entities-renderer/src/RenderableZoneEntityItem.cpp +++ /dev/null @@ -1,52 +0,0 @@ -// -// RenderableZoneEntityItem.cpp -// interface/src -// -// Created by Brad Hefta-Gaub on 8/6/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 -// - -#include - -#include - -#include -#include - -#include "RenderableZoneEntityItem.h" - -EntityItem* RenderableZoneEntityItem::factory(const EntityItemID& entityID, const EntityItemProperties& properties) { - return new RenderableZoneEntityItem(entityID, properties); -} - -void RenderableZoneEntityItem::render(RenderArgs* args) { - PerformanceTimer perfTimer("RenderableZoneEntityItem::render"); - assert(getType() == EntityTypes::Zone); - glm::vec3 position = getPosition(); - glm::vec3 center = getCenter(); - glm::vec3 dimensions = getDimensions(); - glm::quat rotation = getRotation(); - - const float MAX_COLOR = 255.0f; - - glm::vec4 cubeColor(_keyLightColor[RED_INDEX] / MAX_COLOR, _keyLightColor[GREEN_INDEX] / MAX_COLOR, - _keyLightColor[BLUE_INDEX] / MAX_COLOR, getLocalRenderAlpha()); - - glPushMatrix(); - glTranslatef(position.x, position.y, position.z); - glm::vec3 axis = glm::axis(rotation); - glRotatef(glm::degrees(glm::angle(rotation)), axis.x, axis.y, axis.z); - glPushMatrix(); - glm::vec3 positionToCenter = center - position; - glTranslatef(positionToCenter.x, positionToCenter.y, positionToCenter.z); - glScalef(dimensions.x, dimensions.y, dimensions.z); - DependencyManager::get()->renderWireCube(1.0f, cubeColor); - glPopMatrix(); - glPopMatrix(); - - //debugDump(); - -}; diff --git a/libraries/entities-renderer/src/RenderableZoneEntityItem.h b/libraries/entities-renderer/src/RenderableZoneEntityItem.h deleted file mode 100644 index b05fd0e3f8..0000000000 --- a/libraries/entities-renderer/src/RenderableZoneEntityItem.h +++ /dev/null @@ -1,29 +0,0 @@ -// -// RenderableZoneEntityItem.h -// interface/src/entities -// -// Created by Brad Hefta-Gaub on 8/6/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_RenderableZoneEntityItem_h -#define hifi_RenderableZoneEntityItem_h - -#include - -class RenderableZoneEntityItem : public ZoneEntityItem { -public: - static EntityItem* factory(const EntityItemID& entityID, const EntityItemProperties& properties); - - RenderableZoneEntityItem(const EntityItemID& entityItemID, const EntityItemProperties& properties) : - ZoneEntityItem(entityItemID, properties) - { } - - virtual void render(RenderArgs* args); -}; - - -#endif // hifi_RenderableZoneEntityItem_h