mbu marbles, fix cubemap rendering, fix js

This commit is contained in:
RandomityGuy 2022-12-09 20:38:35 +05:30
parent 1d1513026b
commit 0fc64d9b70
8 changed files with 176 additions and 63 deletions

View file

@ -177,8 +177,10 @@ class DifBuilder {
var worker = new ResourceLoaderWorker(() -> {
var diffuseTex = ResourceLoader.getTexture('data/interiors_mbu/${baseTexture}').resource;
diffuseTex.wrap = Repeat;
diffuseTex.mipMap = Nearest;
var normalTex = ResourceLoader.getTexture('data/shaders/tex/${normalTexture}').resource;
normalTex.wrap = Repeat;
normalTex.mipMap = Nearest;
var shader = new PhongMaterial(diffuseTex, normalTex, shininess, specularColor, MarbleGame.instance.world.ambient,
MarbleGame.instance.world.dirLight, MarbleGame.instance.world.dirLightDir, uvScaleFactor);
onFinish(shader);
@ -192,10 +194,13 @@ class DifBuilder {
var worker = new ResourceLoaderWorker(() -> {
var diffuseTex = ResourceLoader.getTexture('data/interiors_mbu/${baseTexture}').resource;
diffuseTex.wrap = Repeat;
diffuseTex.mipMap = Nearest;
var normalTex = ResourceLoader.getTexture('data/shaders/tex/tile_mbu.normal.png').resource;
normalTex.wrap = Repeat;
normalTex.mipMap = Nearest;
var noiseTex = ResourceLoader.getTexture('data/shaders/tex/noise${noiseSuffix}.jpg').resource;
noiseTex.wrap = Repeat;
noiseTex.mipMap = Nearest;
var shader = new NoiseTileMaterial(diffuseTex, normalTex, noiseTex, shininess, specular, MarbleGame.instance.world.ambient,
MarbleGame.instance.world.dirLight, MarbleGame.instance.world.dirLightDir, 1);
onFinish(shader);

View file

@ -15,6 +15,7 @@ import h3d.scene.Scene;
import h3d.scene.Object;
import h3d.scene.Mesh;
import h3d.scene.MeshBatch;
import src.MarbleGame;
typedef MeshBatchInfo = {
var instances:Array<MeshInstance>;
@ -38,7 +39,12 @@ class InstanceManager {
this.scene = scene;
}
public function update(dt:Float) {
public function render() {
var renderFrustums = [scene.camera.frustum];
// This sucks holy shit
if (MarbleGame.instance.world.marble != null && MarbleGame.instance.world.marble.cubemapRenderer != null)
renderFrustums = renderFrustums.concat(MarbleGame.instance.world.marble.cubemapRenderer.getCameraFrustums());
for (meshes in objects) {
for (minfo in meshes) {
var visibleinstances = [];
@ -47,8 +53,11 @@ class InstanceManager {
for (inst in minfo.instances) {
var objBounds = @:privateAccess cast(minfo.meshbatch.primitive, Instanced).baseBounds.clone();
objBounds.transform(inst.emptyObj.getAbsPos());
if (scene.camera.frustum.hasBounds(objBounds)) {
visibleinstances.push(inst);
for (frustum in renderFrustums) {
if (frustum.hasBounds(objBounds)) {
visibleinstances.push(inst);
break;
}
}
}
}

View file

@ -364,8 +364,12 @@ class MarbleWorld extends Scheduler {
"shapes/items/gem.dts", // Ew ew
"shapes/items/gemshine.png"
];
// Hacky
marblefiles.push(StringTools.replace(Settings.optionsSettings.marbleModel, "data/", ""));
marblefiles.push("shapes/balls/" + Settings.optionsSettings.marbleSkin + ".marble.png");
if (Settings.optionsSettings.marbleCategoryIndex == 0)
marblefiles.push("shapes/balls/" + Settings.optionsSettings.marbleSkin + ".marble.png");
else
marblefiles.push("shapes/balls/pack1/" + Settings.optionsSettings.marbleSkin + ".marble.png");
for (file in marblefiles) {
worker.loadFile(file);
}
@ -1178,7 +1182,7 @@ class MarbleWorld extends Scheduler {
marble.update(timeState, collisionWorld, this.pathedInteriors);
}
ProfilerUI.measure("updateInstances");
this.instanceManager.update(dt);
this.instanceManager.render();
ProfilerUI.measure("updateParticles");
this.particleManager.update(1000 * timeState.timeSinceLoad, dt);
ProfilerUI.measure("updatePlayGui");

View file

@ -202,7 +202,9 @@ class ResourceLoader {
static function preloadShapes(onFinish:Void->Void) {
var toloadfiles = [
StringTools.replace(Settings.optionsSettings.marbleModel, "data/", ""),
"shapes/balls/" + Settings.optionsSettings.marbleSkin + ".marble.png"
(Settings.optionsSettings.marbleCategoryIndex == 0)
? "shapes/balls/" + Settings.optionsSettings.marbleSkin + ".marble.png" : "shapes/balls/pack1/" + Settings.optionsSettings.marbleSkin +
".marble.png"
];
// var toloaddirs = [];
// var filestats = fileSystem.dir("shapes");

View file

@ -35,6 +35,7 @@ typedef OptionsSettings = {
var oobInsults:Bool;
var reflectiveMarble:Bool;
var marbleIndex:Int;
var marbleCategoryIndex:Int;
var marbleSkin:String;
var marbleModel:String;
}
@ -93,6 +94,7 @@ class Settings {
oobInsults: true,
reflectiveMarble: true,
marbleIndex: 0,
marbleCategoryIndex: 0,
marbleSkin: "base",
marbleModel: "data/shapes/balls/ball-superball.dts",
vsync: #if js true #end
@ -187,6 +189,7 @@ class Settings {
marbleIndex: optionsSettings.marbleIndex,
marbleSkin: optionsSettings.marbleSkin,
marbleModel: optionsSettings.marbleModel,
marbleCategoryIndex: optionsSettings.marbleCategoryIndex,
};
var scoreCount = 0;
var eggCount = 0;
@ -296,6 +299,9 @@ class Settings {
optionsSettings.marbleSkin = "base";
optionsSettings.marbleModel = "data/shapes/balls/ball-superball.dts";
}
if (optionsSettings.marbleCategoryIndex == null) {
optionsSettings.marbleCategoryIndex = 0;
}
#end
highscoreName = json.highscoreName;
} else {

View file

@ -331,7 +331,9 @@ class DtsFile {
matDetailScales = [];
matReflectionAmounts = [];
for (i in 0...numMaterials) {
matNames.push(br.readStr());
var mname = br.readStr();
mname = StringTools.replace(mname, '\x00', '');
matNames.push(mname);
}
for (i in 0...numMaterials) {
matFlags.push(br.readInt32());

View file

@ -22,49 +22,97 @@ class MarbleSelectGui extends GuiImage {
this.extent = new Vector(493, 361);
var marbleData = [
{name: "Staff's Original", dts: "data/shapes/balls/ball-superball.dts", skin: "base"},
{name: "3D Marble", dts: "data/shapes/balls/3dMarble.dts", skin: "base"},
{name: "Mid P", dts: "data/shapes/balls/midp.dts", skin: "base"},
{name: "Spade", dts: "data/shapes/balls/ball-superball.dts", skin: "skin4"},
{name: "GMD Logo", dts: "data/shapes/balls/ball-superball.dts", skin: "skin5"},
{name: "Textured Marble", dts: "data/shapes/balls/ball-superball.dts", skin: "skin6"},
{name: "Golden Marble", dts: "data/shapes/balls/ball-superball.dts", skin: "skin7"},
{name: "Rainbow Marble", dts: "data/shapes/balls/ball-superball.dts", skin: "skin8"},
{name: "Brown Swirls", dts: "data/shapes/balls/ball-superball.dts", skin: "skin9"},
{name: "Caution Stripes", dts: "data/shapes/balls/ball-superball.dts", skin: "skin10"},
{name: "Earth", dts: "data/shapes/balls/ball-superball.dts", skin: "skin11"},
{name: "Golf Ball", dts: "data/shapes/balls/ball-superball.dts", skin: "skin12"},
{name: "Jupiter", dts: "data/shapes/balls/ball-superball.dts", skin: "skin13"},
{name: "MB Gold Marble", dts: "data/shapes/balls/ball-superball.dts", skin: "skin14"},
{name: "MBP on the Marble!", dts: "data/shapes/balls/ball-superball.dts", skin: "skin15"},
{name: "Moshe", dts: "data/shapes/balls/ball-superball.dts", skin: "skin16"},
{name: "Strong Bad", dts: "data/shapes/balls/ball-superball.dts", skin: "skin17"},
{name: "Venus", dts: "data/shapes/balls/ball-superball.dts", skin: "skin18"},
{name: "Water", dts: "data/shapes/balls/ball-superball.dts", skin: "skin19"},
{name: "Evil Eye", dts: "data/shapes/balls/ball-superball.dts", skin: "skin20"},
{name: "Desert and Sky", dts: "data/shapes/balls/ball-superball.dts", skin: "skin21"},
{name: "Dirt Marble", dts: "data/shapes/balls/ball-superball.dts", skin: "skin22"},
{name: "Friction Textured Marble", dts: "data/shapes/balls/ball-superball.dts", skin: "skin23"},
{name: "Grass", dts: "data/shapes/balls/ball-superball.dts", skin: "skin24"},
{name: "Mars", dts: "data/shapes/balls/ball-superball.dts", skin: "skin25"},
{name: "Phil's Golf Ball", dts: "data/shapes/balls/ball-superball.dts", skin: "skin26"},
{name: "Molten", dts: "data/shapes/balls/ball-superball.dts", skin: "skin27"},
{name: "Lightning", dts: "data/shapes/balls/ball-superball.dts", skin: "skin28"},
{name: "Phil'sEmpire", dts: "data/shapes/balls/ball-superball.dts", skin: "skin29"},
{name: "Matan's Red Dragon", dts: "data/shapes/balls/ball-superball.dts", skin: "skin30"},
{name: "Metallic Marble", dts: "data/shapes/balls/ball-superball.dts", skin: "skin31"},
{name: "Sun", dts: "data/shapes/balls/ball-superball.dts", skin: "skin32"},
{name: "Underwater", dts: "data/shapes/balls/ball-superball.dts", skin: "skin33"},
{name: "GarageGames logo", dts: "data/shapes/balls/garageGames.dts", skin: "base"},
{name: "Big Marble 1", dts: "data/shapes/balls/bm1.dts", skin: "base"},
{name: "Big Marble 2", dts: "data/shapes/balls/bm2.dts", skin: "base"},
{name: "Big Marble 3", dts: "data/shapes/balls/bm3.dts", skin: "base"},
{name: "Small Marble 1", dts: "data/shapes/balls/sm1.dts", skin: "base"},
{name: "Small Marble 2", dts: "data/shapes/balls/sm2.dts", skin: "base"},
{name: "Small Marble 3", dts: "data/shapes/balls/sm3.dts", skin: "base"},
[
{name: "Staff's Original", dts: "data/shapes/balls/ball-superball.dts", skin: "base"},
{name: "3D Marble", dts: "data/shapes/balls/3dMarble.dts", skin: "base"},
{name: "Mid P", dts: "data/shapes/balls/midp.dts", skin: "base"},
{name: "Spade", dts: "data/shapes/balls/ball-superball.dts", skin: "skin4"},
{name: "GMD Logo", dts: "data/shapes/balls/ball-superball.dts", skin: "skin5"},
{name: "Textured Marble", dts: "data/shapes/balls/ball-superball.dts", skin: "skin6"},
{name: "Golden Marble", dts: "data/shapes/balls/ball-superball.dts", skin: "skin7"},
{name: "Rainbow Marble", dts: "data/shapes/balls/ball-superball.dts", skin: "skin8"},
{name: "Brown Swirls", dts: "data/shapes/balls/ball-superball.dts", skin: "skin9"},
{name: "Caution Stripes", dts: "data/shapes/balls/ball-superball.dts", skin: "skin10"},
{name: "Earth", dts: "data/shapes/balls/ball-superball.dts", skin: "skin11"},
{name: "Golf Ball", dts: "data/shapes/balls/ball-superball.dts", skin: "skin12"},
{name: "Jupiter", dts: "data/shapes/balls/ball-superball.dts", skin: "skin13"},
{name: "MB Gold Marble", dts: "data/shapes/balls/ball-superball.dts", skin: "skin14"},
{name: "MBP on the Marble!", dts: "data/shapes/balls/ball-superball.dts", skin: "skin15"},
{name: "Moshe", dts: "data/shapes/balls/ball-superball.dts", skin: "skin16"},
{name: "Strong Bad", dts: "data/shapes/balls/ball-superball.dts", skin: "skin17"},
{name: "Venus", dts: "data/shapes/balls/ball-superball.dts", skin: "skin18"},
{name: "Water", dts: "data/shapes/balls/ball-superball.dts", skin: "skin19"},
{name: "Evil Eye", dts: "data/shapes/balls/ball-superball.dts", skin: "skin20"},
{name: "Desert and Sky", dts: "data/shapes/balls/ball-superball.dts", skin: "skin21"},
{name: "Dirt Marble", dts: "data/shapes/balls/ball-superball.dts", skin: "skin22"},
{name: "Friction Textured Marble", dts: "data/shapes/balls/ball-superball.dts", skin: "skin23"},
{name: "Grass", dts: "data/shapes/balls/ball-superball.dts", skin: "skin24"},
{name: "Mars", dts: "data/shapes/balls/ball-superball.dts", skin: "skin25"},
{name: "Phil's Golf Ball", dts: "data/shapes/balls/ball-superball.dts", skin: "skin26"},
{name: "Molten", dts: "data/shapes/balls/ball-superball.dts", skin: "skin27"},
{name: "Lightning", dts: "data/shapes/balls/ball-superball.dts", skin: "skin28"},
{name: "Phil'sEmpire", dts: "data/shapes/balls/ball-superball.dts", skin: "skin29"},
{name: "Matan's Red Dragon", dts: "data/shapes/balls/ball-superball.dts", skin: "skin30"},
{name: "Metallic Marble", dts: "data/shapes/balls/ball-superball.dts", skin: "skin31"},
{name: "Sun", dts: "data/shapes/balls/ball-superball.dts", skin: "skin32"},
{name: "Underwater", dts: "data/shapes/balls/ball-superball.dts", skin: "skin33"},
{name: "GarageGames logo", dts: "data/shapes/balls/garageGames.dts", skin: "base"},
{name: "Big Marble 1", dts: "data/shapes/balls/bm1.dts", skin: "base"},
{name: "Big Marble 2", dts: "data/shapes/balls/bm2.dts", skin: "base"},
{name: "Big Marble 3", dts: "data/shapes/balls/bm3.dts", skin: "base"},
{name: "Small Marble 1", dts: "data/shapes/balls/sm1.dts", skin: "base"},
{name: "Small Marble 2", dts: "data/shapes/balls/sm2.dts", skin: "base"},
{name: "Small Marble 3", dts: "data/shapes/balls/sm3.dts", skin: "base"}
],
[
{name: "Deep Blue", dts: "data/shapes/balls/pack1/pack1marble.dts", skin: "uskin1"},
{name: "Blood Red", dts: "data/shapes/balls/pack1/pack1marble.dts", skin: "uskin2"},
{name: "Gang Green", dts: "data/shapes/balls/pack1/pack1marble.dts", skin: "uskin6"},
{name: "Pink Candy", dts: "data/shapes/balls/pack1/pack1marble.dts", skin: "uskin27"},
{name: "Chocolate", dts: "data/shapes/balls/pack1/pack1marble.dts", skin: "uskin5"},
{name: "Grape", dts: "data/shapes/balls/pack1/pack1marble.dts", skin: "uskin4"},
{name: "Lemon", dts: "data/shapes/balls/pack1/pack1marble.dts", skin: "uskin28"},
{name: "Lime Green", dts: "data/shapes/balls/pack1/pack1marble.dts", skin: "uskin8"},
{name: "Blueberry", dts: "data/shapes/balls/pack1/pack1marble.dts", skin: "uskin7"},
{name: "Tangerine", dts: "data/shapes/balls/pack1/pack1marble.dts", skin: "uskin3"},
{name: "8 Ball", dts: "data/shapes/balls/pack1/pack1marble.dts", skin: "uskin9"},
{name: "Ace of Hearts", dts: "data/shapes/balls/pack1/pack1marble.dts", skin: "uskin22"},
{name: "Football", dts: "data/shapes/balls/pack1/pack1marble.dts", skin: "uskin16"},
{name: "9 Ball", dts: "data/shapes/balls/pack1/pack1marble.dts", skin: "uskin29"},
{name: "Ace of Spades", dts: "data/shapes/balls/pack1/pack1marble.dts", skin: "uskin24"},
{name: "GarageGames", dts: "data/shapes/balls/pack1/pack1marble.dts", skin: "uskin10"},
{name: "Bob", dts: "data/shapes/balls/pack1/pack1marble.dts", skin: "uskin30"},
{name: "Skully", dts: "data/shapes/balls/pack1/pack1marble.dts", skin: "uskin18"},
{name: "Jack-o-Lantern", dts: "data/shapes/balls/pack1/pack1marble.dts", skin: "uskin34"},
{name: "Walled Up", dts: "data/shapes/balls/pack1/pack1marble.dts", skin: "uskin25"},
{name: "Sunny Side Up", dts: "data/shapes/balls/pack1/pack1marble.dts", skin: "uskin11"},
{name: "Lunar", dts: "data/shapes/balls/pack1/pack1marble.dts", skin: "uskin31"},
{name: "Battery", dts: "data/shapes/balls/pack1/pack1marble.dts", skin: "uskin14"},
{name: "Static", dts: "data/shapes/balls/pack1/pack1marble.dts", skin: "uskin32"},
{name: "Earth", dts: "data/shapes/balls/pack1/pack1marble.dts", skin: "uskin20"},
{name: "Red and X", dts: "data/shapes/balls/pack1/pack1marble.dts", skin: "uskin13"},
{name: "Orange Spiral", dts: "data/shapes/balls/pack1/pack1marble.dts", skin: "uskin12"},
{name: "Blue Spiral", dts: "data/shapes/balls/pack1/pack1marble.dts", skin: "uskin15"},
{name: "Sliced Marble", dts: "data/shapes/balls/pack1/pack1marble.dts", skin: "uskin21"},
{name: "Orange Checkers", dts: "data/shapes/balls/pack1/pack1marble.dts", skin: "uskin19"},
{name: "Torque", dts: "data/shapes/balls/pack1/pack1marble.dts", skin: "uskin33"},
{name: "Fred", dts: "data/shapes/balls/pack1/pack1marble.dts", skin: "uskin17"},
{name: "Pirate", dts: "data/shapes/balls/pack1/pack1marble.dts", skin: "uskin26"},
{name: "Shuriken", dts: "data/shapes/balls/pack1/pack1marble.dts", skin: "uskin23"},
{name: "Eyeball", dts: "data/shapes/balls/pack1/pack1marble.dts", skin: "uskin35"},
{name: "Woody", dts: "data/shapes/balls/pack1/pack1marble.dts", skin: "uskin36"},
{name: "Dat Nostalgia", dts: "data/shapes/balls/pack1/pack1marble.dts", skin: "uskin37"},
{name: "Graffiti", dts: "data/shapes/balls/pack1/pack1marble.dts", skin: "uskin38"},
{name: "Asteroid", dts: "data/shapes/balls/pack1/pack1marble.dts", skin: "uskin39"},
{name: "Disco Ball", dts: "data/shapes/balls/pack1/pack1marble.dts", skin: "uskin40"}
],
];
var categoryNames = ["Official Marbles", "MBUltra"];
var curSelection:Int = Settings.optionsSettings.marbleIndex;
var curCategorySelection:Int = Settings.optionsSettings.marbleCategoryIndex;
function loadButtonImages(path:String) {
var normal = ResourceLoader.getResource('${path}_n.png', ResourceLoader.getImage, this.imageResources).toTile();
@ -88,15 +136,16 @@ class MarbleSelectGui extends GuiImage {
selectBtn.extent = new Vector(95, 45);
selectBtn.pressedAction = (e) -> {
Settings.optionsSettings.marbleIndex = curSelection;
Settings.optionsSettings.marbleSkin = marbleData[curSelection].skin;
Settings.optionsSettings.marbleModel = marbleData[curSelection].dts;
Settings.optionsSettings.marbleCategoryIndex = curCategorySelection;
Settings.optionsSettings.marbleSkin = marbleData[curCategorySelection][curSelection].skin;
Settings.optionsSettings.marbleModel = marbleData[curCategorySelection][curSelection].dts;
Settings.save();
MarbleGame.canvas.popDialog(this);
}
this.addChild(selectBtn);
var marbleShow = buildObjectShow(marbleData[curSelection].dts, new Vector(171, 97), new Vector(150, 150), 2.6, 0,
["base.marble" => marbleData[curSelection].skin + ".marble"]);
var marbleShow = buildObjectShow(marbleData[curCategorySelection][curSelection].dts, new Vector(171, 97), new Vector(150, 150), 2.6, 0,
["base.marble" => marbleData[curCategorySelection][curSelection].skin + ".marble"]);
marbleShow.horizSizing = Center;
marbleShow.vertSizing = Bottom;
marbleShow.visible = true;
@ -109,7 +158,7 @@ class MarbleSelectGui extends GuiImage {
titleText.vertSizing = Bottom;
titleText.position = new Vector(140, 67);
titleText.extent = new Vector(213, 27);
titleText.text.text = '<p align="center">Official Marbles</p>';
titleText.text.text = '<p align="center">${categoryNames[curCategorySelection]}</p>';
this.addChild(titleText);
var marbleText = new GuiMLText(markerFelt24, null);
@ -119,7 +168,7 @@ class MarbleSelectGui extends GuiImage {
marbleText.vertSizing = Bottom;
marbleText.position = new Vector(86, 243);
marbleText.extent = new Vector(320, 22);
marbleText.text.text = '<p align="center">${marbleData[curSelection].name}</p>';
marbleText.text.text = '<p align="center">${marbleData[curCategorySelection][curSelection].name}</p>';
this.addChild(marbleText);
var changeMarbleText = new GuiImage(ResourceLoader.getResource("data/ui/play/change_marble_text.png", ResourceLoader.getImage, this.imageResources)
@ -129,14 +178,21 @@ class MarbleSelectGui extends GuiImage {
changeMarbleText.extent = new Vector(300, 39);
this.addChild(changeMarbleText);
function setMarbleSelection(idx:Int) {
if (idx < 0)
idx = marbleData.length + idx;
if (idx >= marbleData.length)
idx -= marbleData.length;
curSelection = idx;
var marble = marbleData[idx];
function setMarbleSelection(idx:Int, categoryIdx:Int) {
if (categoryIdx < 0)
categoryIdx = marbleData.length + categoryIdx;
if (categoryIdx >= marbleData.length)
categoryIdx -= marbleData.length;
if (idx < 0)
idx = marbleData[categoryIdx].length + idx;
if (idx >= marbleData[categoryIdx].length)
idx -= marbleData[categoryIdx].length;
curSelection = idx;
curCategorySelection = categoryIdx;
var marble = marbleData[categoryIdx][idx];
titleText.text.text = '<p align="center">${categoryNames[curCategorySelection]}</p>';
marbleText.text.text = '<p align="center">${marble.name}</p>';
var dtsObj = new DtsObject();
@ -182,7 +238,7 @@ class MarbleSelectGui extends GuiImage {
nextBtn.position = new Vector(296, 270);
nextBtn.extent = new Vector(75, 45);
nextBtn.pressedAction = (e) -> {
setMarbleSelection(curSelection + 1);
setMarbleSelection(curSelection + 1, curCategorySelection);
}
this.addChild(nextBtn);
@ -190,9 +246,26 @@ class MarbleSelectGui extends GuiImage {
prevBtn.position = new Vector(123, 270);
prevBtn.extent = new Vector(75, 45);
prevBtn.pressedAction = (e) -> {
setMarbleSelection(curSelection - 1);
setMarbleSelection(curSelection - 1, curCategorySelection);
}
setMarbleSelection(curSelection);
var nextCategoryBtn = new GuiButton(loadButtonImages("data/ui/marbleSelect/nextcat"));
nextCategoryBtn.position = new Vector(371, 270);
nextCategoryBtn.extent = new Vector(85, 45);
nextCategoryBtn.pressedAction = (e) -> {
setMarbleSelection(0, curCategorySelection + 1);
}
this.addChild(nextCategoryBtn);
var prevCategoryBtn = new GuiButton(loadButtonImages("data/ui/marbleSelect/prevcat"));
prevCategoryBtn.position = new Vector(37, 270);
prevCategoryBtn.extent = new Vector(85, 45);
prevCategoryBtn.pressedAction = (e) -> {
setMarbleSelection(0, curCategorySelection - 1);
}
this.addChild(prevCategoryBtn);
setMarbleSelection(curSelection, curCategorySelection);
this.addChild(prevBtn);
}

View file

@ -5,6 +5,7 @@ import h3d.Vector;
import h3d.scene.Scene;
import h3d.Engine;
import h3d.Camera;
import src.MarbleGame;
import h3d.mat.Texture;
class CubemapRenderer {
@ -20,6 +21,7 @@ class CubemapRenderer {
this.scene = scene;
this.sky = sky;
this.cubemap = new Texture(128, 128, [Cube, Dynamic, Target], h3d.mat.Data.TextureFormat.RGB8);
this.cubemap.depthBuffer = new h3d.mat.DepthBuffer(128, 128, h3d.mat.DepthBuffer.DepthFormat.Depth24);
this.camera = new Camera(90, 1, 1, 0.02, scene.camera.zFar);
this.position = new Vector();
this.nextFaceToRender = 0;
@ -54,4 +56,14 @@ class CubemapRenderer {
this.nextFaceToRender += renderedFaces;
this.nextFaceToRender %= 6;
}
public function getCameraFrustums() {
var frustums = [];
for (i in 0...6) {
this.camera.setCubeMap(i, position);
this.camera.update();
frustums.push(camera.frustum.clone());
}
return frustums;
}
}