Change if to switch for ObjectString use one vec for Get/Set Object Vector

This commit is contained in:
Dr!fter 2013-08-26 22:36:57 -04:00
parent e06b52c1ec
commit e07e2286cb

View File

@ -826,34 +826,31 @@ cell_t Native_GetParamObjectPtrVarVector(IPluginContext *pContext, const cell_t
cell_t *buffer; cell_t *buffer;
pContext->LocalToPhysAddr(params[5], &buffer); pContext->LocalToPhysAddr(params[5], &buffer);
if((ObjectValueType)params[4] == ObjectValueType_VectorPtr || (ObjectValueType)params[4] == ObjectValueType_Vector)
{
Vector *vec;
if((ObjectValueType)params[4] == ObjectValueType_VectorPtr) if((ObjectValueType)params[4] == ObjectValueType_VectorPtr)
{ {
Vector *vec = *(Vector **)(addr + params[3]); vec = *(Vector **)(addr + params[3]);
if(vec == NULL) if(vec == NULL)
{ {
return pContext->ThrowNativeError("Trying to get value for null pointer."); return pContext->ThrowNativeError("Trying to get value for null pointer.");
} }
}
else else
{ {
vec = (Vector *)(addr + params[3]);
}
buffer[0] = sp_ftoc(vec->x); buffer[0] = sp_ftoc(vec->x);
buffer[1] = sp_ftoc(vec->y); buffer[1] = sp_ftoc(vec->y);
buffer[2] = sp_ftoc(vec->z); buffer[2] = sp_ftoc(vec->z);
return 1; return 1;
} }
}
else if((ObjectValueType)params[4] == ObjectValueType_Vector)
{
Vector vec = *(Vector *)(addr + params[3]);
buffer[0] = sp_ftoc(vec.x);
buffer[1] = sp_ftoc(vec.y);
buffer[2] = sp_ftoc(vec.z);
return 1;
}
else
{
return pContext->ThrowNativeError("Invalid Object value type (not a type of vector)"); return pContext->ThrowNativeError("Invalid Object value type (not a type of vector)");
} }
}
//native DHookSetParamObjectPtrVarVector(Handle:hParams, num, offset, ObjectValueType:type, Float:value[3]); //native DHookSetParamObjectPtrVarVector(Handle:hParams, num, offset, ObjectValueType:type, Float:value[3]);
cell_t Native_SetParamObjectPtrVarVector(IPluginContext *pContext, const cell_t *params) cell_t Native_SetParamObjectPtrVarVector(IPluginContext *pContext, const cell_t *params)
@ -884,31 +881,28 @@ cell_t Native_SetParamObjectPtrVarVector(IPluginContext *pContext, const cell_t
if((ObjectValueType)params[4] == ObjectValueType_VectorPtr) if((ObjectValueType)params[4] == ObjectValueType_VectorPtr)
{ {
Vector *vec = *(Vector **)(addr + params[3]); Vector *vec;
if((ObjectValueType)params[4] == ObjectValueType_VectorPtr)
{
vec = *(Vector **)(addr + params[3]);
if(vec == NULL) if(vec == NULL)
{ {
return pContext->ThrowNativeError("Trying to set value for null pointer."); return pContext->ThrowNativeError("Trying to set value for null pointer.");
} }
}
else else
{ {
vec = (Vector *)(addr + params[3]);
}
vec->x = sp_ctof(buffer[0]); vec->x = sp_ctof(buffer[0]);
vec->y = sp_ctof(buffer[1]); vec->y = sp_ctof(buffer[1]);
vec->z = sp_ctof(buffer[2]); vec->z = sp_ctof(buffer[2]);
return 1; return 1;
} }
}
else if((ObjectValueType)params[4] == ObjectValueType_Vector)
{
(*(Vector *)(addr + params[3])).x = sp_ctof(buffer[0]);
(*(Vector *)(addr + params[3])).y = sp_ctof(buffer[1]);
(*(Vector *)(addr + params[3])).z = sp_ctof(buffer[2]);
return 1;
}
else
{
return pContext->ThrowNativeError("Invalid Object value type (not a type of vector)"); return pContext->ThrowNativeError("Invalid Object value type (not a type of vector)");
} }
}
//native DHookGetParamObjectPtrString(Handle:hParams, num, offset, ObjectValueType:type, String:buffer[], size) //native DHookGetParamObjectPtrString(Handle:hParams, num, offset, ObjectValueType:type, String:buffer[], size)
cell_t Native_GetParamObjectPtrString(IPluginContext *pContext, const cell_t *params) cell_t Native_GetParamObjectPtrString(IPluginContext *pContext, const cell_t *params)
@ -934,18 +928,21 @@ cell_t Native_GetParamObjectPtrString(IPluginContext *pContext, const cell_t *pa
intptr_t addr = GetObjectAddr(paramStruct->dg->params.Element(index).type, paramStruct->orgParams, index); intptr_t addr = GetObjectAddr(paramStruct->dg->params.Element(index).type, paramStruct->orgParams, index);
if((ObjectValueType)params[4] == ObjectValueType_CharPtr) switch((ObjectValueType)params[4])
{
case ObjectValueType_CharPtr:
{ {
char *ptr = *(char **)(addr + params[3]); char *ptr = *(char **)(addr + params[3]);
pContext->StringToLocal(params[5], params[6], ptr == NULL ? "" : (const char *)ptr); pContext->StringToLocal(params[5], params[6], ptr == NULL ? "" : (const char *)ptr);
break;
} }
else if((ObjectValueType)params[4] == ObjectValueType_String) case ObjectValueType_String:
{ {
string_t string = *(string_t *)(addr + params[3]); string_t string = *(string_t *)(addr + params[3]);
pContext->StringToLocal(params[5], params[6], string == NULL_STRING ? "" : STRING(string)); pContext->StringToLocal(params[5], params[6], string == NULL_STRING ? "" : STRING(string));
break;
} }
else default:
{
return pContext->ThrowNativeError("Invalid Object value type (not a type of string)"); return pContext->ThrowNativeError("Invalid Object value type (not a type of string)");
} }
return 1; return 1;