From af57f5d12085acdec96472fb55f9880fcbc2546b Mon Sep 17 00:00:00 2001 From: Andrew Meadows Date: Thu, 4 Feb 2016 13:24:08 -0800 Subject: [PATCH] add simple and fast DirtyOctreeElementOperator --- .../octree/src/DirtyOctreeElementOperator.cpp | 30 +++++++++++++++++++ .../octree/src/DirtyOctreeElementOperator.h | 30 +++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 libraries/octree/src/DirtyOctreeElementOperator.cpp create mode 100644 libraries/octree/src/DirtyOctreeElementOperator.h diff --git a/libraries/octree/src/DirtyOctreeElementOperator.cpp b/libraries/octree/src/DirtyOctreeElementOperator.cpp new file mode 100644 index 0000000000..0f7e6d9f04 --- /dev/null +++ b/libraries/octree/src/DirtyOctreeElementOperator.cpp @@ -0,0 +1,30 @@ +// +// DirtyOctreeElementOperator.cpp +// libraries/entities/src +// +// Created by Andrew Meawdows 2016.02.04 +// Copyright 2016 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 "DirtyOctreeElementOperator.h" + +DirtyOctreeElementOperator::DirtyOctreeElementOperator(OctreeElementPointer element) + : _element(element) { + assert(_element.get()); + _point = _element->getAACube().calcCenter(); +} + +bool DirtyOctreeElementOperator::preRecursion(OctreeElementPointer element) { + if (element == _element) { + return false; + } + return element->getAACube().contains(_point); +} + +bool DirtyOctreeElementOperator::postRecursion(OctreeElementPointer element) { + element->markWithChangedTime(); + return true; +} diff --git a/libraries/octree/src/DirtyOctreeElementOperator.h b/libraries/octree/src/DirtyOctreeElementOperator.h new file mode 100644 index 0000000000..a5eec780a0 --- /dev/null +++ b/libraries/octree/src/DirtyOctreeElementOperator.h @@ -0,0 +1,30 @@ +// +// DirtyOctreeElementOperator.h +// libraries/entities/src +// +// Created by Andrew Meawdows 2016.02.04 +// Copyright 2016 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_DirtyOctreeElementOperator_h +#define hifi_DirtyOctreeElementOperator_h + +#include "Octree.h" + +class DirtyOctreeElementOperator : public RecurseOctreeOperator { +public: + DirtyOctreeElementOperator(OctreeElementPointer element); + + ~DirtyOctreeElementOperator() {} + + virtual bool preRecursion(OctreeElementPointer element); + virtual bool postRecursion(OctreeElementPointer element); +private: + glm::vec3 _point; + OctreeElementPointer _element; +}; + +#endif // hifi_DirtyOctreeElementOperator_h