Lists are compatible with built-in float lists like Extended!
Special Thanks to ChrisNonyminus for several of the value list prefixes.
Quick Recommendations:
F__LIMIT_0.1_to_1 for a limiter
Any of the F__LIMIT_COMMON lists for a limiter list
Any of the F__VALUE_COMMON lists for a value list
To create a Float Tilt Filter, set the first line of the file to this: @FloatTiltListFilter
Format:
(PREFIX)[MIN]->[MAX] Ex: (ADD)-1.0->2.0
(PREFIX)[EXACT] Ex: (MUL)3.0
Limiter List Features:
-Converts bytes into IEEE 754 32-bit floats, checks if the converted value is valid, non-infinite, and between a specified range of values.
-Limiter List entries are always prefixed with (LIM), and will be ignored when the list is used as a value list.
-All entries with prefixes besides (LIM) will be ignored when using the list as a limiter list.
Example Limiter List:
When used as a limiter list will match values between 0.5 and 1.0, and values exactly equal to 2.0
@FloatTiltListFilter
(LIM)0.5->1.0
(LIM)2.0
Limiter List Notes:
-Limiter entries containing 0.0 (0x00000000) are not recommended due to the very high number of false positives.
-Limiter entries covering large ranges will result in more false positives.
Value List Features:
-Converts bytes into IEEE 754 32-bit floats, performs floating point operations on the data, then converts the result back into an array of bytes.
-Adding #REPEAT:[NUMBER] ( Ex: #REPEAT:3 ) to the top of the file under @FloatTiltListFilter will cause the list to run the specified number of times, operating on the result each time. Make sure it is a whole number with no decimal point.
Example Value List:
The following list will either divide by 3, multiply by 2, add a random value between -1.0 and 1.0 (inclusive), or subtract a random value between 0.001 and 0.1
@FloatTiltListFilter
(DIV)3.0
(MUL)2.0
(ADD)-1.0->1.0
(SUB)0.001->0.1
Prefix List:
Key:
X = A random number chosen from the specified range (or exact)
value = value from limiter list that is being operated on
LIM Specifies a limiter entry, is ignored for value lists
ADD: Adds X to the value.
SUB: Subtracts X from the value.
MUL: Multiplies the value by X.
DIV: Divides the value by X. If not a range and X is zero, the list will be invalid
SET: Sets the value to X directly.
ABS: Sets the value to its Absolute Value. X is ignored.
NEG: Sets the value to -1.0 times its Absolute Value. X is ignored.
SQRT: Sets the value to its square root. X is ignored.
RND: Rounds the value up to the nearest whole number. X is ignored.
SIN: Sets the value to its Sine. X is ignored.
SINADD: Sets the value to Sin(value) + Sin(X).
COS: Sets the value to its Cosine. X is ignored.
COSADD: Sets the value to Math.Cos(value) + Math.Cos(X).
TAN: Sets the value to its Tangent. X is ignored.
TANADD: Sets the value to Tan(value) + Tan(X).
LOG: Sets the value to the Log of X. If value is less than 0, the original value is returned. X is ignored.
LOGADD Sets the value to Math.Log(value) + Math.Log(X). If value <= 0 or X <= 0, the original value is returned.
POW Raises value to the Xth power
Notes:
List Precision is locked at 4 bytes/32 bits
Infinity and NAN values are currently not supported for limiter lists