Professional

avatarViewer.js

Nov 23rd, 2023
872
0
Never
1
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. 'use strict';
  2. define('avatarControl', [], function () {
  3.     return window.AVATAR;
  4. });
  5.  
  6. define('avatarViewer', ['jquery', 'avatarControl', 'avatarViewer.prerequisites'], function ($, avatarControl, prerequisites) {
  7.     var avatarCanvas = $('.AvatarCanvas')[0],
  8.         currentEquippingAsset = null,
  9.         canEquipAsset = false;
  10.     if (window.location.protocol == 'https:') {
  11.         avatarControl.SetAssetsUrlRoot("https://download-ssl.xboxlive.com/");
  12.     } else {
  13.         avatarControl.SetAssetsUrlRoot("http://download.xboxlive.com/");
  14.     }
  15.  
  16.     $('.zoomToBody').click(function () {
  17.         avatarControl.ZoomToPreset(0);
  18.     });
  19.  
  20.     $('.zoomToHead').click(function () {
  21.         avatarControl.ZoomToPreset(1);
  22.     });
  23.  
  24.     $('.zoomToUpper').click(function () {
  25.         avatarControl.ZoomToPreset(2);
  26.     });
  27.  
  28.     $('.zoomToLower').click(function () {
  29.         avatarControl.ZoomToPreset(3);
  30.     });
  31.  
  32.     function setLoading(isLoading) {
  33.         $('.LoadingAvatarContainer').toggle(isLoading);
  34.     }
  35.  
  36.     function handleAvatarLoaded() {
  37.         if (window.onAvatarLoadingFinished) {
  38.             window.onAvatarLoadingFinished();
  39.         }
  40.     }
  41.  
  42.     function handleGenderMismatchError() {
  43.         if (window.onAvatarGenderMismatch) {
  44.             window.onAvatarGenderMismatch();
  45.         }
  46.     }
  47.  
  48.     function handleUserWithNoAvatar() {
  49.         if (window.onUserWithNoAvatar) {
  50.             window.onUserWithNoAvatar();
  51.         }
  52.     }
  53.  
  54.     function handleLoadAvatarError() {
  55.         if (window.onAvatarEditorGenericError) {
  56.             window.onAvatarEditorGenericError(prerequisites.strings.loadAvatarError);
  57.         }
  58.     }
  59.  
  60.     function handleEquipAssetError() {
  61.         if (window.onAvatarEditorGenericError) {
  62.             window.onAvatarEditorGenericError(prerequisites.strings.equipAssetError);
  63.         }
  64.     }
  65.  
  66.     function equip(assetId) {
  67.         var deferred = $.Deferred();
  68.  
  69.         $(avatarCanvas).show();
  70.         setLoading(true);
  71.  
  72.         if (!canEquipAsset || currentEquippingAsset === assetId) {
  73.             return deferred.reject();
  74.         } else {
  75.             currentEquippingAsset = assetId;
  76.             avatarControl.EquipAsset(assetId).always(function () {
  77.                 currentEquippingAsset = null;
  78.                 setLoading(false);
  79.             }).done(function () {
  80.                 deferred.resolve();
  81.             }).fail(function (err) {
  82.                 switch (err.errorType) {
  83.                     case 'GenderMismatchError':
  84.                         handleGenderMismatchError();
  85.                         break;
  86.                     default:
  87.                         handleEquipAssetError();
  88.                         break;
  89.                 }
  90.                 deferred.reject(err);
  91.             });
  92.         }
  93.         return deferred.promise();
  94.     }
  95.  
  96.     function initialize(event, assetId) {
  97.         var deferred = $.Deferred();
  98.         prerequisites.getManifest().then(function (avatarManifest) {
  99.             if (!avatarManifest) {
  100.                 handleUserWithNoAvatar();
  101.                 deferred.reject();
  102.             }
  103.  
  104.             setLoading(true);
  105.             var presetAsset = assetId || prerequisites.asset;
  106.             if (presetAsset) {
  107.                 avatarControl.LoadManifest(avatarManifest, avatarCanvas);
  108.                 canEquipAsset = true;
  109.                 equip(presetAsset).done(function () {
  110.                     handleAvatarLoaded();
  111.                     deferred.resolve();
  112.                 }).fail(function (err) {
  113.                     deferred.reject(err);
  114.                 });
  115.             } else {
  116.                 avatarControl.LoadAvatar(avatarManifest, avatarCanvas).done(function () {
  117.                     canEquipAsset = true;
  118.                     handleAvatarLoaded();
  119.                     setLoading(false);
  120.                     deferred.resolve();
  121.                 }).fail(function (err) {
  122.                     switch (err.errorType) {
  123.                         case 'BabylonNotSupportedError':
  124.                         case 'BodyMergeError':
  125.                         case 'HeadMergeError':
  126.                         case 'ImportMeshError':
  127.                         case 'ShadersError':
  128.                         default:
  129.                             handleLoadAvatarError();
  130.                             break;
  131.                     }
  132.                     $(avatarCanvas).hide();
  133.                     deferred.reject(err);
  134.                 });
  135.             }
  136.         }).fail(function () {
  137.             handleUserWithNoAvatar();
  138.             deferred.reject();
  139.         });
  140.        
  141.         return deferred.promise();
  142.     }
  143.  
  144.     return {
  145.         initialize: initialize,
  146.         equip: equip
  147.     }
  148. });
Advertisement
Comments
  • User was banned
Add Comment
Please, Sign In to add comment