[deploy] make Actor serializable
This commit is contained in:
parent
92a845a23a
commit
768ce17586
|
|
@ -220,6 +220,20 @@ bool Actor::DispatchEvent(Event* evt)
|
|||
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)
|
||||
{
|
||||
if (!components_.IsEmpty())
|
||||
|
|
|
|||
|
|
@ -446,6 +446,14 @@ public:
|
|||
/// @return 是否继续分发该事件
|
||||
virtual bool DispatchEvent(Event* evt);
|
||||
|
||||
/// \~chinese
|
||||
/// @brief ÐòÁл¯
|
||||
void DoSerialize(Serializer* serializer) const override;
|
||||
|
||||
/// \~chinese
|
||||
/// @brief ·´ÐòÁл¯
|
||||
void DoDeserialize(Deserializer* deserializer) override;
|
||||
|
||||
/// \~chinese
|
||||
/// @brief 设置默认锚点
|
||||
static void SetDefaultAnchor(float anchor_x, float anchor_y);
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@
|
|||
|
||||
#pragma once
|
||||
#include <kiwano/core/Common.h>
|
||||
#include <kiwano/math/Math.h>
|
||||
|
||||
namespace kiwano
|
||||
{
|
||||
|
|
@ -397,19 +398,41 @@ public:
|
|||
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())
|
||||
{
|
||||
dest.Deserialize(bytes);
|
||||
}
|
||||
//
|
||||
// operator<< for Serializer
|
||||
//
|
||||
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
|
||||
|
|
|
|||
Loading…
Reference in New Issue