void set_number(LPVOID outdata, D3DXPARAMETER_TYPE outtype, LPCVOID indata, D3DXPARAMETER_TYPE intype) { TRACE("Changing from type %s to type %s\n", debug_d3dxparameter_type(intype), debug_d3dxparameter_type(outtype)); if (outtype == intype) { *(DWORD *)outdata = *(DWORD *)indata; return; } switch (outtype) { case D3DXPT_FLOAT: *(FLOAT *)outdata = get_float(intype, indata); break; case D3DXPT_BOOL: *(BOOL *)outdata = get_bool(intype, indata); break; case D3DXPT_INT: *(INT *)outdata = get_int(intype, indata); break; default: FIXME("Unhandled type %s.\n", debug_d3dxparameter_type(outtype)); *(DWORD *)outdata = 0; break; } }
void set_number(void *outdata, D3DXPARAMETER_TYPE outtype, const void *indata, D3DXPARAMETER_TYPE intype) { if (outtype == intype) { *(DWORD *)outdata = *(DWORD *)indata; return; } switch (outtype) { case D3DXPT_FLOAT: *(FLOAT *)outdata = get_float(intype, indata); break; case D3DXPT_BOOL: *(BOOL *)outdata = get_bool(intype, indata); break; case D3DXPT_INT: *(INT *)outdata = get_int(intype, indata); break; default: FIXME("Unhandled type %s.\n", debug_d3dxparameter_type(outtype)); *(DWORD *)outdata = 0; break; } }
/* parameter type conversion helpers */ static BOOL get_bool(D3DXPARAMETER_TYPE type, const void *data) { switch (type) { case D3DXPT_FLOAT: case D3DXPT_INT: case D3DXPT_BOOL: return *(DWORD *)data != 0; case D3DXPT_VOID: return *(BOOL *)data; default: FIXME("Unhandled type %s.\n", debug_d3dxparameter_type(type)); return FALSE; } }
static FLOAT get_float(D3DXPARAMETER_TYPE type, const void *data) { switch (type) { case D3DXPT_FLOAT: case D3DXPT_VOID: return *(FLOAT *)data; case D3DXPT_INT: return (FLOAT)(*(INT *)data); case D3DXPT_BOOL: return (FLOAT)get_bool(type, data); default: FIXME("Unhandled type %s.\n", debug_d3dxparameter_type(type)); return 0.0f; } }
static INT get_int(D3DXPARAMETER_TYPE type, LPCVOID data) { switch (type) { case D3DXPT_FLOAT: return *(FLOAT *)data; case D3DXPT_INT: case D3DXPT_VOID: return *(INT *)data; case D3DXPT_BOOL: return get_bool(type, data); default: FIXME("Unhandled type %s.\n", debug_d3dxparameter_type(type)); return 0; } }