diff options
author | chai <chaifix@163.com> | 2019-08-14 22:50:43 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2019-08-14 22:50:43 +0800 |
commit | 15740faf9fe9fe4be08965098bbf2947e096aeeb (patch) | |
tree | a730ec236656cc8cab5b13f088adfaed6bb218fb /Runtime/Camera/OcclusionPortal.cpp |
Diffstat (limited to 'Runtime/Camera/OcclusionPortal.cpp')
-rw-r--r-- | Runtime/Camera/OcclusionPortal.cpp | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/Runtime/Camera/OcclusionPortal.cpp b/Runtime/Camera/OcclusionPortal.cpp new file mode 100644 index 0000000..ab741bd --- /dev/null +++ b/Runtime/Camera/OcclusionPortal.cpp @@ -0,0 +1,60 @@ +#include "UnityPrefix.h" +#include "OcclusionPortal.h" +#include "UnityScene.h" +#include "Runtime/Serialize/TransferFunctions/SerializeTransfer.h" + +OcclusionPortal::OcclusionPortal (MemLabelId label, ObjectCreationMode mode) +: Super(label, mode) +{ + m_Open = true; + m_PortalIndex = -1; + m_Center = Vector3f(0,0,0); + m_Size = Vector3f(1,1,1); +} + +OcclusionPortal::~OcclusionPortal () +{ +} + +bool OcclusionPortal::CalculatePortalEnabled () +{ + if (!IsActive()) + return true; + + return m_Open; +} + +void OcclusionPortal::SetIsOpen (bool open) +{ + m_Open = open; + + if (m_PortalIndex != -1) + GetScene().SetOcclusionPortalEnabled (m_PortalIndex, CalculatePortalEnabled()); +} + +void OcclusionPortal::Deactivate (DeactivateOperation operation) +{ + if (m_PortalIndex != -1) + GetScene().SetOcclusionPortalEnabled (m_PortalIndex, true); +} + +void OcclusionPortal::AwakeFromLoad (AwakeFromLoadMode mode) +{ + Super::AwakeFromLoad(mode); + + if (m_PortalIndex != -1) + GetScene().SetOcclusionPortalEnabled (m_PortalIndex, CalculatePortalEnabled()); +} + +template<class TransferFunction> +void OcclusionPortal::Transfer (TransferFunction& transfer) +{ + Super::Transfer (transfer); + TRANSFER (m_Open); + transfer.Align(); + TRANSFER (m_Center); + TRANSFER (m_Size); +} + +IMPLEMENT_OBJECT_SERIALIZE (OcclusionPortal) +IMPLEMENT_CLASS (OcclusionPortal)
\ No newline at end of file |