sim.* は require なしで使える名前空間です。メンバーは2種類あります。
sim という名前のフォルダは作れません。この名前空間と衝突するためです。
ファイルとしての sim.lua は置けますが、require の対象外です。ライブラリ関数
Storm Code に同梱されており、バージョンは固定です。利用者が選ぶことはできません。 これは Stormworks の公式ライブラリではありません。sim.clamp(value, lo, hi)
value を [lo, hi] の範囲に収めます。
lo > hi の場合の挙動は未定義です。引数の検証は行いません
(マイクロコントローラー上での実行コストを抑えるためです)。
sim.lerp(a, b, t)
a から b への線形補間です。t = 0 で a、t = 1 で b を返します。
**
t が [0, 1] の外でもクランプしません。**外挿されます。
範囲を保証したい場合は sim.clamp と組み合わせてください。
sim.map(value, inMin, inMax, outMin, outMax)
value を入力範囲から出力範囲へ線形に変換します。
**出力範囲へクランプしません。**入力が範囲外なら外挿されます。
inMin == inMax の場合はゼロ除算になります。検査は行いません。
シミュレータ専用 API
Storm Code の中にしか存在しません。ゲーム内には無いため、 エクスポートするコードから参照するとenvironment-only-api エラーになります。
デバッグ実行では実在するので、実行自体は妨げられません。
これらは通常、手で書くものではありません。
Sim I/O パネルが
マーカーで区切ったブロックとして自動生成します。
このブロックは minify の前に取り除かれるため、パネルから設定している限りエラーにはなりません。