[deploy] make Actor serializable
This commit is contained in:
parent
92a845a23a
commit
768ce17586
|
|
@ -220,6 +220,20 @@ bool Actor::DispatchEvent(Event* evt)
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Actor::DoSerialize(Serializer* serializer) const
|
||||||
|
{
|
||||||
|
ObjectBase::DoSerialize(serializer);
|
||||||
|
(*serializer) << visible_ << update_pausing_ << cascade_opacity_ << responsible_ << z_order_ << opacity_ << anchor_
|
||||||
|
<< size_ << transform_;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Actor::DoDeserialize(Deserializer* deserializer)
|
||||||
|
{
|
||||||
|
ObjectBase::DoDeserialize(deserializer);
|
||||||
|
(*deserializer) >> visible_ >> update_pausing_ >> cascade_opacity_ >> responsible_ >> z_order_ >> opacity_
|
||||||
|
>> anchor_ >> size_ >> transform_;
|
||||||
|
}
|
||||||
|
|
||||||
bool Actor::HandleEvent(Event* evt)
|
bool Actor::HandleEvent(Event* evt)
|
||||||
{
|
{
|
||||||
if (!components_.IsEmpty())
|
if (!components_.IsEmpty())
|
||||||
|
|
|
||||||
|
|
@ -446,6 +446,14 @@ public:
|
||||||
/// @return 是否继续分发该事件
|
/// @return 是否继续分发该事件
|
||||||
virtual bool DispatchEvent(Event* evt);
|
virtual bool DispatchEvent(Event* evt);
|
||||||
|
|
||||||
|
/// \~chinese
|
||||||
|
/// @brief ÐòÁл¯
|
||||||
|
void DoSerialize(Serializer* serializer) const override;
|
||||||
|
|
||||||
|
/// \~chinese
|
||||||
|
/// @brief ·´ÐòÁл¯
|
||||||
|
void DoDeserialize(Deserializer* deserializer) override;
|
||||||
|
|
||||||
/// \~chinese
|
/// \~chinese
|
||||||
/// @brief 设置默认锚点
|
/// @brief 设置默认锚点
|
||||||
static void SetDefaultAnchor(float anchor_x, float anchor_y);
|
static void SetDefaultAnchor(float anchor_x, float anchor_y);
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,7 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
#include <kiwano/core/Common.h>
|
#include <kiwano/core/Common.h>
|
||||||
|
#include <kiwano/math/Math.h>
|
||||||
|
|
||||||
namespace kiwano
|
namespace kiwano
|
||||||
{
|
{
|
||||||
|
|
@ -397,19 +398,41 @@ public:
|
||||||
virtual void DoDeserialize(Deserializer* deserializer) = 0;
|
virtual void DoDeserialize(Deserializer* deserializer) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
/// \~chinese
|
|
||||||
/// @brief 使用序列化克隆对象
|
|
||||||
template <typename _Ty, typename _Ty2>
|
|
||||||
void SerializedClone(const _Ty& src, _Ty2& dest)
|
|
||||||
{
|
|
||||||
static_assert(std::is_base_of<Serializable, _Ty>::value && std::is_base_of<Serializable, _Ty2>::value,
|
|
||||||
"Serialized object must be serializable.");
|
|
||||||
|
|
||||||
String bytes = src.Serialize();
|
//
|
||||||
if (!bytes.empty())
|
// operator<< for Serializer
|
||||||
{
|
//
|
||||||
dest.Deserialize(bytes);
|
inline Serializer& operator<<(Serializer& serializer, const math::Vec2T<float>& vec)
|
||||||
}
|
{
|
||||||
|
return serializer << vec.x << vec.y;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline Serializer& operator<<(Serializer& serializer, const math::RectT<float>& rect)
|
||||||
|
{
|
||||||
|
return serializer << rect.left_top << rect.right_bottom;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline Serializer& operator<<(Serializer& serializer, const math::TransformT<float>& transform)
|
||||||
|
{
|
||||||
|
return serializer << transform.position << transform.rotation << transform.scale << transform.skew;
|
||||||
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// operator>> for Deserializer
|
||||||
|
//
|
||||||
|
inline Deserializer& operator>>(Deserializer& deserializer, math::Vec2T<float>& vec)
|
||||||
|
{
|
||||||
|
return deserializer >> vec.x >> vec.y;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline Deserializer& operator>>(Deserializer& deserializer, math::RectT<float>& rect)
|
||||||
|
{
|
||||||
|
return deserializer >> rect.left_top >> rect.right_bottom;
|
||||||
|
}
|
||||||
|
|
||||||
|
inline Deserializer& operator>>(Deserializer& deserializer, math::TransformT<float>& transform)
|
||||||
|
{
|
||||||
|
return deserializer >> transform.position >> transform.rotation >> transform.scale >> transform.skew;
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace kiwano
|
} // namespace kiwano
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue