Files
Webcam/include/modules/script_squirrel/cobject/uv_impl.cpp

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)
//------------------------------------------------------------------------------