mirror of
https://github.com/blitzkit/blitzkit.git
synced 2026-10-31 14:39:51 +01:00
fix: keys
This commit is contained in:
1 parent
545b655d4e
commit
8b6610151e
9 files changed
+68
-44
No files matched your search
+7
-2
@@ -216,7 +216,7 @@ export function PrimaryArmorSceneComponent({
|
|||||||
return (
|
return (
|
||||||
<mesh
|
<mesh
|
||||||
{...props}
|
{...props}
|
||||||
key={key}
|
key={`${key}-exclude`}
|
||||||
renderOrder={0}
|
renderOrder={0}
|
||||||
material={excludeMaterial}
|
material={excludeMaterial}
|
||||||
/>
|
/>
|
||||||
@@ -226,7 +226,12 @@ export function PrimaryArmorSceneComponent({
|
|||||||
{jsxTree(node, {
|
{jsxTree(node, {
|
||||||
mesh(_, props, key) {
|
mesh(_, props, key) {
|
||||||
return (
|
return (
|
||||||
<mesh {...props} key={key} renderOrder={1} material={material} />
|
<mesh
|
||||||
|
{...props}
|
||||||
|
key={`${key}-include`}
|
||||||
|
renderOrder={1}
|
||||||
|
material={material}
|
||||||
|
/>
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
})}
|
})}
|
||||||
|
|||||||
@@ -74,7 +74,7 @@ export const SpacedArmorScene = memo<SpacedArmorSceneProps>(({ scene }) => {
|
|||||||
return (
|
return (
|
||||||
<SpacedArmorSceneComponent
|
<SpacedArmorSceneComponent
|
||||||
scene={scene}
|
scene={scene}
|
||||||
key={node.uuid}
|
key={`${node.uuid}-hull`}
|
||||||
type={spaced ? ArmorType.Spaced : ArmorType.Primary}
|
type={spaced ? ArmorType.Spaced : ArmorType.Primary}
|
||||||
thickness={thickness}
|
thickness={thickness}
|
||||||
node={node}
|
node={node}
|
||||||
@@ -93,7 +93,7 @@ export const SpacedArmorScene = memo<SpacedArmorSceneProps>(({ scene }) => {
|
|||||||
return (
|
return (
|
||||||
<SpacedArmorSceneComponent
|
<SpacedArmorSceneComponent
|
||||||
scene={scene}
|
scene={scene}
|
||||||
key={node.uuid}
|
key={`${node.uuid}-track`}
|
||||||
type={ArmorType.External}
|
type={ArmorType.External}
|
||||||
thickness={trackModelDefinition.thickness}
|
thickness={trackModelDefinition.thickness}
|
||||||
variant="track"
|
variant="track"
|
||||||
@@ -127,7 +127,7 @@ export const SpacedArmorScene = memo<SpacedArmorSceneProps>(({ scene }) => {
|
|||||||
<group position={turretOrigin}>
|
<group position={turretOrigin}>
|
||||||
<SpacedArmorSceneComponent
|
<SpacedArmorSceneComponent
|
||||||
scene={scene}
|
scene={scene}
|
||||||
key={node.uuid}
|
key={`${node.uuid}-turret`}
|
||||||
type={spaced ? ArmorType.Spaced : ArmorType.Primary}
|
type={spaced ? ArmorType.Spaced : ArmorType.Primary}
|
||||||
thickness={thickness}
|
thickness={thickness}
|
||||||
node={node}
|
node={node}
|
||||||
@@ -158,7 +158,7 @@ export const SpacedArmorScene = memo<SpacedArmorSceneProps>(({ scene }) => {
|
|||||||
return null;
|
return null;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<group position={hullOrigin} key={node.uuid}>
|
<group position={hullOrigin} key={`${node.uuid}-gun-spaced}`}>
|
||||||
<group position={turretOrigin.clone().add(gunOrigin)}>
|
<group position={turretOrigin.clone().add(gunOrigin)}>
|
||||||
<SpacedArmorSceneComponent
|
<SpacedArmorSceneComponent
|
||||||
scene={scene}
|
scene={scene}
|
||||||
@@ -185,7 +185,7 @@ export const SpacedArmorScene = memo<SpacedArmorSceneProps>(({ scene }) => {
|
|||||||
return (
|
return (
|
||||||
<SpacedArmorSceneComponent
|
<SpacedArmorSceneComponent
|
||||||
scene={scene}
|
scene={scene}
|
||||||
key={node.uuid}
|
key={`${node.uuid}-gun-external`}
|
||||||
type={ArmorType.External}
|
type={ArmorType.External}
|
||||||
thickness={gunModelDefinition.thickness}
|
thickness={gunModelDefinition.thickness}
|
||||||
variant="gun"
|
variant="gun"
|
||||||
|
|||||||
+19
-2
@@ -115,11 +115,17 @@ export function SpacedArmorSubExternal({
|
|||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{jsxTree(node, {
|
{jsxTree(node, {
|
||||||
|
group(_, props, key) {
|
||||||
|
return (
|
||||||
|
<group {...props} key={`${key}-spaced-sub-external-exclude`} />
|
||||||
|
);
|
||||||
|
},
|
||||||
|
|
||||||
mesh(_, props, key) {
|
mesh(_, props, key) {
|
||||||
return (
|
return (
|
||||||
<mesh
|
<mesh
|
||||||
{...props}
|
{...props}
|
||||||
key={key}
|
key={`${key}-spaced-sub-external-exclude`}
|
||||||
renderOrder={3}
|
renderOrder={3}
|
||||||
material={
|
material={
|
||||||
new MeshBasicMaterial({
|
new MeshBasicMaterial({
|
||||||
@@ -142,9 +148,20 @@ export function SpacedArmorSubExternal({
|
|||||||
})}
|
})}
|
||||||
|
|
||||||
{jsxTree(node, {
|
{jsxTree(node, {
|
||||||
|
group(_, props, key) {
|
||||||
|
return (
|
||||||
|
<group {...props} key={`${key}-spaced-sub-external-include`} />
|
||||||
|
);
|
||||||
|
},
|
||||||
|
|
||||||
mesh(_, props, key) {
|
mesh(_, props, key) {
|
||||||
return (
|
return (
|
||||||
<mesh {...props} key={key} renderOrder={4} material={material} />
|
<mesh
|
||||||
|
{...props}
|
||||||
|
key={`${key}-spaced-sub-external-include`}
|
||||||
|
renderOrder={4}
|
||||||
|
material={material}
|
||||||
|
/>
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
})}
|
})}
|
||||||
|
|||||||
+10
-2
@@ -125,11 +125,15 @@ export function SpacedArmorSubSpaced({
|
|||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
{jsxTree(node, {
|
{jsxTree(node, {
|
||||||
|
group(_, props, key) {
|
||||||
|
return <group {...props} key={`${key}-spaced-sub-spaced-exclude`} />;
|
||||||
|
},
|
||||||
|
|
||||||
mesh(_, props, key) {
|
mesh(_, props, key) {
|
||||||
return (
|
return (
|
||||||
<mesh
|
<mesh
|
||||||
{...props}
|
{...props}
|
||||||
key={key}
|
key={`${key}-spaced-sub-spaced-exclude`}
|
||||||
renderOrder={2}
|
renderOrder={2}
|
||||||
material={material}
|
material={material}
|
||||||
onClick={() => {}}
|
onClick={() => {}}
|
||||||
@@ -145,11 +149,15 @@ export function SpacedArmorSubSpaced({
|
|||||||
})}
|
})}
|
||||||
|
|
||||||
{jsxTree(node, {
|
{jsxTree(node, {
|
||||||
|
group(_, props, key) {
|
||||||
|
return <group {...props} key={`${key}-spaced-sub-spaced-include`} />;
|
||||||
|
},
|
||||||
|
|
||||||
mesh(_, props, key) {
|
mesh(_, props, key) {
|
||||||
return (
|
return (
|
||||||
<mesh
|
<mesh
|
||||||
{...props}
|
{...props}
|
||||||
key={key}
|
key={`${key}-spaced-sub-spaced-include`}
|
||||||
renderOrder={5}
|
renderOrder={5}
|
||||||
material={depthWriteMaterial}
|
material={depthWriteMaterial}
|
||||||
/>
|
/>
|
||||||
|
|||||||
+2
-2
@@ -373,11 +373,11 @@ export function SpacedArmorSceneComponent({
|
|||||||
<>
|
<>
|
||||||
{props.type === ArmorType.Primary &&
|
{props.type === ArmorType.Primary &&
|
||||||
jsxTree(node, {
|
jsxTree(node, {
|
||||||
mesh(mesh, props, key) {
|
mesh(_, props, key) {
|
||||||
return (
|
return (
|
||||||
<mesh
|
<mesh
|
||||||
{...props}
|
{...props}
|
||||||
key={key}
|
key={`${key}-spaced-component`}
|
||||||
renderOrder={0}
|
renderOrder={0}
|
||||||
material={omitMaterial}
|
material={omitMaterial}
|
||||||
userData={
|
userData={
|
||||||
|
|||||||
+6
@@ -25,6 +25,12 @@ export function InitialFogReveal() {
|
|||||||
|
|
||||||
fog.near = near;
|
fog.near = near;
|
||||||
fog.far = far;
|
fog.far = far;
|
||||||
|
|
||||||
|
if (x >= 1) {
|
||||||
|
fog.near = forNear0;
|
||||||
|
fog.far = fogFar0;
|
||||||
|
clearInterval(interval);
|
||||||
|
}
|
||||||
}, 1000 / 60);
|
}, 1000 / 60);
|
||||||
|
|
||||||
return () => clearInterval(interval);
|
return () => clearInterval(interval);
|
||||||
|
|||||||
+1
-2
@@ -70,8 +70,7 @@ export const TankSandbox = forwardRef<HTMLCanvasElement, TankSandboxProps>(
|
|||||||
if (rawDisplay === display) return;
|
if (rawDisplay === display) return;
|
||||||
|
|
||||||
const t0 = Date.now();
|
const t0 = Date.now();
|
||||||
|
const interval = setInterval(() => {
|
||||||
const interval = setInterval((e) => {
|
|
||||||
const t = (Date.now() - t0) / 1000;
|
const t = (Date.now() - t0) / 1000;
|
||||||
const x = t / fogAnimationTime;
|
const x = t / fogAnimationTime;
|
||||||
const y = Math.cbrt(-2 * Math.abs(x - 0.5)) + 1;
|
const y = Math.cbrt(-2 * Math.abs(x - 0.5)) + 1;
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import { times } from 'lodash-es';
|
|||||||
import { Suspense, useEffect, useMemo, useRef } from 'react';
|
import { Suspense, useEffect, useMemo, useRef } from 'react';
|
||||||
import { NAVBAR_HEIGHT } from '../../../constants/navbar';
|
import { NAVBAR_HEIGHT } from '../../../constants/navbar';
|
||||||
import { awaitableTankDefinitions } from '../../../core/awaitables/tankDefinitions';
|
import { awaitableTankDefinitions } from '../../../core/awaitables/tankDefinitions';
|
||||||
|
import { Var } from '../../../core/radix/var';
|
||||||
import { useFullScreen } from '../../../hooks/useFullScreen';
|
import { useFullScreen } from '../../../hooks/useFullScreen';
|
||||||
import { useLocale } from '../../../hooks/useLocale';
|
import { useLocale } from '../../../hooks/useLocale';
|
||||||
import { Duel } from '../../../stores/duel';
|
import { Duel } from '../../../stores/duel';
|
||||||
@@ -107,6 +108,19 @@ export function HeroSection({ skeleton }: MaybeSkeletonComponentProps) {
|
|||||||
left={disturbed ? '0' : { initial: '0', md: '12.5%' }}
|
left={disturbed ? '0' : { initial: '0', md: '12.5%' }}
|
||||||
style={{ transitionDuration: '200ms' }}
|
style={{ transitionDuration: '200ms' }}
|
||||||
>
|
>
|
||||||
|
{!revealed && (
|
||||||
|
<Spinner
|
||||||
|
style={{
|
||||||
|
position: 'absolute',
|
||||||
|
top: '50%',
|
||||||
|
left: '50%',
|
||||||
|
transform: 'translate(-50%, -50%)',
|
||||||
|
width: Var('space-6'),
|
||||||
|
height: Var('space-6'),
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
|
|
||||||
{/* {skeleton && <TankSandboxLoader id={protagonist.id} />} */}
|
{/* {skeleton && <TankSandboxLoader id={protagonist.id} />} */}
|
||||||
|
|
||||||
<Suspense>
|
<Suspense>
|
||||||
@@ -147,21 +161,7 @@ export function HeroSection({ skeleton }: MaybeSkeletonComponentProps) {
|
|||||||
}
|
}
|
||||||
style={{ transitionDuration: '200ms', position: 'relative' }}
|
style={{ transitionDuration: '200ms', position: 'relative' }}
|
||||||
>
|
>
|
||||||
<Icon
|
<Icon width="1em" height="1em" />
|
||||||
width="1em"
|
|
||||||
height="1em"
|
|
||||||
style={{ opacity: revealed ? 1 : 0 }}
|
|
||||||
/>
|
|
||||||
<Spinner
|
|
||||||
style={{
|
|
||||||
position: 'absolute',
|
|
||||||
top: '0',
|
|
||||||
left: '0',
|
|
||||||
width: '1em',
|
|
||||||
height: '1em',
|
|
||||||
opacity: revealed ? 0 : 1,
|
|
||||||
}}
|
|
||||||
/>
|
|
||||||
</Heading>
|
</Heading>
|
||||||
|
|
||||||
<Heading
|
<Heading
|
||||||
@@ -179,14 +179,7 @@ export function HeroSection({ skeleton }: MaybeSkeletonComponentProps) {
|
|||||||
</Heading>
|
</Heading>
|
||||||
</Flex>
|
</Flex>
|
||||||
|
|
||||||
<Box
|
<Box ml="3">
|
||||||
ml="3"
|
|
||||||
style={{
|
|
||||||
transitionDuration: '200ms',
|
|
||||||
opacity: revealed ? 1 : 0,
|
|
||||||
transform: revealed ? 'translateY(0)' : 'translateY(-100%)',
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<Text
|
<Text
|
||||||
color="gray"
|
color="gray"
|
||||||
size={{ initial: '3', lg: disturbed ? '4' : '5' }}
|
size={{ initial: '3', lg: disturbed ? '4' : '5' }}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import type { MeshProps, Object3DProps } from '@react-three/fiber';
|
import type { GroupProps, MeshProps } from '@react-three/fiber';
|
||||||
import type { ReactNode } from 'react';
|
import type { ReactNode } from 'react';
|
||||||
import { Mesh, Object3D } from 'three';
|
import { Mesh, Object3D } from 'three';
|
||||||
|
|
||||||
@@ -6,11 +6,7 @@ export function jsxTree(
|
|||||||
node: Object3D,
|
node: Object3D,
|
||||||
mergers?: {
|
mergers?: {
|
||||||
mesh?: (mesh: Mesh, props: MeshProps, key: string) => ReactNode;
|
mesh?: (mesh: Mesh, props: MeshProps, key: string) => ReactNode;
|
||||||
group?: (
|
group?: (object3d: Object3D, props: GroupProps, key: string) => ReactNode;
|
||||||
object3d: Object3D,
|
|
||||||
props: Object3DProps,
|
|
||||||
key: string,
|
|
||||||
) => ReactNode;
|
|
||||||
},
|
},
|
||||||
): ReactNode {
|
): ReactNode {
|
||||||
if (node instanceof Mesh) {
|
if (node instanceof Mesh) {
|
||||||
|
|||||||
Reference in new issue
Block a user