MCPcopy Create free account
hub / github.com/9chu/LuaSTGPlus / SetAttr

Method SetAttr

LuaSTGPlus/GameObjectPool.cpp:1147–1293  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1145}
1146
1147int GameObjectPool::SetAttr(lua_State* L)LNOEXCEPT
1148{
1149 lua_rawgeti(L, 1, 2); // t(object) s(key) any(v) i(id)
1150 size_t id = static_cast<size_t>(lua_tonumber(L, -1));
1151 lua_pop(L, 1); // t(object) s(key) any(v)
1152
1153 GameObject* p = m_ObjectPool.Data(id);
1154 if (!p)
1155 return luaL_error(L, "invalid lstg object for '__newindex' meta operation.");
1156
1157 // ��ѯ����
1158 const char* key = luaL_checkstring(L, 2);
1159
1160 // ��x,y���ػ�����
1161 if (key[0] == 'x' && key[1] == '\0')
1162 {
1163 p->x = luaL_checknumber(L, 3);
1164 return 0;
1165 }
1166 else if (key[0] == 'y' && key[1] == '\0')
1167 {
1168 p->y = luaL_checknumber(L, 3);
1169 return 0;
1170 }
1171
1172 // һ������
1173 switch (GameObjectPropertyHash(key))
1174 {
1175 case GameObjectProperty::DX:
1176 return luaL_error(L, "property 'dx' is readonly.");
1177 case GameObjectProperty::DY:
1178 return luaL_error(L, "property 'dy' is readonly.");
1179 case GameObjectProperty::ROT:
1180 p->rot = luaL_checknumber(L, 3) * LDEGREE2RAD;
1181 break;
1182 case GameObjectProperty::OMIGA:
1183 p->omiga = luaL_checknumber(L, 3) * LDEGREE2RAD;
1184 break;
1185 case GameObjectProperty::TIMER:
1186 p->timer = luaL_checkinteger(L, 3);
1187 break;
1188 case GameObjectProperty::VX:
1189 p->vx = luaL_checknumber(L, 3);
1190 break;
1191 case GameObjectProperty::VY:
1192 p->vy = luaL_checknumber(L, 3);
1193 break;
1194 case GameObjectProperty::AX:
1195 p->ax = luaL_checknumber(L, 3);
1196 break;
1197 case GameObjectProperty::AY:
1198 p->ay = luaL_checknumber(L, 3);
1199 break;
1200 case GameObjectProperty::LAYER:
1201 p->layer = luaL_checknumber(L, 3);
1202 LIST_INSERT_SORT(p, Render, RenderListSortFunc); // ˢ��p����Ⱦ�㼶
1203 LASSERT(m_pRenderListHeader.pRenderNext != nullptr);
1204 LASSERT(m_pRenderListTail.pRenderPrev != nullptr);

Callers 1

ObjMetaNewIndexMethod · 0.80

Calls 5

DataMethod · 0.80
ReleaseResourceMethod · 0.80
ChangeResourceMethod · 0.80

Tested by

no test coverage detected