mirror of
https://github.com/RandomityGuy/MBHaxe.git
synced 2026-04-28 05:31:37 +00:00
make it work on js again
This commit is contained in:
parent
52f20e875b
commit
739f9cc3bc
3 changed files with 193 additions and 163 deletions
314
src/Marble.hx
314
src/Marble.hx
|
|
@ -327,173 +327,183 @@ class Marble extends GameObject {
|
||||||
marbleDts.matNameOverride.set("base.marble", Settings.optionsSettings.marbleSkin + ".marble");
|
marbleDts.matNameOverride.set("base.marble", Settings.optionsSettings.marbleSkin + ".marble");
|
||||||
marbleDts.showSequences = false;
|
marbleDts.showSequences = false;
|
||||||
marbleDts.useInstancing = false;
|
marbleDts.useInstancing = false;
|
||||||
marbleDts.init(null, () -> {}); // SYNC
|
var dtsFile = ResourceLoader.loadDts(marbleDts.dtsPath).resource;
|
||||||
for (mat in marbleDts.materials) {
|
var marbleMats = marbleDts.getPreloadMaterials(dtsFile);
|
||||||
mat.castShadows = true;
|
var matWorker = new ResourceLoaderWorker(() -> {
|
||||||
mat.shadows = true;
|
marbleDts.init(null, () -> {}); // SYNC
|
||||||
mat.receiveShadows = false;
|
for (mat in marbleDts.materials) {
|
||||||
// mat.mainPass.culling = None;
|
mat.castShadows = true;
|
||||||
|
mat.shadows = true;
|
||||||
|
mat.receiveShadows = false;
|
||||||
|
// mat.mainPass.culling = None;
|
||||||
|
|
||||||
if (Settings.optionsSettings.reflectiveMarble) {
|
if (Settings.optionsSettings.reflectiveMarble) {
|
||||||
var csky = level != null ? level.sky : (@:privateAccess MarbleGame.instance.previewWorld.sky);
|
var csky = level != null ? level.sky : (@:privateAccess MarbleGame.instance.previewWorld.sky);
|
||||||
this.cubemapRenderer = new CubemapRenderer(MarbleGame.instance.scene, csky);
|
this.cubemapRenderer = new CubemapRenderer(MarbleGame.instance.scene, csky);
|
||||||
|
|
||||||
if (Settings.optionsSettings.marbleShader == null
|
if (Settings.optionsSettings.marbleShader == null
|
||||||
|| Settings.optionsSettings.marbleShader == "Default"
|
|| Settings.optionsSettings.marbleShader == "Default"
|
||||||
|| Settings.optionsSettings.marbleShader == ""
|
|| Settings.optionsSettings.marbleShader == ""
|
||||||
|| !isUltra) { // Use this shit everywhere except ultra
|
|| !isUltra) { // Use this shit everywhere except ultra
|
||||||
mat.mainPass.addShader(new MarbleReflection(this.cubemapRenderer.cubemap));
|
mat.mainPass.addShader(new MarbleReflection(this.cubemapRenderer.cubemap));
|
||||||
} else {
|
} else {
|
||||||
// Generate tangents for next shaders, only for Ultra
|
// Generate tangents for next shaders, only for Ultra
|
||||||
for (node in marbleDts.graphNodes) {
|
for (node in marbleDts.graphNodes) {
|
||||||
for (chmesh in node.getMeshes()) {
|
for (chmesh in node.getMeshes()) {
|
||||||
var chpoly = cast(chmesh.primitive, mesh.Polygon);
|
var chpoly = cast(chmesh.primitive, mesh.Polygon);
|
||||||
chpoly.addTangents();
|
chpoly.addTangents();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
mat.mainPass.removeShader(mat.textureShader);
|
mat.mainPass.removeShader(mat.textureShader);
|
||||||
|
|
||||||
if (Settings.optionsSettings.marbleShader == "ClassicGlassPureSphere") {
|
if (Settings.optionsSettings.marbleShader == "ClassicGlassPureSphere") {
|
||||||
var marbleNormal = ResourceLoader.getTexture("data/shapes/balls/marble01.normal.png").resource;
|
var marbleNormal = ResourceLoader.getTexture("data/shapes/balls/marble01.normal.png").resource;
|
||||||
var classicGlassShader = new ClassicGlassPureSphere(mat.texture, marbleNormal, this.cubemapRenderer.cubemap, 12,
|
var classicGlassShader = new ClassicGlassPureSphere(mat.texture, marbleNormal, this.cubemapRenderer.cubemap, 12,
|
||||||
new Vector(0.6, 0.6, 0.6, 0.6), 1);
|
new Vector(0.6, 0.6, 0.6, 0.6), 1);
|
||||||
mat.mainPass.addShader(classicGlassShader);
|
mat.mainPass.addShader(classicGlassShader);
|
||||||
}
|
|
||||||
|
|
||||||
if (Settings.optionsSettings.marbleShader == "ClassicMarb") {
|
|
||||||
var classicMarb = new ClassicMarb(mat.texture, this.cubemapRenderer.cubemap, 12, new Vector(0.6, 0.6, 0.6, 0.6), 1);
|
|
||||||
mat.mainPass.addShader(classicMarb);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Settings.optionsSettings.marbleShader == "ClassicMarb2") {
|
|
||||||
var classicMarb2 = new ClassicMarb2(mat.texture, this.cubemapRenderer.cubemap, 12, new Vector(0.6, 0.6, 0.6, 0.6), 1);
|
|
||||||
mat.mainPass.addShader(classicMarb2);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Settings.optionsSettings.marbleShader == "ClassicMarb3") {
|
|
||||||
var marbSpecColor = new Vector(0.6, 0.6, 0.6, 0.6);
|
|
||||||
var marbSpec = 12.0;
|
|
||||||
if (Settings.optionsSettings.marbleModel == "data/shapes/balls/marble16.dts") {
|
|
||||||
marbSpec = 6;
|
|
||||||
marbSpecColor.set(0.2, 0.2, 0.2, 0.2);
|
|
||||||
}
|
}
|
||||||
if (Settings.optionsSettings.marbleModel == "data/shapes/balls/marble31.dts") {
|
|
||||||
marbSpec = 24;
|
if (Settings.optionsSettings.marbleShader == "ClassicMarb") {
|
||||||
marbSpecColor.set(0.3, 0.3, 0.3, 0.3);
|
var classicMarb = new ClassicMarb(mat.texture, this.cubemapRenderer.cubemap, 12, new Vector(0.6, 0.6, 0.6, 0.6), 1);
|
||||||
|
mat.mainPass.addShader(classicMarb);
|
||||||
}
|
}
|
||||||
var classicMarb3 = new ClassicMarb3(mat.texture, this.cubemapRenderer.cubemap, marbSpec, marbSpecColor, 1);
|
|
||||||
mat.mainPass.addShader(classicMarb3);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Settings.optionsSettings.marbleShader == "ClassicMetal") {
|
if (Settings.optionsSettings.marbleShader == "ClassicMarb2") {
|
||||||
var marbleNormal = ResourceLoader.getTexture("data/shapes/balls/marble18.normal.png").resource;
|
var classicMarb2 = new ClassicMarb2(mat.texture, this.cubemapRenderer.cubemap, 12, new Vector(0.6, 0.6, 0.6, 0.6), 1);
|
||||||
marbleNormal.wrap = Repeat;
|
mat.mainPass.addShader(classicMarb2);
|
||||||
var classicMetalShader = new ClassicMetal(mat.texture, marbleNormal, this.cubemapRenderer.cubemap, 12, new Vector(0.6, 0.6, 0.6, 0.6),
|
}
|
||||||
1);
|
|
||||||
mat.mainPass.addShader(classicMetalShader);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Settings.optionsSettings.marbleShader == "ClassicMarbGlass20") {
|
if (Settings.optionsSettings.marbleShader == "ClassicMarb3") {
|
||||||
var marbleNormal = ResourceLoader.getTexture("data/shapes/balls/marble20.normal.png").resource;
|
var marbSpecColor = new Vector(0.6, 0.6, 0.6, 0.6);
|
||||||
marbleNormal.wrap = Repeat;
|
var marbSpec = 12.0;
|
||||||
var classicGlassShader = new ClassicGlass(mat.texture, marbleNormal, this.cubemapRenderer.cubemap, 12, new Vector(0.6, 0.6, 0.6, 0.6),
|
if (Settings.optionsSettings.marbleModel == "data/shapes/balls/marble16.dts") {
|
||||||
1);
|
marbSpec = 6;
|
||||||
mat.mainPass.addShader(classicGlassShader);
|
marbSpecColor.set(0.2, 0.2, 0.2, 0.2);
|
||||||
}
|
}
|
||||||
|
if (Settings.optionsSettings.marbleModel == "data/shapes/balls/marble31.dts") {
|
||||||
|
marbSpec = 24;
|
||||||
|
marbSpecColor.set(0.3, 0.3, 0.3, 0.3);
|
||||||
|
}
|
||||||
|
var classicMarb3 = new ClassicMarb3(mat.texture, this.cubemapRenderer.cubemap, marbSpec, marbSpecColor, 1);
|
||||||
|
mat.mainPass.addShader(classicMarb3);
|
||||||
|
}
|
||||||
|
|
||||||
if (Settings.optionsSettings.marbleShader == "ClassicMarbGlass18") {
|
if (Settings.optionsSettings.marbleShader == "ClassicMetal") {
|
||||||
var marbleNormal = ResourceLoader.getTexture("data/shapes/balls/marble18.normal.png").resource;
|
var marbleNormal = ResourceLoader.getTexture("data/shapes/balls/marble18.normal.png").resource;
|
||||||
marbleNormal.wrap = Repeat;
|
marbleNormal.wrap = Repeat;
|
||||||
var classicGlassShader = new ClassicGlass(mat.texture, marbleNormal, this.cubemapRenderer.cubemap, 12, new Vector(0.6, 0.6, 0.6, 0.6),
|
var classicMetalShader = new ClassicMetal(mat.texture, marbleNormal, this.cubemapRenderer.cubemap, 12,
|
||||||
1);
|
new Vector(0.6, 0.6, 0.6, 0.6), 1);
|
||||||
mat.mainPass.addShader(classicGlassShader);
|
mat.mainPass.addShader(classicMetalShader);
|
||||||
}
|
}
|
||||||
if (Settings.optionsSettings.marbleShader == "CrystalMarb") {
|
|
||||||
var marbleNormal = ResourceLoader.getTexture("data/shapes/balls/marble02.normal.png").resource;
|
|
||||||
marbleNormal.wrap = Repeat;
|
|
||||||
var classicGlassShader = new CrystalMarb(mat.texture, marbleNormal, this.cubemapRenderer.cubemap, 1);
|
|
||||||
mat.mainPass.addShader(classicGlassShader);
|
|
||||||
}
|
|
||||||
|
|
||||||
var thisprops:Dynamic = mat.getDefaultProps();
|
if (Settings.optionsSettings.marbleShader == "ClassicMarbGlass20") {
|
||||||
thisprops.light = false; // We will calculate our own lighting
|
var marbleNormal = ResourceLoader.getTexture("data/shapes/balls/marble20.normal.png").resource;
|
||||||
mat.props = thisprops;
|
marbleNormal.wrap = Repeat;
|
||||||
mat.castShadows = true;
|
var classicGlassShader = new ClassicGlass(mat.texture, marbleNormal, this.cubemapRenderer.cubemap, 12,
|
||||||
mat.shadows = true;
|
new Vector(0.6, 0.6, 0.6, 0.6), 1);
|
||||||
mat.receiveShadows = false;
|
mat.mainPass.addShader(classicGlassShader);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Settings.optionsSettings.marbleShader == "ClassicMarbGlass18") {
|
||||||
|
var marbleNormal = ResourceLoader.getTexture("data/shapes/balls/marble18.normal.png").resource;
|
||||||
|
marbleNormal.wrap = Repeat;
|
||||||
|
var classicGlassShader = new ClassicGlass(mat.texture, marbleNormal, this.cubemapRenderer.cubemap, 12,
|
||||||
|
new Vector(0.6, 0.6, 0.6, 0.6), 1);
|
||||||
|
mat.mainPass.addShader(classicGlassShader);
|
||||||
|
}
|
||||||
|
if (Settings.optionsSettings.marbleShader == "CrystalMarb") {
|
||||||
|
var marbleNormal = ResourceLoader.getTexture("data/shapes/balls/marble02.normal.png").resource;
|
||||||
|
marbleNormal.wrap = Repeat;
|
||||||
|
var classicGlassShader = new CrystalMarb(mat.texture, marbleNormal, this.cubemapRenderer.cubemap, 1);
|
||||||
|
mat.mainPass.addShader(classicGlassShader);
|
||||||
|
}
|
||||||
|
|
||||||
|
var thisprops:Dynamic = mat.getDefaultProps();
|
||||||
|
thisprops.light = false; // We will calculate our own lighting
|
||||||
|
mat.props = thisprops;
|
||||||
|
mat.castShadows = true;
|
||||||
|
mat.shadows = true;
|
||||||
|
mat.receiveShadows = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Calculate radius according to marble model (egh)
|
||||||
|
var b = marbleDts.getBounds();
|
||||||
|
var avgRadius = (b.xSize + b.ySize + b.zSize) / 6;
|
||||||
|
if (isUltra) {
|
||||||
|
this._radius = 0.3;
|
||||||
|
this._renderScale = 0.3 / avgRadius;
|
||||||
|
this._marbleScale = this._renderScale;
|
||||||
|
this._defaultScale = this._marbleScale;
|
||||||
|
marbleDts.scale(0.3 / avgRadius);
|
||||||
|
} else
|
||||||
|
this._radius = avgRadius;
|
||||||
|
|
||||||
|
this._prevRadius = this._radius;
|
||||||
|
|
||||||
|
if (isUltra) {
|
||||||
|
this.rollMegaSound = AudioManager.playSound(ResourceLoader.getResource("data/sound/mega_roll.wav", ResourceLoader.getAudio,
|
||||||
|
this.soundResources), this.getAbsPos().getPosition(),
|
||||||
|
true);
|
||||||
|
this.rollMegaSound.volume = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.isUltra = isUltra;
|
||||||
|
|
||||||
|
this.collider = new SphereCollisionEntity(cast this);
|
||||||
|
this.collider.setTransform(this.getAbsPos());
|
||||||
|
|
||||||
|
this.addChild(marbleDts);
|
||||||
|
|
||||||
|
// var geom = Sphere.defaultUnitSphere();
|
||||||
|
// geom.addUVs();
|
||||||
|
// var marbleTexture = ResourceLoader.getFileEntry("data/shapes/balls/base.marble.png").toTexture();
|
||||||
|
// var marbleMaterial = Material.create(marbleTexture);
|
||||||
|
// marbleMaterial.shadows = false;
|
||||||
|
// marbleMaterial.castShadows = true;
|
||||||
|
// marbleMaterial.mainPass.removeShader(marbleMaterial.textureShader);
|
||||||
|
// var dtsShader = new DtsTexture();
|
||||||
|
// dtsShader.texture = marbleTexture;
|
||||||
|
// dtsShader.currentOpacity = 1;
|
||||||
|
// marbleMaterial.mainPass.addShader(dtsShader);
|
||||||
|
// var obj = new Mesh(geom, marbleMaterial, this);
|
||||||
|
// obj.scale(_radius * 0.1);
|
||||||
|
// if (Settings.optionsSettings.reflectiveMarble) {
|
||||||
|
// this.cubemapRenderer = new CubemapRenderer(level.scene);
|
||||||
|
// marbleMaterial.mainPass.addShader(new MarbleReflection(this.cubemapRenderer.cubemap));
|
||||||
|
// }
|
||||||
|
|
||||||
|
this.blastWave = new BlastWave();
|
||||||
|
// this.addChild(this.blastWave);
|
||||||
|
this.blastWave.x = 1e8;
|
||||||
|
this.blastWave.y = 1e8;
|
||||||
|
this.blastWave.z = 1e8;
|
||||||
|
this.blastWave.isBoundingBoxCollideable = false;
|
||||||
|
|
||||||
|
this.helicopter = new HelicopterImage();
|
||||||
|
this.helicopter.isBoundingBoxCollideable = false;
|
||||||
|
// this.addChild(this.helicopter);
|
||||||
|
this.helicopter.x = 1e8;
|
||||||
|
this.helicopter.y = 1e8;
|
||||||
|
this.helicopter.z = 1e8;
|
||||||
|
this.helicopter.scale(0.3 / 0.2);
|
||||||
|
|
||||||
|
if (this.controllable) {
|
||||||
|
var worker = new ResourceLoaderWorker(onFinish);
|
||||||
|
worker.addTask(fwd -> level.addDtsObject(this.helicopter, fwd));
|
||||||
|
worker.addTask(fwd -> level.addDtsObject(this.blastWave, fwd));
|
||||||
|
worker.run();
|
||||||
|
} else {
|
||||||
|
onFinish();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
for (texPath in marbleMats) {
|
||||||
|
matWorker.loadFile(texPath);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Calculate radius according to marble model (egh)
|
matWorker.run();
|
||||||
var b = marbleDts.getBounds();
|
|
||||||
var avgRadius = (b.xSize + b.ySize + b.zSize) / 6;
|
|
||||||
if (isUltra) {
|
|
||||||
this._radius = 0.3;
|
|
||||||
this._renderScale = 0.3 / avgRadius;
|
|
||||||
this._marbleScale = this._renderScale;
|
|
||||||
this._defaultScale = this._marbleScale;
|
|
||||||
marbleDts.scale(0.3 / avgRadius);
|
|
||||||
} else
|
|
||||||
this._radius = avgRadius;
|
|
||||||
|
|
||||||
this._prevRadius = this._radius;
|
|
||||||
|
|
||||||
if (isUltra) {
|
|
||||||
this.rollMegaSound = AudioManager.playSound(ResourceLoader.getResource("data/sound/mega_roll.wav", ResourceLoader.getAudio, this.soundResources),
|
|
||||||
this.getAbsPos().getPosition(), true);
|
|
||||||
this.rollMegaSound.volume = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.isUltra = isUltra;
|
|
||||||
|
|
||||||
this.collider = new SphereCollisionEntity(cast this);
|
|
||||||
this.collider.setTransform(this.getAbsPos());
|
|
||||||
|
|
||||||
this.addChild(marbleDts);
|
|
||||||
|
|
||||||
// var geom = Sphere.defaultUnitSphere();
|
|
||||||
// geom.addUVs();
|
|
||||||
// var marbleTexture = ResourceLoader.getFileEntry("data/shapes/balls/base.marble.png").toTexture();
|
|
||||||
// var marbleMaterial = Material.create(marbleTexture);
|
|
||||||
// marbleMaterial.shadows = false;
|
|
||||||
// marbleMaterial.castShadows = true;
|
|
||||||
// marbleMaterial.mainPass.removeShader(marbleMaterial.textureShader);
|
|
||||||
// var dtsShader = new DtsTexture();
|
|
||||||
// dtsShader.texture = marbleTexture;
|
|
||||||
// dtsShader.currentOpacity = 1;
|
|
||||||
// marbleMaterial.mainPass.addShader(dtsShader);
|
|
||||||
// var obj = new Mesh(geom, marbleMaterial, this);
|
|
||||||
// obj.scale(_radius * 0.1);
|
|
||||||
// if (Settings.optionsSettings.reflectiveMarble) {
|
|
||||||
// this.cubemapRenderer = new CubemapRenderer(level.scene);
|
|
||||||
// marbleMaterial.mainPass.addShader(new MarbleReflection(this.cubemapRenderer.cubemap));
|
|
||||||
// }
|
|
||||||
|
|
||||||
this.blastWave = new BlastWave();
|
|
||||||
// this.addChild(this.blastWave);
|
|
||||||
this.blastWave.x = 1e8;
|
|
||||||
this.blastWave.y = 1e8;
|
|
||||||
this.blastWave.z = 1e8;
|
|
||||||
this.blastWave.isBoundingBoxCollideable = false;
|
|
||||||
|
|
||||||
this.helicopter = new HelicopterImage();
|
|
||||||
this.helicopter.isBoundingBoxCollideable = false;
|
|
||||||
// this.addChild(this.helicopter);
|
|
||||||
this.helicopter.x = 1e8;
|
|
||||||
this.helicopter.y = 1e8;
|
|
||||||
this.helicopter.z = 1e8;
|
|
||||||
this.helicopter.scale(0.3 / 0.2);
|
|
||||||
|
|
||||||
if (this.controllable) {
|
|
||||||
var worker = new ResourceLoaderWorker(onFinish);
|
|
||||||
worker.addTask(fwd -> level.addDtsObject(this.helicopter, fwd));
|
|
||||||
worker.addTask(fwd -> level.addDtsObject(this.blastWave, fwd));
|
|
||||||
worker.run();
|
|
||||||
} else {
|
|
||||||
onFinish();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function findContacts(collisiomWorld:CollisionWorld, timeState:TimeState) {
|
function findContacts(collisiomWorld:CollisionWorld, timeState:TimeState) {
|
||||||
|
|
|
||||||
|
|
@ -227,11 +227,29 @@ class ResourceLoader {
|
||||||
}
|
}
|
||||||
|
|
||||||
static function preloadShapes(onFinish:Void->Void) {
|
static function preloadShapes(onFinish:Void->Void) {
|
||||||
|
// var toloadfiles = [
|
||||||
|
// StringTools.replace(Settings.optionsSettings.marbleModel, "data/", ""),
|
||||||
|
// (Settings.optionsSettings.marbleCategoryIndex == 0)
|
||||||
|
// ? "shapes/balls/" + Settings.optionsSettings.marbleSkin + ".marble.png" : "shapes/balls/pack1/" + Settings.optionsSettings.marbleSkin +
|
||||||
|
// ".marble.png"
|
||||||
|
// ];
|
||||||
var toloadfiles = [
|
var toloadfiles = [
|
||||||
StringTools.replace(Settings.optionsSettings.marbleModel, "data/", ""),
|
StringTools.replace(Settings.optionsSettings.marbleModel, "data/", ""),
|
||||||
(Settings.optionsSettings.marbleCategoryIndex == 0)
|
"particles/star.png",
|
||||||
? "shapes/balls/" + Settings.optionsSettings.marbleSkin + ".marble.png" : "shapes/balls/pack1/" + Settings.optionsSettings.marbleSkin +
|
"particles/smoke.png",
|
||||||
".marble.png"
|
"particles/burst.png",
|
||||||
|
"sound/rolling_hard.wav",
|
||||||
|
"sound/sliding.wav",
|
||||||
|
"sound/use_gyrocopter.wav",
|
||||||
|
"sound/bouncehard1.wav",
|
||||||
|
"sound/bouncehard2.wav",
|
||||||
|
"sound/bouncehard3.wav",
|
||||||
|
"sound/bouncehard4.wav",
|
||||||
|
"sound/mega_roll.wav",
|
||||||
|
"shapes/balls/marble20.normal.png",
|
||||||
|
"shapes/balls/marble18.normal.png",
|
||||||
|
"shapes/balls/marble01.normal.png",
|
||||||
|
"shapes/balls/marble02.normal.png",
|
||||||
];
|
];
|
||||||
// var toloaddirs = [];
|
// var toloaddirs = [];
|
||||||
// var filestats = fileSystem.dir("shapes");
|
// var filestats = fileSystem.dir("shapes");
|
||||||
|
|
|
||||||
|
|
@ -302,14 +302,16 @@ class MarblePickerGui extends GuiImage {
|
||||||
Settings.optionsSettings.marbleSkin = selectedMarble.skin;
|
Settings.optionsSettings.marbleSkin = selectedMarble.skin;
|
||||||
Settings.optionsSettings.marbleModel = selectedMarble.dts;
|
Settings.optionsSettings.marbleModel = selectedMarble.dts;
|
||||||
Settings.optionsSettings.marbleShader = selectedMarble.shader;
|
Settings.optionsSettings.marbleShader = selectedMarble.shader;
|
||||||
@:privateAccess MarbleGame.instance.previewWorld.removeMarble(myMarb);
|
ResourceLoader.load(Settings.optionsSettings.marbleModel).entry.load(() -> {
|
||||||
@:privateAccess MarbleGame.instance.previewWorld.spawnMarble(marb -> {
|
@:privateAccess MarbleGame.instance.previewWorld.removeMarble(myMarb);
|
||||||
var spawnPos = @:privateAccess MarbleGame.instance.scene.camera.pos.add(new Vector(0, 1, 1));
|
@:privateAccess MarbleGame.instance.previewWorld.spawnMarble(marb -> {
|
||||||
var velAdd = new Vector((1 - 2 * Math.random()) * 2, (1 - 2 * Math.random()) * 1.5, (1 - 2 * Math.random()) * 1);
|
var spawnPos = @:privateAccess MarbleGame.instance.scene.camera.pos.add(new Vector(0, 1, 1));
|
||||||
velAdd = velAdd.add(new Vector(0, 3, 0));
|
var velAdd = new Vector((1 - 2 * Math.random()) * 2, (1 - 2 * Math.random()) * 1.5, (1 - 2 * Math.random()) * 1);
|
||||||
marb.setMarblePosition(spawnPos.x, spawnPos.y, spawnPos.z);
|
velAdd = velAdd.add(new Vector(0, 3, 0));
|
||||||
marb.velocity.load(velAdd);
|
marb.setMarblePosition(spawnPos.x, spawnPos.y, spawnPos.z);
|
||||||
myMarb = marb;
|
marb.velocity.load(velAdd);
|
||||||
|
myMarb = marb;
|
||||||
|
});
|
||||||
});
|
});
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue