repo: janusweb action: commit revision: path_from: revision_from: f8b0379f29d89d7a949484491b11eeb7967cbb37: path_to: revision_to:
commit f8b0379f29d89d7a949484491b11eeb7967cbb37 Author: James BaicoianuDate: Fri Oct 4 17:32:39 2024 -0700 Support RPM API V2 + gendered animations diff --git a/media/assets/webui/apps/avatar/avatar.js b/media/assets/webui/apps/avatar/avatar.js
--- a/media/assets/webui/apps/avatar/avatar.js
+++ b/media/assets/webui/apps/avatar/avatar.js
@@ -67,7 +67,7 @@ elation.elements.define('janus-avatar-picker', class extends elation.elements.ba
-
+
`;
@@ -226,20 +226,54 @@ this.appendChild(this.previewwindow);
}
handleWindowMessage(ev) {
if (ev.origin.match(/https:\/\/.*\.readyplayer\.me/)) {
- let avatarurl = ev.data;
- let avatarstr = `
-
-
-
-
-
-
-
-
-
-`;
- player.setAvatar(avatarstr);
- this.handleAvatarSelect({data: { url: 'data:text/plain,' + avatarstr } });
+ if (ev.data.indexOf('https:') == 0) {
+ // raw URL
+ let avatarurl = ev.data;
+ let avatarstr = `
+
+
+
+
+
+
+
+
+
+ `;
+ player.setAvatar(avatarstr);
+ this.handleAvatarSelect({data: { url: 'data:text/plain,' + avatarstr } });
+ } else if (ev.data[0] == '{') {
+ // frame API
+ let apimsg = JSON.parse(ev.data);
+ let frame = this.querySelector('iframe'); // FIXME - hacky
+ if (apimsg.eventName == 'v1.frame.ready') {
+ frame.contentWindow.postMessage(JSON.stringify({
+ target: 'readyplayerme',
+ type: 'subscribe',
+ eventName: 'v2.**'
+ }), '*');
+ } else if (apimsg.eventName == 'v2.avatar.exported') {
+ let avatarurl = apimsg.data.url;
+ let animurl = 'https://assets.metacade.com/james/readyplayerme/animations.glb';
+ if (apimsg.data.metadata.gender == 'female') {
+ animurl = 'https://assets.metacade.com/james/readyplayerme/animations-rpm-female.glb';
+ }
+ // TODO - select avatar pack based on metadata.gender
+ let avatarstr = `
+
+
+
+
+
+
+
+
+
+ `;
+ player.setAvatar(avatarstr);
+ this.handleAvatarSelect({data: { url: 'data:text/plain,' + avatarstr } });
+ }
+ }
}
}
});
-----END OF PAGE-----