Merge pull request 'Add getters and fixes' (#100) from offscreen into master
Reviewed-on: https://git.madvoxel.net/OpenVulkano/OpenVulkano/pulls/100
This commit is contained in:
@@ -227,12 +227,30 @@ namespace OpenVulkano
|
|||||||
{}
|
{}
|
||||||
|
|
||||||
void Notify(Arguments... args) const override
|
void Notify(Arguments... args) const override
|
||||||
|
{
|
||||||
|
NotifyImpl(std::forward<Arguments>(args)...);
|
||||||
|
}
|
||||||
|
|
||||||
|
void NotifyImpl(Arguments... args) const
|
||||||
{
|
{
|
||||||
if (INamedEventProcessor::HasProcessor())
|
if (INamedEventProcessor::HasProcessor())
|
||||||
{
|
{
|
||||||
std::vector<INamedEventProcessor::Parameters> attributes;
|
std::vector<INamedEventProcessor::Parameters> attributes;
|
||||||
attributes.reserve(sizeof...(Arguments));
|
attributes.reserve(sizeof...(Arguments));
|
||||||
|
if constexpr (!std::conjunction_v<std::is_enum<std::remove_reference_t<Arguments>>...>)
|
||||||
|
{
|
||||||
(attributes.emplace_back(args), ...);
|
(attributes.emplace_back(args), ...);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
auto fill = [&](auto&& arg) {
|
||||||
|
if constexpr (std::is_enum_v<std::remove_reference_t<decltype(arg)>>)
|
||||||
|
attributes.emplace_back(static_cast<int>(arg));
|
||||||
|
else
|
||||||
|
attributes.emplace_back(std::forward<decltype(arg)>(arg));
|
||||||
|
};
|
||||||
|
(fill(std::forward<Arguments>(args)), ...);
|
||||||
|
}
|
||||||
INamedEventProcessor::NotifyAll(m_name, attributes);
|
INamedEventProcessor::NotifyAll(m_name, attributes);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -32,14 +32,14 @@ namespace OpenVulkano
|
|||||||
{}
|
{}
|
||||||
|
|
||||||
Observable(T&& initValue, const std::string& observableName)
|
Observable(T&& initValue, const std::string& observableName)
|
||||||
: object(std::forward(initValue)), OnChange(observableName)
|
: object(initValue), OnChange(observableName)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
template<typename = std::enable_if_t<std::is_copy_assignable_v<T>>>
|
template<typename = std::enable_if_t<std::is_copy_assignable_v<T>>>
|
||||||
auto& operator = (const T& val) { object = val; Notify(); return *this; }
|
auto& operator = (const T& val) { object = val; Notify(); return *this; }
|
||||||
|
|
||||||
template<typename = std::enable_if_t<std::is_move_assignable_v<T>>>
|
template<typename = std::enable_if_t<std::is_move_assignable_v<T>>>
|
||||||
auto& operator = (T&& val) { object = std::forward(val); Notify(); return *this; }
|
auto& operator = (T&& val) { object = val; Notify(); return *this; }
|
||||||
|
|
||||||
template<typename = std::enable_if_t<std::is_copy_assignable_v<T>>>
|
template<typename = std::enable_if_t<std::is_copy_assignable_v<T>>>
|
||||||
operator T() const { return object; }
|
operator T() const { return object; }
|
||||||
@@ -54,7 +54,9 @@ namespace OpenVulkano
|
|||||||
bool operator >=(const T& other) const { return object >= other; }
|
bool operator >=(const T& other) const { return object >= other; }
|
||||||
bool operator !() const { return !object; }
|
bool operator !() const { return !object; }
|
||||||
|
|
||||||
operator bool() const { return object.operator bool(); }
|
template<std::enable_if<std::is_convertible_v<T, bool>>>
|
||||||
|
operator bool() const { return static_cast<bool>(object); }
|
||||||
|
|
||||||
auto& operator ++() { ++object; Notify(); return *this; }
|
auto& operator ++() { ++object; Notify(); return *this; }
|
||||||
auto& operator --() { --object; Notify(); return *this; }
|
auto& operator --() { --object; Notify(); return *this; }
|
||||||
auto& operator ++(int) { object++; Notify(); return *this; }
|
auto& operator ++(int) { object++; Notify(); return *this; }
|
||||||
|
|||||||
@@ -148,6 +148,10 @@ namespace OpenVulkano::Scene
|
|||||||
|
|
||||||
[[nodiscard]] virtual bool IsPerspective() const { return false; }
|
[[nodiscard]] virtual bool IsPerspective() const { return false; }
|
||||||
[[nodiscard]] virtual bool IsOrtho() const { return false; }
|
[[nodiscard]] virtual bool IsOrtho() const { return false; }
|
||||||
|
|
||||||
|
float GetWidth() const { return m_width; }
|
||||||
|
float GetHeight() const { return m_height; }
|
||||||
|
Math::Vector2f GetSize() const { return { m_width, m_height }; }
|
||||||
};
|
};
|
||||||
|
|
||||||
class PerspectiveCamera : public Camera
|
class PerspectiveCamera : public Camera
|
||||||
|
|||||||
Reference in New Issue
Block a user