| 4338 | } |
| 4339 | |
| 4340 | int LuaSetRotation(lua_State* L) |
| 4341 | { |
| 4342 | HNode hnode; |
| 4343 | InternalNode* n = LuaCheckNodeInternal(L, 1, &hnode); |
| 4344 | if (n->m_Node.m_IsBone) { |
| 4345 | return 0; |
| 4346 | } |
| 4347 | Quat r; |
| 4348 | Vector4 v; |
| 4349 | Vector3* v3; |
| 4350 | Vector4* v4; |
| 4351 | if ((v3 = dmScript::ToVector3(L, 2))) |
| 4352 | { |
| 4353 | Scene* scene = GetScene(L); |
| 4354 | Vector4 original = dmGui::GetNodeProperty(scene, hnode, PROPERTY_EULER); |
| 4355 | v = Vector4(*v3, original.getW()); |
| 4356 | r = dmVMath::EulerToQuat(v.getXYZ()); |
| 4357 | } |
| 4358 | else if ((v4 = dmScript::ToVector4(L, 2))) |
| 4359 | { |
| 4360 | v = *v4; |
| 4361 | r = dmVMath::EulerToQuat(v.getXYZ()); |
| 4362 | } |
| 4363 | else |
| 4364 | { |
| 4365 | Quat* q = dmScript::CheckQuat(L, 2); |
| 4366 | v = Vector4(dmVMath::QuatToEuler(q->getX(), q->getY(), q->getZ(), q->getW())); |
| 4367 | r = *q; |
| 4368 | } |
| 4369 | |
| 4370 | n->m_Node.m_Properties[PROPERTY_ROTATION] = Vector4(r); |
| 4371 | n->m_Node.m_Properties[PROPERTY_EULER] = v; |
| 4372 | n->m_Node.m_DirtyLocal = 1; |
| 4373 | return 0; |
| 4374 | } |
| 4375 | |
| 4376 | |
| 4377 | // Euler |
nothing calls this directly
no test coverage detected