42 lines
1.2 KiB
JavaScript
42 lines
1.2 KiB
JavaScript
// Copyright (c) 2026 Dominic Masters
|
|
//
|
|
// This software is released under the MIT License.
|
|
// https://opensource.org/licenses/MIT
|
|
|
|
var scene = {};
|
|
|
|
// Pokemon DS-style camera: ~34 degrees elevation (atan(6/9)).
|
|
// CAM_HEIGHT / CAM_DIST ratio controls the tilt - keep it under 0.7 for
|
|
// the characteristically shallow DS angle.
|
|
const CAM_HEIGHT = 6;
|
|
const CAM_DIST = 9;
|
|
|
|
scene.init = async function() {
|
|
// Camera
|
|
scene.cam = Entity.create();
|
|
var camPos = scene.cam.add(Component.POSITION);
|
|
var cam = scene.cam.add(Component.CAMERA);
|
|
camPos.localPosition = new Vec3(3, 3, 3);
|
|
camPos.lookAt(new Vec3(0, 0, 0));
|
|
|
|
// Floor - large flat slab, no texture needed.
|
|
scene.floor = Entity.create();
|
|
var floorPos = scene.floor.add(Component.POSITION);
|
|
var floorR = scene.floor.add(Component.RENDERABLE);
|
|
floorR.type = Renderable.SHADER_MATERIAL;
|
|
floorR.color = Color.BLUE;
|
|
// floorPos.localScale = new Vec3(16, 0.2, 16);
|
|
// floorPos.localPosition = new Vec3(0, -0.1, 0);
|
|
|
|
await UIFullboxOver.transition(Color.BLACK, Color.TRANSPARENT, 1.0);
|
|
};
|
|
|
|
scene.update = function() {
|
|
};
|
|
|
|
scene.dispose = function() {
|
|
Entity.dispose(scene.floor);
|
|
Entity.dispose(scene.cam);
|
|
};
|
|
|
|
module.exports = scene; |