1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
#pragma once
#include "ientity.h"
#include "math/Vector3.h"
#include <functional>
#include "string/convert.h"
const Vector3 ORIGINKEY_IDENTITY = Vector3(0, 0, 0);
class OriginKey :
public KeyObserver
{
private:
std::function<void()> _originChanged;
Vector3 _origin;
public:
OriginKey(const std::function<void()>& originChanged) :
_originChanged(originChanged),
_origin(ORIGINKEY_IDENTITY)
{}
const Vector3& get() const
{
return _origin;
}
void set(const Vector3& origin)
{
_origin = origin;
}
void snap(float snap)
{
_origin.snap(snap);
}
void onKeyValueChanged(const std::string& value)
{
_origin = string::convert<Vector3>(value);
_originChanged();
}
void write(Entity& entity) const
{
entity.setKeyValue("origin", string::to_string(_origin));
}
};
|