| 3817 | } |
| 3818 | |
| 3819 | PropertyResult SetProperty(HInstance instance, dmhash_t component_id, dmhash_t property_id, PropertyOptions options, const PropertyVar& value) |
| 3820 | { |
| 3821 | if (instance == 0) |
| 3822 | return PROPERTY_RESULT_INVALID_INSTANCE; |
| 3823 | if (component_id == 0) |
| 3824 | { |
| 3825 | Collection* collection = instance->m_Collection; |
| 3826 | float* position = instance->m_Transform.GetPositionPtr(); |
| 3827 | float* rotation = instance->m_Transform.GetRotationPtr(); |
| 3828 | float* scale = instance->m_Transform.GetScalePtr(); |
| 3829 | if (property_id == PROP_POSITION) |
| 3830 | { |
| 3831 | if (value.m_Type != PROPERTY_TYPE_VECTOR3) |
| 3832 | return PROPERTY_RESULT_TYPE_MISMATCH; |
| 3833 | position[0] = value.m_V4[0]; |
| 3834 | position[1] = value.m_V4[1]; |
| 3835 | position[2] = value.m_V4[2]; |
| 3836 | collection->m_DirtyTransforms = 1; |
| 3837 | return PROPERTY_RESULT_OK; |
| 3838 | } |
| 3839 | else if (property_id == PROP_POSITION_X) |
| 3840 | { |
| 3841 | if (value.m_Type != PROPERTY_TYPE_NUMBER) |
| 3842 | return PROPERTY_RESULT_TYPE_MISMATCH; |
| 3843 | position[0] = (float)value.m_Number; |
| 3844 | collection->m_DirtyTransforms = 1; |
| 3845 | return PROPERTY_RESULT_OK; |
| 3846 | } |
| 3847 | else if (property_id == PROP_POSITION_Y) |
| 3848 | { |
| 3849 | if (value.m_Type != PROPERTY_TYPE_NUMBER) |
| 3850 | return PROPERTY_RESULT_TYPE_MISMATCH; |
| 3851 | position[1] = (float)value.m_Number; |
| 3852 | collection->m_DirtyTransforms = 1; |
| 3853 | return PROPERTY_RESULT_OK; |
| 3854 | } |
| 3855 | else if (property_id == PROP_POSITION_Z) |
| 3856 | { |
| 3857 | if (value.m_Type != PROPERTY_TYPE_NUMBER) |
| 3858 | return PROPERTY_RESULT_TYPE_MISMATCH; |
| 3859 | position[2] = (float)value.m_Number; |
| 3860 | collection->m_DirtyTransforms = 1; |
| 3861 | return PROPERTY_RESULT_OK; |
| 3862 | } |
| 3863 | else if (property_id == PROP_SCALE) |
| 3864 | { |
| 3865 | if (value.m_Type == PROPERTY_TYPE_NUMBER) |
| 3866 | { |
| 3867 | scale[0] = (float)value.m_Number; |
| 3868 | scale[1] = scale[0]; |
| 3869 | scale[2] = scale[0]; |
| 3870 | collection->m_DirtyTransforms = 1; |
| 3871 | return PROPERTY_RESULT_OK; |
| 3872 | } |
| 3873 | else if (value.m_Type == PROPERTY_TYPE_VECTOR3) |
| 3874 | { |
| 3875 | scale[0] = value.m_V4[0]; |
| 3876 | scale[1] = value.m_V4[1]; |
no test coverage detected