@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,353 @@
|
|
|
1
|
+
import { NULL_KEY, ZERO_VECTOR, ZERO_ROTATION } from '../values/types.js';
|
|
2
|
+
import { ALL_SIDES, DENSITY, FRICTION, GRAVITY_MULTIPLIER, PRIM_CLICK_ACTION, PRIM_OMEGA, PRIM_POSITION, PRIM_RENDER_MATERIAL, PRIM_ROTATION, PRIM_ROT_LOCAL, PRIM_SIT_FLAGS, PRIM_SIT_TARGET, PRIM_SIZE, RESTITUTION, } from '../generated/constants.js';
|
|
3
|
+
/* ------------------------------------------------------------------ */
|
|
4
|
+
/* helpers */
|
|
5
|
+
/* ------------------------------------------------------------------ */
|
|
6
|
+
const num = (v, d = 0) => (typeof v === 'number' ? v : d);
|
|
7
|
+
const str = (v, d = '') => (typeof v === 'string' ? v : d);
|
|
8
|
+
const vecOf = (v) => v && typeof v === 'object' && !Array.isArray(v) && 'x' in v && 'y' in v && 'z' in v && !('s' in v)
|
|
9
|
+
? v
|
|
10
|
+
: ZERO_VECTOR;
|
|
11
|
+
const rotOf = (v) => v && typeof v === 'object' && !Array.isArray(v) && 's' in v ? v : ZERO_ROTATION;
|
|
12
|
+
function targets(linkset, sender, link) {
|
|
13
|
+
return linkset.resolveTargets(sender, link);
|
|
14
|
+
}
|
|
15
|
+
/* ------------------------------------------------------------------ */
|
|
16
|
+
/* Position / rotation / scale */
|
|
17
|
+
/* ------------------------------------------------------------------ */
|
|
18
|
+
export const llSetPos = (ctx, args) => {
|
|
19
|
+
ctx.prim.setPrimParam(PRIM_POSITION, [vecOf(args[0])], 0);
|
|
20
|
+
return undefined;
|
|
21
|
+
};
|
|
22
|
+
export const llGetPos = (ctx) => ctx.prim.params.position;
|
|
23
|
+
export const llGetLocalPos = (ctx) => ctx.prim.params.position;
|
|
24
|
+
export const llGetRootPosition = (ctx) => {
|
|
25
|
+
const root = ctx.linkset.prims[0] ?? ctx.prim;
|
|
26
|
+
return root.params.position;
|
|
27
|
+
};
|
|
28
|
+
export const llSetRot = (ctx, args) => {
|
|
29
|
+
ctx.prim.setPrimParam(PRIM_ROTATION, [rotOf(args[0])], 0);
|
|
30
|
+
return undefined;
|
|
31
|
+
};
|
|
32
|
+
export const llSetLocalRot = (ctx, args) => {
|
|
33
|
+
ctx.prim.setPrimParam(PRIM_ROT_LOCAL, [rotOf(args[0])], 0);
|
|
34
|
+
return undefined;
|
|
35
|
+
};
|
|
36
|
+
export const llGetRot = (ctx) => ctx.prim.params.rotation;
|
|
37
|
+
export const llGetLocalRot = (ctx) => ctx.prim.params.rotation;
|
|
38
|
+
export const llGetRootRotation = (ctx) => {
|
|
39
|
+
const root = ctx.linkset.prims[0] ?? ctx.prim;
|
|
40
|
+
return root.params.rotation;
|
|
41
|
+
};
|
|
42
|
+
export const llSetScale = (ctx, args) => {
|
|
43
|
+
ctx.prim.setPrimParam(PRIM_SIZE, [vecOf(args[0])], 0);
|
|
44
|
+
return undefined;
|
|
45
|
+
};
|
|
46
|
+
export const llGetScale = (ctx) => ctx.prim.params.size;
|
|
47
|
+
export const llScaleByFactor = (ctx, args) => {
|
|
48
|
+
const factor = num(args[0], 1);
|
|
49
|
+
if (!Number.isFinite(factor) || factor <= 0)
|
|
50
|
+
return 0;
|
|
51
|
+
for (const p of ctx.linkset.prims) {
|
|
52
|
+
const s = p.params.size;
|
|
53
|
+
p.params.size = { x: s.x * factor, y: s.y * factor, z: s.z * factor };
|
|
54
|
+
}
|
|
55
|
+
return 1;
|
|
56
|
+
};
|
|
57
|
+
export const llGetMaxScaleFactor = () => 64;
|
|
58
|
+
export const llGetMinScaleFactor = () => 0.01;
|
|
59
|
+
/* ------------------------------------------------------------------ */
|
|
60
|
+
/* Color / alpha / texture */
|
|
61
|
+
/* ------------------------------------------------------------------ */
|
|
62
|
+
export const llSetColor = (ctx, args) => {
|
|
63
|
+
const color = vecOf(args[0]);
|
|
64
|
+
const face = num(args[1], ALL_SIDES) | 0;
|
|
65
|
+
// Preserve current alpha when only color is set. Clone per face so
|
|
66
|
+
// faces don't alias the same vector instance.
|
|
67
|
+
const clone = () => ({ x: color.x, y: color.y, z: color.z });
|
|
68
|
+
if (face === ALL_SIDES) {
|
|
69
|
+
for (let f = 0; f < 6; f++)
|
|
70
|
+
ctx.prim.params.faces[f].color = clone();
|
|
71
|
+
}
|
|
72
|
+
else if (face >= 0 && face <= 5) {
|
|
73
|
+
ctx.prim.params.faces[face].color = clone();
|
|
74
|
+
}
|
|
75
|
+
return undefined;
|
|
76
|
+
};
|
|
77
|
+
export const llGetColor = (ctx, args) => {
|
|
78
|
+
const face = num(args[0], 0) | 0;
|
|
79
|
+
if (face === ALL_SIDES) {
|
|
80
|
+
// Average the 6 face colors per LSL spec.
|
|
81
|
+
let x = 0, y = 0, z = 0;
|
|
82
|
+
for (let f = 0; f < 6; f++) {
|
|
83
|
+
const c = ctx.prim.params.faces[f].color;
|
|
84
|
+
x += c.x;
|
|
85
|
+
y += c.y;
|
|
86
|
+
z += c.z;
|
|
87
|
+
}
|
|
88
|
+
return { x: x / 6, y: y / 6, z: z / 6 };
|
|
89
|
+
}
|
|
90
|
+
if (face < 0 || face > 5)
|
|
91
|
+
return ZERO_VECTOR;
|
|
92
|
+
return ctx.prim.params.faces[face].color;
|
|
93
|
+
};
|
|
94
|
+
export const llSetAlpha = (ctx, args) => {
|
|
95
|
+
const alpha = num(args[0], 1);
|
|
96
|
+
const face = num(args[1], ALL_SIDES) | 0;
|
|
97
|
+
if (face === ALL_SIDES) {
|
|
98
|
+
for (let f = 0; f < 6; f++)
|
|
99
|
+
ctx.prim.params.faces[f].alpha = alpha;
|
|
100
|
+
}
|
|
101
|
+
else if (face >= 0 && face <= 5) {
|
|
102
|
+
ctx.prim.params.faces[face].alpha = alpha;
|
|
103
|
+
}
|
|
104
|
+
return undefined;
|
|
105
|
+
};
|
|
106
|
+
export const llGetAlpha = (ctx, args) => {
|
|
107
|
+
const face = num(args[0], 0) | 0;
|
|
108
|
+
if (face === ALL_SIDES) {
|
|
109
|
+
let a = 0;
|
|
110
|
+
for (let f = 0; f < 6; f++)
|
|
111
|
+
a += ctx.prim.params.faces[f].alpha;
|
|
112
|
+
return a / 6;
|
|
113
|
+
}
|
|
114
|
+
if (face < 0 || face > 5)
|
|
115
|
+
return 0;
|
|
116
|
+
return ctx.prim.params.faces[face].alpha;
|
|
117
|
+
};
|
|
118
|
+
export const llSetTexture = (ctx, args) => {
|
|
119
|
+
const tex = str(args[0]);
|
|
120
|
+
const face = num(args[1], ALL_SIDES) | 0;
|
|
121
|
+
const list = (face === ALL_SIDES ? [0, 1, 2, 3, 4, 5] : face >= 0 && face <= 5 ? [face] : []);
|
|
122
|
+
for (const f of list)
|
|
123
|
+
ctx.prim.params.faces[f].texture = tex;
|
|
124
|
+
return undefined;
|
|
125
|
+
};
|
|
126
|
+
export const llGetTexture = (ctx, args) => {
|
|
127
|
+
const face = num(args[0], 0) | 0;
|
|
128
|
+
if (face < 0 || face > 5)
|
|
129
|
+
return '';
|
|
130
|
+
return ctx.prim.params.faces[face].texture;
|
|
131
|
+
};
|
|
132
|
+
export const llGetTextureOffset = (ctx, args) => {
|
|
133
|
+
const face = num(args[0], 0) | 0;
|
|
134
|
+
if (face < 0 || face > 5)
|
|
135
|
+
return ZERO_VECTOR;
|
|
136
|
+
return ctx.prim.params.faces[face].textureOffsets;
|
|
137
|
+
};
|
|
138
|
+
export const llGetTextureScale = (ctx, args) => {
|
|
139
|
+
const face = num(args[0], 0) | 0;
|
|
140
|
+
if (face < 0 || face > 5)
|
|
141
|
+
return ZERO_VECTOR;
|
|
142
|
+
return ctx.prim.params.faces[face].textureRepeats;
|
|
143
|
+
};
|
|
144
|
+
export const llGetTextureRot = (ctx, args) => {
|
|
145
|
+
const face = num(args[0], 0) | 0;
|
|
146
|
+
if (face < 0 || face > 5)
|
|
147
|
+
return 0;
|
|
148
|
+
return ctx.prim.params.faces[face].textureRotation;
|
|
149
|
+
};
|
|
150
|
+
export const llScaleTexture = (ctx, args) => {
|
|
151
|
+
const u = num(args[0]);
|
|
152
|
+
const v = num(args[1]);
|
|
153
|
+
const face = num(args[2], ALL_SIDES) | 0;
|
|
154
|
+
const list = face === ALL_SIDES ? [0, 1, 2, 3, 4, 5] : face >= 0 && face <= 5 ? [face] : [];
|
|
155
|
+
for (const f of list)
|
|
156
|
+
ctx.prim.params.faces[f].textureRepeats = { x: u, y: v, z: 0 };
|
|
157
|
+
return undefined;
|
|
158
|
+
};
|
|
159
|
+
export const llOffsetTexture = (ctx, args) => {
|
|
160
|
+
const u = num(args[0]);
|
|
161
|
+
const v = num(args[1]);
|
|
162
|
+
const face = num(args[2], ALL_SIDES) | 0;
|
|
163
|
+
const list = face === ALL_SIDES ? [0, 1, 2, 3, 4, 5] : face >= 0 && face <= 5 ? [face] : [];
|
|
164
|
+
for (const f of list)
|
|
165
|
+
ctx.prim.params.faces[f].textureOffsets = { x: u, y: v, z: 0 };
|
|
166
|
+
return undefined;
|
|
167
|
+
};
|
|
168
|
+
export const llRotateTexture = (ctx, args) => {
|
|
169
|
+
const angle = num(args[0]);
|
|
170
|
+
const face = num(args[1], ALL_SIDES) | 0;
|
|
171
|
+
const list = face === ALL_SIDES ? [0, 1, 2, 3, 4, 5] : face >= 0 && face <= 5 ? [face] : [];
|
|
172
|
+
for (const f of list)
|
|
173
|
+
ctx.prim.params.faces[f].textureRotation = angle;
|
|
174
|
+
return undefined;
|
|
175
|
+
};
|
|
176
|
+
/* ------------------------------------------------------------------ */
|
|
177
|
+
/* Link variants */
|
|
178
|
+
/* ------------------------------------------------------------------ */
|
|
179
|
+
export const llSetLinkColor = (ctx, args) => {
|
|
180
|
+
const link = num(args[0]) | 0;
|
|
181
|
+
const color = vecOf(args[1]);
|
|
182
|
+
const face = num(args[2], ALL_SIDES) | 0;
|
|
183
|
+
// Wiki: only color is set; per-face alpha is preserved.
|
|
184
|
+
const list = face === ALL_SIDES ? [0, 1, 2, 3, 4, 5] : face >= 0 && face <= 5 ? [face] : [];
|
|
185
|
+
for (const p of targets(ctx.linkset, ctx.prim.linkNumber, link)) {
|
|
186
|
+
for (const f of list)
|
|
187
|
+
p.params.faces[f].color = { x: color.x, y: color.y, z: color.z };
|
|
188
|
+
}
|
|
189
|
+
return undefined;
|
|
190
|
+
};
|
|
191
|
+
export const llSetLinkAlpha = (ctx, args) => {
|
|
192
|
+
const link = num(args[0]) | 0;
|
|
193
|
+
const alpha = num(args[1], 1);
|
|
194
|
+
const face = num(args[2], ALL_SIDES) | 0;
|
|
195
|
+
const list = face === ALL_SIDES ? [0, 1, 2, 3, 4, 5] : face >= 0 && face <= 5 ? [face] : [];
|
|
196
|
+
for (const p of targets(ctx.linkset, ctx.prim.linkNumber, link)) {
|
|
197
|
+
for (const f of list)
|
|
198
|
+
p.params.faces[f].alpha = alpha;
|
|
199
|
+
}
|
|
200
|
+
return undefined;
|
|
201
|
+
};
|
|
202
|
+
export const llSetLinkTexture = (ctx, args) => {
|
|
203
|
+
const link = num(args[0]) | 0;
|
|
204
|
+
const tex = str(args[1]);
|
|
205
|
+
const face = num(args[2], ALL_SIDES) | 0;
|
|
206
|
+
const list = face === ALL_SIDES ? [0, 1, 2, 3, 4, 5] : face >= 0 && face <= 5 ? [face] : [];
|
|
207
|
+
for (const p of targets(ctx.linkset, ctx.prim.linkNumber, link)) {
|
|
208
|
+
for (const f of list)
|
|
209
|
+
p.params.faces[f].texture = tex;
|
|
210
|
+
}
|
|
211
|
+
return undefined;
|
|
212
|
+
};
|
|
213
|
+
export const llSetTextureAnim = (ctx, args) => {
|
|
214
|
+
ctx.prim.params.textureAnim = {
|
|
215
|
+
mode: num(args[0]) | 0,
|
|
216
|
+
face: num(args[1]) | 0,
|
|
217
|
+
sizex: num(args[2]) | 0,
|
|
218
|
+
sizey: num(args[3]) | 0,
|
|
219
|
+
start: num(args[4]),
|
|
220
|
+
length: num(args[5]),
|
|
221
|
+
rate: num(args[6]),
|
|
222
|
+
};
|
|
223
|
+
return undefined;
|
|
224
|
+
};
|
|
225
|
+
export const llSetLinkTextureAnim = (ctx, args) => {
|
|
226
|
+
const link = num(args[0]) | 0;
|
|
227
|
+
const anim = {
|
|
228
|
+
mode: num(args[1]) | 0,
|
|
229
|
+
face: num(args[2]) | 0,
|
|
230
|
+
sizex: num(args[3]) | 0,
|
|
231
|
+
sizey: num(args[4]) | 0,
|
|
232
|
+
start: num(args[5]),
|
|
233
|
+
length: num(args[6]),
|
|
234
|
+
rate: num(args[7]),
|
|
235
|
+
};
|
|
236
|
+
for (const p of targets(ctx.linkset, ctx.prim.linkNumber, link)) {
|
|
237
|
+
p.params.textureAnim = { ...anim };
|
|
238
|
+
}
|
|
239
|
+
return undefined;
|
|
240
|
+
};
|
|
241
|
+
/**
|
|
242
|
+
* Same effect as llSetLinkTextureAnim per the wiki. Kept as a distinct
|
|
243
|
+
* function (not an alias) so call-log telemetry / mocks can key on
|
|
244
|
+
* function identity.
|
|
245
|
+
*/
|
|
246
|
+
export const llSetLinkTextureAnimOverrideMe = (ctx, args) => llSetLinkTextureAnim(ctx, args);
|
|
247
|
+
export const llSetRenderMaterial = (ctx, args) => {
|
|
248
|
+
const material = str(args[0]);
|
|
249
|
+
const face = num(args[1], ALL_SIDES) | 0;
|
|
250
|
+
ctx.prim.setPrimParam(PRIM_RENDER_MATERIAL, [face, material], 0);
|
|
251
|
+
return undefined;
|
|
252
|
+
};
|
|
253
|
+
export const llGetRenderMaterial = (ctx, args) => {
|
|
254
|
+
const face = num(args[0], 0) | 0;
|
|
255
|
+
if (face < 0 || face > 5)
|
|
256
|
+
return '';
|
|
257
|
+
return ctx.prim.params.faces[face].renderMaterial;
|
|
258
|
+
};
|
|
259
|
+
/* ------------------------------------------------------------------ */
|
|
260
|
+
/* Status / click / omega / physics material / passes */
|
|
261
|
+
/* ------------------------------------------------------------------ */
|
|
262
|
+
export const llSetStatus = (ctx, args) => {
|
|
263
|
+
const flag = num(args[0]) | 0;
|
|
264
|
+
const value = num(args[1]) !== 0;
|
|
265
|
+
ctx.prim.setStatus(flag, value);
|
|
266
|
+
return undefined;
|
|
267
|
+
};
|
|
268
|
+
export const llGetStatus = (ctx, args) => {
|
|
269
|
+
const flag = num(args[0]) | 0;
|
|
270
|
+
return (ctx.prim.statusFlags & flag) !== 0 ? 1 : 0;
|
|
271
|
+
};
|
|
272
|
+
export const llSetLinkStatus = (ctx, args) => {
|
|
273
|
+
const link = num(args[0]) | 0;
|
|
274
|
+
const flag = num(args[1]) | 0;
|
|
275
|
+
const value = num(args[2]) !== 0;
|
|
276
|
+
for (const p of targets(ctx.linkset, ctx.prim.linkNumber, link))
|
|
277
|
+
p.setStatus(flag, value);
|
|
278
|
+
return undefined;
|
|
279
|
+
};
|
|
280
|
+
export const llSetClickAction = (ctx, args) => {
|
|
281
|
+
ctx.prim.setPrimParam(PRIM_CLICK_ACTION, [num(args[0]) | 0], 0);
|
|
282
|
+
return undefined;
|
|
283
|
+
};
|
|
284
|
+
export const llTargetOmega = (ctx, args) => {
|
|
285
|
+
ctx.prim.setPrimParam(PRIM_OMEGA, [vecOf(args[0]), num(args[1]), num(args[2])], 0);
|
|
286
|
+
return undefined;
|
|
287
|
+
};
|
|
288
|
+
export const llSetPhysicsMaterial = (ctx, args) => {
|
|
289
|
+
// mask bitfield selects which fields the call updates; the rest are
|
|
290
|
+
// preserved. DENSITY=0x1, FRICTION=0x2, RESTITUTION=0x4, GRAVITY_MULTIPLIER=0x8.
|
|
291
|
+
// mask is a transient selector for *this* call, not a persistent
|
|
292
|
+
// property of the material — don't store it.
|
|
293
|
+
const mask = num(args[0]) | 0;
|
|
294
|
+
const m = ctx.prim.params.physicsMaterial;
|
|
295
|
+
if (mask & GRAVITY_MULTIPLIER)
|
|
296
|
+
m.gravityMultiplier = num(args[1], 1);
|
|
297
|
+
if (mask & RESTITUTION)
|
|
298
|
+
m.restitution = num(args[2]);
|
|
299
|
+
if (mask & FRICTION)
|
|
300
|
+
m.friction = num(args[3]);
|
|
301
|
+
if (mask & DENSITY)
|
|
302
|
+
m.density = num(args[4], 1000);
|
|
303
|
+
return undefined;
|
|
304
|
+
};
|
|
305
|
+
export const llGetPhysicsMaterial = (ctx) => {
|
|
306
|
+
const m = ctx.prim.params.physicsMaterial;
|
|
307
|
+
return [m.gravityMultiplier, m.restitution, m.friction, m.density];
|
|
308
|
+
};
|
|
309
|
+
export const llPassCollisions = (ctx, args) => {
|
|
310
|
+
ctx.prim.params.passCollisions = num(args[0]) | 0;
|
|
311
|
+
return undefined;
|
|
312
|
+
};
|
|
313
|
+
export const llPassTouches = (ctx, args) => {
|
|
314
|
+
ctx.prim.params.passTouches = num(args[0]) | 0;
|
|
315
|
+
return undefined;
|
|
316
|
+
};
|
|
317
|
+
/* ------------------------------------------------------------------ */
|
|
318
|
+
/* Sit */
|
|
319
|
+
/* ------------------------------------------------------------------ */
|
|
320
|
+
export const llSitTarget = (ctx, args) => {
|
|
321
|
+
const offset = vecOf(args[0]);
|
|
322
|
+
const rot = rotOf(args[1]);
|
|
323
|
+
// LSL: zero offset disables the sit target.
|
|
324
|
+
const enabled = !(offset.x === 0 && offset.y === 0 && offset.z === 0);
|
|
325
|
+
ctx.prim.setPrimParam(PRIM_SIT_TARGET, [enabled ? 1 : 0, offset, rot], 0);
|
|
326
|
+
return undefined;
|
|
327
|
+
};
|
|
328
|
+
export const llLinkSitTarget = (ctx, args) => {
|
|
329
|
+
const link = num(args[0]) | 0;
|
|
330
|
+
const offset = vecOf(args[1]);
|
|
331
|
+
const rot = rotOf(args[2]);
|
|
332
|
+
const enabled = !(offset.x === 0 && offset.y === 0 && offset.z === 0);
|
|
333
|
+
for (const p of targets(ctx.linkset, ctx.prim.linkNumber, link)) {
|
|
334
|
+
p.setPrimParam(PRIM_SIT_TARGET, [enabled ? 1 : 0, offset, rot], 0);
|
|
335
|
+
}
|
|
336
|
+
return undefined;
|
|
337
|
+
};
|
|
338
|
+
export const llAvatarOnSitTarget = () => NULL_KEY;
|
|
339
|
+
export const llAvatarOnLinkSitTarget = () => NULL_KEY;
|
|
340
|
+
export const llSetLinkSitFlags = (ctx, args) => {
|
|
341
|
+
const link = num(args[0]) | 0;
|
|
342
|
+
const flags = num(args[1]) | 0;
|
|
343
|
+
for (const p of targets(ctx.linkset, ctx.prim.linkNumber, link)) {
|
|
344
|
+
p.setPrimParam(PRIM_SIT_FLAGS, [flags], 0);
|
|
345
|
+
}
|
|
346
|
+
return undefined;
|
|
347
|
+
};
|
|
348
|
+
export const llGetLinkSitFlags = (ctx, args) => {
|
|
349
|
+
const link = num(args[0]) | 0;
|
|
350
|
+
const ts = targets(ctx.linkset, ctx.prim.linkNumber, link);
|
|
351
|
+
return ts[0]?.params.sitFlags ?? 0;
|
|
352
|
+
};
|
|
353
|
+
//# sourceMappingURL=prim-accessors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prim-accessors.js","sourceRoot":"","sources":["../../src/builtins/prim-accessors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { BuiltinImpl } from '../runtime.js';
|
|
2
|
+
/** llSetPrimitiveParams(list rules) — caller's prim only (until PRIM_LINK_TARGET redirects). */
|
|
3
|
+
export declare const llSetPrimitiveParams: BuiltinImpl;
|
|
4
|
+
/** llSetLinkPrimitiveParams(integer link, list rules) — spec delay applied by dispatcher. */
|
|
5
|
+
export declare const llSetLinkPrimitiveParams: BuiltinImpl;
|
|
6
|
+
/** llSetLinkPrimitiveParamsFast — same as the slow variant minus the delay. */
|
|
7
|
+
export declare const llSetLinkPrimitiveParamsFast: BuiltinImpl;
|
|
8
|
+
/** llGetPrimitiveParams(list params) — caller's prim. */
|
|
9
|
+
export declare const llGetPrimitiveParams: BuiltinImpl;
|
|
10
|
+
/** llGetLinkPrimitiveParams(integer link, list params). */
|
|
11
|
+
export declare const llGetLinkPrimitiveParams: BuiltinImpl;
|
|
12
|
+
//# sourceMappingURL=prim-params.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prim-params.d.ts","sourceRoot":"","sources":["../../src/builtins/prim-params.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAyFhD,gGAAgG;AAChG,eAAO,MAAM,oBAAoB,EAAE,WAIlC,CAAA;AAED,6FAA6F;AAC7F,eAAO,MAAM,wBAAwB,EAAE,WAMtC,CAAA;AAED,+EAA+E;AAC/E,eAAO,MAAM,4BAA4B,EAAE,WAM1C,CAAA;AAED,yDAAyD;AACzD,eAAO,MAAM,oBAAoB,EAAE,WAGlC,CAAA;AAED,2DAA2D;AAC3D,eAAO,MAAM,wBAAwB,EAAE,WAKtC,CAAA"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { PRIM_LINK_TARGET } from '../generated/constants.js';
|
|
2
|
+
import { writePrimParamSlots } from '../prim-params.js';
|
|
3
|
+
/**
|
|
4
|
+
* Walk a PRIM_* rules list, applying each rule to every prim in the
|
|
5
|
+
* current target set. `PRIM_LINK_TARGET, link` mid-list re-targets all
|
|
6
|
+
* subsequent rules to the link resolved against the linkset (matches
|
|
7
|
+
* llSetLinkPrimitiveParams behavior, available inside
|
|
8
|
+
* llSetPrimitiveParams too).
|
|
9
|
+
*
|
|
10
|
+
* An unknown rule constant terminates the walk silently — same as LSL.
|
|
11
|
+
*/
|
|
12
|
+
function walkSet(linkset, caller, target, rules) {
|
|
13
|
+
let cur = target;
|
|
14
|
+
let i = 0;
|
|
15
|
+
while (i < rules.length) {
|
|
16
|
+
const rule = rules[i];
|
|
17
|
+
if (typeof rule !== 'number')
|
|
18
|
+
return;
|
|
19
|
+
if (rule === PRIM_LINK_TARGET) {
|
|
20
|
+
const link = rules[i + 1] | 0;
|
|
21
|
+
cur = linkset.resolveTargets(caller.linkNumber, link);
|
|
22
|
+
i += 2;
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
let consumed = null;
|
|
26
|
+
for (const p of cur) {
|
|
27
|
+
const c = p.setPrimParam(rule, rules, i + 1);
|
|
28
|
+
if (c === null)
|
|
29
|
+
return;
|
|
30
|
+
consumed = c;
|
|
31
|
+
}
|
|
32
|
+
if (consumed === null) {
|
|
33
|
+
// Empty target (PRIM_LINK_TARGET resolved to no prims). The rule
|
|
34
|
+
// is silently skipped, but we still advance past its slot width
|
|
35
|
+
// so a later PRIM_LINK_TARGET to a valid link picks up subsequent
|
|
36
|
+
// rules — matches real LSL behavior.
|
|
37
|
+
const slots = writePrimParamSlots(rule, rules, i + 1);
|
|
38
|
+
if (slots === null)
|
|
39
|
+
return;
|
|
40
|
+
consumed = slots;
|
|
41
|
+
}
|
|
42
|
+
i += 1 + consumed;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function walkGet(linkset, caller, startTarget, rules) {
|
|
46
|
+
const out = [];
|
|
47
|
+
let cur = startTarget;
|
|
48
|
+
let i = 0;
|
|
49
|
+
while (i < rules.length) {
|
|
50
|
+
const rule = rules[i];
|
|
51
|
+
if (typeof rule !== 'number')
|
|
52
|
+
return out;
|
|
53
|
+
if (rule === PRIM_LINK_TARGET) {
|
|
54
|
+
const link = rules[i + 1] | 0;
|
|
55
|
+
cur = linkset.resolveTargets(caller.linkNumber, link);
|
|
56
|
+
i += 2;
|
|
57
|
+
continue;
|
|
58
|
+
}
|
|
59
|
+
// For multi-prim get targets, LSL concatenates per-prim results.
|
|
60
|
+
// If the target set is empty we still need to know how many slots
|
|
61
|
+
// the rule consumes; probe against the caller without keeping the
|
|
62
|
+
// values, then continue.
|
|
63
|
+
let consumed;
|
|
64
|
+
if (cur.length === 0) {
|
|
65
|
+
const probe = caller.getPrimParam(rule, rules, i + 1);
|
|
66
|
+
if (probe === null)
|
|
67
|
+
return out;
|
|
68
|
+
consumed = probe.consumed;
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
let unknown = false;
|
|
72
|
+
let c = 0;
|
|
73
|
+
for (const p of cur) {
|
|
74
|
+
const r = p.getPrimParam(rule, rules, i + 1);
|
|
75
|
+
if (r === null) {
|
|
76
|
+
unknown = true;
|
|
77
|
+
break;
|
|
78
|
+
}
|
|
79
|
+
out.push(...r.values);
|
|
80
|
+
c = r.consumed;
|
|
81
|
+
}
|
|
82
|
+
if (unknown)
|
|
83
|
+
return out;
|
|
84
|
+
consumed = c;
|
|
85
|
+
}
|
|
86
|
+
i += 1 + consumed;
|
|
87
|
+
}
|
|
88
|
+
return out;
|
|
89
|
+
}
|
|
90
|
+
/** llSetPrimitiveParams(list rules) — caller's prim only (until PRIM_LINK_TARGET redirects). */
|
|
91
|
+
export const llSetPrimitiveParams = (ctx, args) => {
|
|
92
|
+
const rules = args[0] ?? [];
|
|
93
|
+
walkSet(ctx.linkset, ctx.prim, [ctx.prim], rules);
|
|
94
|
+
return undefined;
|
|
95
|
+
};
|
|
96
|
+
/** llSetLinkPrimitiveParams(integer link, list rules) — spec delay applied by dispatcher. */
|
|
97
|
+
export const llSetLinkPrimitiveParams = (ctx, args) => {
|
|
98
|
+
const link = (args[0] ?? 0) | 0;
|
|
99
|
+
const rules = args[1] ?? [];
|
|
100
|
+
const target = ctx.linkset.resolveTargets(ctx.prim.linkNumber, link);
|
|
101
|
+
walkSet(ctx.linkset, ctx.prim, target, rules);
|
|
102
|
+
return undefined;
|
|
103
|
+
};
|
|
104
|
+
/** llSetLinkPrimitiveParamsFast — same as the slow variant minus the delay. */
|
|
105
|
+
export const llSetLinkPrimitiveParamsFast = (ctx, args) => {
|
|
106
|
+
const link = (args[0] ?? 0) | 0;
|
|
107
|
+
const rules = args[1] ?? [];
|
|
108
|
+
const target = ctx.linkset.resolveTargets(ctx.prim.linkNumber, link);
|
|
109
|
+
walkSet(ctx.linkset, ctx.prim, target, rules);
|
|
110
|
+
return undefined;
|
|
111
|
+
};
|
|
112
|
+
/** llGetPrimitiveParams(list params) — caller's prim. */
|
|
113
|
+
export const llGetPrimitiveParams = (ctx, args) => {
|
|
114
|
+
const rules = args[0] ?? [];
|
|
115
|
+
return walkGet(ctx.linkset, ctx.prim, [ctx.prim], rules);
|
|
116
|
+
};
|
|
117
|
+
/** llGetLinkPrimitiveParams(integer link, list params). */
|
|
118
|
+
export const llGetLinkPrimitiveParams = (ctx, args) => {
|
|
119
|
+
const link = (args[0] ?? 0) | 0;
|
|
120
|
+
const rules = args[1] ?? [];
|
|
121
|
+
const target = ctx.linkset.resolveTargets(ctx.prim.linkNumber, link);
|
|
122
|
+
return walkGet(ctx.linkset, ctx.prim, target, rules);
|
|
123
|
+
};
|
|
124
|
+
//# sourceMappingURL=prim-params.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prim-params.js","sourceRoot":"","sources":["../../src/builtins/prim-params.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { BuiltinImpl } from '../runtime.js';
|
|
2
|
+
/**
|
|
3
|
+
* llResetOtherScript(string name) — reset a sibling script in the same prim.
|
|
4
|
+
* No-op if no script of that name exists. The reset is scheduled via a
|
|
5
|
+
* synthetic `__reset` event so it runs on the next drain step rather than
|
|
6
|
+
* re-entering the target while the caller's handler is still on the stack.
|
|
7
|
+
*/
|
|
8
|
+
export declare const llResetOtherScript: BuiltinImpl;
|
|
9
|
+
/** llSetScriptState(string name, integer running) — enable/disable sibling. */
|
|
10
|
+
export declare const llSetScriptState: BuiltinImpl;
|
|
11
|
+
/** llGetScriptState(string name) — 1 if sibling exists and is running, else 0. */
|
|
12
|
+
export declare const llGetScriptState: BuiltinImpl;
|
|
13
|
+
//# sourceMappingURL=script-control.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"script-control.d.ts","sourceRoot":"","sources":["../../src/builtins/script-control.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAEhD;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,WAMhC,CAAA;AAED,+EAA+E;AAC/E,eAAO,MAAM,gBAAgB,EAAE,WAiB9B,CAAA;AAED,kFAAkF;AAClF,eAAO,MAAM,gBAAgB,EAAE,WAI9B,CAAA"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* llResetOtherScript(string name) — reset a sibling script in the same prim.
|
|
3
|
+
* No-op if no script of that name exists. The reset is scheduled via a
|
|
4
|
+
* synthetic `__reset` event so it runs on the next drain step rather than
|
|
5
|
+
* re-entering the target while the caller's handler is still on the stack.
|
|
6
|
+
*/
|
|
7
|
+
export const llResetOtherScript = (ctx, args) => {
|
|
8
|
+
const name = args[0] ?? '';
|
|
9
|
+
const target = ctx.prim.findScript(name);
|
|
10
|
+
if (!target)
|
|
11
|
+
return undefined;
|
|
12
|
+
ctx.linkset.clock.schedule(target, ctx.linkset.clock.now, '__reset', {});
|
|
13
|
+
return undefined;
|
|
14
|
+
};
|
|
15
|
+
/** llSetScriptState(string name, integer running) — enable/disable sibling. */
|
|
16
|
+
export const llSetScriptState = (ctx, args) => {
|
|
17
|
+
const name = args[0] ?? '';
|
|
18
|
+
const running = (args[1] ?? 0) !== 0;
|
|
19
|
+
const target = ctx.prim.findScript(name);
|
|
20
|
+
if (!target)
|
|
21
|
+
return undefined;
|
|
22
|
+
const wasRunning = target.running;
|
|
23
|
+
target.running = running;
|
|
24
|
+
if (running && !wasRunning) {
|
|
25
|
+
// Realign the timer cadence so the next fire is one interval from now,
|
|
26
|
+
// not a flood of catch-up events for every interval missed during pause.
|
|
27
|
+
const v = target.clockView;
|
|
28
|
+
if (v.timerIntervalMs > 0) {
|
|
29
|
+
v.timerNextFireMs = ctx.linkset.clock.now + v.timerIntervalMs;
|
|
30
|
+
}
|
|
31
|
+
target.resumeParked();
|
|
32
|
+
}
|
|
33
|
+
return undefined;
|
|
34
|
+
};
|
|
35
|
+
/** llGetScriptState(string name) — 1 if sibling exists and is running, else 0. */
|
|
36
|
+
export const llGetScriptState = (ctx, args) => {
|
|
37
|
+
const name = args[0] ?? '';
|
|
38
|
+
const target = ctx.prim.findScript(name);
|
|
39
|
+
return target && target.running ? 1 : 0;
|
|
40
|
+
};
|
|
41
|
+
//# sourceMappingURL=script-control.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"script-control.js","sourceRoot":"","sources":["../../src/builtins/script-control.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;IAC3D,MAAM,IAAI,GAAI,IAAI,CAAC,CAAC,CAAwB,IAAI,EAAE,CAAA;IAClD,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;IACxC,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAA;IAC7B,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,CAAA;IACxE,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAED,+EAA+E;AAC/E,MAAM,CAAC,MAAM,gBAAgB,GAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;IACzD,MAAM,IAAI,GAAI,IAAI,CAAC,CAAC,CAAwB,IAAI,EAAE,CAAA;IAClD,MAAM,OAAO,GAAG,CAAE,IAAI,CAAC,CAAC,CAAwB,IAAI,CAAC,CAAC,KAAK,CAAC,CAAA;IAC5D,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;IACxC,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAA;IAC7B,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAA;IACjC,MAAM,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,IAAI,OAAO,IAAI,CAAC,UAAU,EAAE,CAAC;QAC3B,uEAAuE;QACvE,yEAAyE;QACzE,MAAM,CAAC,GAAG,MAAM,CAAC,SAAS,CAAA;QAC1B,IAAI,CAAC,CAAC,eAAe,GAAG,CAAC,EAAE,CAAC;YAC1B,CAAC,CAAC,eAAe,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,eAAe,CAAA;QAC/D,CAAC;QACD,MAAM,CAAC,YAAY,EAAE,CAAA;IACvB,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC,CAAA;AAED,kFAAkF;AAClF,MAAM,CAAC,MAAM,gBAAgB,GAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;IACzD,MAAM,IAAI,GAAI,IAAI,CAAC,CAAC,CAAwB,IAAI,EAAE,CAAA;IAClD,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;IACxC,OAAO,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;AACzC,CAAC,CAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { BuiltinImpl } from '../runtime.js';
|
|
2
|
+
/** llStringLength(string s) — Unicode code-point count, not byte count. */
|
|
3
|
+
export declare const llStringLength: BuiltinImpl;
|
|
4
|
+
/** llSubStringIndex(string source, string pattern) — first index, or -1. */
|
|
5
|
+
export declare const llSubStringIndex: BuiltinImpl;
|
|
6
|
+
/**
|
|
7
|
+
* llGetSubString(string src, integer start, integer end)
|
|
8
|
+
*
|
|
9
|
+
* Inclusive bounds. Negative indices count back from the end (so -1 is the
|
|
10
|
+
* last character). If start > end, LSL wraps: returns chars [0..end] +
|
|
11
|
+
* [start..length-1] concatenated.
|
|
12
|
+
*/
|
|
13
|
+
export declare const llGetSubString: BuiltinImpl;
|
|
14
|
+
/** llDeleteSubString — same wrap rules as llGetSubString but in reverse. */
|
|
15
|
+
export declare const llDeleteSubString: BuiltinImpl;
|
|
16
|
+
export declare const llInsertString: BuiltinImpl;
|
|
17
|
+
export declare const llStringTrim: BuiltinImpl;
|
|
18
|
+
export declare const llToLower: BuiltinImpl;
|
|
19
|
+
export declare const llToUpper: BuiltinImpl;
|
|
20
|
+
export declare const llReplaceSubString: BuiltinImpl;
|
|
21
|
+
export declare const llEscapeURL: BuiltinImpl;
|
|
22
|
+
export declare const llUnescapeURL: BuiltinImpl;
|
|
23
|
+
//# sourceMappingURL=strings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strings.d.ts","sourceRoot":"","sources":["../../src/builtins/strings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAA;AAGhD,2EAA2E;AAC3E,eAAO,MAAM,cAAc,EAAE,WAG5B,CAAA;AAED,4EAA4E;AAC5E,eAAO,MAAM,gBAAgB,EAAE,WAI9B,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,EAAE,WAK5B,CAAA;AAED,4EAA4E;AAC5E,eAAO,MAAM,iBAAiB,EAAE,WAK/B,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,WAM5B,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,WAO1B,CAAA;AAED,eAAO,MAAM,SAAS,EAAE,WAC+B,CAAA;AACvD,eAAO,MAAM,SAAS,EAAE,WAC+B,CAAA;AAEvD,eAAO,MAAM,kBAAkB,EAAE,WA+BhC,CAAA;AAED,eAAO,MAAM,WAAW,EAAE,WACiC,CAAA;AAC3D,eAAO,MAAM,aAAa,EAAE,WAM3B,CAAA"}
|