< Summary

Class:DCL.Interface.WebInterface
Assembly:WebInterface
File(s):/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/WebInterface/Interface.cs
Covered lines:276
Uncovered lines:144
Coverable lines:420
Total lines:1556
Line coverage:65.7% (276 of 420)
Covered branches:0
Total branches:0

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
WebInterface()0%110100%
SceneReady(...)0%110100%
ActivateRenderingACK()0%110100%
DeactivateRenderingACK()0%2100%
OnGlobalPointerEvent()0%2100%
StoreSceneStateEvent()0%110100%
OnTextInputChangeTextEventPayload()0%110100%
operator+(...)0%2100%
OnMetricsUpdate()0%110100%
TransformPayload()0%2100%
SystemInfoReportPayload()0%2100%
JumpInPayload()0%2100%
Property(...)0%2100%
HeadersPayload()0%110100%
AvatarOnClickPayload()0%2100%
StartDecentraland()0%2100%
CheckURLParam(...)0%2100%
GetURLParam(...)0%2100%
MessageFromEngine(...)0%5.395075%
ProcessQueuedMessages()0%330100%
GetGraphicCard()0%2100%
SendMessage(...)0%110100%
SendMessage[T](...)0%110100%
SendJson(...)0%2.062075%
SendSceneEvent[T](...)0%110100%
SendAllScenesEvent[T](...)0%110100%
ReportPosition(...)0%110100%
ReportCameraChanged(...)0%110100%
ReportCameraChanged(...)0%220100%
Web3UseResponse(...)0%2100%
ReportIdleStateChanged(...)0%110100%
ReportControlEvent[T](...)0%110100%
SendRequestHeadersForUrl(...)0%6200%
BuilderInWorldMessage(...)0%110100%
ReportOnClickEvent(...)0%2.032080%
ReportRaycastResult[T, P](...)0%2100%
ReportRaycastHitFirstResult(...)0%2100%
ReportRaycastHitAllResult(...)0%2100%
CreateHitObject(...)0%110100%
SetPointerEventPayload(...)0%220100%
ReportGlobalPointerDownEvent(...)0%110100%
ReportGlobalPointerUpEvent(...)0%110100%
ReportOnPointerDownEvent(...)0%2.012085.71%
ReportOnPointerUpEvent(...)0%2.012085.71%
ReportOnTextSubmitEvent(...)0%2.022083.33%
ReportOnTextInputChangedEvent(...)0%3.192033.33%
ReportOnTextInputChangedTextEvent(...)0%220100%
ReportOnFocusEvent(...)0%2.862040%
ReportOnBlurEvent(...)0%2.862040%
ReportOnScrollChange(...)0%220100%
ReportEvent[T](...)0%2100%
ReportOnMetricsUpdate(...)0%110100%
ReportOnEnterEvent(...)0%6200%
LogOut()0%2100%
RedirectToSignUp()0%2100%
PreloadFinished(...)0%2100%
ReportMousePosition(...)0%2100%
SendScreenshot(...)0%2100%
SetDelightedSurveyEnabled(...)0%110100%
SetScenesLoadRadius(...)0%110100%
SendSaveUserDescriptionPayload(...)0%2100%
RequestOwnProfileUpdate()0%110100%
SendSaveAvatar(...)0%110100%
SendAuthentication(...)0%2100%
SendPassport(...)0%110100%
SendSaveUserUnverifiedName(...)0%2100%
SendSaveUserDescription(...)0%2100%
SendUserAcceptedCollectibles(...)0%110100%
SaveUserTutorialStep(...)0%110100%
SendPerformanceReport(...)0%2100%
SendSystemInfoReport()0%2100%
SendTermsOfServiceResponse(...)0%110100%
SendExpression(...)0%110100%
OpenURL(...)0%110100%
PublishStatefulScene(...)0%110100%
StartIsolatedMode(...)0%110100%
StopIsolatedMode(...)0%110100%
SendReportScene(...)0%2100%
SendReportPlayer(...)0%110100%
SendBlockPlayer(...)0%110100%
SendUnblockPlayer(...)0%2100%
RequestScenesInfoAroundParcel(...)0%110100%
SendAudioStreamEvent(...)0%110100%
SendSetVoiceChatRecording(...)0%2100%
ToggleVoiceChatRecording()0%2100%
ApplySettings(...)0%110100%
RequestGIFProcessor(...)0%2100%
DeleteGIF(...)0%2100%
GoTo(...)0%110100%
GoToCrowd()0%2100%
GoToMagic()0%2100%
JumpIn(...)0%110100%
SendChatMessage(...)0%2100%
UpdateFriendshipStatus(...)0%2100%
ScenesLoadingFeedback(...)0%2100%
FetchHotScenes()0%2100%
SetBaseResolution(...)0%110100%
ReportAnalyticsEvent(...)0%2100%
ReportAnalyticsEvent(...)0%2100%
FetchBalanceOfMANA()0%110100%
SendSceneExternalActionEvent(...)0%110100%
SetMuteUsers(...)0%110100%
SendCloseUserAvatar(...)0%2100%
KillPortableExperience(...)0%2100%
RequestThirdPartyWearables(...)0%110100%
SetDisabledPortableExperiences(...)0%110100%
RequestWearables(...)0%110100%
SearchENSOwner(...)0%110100%
RequestUserProfile(...)0%110100%
ReportAvatarFatalError()0%2100%
UnpublishScene(...)0%2100%
NotifyStatusThroughChat(...)0%2100%
ReportVideoProgressEvent(...)0%110100%
ReportAvatarRemoved(...)0%2100%
ReportAvatarSceneChanged(...)0%2100%
ReportAvatarClick(...)0%2100%
ReportOnPointerHoverEnterEvent(...)0%110100%
ReportOnPointerHoverExitEvent(...)0%110100%
ReportTime(...)0%110100%

File(s)

/tmp/workspace/unity-renderer/unity-renderer/Assets/Scripts/MainScripts/DCL/WebInterface/Interface.cs

#LineLine coverage
 1using System;
 2using System.Collections.Generic;
 3using DCL.CameraTool;
 4using DCL.Helpers;
 5using DCL.Models;
 6using Newtonsoft.Json;
 7using UnityEngine;
 8using Ray = UnityEngine.Ray;
 9
 10#if UNITY_WEBGL && !UNITY_EDITOR
 11using System.Runtime.InteropServices;
 12#endif
 13
 14namespace DCL.Interface
 15{
 16    /**
 17     * This class contains the outgoing interface of Decentraland.
 18     * You must call those functions to interact with the WebInterface.
 19     *
 20     * The messages comming from the WebInterface instead, are reported directly to
 21     * the handler GameObject by name.
 22     */
 23    public static class WebInterface
 24    {
 125        public static bool VERBOSE = false;
 26
 27        [System.Serializable]
 28        public class ReportPositionPayload
 29        {
 30            /** Camera position, world space */
 31            public Vector3 position;
 32
 33            /** Character rotation */
 34            public Quaternion rotation;
 35
 36            /** Camera rotation */
 37            public Quaternion cameraRotation;
 38
 39            /** Camera height, relative to the feet of the avatar or ground */
 40            public float playerHeight;
 41
 42            public Vector3 mousePosition;
 43
 44            public string id;
 45        }
 46
 47        [System.Serializable]
 48        public abstract class ControlEvent
 49        {
 50            public string eventType;
 51        }
 52
 53        public abstract class ControlEvent<T> : ControlEvent
 54        {
 55            public T payload;
 56
 57            protected ControlEvent(string eventType, T payload)
 58            {
 59                this.eventType = eventType;
 60                this.payload = payload;
 61            }
 62        }
 63
 64        [System.Serializable]
 65        public class SceneReady : ControlEvent<SceneReady.Payload>
 66        {
 67            [System.Serializable]
 68            public class Payload
 69            {
 70                public string sceneId;
 71            }
 72
 80873            public SceneReady(string sceneId) : base("SceneReady", new Payload() { sceneId = sceneId }) { }
 74        }
 75
 76        [System.Serializable]
 77        public class ActivateRenderingACK : ControlEvent<object>
 78        {
 279            public ActivateRenderingACK() : base("ActivateRenderingACK", null) { }
 80        }
 81
 82        [System.Serializable]
 83        public class DeactivateRenderingACK : ControlEvent<object>
 84        {
 085            public DeactivateRenderingACK() : base("DeactivateRenderingACK", null) { }
 86        }
 87
 88        [System.Serializable]
 89        public class SceneEvent<T>
 90        {
 91            public string sceneId;
 92            public string eventType;
 93            public T payload;
 94        }
 95
 96        [System.Serializable]
 97        public class AllScenesEvent<T>
 98        {
 99            public string eventType;
 100            public T payload;
 101        }
 102
 103        [System.Serializable]
 104        public class UUIDEvent<TPayload>
 105            where TPayload : class, new()
 106        {
 107            public string uuid;
 108            public TPayload payload = new TPayload();
 109        }
 110
 111        public enum ACTION_BUTTON
 112        {
 113            POINTER = 0,
 114            PRIMARY = 1,
 115            SECONDARY = 2,
 116            ANY = 3,
 117            FORWARD = 4,
 118            BACKWARD = 5,
 119            RIGHT = 6,
 120            LEFT = 7,
 121            JUMP = 8,
 122            WALK = 9,
 123            ACTION_3 = 10,
 124            ACTION_4 = 11,
 125            ACTION_5 = 12,
 126            ACTION_6 = 13
 127        }
 128
 129        [System.Serializable]
 130        public class OnClickEvent : UUIDEvent<OnClickEventPayload> { };
 131
 132        [System.Serializable]
 133        public class CameraModePayload
 134        {
 135            public CameraMode.ModeId cameraMode;
 136        };
 137
 138        [System.Serializable]
 139        public class Web3UseResponsePayload
 140        {
 141            public string id;
 142            public bool result;
 143        };
 144
 145        [System.Serializable]
 146        public class IdleStateChangedPayload
 147        {
 148            public bool isIdle;
 149        };
 150
 151        [System.Serializable]
 152        public class OnPointerDownEvent : UUIDEvent<OnPointerEventPayload> { };
 153
 154        [System.Serializable]
 155        public class OnGlobalPointerEvent
 156        {
 0157            public OnGlobalPointerEventPayload payload = new OnGlobalPointerEventPayload();
 158        };
 159
 160        [System.Serializable]
 161        public class OnPointerUpEvent : UUIDEvent<OnPointerEventPayload> { };
 162
 163        [System.Serializable]
 164        private class OnTextSubmitEvent : UUIDEvent<OnTextSubmitEventPayload> { };
 165
 166        [System.Serializable]
 167        private class OnTextInputChangeEvent : UUIDEvent<OnTextInputChangeEventPayload> { };
 168
 169        [System.Serializable]
 170        private class OnTextInputChangeTextEvent : UUIDEvent<OnTextInputChangeTextEventPayload> { };
 171
 172        [System.Serializable]
 173        private class OnScrollChangeEvent : UUIDEvent<OnScrollChangeEventPayload> { };
 174
 175        [System.Serializable]
 176        private class OnFocusEvent : UUIDEvent<EmptyPayload> { };
 177
 178        [System.Serializable]
 179        private class OnBlurEvent : UUIDEvent<EmptyPayload> { };
 180
 181        [System.Serializable]
 182        public class OnEnterEvent : UUIDEvent<OnEnterEventPayload> { };
 183
 184        [System.Serializable]
 185        public class OnClickEventPayload
 186        {
 187            public ACTION_BUTTON buttonId = ACTION_BUTTON.POINTER;
 188        }
 189
 190        [System.Serializable]
 191        public class SendChatMessageEvent
 192        {
 193            public ChatMessage message;
 194        }
 195
 196        [System.Serializable]
 197        public class RemoveEntityComponentsPayLoad
 198        {
 199            public string entityId;
 200            public string componentId;
 201        };
 202
 203        [System.Serializable]
 204        public class StoreSceneStateEvent
 205        {
 1206            public string type = "StoreSceneState";
 1207            public string payload = "";
 208        };
 209
 210        [System.Serializable]
 211        public class OnPointerEventPayload
 212        {
 213            [System.Serializable]
 214            public class Hit
 215            {
 216                public Vector3 origin;
 217                public float length;
 218                public Vector3 hitPoint;
 219                public Vector3 normal;
 220                public Vector3 worldNormal;
 221                public string meshName;
 222                public string entityId;
 223            }
 224
 225            public ACTION_BUTTON buttonId;
 226            public Vector3 origin;
 227            public Vector3 direction;
 228            public Hit hit;
 229        }
 230
 231        [System.Serializable]
 232        public class OnGlobalPointerEventPayload : OnPointerEventPayload
 233        {
 234            public enum InputEventType
 235            {
 236                DOWN,
 237                UP
 238            }
 239
 240            public InputEventType type;
 241        }
 242
 243        [System.Serializable]
 244        public class OnTextSubmitEventPayload
 245        {
 246            public string id;
 247            public string text;
 248        }
 249
 250        [System.Serializable]
 251        public class OnTextInputChangeEventPayload
 252        {
 253            public string value;
 254        }
 255
 256        [System.Serializable]
 257        public class OnTextInputChangeTextEventPayload
 258        {
 259            [System.Serializable]
 260            public class Payload
 261            {
 262                public string value;
 263                public bool isSubmit;
 264            }
 265
 2266            public Payload value = new Payload();
 267        }
 268
 269        [System.Serializable]
 270        public class OnScrollChangeEventPayload
 271        {
 272            public Vector2 value;
 273            public int pointerId;
 274        }
 275
 276        [System.Serializable]
 277        public class EmptyPayload { }
 278
 279        [System.Serializable]
 280        public class MetricsModel
 281        {
 282            public int meshes;
 283            public int bodies;
 284            public int materials;
 285            public int textures;
 286            public int triangles;
 287            public int entities;
 288
 289            public static MetricsModel operator +(MetricsModel lhs, MetricsModel rhs)
 290            {
 0291                return new MetricsModel()
 292                {
 293                    meshes = lhs.meshes + rhs.meshes,
 294                    bodies = lhs.bodies + rhs.bodies,
 295                    materials = lhs.materials + rhs.materials,
 296                    textures = lhs.textures + rhs.textures,
 297                    triangles = lhs.triangles + rhs.triangles,
 298                    entities = lhs.entities + rhs.entities
 299                };
 300            }
 301        }
 302
 303        [System.Serializable]
 304        private class OnMetricsUpdate
 305        {
 1306            public MetricsModel given = new MetricsModel();
 1307            public MetricsModel limit = new MetricsModel();
 308        }
 309
 310        [System.Serializable]
 311        public class OnEnterEventPayload { }
 312
 313        [System.Serializable]
 314        public class TransformPayload
 315        {
 0316            public Vector3 position = Vector3.zero;
 0317            public Quaternion rotation = Quaternion.identity;
 0318            public Vector3 scale = Vector3.one;
 319        }
 320
 321        public class OnSendScreenshot
 322        {
 323            public string id;
 324            public string encodedTexture;
 325        };
 326
 327        [System.Serializable]
 328        public class GotoEvent
 329        {
 330            public int x;
 331            public int y;
 332        };
 333
 334        [System.Serializable]
 335        public class BaseResolution
 336        {
 337            public int baseResolution;
 338        };
 339
 340        //-----------------------------------------------------
 341        // Raycast
 342        [System.Serializable]
 343        public class RayInfo
 344        {
 345            public Vector3 origin;
 346            public Vector3 direction;
 347            public float distance;
 348        }
 349
 350        [System.Serializable]
 351        public class RaycastHitInfo
 352        {
 353            public bool didHit;
 354            public RayInfo ray;
 355
 356            public Vector3 hitPoint;
 357            public Vector3 hitNormal;
 358        }
 359
 360        [System.Serializable]
 361        public class HitEntityInfo
 362        {
 363            public string entityId;
 364            public string meshName;
 365        }
 366
 367        [System.Serializable]
 368        public class RaycastHitEntity : RaycastHitInfo
 369        {
 370            public HitEntityInfo entity;
 371        }
 372
 373        [System.Serializable]
 374        public class RaycastHitEntities : RaycastHitInfo
 375        {
 376            public RaycastHitEntity[] entities;
 377        }
 378
 379        [System.Serializable]
 380        public class RaycastResponse<T> where T : RaycastHitInfo
 381        {
 382            public string queryId;
 383            public string queryType;
 384            public T payload;
 385        }
 386
 387        // Note (Zak): We need to explicitly define this classes for the JsonUtility to
 388        // be able to serialize them
 389        [System.Serializable]
 390        public class RaycastHitFirstResponse : RaycastResponse<RaycastHitEntity> { }
 391
 392        [System.Serializable]
 393        public class RaycastHitAllResponse : RaycastResponse<RaycastHitEntities> { }
 394
 395        [System.Serializable]
 396        public class SendExpressionPayload
 397        {
 398            public string id;
 399            public long timestamp;
 400        }
 401
 402        [System.Serializable]
 403        public class UserAcceptedCollectiblesPayload
 404        {
 405            public string id;
 406        }
 407
 408        [System.Serializable]
 409        public class SendBlockPlayerPayload
 410        {
 411            public string userId;
 412        }
 413
 414        [System.Serializable]
 415        public class SendUnblockPlayerPayload
 416        {
 417            public string userId;
 418        }
 419
 420        [System.Serializable]
 421        public class TutorialStepPayload
 422        {
 423            public int tutorialStep;
 424        }
 425
 426        [System.Serializable]
 427        public class PerformanceReportPayload
 428        {
 429            public string samples;
 430            public bool fpsIsCapped;
 431            public int hiccupsInThousandFrames;
 432            public float hiccupsTime;
 433            public float totalTime;
 434            public int gltfInProgress;
 435            public int gltfFailed;
 436            public int gltfCancelled;
 437            public int gltfLoaded;
 438            public int abInProgress;
 439            public int abFailed;
 440            public int abCancelled;
 441            public int abLoaded;
 442            public int gltfTexturesLoaded;
 443            public int abTexturesLoaded;
 444            public int promiseTexturesLoaded;
 445            public int enqueuedMessages;
 446            public int processedMessages;
 447            public int playerCount;
 448            public int loadRadius;
 449            public Dictionary<string, long> sceneScores;
 450            public object drawCalls; //int *
 451            public object memoryReserved; //long, in total bytes *
 452            public object memoryUsage; //long, in total bytes *
 453            public object totalGCAlloc; //long, in total bytes, its the sum of all GCAllocs per frame over 1000 frames *
 454
 455            //* is NULL if SendProfilerMetrics is false
 456        }
 457
 458        [System.Serializable]
 459        public class SystemInfoReportPayload
 460        {
 0461            public string graphicsDeviceName = SystemInfo.graphicsDeviceName;
 0462            public string graphicsDeviceVersion = SystemInfo.graphicsDeviceVersion;
 0463            public int graphicsMemorySize = SystemInfo.graphicsMemorySize;
 0464            public string processorType = SystemInfo.processorType;
 0465            public int processorCount = SystemInfo.processorCount;
 0466            public int systemMemorySize = SystemInfo.systemMemorySize;
 467
 468            // TODO: remove useBinaryTransform after ECS7 is fully in prod
 0469            public bool useBinaryTransform = true;
 470        }
 471
 472        [System.Serializable]
 473        public class GenericAnalyticPayload
 474        {
 475            public string eventName;
 476            public Dictionary<object, object> data;
 477        }
 478
 479        [System.Serializable]
 480        public class PerformanceHiccupPayload
 481        {
 482            public int hiccupsInThousandFrames;
 483            public float hiccupsTime;
 484            public float totalTime;
 485        }
 486
 487        [System.Serializable]
 488        public class TermsOfServiceResponsePayload
 489        {
 490            public string sceneId;
 491            public bool dontShowAgain;
 492            public bool accepted;
 493        }
 494
 495        [System.Serializable]
 496        public class OpenURLPayload
 497        {
 498            public string url;
 499        }
 500
 501        [System.Serializable]
 502        public class GIFSetupPayload
 503        {
 504            public string imageSource;
 505            public string id;
 506            public bool isWebGL1;
 507        }
 508
 509        [System.Serializable]
 510        public class RequestScenesInfoAroundParcelPayload
 511        {
 512            public Vector2 parcel;
 513            public int scenesAround;
 514        }
 515
 516        [System.Serializable]
 517        public class AudioStreamingPayload
 518        {
 519            public string url;
 520            public bool play;
 521            public float volume;
 522        }
 523
 524        [System.Serializable]
 525        public class SetScenesLoadRadiusPayload
 526        {
 527            public float newRadius;
 528        }
 529
 530        [System.Serializable]
 531        public class SetVoiceChatRecordingPayload
 532        {
 533            public bool recording;
 534        }
 535
 536        [System.Serializable]
 537        public class ApplySettingsPayload
 538        {
 539            public float voiceChatVolume;
 540            public int voiceChatAllowCategory;
 541        }
 542
 543        [System.Serializable]
 544        public class JumpInPayload
 545        {
 0546            public FriendsController.UserStatus.Realm realm = new FriendsController.UserStatus.Realm();
 547            public Vector2 gridPosition;
 548        }
 549
 550        [System.Serializable]
 551        public class LoadingFeedbackMessage
 552        {
 553            public string message;
 554            public int loadPercentage;
 555        }
 556
 557        [System.Serializable]
 558        public class AnalyticsPayload
 559        {
 560            [System.Serializable]
 561            public class Property
 562            {
 563                public string key;
 564                public string value;
 565
 0566                public Property(string key, string value)
 567                {
 0568                    this.key = key;
 0569                    this.value = value;
 0570                }
 571            }
 572
 573            public string name;
 574            public Property[] properties;
 575        }
 576
 577        [System.Serializable]
 578        public class DelightedSurveyEnabledPayload
 579        {
 580            public bool enabled;
 581        }
 582
 583        [System.Serializable]
 584        public class ExternalActionSceneEventPayload
 585        {
 586            public string type;
 587            public string payload;
 588        }
 589
 590        [System.Serializable]
 591        public class MuteUserPayload
 592        {
 593            public string[] usersId;
 594            public bool mute;
 595        }
 596
 597        [System.Serializable]
 598        public class CloseUserAvatarPayload
 599        {
 600            public bool isSignUpFlow;
 601        }
 602
 603        [System.Serializable]
 604        public class StringPayload
 605        {
 606            public string value;
 607        }
 608
 609        [System.Serializable]
 610        public class KillPortableExperiencePayload
 611        {
 612            public string portableExperienceId;
 613        }
 614
 615        [System.Serializable]
 616        public class SetDisabledPortableExperiencesPayload
 617        {
 618            public string[] idsToDisable;
 619        }
 620
 621        [System.Serializable]
 622        public class WearablesRequestFiltersPayload
 623        {
 624            public string ownedByUser;
 625            public string[] wearableIds;
 626            public string[] collectionIds;
 627            public string thirdPartyId;
 628        }
 629
 630        [System.Serializable]
 631        public class RequestWearablesPayload
 632        {
 633            public WearablesRequestFiltersPayload filters;
 634            public string context;
 635        }
 636
 637        [System.Serializable]
 638        public class HeadersPayload
 639        {
 640            public string method;
 641            public string url;
 1642            public Dictionary<string, object> metadata = new Dictionary<string, object>();
 643        }
 644
 645        [System.Serializable]
 646        public class SearchENSOwnerPayload
 647        {
 648            public string name;
 649            public int maxResults;
 650        }
 651
 652        [System.Serializable]
 653        public class UnpublishScenePayload
 654        {
 655            public string coordinates;
 656        }
 657
 658        [System.Serializable]
 659        public class AvatarStateBase
 660        {
 661            public string type;
 662            public string avatarShapeId;
 663        }
 664
 665        [System.Serializable]
 666        public class AvatarStateSceneChanged : AvatarStateBase
 667        {
 668            public string sceneId;
 669        }
 670
 671        [System.Serializable]
 672        public class AvatarOnClickPayload
 673        {
 674            public string userId;
 0675            public RayInfo ray = new RayInfo();
 676        }
 677
 678        [System.Serializable]
 679        public class TimeReportPayload
 680        {
 681            public float timeNormalizationFactor;
 682            public float cycleTime;
 683            public bool isPaused;
 684            public float time;
 685        }
 686
 687#if UNITY_WEBGL && !UNITY_EDITOR
 688    /**
 689     * This method is called after the first render. It marks the loading of the
 690     * rest of the JS client.
 691     */
 692    [DllImport("__Internal")] public static extern void StartDecentraland();
 693    [DllImport("__Internal")] public static extern void MessageFromEngine(string type, string message);
 694    [DllImport("__Internal")] public static extern string GetGraphicCard();
 695    [DllImport("__Internal")] public static extern void BinaryMessageFromEngine(string sceneId, byte[] bytes, int size);
 696
 697    public static System.Action<string, string> OnMessageFromEngine;
 698#else
 699        public static Action<string, string> OnMessageFromEngine
 700        {
 701            set
 702            {
 82703                OnMessage = value;
 82704                if (OnMessage != null)
 705                {
 41706                    ProcessQueuedMessages();
 707                }
 82708            }
 0709            get => OnMessage;
 710        }
 711        private static Action<string, string> OnMessage;
 712
 1713        private static bool hasQueuedMessages = false;
 1714        private static List<(string, string)> queuedMessages = new List<(string, string)>();
 0715        public static void StartDecentraland() { }
 0716        public static bool CheckURLParam(string targetParam) { return false; }
 0717        public static string GetURLParam(string targetParam) { return String.Empty; }
 718
 719        public static void MessageFromEngine(string type, string message)
 720        {
 3841721            if (OnMessageFromEngine != null)
 722            {
 1940723                if (hasQueuedMessages)
 724                {
 0725                    ProcessQueuedMessages();
 726                }
 727
 1940728                OnMessageFromEngine.Invoke(type, message);
 1940729                if (VERBOSE)
 730                {
 0731                    Debug.Log("MessageFromEngine called with: " + type + ", " + message);
 732                }
 0733            }
 734            else
 735            {
 1901736                lock (queuedMessages)
 737                {
 1901738                    queuedMessages.Add((type, message));
 1901739                }
 740
 1901741                hasQueuedMessages = true;
 742            }
 3841743        }
 744
 745        private static void ProcessQueuedMessages()
 746        {
 41747            hasQueuedMessages = false;
 41748            lock (queuedMessages)
 749            {
 3834750                foreach ((string type, string payload) in queuedMessages)
 751                {
 1876752                    MessageFromEngine(type, payload);
 753                }
 754
 41755                queuedMessages.Clear();
 41756            }
 41757        }
 758
 0759        public static string GetGraphicCard() => "In Editor Graphic Card";
 760#endif
 761
 762        public static void SendMessage(string type)
 763        {
 764            // sending an empty JSON object to be compatible with other messages
 3765            MessageFromEngine(type, "{}");
 3766        }
 767
 768        public static void SendMessage<T>(string type, T message)
 769        {
 1948770            string messageJson = JsonUtility.ToJson(message);
 1948771            SendJson(type, messageJson);
 1948772        }
 773
 774        public static void SendJson(string type, string json)
 775        {
 1948776            if (VERBOSE)
 777            {
 0778                Debug.Log($"Sending message: " + json);
 779            }
 780
 1948781            MessageFromEngine(type, json);
 1948782        }
 783
 1784        private static ReportPositionPayload positionPayload = new ReportPositionPayload();
 1785        private static CameraModePayload cameraModePayload = new CameraModePayload();
 1786        private static Web3UseResponsePayload web3UseResponsePayload = new Web3UseResponsePayload();
 1787        private static IdleStateChangedPayload idleStateChangedPayload = new IdleStateChangedPayload();
 1788        private static OnMetricsUpdate onMetricsUpdate = new OnMetricsUpdate();
 1789        private static OnClickEvent onClickEvent = new OnClickEvent();
 1790        private static OnPointerDownEvent onPointerDownEvent = new OnPointerDownEvent();
 1791        private static OnPointerUpEvent onPointerUpEvent = new OnPointerUpEvent();
 1792        private static OnTextSubmitEvent onTextSubmitEvent = new OnTextSubmitEvent();
 1793        private static OnTextInputChangeEvent onTextInputChangeEvent = new OnTextInputChangeEvent();
 1794        private static OnTextInputChangeTextEvent onTextInputChangeTextEvent = new OnTextInputChangeTextEvent();
 1795        private static OnScrollChangeEvent onScrollChangeEvent = new OnScrollChangeEvent();
 1796        private static OnFocusEvent onFocusEvent = new OnFocusEvent();
 1797        private static OnBlurEvent onBlurEvent = new OnBlurEvent();
 1798        private static OnEnterEvent onEnterEvent = new OnEnterEvent();
 1799        private static OnSendScreenshot onSendScreenshot = new OnSendScreenshot();
 1800        private static OnPointerEventPayload onPointerEventPayload = new OnPointerEventPayload();
 1801        private static OnGlobalPointerEventPayload onGlobalPointerEventPayload = new OnGlobalPointerEventPayload();
 1802        private static OnGlobalPointerEvent onGlobalPointerEvent = new OnGlobalPointerEvent();
 1803        private static AudioStreamingPayload onAudioStreamingEvent = new AudioStreamingPayload();
 1804        private static SetVoiceChatRecordingPayload setVoiceChatRecordingPayload = new SetVoiceChatRecordingPayload();
 1805        private static SetScenesLoadRadiusPayload setScenesLoadRadiusPayload = new SetScenesLoadRadiusPayload();
 1806        private static ApplySettingsPayload applySettingsPayload = new ApplySettingsPayload();
 1807        private static GIFSetupPayload gifSetupPayload = new GIFSetupPayload();
 1808        private static JumpInPayload jumpInPayload = new JumpInPayload();
 1809        private static GotoEvent gotoEvent = new GotoEvent();
 1810        private static SendChatMessageEvent sendChatMessageEvent = new SendChatMessageEvent();
 1811        private static BaseResolution baseResEvent = new BaseResolution();
 1812        private static AnalyticsPayload analyticsEvent = new AnalyticsPayload();
 1813        private static DelightedSurveyEnabledPayload delightedSurveyEnabled = new DelightedSurveyEnabledPayload();
 1814        private static ExternalActionSceneEventPayload sceneExternalActionEvent = new ExternalActionSceneEventPayload();
 1815        private static MuteUserPayload muteUserEvent = new MuteUserPayload();
 1816        private static StoreSceneStateEvent storeSceneState = new StoreSceneStateEvent();
 1817        private static CloseUserAvatarPayload closeUserAvatarPayload = new CloseUserAvatarPayload();
 1818        private static StringPayload stringPayload = new StringPayload();
 1819        private static KillPortableExperiencePayload killPortableExperiencePayload = new KillPortableExperiencePayload()
 1820        private static SetDisabledPortableExperiencesPayload setDisabledPortableExperiencesPayload = new SetDisabledPort
 1821        private static RequestWearablesPayload requestWearablesPayload = new RequestWearablesPayload();
 1822        private static SearchENSOwnerPayload searchEnsOwnerPayload = new SearchENSOwnerPayload();
 1823        private static HeadersPayload headersPayload = new HeadersPayload();
 1824        private static AvatarStateBase avatarStatePayload = new AvatarStateBase();
 1825        private static AvatarStateSceneChanged avatarSceneChangedPayload = new AvatarStateSceneChanged();
 1826        public static AvatarOnClickPayload avatarOnClickPayload = new AvatarOnClickPayload();
 1827        private static UUIDEvent<EmptyPayload> onPointerHoverEnterEvent = new UUIDEvent<EmptyPayload>();
 1828        private static UUIDEvent<EmptyPayload> onPointerHoverExitEvent = new UUIDEvent<EmptyPayload>();
 1829        private static TimeReportPayload timeReportPayload = new TimeReportPayload();
 830
 831        public static void SendSceneEvent<T>(string sceneId, string eventType, T payload)
 832        {
 684833            SceneEvent<T> sceneEvent = new SceneEvent<T>();
 684834            sceneEvent.sceneId = sceneId;
 684835            sceneEvent.eventType = eventType;
 684836            sceneEvent.payload = payload;
 837
 684838            SendMessage("SceneEvent", sceneEvent);
 684839        }
 840
 841        private static void SendAllScenesEvent<T>(string eventType, T payload)
 842        {
 586843            AllScenesEvent<T> allScenesEvent = new AllScenesEvent<T>();
 586844            allScenesEvent.eventType = eventType;
 586845            allScenesEvent.payload = payload;
 846
 586847            SendMessage("AllScenesEvent", allScenesEvent);
 586848        }
 849
 850        public static void ReportPosition(Vector3 position, Quaternion rotation, float playerHeight, Quaternion cameraRo
 851        {
 40852            positionPayload.position = position;
 40853            positionPayload.rotation = rotation;
 40854            positionPayload.playerHeight = playerHeight;
 40855            positionPayload.cameraRotation = cameraRotation;
 856
 40857            SendMessage("ReportPosition", positionPayload);
 40858        }
 859
 1170860        public static void ReportCameraChanged(CameraMode.ModeId cameraMode) { ReportCameraChanged(cameraMode, null); }
 861
 862        public static void ReportCameraChanged(CameraMode.ModeId cameraMode, string targetSceneId)
 863        {
 989864            cameraModePayload.cameraMode = cameraMode;
 989865            if (!string.IsNullOrEmpty(targetSceneId))
 866            {
 404867                SendSceneEvent(targetSceneId, "cameraModeChanged", cameraModePayload);
 404868            }
 869            else
 870            {
 585871                SendAllScenesEvent("cameraModeChanged", cameraModePayload);
 872            }
 585873        }
 874
 875        public static void Web3UseResponse(string id, bool result)
 876        {
 0877            web3UseResponsePayload.id = id;
 0878            web3UseResponsePayload.result = result;
 0879            SendMessage("Web3UseResponse", web3UseResponsePayload);
 0880        }
 881
 882        public static void ReportIdleStateChanged(bool isIdle)
 883        {
 1884            idleStateChangedPayload.isIdle = isIdle;
 1885            SendAllScenesEvent("idleStateChanged", idleStateChangedPayload);
 1886        }
 887
 810888        public static void ReportControlEvent<T>(T controlEvent) where T : ControlEvent { SendMessage("ControlEvent", co
 889
 890        public static void SendRequestHeadersForUrl(string eventName, string method, string url, Dictionary<string, obje
 891        {
 0892            headersPayload.method = method;
 0893            headersPayload.url = url;
 0894            if (metadata != null)
 0895                headersPayload.metadata = metadata;
 0896            SendMessage(eventName, headersPayload);
 0897        }
 898
 8899        public static void BuilderInWorldMessage(string type, string message) { MessageFromEngine(type, message); }
 900
 901        public static void ReportOnClickEvent(string sceneId, string uuid)
 902        {
 6903            if (string.IsNullOrEmpty(uuid))
 904            {
 0905                return;
 906            }
 907
 6908            onClickEvent.uuid = uuid;
 909
 6910            SendSceneEvent(sceneId, "uuidEvent", onClickEvent);
 6911        }
 912
 913        private static void ReportRaycastResult<T, P>(string sceneId, string queryId, string queryType, P payload) where
 914        {
 0915            T response = new T();
 0916            response.queryId = queryId;
 0917            response.queryType = queryType;
 0918            response.payload = payload;
 919
 0920            SendSceneEvent<T>(sceneId, "raycastResponse", response);
 0921        }
 922
 0923        public static void ReportRaycastHitFirstResult(string sceneId, string queryId, RaycastType raycastType, RaycastH
 924
 0925        public static void ReportRaycastHitAllResult(string sceneId, string queryId, RaycastType raycastType, RaycastHit
 926
 927        private static OnPointerEventPayload.Hit CreateHitObject(string entityId, string meshName, Vector3 point,
 928            Vector3 normal, float distance)
 929        {
 19930            OnPointerEventPayload.Hit hit = new OnPointerEventPayload.Hit();
 931
 19932            hit.hitPoint = point;
 19933            hit.length = distance;
 19934            hit.normal = normal;
 19935            hit.worldNormal = normal;
 19936            hit.meshName = meshName;
 19937            hit.entityId = entityId;
 938
 19939            return hit;
 940        }
 941
 942        private static void SetPointerEventPayload(OnPointerEventPayload pointerEventPayload, ACTION_BUTTON buttonId,
 943            string entityId, string meshName, Ray ray, Vector3 point, Vector3 normal, float distance,
 944            bool isHitInfoValid)
 945        {
 20946            pointerEventPayload.origin = ray.origin;
 20947            pointerEventPayload.direction = ray.direction;
 20948            pointerEventPayload.buttonId = buttonId;
 949
 20950            if (isHitInfoValid)
 19951                pointerEventPayload.hit = CreateHitObject(entityId, meshName, point, normal, distance);
 952            else
 1953                pointerEventPayload.hit = null;
 1954        }
 955
 956        public static void ReportGlobalPointerDownEvent(ACTION_BUTTON buttonId, Ray ray, Vector3 point, Vector3 normal,
 957            float distance, string sceneId, string entityId = "0", string meshName = null, bool isHitInfoValid = false)
 958        {
 11959            SetPointerEventPayload((OnPointerEventPayload) onGlobalPointerEventPayload, buttonId,
 960                entityId, meshName, ray, point, normal, distance,
 961                isHitInfoValid);
 11962            onGlobalPointerEventPayload.type = OnGlobalPointerEventPayload.InputEventType.DOWN;
 963
 11964            onGlobalPointerEvent.payload = onGlobalPointerEventPayload;
 965
 11966            SendSceneEvent(sceneId, "actionButtonEvent", onGlobalPointerEvent);
 11967        }
 968
 969        public static void ReportGlobalPointerUpEvent(ACTION_BUTTON buttonId, Ray ray, Vector3 point, Vector3 normal,
 970            float distance, string sceneId, string entityId = "0", string meshName = null, bool isHitInfoValid = false)
 971        {
 3972            SetPointerEventPayload((OnPointerEventPayload) onGlobalPointerEventPayload, buttonId,
 973                entityId, meshName, ray, point, normal, distance,
 974                isHitInfoValid);
 3975            onGlobalPointerEventPayload.type = OnGlobalPointerEventPayload.InputEventType.UP;
 976
 3977            onGlobalPointerEvent.payload = onGlobalPointerEventPayload;
 978
 3979            SendSceneEvent(sceneId, "actionButtonEvent", onGlobalPointerEvent);
 3980        }
 981
 982        public static void ReportOnPointerDownEvent(ACTION_BUTTON buttonId, string sceneId, string uuid,
 983            string entityId, string meshName, Ray ray, Vector3 point, Vector3 normal, float distance)
 984        {
 4985            if (string.IsNullOrEmpty(uuid))
 986            {
 0987                return;
 988            }
 989
 4990            onPointerDownEvent.uuid = uuid;
 4991            SetPointerEventPayload(onPointerEventPayload, buttonId, entityId, meshName, ray, point,
 992                normal, distance, isHitInfoValid: true);
 4993            onPointerDownEvent.payload = onPointerEventPayload;
 994
 4995            SendSceneEvent(sceneId, "uuidEvent", onPointerDownEvent);
 4996        }
 997
 998        public static void ReportOnPointerUpEvent(ACTION_BUTTON buttonId, string sceneId, string uuid, string entityId,
 999            string meshName, Ray ray, Vector3 point, Vector3 normal, float distance)
 1000        {
 21001            if (string.IsNullOrEmpty(uuid))
 1002            {
 01003                return;
 1004            }
 1005
 21006            onPointerUpEvent.uuid = uuid;
 21007            SetPointerEventPayload(onPointerEventPayload, buttonId, entityId, meshName, ray, point,
 1008                normal, distance, isHitInfoValid: true);
 21009            onPointerUpEvent.payload = onPointerEventPayload;
 1010
 21011            SendSceneEvent(sceneId, "uuidEvent", onPointerUpEvent);
 21012        }
 1013
 1014        public static void ReportOnTextSubmitEvent(string sceneId, string uuid, string text)
 1015        {
 21016            if (string.IsNullOrEmpty(uuid))
 1017            {
 01018                return;
 1019            }
 1020
 21021            onTextSubmitEvent.uuid = uuid;
 21022            onTextSubmitEvent.payload.text = text;
 1023
 21024            SendSceneEvent(sceneId, "uuidEvent", onTextSubmitEvent);
 21025        }
 1026
 1027        public static void ReportOnTextInputChangedEvent(string sceneId, string uuid, string text)
 1028        {
 171029            if (string.IsNullOrEmpty(uuid))
 1030            {
 171031                return;
 1032            }
 1033
 01034            onTextInputChangeEvent.uuid = uuid;
 01035            onTextInputChangeEvent.payload.value = text;
 1036
 01037            SendSceneEvent(sceneId, "uuidEvent", onTextInputChangeEvent);
 01038        }
 1039
 1040        public static void ReportOnTextInputChangedTextEvent(string sceneId, string uuid, string text, bool isSubmit)
 1041        {
 191042            if (string.IsNullOrEmpty(uuid))
 1043            {
 161044                return;
 1045            }
 1046
 31047            onTextInputChangeTextEvent.uuid = uuid;
 31048            onTextInputChangeTextEvent.payload.value.value = text;
 31049            onTextInputChangeTextEvent.payload.value.isSubmit = isSubmit;
 1050
 31051            SendSceneEvent(sceneId, "uuidEvent", onTextInputChangeTextEvent);
 31052        }
 1053
 1054        public static void ReportOnFocusEvent(string sceneId, string uuid)
 1055        {
 21056            if (string.IsNullOrEmpty(uuid))
 1057            {
 21058                return;
 1059            }
 1060
 01061            onFocusEvent.uuid = uuid;
 01062            SendSceneEvent(sceneId, "uuidEvent", onFocusEvent);
 01063        }
 1064
 1065        public static void ReportOnBlurEvent(string sceneId, string uuid)
 1066        {
 21067            if (string.IsNullOrEmpty(uuid))
 1068            {
 21069                return;
 1070            }
 1071
 01072            onBlurEvent.uuid = uuid;
 01073            SendSceneEvent(sceneId, "uuidEvent", onBlurEvent);
 01074        }
 1075
 1076        public static void ReportOnScrollChange(string sceneId, string uuid, Vector2 value, int pointerId)
 1077        {
 151078            if (string.IsNullOrEmpty(uuid))
 1079            {
 131080                return;
 1081            }
 1082
 21083            onScrollChangeEvent.uuid = uuid;
 21084            onScrollChangeEvent.payload.value = value;
 21085            onScrollChangeEvent.payload.pointerId = pointerId;
 1086
 21087            SendSceneEvent(sceneId, "uuidEvent", onScrollChangeEvent);
 21088        }
 1089
 01090        public static void ReportEvent<T>(string sceneId, T @event) { SendSceneEvent(sceneId, "uuidEvent", @event); }
 1091
 1092        public static void ReportOnMetricsUpdate(string sceneId, MetricsModel current,
 1093            MetricsModel limit)
 1094        {
 1711095            onMetricsUpdate.given = current;
 1711096            onMetricsUpdate.limit = limit;
 1097
 1711098            SendSceneEvent(sceneId, "metricsUpdate", onMetricsUpdate);
 1711099        }
 1100
 1101        public static void ReportOnEnterEvent(string sceneId, string uuid)
 1102        {
 01103            if (string.IsNullOrEmpty(uuid))
 01104                return;
 1105
 01106            onEnterEvent.uuid = uuid;
 1107
 01108            SendSceneEvent(sceneId, "uuidEvent", onEnterEvent);
 01109        }
 1110
 01111        public static void LogOut() { SendMessage("LogOut"); }
 1112
 01113        public static void RedirectToSignUp() { SendMessage("RedirectToSignUp"); }
 1114
 01115        public static void PreloadFinished(string sceneId) { SendMessage("PreloadFinished", sceneId); }
 1116
 1117        public static void ReportMousePosition(Vector3 mousePosition, string id)
 1118        {
 01119            positionPayload.mousePosition = mousePosition;
 01120            positionPayload.id = id;
 01121            SendMessage("ReportMousePosition", positionPayload);
 01122        }
 1123
 1124        public static void SendScreenshot(string encodedTexture, string id)
 1125        {
 01126            onSendScreenshot.encodedTexture = encodedTexture;
 01127            onSendScreenshot.id = id;
 01128            SendMessage("SendScreenshot", onSendScreenshot);
 01129        }
 1130
 1131        public static void SetDelightedSurveyEnabled(bool enabled)
 1132        {
 661133            delightedSurveyEnabled.enabled = enabled;
 661134            SendMessage("SetDelightedSurveyEnabled", delightedSurveyEnabled);
 661135        }
 1136
 1137        public static void SetScenesLoadRadius(float newRadius)
 1138        {
 11139            setScenesLoadRadiusPayload.newRadius = newRadius;
 11140            SendMessage("SetScenesLoadRadius", setScenesLoadRadiusPayload);
 11141        }
 1142
 1143        [System.Serializable]
 1144        public class SaveAvatarPayload
 1145        {
 1146            public string face256;
 1147            public string body;
 1148            public bool isSignUpFlow;
 1149            public AvatarModel avatar;
 1150        }
 1151
 1152        public static class RendererAuthenticationType
 1153        {
 01154            public static string Guest => "guest";
 01155            public static string WalletConnect => "wallet_connect";
 1156        }
 1157
 1158        [System.Serializable]
 1159        public class SendAuthenticationPayload
 1160        {
 1161            public string rendererAuthenticationType;
 1162        }
 1163
 1164        [System.Serializable]
 1165        public class SendPassportPayload
 1166        {
 1167            public string name;
 1168            public string email;
 1169        }
 1170
 1171        [System.Serializable]
 1172        public class SendSaveUserUnverifiedNamePayload
 1173        {
 1174            public string newUnverifiedName;
 1175        }
 1176
 1177        [System.Serializable]
 1178        public class SendSaveUserDescriptionPayload
 1179        {
 1180            public string description;
 1181
 01182            public SendSaveUserDescriptionPayload(string description) { this.description = description; }
 1183        }
 1184
 1185        [Serializable]
 1186        public class SendVideoProgressEvent
 1187        {
 1188            public string componentId;
 1189            public string sceneId;
 1190            public string videoTextureId;
 1191            public int status;
 1192            public float currentOffset;
 1193            public float videoLength;
 1194        }
 1195
 21196        public static void RequestOwnProfileUpdate() { SendMessage("RequestOwnProfileUpdate"); }
 1197
 1198        public static void SendSaveAvatar(AvatarModel avatar, Texture2D face256Snapshot, Texture2D bodySnapshot, bool is
 1199        {
 11200            var payload = new SaveAvatarPayload()
 1201            {
 1202                avatar = avatar,
 1203                face256 = System.Convert.ToBase64String(face256Snapshot.EncodeToPNG()),
 1204                body = System.Convert.ToBase64String(bodySnapshot.EncodeToPNG()),
 1205                isSignUpFlow = isSignUpFlow
 1206            };
 11207            SendMessage("SaveUserAvatar", payload);
 11208        }
 1209
 01210        public static void SendAuthentication(string rendererAuthenticationType) { SendMessage("SendAuthentication", new
 1211
 21212        public static void SendPassport(string name, string email) { SendMessage("SendPassport", new SendPassportPayload
 1213
 1214        public static void SendSaveUserUnverifiedName(string newName)
 1215        {
 01216            var payload = new SendSaveUserUnverifiedNamePayload()
 1217            {
 1218                newUnverifiedName = newName
 1219            };
 1220
 01221            SendMessage("SaveUserUnverifiedName", payload);
 01222        }
 1223
 01224        public static void SendSaveUserDescription(string about) { SendMessage("SaveUserDescription", new SendSaveUserDe
 1225
 21226        public static void SendUserAcceptedCollectibles(string airdropId) { SendMessage("UserAcceptedCollectibles", new 
 1227
 421228        public static void SaveUserTutorialStep(int newTutorialStep) { SendMessage("SaveUserTutorialStep", new TutorialS
 1229
 1230        public static void SendPerformanceReport(string performanceReportPayload)
 1231        {
 01232            SendJson("PerformanceReport", performanceReportPayload);
 01233        }
 1234
 01235        public static void SendSystemInfoReport() { SendMessage("SystemInfoReport", new SystemInfoReportPayload()); }
 1236
 1237        public static void SendTermsOfServiceResponse(string sceneId, bool accepted, bool dontShowAgain)
 1238        {
 21239            var payload = new TermsOfServiceResponsePayload()
 1240            {
 1241                sceneId = sceneId,
 1242                accepted = accepted,
 1243                dontShowAgain = dontShowAgain
 1244            };
 21245            SendMessage("TermsOfServiceResponse", payload);
 21246        }
 1247
 1248        public static void SendExpression(string expressionID, long timestamp)
 1249        {
 11250            SendMessage("TriggerExpression", new SendExpressionPayload()
 1251            {
 1252                id = expressionID,
 1253                timestamp = timestamp
 1254            });
 11255        }
 1256
 1257        public static void OpenURL(string url)
 1258        {
 1259#if UNITY_WEBGL
 31260            SendMessage("OpenWebURL", new OpenURLPayload { url = url });
 1261#else
 1262            Application.OpenURL(url);
 1263#endif
 31264        }
 1265
 21266        public static void PublishStatefulScene(ProtocolV2.PublishPayload payload) { MessageFromEngine("PublishSceneStat
 1267
 121268        public static void StartIsolatedMode(IsolatedConfig config) { MessageFromEngine("StartIsolatedMode", JsonConvert
 1269
 61270        public static void StopIsolatedMode(IsolatedConfig config) { MessageFromEngine("StopIsolatedMode", JsonConvert.S
 1271
 01272        public static void SendReportScene(string sceneID) { SendMessage("ReportScene", sceneID); }
 1273
 21274        public static void SendReportPlayer(string playerName) { SendMessage("ReportPlayer", playerName); }
 1275
 1276        public static void SendBlockPlayer(string userId)
 1277        {
 11278            SendMessage("BlockPlayer", new SendBlockPlayerPayload()
 1279            {
 1280                userId = userId
 1281            });
 11282        }
 1283
 1284        public static void SendUnblockPlayer(string userId)
 1285        {
 01286            SendMessage("UnblockPlayer", new SendUnblockPlayerPayload()
 1287            {
 1288                userId = userId
 1289            });
 01290        }
 1291
 1292        public static void RequestScenesInfoAroundParcel(Vector2 parcel, int maxScenesArea)
 1293        {
 51294            SendMessage("RequestScenesInfoInArea", new RequestScenesInfoAroundParcelPayload()
 1295            {
 1296                parcel = parcel,
 1297                scenesAround = maxScenesArea
 1298            });
 51299        }
 1300
 1301        public static void SendAudioStreamEvent(string url, bool play, float volume)
 1302        {
 271303            onAudioStreamingEvent.url = url;
 271304            onAudioStreamingEvent.play = play;
 271305            onAudioStreamingEvent.volume = volume;
 271306            SendMessage("SetAudioStream", onAudioStreamingEvent);
 271307        }
 1308
 1309        public static void SendSetVoiceChatRecording(bool recording)
 1310        {
 01311            setVoiceChatRecordingPayload.recording = recording;
 01312            SendMessage("SetVoiceChatRecording", setVoiceChatRecordingPayload);
 01313        }
 1314
 01315        public static void ToggleVoiceChatRecording() { SendMessage("ToggleVoiceChatRecording"); }
 1316
 1317        public static void ApplySettings(float voiceChatVolume, int voiceChatAllowCategory)
 1318        {
 61319            applySettingsPayload.voiceChatVolume = voiceChatVolume;
 61320            applySettingsPayload.voiceChatAllowCategory = voiceChatAllowCategory;
 61321            SendMessage("ApplySettings", applySettingsPayload);
 61322        }
 1323
 1324        public static void RequestGIFProcessor(string gifURL, string gifId, bool isWebGL1)
 1325        {
 01326            gifSetupPayload.imageSource = gifURL;
 01327            gifSetupPayload.id = gifId;
 01328            gifSetupPayload.isWebGL1 = isWebGL1;
 1329
 01330            SendMessage("RequestGIFProcessor", gifSetupPayload);
 01331        }
 1332
 1333        public static void DeleteGIF(string id)
 1334        {
 01335            stringPayload.value = id;
 01336            SendMessage("DeleteGIF", stringPayload);
 01337        }
 1338
 1339        public static void GoTo(int x, int y)
 1340        {
 31341            gotoEvent.x = x;
 31342            gotoEvent.y = y;
 31343            SendMessage("GoTo", gotoEvent);
 31344        }
 1345
 01346        public static void GoToCrowd() { SendMessage("GoToCrowd"); }
 1347
 01348        public static void GoToMagic() { SendMessage("GoToMagic"); }
 1349
 1350        public static void JumpIn(int x, int y, string serverName, string layerName)
 1351        {
 31352            jumpInPayload.realm.serverName = serverName;
 31353            jumpInPayload.realm.layer = layerName;
 1354
 31355            jumpInPayload.gridPosition.x = x;
 31356            jumpInPayload.gridPosition.y = y;
 1357
 31358            SendMessage("JumpIn", jumpInPayload);
 31359        }
 1360
 1361        public static void SendChatMessage(ChatMessage message)
 1362        {
 01363            sendChatMessageEvent.message = message;
 01364            SendMessage("SendChatMessage", sendChatMessageEvent);
 01365        }
 1366
 01367        public static void UpdateFriendshipStatus(FriendsController.FriendshipUpdateStatusMessage message) { SendMessage
 1368
 01369        public static void ScenesLoadingFeedback(LoadingFeedbackMessage message) { SendMessage("ScenesLoadingFeedback", 
 1370
 01371        public static void FetchHotScenes() { SendMessage("FetchHotScenes"); }
 1372
 1373        public static void SetBaseResolution(int resolution)
 1374        {
 21375            baseResEvent.baseResolution = resolution;
 21376            SendMessage("SetBaseResolution", baseResEvent);
 21377        }
 1378
 01379        public static void ReportAnalyticsEvent(string eventName) { ReportAnalyticsEvent(eventName, null); }
 1380
 1381        public static void ReportAnalyticsEvent(string eventName, AnalyticsPayload.Property[] eventProperties)
 1382        {
 01383            analyticsEvent.name = eventName;
 01384            analyticsEvent.properties = eventProperties;
 01385            SendMessage("Track", analyticsEvent);
 01386        }
 1387
 41388        public static void FetchBalanceOfMANA() { SendMessage("FetchBalanceOfMANA"); }
 1389
 1390        public static void SendSceneExternalActionEvent(string sceneId, string type, string payload)
 1391        {
 671392            sceneExternalActionEvent.type = type;
 671393            sceneExternalActionEvent.payload = payload;
 671394            SendSceneEvent(sceneId, "externalAction", sceneExternalActionEvent);
 671395        }
 1396
 1397        public static void SetMuteUsers(string[] usersId, bool mute)
 1398        {
 41399            muteUserEvent.usersId = usersId;
 41400            muteUserEvent.mute = mute;
 41401            SendMessage("SetMuteUsers", muteUserEvent);
 41402        }
 1403
 1404        public static void SendCloseUserAvatar(bool isSignUpFlow)
 1405        {
 01406            closeUserAvatarPayload.isSignUpFlow = isSignUpFlow;
 01407            SendMessage("CloseUserAvatar", closeUserAvatarPayload);
 01408        }
 1409
 1410        // Warning: Use this method only for PEXs non-associated to smart wearables.
 1411        //          For PEX associated to smart wearables use 'SetDisabledPortableExperiences'.
 1412        public static void KillPortableExperience(string portableExperienceId)
 1413        {
 01414            killPortableExperiencePayload.portableExperienceId = portableExperienceId;
 01415            SendMessage("KillPortableExperience", killPortableExperiencePayload);
 01416        }
 1417
 1418        public static void RequestThirdPartyWearables(
 1419            string ownedByUser,
 1420            string thirdPartyCollectionId,
 1421            string context)
 1422        {
 11423            requestWearablesPayload.filters = new WearablesRequestFiltersPayload
 1424            {
 1425                ownedByUser = ownedByUser,
 1426                thirdPartyId = thirdPartyCollectionId,
 1427                collectionIds = null,
 1428                wearableIds = null
 1429            };
 1430
 11431            requestWearablesPayload.context = context;
 1432
 11433            SendMessage("RequestWearables", requestWearablesPayload);
 11434        }
 1435
 1436        public static void SetDisabledPortableExperiences(string[] idsToDisable)
 1437        {
 81438            setDisabledPortableExperiencesPayload.idsToDisable = idsToDisable;
 81439            SendMessage("SetDisabledPortableExperiences", setDisabledPortableExperiencesPayload);
 81440        }
 1441
 1442        public static void RequestWearables(
 1443            string ownedByUser,
 1444            string[] wearableIds,
 1445            string[] collectionIds,
 1446            string context)
 1447        {
 11448            requestWearablesPayload.filters = new WearablesRequestFiltersPayload
 1449            {
 1450                ownedByUser = ownedByUser,
 1451                wearableIds = wearableIds,
 1452                collectionIds = collectionIds,
 1453                thirdPartyId = null
 1454            };
 1455
 11456            requestWearablesPayload.context = context;
 1457
 11458            SendMessage("RequestWearables", requestWearablesPayload);
 11459        }
 1460
 1461        public static void SearchENSOwner(string name, int maxResults)
 1462        {
 61463            searchEnsOwnerPayload.name = name;
 61464            searchEnsOwnerPayload.maxResults = maxResults;
 1465
 61466            SendMessage("SearchENSOwner", searchEnsOwnerPayload);
 61467        }
 1468
 1469        public static void RequestUserProfile(string userId)
 1470        {
 161471            stringPayload.value = userId;
 161472            SendMessage("RequestUserProfile", stringPayload);
 161473        }
 1474
 01475        public static void ReportAvatarFatalError() { SendMessage("ReportAvatarFatalError"); }
 1476
 1477        public static void UnpublishScene(Vector2Int sceneCoordinates)
 1478        {
 01479            var payload = new UnpublishScenePayload() { coordinates = $"{sceneCoordinates.x},{sceneCoordinates.y}" };
 01480            SendMessage("UnpublishScene", payload);
 01481        }
 1482
 1483        public static void NotifyStatusThroughChat(string message)
 1484        {
 01485            stringPayload.value = message;
 01486            SendMessage("NotifyStatusThroughChat", stringPayload);
 01487        }
 1488
 1489        public static void ReportVideoProgressEvent(
 1490            string componentId,
 1491            string sceneId,
 1492            string videoClipId,
 1493            int videoStatus,
 1494            float currentOffset,
 1495            float length)
 1496        {
 451497            SendVideoProgressEvent progressEvent = new SendVideoProgressEvent()
 1498            {
 1499                componentId = componentId,
 1500                sceneId = sceneId,
 1501                videoTextureId = videoClipId,
 1502                status = videoStatus,
 1503                currentOffset = currentOffset,
 1504                videoLength = length
 1505            };
 1506
 451507            SendMessage("VideoProgressEvent", progressEvent);
 451508        }
 1509
 1510        public static void ReportAvatarRemoved(string avatarId)
 1511        {
 01512            avatarStatePayload.type = "Removed";
 01513            avatarStatePayload.avatarShapeId = avatarId;
 01514            SendMessage("ReportAvatarState", avatarStatePayload);
 01515        }
 1516
 1517        public static void ReportAvatarSceneChanged(string avatarId, string sceneId)
 1518        {
 01519            avatarSceneChangedPayload.type = "SceneChanged";
 01520            avatarSceneChangedPayload.avatarShapeId = avatarId;
 01521            avatarSceneChangedPayload.sceneId = sceneId;
 01522            SendMessage("ReportAvatarState", avatarSceneChangedPayload);
 01523        }
 1524
 1525        public static void ReportAvatarClick(string sceneId, string userId, Vector3 rayOrigin, Vector3 rayDirection, flo
 1526        {
 01527            avatarOnClickPayload.userId = userId;
 01528            avatarOnClickPayload.ray.origin = rayOrigin;
 01529            avatarOnClickPayload.ray.direction = rayDirection;
 01530            avatarOnClickPayload.ray.distance = distance;
 1531
 01532            SendSceneEvent(sceneId, "playerClicked", avatarOnClickPayload);
 01533        }
 1534
 1535        public static void ReportOnPointerHoverEnterEvent(string sceneId, string uuid)
 1536        {
 41537            onPointerHoverEnterEvent.uuid = uuid;
 41538            SendSceneEvent(sceneId, "uuidEvent", onPointerHoverEnterEvent);
 41539        }
 1540
 1541        public static void ReportOnPointerHoverExitEvent(string sceneId, string uuid)
 1542        {
 11543            onPointerHoverExitEvent.uuid = uuid;
 11544            SendSceneEvent(sceneId, "uuidEvent", onPointerHoverExitEvent);
 11545        }
 1546
 1547        public static void ReportTime(float time, bool isPaused, float timeNormalizationFactor, float cycleTime)
 1548        {
 61549            timeReportPayload.time = time;
 61550            timeReportPayload.isPaused = isPaused;
 61551            timeReportPayload.timeNormalizationFactor = timeNormalizationFactor;
 61552            timeReportPayload.cycleTime = cycleTime;
 61553            SendMessage("ReportDecentralandTime", timeReportPayload);
 61554        }
 1555    }
 1556}

Methods/Properties

WebInterface()
SceneReady(System.String)
ActivateRenderingACK()
DeactivateRenderingACK()
OnGlobalPointerEvent()
StoreSceneStateEvent()
OnTextInputChangeTextEventPayload()
operator+(DCL.Interface.WebInterface/MetricsModel, DCL.Interface.WebInterface/MetricsModel)
OnMetricsUpdate()
TransformPayload()
SystemInfoReportPayload()
JumpInPayload()
Property(System.String, System.String)
HeadersPayload()
AvatarOnClickPayload()
OnMessageFromEngine(System.Action[String,String])
OnMessageFromEngine()
StartDecentraland()
CheckURLParam(System.String)
GetURLParam(System.String)
MessageFromEngine(System.String, System.String)
ProcessQueuedMessages()
GetGraphicCard()
SendMessage(System.String)
SendMessage[T](System.String, T)
SendJson(System.String, System.String)
SendSceneEvent[T](System.String, System.String, T)
SendAllScenesEvent[T](System.String, T)
ReportPosition(UnityEngine.Vector3, UnityEngine.Quaternion, System.Single, UnityEngine.Quaternion)
ReportCameraChanged(DCL.CameraTool.CameraMode/ModeId)
ReportCameraChanged(DCL.CameraTool.CameraMode/ModeId, System.String)
Web3UseResponse(System.String, System.Boolean)
ReportIdleStateChanged(System.Boolean)
ReportControlEvent[T](T)
SendRequestHeadersForUrl(System.String, System.String, System.String, System.Collections.Generic.Dictionary[String,Object])
BuilderInWorldMessage(System.String, System.String)
ReportOnClickEvent(System.String, System.String)
ReportRaycastResult[T, P](System.String, System.String, System.String, P)
ReportRaycastHitFirstResult(System.String, System.String, DCL.Models.RaycastType, DCL.Interface.WebInterface/RaycastHitEntity)
ReportRaycastHitAllResult(System.String, System.String, DCL.Models.RaycastType, DCL.Interface.WebInterface/RaycastHitEntities)
CreateHitObject(System.String, System.String, UnityEngine.Vector3, UnityEngine.Vector3, System.Single)
SetPointerEventPayload(DCL.Interface.WebInterface/OnPointerEventPayload, DCL.Interface.WebInterface/ACTION_BUTTON, System.String, System.String, UnityEngine.Ray, UnityEngine.Vector3, UnityEngine.Vector3, System.Single, System.Boolean)
ReportGlobalPointerDownEvent(DCL.Interface.WebInterface/ACTION_BUTTON, UnityEngine.Ray, UnityEngine.Vector3, UnityEngine.Vector3, System.Single, System.String, System.String, System.String, System.Boolean)
ReportGlobalPointerUpEvent(DCL.Interface.WebInterface/ACTION_BUTTON, UnityEngine.Ray, UnityEngine.Vector3, UnityEngine.Vector3, System.Single, System.String, System.String, System.String, System.Boolean)
ReportOnPointerDownEvent(DCL.Interface.WebInterface/ACTION_BUTTON, System.String, System.String, System.String, System.String, UnityEngine.Ray, UnityEngine.Vector3, UnityEngine.Vector3, System.Single)
ReportOnPointerUpEvent(DCL.Interface.WebInterface/ACTION_BUTTON, System.String, System.String, System.String, System.String, UnityEngine.Ray, UnityEngine.Vector3, UnityEngine.Vector3, System.Single)
ReportOnTextSubmitEvent(System.String, System.String, System.String)
ReportOnTextInputChangedEvent(System.String, System.String, System.String)
ReportOnTextInputChangedTextEvent(System.String, System.String, System.String, System.Boolean)
ReportOnFocusEvent(System.String, System.String)
ReportOnBlurEvent(System.String, System.String)
ReportOnScrollChange(System.String, System.String, UnityEngine.Vector2, System.Int32)
ReportEvent[T](System.String, T)
ReportOnMetricsUpdate(System.String, DCL.Interface.WebInterface/MetricsModel, DCL.Interface.WebInterface/MetricsModel)
ReportOnEnterEvent(System.String, System.String)
LogOut()
RedirectToSignUp()
PreloadFinished(System.String)
ReportMousePosition(UnityEngine.Vector3, System.String)
SendScreenshot(System.String, System.String)
SetDelightedSurveyEnabled(System.Boolean)
SetScenesLoadRadius(System.Single)
Guest()
WalletConnect()
SendSaveUserDescriptionPayload(System.String)
RequestOwnProfileUpdate()
SendSaveAvatar(AvatarModel, UnityEngine.Texture2D, UnityEngine.Texture2D, System.Boolean)
SendAuthentication(System.String)
SendPassport(System.String, System.String)
SendSaveUserUnverifiedName(System.String)
SendSaveUserDescription(System.String)
SendUserAcceptedCollectibles(System.String)
SaveUserTutorialStep(System.Int32)
SendPerformanceReport(System.String)
SendSystemInfoReport()
SendTermsOfServiceResponse(System.String, System.Boolean, System.Boolean)
SendExpression(System.String, System.Int64)
OpenURL(System.String)
PublishStatefulScene(ProtocolV2/PublishPayload)
StartIsolatedMode(IsolatedConfig)
StopIsolatedMode(IsolatedConfig)
SendReportScene(System.String)
SendReportPlayer(System.String)
SendBlockPlayer(System.String)
SendUnblockPlayer(System.String)
RequestScenesInfoAroundParcel(UnityEngine.Vector2, System.Int32)
SendAudioStreamEvent(System.String, System.Boolean, System.Single)
SendSetVoiceChatRecording(System.Boolean)
ToggleVoiceChatRecording()
ApplySettings(System.Single, System.Int32)
RequestGIFProcessor(System.String, System.String, System.Boolean)
DeleteGIF(System.String)
GoTo(System.Int32, System.Int32)
GoToCrowd()
GoToMagic()
JumpIn(System.Int32, System.Int32, System.String, System.String)
SendChatMessage(DCL.Interface.ChatMessage)
UpdateFriendshipStatus(FriendsController/FriendshipUpdateStatusMessage)
ScenesLoadingFeedback(DCL.Interface.WebInterface/LoadingFeedbackMessage)
FetchHotScenes()
SetBaseResolution(System.Int32)
ReportAnalyticsEvent(System.String)
ReportAnalyticsEvent(System.String, DCL.Interface.WebInterface/AnalyticsPayload/Property[])
FetchBalanceOfMANA()
SendSceneExternalActionEvent(System.String, System.String, System.String)
SetMuteUsers(System.String[], System.Boolean)
SendCloseUserAvatar(System.Boolean)
KillPortableExperience(System.String)
RequestThirdPartyWearables(System.String, System.String, System.String)
SetDisabledPortableExperiences(System.String[])
RequestWearables(System.String, System.String[], System.String[], System.String)
SearchENSOwner(System.String, System.Int32)
RequestUserProfile(System.String)
ReportAvatarFatalError()
UnpublishScene(UnityEngine.Vector2Int)
NotifyStatusThroughChat(System.String)
ReportVideoProgressEvent(System.String, System.String, System.String, System.Int32, System.Single, System.Single)
ReportAvatarRemoved(System.String)
ReportAvatarSceneChanged(System.String, System.String)
ReportAvatarClick(System.String, System.String, UnityEngine.Vector3, UnityEngine.Vector3, System.Single)
ReportOnPointerHoverEnterEvent(System.String, System.String)
ReportOnPointerHoverExitEvent(System.String, System.String)
ReportTime(System.Single, System.Boolean, System.Single, System.Single)