feat: 50 игр на Lua + импорт Roblox для всех + поддержка Lua в плеере #39
Binary file not shown.
@ -397,7 +397,9 @@ class Converter:
|
|||||||
'canCollide': bool(props.get('CanCollide', True)),
|
'canCollide': bool(props.get('CanCollide', True)),
|
||||||
'visible': props.get('Transparency', 0) < 1.0 if isinstance(props.get('Transparency'), (int, float)) else True,
|
'visible': props.get('Transparency', 0) < 1.0 if isinstance(props.get('Transparency'), (int, float)) else True,
|
||||||
'opacity': max(0.0, 1.0 - (props.get('Transparency', 0) or 0)),
|
'opacity': max(0.0, 1.0 - (props.get('Transparency', 0) or 0)),
|
||||||
'anchored': bool(props.get('Anchored', False)),
|
# FORCE-ANCHORED — Welds импортируем как заглушки, без них
|
||||||
|
# физика 700+ unanchored Part'ов = карта рассыпается.
|
||||||
|
'anchored': True,
|
||||||
'mass': 1.0,
|
'mass': 1.0,
|
||||||
'rotationX': rot['rx'], 'rotationY': rot['ry'], 'rotationZ': rot['rz'],
|
'rotationX': rot['rx'], 'rotationY': rot['ry'], 'rotationZ': rot['rz'],
|
||||||
}
|
}
|
||||||
@ -428,7 +430,9 @@ class Converter:
|
|||||||
'material': material_to_string(props.get('Material')),
|
'material': material_to_string(props.get('Material')),
|
||||||
'canCollide': bool(props.get('CanCollide', True)),
|
'canCollide': bool(props.get('CanCollide', True)),
|
||||||
'visible': True,
|
'visible': True,
|
||||||
'anchored': bool(props.get('Anchored', False)),
|
# FORCE-ANCHORED — Welds импортируем как заглушки, без них
|
||||||
|
# физика 700+ unanchored Part'ов = карта рассыпается.
|
||||||
|
'anchored': True,
|
||||||
'mass': 1.0,
|
'mass': 1.0,
|
||||||
'rotationX': rot['rx'], 'rotationY': rot['ry'], 'rotationZ': rot['rz'],
|
'rotationX': rot['rx'], 'rotationY': rot['ry'], 'rotationZ': rot['rz'],
|
||||||
})
|
})
|
||||||
@ -457,7 +461,9 @@ class Converter:
|
|||||||
'material': material_to_string(props.get('Material')),
|
'material': material_to_string(props.get('Material')),
|
||||||
'canCollide': bool(props.get('CanCollide', True)),
|
'canCollide': bool(props.get('CanCollide', True)),
|
||||||
'visible': True,
|
'visible': True,
|
||||||
'anchored': bool(props.get('Anchored', False)),
|
# FORCE-ANCHORED — Welds импортируем как заглушки, без них
|
||||||
|
# физика 700+ unanchored Part'ов = карта рассыпается.
|
||||||
|
'anchored': True,
|
||||||
'mass': 1.0,
|
'mass': 1.0,
|
||||||
'rotationX': rot['rx'], 'rotationY': rot['ry'], 'rotationZ': rot['rz'],
|
'rotationX': rot['rx'], 'rotationY': rot['ry'], 'rotationZ': rot['rz'],
|
||||||
})
|
})
|
||||||
@ -529,7 +535,9 @@ class Converter:
|
|||||||
'material': material_to_string(props.get('Material')),
|
'material': material_to_string(props.get('Material')),
|
||||||
'canCollide': bool(props.get('CanCollide', True)),
|
'canCollide': bool(props.get('CanCollide', True)),
|
||||||
'visible': True,
|
'visible': True,
|
||||||
'anchored': bool(props.get('Anchored', False)),
|
# FORCE-ANCHORED — Welds импортируем как заглушки, без них
|
||||||
|
# физика 700+ unanchored Part'ов = карта рассыпается.
|
||||||
|
'anchored': True,
|
||||||
'mass': 1.0,
|
'mass': 1.0,
|
||||||
'rotationX': rot['rx'], 'rotationY': rot['ry'], 'rotationZ': rot['rz'],
|
'rotationX': rot['rx'], 'rotationY': rot['ry'], 'rotationZ': rot['rz'],
|
||||||
'note': f'MeshPart (no GLB) rbxid={rbx_id}',
|
'note': f'MeshPart (no GLB) rbxid={rbx_id}',
|
||||||
@ -550,7 +558,9 @@ class Converter:
|
|||||||
'rotationX': rot['rx'], 'rotationY': rot['ry'], 'rotationZ': rot['rz'],
|
'rotationX': rot['rx'], 'rotationY': rot['ry'], 'rotationZ': rot['rz'],
|
||||||
'color': get_part_color(props),
|
'color': get_part_color(props),
|
||||||
'canCollide': bool(props.get('CanCollide', True)),
|
'canCollide': bool(props.get('CanCollide', True)),
|
||||||
'anchored': bool(props.get('Anchored', False)),
|
# FORCE-ANCHORED — Welds импортируем как заглушки, без них
|
||||||
|
# физика 700+ unanchored Part'ов = карта рассыпается.
|
||||||
|
'anchored': True,
|
||||||
'origin': 'roblox-meshpart',
|
'origin': 'roblox-meshpart',
|
||||||
'rbxAssetId': rbx_id,
|
'rbxAssetId': rbx_id,
|
||||||
})
|
})
|
||||||
@ -590,7 +600,9 @@ class Converter:
|
|||||||
'material': material_to_string(props.get('Material')),
|
'material': material_to_string(props.get('Material')),
|
||||||
'canCollide': bool(props.get('CanCollide', True)),
|
'canCollide': bool(props.get('CanCollide', True)),
|
||||||
'visible': True,
|
'visible': True,
|
||||||
'anchored': bool(props.get('Anchored', False)),
|
# FORCE-ANCHORED — Welds импортируем как заглушки, без них
|
||||||
|
# физика 700+ unanchored Part'ов = карта рассыпается.
|
||||||
|
'anchored': True,
|
||||||
'mass': 1.0,
|
'mass': 1.0,
|
||||||
'rotationX': rot['rx'], 'rotationY': rot['ry'], 'rotationZ': rot['rz'],
|
'rotationX': rot['rx'], 'rotationY': rot['ry'], 'rotationZ': rot['rz'],
|
||||||
'note': f'Union (no CSG GLB) rbxid={rbx_id}',
|
'note': f'Union (no CSG GLB) rbxid={rbx_id}',
|
||||||
@ -609,7 +621,9 @@ class Converter:
|
|||||||
'rotationX': rot['rx'], 'rotationY': rot['ry'], 'rotationZ': rot['rz'],
|
'rotationX': rot['rx'], 'rotationY': rot['ry'], 'rotationZ': rot['rz'],
|
||||||
'color': get_part_color(props),
|
'color': get_part_color(props),
|
||||||
'canCollide': bool(props.get('CanCollide', True)),
|
'canCollide': bool(props.get('CanCollide', True)),
|
||||||
'anchored': bool(props.get('Anchored', False)),
|
# FORCE-ANCHORED — Welds импортируем как заглушки, без них
|
||||||
|
# физика 700+ unanchored Part'ов = карта рассыпается.
|
||||||
|
'anchored': True,
|
||||||
'origin': 'roblox-union',
|
'origin': 'roblox-union',
|
||||||
'rbxAssetId': rbx_id,
|
'rbxAssetId': rbx_id,
|
||||||
})
|
})
|
||||||
|
|||||||
@ -507,8 +507,11 @@ export class PrimitiveManager {
|
|||||||
const matName = `${mesh.name}_mat`;
|
const matName = `${mesh.name}_mat`;
|
||||||
const mat = new StandardMaterial(matName, this.scene);
|
const mat = new StandardMaterial(matName, this.scene);
|
||||||
mat.diffuseColor = Color3.FromHexString(color || '#888888');
|
mat.diffuseColor = Color3.FromHexString(color || '#888888');
|
||||||
// ambient = default (0,0,0). Освещение настраивается через
|
// ambient = (1,1,1) — пассивный, реагирует на scene.ambientColor.
|
||||||
// глобальную панель «Свет и атмосфера» (sun/hemi/saturation).
|
// Юзер крутит «Заливку теней» (sceneAmbient) → тени светлеют.
|
||||||
|
// На прямом свете diffuse доминирует — пересвета нет если
|
||||||
|
// sceneAmbient в разумных пределах (0..0.5).
|
||||||
|
mat.ambientColor = new Color3(1, 1, 1);
|
||||||
|
|
||||||
// Если задан textureUrl — подгружаем PNG как diffuseTexture. Это
|
// Если задан textureUrl — подгружаем PNG как diffuseTexture. Это
|
||||||
// используется для GD-скинов куба (например /gd/skins/cube_smile.png).
|
// используется для GD-скинов куба (например /gd/skins/cube_smile.png).
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user