1.1 --- a/core/smn_float.cpp Tue May 22 23:00:12 2007 +0000
1.2 +++ b/core/smn_float.cpp Tue May 22 23:45:53 2007 +0000
1.3 @@ -230,6 +230,42 @@
1.4 return sp_ftoc(val1);
1.5 }
1.6
1.7 +static cell_t sm_FloatRound(IPluginContext *pCtx, const cell_t *params)
1.8 +{
1.9 + float val = sp_ctof(params[1]);
1.10 +
1.11 + switch (params[2])
1.12 + {
1.13 + case 1:
1.14 + {
1.15 + val = floor(val);
1.16 + break;
1.17 + }
1.18 + case 2:
1.19 + {
1.20 + val = ceil(val);
1.21 + break;
1.22 + }
1.23 + case 3:
1.24 + {
1.25 + if (val >= 0.0f)
1.26 + {
1.27 + val = floor(val);
1.28 + } else {
1.29 + val = ceil(val);
1.30 + }
1.31 + break;
1.32 + }
1.33 + default:
1.34 + {
1.35 + val = (float)floor(val + 0.5f);
1.36 + break;
1.37 + }
1.38 + }
1.39 +
1.40 + return static_cast<int>(val);
1.41 +}
1.42 +
1.43 REGISTER_NATIVES(floatnatives)
1.44 {
1.45 {"float", sm_float},
1.46 @@ -255,5 +291,6 @@
1.47 {"ArcCosine", sm_ArcCosine},
1.48 {"ArcSine", sm_ArcSine},
1.49 {"ArcTangent2", sm_ArcTangent2},
1.50 + {"FloatRound", sm_FloatRound}, /* Backwards compat shim */
1.51 {NULL, NULL}
1.52 };