aboutsummaryrefslogtreecommitdiff
path: root/cmake/Modules/FindOpenGLES2.cmake
blob: a47126705290ef6ee6f128fff9781f40f98f8783 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
#-------------------------------------------------------------------
# The contents of this file are placed in the public domain. Feel
# free to make use of it in any way you like.
#-------------------------------------------------------------------

# - Try to find OpenGLES and EGL
# Once done this will define
#
#  OPENGLES2_FOUND        - system has OpenGLES
#  OPENGLES2_INCLUDE_DIR  - the GL include directory
#  OPENGLES2_LIBRARIES    - Link these to use OpenGLES
#
#  EGL_FOUND        - system has EGL
#  EGL_INCLUDE_DIR  - the EGL include directory
#  EGL_LIBRARIES    - Link these to use EGL

# Win32 and Apple are not tested!
# Linux tested and works

if(WIN32)
	find_path(OPENGLES2_INCLUDE_DIR GLES2/gl2.h)
	find_library(OPENGLES2_LIBRARY libGLESv2)
elseif(APPLE)
	create_search_paths(/Developer/Platforms)
	findpkg_framework(OpenGLES2)
	set(OPENGLES2_LIBRARY "-framework OpenGLES")
else()
	# Unix
	find_path(OPENGLES2_INCLUDE_DIR GLES2/gl2.h
		PATHS /usr/openwin/share/include
			/opt/graphics/OpenGL/include
			/usr/X11R6/include
			/usr/include
	)

	find_library(OPENGLES2_LIBRARY
		NAMES GLESv2
		PATHS /opt/graphics/OpenGL/lib
			/usr/openwin/lib
			/usr/X11R6/lib
			/usr/lib
	)

	include(FindPackageHandleStandardArgs)
	find_package_handle_standard_args(OPENGLES2 DEFAULT_MSG OPENGLES2_LIBRARY OPENGLES2_INCLUDE_DIR)

	find_path(EGL_INCLUDE_DIR EGL/egl.h
		PATHS /usr/openwin/share/include
			/opt/graphics/OpenGL/include
			/usr/X11R6/include
			/usr/include
	)

	find_library(EGL_LIBRARY
		NAMES EGL
		PATHS /opt/graphics/OpenGL/lib
			/usr/openwin/lib
			/usr/X11R6/lib
			/usr/lib
	)

	include(FindPackageHandleStandardArgs)
	find_package_handle_standard_args(EGL DEFAULT_MSG EGL_LIBRARY EGL_INCLUDE_DIR)
endif()

set(OPENGLES2_LIBRARIES ${OPENGLES2_LIBRARY})
set(EGL_LIBRARIES ${EGL_LIBRARY})

mark_as_advanced(
	OPENGLES2_INCLUDE_DIR
	OPENGLES2_LIBRARY
	EGL_INCLUDE_DIR
	EGL_LIBRARY
)
/span> */ #include "nodemetadata.h" #include "exceptions.h" #include "gamedef.h" #include "inventory.h" #include "log.h" #include "util/serialize.h" #include "util/basic_macros.h" #include "constants.h" // MAP_BLOCKSIZE #include <sstream> /* NodeMetadata */ NodeMetadata::NodeMetadata(IItemDefManager *item_def_mgr): m_inventory(new Inventory(item_def_mgr)) {} NodeMetadata::~NodeMetadata() { delete m_inventory; } void NodeMetadata::serialize(std::ostream &os, u8 version, bool disk) const { int num_vars = disk ? m_stringvars.size() : countNonPrivate(); writeU32(os, num_vars); for (const auto &sv : m_stringvars) { bool priv = isPrivate(sv.first); if (!disk && priv) continue; os << serializeString(sv.first); os << serializeLongString(sv.second); if (version >= 2) writeU8(os, (priv) ? 1 : 0); } m_inventory->serialize(os); } void NodeMetadata::deSerialize(std::istream &is, u8 version) { clear(); int num_vars = readU32(is); for(int i=0; i<num_vars; i++){ std::string name = deSerializeString(is); std::string var = deSerializeLongString(is); m_stringvars[name] = var; if (version >= 2) { if (readU8(is) == 1) markPrivate(name, true); } } m_inventory->deSerialize(is); } void NodeMetadata::clear() { Metadata::clear(); m_privatevars.clear(); m_inventory->clear(); } bool NodeMetadata::empty() const { return Metadata::empty() && m_inventory->getLists().empty(); } void NodeMetadata::markPrivate(const std::string &name, bool set) { if (set) m_privatevars.insert(name); else m_privatevars.erase(name); } int NodeMetadata::countNonPrivate() const { // m_privatevars can contain names not actually present // DON'T: return m_stringvars.size() - m_privatevars.size(); int n = 0; for (const auto &sv : m_stringvars) { if (!isPrivate(sv.first)) n++; } return n; } /* NodeMetadataList */ void NodeMetadataList::serialize(std::ostream &os, u8 blockver, bool disk) const { /* Version 0 is a placeholder for "nothing to see here; go away." */ u16 count = countNonEmpty(); if (count == 0) { writeU8(os, 0); // version return; } u8 version = (blockver > 27) ? 2 : 1; writeU8(os, version); writeU16(os, count); for (const auto &it : m_data) { v3s16 p = it.first; NodeMetadata *data = it.second; if (data->empty()) continue; u16 p16 = p.Z * MAP_BLOCKSIZE * MAP_BLOCKSIZE + p.Y * MAP_BLOCKSIZE + p.X; writeU16(os, p16); data->serialize(os, version, disk); } } void NodeMetadataList::deSerialize(std::istream &is, IItemDefManager *item_def_mgr) { clear(); u8 version = readU8(is); if (version == 0) { // Nothing return; } if (version > 2) { std::string err_str = std::string(FUNCTION_NAME) + ": version " + itos(version) + " not supported"; infostream << err_str << std::endl; throw SerializationError(err_str); } u16 count = readU16(is); for (u16 i = 0; i < count; i++) { u16 p16 = readU16(is); v3s16 p; p.Z = p16 / MAP_BLOCKSIZE / MAP_BLOCKSIZE; p16 &= MAP_BLOCKSIZE * MAP_BLOCKSIZE - 1; p.Y = p16 / MAP_BLOCKSIZE; p16 &= MAP_BLOCKSIZE - 1; p.X = p16; if (m_data.find(p) != m_data.end()) { warningstream << "NodeMetadataList::deSerialize(): " << "already set data at position " << PP(p) << ": Ignoring." << std::endl; continue; } NodeMetadata *data = new NodeMetadata(item_def_mgr); data->deSerialize(is, version); m_data[p] = data; } } NodeMetadataList::~NodeMetadataList() { clear(); } std::vector<v3s16> NodeMetadataList::getAllKeys() { std::vector<v3s16> keys; std::map<v3s16, NodeMetadata *>::const_iterator it; for (it = m_data.begin(); it != m_data.end(); ++it) keys.push_back(it->first); return keys; } NodeMetadata *NodeMetadataList::get(v3s16 p) { std::map<v3s16, NodeMetadata *>::const_iterator n = m_data.find(p); if (n == m_data.end()) return NULL; return n->second; } void NodeMetadataList::remove(v3s16 p) { NodeMetadata *olddata = get(p); if (olddata) { delete olddata; m_data.erase(p); } } void NodeMetadataList::set(v3s16 p, NodeMetadata *d) { remove(p); m_data.insert(std::make_pair(p, d));