@amxts/core 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (247) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +162 -0
  3. package/README.ru.md +162 -0
  4. package/amxmodx/base/include/amxconst.inc +594 -0
  5. package/amxmodx/base/include/amxmisc.inc +902 -0
  6. package/amxmodx/base/include/amxmodx.inc +3447 -0
  7. package/amxmodx/base/include/amxmodx_version.inc +20 -0
  8. package/amxmodx/base/include/cellarray.inc +525 -0
  9. package/amxmodx/base/include/cellstack.inc +166 -0
  10. package/amxmodx/base/include/celltrie.inc +412 -0
  11. package/amxmodx/base/include/core.inc +202 -0
  12. package/amxmodx/base/include/csstats.inc +298 -0
  13. package/amxmodx/base/include/csstats_const.inc +29 -0
  14. package/amxmodx/base/include/cstrike.inc +1287 -0
  15. package/amxmodx/base/include/cstrike_const.inc +521 -0
  16. package/amxmodx/base/include/csx.inc +259 -0
  17. package/amxmodx/base/include/cvars.inc +547 -0
  18. package/amxmodx/base/include/datapack.inc +161 -0
  19. package/amxmodx/base/include/dbi.inc +154 -0
  20. package/amxmodx/base/include/dodconst.inc +152 -0
  21. package/amxmodx/base/include/dodfun.inc +152 -0
  22. package/amxmodx/base/include/dodstats.inc +69 -0
  23. package/amxmodx/base/include/dodx.inc +161 -0
  24. package/amxmodx/base/include/engine.inc +1343 -0
  25. package/amxmodx/base/include/engine_const.inc +310 -0
  26. package/amxmodx/base/include/engine_stocks.inc +248 -0
  27. package/amxmodx/base/include/esf.inc +70 -0
  28. package/amxmodx/base/include/esf_const.inc +74 -0
  29. package/amxmodx/base/include/fakemeta.inc +1127 -0
  30. package/amxmodx/base/include/fakemeta_const.inc +793 -0
  31. package/amxmodx/base/include/fakemeta_stocks.inc +395 -0
  32. package/amxmodx/base/include/fakemeta_util.inc +882 -0
  33. package/amxmodx/base/include/file.inc +666 -0
  34. package/amxmodx/base/include/float.inc +422 -0
  35. package/amxmodx/base/include/fun.inc +333 -0
  36. package/amxmodx/base/include/gameconfig.inc +93 -0
  37. package/amxmodx/base/include/geoip.inc +264 -0
  38. package/amxmodx/base/include/ham_const.inc +4352 -0
  39. package/amxmodx/base/include/hamsandwich.inc +439 -0
  40. package/amxmodx/base/include/hlsdk_const.inc +808 -0
  41. package/amxmodx/base/include/json.inc +777 -0
  42. package/amxmodx/base/include/lang.inc +119 -0
  43. package/amxmodx/base/include/message_const.inc +1130 -0
  44. package/amxmodx/base/include/message_stocks.inc +161 -0
  45. package/amxmodx/base/include/messages.inc +604 -0
  46. package/amxmodx/base/include/newmenus.inc +387 -0
  47. package/amxmodx/base/include/ns.inc +754 -0
  48. package/amxmodx/base/include/ns_const.inc +196 -0
  49. package/amxmodx/base/include/nvault.inc +154 -0
  50. package/amxmodx/base/include/regex.inc +348 -0
  51. package/amxmodx/base/include/sockets.inc +183 -0
  52. package/amxmodx/base/include/sorting.inc +107 -0
  53. package/amxmodx/base/include/sqlx.inc +582 -0
  54. package/amxmodx/base/include/string.inc +786 -0
  55. package/amxmodx/base/include/string_const.inc +156 -0
  56. package/amxmodx/base/include/string_stocks.inc +325 -0
  57. package/amxmodx/base/include/textparse_ini.inc +214 -0
  58. package/amxmodx/base/include/textparse_smc.inc +261 -0
  59. package/amxmodx/base/include/tfcconst.inc +84 -0
  60. package/amxmodx/base/include/tfcstats.inc +62 -0
  61. package/amxmodx/base/include/tfcx.inc +148 -0
  62. package/amxmodx/base/include/time.inc +118 -0
  63. package/amxmodx/base/include/tsconst.inc +154 -0
  64. package/amxmodx/base/include/tsfun.inc +198 -0
  65. package/amxmodx/base/include/tsstats.inc +65 -0
  66. package/amxmodx/base/include/tsx.inc +88 -0
  67. package/amxmodx/base/include/vault.inc +60 -0
  68. package/amxmodx/base/include/vector.inc +131 -0
  69. package/amxmodx/base/include/xs.inc +1570 -0
  70. package/as/amxts.d.ts +153 -0
  71. package/as/constants.ts +4730 -0
  72. package/as/effects.ts +1449 -0
  73. package/as/entities.ts +5482 -0
  74. package/as/events.ts +3054 -0
  75. package/as/facade.ts +4639 -0
  76. package/as/flags.ts +299 -0
  77. package/as/fs.ts +287 -0
  78. package/as/hooks.ts +18536 -0
  79. package/as/kit.ts +25 -0
  80. package/as/lib/check.ts +86 -0
  81. package/as/modules/http.ts +184 -0
  82. package/as/natives.ts +11845 -0
  83. package/as/os.ts +30 -0
  84. package/as/promise.ts +1392 -0
  85. package/as/promise.types.d.ts +82 -0
  86. package/as/remote.ts +288 -0
  87. package/as/tsconfig.json +22 -0
  88. package/as/vector.ts +65 -0
  89. package/bin/amxts.mjs +10 -0
  90. package/includes/menu_core.inc +355 -0
  91. package/includes/order.txt +54 -0
  92. package/includes/sources.json +27 -0
  93. package/includes/universal_config.inc +355 -0
  94. package/lint/oxlint-plugin.mjs +77 -0
  95. package/node_modules/assemblyscript/LICENSE +201 -0
  96. package/node_modules/assemblyscript/NOTICE +93 -0
  97. package/node_modules/assemblyscript/package.json +63 -0
  98. package/node_modules/assemblyscript/std/README.md +6 -0
  99. package/node_modules/assemblyscript/std/assembly/array.ts +526 -0
  100. package/node_modules/assemblyscript/std/assembly/arraybuffer.ts +77 -0
  101. package/node_modules/assemblyscript/std/assembly/atomics.ts +127 -0
  102. package/node_modules/assemblyscript/std/assembly/bindings/asyncify.ts +16 -0
  103. package/node_modules/assemblyscript/std/assembly/bindings/dom.ts +291 -0
  104. package/node_modules/assemblyscript/std/assembly/bindings/node.ts +6 -0
  105. package/node_modules/assemblyscript/std/assembly/builtins.ts +2631 -0
  106. package/node_modules/assemblyscript/std/assembly/compat.ts +2 -0
  107. package/node_modules/assemblyscript/std/assembly/console.ts +42 -0
  108. package/node_modules/assemblyscript/std/assembly/crypto.ts +9 -0
  109. package/node_modules/assemblyscript/std/assembly/dataview.ts +181 -0
  110. package/node_modules/assemblyscript/std/assembly/date.ts +373 -0
  111. package/node_modules/assemblyscript/std/assembly/diagnostics.ts +11 -0
  112. package/node_modules/assemblyscript/std/assembly/error.ts +44 -0
  113. package/node_modules/assemblyscript/std/assembly/function.ts +38 -0
  114. package/node_modules/assemblyscript/std/assembly/index.d.ts +2822 -0
  115. package/node_modules/assemblyscript/std/assembly/iterator.ts +35 -0
  116. package/node_modules/assemblyscript/std/assembly/map.ts +260 -0
  117. package/node_modules/assemblyscript/std/assembly/math.ts +3289 -0
  118. package/node_modules/assemblyscript/std/assembly/memory.ts +123 -0
  119. package/node_modules/assemblyscript/std/assembly/number.ts +388 -0
  120. package/node_modules/assemblyscript/std/assembly/object.ts +36 -0
  121. package/node_modules/assemblyscript/std/assembly/performance.ts +9 -0
  122. package/node_modules/assemblyscript/std/assembly/polyfills.ts +27 -0
  123. package/node_modules/assemblyscript/std/assembly/process.ts +50 -0
  124. package/node_modules/assemblyscript/std/assembly/reference.ts +48 -0
  125. package/node_modules/assemblyscript/std/assembly/regexp.ts +12 -0
  126. package/node_modules/assemblyscript/std/assembly/rt/README.md +83 -0
  127. package/node_modules/assemblyscript/std/assembly/rt/common.ts +81 -0
  128. package/node_modules/assemblyscript/std/assembly/rt/index-incremental.ts +2 -0
  129. package/node_modules/assemblyscript/std/assembly/rt/index-minimal.ts +2 -0
  130. package/node_modules/assemblyscript/std/assembly/rt/index-stub.ts +1 -0
  131. package/node_modules/assemblyscript/std/assembly/rt/index.d.ts +37 -0
  132. package/node_modules/assemblyscript/std/assembly/rt/itcms.ts +419 -0
  133. package/node_modules/assemblyscript/std/assembly/rt/rtrace.ts +15 -0
  134. package/node_modules/assemblyscript/std/assembly/rt/stub.ts +133 -0
  135. package/node_modules/assemblyscript/std/assembly/rt/tcms.ts +254 -0
  136. package/node_modules/assemblyscript/std/assembly/rt/tlsf.ts +592 -0
  137. package/node_modules/assemblyscript/std/assembly/rt.ts +87 -0
  138. package/node_modules/assemblyscript/std/assembly/set.ts +220 -0
  139. package/node_modules/assemblyscript/std/assembly/shared/feature.ts +65 -0
  140. package/node_modules/assemblyscript/std/assembly/shared/runtime.ts +11 -0
  141. package/node_modules/assemblyscript/std/assembly/shared/target.ts +11 -0
  142. package/node_modules/assemblyscript/std/assembly/shared/tsconfig.json +11 -0
  143. package/node_modules/assemblyscript/std/assembly/shared/typeinfo.ts +72 -0
  144. package/node_modules/assemblyscript/std/assembly/staticarray.ts +401 -0
  145. package/node_modules/assemblyscript/std/assembly/string.ts +847 -0
  146. package/node_modules/assemblyscript/std/assembly/symbol.ts +114 -0
  147. package/node_modules/assemblyscript/std/assembly/table.ts +16 -0
  148. package/node_modules/assemblyscript/std/assembly/tsconfig.json +6 -0
  149. package/node_modules/assemblyscript/std/assembly/typedarray.ts +1945 -0
  150. package/node_modules/assemblyscript/std/assembly/uri.ts +17 -0
  151. package/node_modules/assemblyscript/std/assembly/util/bytes.ts +107 -0
  152. package/node_modules/assemblyscript/std/assembly/util/casemap.ts +497 -0
  153. package/node_modules/assemblyscript/std/assembly/util/error.ts +54 -0
  154. package/node_modules/assemblyscript/std/assembly/util/hash.ts +117 -0
  155. package/node_modules/assemblyscript/std/assembly/util/math.ts +1922 -0
  156. package/node_modules/assemblyscript/std/assembly/util/memory.ts +290 -0
  157. package/node_modules/assemblyscript/std/assembly/util/number.ts +873 -0
  158. package/node_modules/assemblyscript/std/assembly/util/sort.ts +313 -0
  159. package/node_modules/assemblyscript/std/assembly/util/string.ts +1202 -0
  160. package/node_modules/assemblyscript/std/assembly/util/uri.ts +275 -0
  161. package/node_modules/assemblyscript/std/assembly/vector.ts +4 -0
  162. package/node_modules/assemblyscript/std/assembly.json +16 -0
  163. package/node_modules/assemblyscript/std/portable/index.d.ts +462 -0
  164. package/node_modules/assemblyscript/std/portable/index.js +416 -0
  165. package/node_modules/assemblyscript/std/portable.json +11 -0
  166. package/node_modules/assemblyscript/std/types/assembly/index.d.ts +1 -0
  167. package/node_modules/assemblyscript/std/types/assembly/package.json +3 -0
  168. package/node_modules/assemblyscript/std/types/portable/index.d.ts +1 -0
  169. package/node_modules/assemblyscript/std/types/portable/package.json +3 -0
  170. package/node_modules/assemblyscript/tsconfig-base.json +13 -0
  171. package/package.json +112 -0
  172. package/runtime/deps/assemblyscript/LICENSE +201 -0
  173. package/runtime/deps/assemblyscript/NOTICE +93 -0
  174. package/runtime/deps/assemblyscript/bin/asc.js +35 -0
  175. package/runtime/deps/assemblyscript/dist/asc.js +25035 -0
  176. package/runtime/deps/assemblyscript/dist/assemblyscript.js +337 -0
  177. package/runtime/deps/assemblyscript/node_modules/binaryen/LICENSE +201 -0
  178. package/runtime/deps/assemblyscript/node_modules/binaryen/index.js +28905 -0
  179. package/runtime/deps/assemblyscript/node_modules/binaryen/package.json +50 -0
  180. package/runtime/deps/assemblyscript/node_modules/long/LICENSE +202 -0
  181. package/runtime/deps/assemblyscript/node_modules/long/index.js +1581 -0
  182. package/runtime/deps/assemblyscript/node_modules/long/package.json +58 -0
  183. package/runtime/deps/assemblyscript/package.json +114 -0
  184. package/runtime/host/amxts.inc +85 -0
  185. package/runtime/licenses/AMXX-LICENSE.txt +34 -0
  186. package/runtime/licenses/AssemblyScript-LICENSE +201 -0
  187. package/runtime/licenses/AssemblyScript-NOTICE +93 -0
  188. package/runtime/licenses/Binaryen-LICENSE +201 -0
  189. package/runtime/licenses/Bun-LICENSE.md +84 -0
  190. package/runtime/licenses/GPL-3.0.txt +674 -0
  191. package/runtime/licenses/LLVM-LICENSE.TXT +279 -0
  192. package/runtime/licenses/README.md +25 -0
  193. package/runtime/licenses/WAMR-LICENSE +219 -0
  194. package/runtime/natives.txt +1095 -0
  195. package/runtime/patches/README.md +59 -0
  196. package/runtime/patches/assemblyscript-0.28.20-amxts.patch +14174 -0
  197. package/runtime/patches/wamr-2.4.5-amxts.patch +364 -0
  198. package/scripts/apply-docs.ts +508 -0
  199. package/scripts/asc.ts +27 -0
  200. package/scripts/auto-imports.ts +258 -0
  201. package/scripts/build-wasm.ts +595 -0
  202. package/scripts/check.ts +93 -0
  203. package/scripts/compile-cache.ts +179 -0
  204. package/scripts/compile.ts +401 -0
  205. package/scripts/docker-server.ts +73 -0
  206. package/scripts/docs/as/amxts.ts +210 -0
  207. package/scripts/docs/as/effects.ts +1684 -0
  208. package/scripts/docs/as/facade.ts +3302 -0
  209. package/scripts/docs/as/fs.ts +173 -0
  210. package/scripts/docs/as/lib/check.ts +68 -0
  211. package/scripts/docs/as/modules/http.ts +66 -0
  212. package/scripts/docs/as/os.ts +16 -0
  213. package/scripts/docs/as/promise.ts +132 -0
  214. package/scripts/docs/as/promise.types.ts +63 -0
  215. package/scripts/docs/as/vector.ts +48 -0
  216. package/scripts/docs/entities.ts +2338 -0
  217. package/scripts/docs/events.ts +245 -0
  218. package/scripts/docs/game.ts +497 -0
  219. package/scripts/docs/messages.ts +148 -0
  220. package/scripts/file-contents.ts +74 -0
  221. package/scripts/includes.ts +134 -0
  222. package/scripts/player-fields.ts +866 -0
  223. package/scripts/plugin-cache.ts +92 -0
  224. package/scripts/plugin-natives.ts +1157 -0
  225. package/scripts/prebuilt.ts +268 -0
  226. package/scripts/prepare.ts +134 -0
  227. package/scripts/project.ts +973 -0
  228. package/scripts/run.ts +28 -0
  229. package/scripts/shared-modules.ts +906 -0
  230. package/scripts/system.ts +33 -0
  231. package/scripts/tracked-fs.ts +115 -0
  232. package/scripts/typed-configs.ts +788 -0
  233. package/scripts/ui.ts +77 -0
  234. package/src/cli-api.mjs +175 -0
  235. package/src/parser/include-parser.ts +506 -0
  236. package/src/system.mjs +155 -0
  237. package/src/testing/compile-cache.ts +31 -0
  238. package/src/testing/compile.ts +222 -0
  239. package/src/testing/coroutines.ts +191 -0
  240. package/src/testing/index.ts +39 -0
  241. package/src/testing/kits.ts +55 -0
  242. package/src/testing/memory.ts +125 -0
  243. package/src/testing/natives.ts +925 -0
  244. package/src/testing/server.ts +1874 -0
  245. package/src/testing/setup.ts +63 -0
  246. package/src/testing/tables.ts +139 -0
  247. package/src/types.ts +51 -0
@@ -0,0 +1,422 @@
1
+ /* Float arithmetic
2
+ *
3
+ * (c) Copyright 1999, Artran, Inc.
4
+ * Written by Greg Garner (gmg@artran.com)
5
+ * Modified in March 2001 to include user defined
6
+ * operators for the floating point functions.
7
+ *
8
+ * This file is provided as is (no warranties).
9
+ */
10
+
11
+ #if defined _float_included
12
+ #endinput
13
+ #endif
14
+ #define _float_included
15
+
16
+ #pragma rational Float
17
+
18
+ /**
19
+ * Different methods of rounding
20
+ */
21
+ enum floatround_method {
22
+ floatround_round = 0,
23
+ floatround_floor,
24
+ floatround_ceil,
25
+ floatround_tozero
26
+ };
27
+
28
+ /**
29
+ * Different units of measurement for angles
30
+ */
31
+ enum anglemode {
32
+ radian = 0,
33
+ degrees,
34
+ grades
35
+ };
36
+
37
+ /**
38
+ * Converts an integer into a floating point value.
39
+ *
40
+ * @param value Value to be converted
41
+ *
42
+ * @return Converted value
43
+ */
44
+ native Float:float(value);
45
+
46
+ /**
47
+ * Converts a string into a floating point value.
48
+ *
49
+ * @param string Input string to be converted
50
+ *
51
+ * @return Converted value
52
+ */
53
+ native Float:floatstr(const string[]);
54
+
55
+ /**
56
+ * Returns the fractional part of a floating point value
57
+ *
58
+ * @param string Floating point value to get the fractional part from
59
+ *
60
+ * @return The fractional part
61
+ */
62
+ native Float:floatfract(Float:value);
63
+
64
+ /**
65
+ * Rounds a floating point value to an integer value
66
+ *
67
+ * @note For the list of available rounding methods look at
68
+ * floatround_method enumeration.
69
+ *
70
+ * @param value Floating point value to be rounded
71
+ * @param method Rounding method
72
+ *
73
+ * @return Converted value
74
+ */
75
+ native floatround(Float:value, floatround_method:method=floatround_round);
76
+
77
+ /**
78
+ * Compares two floating point values.
79
+ *
80
+ * @param fOne First value to be compared
81
+ * @param fTwo Second value to be compared
82
+ *
83
+ * @return If arguments are equal, returns 0.
84
+ * If the first one is greater, returns 1.
85
+ * If the second one is greater, returns -1.
86
+ */
87
+ native floatcmp(Float:fOne, Float:fTwo);
88
+
89
+ /**
90
+ * Returns the square root of a floating point value
91
+ *
92
+ * @note Same as floatpower(value, 0.5)
93
+ *
94
+ * @param value Floating point value to get square root from
95
+ *
96
+ * @return Square root of the input value
97
+ */
98
+ native Float:floatsqroot(Float:value);
99
+
100
+ /**
101
+ * Returns the value raised to the power of the exponent
102
+ *
103
+ * @param value Floating point value to be raised
104
+ * @param exponent The exponent
105
+ *
106
+ * @return Value raised to the power of the exponent
107
+ */
108
+ native Float:floatpower(Float:value, Float:exponent);
109
+
110
+ /**
111
+ * Returns the logarithm of value
112
+ *
113
+ * @param value Floating point value to calculate the logarithm for
114
+ * @param base The optional logarithmic base to use.
115
+ * Defaults to 10, or the natural logarithm
116
+ *
117
+ * @return Square root of the input value
118
+ */
119
+ native Float:floatlog(Float:value, Float:base=10.0);
120
+
121
+ /**
122
+ * Returns the sine of a given angle
123
+ *
124
+ * @note For available units of measurements(modes) look at the anglemode enum
125
+ *
126
+ * @param value The angle to calculate the sine from
127
+ * @param mode What unit of measurement is the angle specified in
128
+ * Defaults to radians
129
+ *
130
+ * @return The sine of a given angle
131
+ */
132
+ native Float:floatsin(Float:value, anglemode:mode=radian);
133
+
134
+ /**
135
+ * Returns the cosine of a given angle
136
+ *
137
+ * @note For available units of measurements(modes) look at the anglemode enum
138
+ *
139
+ * @param value The angle to calculate the cosine from
140
+ * @param mode What unit of measurement is the angle specified in
141
+ * Defaults to radians
142
+ *
143
+ * @return The cosine of a given angle
144
+ */
145
+ native Float:floatcos(Float:value, anglemode:mode=radian);
146
+
147
+ /**
148
+ * Returns the tangent of a given angle
149
+ *
150
+ * @note For available units of measurements(modes) look at the anglemode enum
151
+ *
152
+ * @param value The angle to calculate the tangent from
153
+ * @param mode What unit of measurement is the angle specified in
154
+ * Defaults to radians
155
+ *
156
+ * @return The tangent of a given angle
157
+ */
158
+ native Float:floattan(Float:value, anglemode:mode=radian);
159
+
160
+ /**
161
+ * Returns the hyperbolic sine of a given angle
162
+ *
163
+ * @note For available units of measurements(modes) look at the anglemode enum
164
+ *
165
+ * @param value The angle to calculate the hyperbolic sine from
166
+ * @param mode What unit of measurement is the angle specified in
167
+ * Defaults to radians
168
+ *
169
+ * @return The hyperbolic sine of a given angle
170
+ */
171
+ native Float:floatsinh(Float:angle, anglemode:mode=radian);
172
+
173
+ /**
174
+ * Returns the hyperbolic cosine of a given angle
175
+ *
176
+ * @note For available units of measurements(modes) look at the anglemode enum
177
+ *
178
+ * @param value The angle to calculate the hyperbolic cosine from
179
+ * @param mode What unit of measurement is the angle specified in
180
+ * Defaults to radians
181
+ *
182
+ * @return The hyperbolic cosine of a given angle
183
+ */
184
+ native Float:floatcosh(Float:angle, anglemode:mode=radian);
185
+
186
+ /**
187
+ * Returns the hyperbolic tangent of a given angle
188
+ *
189
+ * @note For available units of measurements(modes) look at the anglemode enum
190
+ *
191
+ * @param value The angle to calculate the hyperbolic tangent from
192
+ * @param mode What unit of measurement is the angle specified in
193
+ * Defaults to radians
194
+ *
195
+ * @return The hyperbolic tangent of a given angle
196
+ */
197
+ native Float:floattanh(Float:angle, anglemode:mode=radian);
198
+
199
+ /**
200
+ * Returns the absolute value of a floating point value
201
+ *
202
+ * @param value The floating point value to get the absolute value from
203
+ *
204
+ * @return The absolute value
205
+ */
206
+ native Float:floatabs(Float:value);
207
+
208
+ /* Return the angle of a sine, cosine or tangent.
209
+ * The output angle may be in radians, degrees, or grades. */
210
+
211
+ /**
212
+ * Returns the angle of the given tangent
213
+ *
214
+ * @note For available units of measurements(modes) look at the anglemode enum
215
+ *
216
+ * @param value The tangent to calculate the angle from
217
+ * @param mode What unit of measurement should the output angle be in
218
+ *
219
+ * @return The angle of a tangent
220
+ */
221
+ native Float:floatatan(Float:angle, {anglemode,_}:radix);
222
+
223
+ /**
224
+ * Returns the angle of the given cosine
225
+ *
226
+ * @note For available units of measurements(modes) look at the anglemode enum
227
+ *
228
+ * @param value The cosine to calculate the angle from
229
+ * @param mode What unit of measurement should the output angle be in
230
+ *
231
+ * @return The angle of a cosine
232
+ */
233
+ native Float:floatacos(Float:angle, {anglemode,_}:radix);
234
+
235
+ /**
236
+ * Returns the angle of the given sine
237
+ *
238
+ * @note For available units of measurements(modes) look at the anglemode enum
239
+ *
240
+ * @param value The sine to calculate the angle from
241
+ * @param mode What unit of measurement should the output angle be in
242
+ *
243
+ * @return The angle of a sine
244
+ */
245
+ native Float:floatasin(Float:angle, {anglemode,_}:radix);
246
+
247
+ /**
248
+ * Computes the principal value of arctangent of y/x
249
+ *
250
+ * @note Someone should verify this native, not sure what it actually does.
251
+ * @note For available units of measurements(modes) look at the anglemode enum
252
+ *
253
+ * @param x Value representing the proportion of the x-coordinate.
254
+ * @param y Value representing the proportion of the x-coordinate.
255
+ * @param mode What unit of measurement should the output angle be in
256
+ *
257
+ * @return Arctangent of y/x
258
+ */
259
+ native Float:floatatan2(Float:x, Float:y, {anglemode,_}:radix);
260
+
261
+
262
+
263
+ /* Multiply two floats together */
264
+ native Float:floatmul(Float:oper1, Float:oper2);
265
+
266
+ /* Divide the dividend float by the divisor float */
267
+ native Float:floatdiv(Float:dividend, Float:divisor);
268
+
269
+ /* Add two floats together */
270
+ native Float:floatadd(Float:dividend, Float:divisor);
271
+
272
+ /* Subtract oper2 float from oper1 float */
273
+ native Float:floatsub(Float:oper1, Float:oper2);
274
+
275
+ /* user defined operators */
276
+ native Float:operator*(Float:oper1, Float:oper2) = floatmul;
277
+ native Float:operator/(Float:oper1, Float:oper2) = floatdiv;
278
+ native Float:operator+(Float:oper1, Float:oper2) = floatadd;
279
+ native Float:operator-(Float:oper1, Float:oper2) = floatsub;
280
+
281
+ stock Float:operator++(Float:oper)
282
+ return oper+1.0;
283
+
284
+ stock Float:operator--(Float:oper)
285
+ return oper-1.0;
286
+
287
+ stock Float:operator-(Float:oper)
288
+ return oper^Float:cellmin; /* IEEE values are sign/magnitude */
289
+
290
+ stock Float:operator*(Float:oper1, oper2)
291
+ return floatmul(oper1, float(oper2)); /* "*" is commutative */
292
+
293
+ stock Float:operator/(Float:oper1, oper2)
294
+ return floatdiv(oper1, float(oper2));
295
+
296
+ stock Float:operator/(oper1, Float:oper2)
297
+ return floatdiv(float(oper1), oper2);
298
+
299
+ stock Float:operator+(Float:oper1, oper2)
300
+ return floatadd(oper1, float(oper2)); /* "+" is commutative */
301
+
302
+ stock Float:operator-(Float:oper1, oper2)
303
+ return floatsub(oper1, float(oper2));
304
+
305
+ stock Float:operator-(oper1, Float:oper2)
306
+ return floatsub(float(oper1), oper2);
307
+
308
+ stock bool:operator==(Float:oper1, Float:oper2)
309
+ return floatcmp(oper1, oper2) == 0;
310
+
311
+ stock bool:operator==(Float:oper1, oper2)
312
+ return floatcmp(oper1, float(oper2)) == 0; /* "==" is commutative */
313
+
314
+ stock bool:operator!=(Float:oper1, Float:oper2)
315
+ return floatcmp(oper1, oper2) != 0;
316
+
317
+ stock bool:operator!=(Float:oper1, oper2)
318
+ return floatcmp(oper1, float(oper2)) != 0; /* "==" is commutative */
319
+
320
+ stock bool:operator>(Float:oper1, Float:oper2)
321
+ return floatcmp(oper1, oper2) > 0;
322
+
323
+ stock bool:operator>(Float:oper1, oper2)
324
+ return floatcmp(oper1, float(oper2)) > 0;
325
+
326
+ stock bool:operator>(oper1, Float:oper2)
327
+ return floatcmp(float(oper1), oper2) > 0;
328
+
329
+ stock bool:operator>=(Float:oper1, Float:oper2)
330
+ return floatcmp(oper1, oper2) >= 0;
331
+
332
+ stock bool:operator>=(Float:oper1, oper2)
333
+ return floatcmp(oper1, float(oper2)) >= 0;
334
+
335
+ stock bool:operator>=(oper1, Float:oper2)
336
+ return floatcmp(float(oper1), oper2) >= 0;
337
+
338
+ stock bool:operator<(Float:oper1, Float:oper2)
339
+ return floatcmp(oper1, oper2) < 0;
340
+
341
+ stock bool:operator<(Float:oper1, oper2)
342
+ return floatcmp(oper1, float(oper2)) < 0;
343
+
344
+ stock bool:operator<(oper1, Float:oper2)
345
+ return floatcmp(float(oper1), oper2) < 0;
346
+
347
+ stock bool:operator<=(Float:oper1, Float:oper2)
348
+ return floatcmp(oper1, oper2) <= 0;
349
+
350
+ stock bool:operator<=(Float:oper1, oper2)
351
+ return floatcmp(oper1, float(oper2)) <= 0;
352
+
353
+ stock bool:operator<=(oper1, Float:oper2)
354
+ return floatcmp(float(oper1), oper2) <= 0;
355
+
356
+ stock bool:operator!(Float:oper)
357
+ return (_:oper & ((-1)/2)) == 0; /* -1 = all bits to 1; /2 = remove most significant bit (sign)
358
+ works on both 32bit and 64bit systems; no constant required */
359
+ /* forbidden operations */
360
+ forward operator%(Float:oper1, Float:oper2);
361
+ forward operator%(Float:oper1, oper2);
362
+ forward operator%(oper1, Float:oper2);
363
+
364
+
365
+ /**
366
+ * Returns whichever value is the smaller one
367
+ *
368
+ * @param ValueA The first value
369
+ * @param ValueB The second value
370
+ *
371
+ * @return ValueA if it is smaller than ValueB, and vice versa
372
+ */
373
+ stock Float:floatmin(Float:ValueA, Float:ValueB)
374
+ {
375
+ if (ValueA<=ValueB)
376
+ {
377
+ return ValueA;
378
+ }
379
+
380
+ return ValueB;
381
+ }
382
+
383
+ /**
384
+ * Returns whichever value is the greater one
385
+ *
386
+ * @param ValueA The first value
387
+ * @param ValueB The second value
388
+ *
389
+ * @return ValueA if it is greater than ValueB, and vice versa
390
+ */
391
+ stock Float:floatmax(Float:ValueA, Float:ValueB)
392
+ {
393
+ if (ValueA>=ValueB)
394
+ {
395
+ return ValueA;
396
+ }
397
+
398
+ return ValueB;
399
+ }
400
+
401
+ /**
402
+ * Clamps a value between a minimum and a maximum floating point value
403
+ *
404
+ * @param Value The value to be clamped
405
+ * @param MinValue Minimum value
406
+ * @param MaxValue Maximum value
407
+ *
408
+ * @return The Value clamped between MinValue and MaxValue
409
+ */
410
+ stock Float:floatclamp(Float:Value, Float:MinValue, Float:MaxValue)
411
+ {
412
+ if (Value<=MinValue)
413
+ {
414
+ return MinValue;
415
+ }
416
+ if (Value>=MaxValue)
417
+ {
418
+ return MaxValue;
419
+ }
420
+
421
+ return Value;
422
+ }