diff --git a/spine-cpp/spine-cpp/include/spine/Pool.h b/spine-cpp/spine-cpp/include/spine/Pool.h new file mode 100644 index 000000000..83e78a6fb --- /dev/null +++ b/spine-cpp/spine-cpp/include/spine/Pool.h @@ -0,0 +1,81 @@ +/****************************************************************************** + * Spine Runtimes Software License v2.5 + * + * Copyright (c) 2013-2016, Esoteric Software + * All rights reserved. + * + * You are granted a perpetual, non-exclusive, non-sublicensable, and + * non-transferable license to use, install, execute, and perform the Spine + * Runtimes software and derivative works solely for personal or internal + * use. Without the written permission of Esoteric Software (see Section 2 of + * the Spine Software License Agreement), you may not (a) modify, translate, + * adapt, or develop new applications using the Spine Runtimes or otherwise + * create derivative works or improvements of the Spine Runtimes or (b) remove, + * delete, alter, or obscure any trademarks or any copyright, trademark, patent, + * or other intellectual property or proprietary rights notices on or in the + * Software, including any copy thereof. Redistributions in binary or source + * form must include this license and terms. + * + * THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO + * EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF + * USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER + * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE + * POSSIBILITY OF SUCH DAMAGE. + *****************************************************************************/ + +#ifndef Spine_Pool_h +#define Spine_Pool_h + +#include +#include + +namespace Spine +{ + template + class Pool + { + public: + Pool() + { + // Empty + } + + ~Pool() + { + ContainerUtil::cleanUpVectorOfPointers(_objects); + } + + T* obtain() + { + if (_objects.size() > 0) + { + T** object = _objects.begin(); + _objects.erase(0); + + return *object; + } + else + { + return new T(); + } + } + + void free(T* object) + { + if (!_objects.contains(object)) + { + _objects.push_back(object); + } + } + + private: + Vector _objects; + }; +} + +#endif /* Spine_Pool_h */ diff --git a/spine-cpp/spine-cpp/include/spine/Triangulator.h b/spine-cpp/spine-cpp/include/spine/Triangulator.h index 8c252f075..7b2288124 100644 --- a/spine-cpp/spine-cpp/include/spine/Triangulator.h +++ b/spine-cpp/spine-cpp/include/spine/Triangulator.h @@ -32,6 +32,7 @@ #define Spine_Triangulator_h #include +#include namespace Spine { @@ -305,15 +306,15 @@ namespace Spine } private: - Vector> convexPolygons; - Vector> convexPolygonsIndices; + Vector> _convexPolygons; + Vector> _convexPolygonsIndices; - Vector indicesArray; - Vector isConcaveArray; - Vector triangles; + Vector _indicesArray; + Vector _isConcaveArray; + Vector _triangles; - Pool> polygonPool; - Pool> polygonIndicesPool; + Pool> _polygonPool; + Pool> _polygonIndicesPool; static bool isConcave(int index, int vertexCount, Vector vertices, Vector indices) {