Skip to content

Commit 73038cc

Browse files
committed
Docs and better deps
1 parent c4282f0 commit 73038cc

File tree

1 file changed

+30
-22
lines changed

1 file changed

+30
-22
lines changed

packages/lib/src/components/Environment.tsx

Lines changed: 30 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { EnvLighting, Quat, Scene, Sky, SKYTYPE_DOME, Texture } from "playcanvas";
1+
import { EnvLighting, Quat, Scene, Sky, SKYTYPE_DOME, SKYTYPE_INFINITE, Texture } from "playcanvas";
22
import { useEffect, useRef } from "react";
33
import { useApp } from "../hooks/use-app.tsx";
44
import { createComponentDefinition, getStaticNullApplication, Schema, validatePropsWithDefaults, warnOnce } from "../utils/validation.ts";
@@ -66,10 +66,11 @@ function Environment(props: EnvironmentProps) {
6666
if (appHasEnvironment.current) return;
6767

6868
const skyBoxAsset = safeSceneProps.skybox as Asset;
69+
6970
const isCubeMap = Array.isArray(skyBoxAsset.resources) && skyBoxAsset.resources.length === 6;
7071
let skybox: Texture = skyBoxAsset.resource as Texture;
7172

72-
// If the skybox is a HDRI, generate a cube map
73+
// If the skybox is not a cube map, try to generate a cube map from it.
7374
if (!isCubeMap) {
7475
skybox = EnvLighting.generateSkyboxCubemap(skyBoxAsset.resource as Texture);
7576
}
@@ -121,7 +122,6 @@ function Environment(props: EnvironmentProps) {
121122
app.scene.sky.center.set(...safeSkyProps.center);
122123
}
123124

124-
console.log('safeSkyProps.type', safeSkyProps.type);
125125
app.scene.sky.type = safeSkyProps.type ?? SKYTYPE_DOME;
126126
app.scene.sky.depthWrite = safeSkyProps.depthWrite ?? true;
127127

@@ -132,34 +132,42 @@ function Environment(props: EnvironmentProps) {
132132
app.scene.skyboxHighlightMultiplier = safeSceneProps.skyboxHighlightMultiplier ?? 1;
133133

134134
return () => {
135-
// Reset the scene and sky to their default values
136-
// app.scene.exposure = 1;
137-
// app.scene.envAtlas = null;
138-
// app.scene.skybox = null;
139-
// app.scene.skyboxRotation = new Quat().setFromEulerAngles(0, 0, 0);
140-
// app.scene.sky.node.setLocalScale(100, 100, 100);
141-
// app.scene.sky.node.setLocalPosition(0, 0, 0);
142-
// app.scene.sky.center.set(0, 0.05, 0);
143-
// app.scene.sky.type = SKYTYPE_DOME;
144-
// app.scene.sky.depthWrite = true;
145-
// app.scene.skyboxMip = 0;
146-
// app.scene.skyboxLuminance = 1;
147-
// app.scene.skyboxIntensity = 1;
148-
// app.scene.skyboxHighlightMultiplier = 1;
135+
136+
/**
137+
* We have hardcoded the default values for the scene and sky in order to reset them
138+
*
139+
* This isn't perfect as any changes the the engine defaults will break this.
140+
* TODO: Find a better way to reset the scene and sky.
141+
*/
142+
143+
app.scene.exposure = 1;
144+
app.scene.skyboxRotation = new Quat().setFromEulerAngles(0, 0, 0);
145+
app.scene.sky.node.setLocalScale(1, 1, 1);
146+
app.scene.sky.node.setLocalPosition(0, 0, 0);
147+
app.scene.sky.center.set(0, 0.05, 0);
148+
app.scene.sky.type = SKYTYPE_INFINITE;
149+
app.scene.sky.depthWrite = false;
150+
app.scene.skyboxMip = 0;
151+
app.scene.skyboxLuminance = 0;
152+
app.scene.skyboxIntensity = 1;
153+
app.scene.skyboxHighlightMultiplier = 1;
149154
};
150155

151156
}, [
152157
appHasEnvironment.current,
153-
safeSkyProps.scale,
154-
safeSkyProps.center,
155158
safeSceneProps.exposure,
156-
safeSkyProps.rotation,
159+
safeSkyProps.type,
160+
safeSkyProps.depthWrite,
157161
safeSceneProps.skyboxMip,
158162
safeSceneProps.skyboxLuminance,
159163
safeSceneProps.skyboxIntensity,
160164
safeSceneProps.skyboxHighlightMultiplier,
161-
safeSkyProps.type,
162-
safeSkyProps.depthWrite,
165+
166+
// compute keys for scale, rotation, and center
167+
`scale-${safeSkyProps.scale?.join('-')}`,
168+
`rotation-${safeSkyProps.rotation?.join('-')}`,
169+
`center-${safeSkyProps.center?.join('-')}`,
170+
163171
]);
164172

165173
return null

0 commit comments

Comments
 (0)