This commit is contained in:
r4ph3rd 2023-06-05 23:07:16 +02:00
parent d934743ff8
commit ee77d92c4a
3 changed files with 280 additions and 8 deletions

Binary file not shown.

View File

@ -1159,26 +1159,26 @@ var tempDouble;
var tempI64; var tempI64;
var ASM_CONSTS = { var ASM_CONSTS = {
4093944: function() { 4107288: function() {
Module["emscripten_get_now_backup"] = performance.now; Module["emscripten_get_now_backup"] = performance.now;
}, },
4093999: function($0) { 4107343: function($0) {
performance.now = function() { performance.now = function() {
return $0; return $0;
}; };
}, },
4094047: function($0) { 4107391: function($0) {
performance.now = function() { performance.now = function() {
return $0; return $0;
}; };
}, },
4094095: function() { 4107439: function() {
performance.now = Module["emscripten_get_now_backup"]; performance.now = Module["emscripten_get_now_backup"];
}, },
4094150: function() { 4107494: function() {
return Module.webglContextAttributes.premultipliedAlpha; return Module.webglContextAttributes.premultipliedAlpha;
}, },
4094211: function() { 4107555: function() {
return Module.webglContextAttributes.preserveDrawingBuffer; return Module.webglContextAttributes.preserveDrawingBuffer;
} }
}; };
@ -2711,6 +2711,252 @@ function _JS_UnityEngineShouldQuit() {
return !!Module.shouldQuit; return !!Module.shouldQuit;
} }
var videoInstances = {};
var jsSupportedVideoFormats = [];
var jsUnsupportedVideoFormats = [];
function _JS_Video_CanPlayFormat(format) {
format = UTF8ToString(format);
if (jsSupportedVideoFormats.indexOf(format) != -1) return true;
if (jsUnsupportedVideoFormats.indexOf(format) != -1) return false;
var video = document.createElement("video");
var canPlay = video.canPlayType(format);
if (canPlay) jsSupportedVideoFormats.push(format); else jsUnsupportedVideoFormats.push(format);
return !!canPlay;
}
var videoInstanceIdCounter = 0;
function jsVideoEnded() {
if (this.onendedCallback) {
dynCall_vi(this.onendedCallback, this.onendedRef);
}
}
var hasSRGBATextures = null;
function _JS_Video_Create(url) {
var str = UTF8ToString(url);
var video = document.createElement("video");
video.style.display = "none";
video.src = str;
video.muted = true;
video.setAttribute("muted", "");
video.setAttribute("playsinline", "");
video.crossOrigin = "anonymous";
videoInstances[++videoInstanceIdCounter] = video;
if (hasSRGBATextures == null) hasSRGBATextures = Module.SystemInfo.browser == "Chrome" || Module.SystemInfo.browser == "Edge";
return videoInstanceIdCounter;
}
var jsVideoPendingBlockedVideos = {};
function jsVideoPlayPendingBlockedVideo(video) {
jsVideoPendingBlockedVideos[video].play().then(function() {
jsVideoRemovePendingBlockedVideo(video);
});
}
function jsVideoAttemptToPlayBlockedVideos() {
for (var i in jsVideoPendingBlockedVideos) {
if (jsVideoPendingBlockedVideos.hasOwnProperty(i)) jsVideoPlayPendingBlockedVideo(i);
}
}
function jsVideoRemovePendingBlockedVideo(video) {
delete jsVideoPendingBlockedVideos[video];
if (Object.keys(jsVideoPendingBlockedVideos).length == 0) {
window.removeEventListener("mousedown", jsVideoAttemptToPlayBlockedVideos);
}
}
function _JS_Video_Destroy(video) {
var v = videoInstances[video];
if (v.loopEndPollInterval) {
clearInterval(v.loopEndPollInterval);
}
jsVideoRemovePendingBlockedVideo(video);
v.src = "";
delete v.onendedCallback;
v.onended = v.onerror = v.oncanplay = v.onseeked = null;
delete videoInstances[video];
}
function _JS_Video_Duration(video) {
return videoInstances[video].duration;
}
function _JS_Video_EnableAudioTrack(video, trackIndex, enabled) {
var v = videoInstances[video];
if (!v.enabledTracks) v.enabledTracks = [];
while (v.enabledTracks.length <= trackIndex) v.enabledTracks.push(true);
v.enabledTracks[trackIndex] = enabled;
var tracks = v.audioTracks;
if (!tracks) return;
var track = tracks[trackIndex];
if (track) track.enabled = enabled ? true : false;
}
function _JS_Video_GetAudioLanguageCode(video, trackIndex) {
var tracks = videoInstances[video].audioTracks;
if (!tracks) return "";
var track = tracks[trackIndex];
return track ? track.language : "";
}
function _JS_Video_GetNumAudioTracks(video) {
var tracks = videoInstances[video].audioTracks;
return tracks ? tracks.length : 1;
}
function _JS_Video_Height(video) {
return videoInstances[video].videoHeight;
}
function _JS_Video_IsPlaying(video) {
var v = videoInstances[video];
return !v.paused && !v.ended;
}
function _JS_Video_IsReady(video) {
var v = videoInstances[video];
var targetReadyState = /(iPhone|iPad)/i.test(navigator.userAgent) ? v.HAVE_METADATA : v.HAVE_ENOUGH_DATA;
if (!v.isReady && v.readyState >= targetReadyState) v.isReady = true;
return v.isReady;
}
function _JS_Video_Pause(video) {
var v = videoInstances[video];
v.pause();
jsVideoRemovePendingBlockedVideo(video);
if (v.loopEndPollInterval) {
clearInterval(v.loopEndPollInterval);
}
}
function _JS_Video_SetLoop(video, loop) {
var v = videoInstances[video];
if (v.loopEndPollInterval) {
clearInterval(v.loopEndPollInterval);
}
v.loop = loop;
if (loop) {
v.loopEndPollInterval = setInterval(function() {
if (v.currentTime < v.lastSeenPlaybackTime) {
jsVideoEnded.apply(v);
}
v.lastSeenPlaybackTime = v.currentTime;
}, 1e3 / 30);
v.lastSeenPlaybackTime = v.currentTime;
v.onended = null;
} else {
v.onended = jsVideoEnded;
}
}
function jsVideoAllAudioTracksAreDisabled(v) {
if (!v.enabledTracks) return false;
for (var i = 0; i < v.enabledTracks.length; ++i) {
if (v.enabledTracks[i]) return false;
}
return true;
}
function jsVideoAddPendingBlockedVideo(video, v) {
if (Object.keys(jsVideoPendingBlockedVideos).length == 0) window.addEventListener("mousedown", jsVideoAttemptToPlayBlockedVideos);
jsVideoPendingBlockedVideos[video] = v;
}
function _JS_Video_Play(video, muted) {
var v = videoInstances[video];
v.muted = muted || jsVideoAllAudioTracksAreDisabled(v);
var promise = v.play();
if (promise) promise.catch(function(e) {
if (e.name == "NotAllowedError") jsVideoAddPendingBlockedVideo(video, v);
});
_JS_Video_SetLoop(video, v.loop);
}
function _JS_Video_Seek(video, time) {
var v = videoInstances[video];
v.lastSeenPlaybackTime = v.currentTime = time;
}
function _JS_Video_SetEndedHandler(video, ref, onended) {
var v = videoInstances[video];
v.onendedCallback = onended;
v.onendedRef = ref;
}
function _JS_Video_SetErrorHandler(video, ref, onerror) {
videoInstances[video].onerror = function(evt) {
dynCall_vii(onerror, ref, evt.target.error.code);
};
}
function _JS_Video_SetMute(video, muted) {
var v = videoInstances[video];
v.muted = muted || jsVideoAllAudioTracksAreDisabled(v);
}
function _JS_Video_SetPlaybackRate(video, rate) {
videoInstances[video].playbackRate = rate;
}
function _JS_Video_SetReadyHandler(video, ref, onready) {
videoInstances[video].oncanplay = function() {
dynCall_vi(onready, ref);
};
}
function _JS_Video_SetSeekedOnceHandler(video, ref, onseeked) {
videoInstances[video].onseeked = function() {
dynCall_vi(onseeked, ref);
};
}
function _JS_Video_SetVolume(video, volume) {
videoInstances[video].volume = volume;
}
function _JS_Video_Time(video) {
return videoInstances[video].currentTime;
}
function _JS_Video_UpdateToTexture(video, tex, adjustToLinearspace) {
var v = videoInstances[video];
if (!(v.videoWidth > 0 && v.videoHeight > 0)) return false;
if (v.lastUpdateTextureTime === v.currentTime) return false;
v.lastUpdateTextureTime = v.currentTime;
GLctx.pixelStorei(GLctx.UNPACK_FLIP_Y_WEBGL, true);
var internalFormat = adjustToLinearspace ? hasSRGBATextures ? GLctx.SRGB8_ALPHA8 : GLctx.SRGB8 : GLctx.RGBA;
var format = adjustToLinearspace ? hasSRGBATextures ? GLctx.RGBA : GLctx.RGB : GLctx.RGBA;
if (v.previousUploadedWidth != v.videoWidth || v.previousUploadedHeight != v.videoHeight) {
GLctx.deleteTexture(GL.textures[tex]);
var t = GLctx.createTexture();
t.name = tex;
GL.textures[tex] = t;
GLctx.bindTexture(GLctx.TEXTURE_2D, t);
GLctx.texParameteri(GLctx.TEXTURE_2D, GLctx.TEXTURE_WRAP_S, GLctx.CLAMP_TO_EDGE);
GLctx.texParameteri(GLctx.TEXTURE_2D, GLctx.TEXTURE_WRAP_T, GLctx.CLAMP_TO_EDGE);
GLctx.texParameteri(GLctx.TEXTURE_2D, GLctx.TEXTURE_MIN_FILTER, GLctx.LINEAR);
GLctx.texImage2D(GLctx.TEXTURE_2D, 0, internalFormat, format, GLctx.UNSIGNED_BYTE, v);
v.previousUploadedWidth = v.videoWidth;
v.previousUploadedHeight = v.videoHeight;
} else {
GLctx.bindTexture(GLctx.TEXTURE_2D, GL.textures[tex]);
GLctx.texImage2D(GLctx.TEXTURE_2D, 0, internalFormat, format, GLctx.UNSIGNED_BYTE, v);
}
GLctx.pixelStorei(GLctx.UNPACK_FLIP_Y_WEBGL, false);
return true;
}
function _JS_Video_Width(video) {
return videoInstances[video].videoWidth;
}
var wr = { var wr = {
requests: {}, requests: {},
responses: {}, responses: {},
@ -13358,6 +13604,30 @@ var asmLibraryArg = {
"JS_SystemInfo_HasWebGL": _JS_SystemInfo_HasWebGL, "JS_SystemInfo_HasWebGL": _JS_SystemInfo_HasWebGL,
"JS_SystemInfo_IsMobile": _JS_SystemInfo_IsMobile, "JS_SystemInfo_IsMobile": _JS_SystemInfo_IsMobile,
"JS_UnityEngineShouldQuit": _JS_UnityEngineShouldQuit, "JS_UnityEngineShouldQuit": _JS_UnityEngineShouldQuit,
"JS_Video_CanPlayFormat": _JS_Video_CanPlayFormat,
"JS_Video_Create": _JS_Video_Create,
"JS_Video_Destroy": _JS_Video_Destroy,
"JS_Video_Duration": _JS_Video_Duration,
"JS_Video_EnableAudioTrack": _JS_Video_EnableAudioTrack,
"JS_Video_GetAudioLanguageCode": _JS_Video_GetAudioLanguageCode,
"JS_Video_GetNumAudioTracks": _JS_Video_GetNumAudioTracks,
"JS_Video_Height": _JS_Video_Height,
"JS_Video_IsPlaying": _JS_Video_IsPlaying,
"JS_Video_IsReady": _JS_Video_IsReady,
"JS_Video_Pause": _JS_Video_Pause,
"JS_Video_Play": _JS_Video_Play,
"JS_Video_Seek": _JS_Video_Seek,
"JS_Video_SetEndedHandler": _JS_Video_SetEndedHandler,
"JS_Video_SetErrorHandler": _JS_Video_SetErrorHandler,
"JS_Video_SetLoop": _JS_Video_SetLoop,
"JS_Video_SetMute": _JS_Video_SetMute,
"JS_Video_SetPlaybackRate": _JS_Video_SetPlaybackRate,
"JS_Video_SetReadyHandler": _JS_Video_SetReadyHandler,
"JS_Video_SetSeekedOnceHandler": _JS_Video_SetSeekedOnceHandler,
"JS_Video_SetVolume": _JS_Video_SetVolume,
"JS_Video_Time": _JS_Video_Time,
"JS_Video_UpdateToTexture": _JS_Video_UpdateToTexture,
"JS_Video_Width": _JS_Video_Width,
"JS_WebRequest_Abort": _JS_WebRequest_Abort, "JS_WebRequest_Abort": _JS_WebRequest_Abort,
"JS_WebRequest_Create": _JS_WebRequest_Create, "JS_WebRequest_Create": _JS_WebRequest_Create,
"JS_WebRequest_GetResponseMetaData": _JS_WebRequest_GetResponseMetaData, "JS_WebRequest_GetResponseMetaData": _JS_WebRequest_GetResponseMetaData,
@ -14266,6 +14536,8 @@ var dynCall_fiifii = Module["dynCall_fiifii"] = createExportWrapper("dynCall_fii
var dynCall_iifffi = Module["dynCall_iifffi"] = createExportWrapper("dynCall_iifffi"); var dynCall_iifffi = Module["dynCall_iifffi"] = createExportWrapper("dynCall_iifffi");
var dynCall_viidi = Module["dynCall_viidi"] = createExportWrapper("dynCall_viidi");
var dynCall_viiidii = Module["dynCall_viiidii"] = createExportWrapper("dynCall_viiidii"); var dynCall_viiidii = Module["dynCall_viiidii"] = createExportWrapper("dynCall_viiidii");
var dynCall_ijiiiiiiiii = Module["dynCall_ijiiiiiiiii"] = createExportWrapper("dynCall_ijiiiiiiiii"); var dynCall_ijiiiiiiiii = Module["dynCall_ijiiiiiiiii"] = createExportWrapper("dynCall_ijiiiiiiiii");
@ -14306,8 +14578,6 @@ var dynCall_fdi = Module["dynCall_fdi"] = createExportWrapper("dynCall_fdi");
var dynCall_jjiiii = Module["dynCall_jjiiii"] = createExportWrapper("dynCall_jjiiii"); var dynCall_jjiiii = Module["dynCall_jjiiii"] = createExportWrapper("dynCall_jjiiii");
var dynCall_viidi = Module["dynCall_viidi"] = createExportWrapper("dynCall_viidi");
var dynCall_ddi = Module["dynCall_ddi"] = createExportWrapper("dynCall_ddi"); var dynCall_ddi = Module["dynCall_ddi"] = createExportWrapper("dynCall_ddi");
var dynCall_vidiii = Module["dynCall_vidiii"] = createExportWrapper("dynCall_vidiii"); var dynCall_vidiii = Module["dynCall_vidiii"] = createExportWrapper("dynCall_vidiii");
@ -14676,6 +14946,8 @@ var dynCall_iiiiiifffiiifiii = Module["dynCall_iiiiiifffiiifiii"] = createExport
var dynCall_fiiiif = Module["dynCall_fiiiif"] = createExportWrapper("dynCall_fiiiif"); var dynCall_fiiiif = Module["dynCall_fiiiif"] = createExportWrapper("dynCall_fiiiif");
var dynCall_vidd = Module["dynCall_vidd"] = createExportWrapper("dynCall_vidd");
var dynCall_iiiiiff = Module["dynCall_iiiiiff"] = createExportWrapper("dynCall_iiiiiff"); var dynCall_iiiiiff = Module["dynCall_iiiiiff"] = createExportWrapper("dynCall_iiiiiff");
var dynCall_viid = Module["dynCall_viid"] = createExportWrapper("dynCall_viid"); var dynCall_viid = Module["dynCall_viid"] = createExportWrapper("dynCall_viid");

Binary file not shown.