2026-04-03 15:17:43 +02:00
|
|
|
#include <pd/drivers/drivers.hpp>
|
2026-04-02 23:29:53 +02:00
|
|
|
#include <pd/ultra/container.hpp>
|
2026-03-28 13:52:36 +01:00
|
|
|
#include <pd/ultra/elems/element.hpp>
|
|
|
|
|
|
|
|
|
|
namespace PD {
|
|
|
|
|
namespace Ultra {
|
|
|
|
|
PD_API bool ElementBase::RevisionUpdate(PD::u32 req) {
|
|
|
|
|
if (req != pCanvasRev) {
|
|
|
|
|
pCanvasRev = req;
|
|
|
|
|
return true;
|
|
|
|
|
} else {
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
}
|
2026-04-02 23:29:53 +02:00
|
|
|
PD_API void ElementBase::Update() {
|
2026-04-03 15:17:43 +02:00
|
|
|
if (!pParent)
|
|
|
|
|
pRenderspace = PD::fvec4(pPos, pPos + pSize);
|
|
|
|
|
else
|
|
|
|
|
pRenderspace = pParent->GetCanvas().VTranslateObject(
|
|
|
|
|
pParent->GetTopLeft() + pPos, pSize, pAlignment);
|
|
|
|
|
UpdateInput();
|
2026-04-03 12:43:49 +02:00
|
|
|
/*pRenderspace = PD::fvec4(pParent->GetTopLeft() + pPos,
|
|
|
|
|
pParent->GetTopLeft() + pPos + pSize);*/
|
2026-04-02 23:29:53 +02:00
|
|
|
}
|
2026-04-03 15:17:43 +02:00
|
|
|
|
|
|
|
|
PD_API void ElementBase::UpdateInput() {
|
|
|
|
|
if (PD::Li::Math::InSpace(
|
|
|
|
|
PD::Hid::MousePos(),
|
|
|
|
|
PD::fvec4(pRenderspace.TopLeft(), pRenderspace.BotRight()))) {
|
|
|
|
|
if (pHover && !pFocued) {
|
|
|
|
|
pHover();
|
|
|
|
|
pFocued = true;
|
|
|
|
|
}
|
|
|
|
|
if (PD::Hid::IsEvent(PD::Hid::Event::Up, PD::Hid::Gamepad::Touch)) {
|
|
|
|
|
if (pPress) {
|
|
|
|
|
pPress();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
if (pUnHover && pFocued) {
|
|
|
|
|
pUnHover();
|
|
|
|
|
pFocued = false;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2026-03-28 13:52:36 +01:00
|
|
|
} // namespace Ultra
|
|
|
|
|
} // namespace PD
|