few more fixes

This commit is contained in:
RandomityGuy 2024-07-14 14:41:37 +05:30
parent 296c7e893b
commit 80aa53997c
5 changed files with 58 additions and 25 deletions

View file

@ -691,7 +691,8 @@ class DifBuilder {
return false; return false;
} }
if (tex.indexOf('/') != -1) { if (tex.indexOf('/') != -1) {
tex = tex.split('/')[1]; var spl = tex.split('/');
tex = spl[spl.length - 1];
} }
#if (js || android) #if (js || android)
@ -726,7 +727,8 @@ class DifBuilder {
} }
function tex(tex:String):String { function tex(tex:String):String {
if (tex.indexOf('/') != -1) { if (tex.indexOf('/') != -1) {
tex = tex.split('/')[1]; var spl = tex.split('/');
tex = spl[spl.length - 1];
} }
if (ResourceLoader.exists(Path.directory(path) + "/" + tex + ".jpg")) { if (ResourceLoader.exists(Path.directory(path) + "/" + tex + ".jpg")) {
@ -822,6 +824,12 @@ class DifBuilder {
if (!shaderMaterialDict.exists(matDictName)) { if (!shaderMaterialDict.exists(matDictName)) {
matDictName = StringTools.replace(exactName, "multiplayer/interiors/mbu", "interiors_mbu"); matDictName = StringTools.replace(exactName, "multiplayer/interiors/mbu", "interiors_mbu");
} }
if (!shaderMaterialDict.exists(matDictName)) {
matDictName = StringTools.replace(exactName, "multiplayer/interiors/custom/mbu", "interiors_mbu");
}
if (!shaderMaterialDict.exists(matDictName)) {
matDictName = StringTools.replace(exactName, "multiplayer/interiors_mbg/custom/mbu", "interiors_mbu");
}
if (shaderMaterialDict.exists(matDictName)) { if (shaderMaterialDict.exists(matDictName)) {
var retrievefunc = shaderMaterialDict[matDictName]; var retrievefunc = shaderMaterialDict[matDictName];
shaderWorker.addTask(fwd -> { shaderWorker.addTask(fwd -> {

View file

@ -854,7 +854,8 @@ class DtsObject extends GameObject {
quat.slerp(q1, q2, t); quat.slerp(q1, q2, t);
quat.normalize(); quat.normalize();
this.graphNodes[i].setRotationQuat(quat); this.graphNodes[i].getRotationQuat().load(quat);
this.graphNodes[i].posChanged = true;
this.dirtyTransforms[i] = true; this.dirtyTransforms[i] = true;
affectedCount++; affectedCount++;
// quaternions.push(quat); // quaternions.push(quat);
@ -863,7 +864,8 @@ class DtsObject extends GameObject {
var quat = new Quat(-rotation.x, rotation.y, rotation.z, -rotation.w); var quat = new Quat(-rotation.x, rotation.y, rotation.z, -rotation.w);
quat.normalize(); quat.normalize();
quat.conjugate(); quat.conjugate();
this.graphNodes[i].setRotationQuat(quat); this.graphNodes[i].getRotationQuat().load(quat);
this.graphNodes[i].posChanged = true;
// quaternions.push(quat); // quaternions.push(quat);
} }
} }
@ -929,8 +931,8 @@ class DtsObject extends GameObject {
var mesh = this.dts.meshes[info.meshIndex]; var mesh = this.dts.meshes[info.meshIndex];
for (i in 0...info.vertices.length) { for (i in 0...info.vertices.length) {
info.vertices[i] = new Vector(); info.vertices[i].set(0, 0, 0);
info.normals[i] = new Vector(); info.normals[i].set(0, 0, 0);
} }
var boneTransformations = []; var boneTransformations = [];
@ -959,13 +961,13 @@ class DtsObject extends GameObject {
var mat = boneTransformations[mesh.boneIndices[i]]; var mat = boneTransformations[mesh.boneIndices[i]];
vec.transform(mat); vec.transform(mat);
vec = vec.multiply(mesh.weights[i]); vec.load(vec.multiply(mesh.weights[i]));
Util.m_matF_x_vectorF(mat, vec2); Util.m_matF_x_vectorF(mat, vec2);
vec2 = vec2.multiply(mesh.weights[i]); vec2.load(vec2.multiply(mesh.weights[i]));
info.vertices[vIndex] = info.vertices[vIndex].add(vec); info.vertices[vIndex].load(info.vertices[vIndex].add(vec));
info.normals[vIndex] = info.normals[vIndex].add(vec2); info.normals[vIndex].load(info.normals[vIndex].add(vec2));
} }
for (i in 0...info.normals.length) { for (i in 0...info.normals.length) {
@ -979,10 +981,6 @@ class DtsObject extends GameObject {
var meshIndex = 0; var meshIndex = 0;
var mesh:Mesh = cast info.geometry.children[meshIndex]; var mesh:Mesh = cast info.geometry.children[meshIndex];
var prim:DynamicPolygon = cast mesh.primitive; var prim:DynamicPolygon = cast mesh.primitive;
var vbuffer:FloatBuffer = null;
if (prim.buffer != null) {
vbuffer = prim.getDrawBuffer(prim.points.length);
}
var pos = 0; var pos = 0;
for (i in info.indices) { for (i in info.indices) {
if (pos >= prim.points.length) { if (pos >= prim.points.length) {
@ -991,14 +989,11 @@ class DtsObject extends GameObject {
mesh = cast info.geometry.children[meshIndex]; mesh = cast info.geometry.children[meshIndex];
prim = cast mesh.primitive; prim = cast mesh.primitive;
pos = 0; pos = 0;
if (prim.buffer != null) {
vbuffer = prim.getDrawBuffer(prim.points.length);
}
} }
var vertex = info.vertices[i]; var vertex = info.vertices[i];
var normal = info.normals[i]; var normal = info.normals[i];
prim.points[pos] = vertex.toPoint(); prim.points[pos].load(vertex.toPoint());
prim.normals[pos] = normal.toPoint(); // .normalized(); prim.normals[pos].load(normal.toPoint()); // .normalized();
if (prim.buffer != null) { if (prim.buffer != null) {
prim.dirtyFlags[pos] = true; prim.dirtyFlags[pos] = true;
} }
@ -1042,15 +1037,17 @@ class DtsObject extends GameObject {
var spinAnimation = new Quat(); var spinAnimation = new Quat();
spinAnimation.initRotateAxis(0, 0, -1, timeState.timeSinceLoad * this.ambientSpinFactor); spinAnimation.initRotateAxis(0, 0, -1, timeState.timeSinceLoad * this.ambientSpinFactor);
var orientation = this.getRotationQuat(); // var orientation = this.getRotationQuat();
// spinAnimation.multiply(orientation, spinAnimation); // spinAnimation.multiply(orientation, spinAnimation);
this.rootObject.setRotationQuat(spinAnimation); this.rootObject.getRotationQuat().load(spinAnimation);
this.rootObject.posChanged = true;
// setRotationQuat(spinAnimation);
} }
for (i in 0...this.colliders.length) { for (i in 0...this.colliders.length) {
if (this.dirtyTransforms[this.colliders[i].userData]) { if (this.dirtyTransforms[this.colliders[i].userData]) {
var absTform = this.graphNodes[this.colliders[i].userData].getAbsPos().clone(); var absTform = this.graphNodes[this.colliders[i].userData].getAbsPos();
if (this.colliders[i] != null) { if (this.colliders[i] != null) {
this.colliders[i].setTransform(absTform); this.colliders[i].setTransform(absTform);
this.level.collisionWorld.updateTransform(this.colliders[i]); this.level.collisionWorld.updateTransform(this.colliders[i]);

View file

@ -503,7 +503,7 @@ class Marble extends GameObject {
this._prevRadius = this._radius; this._prevRadius = this._radius;
if (isUltra) { if (isUltra || level.isMultiplayer) {
this.rollMegaSound = AudioManager.playSound(ResourceLoader.getResource("data/sound/mega_roll.wav", ResourceLoader.getAudio, this.soundResources), this.rollMegaSound = AudioManager.playSound(ResourceLoader.getResource("data/sound/mega_roll.wav", ResourceLoader.getAudio, this.soundResources),
this.getAbsPos().getPosition(), true); this.getAbsPos().getPosition(), true);
this.rollMegaSound.volume = 0; this.rollMegaSound.volume = 0;
@ -2153,6 +2153,7 @@ class Marble extends GameObject {
} }
updatePowerupStates(timeState); updatePowerupStates(timeState);
updateTeleporterState(timeState);
if (isMegaMarbleEnabled(timeState)) { if (isMegaMarbleEnabled(timeState)) {
marbleDts.setScale(0.6666 / _dtsRadius); marbleDts.setScale(0.6666 / _dtsRadius);

View file

@ -355,7 +355,10 @@ class MarbleWorld extends Scheduler {
public function loadMusic(onFinish:Void->Void) { public function loadMusic(onFinish:Void->Void) {
if (this.mission.missionInfo.music != null) { if (this.mission.missionInfo.music != null) {
var musicFileName = 'sound/music/' + this.mission.missionInfo.music; var musicFileName = 'sound/music/' + this.mission.missionInfo.music;
ResourceLoader.load(musicFileName).entry.load(onFinish); if (ResourceLoader.exists(musicFileName))
ResourceLoader.load(musicFileName).entry.load(onFinish);
else
onFinish();
} else { } else {
onFinish(); onFinish();
} }
@ -380,7 +383,10 @@ class MarbleWorld extends Scheduler {
this._ready = true; this._ready = true;
var musicFileName = 'data/sound/music/' + this.mission.missionInfo.music; var musicFileName = 'data/sound/music/' + this.mission.missionInfo.music;
AudioManager.playMusic(ResourceLoader.getResource(musicFileName, ResourceLoader.getAudio, this.soundResources), this.mission.missionInfo.music); if (ResourceLoader.exists(musicFileName))
AudioManager.playMusic(ResourceLoader.getResource(musicFileName, ResourceLoader.getAudio, this.soundResources), this.mission.missionInfo.music);
else
AudioManager.playShell();
MarbleGame.canvas.clearContent(); MarbleGame.canvas.clearContent();
if (this.endPad != null) if (this.endPad != null)
this.endPad.generateCollider(); this.endPad.generateCollider();
@ -893,6 +899,7 @@ class MarbleWorld extends Scheduler {
if ((Net.isHost && (this.timeState.timeSinceLoad < startTime - 3.0)) // 3.5 == 109 ticks if ((Net.isHost && (this.timeState.timeSinceLoad < startTime - 3.0)) // 3.5 == 109 ticks
|| (Net.isClient && this.serverStartTicks != 0 && @:privateAccess this.marble.serverTicks < this.serverStartTicks + 16)) { || (Net.isClient && this.serverStartTicks != 0 && @:privateAccess this.marble.serverTicks < this.serverStartTicks + 16)) {
this.playGui.setCenterText('none'); this.playGui.setCenterText('none');
this.playGui.doStateChangeSound('none');
} }
if ((Net.isHost if ((Net.isHost
&& (this.timeState.timeSinceLoad > startTime - 3.0) && (this.timeState.timeSinceLoad > startTime - 3.0)
@ -902,6 +909,7 @@ class MarbleWorld extends Scheduler {
&& @:privateAccess this.marble.serverTicks > this.serverStartTicks + 16 && @:privateAccess this.marble.serverTicks > this.serverStartTicks + 16
&& @:privateAccess this.marble.serverTicks < this.serverStartTicks + 63)) { && @:privateAccess this.marble.serverTicks < this.serverStartTicks + 63)) {
this.playGui.setCenterText('ready'); this.playGui.setCenterText('ready');
this.playGui.doStateChangeSound('ready');
} }
if ((Net.isHost if ((Net.isHost
&& (this.timeState.timeSinceLoad > startTime - 1.5) && (this.timeState.timeSinceLoad > startTime - 1.5)
@ -911,6 +919,7 @@ class MarbleWorld extends Scheduler {
&& @:privateAccess this.marble.serverTicks > this.serverStartTicks + 63 && @:privateAccess this.marble.serverTicks > this.serverStartTicks + 63
&& @:privateAccess this.marble.serverTicks < this.serverStartTicks + 109)) { && @:privateAccess this.marble.serverTicks < this.serverStartTicks + 109)) {
this.playGui.setCenterText('set'); this.playGui.setCenterText('set');
this.playGui.doStateChangeSound('set');
} }
if ((Net.isHost && (this.timeState.timeSinceLoad >= startTime)) // 3.5 == 109 ticks if ((Net.isHost && (this.timeState.timeSinceLoad >= startTime)) // 3.5 == 109 ticks
|| (Net.isClient && this.serverStartTicks != 0 && @:privateAccess this.marble.serverTicks >= this.serverStartTicks + 109)) { || (Net.isClient && this.serverStartTicks != 0 && @:privateAccess this.marble.serverTicks >= this.serverStartTicks + 109)) {
@ -922,6 +931,7 @@ class MarbleWorld extends Scheduler {
this.playGui.redrawPlayerList(); // Update spectators display this.playGui.redrawPlayerList(); // Update spectators display
this.playGui.setCenterText('go'); this.playGui.setCenterText('go');
this.playGui.doStateChangeSound('go');
var huntMode = cast(this.gameMode, HuntMode); var huntMode = cast(this.gameMode, HuntMode);

View file

@ -374,6 +374,23 @@ class PlayGui {
} }
} }
public function doStateChangeSound(state:String) {
static var curState = "none";
if (curState != state) {
if (state == "ready") {
AudioManager.playSound(ResourceLoader.getResource('data/sound/ready.wav', ResourceLoader.getAudio, @:privateAccess this.soundResources));
}
if (state == "set") {
AudioManager.playSound(ResourceLoader.getResource('data/sound/set.wav', ResourceLoader.getAudio, @:privateAccess this.soundResources));
}
if (state == "go") {
AudioManager.playSound(ResourceLoader.getResource('data/sound/go.wav', ResourceLoader.getAudio, @:privateAccess this.soundResources));
}
}
curState = state;
}
public function initGemCounter(onFinish:Void->Void) { public function initGemCounter(onFinish:Void->Void) {
gemCountNumbers[0].position = new Vector(30, 0); gemCountNumbers[0].position = new Vector(30, 0);
gemCountNumbers[0].extent = new Vector(43, 55); gemCountNumbers[0].extent = new Vector(43, 55);