Minetest 5.9.0-dev
 
Loading...
Searching...
No Matches
face_position_cache.h
Go to the documentation of this file.
1/*
2Minetest
3Copyright (C) 2015 Nerzhul, Loic Blot <loic.blot@unix-experience.fr>
4
5This program is free software; you can redistribute it and/or modify
6it under the terms of the GNU Lesser General Public License as published by
7the Free Software Foundation; either version 2.1 of the License, or
8(at your option) any later version.
9
10This program is distributed in the hope that it will be useful,
11but WITHOUT ANY WARRANTY; without even the implied warranty of
12MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13GNU Lesser General Public License for more details.
14
15You should have received a copy of the GNU Lesser General Public License along
16with this program; if not, write to the Free Software Foundation, Inc.,
1751 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18*/
19
20#pragma once
21
22#include "irr_v3d.h"
23
24#include <map>
25#include <vector>
26#include <unordered_map>
27#include <mutex>
28
29/*
30 * This class permits caching getFacePosition call results.
31 * This reduces CPU usage and vector calls.
32 */
34public:
35 static const std::vector<v3s16> &getFacePositions(u16 d);
36
37private:
38 static const std::vector<v3s16> &generateFacePosition(u16 d);
39 static std::unordered_map<u16, std::vector<v3s16>> cache;
40 static std::mutex cache_mutex;
41};
Definition: face_position_cache.h:33
static const std::vector< v3s16 > & getFacePositions(u16 d)
Definition: face_position_cache.cpp:28
static const std::vector< v3s16 > & generateFacePosition(u16 d)
Definition: face_position_cache.cpp:38
static std::unordered_map< u16, std::vector< v3s16 > > cache
Definition: face_position_cache.h:39
static std::mutex cache_mutex
Definition: face_position_cache.h:40