void	GetSsVertexAnime( const SsKeyframe* key , SsVertexAnime& v )
{
	const SsString& sLT = key->value["LT"].get<SsString>();
	const SsString& sRT = key->value["RT"].get<SsString>();
	const SsString& sLB = key->value["LB"].get<SsString>();
	const SsString& sRB = key->value["RB"].get<SsString>();
	
	StringToPoint2( sLT , v.offsets[0] );
	StringToPoint2( sRT , v.offsets[1] );
	StringToPoint2( sLB , v.offsets[2] );
	StringToPoint2( sRB , v.offsets[3] );

}
void	GetSsUserDataAnime( const SsKeyframe* key , SsUserDataAnime& v )
{
	v.integer = 0;
	v.point.x = v.point.y = 0;
	v.rect.x = v.rect.y = v.rect.w = v.rect.h = 0; 
	v.string = "";
	v.useInteger = key->value.IsExistHashkey("integer");
	v.usePoint = key->value.IsExistHashkey("point");
	v.useRect = key->value.IsExistHashkey("rect");
	v.useString = key->value.IsExistHashkey("string");

	if ( v.useInteger )
	{
		v.integer = key->value["integer"].get<int>();
	}

	if ( v.usePoint )
	{
		const SsString& str = key->value["point"].get<SsString>();
		StringToPoint2( str , v.point );
	}
	
	if ( v.useRect )
	{
		const SsString& str = key->value["rect"].get<SsString>();
		StringToIRect( str , v.rect );
	}

	if ( v.useString )
	{
		const SsString& str = key->value["string"].get<SsString>();
		v.string = str;
	}

}
bool SsXmlIArchiver::dc(const char* name, FVector2D& member)
{
	AR_SELF_CHECK();

	XMLElement* e = getxml()->FirstChildElement(name);

	if(e)
	{
		FString str( e->GetText() );
		return StringToPoint2( str , member );
	}
	return false;
}