������ 14/16/20/40/44: vehicle, ����, ����������, damage floaters, ��������� #20
@ -2557,12 +2557,27 @@ export class GameRuntime {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (cmd === 'scene.setScale') {
|
||||||
|
try {
|
||||||
|
const k = Number(payload?.scale);
|
||||||
|
if (!Number.isFinite(k) || k < 0) return;
|
||||||
|
const pm = this.scene3d?.primitiveManager;
|
||||||
|
const rid = this._resolvePrimitiveId(payload?.id ?? payload?.ref);
|
||||||
|
const data = (pm && rid != null) ? pm.instances.get(rid) : null;
|
||||||
|
if (data?.mesh) {
|
||||||
|
if (data._worldMatrixFrozen) { try { data.mesh.unfreezeWorldMatrix?.(); } catch (e) {} data._worldMatrixFrozen = false; }
|
||||||
|
data.mesh.scaling.set(k, k, k);
|
||||||
|
}
|
||||||
|
} catch (e) {}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (cmd === 'scene.setColor') {
|
if (cmd === 'scene.setColor') {
|
||||||
try {
|
try {
|
||||||
const color = payload?.color;
|
const color = payload?.color;
|
||||||
if (typeof color !== 'string') return;
|
if (typeof color !== 'string') return;
|
||||||
// Окрашиваемый блок (studs-block): ref 'block:x,y,z' → BlockManager.
|
// Окрашиваемый блок (studs-block): ref 'block:x,y,z' → BlockManager.
|
||||||
const ref = payload?.id;
|
const ref = payload?.id ?? payload?.ref;
|
||||||
if (typeof ref === 'string' && ref.startsWith('block:')) {
|
if (typeof ref === 'string' && ref.startsWith('block:')) {
|
||||||
const parts = ref.slice(6).split(',').map(Number);
|
const parts = ref.slice(6).split(',').map(Number);
|
||||||
if (parts.length === 3 && parts.every(Number.isFinite)) {
|
if (parts.length === 3 && parts.every(Number.isFinite)) {
|
||||||
@ -2572,7 +2587,7 @@ export class GameRuntime {
|
|||||||
}
|
}
|
||||||
const pm = this.scene3d?.primitiveManager;
|
const pm = this.scene3d?.primitiveManager;
|
||||||
if (!pm) return;
|
if (!pm) return;
|
||||||
const rid = this._resolvePrimitiveId(payload?.id);
|
const rid = this._resolvePrimitiveId(payload?.id ?? payload?.ref);
|
||||||
const data = rid != null ? pm.instances.get(rid) : null;
|
const data = rid != null ? pm.instances.get(rid) : null;
|
||||||
if (data) {
|
if (data) {
|
||||||
data.color = color;
|
data.color = color;
|
||||||
|
|||||||
@ -467,6 +467,11 @@ function _getOrCreateInstance(ref, kindHint) {
|
|||||||
_send('scene.setColor', { ref, color: String(value) });
|
_send('scene.setColor', { ref, color: String(value) });
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
if (prop === 'scale') {
|
||||||
|
const k = Number(value);
|
||||||
|
if (Number.isFinite(k) && k >= 0) _send('scene.setScale', { ref, scale: k });
|
||||||
|
return true;
|
||||||
|
}
|
||||||
if (prop === 'transparency' || prop === 'opacity') {
|
if (prop === 'transparency' || prop === 'opacity') {
|
||||||
const v = Number(value);
|
const v = Number(value);
|
||||||
if (Number.isFinite(v)) {
|
if (Number.isFinite(v)) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user