less operator for entity and component

This commit is contained in:
2019-01-03 06:41:44 +07:00
parent 36f3b43433
commit 8ad8207102

30
ecs.hpp
View File

@@ -718,6 +718,8 @@ namespace ecs_hpp
entity_id id_{0u};
};
bool operator<(const entity& l, const entity& r) noexcept;
bool operator==(const entity& l, const entity& r) noexcept;
bool operator==(const entity& l, const const_entity& r) noexcept;
@@ -781,6 +783,8 @@ namespace ecs_hpp
entity_id id_{0u};
};
bool operator<(const const_entity& l, const const_entity& r) noexcept;
bool operator==(const const_entity& l, const entity& r) noexcept;
bool operator==(const const_entity& l, const const_entity& r) noexcept;
@@ -836,6 +840,9 @@ namespace ecs_hpp
entity owner_;
};
template < typename T >
bool operator<(const component<T>& l, const component<T>& r) noexcept;
template < typename T >
bool operator==(const component<T>& l, const component<T>& r) noexcept;
template < typename T >
@@ -886,6 +893,9 @@ namespace ecs_hpp
const_entity owner_;
};
template < typename T >
bool operator<(const const_component<T>& l, const const_component<T>& r) noexcept;
template < typename T >
bool operator==(const const_component<T>& l, const component<T>& r) noexcept;
template < typename T >
@@ -1218,6 +1228,11 @@ namespace ecs_hpp
return detail::as_const(*owner_).find_components<Ts...>(id_);
}
inline bool operator<(const entity& l, const entity& r) noexcept {
return (&l.owner() < &r.owner())
|| (&l.owner() == &r.owner() && l.id() < r.id());
}
inline bool operator==(const entity& l, const entity& r) noexcept {
return &l.owner() == &r.owner()
&& l.id() == r.id();
@@ -1293,6 +1308,11 @@ namespace ecs_hpp
return (*owner_).find_components<Ts...>(id_);
}
inline bool operator<(const const_entity& l, const const_entity& r) noexcept {
return (&l.owner() < &r.owner())
|| (&l.owner() == &r.owner() && l.id() < r.id());
}
inline bool operator==(const const_entity& l, const entity& r) noexcept {
return &l.owner() == &r.owner()
&& l.id() == r.id();
@@ -1371,6 +1391,11 @@ namespace ecs_hpp
return detail::as_const(owner_).template find_component<T>();
}
template < typename T >
bool operator<(const component<T>& l, const component<T>& r) noexcept {
return l.owner() < r.owner();
}
template < typename T >
bool operator==(const component<T>& l, const component<T>& r) noexcept {
return l.owner() == r.owner();
@@ -1428,6 +1453,11 @@ namespace ecs_hpp
return detail::as_const(owner_).template find_component<T>();
}
template < typename T >
bool operator<(const const_component<T>& l, const const_component<T>& r) noexcept {
return l.owner() < r.owner();
}
template < typename T >
bool operator==(const const_component<T>& l, const component<T>& r) noexcept {
return l.owner() == r.owner();