core/smn_float.cpp
changeset 836 baa0ec2b5ac7
parent 831 1995c0dd5c04
child 851 66d23844a8aa
     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  };