skinview3d/js/example.js

104 lines
2.5 KiB
JavaScript
Raw Normal View History

2018-02-12 07:02:47 +01:00
// Use pure ES5 for max browser compatibility
var skinViewer, control, handles = {}, globalAnimationSpeed = 1;
var skinParts = {}
2018-02-12 07:02:47 +01:00
function el(id) {
return document.getElementById(id);
2018-02-12 07:02:47 +01:00
}
function initSkinViewer() {
if (skinViewer instanceof skinview3d.SkinViewer) {
skinViewer.dispose();
handles = {};
control = undefined;
}
// Reset animation speed
el('speed').value = globalAnimationSpeed = 1;
2020-06-19 11:37:52 +02:00
skinViewer = new skinview3d.SkinViewer(el("skin_container"), {
width: el('width').value,
2020-06-19 11:37:52 +02:00
height: el('height').value
});
2020-06-19 11:37:52 +02:00
reloadTextures();
skinViewer.camera.position.z = 70;
control = skinview3d.createOrbitControls(skinViewer);
var parts = skinViewer.playerObject.skin;
// set inner parts
skinParts.head = parts.head.innerLayer;
skinParts.body = parts.body.innerLayer;
skinParts.leftArm = parts.leftArm.innerLayer;
skinParts.rightArm = parts.rightArm.innerLayer;
skinParts.leftLeg = parts.leftLeg.innerLayer;
skinParts.rightLeg = parts.rightLeg.innerLayer;
// set outter parts
skinParts.head2 = parts.head.outerLayer;
skinParts.body2 = parts.body.outerLayer;
skinParts.leftArm2 = parts.leftArm.outerLayer;
skinParts.rightArm2 = parts.rightArm.outerLayer;
skinParts.leftLeg2 = parts.leftLeg.outerLayer;
skinParts.rightLeg2 = parts.rightLeg.outerLayer;
2018-02-12 07:02:47 +01:00
}
2020-06-19 11:37:52 +02:00
function reloadTextures() {
var skinUrl = el('skin_url').value;
2020-06-19 11:37:52 +02:00
var capeUrl = el('cape_url').value;
skinViewer.loadSkin(skinUrl === "" ? null : skinUrl);
skinViewer.loadCape(capeUrl === "" ? null : capeUrl);
2018-02-12 07:02:47 +01:00
}
function resizeSkinViewer() {
skinViewer.width = el('width').value;
skinViewer.height = el('height').value;
2018-02-12 07:02:47 +01:00
}
function pause() {
2020-01-07 06:54:21 +01:00
skinViewer.animations.paused = !skinViewer.animations.paused;
2018-02-12 07:02:47 +01:00
}
function walk() {
if (handles.run) {
handles.run.remove();
delete handles.run;
}
2018-02-12 07:02:47 +01:00
2020-01-07 06:54:21 +01:00
handles.walk = handles.walk || skinViewer.animations.add(skinview3d.WalkingAnimation);
2018-02-12 07:02:47 +01:00
}
function run() {
if (handles.walk) {
handles.walk.remove();
delete handles.walk;
}
2018-02-12 07:02:47 +01:00
2020-01-07 06:54:21 +01:00
handles.run = handles.run || skinViewer.animations.add(skinview3d.RunningAnimation);
2018-02-12 07:02:47 +01:00
}
function rotate() {
if (handles.rotate) {
handles.rotate.paused = !handles.rotate.paused;
} else {
2020-01-07 06:54:21 +01:00
handles.rotate = skinViewer.animations.add(skinview3d.RotatingAnimation);
}
}
function togglePart(partName) {
skinParts[partName].visible = !skinParts[partName].visible;
2018-02-12 07:02:47 +01:00
}
function setGlobalAnimationSpeed() {
var currentSpeed = el('speed').value;
2018-02-12 07:02:47 +01:00
if (!isNaN(currentSpeed)) {
2020-01-07 06:54:21 +01:00
skinViewer.animations.speed = currentSpeed;
}
2018-02-12 07:02:47 +01:00
}