| 737 | } |
| 738 | |
| 739 | static int Matrix4_index(lua_State *L) |
| 740 | { |
| 741 | Matrix4* m = (Matrix4*)lua_touserdata(L, 1); |
| 742 | |
| 743 | size_t key_len = 0; |
| 744 | const char* key = luaL_checklstring(L, 2, &key_len); |
| 745 | if (key_len == 3) |
| 746 | { |
| 747 | int row = key[1] - (char)'0'; |
| 748 | int col = key[2] - (char)'0'; |
| 749 | if (0 <= row && row < 4 && 0 <= col && col < 4) |
| 750 | { |
| 751 | lua_pushnumber(L, m->getElem(col, row)); |
| 752 | return 1; |
| 753 | } |
| 754 | } |
| 755 | else if (key_len == 2) |
| 756 | { |
| 757 | int col = key[1] - (char)'0'; |
| 758 | if (0 <= col && col < 4) |
| 759 | { |
| 760 | PushVector4(L, m->getCol(col)); |
| 761 | return 1; |
| 762 | } |
| 763 | } |
| 764 | return luaL_error(L, "%s.%s only has fields c0, ..., c3 and m00, m01, ..., m10, ..., m33.", SCRIPT_LIB_NAME, SCRIPT_TYPE_NAME_MATRIX4); |
| 765 | } |
| 766 | |
| 767 | static int Matrix4_newindex(lua_State *L) |
| 768 | { |
nothing calls this directly
no test coverage detected