123 lines
2.8 KiB
C++
123 lines
2.8 KiB
C++
/* -----------------------------------------------------------------------------
|
|
GSFramework
|
|
Copyright 2001-2013 Emmanuel Julien. All Rights Reserved.
|
|
----------------------------------------------------------------------------- */
|
|
|
|
|
|
#include "script_squirrel/cobject/uv_decl.h"
|
|
#include "script_squirrel/cobject/vector_decl.h"
|
|
|
|
using namespace GS;
|
|
|
|
#ifndef _T
|
|
#define _T
|
|
#endif
|
|
|
|
|
|
_IMPL_NATIVE_CONSTRUCTION(UV, GS::Vector2);
|
|
|
|
//------------------------------------------------------------------------------
|
|
_MEMBER_FUNCTION_IMPL(UV, constructor)
|
|
Vector2 temp;
|
|
int nparams = sa.GetParamCount();
|
|
|
|
switch (nparams)
|
|
{
|
|
case 1: temp.Set(0, 0); break;
|
|
case 2:
|
|
if (sa.GetType(2) == OT_INSTANCE)
|
|
{
|
|
_GetTypedParam(uv, 2, Vector2, UV);
|
|
if (uv)
|
|
temp = *uv;
|
|
else return sa.ThrowError("Invalid instance type");
|
|
}
|
|
else temp.Set(sa.GetFloat(2), 0);
|
|
break;
|
|
case 3: temp.Set(sa.GetFloat(2), sa.GetFloat(3)); break;
|
|
|
|
default:
|
|
return sa.ThrowError("Wrong parameter count");
|
|
}
|
|
return construct_UV(v, new Vector2(temp));
|
|
_END_IMPL
|
|
|
|
_MEMBER_FUNCTION_IMPL(UV, _cloned)
|
|
_GetTypedParam(uv, 2, Vector2, UV);
|
|
return construct_UV(v, new Vector2(*uv));
|
|
_END_IMPL
|
|
|
|
_MEMBER_FUNCTION_IMPL(UV, _set)
|
|
_GetSelf(Vector2, UV);
|
|
|
|
const SQChar *s = sa.GetString(2);
|
|
int index = s ? s[0] : sa.GetInt(2);
|
|
|
|
switch (index)
|
|
{
|
|
case 0: case 'u': case 'x':
|
|
return sa.Return(self->x = sa.GetFloat(3));
|
|
case 1: case 'v': case 'y':
|
|
return sa.Return(self->y = sa.GetFloat(3));
|
|
}
|
|
return SQ_ERROR;
|
|
_END_IMPL
|
|
|
|
_MEMBER_FUNCTION_IMPL(UV, _get)
|
|
_GetSelf(Vector2, UV);
|
|
const SQChar *s = sa.GetString(2);
|
|
if (s && (s[1] != 0))
|
|
return SQ_ERROR;
|
|
int index = s && (s[1] == 0) ? s[0] : sa.GetInt(2);
|
|
|
|
switch (index)
|
|
{
|
|
case 0: case 'u': case 'x':
|
|
return sa.Return(self->x);
|
|
case 1: case 'v': case 'y':
|
|
return sa.Return(self->y);
|
|
}
|
|
return SQ_ERROR;
|
|
_END_IMPL
|
|
|
|
_MEMBER_FUNCTION_IMPL(UV, Set)
|
|
_GetSelf(Vector2, UV);
|
|
switch (sa.GetParamCount())
|
|
{
|
|
case 1: self->Set(0, 0); break;
|
|
case 2: self->Set(sa.GetFloat(2), 0); break;
|
|
case 3: self->Set(sa.GetFloat(2), sa.GetFloat(3)); break;
|
|
default:
|
|
return sa.ThrowError("Wrong parameter count");
|
|
}
|
|
return 0;
|
|
_END_IMPL
|
|
//------------------------------------------------------------------------------
|
|
|
|
//------------------------------------------------------------------------------
|
|
/*#
|
|
Topic: UV
|
|
Type: UV
|
|
#*/
|
|
|
|
/*#
|
|
Section: UVGeneric
|
|
Desc: Generic
|
|
#*/
|
|
_BEGIN_CLASS(UV)
|
|
|
|
_MEMBER_FUNCTION(UV, constructor, -1, _T(".n|xn"))
|
|
_MEMBER_FUNCTION(UV, _cloned, 2, _T(".x"))
|
|
_MEMBER_FUNCTION(UV, _set, 3, _T("xs|n"))
|
|
_MEMBER_FUNCTION(UV, _get, 2, _T("xs|n"))
|
|
|
|
/*#
|
|
Func: Set
|
|
Proto: void:float x = 0,float y = 0
|
|
Desc: Set UV values.
|
|
#*/
|
|
_MEMBER_FUNCTION(UV, Set, -1, _T("xnn"))
|
|
|
|
_END_CLASS(UV)
|
|
//------------------------------------------------------------------------------
|