mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-10-24 03:59:50 +02:00
fix: jsx tree node uuids
This commit is contained in:
1 parent
b805c2e3b4
commit
abb72fb674
5 files changed
+76
-26
No files matched your search
@@ -124,11 +124,15 @@ export const TankModel = memo(() => {
|
|||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
}
|
}
|
||||||
|
|
||||||
return jsxTree(node, {
|
return jsxTree(
|
||||||
|
node,
|
||||||
|
{
|
||||||
castShadow: true,
|
castShadow: true,
|
||||||
receiveShadow: true,
|
receiveShadow: true,
|
||||||
onPointerDown,
|
onPointerDown,
|
||||||
});
|
},
|
||||||
|
node.uuid,
|
||||||
|
);
|
||||||
})}
|
})}
|
||||||
|
|
||||||
<group ref={turretContainer}>
|
<group ref={turretContainer}>
|
||||||
@@ -189,11 +193,15 @@ export const TankModel = memo(() => {
|
|||||||
window.removeEventListener('pointerup', handlePointerUp);
|
window.removeEventListener('pointerup', handlePointerUp);
|
||||||
}
|
}
|
||||||
|
|
||||||
return jsxTree(node, {
|
return jsxTree(
|
||||||
|
node,
|
||||||
|
{
|
||||||
castShadow: true,
|
castShadow: true,
|
||||||
receiveShadow: true,
|
receiveShadow: true,
|
||||||
onPointerDown,
|
onPointerDown,
|
||||||
});
|
},
|
||||||
|
node.uuid,
|
||||||
|
);
|
||||||
})}
|
})}
|
||||||
|
|
||||||
<group ref={gunContainer}>
|
<group ref={gunContainer}>
|
||||||
@@ -255,11 +263,15 @@ export const TankModel = memo(() => {
|
|||||||
window.removeEventListener('pointerup', handlePointerUp);
|
window.removeEventListener('pointerup', handlePointerUp);
|
||||||
}
|
}
|
||||||
|
|
||||||
return jsxTree(node, {
|
return jsxTree(
|
||||||
|
node,
|
||||||
|
{
|
||||||
castShadow: true,
|
castShadow: true,
|
||||||
receiveShadow: true,
|
receiveShadow: true,
|
||||||
onPointerDown,
|
onPointerDown,
|
||||||
});
|
},
|
||||||
|
node.uuid,
|
||||||
|
);
|
||||||
})}
|
})}
|
||||||
</group>
|
</group>
|
||||||
</group>
|
</group>
|
||||||
|
|||||||
@@ -153,14 +153,22 @@ export function CoreArmorSceneComponent({
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{jsxTree(node, {
|
{jsxTree(
|
||||||
|
node,
|
||||||
|
{
|
||||||
renderOrder: 0,
|
renderOrder: 0,
|
||||||
material: excludeMaterial,
|
material: excludeMaterial,
|
||||||
})}
|
},
|
||||||
{jsxTree(node, {
|
node.uuid,
|
||||||
|
)}
|
||||||
|
{jsxTree(
|
||||||
|
node,
|
||||||
|
{
|
||||||
renderOrder: 1,
|
renderOrder: 1,
|
||||||
material,
|
material,
|
||||||
})}
|
},
|
||||||
|
node.uuid,
|
||||||
|
)}
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
+12
-4
@@ -107,7 +107,9 @@ export function SpacedArmorSubExternal({
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{jsxTree(node, {
|
{jsxTree(
|
||||||
|
node,
|
||||||
|
{
|
||||||
renderOrder: 3,
|
renderOrder: 3,
|
||||||
material: new MeshBasicMaterial({
|
material: new MeshBasicMaterial({
|
||||||
colorWrite: false,
|
colorWrite: false,
|
||||||
@@ -121,12 +123,18 @@ export function SpacedArmorSubExternal({
|
|||||||
thickness,
|
thickness,
|
||||||
variant,
|
variant,
|
||||||
} satisfies ArmorUserData,
|
} satisfies ArmorUserData,
|
||||||
})}
|
},
|
||||||
|
node.uuid,
|
||||||
|
)}
|
||||||
|
|
||||||
{jsxTree(node, {
|
{jsxTree(
|
||||||
|
node,
|
||||||
|
{
|
||||||
renderOrder: 4,
|
renderOrder: 4,
|
||||||
material,
|
material,
|
||||||
})}
|
},
|
||||||
|
node.uuid,
|
||||||
|
)}
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
+12
-4
@@ -113,7 +113,9 @@ export function SpacedArmorSubSpaced({
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{jsxTree(node, {
|
{jsxTree(
|
||||||
|
node,
|
||||||
|
{
|
||||||
renderOrder: 2,
|
renderOrder: 2,
|
||||||
material,
|
material,
|
||||||
onClick() {},
|
onClick() {},
|
||||||
@@ -121,12 +123,18 @@ export function SpacedArmorSubSpaced({
|
|||||||
type: ArmorType.Spaced,
|
type: ArmorType.Spaced,
|
||||||
thickness,
|
thickness,
|
||||||
} satisfies ArmorUserData,
|
} satisfies ArmorUserData,
|
||||||
})}
|
},
|
||||||
|
node.uuid,
|
||||||
|
)}
|
||||||
|
|
||||||
{jsxTree(node, {
|
{jsxTree(
|
||||||
|
node,
|
||||||
|
{
|
||||||
renderOrder: 5,
|
renderOrder: 5,
|
||||||
material: depthWriteMaterial,
|
material: depthWriteMaterial,
|
||||||
})}
|
},
|
||||||
|
node.uuid,
|
||||||
|
)}
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -81,7 +81,9 @@ export function SpacedArmorSceneComponent({
|
|||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{props.type === ArmorType.Core &&
|
{props.type === ArmorType.Core &&
|
||||||
jsxTree(node, {
|
jsxTree(
|
||||||
|
node,
|
||||||
|
{
|
||||||
renderOrder: 0,
|
renderOrder: 0,
|
||||||
material: omitMaterial,
|
material: omitMaterial,
|
||||||
userData: {
|
userData: {
|
||||||
@@ -125,11 +127,16 @@ export function SpacedArmorSceneComponent({
|
|||||||
.sub(event.point)
|
.sub(event.point)
|
||||||
.normalize();
|
.normalize();
|
||||||
|
|
||||||
pushLogs(shellNormal, filterIntersections(event.intersections), 0);
|
pushLogs(
|
||||||
|
shellNormal,
|
||||||
|
filterIntersections(event.intersections),
|
||||||
|
0,
|
||||||
|
);
|
||||||
|
|
||||||
function filterIntersections(intersectionsRaw: Intersection[]) {
|
function filterIntersections(intersectionsRaw: Intersection[]) {
|
||||||
const showSpacedArmor =
|
const showSpacedArmor =
|
||||||
useTankopediaPersistent.getState().model.visual.showSpacedArmor;
|
useTankopediaPersistent.getState().model.visual
|
||||||
|
.showSpacedArmor;
|
||||||
const intersectionsTyped = intersectionsRaw.filter(
|
const intersectionsTyped = intersectionsRaw.filter(
|
||||||
({ object }) => object.userData.type !== undefined,
|
({ object }) => object.userData.type !== undefined,
|
||||||
) as ArmorMeshIntersection[];
|
) as ArmorMeshIntersection[];
|
||||||
@@ -192,7 +199,8 @@ export function SpacedArmorSceneComponent({
|
|||||||
shot.layers.at(-1) as ShotLayerBase
|
shot.layers.at(-1) as ShotLayerBase
|
||||||
).point.distanceTo(intersections[0].point);
|
).point.distanceTo(intersections[0].point);
|
||||||
if (explosive && !splashing)
|
if (explosive && !splashing)
|
||||||
remainingPenetration -= 0.5 * remainingPenetration * distance;
|
remainingPenetration -=
|
||||||
|
0.5 * remainingPenetration * distance;
|
||||||
const blocked = remainingPenetration < 0;
|
const blocked = remainingPenetration < 0;
|
||||||
|
|
||||||
shot.layers.push({
|
shot.layers.push({
|
||||||
@@ -211,7 +219,8 @@ export function SpacedArmorSceneComponent({
|
|||||||
event.object.getWorldQuaternion(new Quaternion()),
|
event.object.getWorldQuaternion(new Quaternion()),
|
||||||
);
|
);
|
||||||
const thickness =
|
const thickness =
|
||||||
thicknessCoefficient * intersection.object.userData.thickness;
|
thicknessCoefficient *
|
||||||
|
intersection.object.userData.thickness;
|
||||||
|
|
||||||
if (layerIndex !== 0 && startingIndex === 0) {
|
if (layerIndex !== 0 && startingIndex === 0) {
|
||||||
const previousIntersection = intersections[layerIndex - 1];
|
const previousIntersection = intersections[layerIndex - 1];
|
||||||
@@ -231,7 +240,9 @@ export function SpacedArmorSceneComponent({
|
|||||||
if (wasted && !splashing) return;
|
if (wasted && !splashing) return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (intersection.object.userData.type === ArmorType.External) {
|
if (
|
||||||
|
intersection.object.userData.type === ArmorType.External
|
||||||
|
) {
|
||||||
remainingPenetration -= thickness;
|
remainingPenetration -= thickness;
|
||||||
const blocked = remainingPenetration < 0;
|
const blocked = remainingPenetration < 0;
|
||||||
|
|
||||||
@@ -259,7 +270,8 @@ export function SpacedArmorSceneComponent({
|
|||||||
shell.caliber > thickness * 3 || layerIndex > 0;
|
shell.caliber > thickness * 3 || layerIndex > 0;
|
||||||
const twoCalibersRule = shell.caliber > thickness * 2;
|
const twoCalibersRule = shell.caliber > thickness * 2;
|
||||||
const finalNormalization = twoCalibersRule
|
const finalNormalization = twoCalibersRule
|
||||||
? (1.4 * normalization * shell.caliber) / (2.0 * thickness)
|
? (1.4 * normalization * shell.caliber) /
|
||||||
|
(2.0 * thickness)
|
||||||
: normalization;
|
: normalization;
|
||||||
const finalThickness =
|
const finalThickness =
|
||||||
thickness === 0
|
thickness === 0
|
||||||
@@ -325,7 +337,9 @@ export function SpacedArmorSceneComponent({
|
|||||||
|
|
||||||
useTankopediaTemporary.setState({ shot });
|
useTankopediaTemporary.setState({ shot });
|
||||||
},
|
},
|
||||||
})}
|
},
|
||||||
|
node.uuid,
|
||||||
|
)}
|
||||||
|
|
||||||
{props.type === ArmorType.Spaced && (
|
{props.type === ArmorType.Spaced && (
|
||||||
<SpacedArmorSubSpaced node={node} thickness={thickness} />
|
<SpacedArmorSubSpaced node={node} thickness={thickness} />
|
||||||
|
|||||||
Reference in new issue
Block a user