LaboratoryProtection/Assets/Plugins/WebGLSupport/WebGLFullscreen/WebGLFullscreen.jslib

85 lines
3.8 KiB
JavaScript

var WebGLFullscreen = {
WebGLFullscreenInject: function () {
document.setFullScreenByElement = function (container, canvas, keepAspectRatio) {
// set fullscreen
var setFullScreen = function (element) {
(element.webkitRequestFullscreen ||
element.requestFullscreen ||
element.mozRequestFullScreen ||
element.msRequestFullscreen).call(element)
}
// get fullscreen state
var getFullscreen = function () {
var doc = window.document;
var objFullScreen = doc.fullscreenElement || doc.mozFullScreenElement || doc.webkitFullscreenElement || doc.msFullscreenElement;
return (objFullScreen);
}
// add fullscreenchange event handle
var addEventFullscreenChange = function (callback) {
document.addEventListener("fullscreenchange", callback, false);
document.addEventListener("webkitfullscreenchange", callback, false);
document.addEventListener("mozfullscreenchange", callback, false);
document.addEventListener("MSFullscreenChange", callback, false);
}
// remove fullscreenchange event handle
var removeEventFullscreenChange = function (callback) {
document.removeEventListener("fullscreenchange", callback, false);
document.removeEventListener("webkitfullscreenchange", callback, false);
document.removeEventListener("mozfullscreenchange", callback, false);
document.removeEventListener("MSFullscreenChange", callback, false);
}
var beforeStyle = canvas.style;
var beforeWidth = parseInt(beforeStyle.width);
var beforeHeight = parseInt(beforeStyle.height);
// recv fullscreen function
var fullscreenFunc = function () {
if (getFullscreen()) {
if (keepAspectRatio) {
var ratio = Math.min(window.screen.width / beforeWidth, window.screen.height / beforeHeight);
var width = Math.floor(beforeWidth * ratio);
var height = Math.floor(beforeHeight * ratio);
canvas.style.width = width + 'px';
canvas.style.height = height + 'px';;
} else {
canvas.style.width = window.screen.width + 'px';;
canvas.style.height = window.screen.height + 'px';;
}
} else {
canvas.style.width = beforeWidth + 'px';;
canvas.style.height = beforeHeight + 'px';;
// remove this function
removeEventFullscreenChange(fullscreenFunc);
}
}
// listener fullscreen event
addEventFullscreenChange(fullscreenFunc);
// fullscreen
setFullScreen(container)
}
document.setFullscreen = function (containerId, canvasId, keepAspectRatio) {
var container = document.getElementById(containerId);
var canvas = document.getElementById(canvasId);
document.setFullScreenByElement(container, canvas, keepAspectRatio)
}
},
WebGLSetFullscreen: function () {
var container = document.getElementById('unity-container');
var canvas = document.getElementById('unity-canvas');
var keepAspectRatio = false;
document.setFullScreenByElement(container, canvas, keepAspectRatio);
},
WebGLSetFullscreen2019: function () {
document.makeFullscreen('unityContainer');
},
}
mergeInto(LibraryManager.library, WebGLFullscreen);