@rezless/vm 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.
- package/LICENSE +202 -0
- package/NOTICE +32 -0
- package/dist/builtins/base64.d.ts +25 -0
- package/dist/builtins/base64.d.ts.map +1 -0
- package/dist/builtins/base64.js +43 -0
- package/dist/builtins/base64.js.map +1 -0
- package/dist/builtins/chat.d.ts +10 -0
- package/dist/builtins/chat.d.ts.map +1 -0
- package/dist/builtins/chat.js +36 -0
- package/dist/builtins/chat.js.map +1 -0
- package/dist/builtins/dataserver.d.ts +26 -0
- package/dist/builtins/dataserver.d.ts.map +1 -0
- package/dist/builtins/dataserver.js +20 -0
- package/dist/builtins/dataserver.js.map +1 -0
- package/dist/builtins/detected.d.ts +40 -0
- package/dist/builtins/detected.d.ts.map +1 -0
- package/dist/builtins/detected.js +23 -0
- package/dist/builtins/detected.js.map +1 -0
- package/dist/builtins/hash.d.ts +6 -0
- package/dist/builtins/hash.d.ts.map +1 -0
- package/dist/builtins/hash.js +34 -0
- package/dist/builtins/hash.js.map +1 -0
- package/dist/builtins/http.d.ts +40 -0
- package/dist/builtins/http.d.ts.map +1 -0
- package/dist/builtins/http.js +87 -0
- package/dist/builtins/http.js.map +1 -0
- package/dist/builtins/identity.d.ts +14 -0
- package/dist/builtins/identity.d.ts.map +1 -0
- package/dist/builtins/identity.js +17 -0
- package/dist/builtins/identity.js.map +1 -0
- package/dist/builtins/index.d.ts +8 -0
- package/dist/builtins/index.d.ts.map +1 -0
- package/dist/builtins/index.js +232 -0
- package/dist/builtins/index.js.map +1 -0
- package/dist/builtins/inventory.d.ts +33 -0
- package/dist/builtins/inventory.d.ts.map +1 -0
- package/dist/builtins/inventory.js +134 -0
- package/dist/builtins/inventory.js.map +1 -0
- package/dist/builtins/json.d.ts +7 -0
- package/dist/builtins/json.d.ts.map +1 -0
- package/dist/builtins/json.js +690 -0
- package/dist/builtins/json.js.map +1 -0
- package/dist/builtins/link-info.d.ts +10 -0
- package/dist/builtins/link-info.d.ts.map +1 -0
- package/dist/builtins/link-info.js +26 -0
- package/dist/builtins/link-info.js.map +1 -0
- package/dist/builtins/linked.d.ts +23 -0
- package/dist/builtins/linked.d.ts.map +1 -0
- package/dist/builtins/linked.js +20 -0
- package/dist/builtins/linked.js.map +1 -0
- package/dist/builtins/linksetdata.d.ts +20 -0
- package/dist/builtins/linksetdata.d.ts.map +1 -0
- package/dist/builtins/linksetdata.js +196 -0
- package/dist/builtins/linksetdata.js.map +1 -0
- package/dist/builtins/listen.d.ts +33 -0
- package/dist/builtins/listen.d.ts.map +1 -0
- package/dist/builtins/listen.js +45 -0
- package/dist/builtins/listen.js.map +1 -0
- package/dist/builtins/lists.d.ts +37 -0
- package/dist/builtins/lists.d.ts.map +1 -0
- package/dist/builtins/lists.js +275 -0
- package/dist/builtins/lists.js.map +1 -0
- package/dist/builtins/math.d.ts +32 -0
- package/dist/builtins/math.d.ts.map +1 -0
- package/dist/builtins/math.js +104 -0
- package/dist/builtins/math.js.map +1 -0
- package/dist/builtins/object.d.ts +29 -0
- package/dist/builtins/object.d.ts.map +1 -0
- package/dist/builtins/object.js +50 -0
- package/dist/builtins/object.js.map +1 -0
- package/dist/builtins/prim-accessors.d.ts +56 -0
- package/dist/builtins/prim-accessors.d.ts.map +1 -0
- package/dist/builtins/prim-accessors.js +353 -0
- package/dist/builtins/prim-accessors.js.map +1 -0
- package/dist/builtins/prim-params.d.ts +12 -0
- package/dist/builtins/prim-params.d.ts.map +1 -0
- package/dist/builtins/prim-params.js +124 -0
- package/dist/builtins/prim-params.js.map +1 -0
- package/dist/builtins/script-control.d.ts +13 -0
- package/dist/builtins/script-control.d.ts.map +1 -0
- package/dist/builtins/script-control.js +41 -0
- package/dist/builtins/script-control.js.map +1 -0
- package/dist/builtins/strings.d.ts +23 -0
- package/dist/builtins/strings.d.ts.map +1 -0
- package/dist/builtins/strings.js +130 -0
- package/dist/builtins/strings.js.map +1 -0
- package/dist/builtins/time.d.ts +28 -0
- package/dist/builtins/time.d.ts.map +1 -0
- package/dist/builtins/time.js +54 -0
- package/dist/builtins/time.js.map +1 -0
- package/dist/clock.d.ts +75 -0
- package/dist/clock.d.ts.map +1 -0
- package/dist/clock.js +125 -0
- package/dist/clock.js.map +1 -0
- package/dist/coverage.d.ts +110 -0
- package/dist/coverage.d.ts.map +1 -0
- package/dist/coverage.js +221 -0
- package/dist/coverage.js.map +1 -0
- package/dist/dispatch.d.ts +19 -0
- package/dist/dispatch.d.ts.map +1 -0
- package/dist/dispatch.js +42 -0
- package/dist/dispatch.js.map +1 -0
- package/dist/env.d.ts +33 -0
- package/dist/env.d.ts.map +1 -0
- package/dist/env.js +76 -0
- package/dist/env.js.map +1 -0
- package/dist/generated/constants.d.ts +967 -0
- package/dist/generated/constants.d.ts.map +1 -0
- package/dist/generated/constants.js +969 -0
- package/dist/generated/constants.js.map +1 -0
- package/dist/generated/constants_table.d.ts +11 -0
- package/dist/generated/constants_table.d.ts.map +1 -0
- package/dist/generated/constants_table.js +978 -0
- package/dist/generated/constants_table.js.map +1 -0
- package/dist/generated/events.d.ts +545 -0
- package/dist/generated/events.d.ts.map +1 -0
- package/dist/generated/events.js +49 -0
- package/dist/generated/events.js.map +1 -0
- package/dist/generated/functions.d.ts +6051 -0
- package/dist/generated/functions.d.ts.map +1 -0
- package/dist/generated/functions.js +526 -0
- package/dist/generated/functions.js.map +1 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/index.js.map +1 -0
- package/dist/interpreter.d.ts +39 -0
- package/dist/interpreter.d.ts.map +1 -0
- package/dist/interpreter.js +381 -0
- package/dist/interpreter.js.map +1 -0
- package/dist/inventory.d.ts +52 -0
- package/dist/inventory.d.ts.map +1 -0
- package/dist/inventory.js +45 -0
- package/dist/inventory.js.map +1 -0
- package/dist/linkset.d.ts +89 -0
- package/dist/linkset.d.ts.map +1 -0
- package/dist/linkset.js +179 -0
- package/dist/linkset.js.map +1 -0
- package/dist/prim-params.d.ts +221 -0
- package/dist/prim-params.d.ts.map +1 -0
- package/dist/prim-params.js +852 -0
- package/dist/prim-params.js.map +1 -0
- package/dist/prim.d.ts +79 -0
- package/dist/prim.d.ts.map +1 -0
- package/dist/prim.js +96 -0
- package/dist/prim.js.map +1 -0
- package/dist/random.d.ts +16 -0
- package/dist/random.d.ts.map +1 -0
- package/dist/random.js +29 -0
- package/dist/random.js.map +1 -0
- package/dist/runtime.d.ts +108 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +2 -0
- package/dist/runtime.js.map +1 -0
- package/dist/script.d.ts +248 -0
- package/dist/script.d.ts.map +1 -0
- package/dist/script.js +667 -0
- package/dist/script.js.map +1 -0
- package/dist/values/coerce.d.ts +22 -0
- package/dist/values/coerce.d.ts.map +1 -0
- package/dist/values/coerce.js +184 -0
- package/dist/values/coerce.js.map +1 -0
- package/dist/values/format.d.ts +20 -0
- package/dist/values/format.d.ts.map +1 -0
- package/dist/values/format.js +47 -0
- package/dist/values/format.js.map +1 -0
- package/dist/values/ops.d.ts +19 -0
- package/dist/values/ops.d.ts.map +1 -0
- package/dist/values/ops.js +345 -0
- package/dist/values/ops.js.map +1 -0
- package/dist/values/types.d.ts +39 -0
- package/dist/values/types.d.ts.map +1 -0
- package/dist/values/types.js +68 -0
- package/dist/values/types.js.map +1 -0
- package/package.json +52 -0
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
import { isVector, isRotation, ZERO_VECTOR, ZERO_ROTATION, NULL_KEY, toInt32 } from '../values/types.js';
|
|
2
|
+
import { formatList } from '../values/format.js';
|
|
3
|
+
/** llGetListLength(list l) — number of elements. */
|
|
4
|
+
export const llGetListLength = (_ctx, args) => {
|
|
5
|
+
const l = args[0];
|
|
6
|
+
return (l?.length ?? 0) | 0;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Resolve an index that may be negative (counts from the end) and bound it
|
|
10
|
+
* to [0, length). Returns -1 for out-of-range so callers can short-circuit
|
|
11
|
+
* to the LSL default.
|
|
12
|
+
*/
|
|
13
|
+
function resolveIndex(idx, len) {
|
|
14
|
+
if (idx < 0)
|
|
15
|
+
idx = len + idx;
|
|
16
|
+
if (idx < 0 || idx >= len)
|
|
17
|
+
return -1;
|
|
18
|
+
return idx;
|
|
19
|
+
}
|
|
20
|
+
/** llList2Integer(list l, integer i) — element coerced to integer (0 default). */
|
|
21
|
+
export const llList2Integer = (_ctx, args) => {
|
|
22
|
+
const l = args[0];
|
|
23
|
+
if (!l)
|
|
24
|
+
return 0;
|
|
25
|
+
const i = resolveIndex(args[1] ?? 0, l.length);
|
|
26
|
+
if (i < 0)
|
|
27
|
+
return 0;
|
|
28
|
+
const v = l[i];
|
|
29
|
+
if (typeof v === 'number')
|
|
30
|
+
return toInt32(Math.trunc(v));
|
|
31
|
+
if (typeof v === 'string') {
|
|
32
|
+
const n = Number.parseInt(v, 10);
|
|
33
|
+
return Number.isNaN(n) ? 0 : toInt32(n);
|
|
34
|
+
}
|
|
35
|
+
return 0;
|
|
36
|
+
};
|
|
37
|
+
export const llList2Float = (_ctx, args) => {
|
|
38
|
+
const l = args[0];
|
|
39
|
+
if (!l)
|
|
40
|
+
return 0;
|
|
41
|
+
const i = resolveIndex(args[1] ?? 0, l.length);
|
|
42
|
+
if (i < 0)
|
|
43
|
+
return 0;
|
|
44
|
+
const v = l[i];
|
|
45
|
+
if (typeof v === 'number')
|
|
46
|
+
return v;
|
|
47
|
+
if (typeof v === 'string') {
|
|
48
|
+
const n = Number.parseFloat(v);
|
|
49
|
+
return Number.isNaN(n) ? 0 : n;
|
|
50
|
+
}
|
|
51
|
+
return 0;
|
|
52
|
+
};
|
|
53
|
+
export const llList2String = (_ctx, args) => {
|
|
54
|
+
const l = args[0];
|
|
55
|
+
if (!l)
|
|
56
|
+
return '';
|
|
57
|
+
const i = resolveIndex(args[1] ?? 0, l.length);
|
|
58
|
+
if (i < 0)
|
|
59
|
+
return '';
|
|
60
|
+
const v = l[i];
|
|
61
|
+
if (typeof v === 'string')
|
|
62
|
+
return v;
|
|
63
|
+
if (typeof v === 'number')
|
|
64
|
+
return Number.isInteger(v) ? String(v | 0) : v.toFixed(6);
|
|
65
|
+
if (Array.isArray(v))
|
|
66
|
+
return formatList(v);
|
|
67
|
+
if (isVector(v)) {
|
|
68
|
+
const u = v;
|
|
69
|
+
return `<${u.x.toFixed(6)}, ${u.y.toFixed(6)}, ${u.z.toFixed(6)}>`;
|
|
70
|
+
}
|
|
71
|
+
if (isRotation(v)) {
|
|
72
|
+
const r = v;
|
|
73
|
+
return `<${r.x.toFixed(6)}, ${r.y.toFixed(6)}, ${r.z.toFixed(6)}, ${r.s.toFixed(6)}>`;
|
|
74
|
+
}
|
|
75
|
+
return '';
|
|
76
|
+
};
|
|
77
|
+
export const llList2Key = (_ctx, args) => {
|
|
78
|
+
const l = args[0];
|
|
79
|
+
if (!l)
|
|
80
|
+
return NULL_KEY;
|
|
81
|
+
const i = resolveIndex(args[1] ?? 0, l.length);
|
|
82
|
+
if (i < 0)
|
|
83
|
+
return NULL_KEY;
|
|
84
|
+
const v = l[i];
|
|
85
|
+
return typeof v === 'string' ? v : NULL_KEY;
|
|
86
|
+
};
|
|
87
|
+
export const llList2Vector = (_ctx, args) => {
|
|
88
|
+
const l = args[0];
|
|
89
|
+
if (!l)
|
|
90
|
+
return ZERO_VECTOR;
|
|
91
|
+
const i = resolveIndex(args[1] ?? 0, l.length);
|
|
92
|
+
if (i < 0)
|
|
93
|
+
return ZERO_VECTOR;
|
|
94
|
+
const v = l[i];
|
|
95
|
+
return isVector(v) ? v : ZERO_VECTOR;
|
|
96
|
+
};
|
|
97
|
+
export const llList2Rot = (_ctx, args) => {
|
|
98
|
+
const l = args[0];
|
|
99
|
+
if (!l)
|
|
100
|
+
return ZERO_ROTATION;
|
|
101
|
+
const i = resolveIndex(args[1] ?? 0, l.length);
|
|
102
|
+
if (i < 0)
|
|
103
|
+
return ZERO_ROTATION;
|
|
104
|
+
const v = l[i];
|
|
105
|
+
return isRotation(v) ? v : ZERO_ROTATION;
|
|
106
|
+
};
|
|
107
|
+
/**
|
|
108
|
+
* llList2List(list src, integer start, integer end) — inclusive slice.
|
|
109
|
+
* Same wrap rules as llGetSubString.
|
|
110
|
+
*/
|
|
111
|
+
export const llList2List = (_ctx, args) => {
|
|
112
|
+
const src = args[0];
|
|
113
|
+
if (!src)
|
|
114
|
+
return [];
|
|
115
|
+
const len = src.length;
|
|
116
|
+
if (len === 0)
|
|
117
|
+
return [];
|
|
118
|
+
let start = args[1] ?? 0;
|
|
119
|
+
let end = args[2] ?? 0;
|
|
120
|
+
if (start < 0)
|
|
121
|
+
start = Math.max(0, len + start);
|
|
122
|
+
else
|
|
123
|
+
start = Math.min(len - 1, start);
|
|
124
|
+
if (end < 0)
|
|
125
|
+
end = Math.max(0, len + end);
|
|
126
|
+
else
|
|
127
|
+
end = Math.min(len - 1, end);
|
|
128
|
+
if (start <= end)
|
|
129
|
+
return src.slice(start, end + 1);
|
|
130
|
+
return [...src.slice(0, end + 1), ...src.slice(start)];
|
|
131
|
+
};
|
|
132
|
+
/**
|
|
133
|
+
* llDeleteSubList(list src, integer start, integer end) — inverse of
|
|
134
|
+
* llList2List. Same wrap rules.
|
|
135
|
+
*/
|
|
136
|
+
export const llDeleteSubList = (_ctx, args) => {
|
|
137
|
+
const src = args[0];
|
|
138
|
+
if (!src)
|
|
139
|
+
return [];
|
|
140
|
+
const len = src.length;
|
|
141
|
+
let start = args[1] ?? 0;
|
|
142
|
+
let end = args[2] ?? 0;
|
|
143
|
+
if (start < 0)
|
|
144
|
+
start = Math.max(0, len + start);
|
|
145
|
+
else
|
|
146
|
+
start = Math.min(len - 1, start);
|
|
147
|
+
if (end < 0)
|
|
148
|
+
end = Math.max(0, len + end);
|
|
149
|
+
else
|
|
150
|
+
end = Math.min(len - 1, end);
|
|
151
|
+
if (start <= end)
|
|
152
|
+
return [...src.slice(0, start), ...src.slice(end + 1)];
|
|
153
|
+
return src.slice(end + 1, start);
|
|
154
|
+
};
|
|
155
|
+
/** llListInsertList(list dst, list src, integer pos) — inserts src at pos. */
|
|
156
|
+
export const llListInsertList = (_ctx, args) => {
|
|
157
|
+
const dst = args[0] ?? [];
|
|
158
|
+
const src = args[1] ?? [];
|
|
159
|
+
let pos = args[2] ?? 0;
|
|
160
|
+
if (pos < 0)
|
|
161
|
+
pos = Math.max(0, dst.length + pos);
|
|
162
|
+
pos = Math.min(dst.length, pos);
|
|
163
|
+
return [...dst.slice(0, pos), ...src, ...dst.slice(pos)];
|
|
164
|
+
};
|
|
165
|
+
/**
|
|
166
|
+
* llListReplaceList(list dst, list src, integer start, integer end)
|
|
167
|
+
* — replaces dst[start..end] (inclusive) with src.
|
|
168
|
+
*/
|
|
169
|
+
export const llListReplaceList = (_ctx, args) => {
|
|
170
|
+
const dst = args[0] ?? [];
|
|
171
|
+
const src = args[1] ?? [];
|
|
172
|
+
const len = dst.length;
|
|
173
|
+
let start = args[2] ?? 0;
|
|
174
|
+
let end = args[3] ?? 0;
|
|
175
|
+
if (start < 0)
|
|
176
|
+
start = Math.max(0, len + start);
|
|
177
|
+
else
|
|
178
|
+
start = Math.min(len, start);
|
|
179
|
+
if (end < 0)
|
|
180
|
+
end = Math.max(0, len + end);
|
|
181
|
+
else
|
|
182
|
+
end = Math.min(len - 1, end);
|
|
183
|
+
if (start <= end)
|
|
184
|
+
return [...dst.slice(0, start), ...src, ...dst.slice(end + 1)];
|
|
185
|
+
// wrapped — match LSL: replaces [0..end] and [start..end-of-list] both
|
|
186
|
+
return [...src, ...dst.slice(end + 1, start)];
|
|
187
|
+
};
|
|
188
|
+
/**
|
|
189
|
+
* llListFindList(list src, list test) — index of first occurrence of `test`
|
|
190
|
+
* as a contiguous subsequence in `src`, or -1. Empty `test` returns 0
|
|
191
|
+
* (per LSL).
|
|
192
|
+
*/
|
|
193
|
+
export const llListFindList = (_ctx, args) => {
|
|
194
|
+
const src = args[0] ?? [];
|
|
195
|
+
const test = args[1] ?? [];
|
|
196
|
+
if (test.length === 0)
|
|
197
|
+
return 0;
|
|
198
|
+
outer: for (let i = 0; i <= src.length - test.length; i++) {
|
|
199
|
+
for (let j = 0; j < test.length; j++) {
|
|
200
|
+
const a = src[i + j];
|
|
201
|
+
const b = test[j];
|
|
202
|
+
if (!lslElementsEqual(a, b))
|
|
203
|
+
continue outer;
|
|
204
|
+
}
|
|
205
|
+
return i;
|
|
206
|
+
}
|
|
207
|
+
return -1;
|
|
208
|
+
};
|
|
209
|
+
function lslElementsEqual(a, b) {
|
|
210
|
+
if (a === b)
|
|
211
|
+
return true;
|
|
212
|
+
if (typeof a === 'object' && typeof b === 'object' && a && b) {
|
|
213
|
+
return JSON.stringify(a) === JSON.stringify(b);
|
|
214
|
+
}
|
|
215
|
+
return false;
|
|
216
|
+
}
|
|
217
|
+
export const llDumpList2String = (_ctx, args) => {
|
|
218
|
+
const list = args[0] ?? [];
|
|
219
|
+
const sep = args[1] ?? '';
|
|
220
|
+
return list.map((v) => {
|
|
221
|
+
if (typeof v === 'string')
|
|
222
|
+
return v;
|
|
223
|
+
if (typeof v === 'number')
|
|
224
|
+
return Number.isInteger(v) ? String(v | 0) : v.toFixed(6);
|
|
225
|
+
if (Array.isArray(v))
|
|
226
|
+
return formatList(v);
|
|
227
|
+
if (isVector(v)) {
|
|
228
|
+
const u = v;
|
|
229
|
+
return `<${u.x.toFixed(6)}, ${u.y.toFixed(6)}, ${u.z.toFixed(6)}>`;
|
|
230
|
+
}
|
|
231
|
+
if (isRotation(v)) {
|
|
232
|
+
const r = v;
|
|
233
|
+
return `<${r.x.toFixed(6)}, ${r.y.toFixed(6)}, ${r.z.toFixed(6)}, ${r.s.toFixed(6)}>`;
|
|
234
|
+
}
|
|
235
|
+
return '';
|
|
236
|
+
}).join(sep);
|
|
237
|
+
};
|
|
238
|
+
export const llCSV2List = (_ctx, args) => {
|
|
239
|
+
const s = args[0] ?? '';
|
|
240
|
+
if (s === '')
|
|
241
|
+
return [];
|
|
242
|
+
return s.split(/,\s*/);
|
|
243
|
+
};
|
|
244
|
+
export const llParseString2List = (_ctx, args) => {
|
|
245
|
+
const src = args[0] ?? '';
|
|
246
|
+
const seps = args[1] ?? [];
|
|
247
|
+
const keep = args[2] ?? [];
|
|
248
|
+
const allTokens = [...seps.filter((x) => typeof x === 'string'), ...keep.filter((x) => typeof x === 'string')];
|
|
249
|
+
if (allTokens.length === 0)
|
|
250
|
+
return src ? [src] : [];
|
|
251
|
+
const out = [];
|
|
252
|
+
let buffer = '';
|
|
253
|
+
let i = 0;
|
|
254
|
+
while (i < src.length) {
|
|
255
|
+
const matched = allTokens
|
|
256
|
+
.filter((t) => t.length > 0 && src.startsWith(t, i))
|
|
257
|
+
.sort((a, b) => b.length - a.length)[0];
|
|
258
|
+
if (matched) {
|
|
259
|
+
if (buffer)
|
|
260
|
+
out.push(buffer);
|
|
261
|
+
buffer = '';
|
|
262
|
+
if (keep.includes(matched))
|
|
263
|
+
out.push(matched);
|
|
264
|
+
i += matched.length;
|
|
265
|
+
}
|
|
266
|
+
else {
|
|
267
|
+
buffer += src[i];
|
|
268
|
+
i++;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
if (buffer)
|
|
272
|
+
out.push(buffer);
|
|
273
|
+
return out;
|
|
274
|
+
};
|
|
275
|
+
//# sourceMappingURL=lists.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lists.js","sourceRoot":"","sources":["../../src/builtins/lists.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { BuiltinImpl } from '../runtime.js';
|
|
2
|
+
/** llAbs(integer val) — absolute value (integer). */
|
|
3
|
+
export declare const llAbs: BuiltinImpl;
|
|
4
|
+
/** llFabs(float val) — absolute value (float). */
|
|
5
|
+
export declare const llFabs: BuiltinImpl;
|
|
6
|
+
/** llRound(float val) — banker's rounding per LSL (round-half-to-even). */
|
|
7
|
+
export declare const llRound: BuiltinImpl;
|
|
8
|
+
export declare const llCeil: BuiltinImpl;
|
|
9
|
+
export declare const llFloor: BuiltinImpl;
|
|
10
|
+
export declare const llPow: BuiltinImpl;
|
|
11
|
+
export declare const llSqrt: BuiltinImpl;
|
|
12
|
+
export declare const llSin: BuiltinImpl;
|
|
13
|
+
export declare const llCos: BuiltinImpl;
|
|
14
|
+
export declare const llTan: BuiltinImpl;
|
|
15
|
+
export declare const llAsin: BuiltinImpl;
|
|
16
|
+
export declare const llAcos: BuiltinImpl;
|
|
17
|
+
export declare const llAtan2: BuiltinImpl;
|
|
18
|
+
export declare const llLog: BuiltinImpl;
|
|
19
|
+
export declare const llLog10: BuiltinImpl;
|
|
20
|
+
/** llFrand(float mag) — seeded uniform [0, mag). Negative mag → [mag, 0). */
|
|
21
|
+
export declare const llFrand: BuiltinImpl;
|
|
22
|
+
export declare const llVecMag: BuiltinImpl;
|
|
23
|
+
export declare const llVecNorm: BuiltinImpl;
|
|
24
|
+
export declare const llVecDist: BuiltinImpl;
|
|
25
|
+
/**
|
|
26
|
+
* llRot2Euler(rotation r) → vector (x, y, z) Euler angles in radians.
|
|
27
|
+
* Uses the LSL convention (extrinsic XYZ, ZYX intrinsic equivalent).
|
|
28
|
+
*/
|
|
29
|
+
export declare const llRot2Euler: BuiltinImpl;
|
|
30
|
+
/** llEuler2Rot(vector v) → rotation. Inverse of llRot2Euler. */
|
|
31
|
+
export declare const llEuler2Rot: BuiltinImpl;
|
|
32
|
+
//# sourceMappingURL=math.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"math.d.ts","sourceRoot":"","sources":["../../src/builtins/math.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAIhD,qDAAqD;AACrD,eAAO,MAAM,KAAK,EAAE,WAEnB,CAAA;AAED,kDAAkD;AAClD,eAAO,MAAM,MAAM,EAAE,WAEpB,CAAA;AAED,2EAA2E;AAC3E,eAAO,MAAM,OAAO,EAAE,WAQrB,CAAA;AAED,eAAO,MAAM,MAAM,EAAE,WACgC,CAAA;AACrD,eAAO,MAAM,OAAO,EAAE,WACgC,CAAA;AAEtD,eAAO,MAAM,KAAK,EAAE,WAC0C,CAAA;AAC9D,eAAO,MAAM,MAAM,EAAE,WAAiE,CAAA;AACtF,eAAO,MAAM,KAAK,EAAE,WAAgE,CAAA;AACpF,eAAO,MAAM,KAAK,EAAE,WAAgE,CAAA;AACpF,eAAO,MAAM,KAAK,EAAE,WAAgE,CAAA;AACpF,eAAO,MAAM,MAAM,EAAE,WAAiE,CAAA;AACtF,eAAO,MAAM,MAAM,EAAE,WAAiE,CAAA;AACtF,eAAO,MAAM,OAAO,EAAE,WAC0C,CAAA;AAChE,eAAO,MAAM,KAAK,EAAE,WAAgE,CAAA;AACpF,eAAO,MAAM,OAAO,EAAE,WAAkE,CAAA;AAExF,6EAA6E;AAC7E,eAAO,MAAM,OAAO,EAAE,WAGrB,CAAA;AAID,eAAO,MAAM,QAAQ,EAAE,WAKtB,CAAA;AAED,eAAO,MAAM,SAAS,EAAE,WAOvB,CAAA;AAED,eAAO,MAAM,SAAS,EAAE,WAQvB,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,EAAE,WAazB,CAAA;AAED,gEAAgE;AAChE,eAAO,MAAM,WAAW,EAAE,WAezB,CAAA"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { isVector } from '../values/types.js';
|
|
2
|
+
/** llAbs(integer val) — absolute value (integer). */
|
|
3
|
+
export const llAbs = (_ctx, args) => {
|
|
4
|
+
return Math.abs(args[0] ?? 0) | 0;
|
|
5
|
+
};
|
|
6
|
+
/** llFabs(float val) — absolute value (float). */
|
|
7
|
+
export const llFabs = (_ctx, args) => {
|
|
8
|
+
return Math.abs(args[0] ?? 0);
|
|
9
|
+
};
|
|
10
|
+
/** llRound(float val) — banker's rounding per LSL (round-half-to-even). */
|
|
11
|
+
export const llRound = (_ctx, args) => {
|
|
12
|
+
const x = args[0] ?? 0;
|
|
13
|
+
const floor = Math.floor(x);
|
|
14
|
+
const diff = x - floor;
|
|
15
|
+
if (diff < 0.5)
|
|
16
|
+
return floor | 0;
|
|
17
|
+
if (diff > 0.5)
|
|
18
|
+
return (floor + 1) | 0;
|
|
19
|
+
// exact half — round to even
|
|
20
|
+
return ((floor % 2 === 0 ? floor : floor + 1) | 0);
|
|
21
|
+
};
|
|
22
|
+
export const llCeil = (_ctx, args) => Math.ceil(args[0] ?? 0) | 0;
|
|
23
|
+
export const llFloor = (_ctx, args) => Math.floor(args[0] ?? 0) | 0;
|
|
24
|
+
export const llPow = (_ctx, args) => Math.pow(args[0] ?? 0, args[1] ?? 0);
|
|
25
|
+
export const llSqrt = (_ctx, args) => Math.sqrt(args[0] ?? 0);
|
|
26
|
+
export const llSin = (_ctx, args) => Math.sin(args[0] ?? 0);
|
|
27
|
+
export const llCos = (_ctx, args) => Math.cos(args[0] ?? 0);
|
|
28
|
+
export const llTan = (_ctx, args) => Math.tan(args[0] ?? 0);
|
|
29
|
+
export const llAsin = (_ctx, args) => Math.asin(args[0] ?? 0);
|
|
30
|
+
export const llAcos = (_ctx, args) => Math.acos(args[0] ?? 0);
|
|
31
|
+
export const llAtan2 = (_ctx, args) => Math.atan2(args[0] ?? 0, args[1] ?? 0);
|
|
32
|
+
export const llLog = (_ctx, args) => Math.log(args[0] ?? 0);
|
|
33
|
+
export const llLog10 = (_ctx, args) => Math.log10(args[0] ?? 0);
|
|
34
|
+
/** llFrand(float mag) — seeded uniform [0, mag). Negative mag → [mag, 0). */
|
|
35
|
+
export const llFrand = (ctx, args) => {
|
|
36
|
+
const mag = args[0] ?? 0;
|
|
37
|
+
return ctx.state.random.next() * mag;
|
|
38
|
+
};
|
|
39
|
+
// ---- Vector / rotation math ----
|
|
40
|
+
export const llVecMag = (_ctx, args) => {
|
|
41
|
+
const v = args[0];
|
|
42
|
+
if (!v || typeof v !== 'object' || !isVector(v))
|
|
43
|
+
return 0;
|
|
44
|
+
const u = v;
|
|
45
|
+
return Math.sqrt(u.x * u.x + u.y * u.y + u.z * u.z);
|
|
46
|
+
};
|
|
47
|
+
export const llVecNorm = (_ctx, args) => {
|
|
48
|
+
const v = args[0];
|
|
49
|
+
if (!v || typeof v !== 'object' || !isVector(v))
|
|
50
|
+
return { x: 0, y: 0, z: 0 };
|
|
51
|
+
const u = v;
|
|
52
|
+
const m = Math.sqrt(u.x * u.x + u.y * u.y + u.z * u.z);
|
|
53
|
+
if (m === 0)
|
|
54
|
+
return { x: 0, y: 0, z: 0 };
|
|
55
|
+
return { x: u.x / m, y: u.y / m, z: u.z / m };
|
|
56
|
+
};
|
|
57
|
+
export const llVecDist = (_ctx, args) => {
|
|
58
|
+
const a = args[0];
|
|
59
|
+
const b = args[1];
|
|
60
|
+
if (!a || !b)
|
|
61
|
+
return 0;
|
|
62
|
+
const dx = a.x - b.x;
|
|
63
|
+
const dy = a.y - b.y;
|
|
64
|
+
const dz = a.z - b.z;
|
|
65
|
+
return Math.sqrt(dx * dx + dy * dy + dz * dz);
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* llRot2Euler(rotation r) → vector (x, y, z) Euler angles in radians.
|
|
69
|
+
* Uses the LSL convention (extrinsic XYZ, ZYX intrinsic equivalent).
|
|
70
|
+
*/
|
|
71
|
+
export const llRot2Euler = (_ctx, args) => {
|
|
72
|
+
const q = args[0];
|
|
73
|
+
if (!q)
|
|
74
|
+
return { x: 0, y: 0, z: 0 };
|
|
75
|
+
// Standard quaternion → Euler (ZYX) conversion.
|
|
76
|
+
const sinr_cosp = 2 * (q.s * q.x + q.y * q.z);
|
|
77
|
+
const cosr_cosp = 1 - 2 * (q.x * q.x + q.y * q.y);
|
|
78
|
+
const x = Math.atan2(sinr_cosp, cosr_cosp);
|
|
79
|
+
const sinp = 2 * (q.s * q.y - q.z * q.x);
|
|
80
|
+
const y = Math.abs(sinp) >= 1 ? Math.sign(sinp) * (Math.PI / 2) : Math.asin(sinp);
|
|
81
|
+
const siny_cosp = 2 * (q.s * q.z + q.x * q.y);
|
|
82
|
+
const cosy_cosp = 1 - 2 * (q.y * q.y + q.z * q.z);
|
|
83
|
+
const z = Math.atan2(siny_cosp, cosy_cosp);
|
|
84
|
+
return { x, y, z };
|
|
85
|
+
};
|
|
86
|
+
/** llEuler2Rot(vector v) → rotation. Inverse of llRot2Euler. */
|
|
87
|
+
export const llEuler2Rot = (_ctx, args) => {
|
|
88
|
+
const v = args[0];
|
|
89
|
+
if (!v)
|
|
90
|
+
return { x: 0, y: 0, z: 0, s: 1 };
|
|
91
|
+
const cy = Math.cos(v.z * 0.5);
|
|
92
|
+
const sy = Math.sin(v.z * 0.5);
|
|
93
|
+
const cp = Math.cos(v.y * 0.5);
|
|
94
|
+
const sp = Math.sin(v.y * 0.5);
|
|
95
|
+
const cr = Math.cos(v.x * 0.5);
|
|
96
|
+
const sr = Math.sin(v.x * 0.5);
|
|
97
|
+
return {
|
|
98
|
+
x: sr * cp * cy - cr * sp * sy,
|
|
99
|
+
y: cr * sp * cy + sr * cp * sy,
|
|
100
|
+
z: cr * cp * sy - sr * sp * cy,
|
|
101
|
+
s: cr * cp * cy + sr * sp * sy,
|
|
102
|
+
};
|
|
103
|
+
};
|
|
104
|
+
//# sourceMappingURL=math.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"math.js","sourceRoot":"","sources":["../../src/builtins/math.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAE7C,qDAAqD;AACrD,MAAM,CAAC,MAAM,KAAK,GAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;IAC/C,OAAO,IAAI,CAAC,GAAG,CAAE,IAAI,CAAC,CAAC,CAAwB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;AAC3D,CAAC,CAAA;AAED,kDAAkD;AAClD,MAAM,CAAC,MAAM,MAAM,GAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;IAChD,OAAO,IAAI,CAAC,GAAG,CAAE,IAAI,CAAC,CAAC,CAAwB,IAAI,CAAC,CAAC,CAAA;AACvD,CAAC,CAAA;AAED,2EAA2E;AAC3E,MAAM,CAAC,MAAM,OAAO,GAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;IACjD,MAAM,CAAC,GAAI,IAAI,CAAC,CAAC,CAAwB,IAAI,CAAC,CAAA;IAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IAC3B,MAAM,IAAI,GAAG,CAAC,GAAG,KAAK,CAAA;IACtB,IAAI,IAAI,GAAG,GAAG;QAAE,OAAO,KAAK,GAAG,CAAC,CAAA;IAChC,IAAI,IAAI,GAAG,GAAG;QAAE,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAA;IACtC,6BAA6B;IAC7B,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;AACpD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,MAAM,GAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAChD,IAAI,CAAC,IAAI,CAAE,IAAI,CAAC,CAAC,CAAwB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;AACrD,MAAM,CAAC,MAAM,OAAO,GAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CACjD,IAAI,CAAC,KAAK,CAAE,IAAI,CAAC,CAAC,CAAwB,IAAI,CAAC,CAAC,GAAG,CAAC,CAAA;AAEtD,MAAM,CAAC,MAAM,KAAK,GAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAC/C,IAAI,CAAC,GAAG,CAAE,IAAI,CAAC,CAAC,CAAY,IAAI,CAAC,EAAG,IAAI,CAAC,CAAC,CAAY,IAAI,CAAC,CAAC,CAAA;AAC9D,MAAM,CAAC,MAAM,MAAM,GAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAE,IAAI,CAAC,CAAC,CAAY,IAAI,CAAC,CAAC,CAAA;AACtF,MAAM,CAAC,MAAM,KAAK,GAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAE,IAAI,CAAC,CAAC,CAAY,IAAI,CAAC,CAAC,CAAA;AACpF,MAAM,CAAC,MAAM,KAAK,GAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAE,IAAI,CAAC,CAAC,CAAY,IAAI,CAAC,CAAC,CAAA;AACpF,MAAM,CAAC,MAAM,KAAK,GAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAE,IAAI,CAAC,CAAC,CAAY,IAAI,CAAC,CAAC,CAAA;AACpF,MAAM,CAAC,MAAM,MAAM,GAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAE,IAAI,CAAC,CAAC,CAAY,IAAI,CAAC,CAAC,CAAA;AACtF,MAAM,CAAC,MAAM,MAAM,GAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAE,IAAI,CAAC,CAAC,CAAY,IAAI,CAAC,CAAC,CAAA;AACtF,MAAM,CAAC,MAAM,OAAO,GAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CACjD,IAAI,CAAC,KAAK,CAAE,IAAI,CAAC,CAAC,CAAY,IAAI,CAAC,EAAG,IAAI,CAAC,CAAC,CAAY,IAAI,CAAC,CAAC,CAAA;AAChE,MAAM,CAAC,MAAM,KAAK,GAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAE,IAAI,CAAC,CAAC,CAAY,IAAI,CAAC,CAAC,CAAA;AACpF,MAAM,CAAC,MAAM,OAAO,GAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAE,IAAI,CAAC,CAAC,CAAY,IAAI,CAAC,CAAC,CAAA;AAExF,6EAA6E;AAC7E,MAAM,CAAC,MAAM,OAAO,GAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;IAChD,MAAM,GAAG,GAAI,IAAI,CAAC,CAAC,CAAwB,IAAI,CAAC,CAAA;IAChD,OAAO,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,GAAG,CAAA;AACtC,CAAC,CAAA;AAED,mCAAmC;AAEnC,MAAM,CAAC,MAAM,QAAQ,GAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;IAClD,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,CAAW,CAAC;QAAE,OAAO,CAAC,CAAA;IACnE,MAAM,CAAC,GAAG,CAAW,CAAA;IACrB,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;AACrD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,SAAS,GAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;IACnD,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,CAAW,CAAC;QAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IACtF,MAAM,CAAC,GAAG,CAAW,CAAA;IACrB,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IACtD,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IACxC,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAA;AAC/C,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,SAAS,GAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;IACnD,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAuB,CAAA;IACvC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAuB,CAAA;IACvC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC;QAAE,OAAO,CAAC,CAAA;IACtB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IACpB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IACpB,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IACpB,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAA;AAC/C,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,WAAW,GAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;IACrD,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAyB,CAAA;IACzC,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IACnC,gDAAgD;IAChD,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAC7C,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IACjD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;IAC1C,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IACxC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACjF,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAC7C,MAAM,SAAS,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IACjD,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;IAC1C,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;AACpB,CAAC,CAAA;AAED,gEAAgE;AAChE,MAAM,CAAC,MAAM,WAAW,GAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;IACrD,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAuB,CAAA;IACvC,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IACzC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAA;IAC9B,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAA;IAC9B,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAA;IAC9B,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAA;IAC9B,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAA;IAC9B,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAA;IAC9B,OAAO;QACL,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;QAC9B,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;QAC9B,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;QAC9B,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;KAC/B,CAAA;AACH,CAAC,CAAA"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { BuiltinImpl } from '../runtime.js';
|
|
2
|
+
/**
|
|
3
|
+
* Builtins that read or mutate the prim's appearance / lifecycle. We
|
|
4
|
+
* model them with structured state on the Script — `s.text` exposes
|
|
5
|
+
* floating text; `s.dead` indicates the script called llDie.
|
|
6
|
+
*/
|
|
7
|
+
/** llSetText(string text, vector color, float alpha) — floating prim text. */
|
|
8
|
+
export declare const llSetText: BuiltinImpl;
|
|
9
|
+
/** llSetObjectDesc(string desc) — sets the prim's description field. */
|
|
10
|
+
export declare const llSetObjectDesc: BuiltinImpl;
|
|
11
|
+
/** llGetObjectDesc() */
|
|
12
|
+
export declare const llGetObjectDesc: BuiltinImpl;
|
|
13
|
+
/**
|
|
14
|
+
* llDie() — deletes the entire linked object. In real LSL this kills
|
|
15
|
+
* every prim and every script in the linkset, not just the calling one.
|
|
16
|
+
* We mark every script in the linkset as dead and cancel their timers;
|
|
17
|
+
* subsequent events on any of them are dropped silently. (Real LSL takes
|
|
18
|
+
* a frame to actually delete, but for tests we mark immediately.)
|
|
19
|
+
*/
|
|
20
|
+
export declare const llDie: BuiltinImpl;
|
|
21
|
+
/**
|
|
22
|
+
* llResetScript() — reset globals to their initial values, return to the
|
|
23
|
+
* `default` state, and run state_entry. Implemented by the Script handle:
|
|
24
|
+
* the builtin throws a sentinel that runHandler / drainQueue catch.
|
|
25
|
+
*/
|
|
26
|
+
export declare class ResetScriptSignal {
|
|
27
|
+
}
|
|
28
|
+
export declare const llResetScript: BuiltinImpl;
|
|
29
|
+
//# sourceMappingURL=object.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../src/builtins/object.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAIhD;;;;GAIG;AAEH,8EAA8E;AAC9E,eAAO,MAAM,SAAS,EAAE,WAQvB,CAAA;AAED,wEAAwE;AACxE,eAAO,MAAM,eAAe,EAAE,WAM7B,CAAA;AAED,wBAAwB;AACxB,eAAO,MAAM,eAAe,EAAE,WAA2C,CAAA;AAEzE;;;;;;GAMG;AACH,eAAO,MAAM,KAAK,EAAE,WAKnB,CAAA;AAED;;;;GAIG;AACH,qBAAa,iBAAiB;CAAG;AACjC,eAAO,MAAM,aAAa,EAAE,WAE3B,CAAA"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { PRIM_DESC, PRIM_TEXT } from '../generated/constants.js';
|
|
2
|
+
/**
|
|
3
|
+
* Builtins that read or mutate the prim's appearance / lifecycle. We
|
|
4
|
+
* model them with structured state on the Script — `s.text` exposes
|
|
5
|
+
* floating text; `s.dead` indicates the script called llDie.
|
|
6
|
+
*/
|
|
7
|
+
/** llSetText(string text, vector color, float alpha) — floating prim text. */
|
|
8
|
+
export const llSetText = (ctx, args) => {
|
|
9
|
+
const text = args[0] ?? '';
|
|
10
|
+
const color = args[1] ?? { x: 1, y: 1, z: 1 };
|
|
11
|
+
const alpha = args[2] ?? 1;
|
|
12
|
+
// Route through the PRIM_TEXT seam — `ctx.state.appearance` is aliased
|
|
13
|
+
// to `prim.appearance`, so legacy `s.text` reads see this write too.
|
|
14
|
+
ctx.prim.setPrimParam(PRIM_TEXT, [text, color, alpha], 0);
|
|
15
|
+
return undefined;
|
|
16
|
+
};
|
|
17
|
+
/** llSetObjectDesc(string desc) — sets the prim's description field. */
|
|
18
|
+
export const llSetObjectDesc = (ctx, args) => {
|
|
19
|
+
const desc = args[0] ?? '';
|
|
20
|
+
// Route through the PRIM_DESC seam so llGetPrimitiveParams sees the same
|
|
21
|
+
// value. The seam mirrors to ScriptState.appearance via prim.appearance.
|
|
22
|
+
ctx.prim.setPrimParam(PRIM_DESC, [desc], 0);
|
|
23
|
+
return undefined;
|
|
24
|
+
};
|
|
25
|
+
/** llGetObjectDesc() */
|
|
26
|
+
export const llGetObjectDesc = (ctx) => ctx.prim.description;
|
|
27
|
+
/**
|
|
28
|
+
* llDie() — deletes the entire linked object. In real LSL this kills
|
|
29
|
+
* every prim and every script in the linkset, not just the calling one.
|
|
30
|
+
* We mark every script in the linkset as dead and cancel their timers;
|
|
31
|
+
* subsequent events on any of them are dropped silently. (Real LSL takes
|
|
32
|
+
* a frame to actually delete, but for tests we mark immediately.)
|
|
33
|
+
*/
|
|
34
|
+
export const llDie = (ctx) => {
|
|
35
|
+
for (const s of ctx.linkset.allScripts()) {
|
|
36
|
+
s.markDead();
|
|
37
|
+
}
|
|
38
|
+
return undefined;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* llResetScript() — reset globals to their initial values, return to the
|
|
42
|
+
* `default` state, and run state_entry. Implemented by the Script handle:
|
|
43
|
+
* the builtin throws a sentinel that runHandler / drainQueue catch.
|
|
44
|
+
*/
|
|
45
|
+
export class ResetScriptSignal {
|
|
46
|
+
}
|
|
47
|
+
export const llResetScript = () => {
|
|
48
|
+
throw new ResetScriptSignal();
|
|
49
|
+
};
|
|
50
|
+
//# sourceMappingURL=object.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object.js","sourceRoot":"","sources":["../../src/builtins/object.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAEhE;;;;GAIG;AAEH,8EAA8E;AAC9E,MAAM,CAAC,MAAM,SAAS,GAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;IAClD,MAAM,IAAI,GAAI,IAAI,CAAC,CAAC,CAAwB,IAAI,EAAE,CAAA;IAClD,MAAM,KAAK,GAAI,IAAI,CAAC,CAAC,CAAwB,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IACrE,MAAM,KAAK,GAAI,IAAI,CAAC,CAAC,CAAwB,IAAI,CAAC,CAAA;IAClD,uEAAuE;IACvE,qEAAqE;IACrE,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA;IACzD,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAED,wEAAwE;AACxE,MAAM,CAAC,MAAM,eAAe,GAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;IACxD,MAAM,IAAI,GAAI,IAAI,CAAC,CAAC,CAAwB,IAAI,EAAE,CAAA;IAClD,yEAAyE;IACzE,yEAAyE;IACzE,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAA;IAC3C,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAED,wBAAwB;AACxB,MAAM,CAAC,MAAM,eAAe,GAAgB,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAA;AAEzE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,KAAK,GAAgB,CAAC,GAAG,EAAE,EAAE;IACxC,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;QACzC,CAAC,CAAC,QAAQ,EAAE,CAAA;IACd,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAED;;;;GAIG;AACH,MAAM,OAAO,iBAAiB;CAAG;AACjC,MAAM,CAAC,MAAM,aAAa,GAAgB,GAAG,EAAE;IAC7C,MAAM,IAAI,iBAAiB,EAAE,CAAA;AAC/B,CAAC,CAAA"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import type { BuiltinImpl } from '../runtime.js';
|
|
2
|
+
export declare const llSetPos: BuiltinImpl;
|
|
3
|
+
export declare const llGetPos: BuiltinImpl;
|
|
4
|
+
export declare const llGetLocalPos: BuiltinImpl;
|
|
5
|
+
export declare const llGetRootPosition: BuiltinImpl;
|
|
6
|
+
export declare const llSetRot: BuiltinImpl;
|
|
7
|
+
export declare const llSetLocalRot: BuiltinImpl;
|
|
8
|
+
export declare const llGetRot: BuiltinImpl;
|
|
9
|
+
export declare const llGetLocalRot: BuiltinImpl;
|
|
10
|
+
export declare const llGetRootRotation: BuiltinImpl;
|
|
11
|
+
export declare const llSetScale: BuiltinImpl;
|
|
12
|
+
export declare const llGetScale: BuiltinImpl;
|
|
13
|
+
export declare const llScaleByFactor: BuiltinImpl;
|
|
14
|
+
export declare const llGetMaxScaleFactor: BuiltinImpl;
|
|
15
|
+
export declare const llGetMinScaleFactor: BuiltinImpl;
|
|
16
|
+
export declare const llSetColor: BuiltinImpl;
|
|
17
|
+
export declare const llGetColor: BuiltinImpl;
|
|
18
|
+
export declare const llSetAlpha: BuiltinImpl;
|
|
19
|
+
export declare const llGetAlpha: BuiltinImpl;
|
|
20
|
+
export declare const llSetTexture: BuiltinImpl;
|
|
21
|
+
export declare const llGetTexture: BuiltinImpl;
|
|
22
|
+
export declare const llGetTextureOffset: BuiltinImpl;
|
|
23
|
+
export declare const llGetTextureScale: BuiltinImpl;
|
|
24
|
+
export declare const llGetTextureRot: BuiltinImpl;
|
|
25
|
+
export declare const llScaleTexture: BuiltinImpl;
|
|
26
|
+
export declare const llOffsetTexture: BuiltinImpl;
|
|
27
|
+
export declare const llRotateTexture: BuiltinImpl;
|
|
28
|
+
export declare const llSetLinkColor: BuiltinImpl;
|
|
29
|
+
export declare const llSetLinkAlpha: BuiltinImpl;
|
|
30
|
+
export declare const llSetLinkTexture: BuiltinImpl;
|
|
31
|
+
export declare const llSetTextureAnim: BuiltinImpl;
|
|
32
|
+
export declare const llSetLinkTextureAnim: BuiltinImpl;
|
|
33
|
+
/**
|
|
34
|
+
* Same effect as llSetLinkTextureAnim per the wiki. Kept as a distinct
|
|
35
|
+
* function (not an alias) so call-log telemetry / mocks can key on
|
|
36
|
+
* function identity.
|
|
37
|
+
*/
|
|
38
|
+
export declare const llSetLinkTextureAnimOverrideMe: BuiltinImpl;
|
|
39
|
+
export declare const llSetRenderMaterial: BuiltinImpl;
|
|
40
|
+
export declare const llGetRenderMaterial: BuiltinImpl;
|
|
41
|
+
export declare const llSetStatus: BuiltinImpl;
|
|
42
|
+
export declare const llGetStatus: BuiltinImpl;
|
|
43
|
+
export declare const llSetLinkStatus: BuiltinImpl;
|
|
44
|
+
export declare const llSetClickAction: BuiltinImpl;
|
|
45
|
+
export declare const llTargetOmega: BuiltinImpl;
|
|
46
|
+
export declare const llSetPhysicsMaterial: BuiltinImpl;
|
|
47
|
+
export declare const llGetPhysicsMaterial: BuiltinImpl;
|
|
48
|
+
export declare const llPassCollisions: BuiltinImpl;
|
|
49
|
+
export declare const llPassTouches: BuiltinImpl;
|
|
50
|
+
export declare const llSitTarget: BuiltinImpl;
|
|
51
|
+
export declare const llLinkSitTarget: BuiltinImpl;
|
|
52
|
+
export declare const llAvatarOnSitTarget: BuiltinImpl;
|
|
53
|
+
export declare const llAvatarOnLinkSitTarget: BuiltinImpl;
|
|
54
|
+
export declare const llSetLinkSitFlags: BuiltinImpl;
|
|
55
|
+
export declare const llGetLinkSitFlags: BuiltinImpl;
|
|
56
|
+
//# sourceMappingURL=prim-accessors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prim-accessors.d.ts","sourceRoot":"","sources":["../../src/builtins/prim-accessors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AA2ChD,eAAO,MAAM,QAAQ,EAAE,WAGtB,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,WAA+C,CAAA;AACtE,eAAO,MAAM,aAAa,EAAE,WAA+C,CAAA;AAC3E,eAAO,MAAM,iBAAiB,EAAE,WAG/B,CAAA;AAED,eAAO,MAAM,QAAQ,EAAE,WAGtB,CAAA;AACD,eAAO,MAAM,aAAa,EAAE,WAG3B,CAAA;AACD,eAAO,MAAM,QAAQ,EAAE,WAA+C,CAAA;AACtE,eAAO,MAAM,aAAa,EAAE,WAA+C,CAAA;AAC3E,eAAO,MAAM,iBAAiB,EAAE,WAG/B,CAAA;AAED,eAAO,MAAM,UAAU,EAAE,WAGxB,CAAA;AACD,eAAO,MAAM,UAAU,EAAE,WAA2C,CAAA;AAEpE,eAAO,MAAM,eAAe,EAAE,WAQ7B,CAAA;AACD,eAAO,MAAM,mBAAmB,EAAE,WAAsB,CAAA;AACxD,eAAO,MAAM,mBAAmB,EAAE,WAAwB,CAAA;AAM1D,eAAO,MAAM,UAAU,EAAE,WAYxB,CAAA;AACD,eAAO,MAAM,UAAU,EAAE,WAaxB,CAAA;AAED,eAAO,MAAM,UAAU,EAAE,WASxB,CAAA;AACD,eAAO,MAAM,UAAU,EAAE,WASxB,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,WAM1B,CAAA;AACD,eAAO,MAAM,YAAY,EAAE,WAI1B,CAAA;AACD,eAAO,MAAM,kBAAkB,EAAE,WAIhC,CAAA;AACD,eAAO,MAAM,iBAAiB,EAAE,WAI/B,CAAA;AACD,eAAO,MAAM,eAAe,EAAE,WAI7B,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,WAO5B,CAAA;AACD,eAAO,MAAM,eAAe,EAAE,WAO7B,CAAA;AACD,eAAO,MAAM,eAAe,EAAE,WAM7B,CAAA;AAMD,eAAO,MAAM,cAAc,EAAE,WAU5B,CAAA;AACD,eAAO,MAAM,cAAc,EAAE,WAS5B,CAAA;AACD,eAAO,MAAM,gBAAgB,EAAE,WAS9B,CAAA;AAED,eAAO,MAAM,gBAAgB,EAAE,WAW9B,CAAA;AACD,eAAO,MAAM,oBAAoB,EAAE,WAelC,CAAA;AACD;;;;GAIG;AACH,eAAO,MAAM,8BAA8B,EAAE,WACZ,CAAA;AAEjC,eAAO,MAAM,mBAAmB,EAAE,WAKjC,CAAA;AACD,eAAO,MAAM,mBAAmB,EAAE,WAIjC,CAAA;AAMD,eAAO,MAAM,WAAW,EAAE,WAKzB,CAAA;AACD,eAAO,MAAM,WAAW,EAAE,WAGzB,CAAA;AACD,eAAO,MAAM,eAAe,EAAE,WAM7B,CAAA;AAED,eAAO,MAAM,gBAAgB,EAAE,WAG9B,CAAA;AAED,eAAO,MAAM,aAAa,EAAE,WAG3B,CAAA;AAED,eAAO,MAAM,oBAAoB,EAAE,WAYlC,CAAA;AACD,eAAO,MAAM,oBAAoB,EAAE,WAGlC,CAAA;AAED,eAAO,MAAM,gBAAgB,EAAE,WAG9B,CAAA;AACD,eAAO,MAAM,aAAa,EAAE,WAG3B,CAAA;AAMD,eAAO,MAAM,WAAW,EAAE,WAOzB,CAAA;AACD,eAAO,MAAM,eAAe,EAAE,WAS7B,CAAA;AACD,eAAO,MAAM,mBAAmB,EAAE,WAA4B,CAAA;AAC9D,eAAO,MAAM,uBAAuB,EAAE,WAA4B,CAAA;AAElE,eAAO,MAAM,iBAAiB,EAAE,WAO/B,CAAA;AACD,eAAO,MAAM,iBAAiB,EAAE,WAI/B,CAAA"}
|