mirror of
https://github.com/ad044/lainTSX.git
synced 2024-10-22 23:19:06 +00:00
added huds for all 4 current sprites, cleaned up some code
This commit is contained in:
parent
9d7e17bf8f
commit
01a62a05d0
10 changed files with 253 additions and 100 deletions
|
@ -1,24 +1,23 @@
|
||||||
import { a, useSpring, update } from "@react-spring/three";
|
import { a, useSpring } from "@react-spring/three";
|
||||||
//import Orb from "./Orb";
|
//import Orb from "./Orb";
|
||||||
import { OrbitControls } from "drei";
|
import { OrbitControls } from "drei";
|
||||||
import React, {
|
import React, {
|
||||||
Suspense,
|
Suspense,
|
||||||
useCallback,
|
useCallback,
|
||||||
useEffect,
|
useEffect,
|
||||||
useState,
|
useState
|
||||||
useRef,
|
|
||||||
} from "react";
|
} from "react";
|
||||||
import { Canvas } from "react-three-fiber";
|
import { Canvas } from "react-three-fiber";
|
||||||
import lain_animations from "../resources/lain_animations.json";
|
import lain_animations from "../resources/lain_animations.json";
|
||||||
import level_sprite_directions from "../resources/level_sprite_directions.json";
|
import level_sprite_directions from "../resources/level_sprite_directions.json";
|
||||||
import level_sprite_huds from "../resources/level_sprite_huds.json";
|
import level_sprite_huds from "../resources/level_sprite_huds.json";
|
||||||
import Hub, { PositionAndScaleProps } from "./Hub";
|
import Hub from "./Hub";
|
||||||
import Lain, {
|
import Lain, {
|
||||||
LainMoveDown,
|
LainMoveDown,
|
||||||
LainMoveLeft,
|
LainMoveLeft,
|
||||||
LainMoveRight,
|
LainMoveRight,
|
||||||
LainMoveUp,
|
LainMoveUp,
|
||||||
LainStanding,
|
LainStanding
|
||||||
} from "./Lain";
|
} from "./Lain";
|
||||||
import Lights from "./Lights";
|
import Lights from "./Lights";
|
||||||
import OrthoCamera from "./OrthoCamera";
|
import OrthoCamera from "./OrthoCamera";
|
||||||
|
@ -45,18 +44,44 @@ const Game = () => {
|
||||||
const [isLainMoving, setLainMoving] = useState(false);
|
const [isLainMoving, setLainMoving] = useState(false);
|
||||||
const [lainMoveState, setLainMoveState] = useState(<LainStanding />);
|
const [lainMoveState, setLainMoveState] = useState(<LainStanding />);
|
||||||
|
|
||||||
const [currentSprite, setCurrentSprite] = useState("043");
|
const [currentSprite, setCurrentSprite] = useState("0422");
|
||||||
const [currentSpriteHUD, setCurrentSpriteHUD] = useState<SpriteHuds>(
|
const [currentSpriteHUD, setCurrentSpriteHUD] = useState<SpriteHuds>(
|
||||||
(level_sprite_huds as SpriteHuds)[currentSprite]
|
(level_sprite_huds as SpriteHuds)[currentSprite]
|
||||||
);
|
);
|
||||||
|
|
||||||
const [longHUDActive, setLongHUDActive] = useState(1);
|
const [HUDActive, setHUDActive] = useState(1);
|
||||||
|
|
||||||
const { longHUDPositionX } = useSpring({
|
const { bigHUDPositionX } = useSpring({
|
||||||
longHUDPositionX: longHUDActive,
|
bigHUDPositionX: HUDActive,
|
||||||
config: { duration: 500 },
|
config: { duration: 500 },
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const { longHUDPositionX } = useSpring({
|
||||||
|
longHUDPositionX: HUDActive,
|
||||||
|
config: { duration: 500 },
|
||||||
|
});
|
||||||
|
|
||||||
|
const { boringHUDPositionX } = useSpring({
|
||||||
|
boringHUDPositionX: HUDActive,
|
||||||
|
config: { duration: 500 },
|
||||||
|
});
|
||||||
|
|
||||||
|
const bigHUDPosX = bigHUDPositionX.to(
|
||||||
|
[0, 1],
|
||||||
|
[
|
||||||
|
currentSpriteHUD["big"]["initial_position"][0],
|
||||||
|
currentSpriteHUD["big"]["position"][0],
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
const boringHUDPosX = boringHUDPositionX.to(
|
||||||
|
[0, 1],
|
||||||
|
[
|
||||||
|
currentSpriteHUD["boring"]["initial_position"][0],
|
||||||
|
currentSpriteHUD["boring"]["position"][0],
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
const longHUDPosX = longHUDPositionX.to(
|
const longHUDPosX = longHUDPositionX.to(
|
||||||
[0, 1],
|
[0, 1],
|
||||||
[
|
[
|
||||||
|
@ -181,8 +206,8 @@ const Game = () => {
|
||||||
);
|
);
|
||||||
|
|
||||||
const updateHUD = useCallback(() => {
|
const updateHUD = useCallback(() => {
|
||||||
setLongHUDActive((prev: number) => Number(!prev));
|
setHUDActive((prev: number) => Number(!prev));
|
||||||
}, [setLongHUDActive]);
|
}, [setHUDActive]);
|
||||||
|
|
||||||
const moveDispatcher = useCallback(
|
const moveDispatcher = useCallback(
|
||||||
(move: string, key: string) => {
|
(move: string, key: string) => {
|
||||||
|
@ -262,20 +287,27 @@ const Game = () => {
|
||||||
<Hub currentSprite={currentSprite} />
|
<Hub currentSprite={currentSprite} />
|
||||||
<Lights />
|
<Lights />
|
||||||
<OrthoCamera
|
<OrthoCamera
|
||||||
// bigHudPosition={bigHudPosition!}
|
|
||||||
// boringHudPosition={boringHudPosition!}
|
|
||||||
longHUDPosX={longHUDPosX}
|
longHUDPosX={longHUDPosX}
|
||||||
longHudPosition={[
|
bigHUDPosX={bigHUDPosX}
|
||||||
currentSpriteHUD!["long"]["position"][0],
|
boringHUDPosX={boringHUDPosX}
|
||||||
|
longHUDPosYZ={[
|
||||||
currentSpriteHUD!["long"]["position"][1],
|
currentSpriteHUD!["long"]["position"][1],
|
||||||
currentSpriteHUD!["long"]["position"][2],
|
currentSpriteHUD!["long"]["position"][2],
|
||||||
]}
|
]}
|
||||||
longHudType={currentSpriteHUD!["long"]["type"]}
|
boringHUDPosYZ={[
|
||||||
boringHudType={currentSpriteHUD!["boring"]["type"]}
|
currentSpriteHUD!["boring"]["position"][1],
|
||||||
bigHudType={currentSpriteHUD!["big"]["type"]}
|
currentSpriteHUD!["boring"]["position"][2],
|
||||||
longHudScale={currentSpriteHUD!["long"]["scale"]}
|
]}
|
||||||
boringHudScale={currentSpriteHUD!["boring"]["scale"]}
|
bigHUDPosYZ={[
|
||||||
bigHudScale={currentSpriteHUD!["big"]["scale"]}
|
currentSpriteHUD!["big"]["position"][1],
|
||||||
|
currentSpriteHUD!["big"]["position"][2],
|
||||||
|
]}
|
||||||
|
longHUDType={currentSpriteHUD!["long"]["type"]}
|
||||||
|
boringHUDType={currentSpriteHUD!["boring"]["type"]}
|
||||||
|
bigHUDType={currentSpriteHUD!["big"]["type"]}
|
||||||
|
longHUDScale={currentSpriteHUD!["long"]["scale"]}
|
||||||
|
boringHUDScale={currentSpriteHUD!["boring"]["scale"]}
|
||||||
|
bigHUDScale={currentSpriteHUD!["big"]["scale"]}
|
||||||
id={currentSpriteHUD!["id"]}
|
id={currentSpriteHUD!["id"]}
|
||||||
/>
|
/>
|
||||||
</Suspense>
|
</Suspense>
|
||||||
|
|
|
@ -2,25 +2,32 @@ import React from "react";
|
||||||
import { useLoader } from "react-three-fiber";
|
import { useLoader } from "react-three-fiber";
|
||||||
import * as THREE from "three";
|
import * as THREE from "three";
|
||||||
import bigHud from "../static/sprites/big_hud.png";
|
import bigHud from "../static/sprites/big_hud.png";
|
||||||
|
import bigHudMirrored from "../static/sprites/big_hud_mirrored.png";
|
||||||
import longHud from "../static/sprites/long_hud.png";
|
import longHud from "../static/sprites/long_hud.png";
|
||||||
|
import longHudMirrored from "../static/sprites/long_hud_mirrored.png";
|
||||||
import boringHud from "../static/sprites/long_hud_boring.png";
|
import boringHud from "../static/sprites/long_hud_boring.png";
|
||||||
|
import boringHudMirrored from "../static/sprites/long_hud_boring_mirrored.png";
|
||||||
import { PositionAndScaleProps } from "./Hub";
|
import { PositionAndScaleProps } from "./Hub";
|
||||||
import { a, Interpolation } from "@react-spring/three";
|
import { a, Interpolation } from "@react-spring/three";
|
||||||
|
|
||||||
export type HUDElementProps = {
|
export type HUDElementProps = {
|
||||||
longHudType: string;
|
longHUDType: string;
|
||||||
boringHudType: string;
|
boringHUDType: string;
|
||||||
bigHudType: string;
|
bigHUDType: string;
|
||||||
|
|
||||||
longHudPosition: PositionAndScaleProps;
|
longHUDPosYZ: [number, number];
|
||||||
longHUDPosX: Interpolation<number, any>;
|
longHUDPosX: Interpolation<number, any>;
|
||||||
longHudScale: PositionAndScaleProps;
|
longHUDScale: PositionAndScaleProps;
|
||||||
|
|
||||||
// boringHudPosition: PositionAndScaleProps;
|
// boringHudPosition: PositionAndScaleProps;
|
||||||
boringHudScale: PositionAndScaleProps;
|
boringHUDPosX: Interpolation<number, any>;
|
||||||
|
boringHUDPosYZ: [number, number];
|
||||||
|
boringHUDScale: PositionAndScaleProps;
|
||||||
|
|
||||||
// bigHudPosition: PositionAndScaleProps;
|
// bigHudPosition: PositionAndScaleProps;
|
||||||
bigHudScale: PositionAndScaleProps;
|
bigHUDPosX: Interpolation<number, any>;
|
||||||
|
bigHUDPosYZ: [number, number];
|
||||||
|
bigHUDScale: PositionAndScaleProps;
|
||||||
};
|
};
|
||||||
|
|
||||||
const HUDElement = (props: HUDElementProps) => {
|
const HUDElement = (props: HUDElementProps) => {
|
||||||
|
@ -38,30 +45,41 @@ const HUDElement = (props: HUDElementProps) => {
|
||||||
case "big":
|
case "big":
|
||||||
return bigHud;
|
return bigHud;
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
case "mirrored":
|
||||||
|
switch (hudElement) {
|
||||||
|
case "big":
|
||||||
|
return bigHudMirrored;
|
||||||
|
case "long":
|
||||||
|
return longHudMirrored;
|
||||||
|
case "boring":
|
||||||
|
return boringHudMirrored;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const longHudTexture: any = useLoader(
|
const longHudTexture: any = useLoader(
|
||||||
THREE.TextureLoader,
|
THREE.TextureLoader,
|
||||||
spriteTypeToSprite(props.longHudType, "long")!
|
spriteTypeToSprite(props.longHUDType, "long")!
|
||||||
);
|
);
|
||||||
|
|
||||||
const longHudBoringTexture: any = useLoader(
|
const longHudBoringTexture: any = useLoader(
|
||||||
THREE.TextureLoader,
|
THREE.TextureLoader,
|
||||||
spriteTypeToSprite(props.boringHudType, "boring")!
|
spriteTypeToSprite(props.boringHUDType, "boring")!
|
||||||
);
|
);
|
||||||
|
|
||||||
const bigHudTexture: any = useLoader(
|
const bigHudTexture: any = useLoader(
|
||||||
THREE.TextureLoader,
|
THREE.TextureLoader,
|
||||||
spriteTypeToSprite(props.bigHudType, "big")!
|
spriteTypeToSprite(props.bigHUDType, "big")!
|
||||||
);
|
);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<>
|
<>
|
||||||
<a.sprite
|
<a.sprite
|
||||||
position={props.longHudPosition}
|
position-y={props.longHUDPosYZ[0]}
|
||||||
|
position-z={props.longHUDPosYZ[1]}
|
||||||
position-x={props.longHUDPosX}
|
position-x={props.longHUDPosX}
|
||||||
scale={props.longHudScale}
|
scale={props.longHUDScale}
|
||||||
>
|
>
|
||||||
<spriteMaterial
|
<spriteMaterial
|
||||||
attach="material"
|
attach="material"
|
||||||
|
@ -69,20 +87,30 @@ const HUDElement = (props: HUDElementProps) => {
|
||||||
transparent={true}
|
transparent={true}
|
||||||
/>
|
/>
|
||||||
</a.sprite>
|
</a.sprite>
|
||||||
{/* <sprite position={props.boringHudPosition} scale={props.boringHudScale}>
|
<a.sprite
|
||||||
|
position-x={props.boringHUDPosX}
|
||||||
|
position-y={props.boringHUDPosYZ[0]}
|
||||||
|
position-z={props.boringHUDPosYZ[1]}
|
||||||
|
scale={props.boringHUDScale}
|
||||||
|
>
|
||||||
<spriteMaterial
|
<spriteMaterial
|
||||||
attach="material"
|
attach="material"
|
||||||
map={longHudBoringTexture}
|
map={longHudBoringTexture}
|
||||||
transparent={true}
|
transparent={true}
|
||||||
/>
|
/>
|
||||||
</sprite>
|
</a.sprite>
|
||||||
<sprite position={props.bigHudPosition} scale={props.bigHudScale}>
|
<a.sprite
|
||||||
|
position-x={props.bigHUDPosX}
|
||||||
|
position-y={props.bigHUDPosYZ[0]}
|
||||||
|
position-z={props.bigHUDPosYZ[1]}
|
||||||
|
scale={props.bigHUDScale}
|
||||||
|
>
|
||||||
<spriteMaterial
|
<spriteMaterial
|
||||||
attach="material"
|
attach="material"
|
||||||
map={bigHudTexture}
|
map={bigHudTexture}
|
||||||
transparent={true}
|
transparent={true}
|
||||||
/>
|
/>
|
||||||
</sprite> */}
|
</a.sprite>
|
||||||
</>
|
</>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
|
@ -13,7 +13,7 @@ const Hub = (props: any) => {
|
||||||
<Suspense fallback={<>loading...</>}>
|
<Suspense fallback={<>loading...</>}>
|
||||||
<PurpleRing />
|
<PurpleRing />
|
||||||
<GrayRing />
|
<GrayRing />
|
||||||
{Object.values(level_sprites.level04).map((sprite) => {
|
{Object.values(level_sprites).map((sprite) => {
|
||||||
return (
|
return (
|
||||||
<LevelSprite
|
<LevelSprite
|
||||||
position={sprite.position as PositionAndScaleProps}
|
position={sprite.position as PositionAndScaleProps}
|
||||||
|
|
|
@ -48,9 +48,9 @@ const LevelSprite = (props: LevelSpriteConstructorProps) => {
|
||||||
() => ({
|
() => ({
|
||||||
tex1: { type: "t", value: nonActiveTexture },
|
tex1: { type: "t", value: nonActiveTexture },
|
||||||
tex2: { type: "t", value: activeTexture },
|
tex2: { type: "t", value: activeTexture },
|
||||||
timeMSeconds: { value: Date.now() },
|
timeMSeconds: { value: (Date.now() % (Math.PI * 2000)) / 1000.0 },
|
||||||
}),
|
}),
|
||||||
[]
|
[nonActiveTexture, activeTexture]
|
||||||
);
|
);
|
||||||
|
|
||||||
const vertexShader = `
|
const vertexShader = `
|
||||||
|
|
|
@ -29,16 +29,18 @@ const OrthoCamera = (props: OrthoCameraProps) => {
|
||||||
position={[0, 0, 10]}
|
position={[0, 0, 10]}
|
||||||
>
|
>
|
||||||
<HUDElement
|
<HUDElement
|
||||||
longHudType={props.longHudType}
|
longHUDType={props.longHUDType}
|
||||||
boringHudType={props.boringHudType}
|
boringHUDType={props.boringHUDType}
|
||||||
bigHudType={props.bigHudType}
|
bigHUDType={props.bigHUDType}
|
||||||
longHudPosition={props.longHudPosition}
|
longHUDPosYZ={props.longHUDPosYZ}
|
||||||
longHUDPosX={props.longHUDPosX}
|
longHUDPosX={props.longHUDPosX}
|
||||||
longHudScale={props.longHudScale}
|
longHUDScale={props.longHUDScale}
|
||||||
// boringHudPosition={props.boringHudPosition}
|
boringHUDPosYZ={props.boringHUDPosYZ}
|
||||||
boringHudScale={props.boringHudScale}
|
boringHUDPosX={props.boringHUDPosX}
|
||||||
// bigHudPosition={props.bigHudPosition}
|
boringHUDScale={props.boringHUDScale}
|
||||||
bigHudScale={props.bigHudScale}
|
bigHUDPosYZ={props.bigHUDPosYZ}
|
||||||
|
bigHUDPosX={props.bigHUDPosX}
|
||||||
|
bigHUDScale={props.bigHUDScale}
|
||||||
key={props.id}
|
key={props.id}
|
||||||
/>
|
/>
|
||||||
</OrthographicCamera>
|
</OrthographicCamera>
|
||||||
|
|
|
@ -3,11 +3,17 @@ import moveUpSpriteSheet from "../static/sprites/jump_up.png";
|
||||||
import standingSpriteSheet from "../static/sprites/standing.png";
|
import standingSpriteSheet from "../static/sprites/standing.png";
|
||||||
import moveLeftSpriteSheet from "../static/sprites/move_left.png";
|
import moveLeftSpriteSheet from "../static/sprites/move_left.png";
|
||||||
import moveRightSpriteSheet from "../static/sprites/move_right.png";
|
import moveRightSpriteSheet from "../static/sprites/move_right.png";
|
||||||
|
import bigHudSpriteSheet from "../static/sprites/big_hud.png";
|
||||||
|
import bigHudMirroredSpriteSheet from "../static/sprites/big_hud_mirrored.png";
|
||||||
|
import longHudSpriteSheet from "../static/sprites/long_hud.png";
|
||||||
|
import longHudMirroredSpriteSheet from "../static/sprites/long_hud_mirrored.png";
|
||||||
|
import boringHudSpriteSheet from "../static/sprites/long_hud_boring.png";
|
||||||
|
import boringHudMirroredSpriteSheet from "../static/sprites/long_hud_boring_mirrored.png";
|
||||||
import * as THREE from "three";
|
import * as THREE from "three";
|
||||||
import { useLoader, useThree } from "react-three-fiber";
|
import { useLoader, useThree } from "react-three-fiber";
|
||||||
import { useLayoutEffect } from "react";
|
import { useLayoutEffect } from "react";
|
||||||
|
|
||||||
// this function just preloads lain's spritesheets cuz they're big and lazy loading them
|
// this function just preloads lain's spritesheets and other assets cuz they're big and lazy loading them
|
||||||
// used to make the suspense run for a couple milliseconds, resulting in flickering
|
// used to make the suspense run for a couple milliseconds, resulting in flickering
|
||||||
const Preloader = () => {
|
const Preloader = () => {
|
||||||
const moveDown = useLoader(THREE.TextureLoader, moveDownSpriteSheet);
|
const moveDown = useLoader(THREE.TextureLoader, moveDownSpriteSheet);
|
||||||
|
@ -15,6 +21,22 @@ const Preloader = () => {
|
||||||
const moveLeft = useLoader(THREE.TextureLoader, moveLeftSpriteSheet);
|
const moveLeft = useLoader(THREE.TextureLoader, moveLeftSpriteSheet);
|
||||||
const moveRight = useLoader(THREE.TextureLoader, moveRightSpriteSheet);
|
const moveRight = useLoader(THREE.TextureLoader, moveRightSpriteSheet);
|
||||||
const stand = useLoader(THREE.TextureLoader, standingSpriteSheet);
|
const stand = useLoader(THREE.TextureLoader, standingSpriteSheet);
|
||||||
|
const bigHud = useLoader(THREE.TextureLoader, bigHudSpriteSheet);
|
||||||
|
const bigHudMirrored = useLoader(
|
||||||
|
THREE.TextureLoader,
|
||||||
|
bigHudMirroredSpriteSheet
|
||||||
|
);
|
||||||
|
const longHud = useLoader(THREE.TextureLoader, longHudSpriteSheet);
|
||||||
|
const longHudMirrored = useLoader(
|
||||||
|
THREE.TextureLoader,
|
||||||
|
longHudMirroredSpriteSheet
|
||||||
|
);
|
||||||
|
const boringHud = useLoader(THREE.TextureLoader, boringHudSpriteSheet);
|
||||||
|
const boringHudMirrored = useLoader(
|
||||||
|
THREE.TextureLoader,
|
||||||
|
boringHudMirroredSpriteSheet
|
||||||
|
);
|
||||||
|
|
||||||
const { gl } = useThree();
|
const { gl } = useThree();
|
||||||
useLayoutEffect(() => {
|
useLayoutEffect(() => {
|
||||||
gl.initTexture(moveDown);
|
gl.initTexture(moveDown);
|
||||||
|
@ -22,7 +44,26 @@ const Preloader = () => {
|
||||||
gl.initTexture(moveLeft);
|
gl.initTexture(moveLeft);
|
||||||
gl.initTexture(moveRight);
|
gl.initTexture(moveRight);
|
||||||
gl.initTexture(stand);
|
gl.initTexture(stand);
|
||||||
}, [moveDown, moveUp, moveLeft, moveRight, stand, gl]);
|
gl.initTexture(longHud);
|
||||||
|
gl.initTexture(bigHud);
|
||||||
|
gl.initTexture(bigHudMirrored);
|
||||||
|
gl.initTexture(longHudMirrored);
|
||||||
|
gl.initTexture(boringHud);
|
||||||
|
gl.initTexture(boringHudMirrored);
|
||||||
|
}, [
|
||||||
|
moveDown,
|
||||||
|
moveUp,
|
||||||
|
moveLeft,
|
||||||
|
moveRight,
|
||||||
|
stand,
|
||||||
|
gl,
|
||||||
|
bigHud,
|
||||||
|
bigHudMirrored,
|
||||||
|
boringHud,
|
||||||
|
boringHudMirrored,
|
||||||
|
longHud,
|
||||||
|
longHudMirrored,
|
||||||
|
]);
|
||||||
return null;
|
return null;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -29,7 +29,7 @@ const PurpleRing = (props: JSX.IntrinsicElements["group"]) => {
|
||||||
|
|
||||||
useFrame(() => {
|
useFrame(() => {
|
||||||
setPurpleRingRotationY(() => ({
|
setPurpleRingRotationY(() => ({
|
||||||
purpleRingRotationY: purpleRingRotationY.get() + 0.04,
|
purpleRingRotationY: purpleRingRotationY.get() + 0.15,
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -1,20 +1,26 @@
|
||||||
{
|
{
|
||||||
"043": {
|
"0422": {
|
||||||
"up": "+",
|
"up": "+",
|
||||||
"down": "042",
|
"down": "0414",
|
||||||
"left": "+",
|
"left": "+",
|
||||||
"right": ""
|
"right": ""
|
||||||
},
|
},
|
||||||
"042": {
|
"0414": {
|
||||||
"up": "043",
|
"up": "0422",
|
||||||
"down": "",
|
"down": "",
|
||||||
"left": "",
|
"left": "",
|
||||||
|
"right": "0413"
|
||||||
|
},
|
||||||
|
"0413": {
|
||||||
|
"up": "0422",
|
||||||
|
"down": "0405",
|
||||||
|
"left": "0414",
|
||||||
"right": "041"
|
"right": "041"
|
||||||
},
|
},
|
||||||
"041": {
|
"0405": {
|
||||||
"up": "043",
|
"up": "0413",
|
||||||
"down": "",
|
"down": "",
|
||||||
"left": "042",
|
"left": "0414",
|
||||||
"right": "041"
|
"right": "041"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"043": {
|
"0422": {
|
||||||
"id": "043hud",
|
"id": "0422hud",
|
||||||
"long": {
|
"long": {
|
||||||
"position": [-0.45, 0.15, -8.6],
|
"position": [-0.45, 0.15, -8.6],
|
||||||
"scale": [1, 0.03, 1],
|
"scale": [1, 0.03, 1],
|
||||||
|
@ -10,31 +10,77 @@
|
||||||
"boring": {
|
"boring": {
|
||||||
"position": [0.48, 0.174, -8.6],
|
"position": [0.48, 0.174, -8.6],
|
||||||
"scale": [1, 0.03, 1],
|
"scale": [1, 0.03, 1],
|
||||||
"type": "normal"
|
"type": "normal",
|
||||||
|
"initial_position": [1.48, 0.174, -8.6]
|
||||||
},
|
},
|
||||||
"big": {
|
"big": {
|
||||||
"position": [0.36, 0.13, -8.6],
|
"position": [0.36, 0.13, -8.6],
|
||||||
"scale": [0.5, 0.06, 1],
|
"scale": [0.5, 0.06, 1],
|
||||||
"type": "normal"
|
"type": "normal",
|
||||||
|
"initial_position": [1.36, 0.13, -8.6]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"042": {
|
"0414": {
|
||||||
"id": "042hud",
|
"id": "0414hud",
|
||||||
"long": {
|
"long": {
|
||||||
"position": [-0.45, -0.15, -8.6],
|
"position": [-0.45, -0.09, -8.6],
|
||||||
"scale": [1, 0.03, 1],
|
"scale": [1, 0.03, 1],
|
||||||
"type": "normal",
|
"type": "normal",
|
||||||
"initial_position": [-1.45, -0.15, -8.6]
|
"initial_position": [-1.45, -0.09, -8.6]
|
||||||
},
|
},
|
||||||
"boring": {
|
"boring": {
|
||||||
"position": [0.48, 0.174, -8.6],
|
"position": [0.5, -0.07, -8.6],
|
||||||
"scale": [1, 0.03, 1],
|
"scale": [1, 0.03, 1],
|
||||||
"type": "normal"
|
"type": "normal",
|
||||||
|
"initial_position": [1.48, -0.07, -8.6]
|
||||||
},
|
},
|
||||||
"big": {
|
"big": {
|
||||||
"position": [0.36, 0.13, -8.6],
|
"position": [0.35, -0.12, -8.6],
|
||||||
"scale": [0.5, 0.06, 1],
|
"scale": [0.5, 0.06, 1],
|
||||||
"type": "normal"
|
"type": "normal",
|
||||||
|
"initial_position": [1.36, -0.12, -8.6]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"0413": {
|
||||||
|
"id": "0413hud",
|
||||||
|
"long": {
|
||||||
|
"position": [0.85, -0.09, -8.6],
|
||||||
|
"scale": [1, 0.03, 1],
|
||||||
|
"type": "mirrored",
|
||||||
|
"initial_position": [1.45, -0.09, -8.6]
|
||||||
|
},
|
||||||
|
"boring": {
|
||||||
|
"position": [-0.11, -0.07, -8.6],
|
||||||
|
"scale": [1, 0.03, 1],
|
||||||
|
"type": "mirrored",
|
||||||
|
"initial_position": [-1.48, -0.07, -8.6]
|
||||||
|
},
|
||||||
|
"big": {
|
||||||
|
"position": [-0.35, -0.12, -8.6],
|
||||||
|
"scale": [0.5, 0.06, 1],
|
||||||
|
"type": "mirrored",
|
||||||
|
"initial_position": [-1.48, -0.12, -8.6]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"0405": {
|
||||||
|
"id": "0405hud",
|
||||||
|
"long": {
|
||||||
|
"position": [0.85, -0.32, -8.6],
|
||||||
|
"scale": [1, 0.03, 1],
|
||||||
|
"type": "mirrored",
|
||||||
|
"initial_position": [1.45, -0.3, -8.6]
|
||||||
|
},
|
||||||
|
"boring": {
|
||||||
|
"position": [-0.11, -0.30, -8.6],
|
||||||
|
"scale": [1, 0.03, 1],
|
||||||
|
"type": "mirrored",
|
||||||
|
"initial_position": [-1.48, -0.30, -8.6]
|
||||||
|
},
|
||||||
|
"big": {
|
||||||
|
"position": [-0.25, -0.28, -8.6],
|
||||||
|
"scale": [0.5, 0.06, 1],
|
||||||
|
"type": "mirrored",
|
||||||
|
"initial_position": [-1.48, -0.12, -8.6]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,32 +1,30 @@
|
||||||
{
|
{
|
||||||
"level04": {
|
"0": {
|
||||||
"0": {
|
"position": [0.4, -0.25, 1.3],
|
||||||
"position": [0.4, -0.25, 1.3],
|
"scale": [0.25, 0.15, 0.25],
|
||||||
"scale": [0.25, 0.15, 0.25],
|
"rotation": [0, 0.2, 0],
|
||||||
"rotation": [0, 0.2, 0],
|
"sprite": "movie",
|
||||||
"sprite": "movie",
|
"id": "0405"
|
||||||
"id": "040"
|
},
|
||||||
},
|
"1": {
|
||||||
"1": {
|
"position": [0.4, 0, 1.3],
|
||||||
"position": [0.4, 0, 1.3],
|
"scale": [0.25, 0.15, 0.25],
|
||||||
"scale": [0.25, 0.15, 0.25],
|
"rotation": [0, 0.09, 0],
|
||||||
"rotation": [0, 0.09, 0],
|
"sprite": "s",
|
||||||
"sprite": "s",
|
"id": "0413"
|
||||||
"id": "041"
|
},
|
||||||
},
|
"2": {
|
||||||
"2": {
|
"position": [-0.35, 0, 1.3],
|
||||||
"position": [-0.35, 0, 1.3],
|
"scale": [0.25, 0.15, 0.25],
|
||||||
"scale": [0.25, 0.15, 0.25],
|
"rotation": [0, -0.1, 0],
|
||||||
"rotation": [0, -0.1, 0],
|
"sprite": "copland",
|
||||||
"sprite": "copland",
|
"id": "0414"
|
||||||
"id": "042"
|
},
|
||||||
},
|
"3": {
|
||||||
"3": {
|
"position": [-0.35, 0.25, 1.3],
|
||||||
"position": [-0.35, 0.25, 1.3],
|
"scale": [0.25, 0.15, 0.25],
|
||||||
"scale": [0.25, 0.15, 0.25],
|
"rotation": [0, -0.1, 0],
|
||||||
"rotation": [0, -0.1, 0],
|
"sprite": "touko",
|
||||||
"sprite": "touko",
|
"id": "0422"
|
||||||
"id": "043"
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue