MCPcopy Create free account
hub / github.com/defold/defold / CheckUserData

Function CheckUserData

engine/script/src/script_vmath.cpp:126–184  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

124 }
125
126 static ScriptUserType CheckUserData(lua_State* L, int index, void** userdata)
127 {
128 int type = lua_type(L, index);
129 if (type != LUA_TUSERDATA)
130 {
131 dmLogError("Argument %d is not userdata.", index);
132 return SCRIPT_TYPE_UNKNOWN;
133 }
134 if ((*userdata = (void*)dmScript::ToVector3(L, index)))
135 {
136 Vector3* v = (Vector3*)*userdata;
137 if (!CheckVector3Components(v))
138 {
139 luaL_error(L, "argument #%d contains one or more values which are not numbers: vmath.vector3(%f, %f, %f)", index, v->getX(), v->getY(), v->getZ());
140 return SCRIPT_TYPE_UNKNOWN;
141 }
142 return SCRIPT_TYPE_VECTOR3;
143 }
144 else if ((*userdata = (void*)dmScript::ToVector4(L, index)))
145 {
146 Vector4* v = (Vector4*)*userdata;
147 if (!CheckVector4Components(v))
148 {
149 luaL_error(L, "argument #%d contains one or more values which are not numbers: vmath.vector4(%f, %f, %f, %f)", index, v->getX(), v->getY(), v->getZ(), v->getW());
150 return SCRIPT_TYPE_UNKNOWN;
151 }
152 return SCRIPT_TYPE_VECTOR4;
153 }
154 else if ((*userdata = (void*)dmScript::ToVector(L, index)))
155 {
156 return SCRIPT_TYPE_VECTOR;
157 }
158 else if ((*userdata = (void*)dmScript::ToQuat(L, index)))
159 {
160 Quat* q = (Quat*)*userdata;
161 if (!CheckQuatComponents(q))
162 {
163 luaL_error(L, "argument #%d contains one or more values which are not numbers: vmath.quat(%f, %f, %f, %f)", index, q->getX(), q->getY(), q->getZ(), q->getW());
164 return SCRIPT_TYPE_UNKNOWN;
165 }
166 return SCRIPT_TYPE_QUAT;
167 }
168 else if ((*userdata = (void*)dmScript::ToMatrix4(L, index)))
169 {
170 Matrix4* m = (Matrix4*)*userdata;
171 if (!CheckMatrix4Components(m))
172 {
173 luaL_error(L, "argument #%d contains one or more values which are not numbers: vmath.matrix4(%f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f, %f)", index,
174 m->getElem(0, 0), m->getElem(1, 0), m->getElem(2, 0), m->getElem(3, 0),
175 m->getElem(0, 1), m->getElem(1, 1), m->getElem(2, 1), m->getElem(3, 1),
176 m->getElem(0, 2), m->getElem(1, 2), m->getElem(2, 2), m->getElem(3, 2),
177 m->getElem(0, 3), m->getElem(1, 3), m->getElem(2, 3), m->getElem(3, 3));
178 return SCRIPT_TYPE_UNKNOWN;
179 }
180 return SCRIPT_TYPE_MATRIX4;
181 }
182 dmLogError("Userdata type can not be determined for argument %d.", index);
183 return SCRIPT_TYPE_UNKNOWN;

Callers 10

Matrix4_TranslationFunction · 0.85
DotFunction · 0.85
LengthSqrFunction · 0.85
LengthFunction · 0.85
NormalizeFunction · 0.85
LerpFunction · 0.85
SlerpFunction · 0.85
MulPerElemFunction · 0.85
Matrix4_ComposeFunction · 0.85
Vector_ClampFunction · 0.85

Calls 15

lua_typeFunction · 0.85
ToVector3Function · 0.85
CheckVector3ComponentsFunction · 0.85
luaL_errorFunction · 0.85
ToVector4Function · 0.85
CheckVector4ComponentsFunction · 0.85
ToVectorFunction · 0.85
ToQuatFunction · 0.85
CheckQuatComponentsFunction · 0.85
CheckMatrix4ComponentsFunction · 0.85
ToMatrix4Function · 0.70
getXMethod · 0.45

Tested by

no test coverage detected