@xrift/world-components 0.11.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import { type FC } from 'react';
|
|
2
|
+
declare module '@react-three/fiber' {
|
|
3
|
+
interface ThreeElements {
|
|
4
|
+
gradientCylinderMaterial: React.JSX.IntrinsicElements['shaderMaterial'];
|
|
5
|
+
}
|
|
6
|
+
}
|
|
2
7
|
export interface SpawnPointProps {
|
|
3
8
|
/** スポーン位置 [x, y, z] */
|
|
4
9
|
position?: [number, number, number];
|
|
@@ -15,7 +20,8 @@ export interface SpawnPointProps {
|
|
|
15
20
|
* <SpawnPoint position={[0, 0, 5]} yaw={180} />
|
|
16
21
|
*
|
|
17
22
|
* @note
|
|
18
|
-
* -
|
|
23
|
+
* - 開発時(import.meta.env.DEV === true)のみヘルパー表示が有効になります
|
|
24
|
+
* - 本番ビルドにはヘルパーのコードが含まれません
|
|
19
25
|
* - 1つのワールドに複数のSpawnPointがある場合、最後に設定されたものが有効になります
|
|
20
26
|
*/
|
|
21
27
|
export declare const SpawnPoint: FC<SpawnPointProps>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/SpawnPoint/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAa,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/SpawnPoint/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,EAAa,MAAM,OAAO,CAAA;AA8B1C,OAAO,QAAQ,oBAAoB,CAAC;IAClC,UAAU,aAAa;QACrB,wBAAwB,EAAE,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAA;KACxE;CACF;AAED,MAAM,WAAW,eAAe;IAC9B,uBAAuB;IACvB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IACnC,0BAA0B;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,UAAU,EAAE,EAAE,CAAC,eAAe,CA4C1C,CAAA"}
|
|
@@ -1,5 +1,29 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
1
2
|
import { useEffect } from 'react';
|
|
3
|
+
import { shaderMaterial } from '@react-three/drei';
|
|
4
|
+
import { extend } from '@react-three/fiber';
|
|
5
|
+
import { DoubleSide } from 'three';
|
|
2
6
|
import { useSpawnPointContext } from '../../contexts/SpawnPointContext';
|
|
7
|
+
const GradientCylinderMaterial = shaderMaterial({ color: [0, 1, 0.53], opacity: 0.5 },
|
|
8
|
+
// vertex shader
|
|
9
|
+
`
|
|
10
|
+
varying vec2 vUv;
|
|
11
|
+
void main() {
|
|
12
|
+
vUv = uv;
|
|
13
|
+
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
|
|
14
|
+
}
|
|
15
|
+
`,
|
|
16
|
+
// fragment shader
|
|
17
|
+
`
|
|
18
|
+
uniform vec3 color;
|
|
19
|
+
uniform float opacity;
|
|
20
|
+
varying vec2 vUv;
|
|
21
|
+
void main() {
|
|
22
|
+
float alpha = opacity * (1.0 - vUv.y);
|
|
23
|
+
gl_FragColor = vec4(color, alpha);
|
|
24
|
+
}
|
|
25
|
+
`);
|
|
26
|
+
extend({ GradientCylinderMaterial });
|
|
3
27
|
/**
|
|
4
28
|
* ワールド内のリスポーン地点を指定するコンポーネント
|
|
5
29
|
* ワールド作成者がこのコンポーネントを配置することで、
|
|
@@ -10,14 +34,21 @@ import { useSpawnPointContext } from '../../contexts/SpawnPointContext';
|
|
|
10
34
|
* <SpawnPoint position={[0, 0, 5]} yaw={180} />
|
|
11
35
|
*
|
|
12
36
|
* @note
|
|
13
|
-
* -
|
|
37
|
+
* - 開発時(import.meta.env.DEV === true)のみヘルパー表示が有効になります
|
|
38
|
+
* - 本番ビルドにはヘルパーのコードが含まれません
|
|
14
39
|
* - 1つのワールドに複数のSpawnPointがある場合、最後に設定されたものが有効になります
|
|
15
40
|
*/
|
|
16
41
|
export const SpawnPoint = ({ position = [0, 0, 0], yaw = 0, }) => {
|
|
17
42
|
const { setSpawnPoint } = useSpawnPointContext();
|
|
43
|
+
const yawRad = (yaw * Math.PI) / 180;
|
|
18
44
|
useEffect(() => {
|
|
19
45
|
setSpawnPoint({ position, yaw });
|
|
20
46
|
}, [position, yaw, setSpawnPoint]);
|
|
21
|
-
|
|
47
|
+
// Vite以外の環境では import.meta.env が存在しない可能性があるため安全にアクセス
|
|
48
|
+
const isDev = typeof import.meta !== 'undefined' && import.meta.env?.DEV;
|
|
49
|
+
if (!isDev) {
|
|
50
|
+
return null;
|
|
51
|
+
}
|
|
52
|
+
return (_jsxs("group", { position: position, children: [_jsxs("mesh", { position: [0, 0.375, 0], children: [_jsx("cylinderGeometry", { args: [0.5, 0.5, 0.75, 32, 1, true] }), _jsx("gradientCylinderMaterial", { transparent: true, side: DoubleSide, depthWrite: false })] }), _jsxs("group", { rotation: [0, -yawRad, 0], children: [_jsxs("mesh", { position: [0, 0.3, -0.1], rotation: [Math.PI / 2, 0, 0], children: [_jsx("cylinderGeometry", { args: [0.03, 0.03, 0.3, 8] }), _jsx("meshBasicMaterial", { color: "#00ff88" })] }), _jsxs("mesh", { position: [0, 0.3, 0.12], rotation: [Math.PI / 2, 0, 0], children: [_jsx("coneGeometry", { args: [0.08, 0.15, 8] }), _jsx("meshBasicMaterial", { color: "#00ff88" })] })] })] }));
|
|
22
53
|
};
|
|
23
54
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/SpawnPoint/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAW,SAAS,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/SpawnPoint/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAW,SAAS,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAA;AAClC,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAA;AAEvE,MAAM,wBAAwB,GAAG,cAAc,CAC7C,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE;AACrC,gBAAgB;AAChB;;;;;;GAMC;AACD,kBAAkB;AAClB;;;;;;;;GAQC,CACF,CAAA;AAED,MAAM,CAAC,EAAE,wBAAwB,EAAE,CAAC,CAAA;AAepC;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,UAAU,GAAwB,CAAC,EAC9C,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACpB,GAAG,GAAG,CAAC,GACR,EAAE,EAAE;IACH,MAAM,EAAE,aAAa,EAAE,GAAG,oBAAoB,EAAE,CAAA;IAChD,MAAM,MAAM,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG,CAAA;IAEpC,SAAS,CAAC,GAAG,EAAE;QACb,aAAa,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAA;IAClC,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,aAAa,CAAC,CAAC,CAAA;IAElC,oDAAoD;IACpD,MAAM,KAAK,GAAG,OAAO,MAAM,CAAC,IAAI,KAAK,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAA;IACxE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,CACL,iBAAO,QAAQ,EAAE,QAAQ,aAEvB,gBAAM,QAAQ,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,aAC3B,2BAAkB,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,CAAC,GAAI,EACzD,mCACE,WAAW,QACX,IAAI,EAAE,UAAU,EAChB,UAAU,EAAE,KAAK,GACjB,IACG,EAGP,iBAAO,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,aAE9B,gBAAM,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,aAC3D,2BAAkB,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,GAAI,EAChD,4BAAmB,KAAK,EAAC,SAAS,GAAG,IAChC,EAEP,gBAAM,QAAQ,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,aAC3D,uBAAc,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAI,EACvC,4BAAmB,KAAK,EAAC,SAAS,GAAG,IAChC,IACD,IACF,CACT,CAAA;AACH,CAAC,CAAA"}
|