| 69 | } |
| 70 | |
| 71 | PropertyResult LuaToVar(lua_State* L, int index, PropertyVar& out_var) |
| 72 | { |
| 73 | void* userdata = 0; |
| 74 | out_var.m_Type = GetPropertyType(L, index, &userdata); |
| 75 | switch(out_var.m_Type) |
| 76 | { |
| 77 | case PROPERTY_TYPE_NUMBER: |
| 78 | out_var.m_Number = lua_tonumber(L, index); |
| 79 | return PROPERTY_RESULT_OK; |
| 80 | case PROPERTY_TYPE_HASH: |
| 81 | out_var.m_Hash = dmScript::CheckHash(L, index); |
| 82 | return PROPERTY_RESULT_OK; |
| 83 | case PROPERTY_TYPE_URL: |
| 84 | { |
| 85 | dmMessage::URL* url = (dmMessage::URL*) out_var.m_URL; |
| 86 | *url = *dmScript::CheckURL(L, index); |
| 87 | } |
| 88 | return PROPERTY_RESULT_OK; |
| 89 | case PROPERTY_TYPE_VECTOR3: |
| 90 | { |
| 91 | Vector3* v = (Vector3*)userdata; |
| 92 | out_var.m_V4[0] = v->getX(); |
| 93 | out_var.m_V4[1] = v->getY(); |
| 94 | out_var.m_V4[2] = v->getZ(); |
| 95 | } |
| 96 | return PROPERTY_RESULT_OK; |
| 97 | case PROPERTY_TYPE_VECTOR4: |
| 98 | { |
| 99 | Vector4* v = (Vector4*)userdata; |
| 100 | out_var.m_V4[0] = v->getX(); |
| 101 | out_var.m_V4[1] = v->getY(); |
| 102 | out_var.m_V4[2] = v->getZ(); |
| 103 | out_var.m_V4[3] = v->getW(); |
| 104 | } |
| 105 | return PROPERTY_RESULT_OK; |
| 106 | case PROPERTY_TYPE_QUAT: |
| 107 | { |
| 108 | Quat* q = (Quat*)userdata; |
| 109 | out_var.m_V4[0] = q->getX(); |
| 110 | out_var.m_V4[1] = q->getY(); |
| 111 | out_var.m_V4[2] = q->getZ(); |
| 112 | out_var.m_V4[3] = q->getW(); |
| 113 | } |
| 114 | return PROPERTY_RESULT_OK; |
| 115 | case PROPERTY_TYPE_BOOLEAN: |
| 116 | out_var.m_Bool = (bool) lua_toboolean(L, index); |
| 117 | return PROPERTY_RESULT_OK; |
| 118 | case PROPERTY_TYPE_MATRIX4: |
| 119 | { |
| 120 | Matrix4* m = (Matrix4*) userdata; |
| 121 | Vector4& c0 = (*m)[0]; |
| 122 | float& v0 = c0[0]; |
| 123 | memcpy(out_var.m_M4, &v0, sizeof(out_var.m_M4)); |
| 124 | } |
| 125 | return PROPERTY_RESULT_OK; |
| 126 | default: |
| 127 | return PROPERTY_RESULT_UNSUPPORTED_TYPE; |
| 128 | } |
no test coverage detected