mirror of
https://github.com/RandomityGuy/MBHaxe.git
synced 2026-01-17 04:32:10 +00:00
mbu marbles, fix cubemap rendering, fix js
This commit is contained in:
parent
1d1513026b
commit
0fc64d9b70
8 changed files with 176 additions and 63 deletions
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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");
|
||||
|
|
|
|||
|
|
@ -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");
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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());
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue