# Conflicts: # CMakeLists.txt # README.md # cmake/externals/glad32es/CMakeLists.txt # cmake/externals/glad41/CMakeLists.txt # cmake/externals/glad45/CMakeLists.txt # cmake/externals/polyvox/CMakeLists.txt # cmake/externals/quazip/CMakeLists.txt # cmake/externals/vhacd/CMakeLists.txt # cmake/init.cmake # cmake/ports/hifi-deps/CONTROL # cmake/ports/sdl2/CONTROL # cmake/ports/sdl2/disable-hidapi-for-uwp.patch # cmake/ports/sdl2/enable-winrt-cmake.patch # cmake/ports/sdl2/fix-arm64-headers.patch # cmake/ports/sdl2/fix-x86-windows.patch # cmake/ports/sdl2/portfile.cmake # cmake/ports/sdl2/vcpkg-cmake-wrapper.cmake # cmake/ports/tbb/portfile.cmake # hifi_vcpkg.py # interface/src/avatar/MyAvatar.h # libraries/avatars-renderer/src/avatars-renderer/Avatar.h # libraries/avatars/src/AvatarData.h # libraries/entities-renderer/src/RenderableEntityItem.h # libraries/entities/src/EntityItem.cpp # libraries/entities/src/EntityItem.h # libraries/fbx/src/GLTFSerializer.cpp # libraries/graphics-scripting/src/graphics-scripting/Forward.h # libraries/networking/src/AddressManager.cpp # libraries/networking/src/DomainHandler.h # libraries/procedural/src/procedural/ProceduralMaterialCache.cpp # libraries/render-utils/src/HighlightEffect.cpp # libraries/render-utils/src/MeshPartPayload.cpp # libraries/render-utils/src/Model.cpp # libraries/render-utils/src/RenderShadowTask.cpp # libraries/script-engine/src/WebSocketClass.cpp
Showing the changes to libraries/script-engine/src/ScriptEngine.cpp (1 of 403 files). Show all
Unified · Split
| @@ -736,6 +736,13 @@ void ScriptEngine::init() { · 735 unmodified lines | |||
| 736 | QScriptValue webSocketConstructorValue = newFunction(WebSocketClass::constructor); | 736 | QScriptValue webSocketConstructorValue = newFunction(WebSocketClass::constructor); |
| 737 | globalObject().setProperty("WebSocket", webSocketConstructorValue); | 737 | globalObject().setProperty("WebSocket", webSocketConstructorValue); |
| 738 | 738 | ||
| 739 | /**jsdoc | ||
| 740 | * Prints a message to the program log and emits {@link Script.printedMessage}. | ||
| 741 | * The message logged is the message values separated by spaces. | ||
| 742 | * <p>Alternatively, you can use {@link Script.print} or one of the {@link console} API methods.</p> | ||
| 743 | * @function print | ||
| 744 | * @param {...*} [message] - The message values to print. | ||
| 745 | */ | ||
| 739 | globalObject().setProperty("print", newFunction(debugPrint)); | 746 | globalObject().setProperty("print", newFunction(debugPrint)); |
| 740 | 747 | ||
| 741 | QScriptValue audioEffectOptionsConstructorValue = newFunction(AudioEffectOptions::constructor); | 748 | QScriptValue audioEffectOptionsConstructorValue = newFunction(AudioEffectOptions::constructor); |
| @@ -1012,6 +1019,12 @@ void ScriptEngine::addEventHandler(const EntityItemID& entityID, const QString& · 270 unmodified lines | |||
| 1012 | }); | 1019 | }); |
| 1013 | 1020 | ||
| 1014 | // Two common cases of event handler, differing only in argument signature. | 1021 | // Two common cases of event handler, differing only in argument signature. |
| 1022 | |||
| 1023 | /**jsdoc | ||
| 1024 | * Called when an entity event occurs on an entity as registered with {@link Script.addEventHandler}. | ||
| 1025 | * @callback Script~entityEventCallback | ||
| 1026 | * @param {Uuid} entityID - The ID of the entity the event has occured on. | ||
| 1027 | */ | ||
| 1015 | using SingleEntityHandler = std::function<void(const EntityItemID&)>; | 1028 | using SingleEntityHandler = std::function<void(const EntityItemID&)>; |
| 1016 | auto makeSingleEntityHandler = [this](QString eventName) -> SingleEntityHandler { | 1029 | auto makeSingleEntityHandler = [this](QString eventName) -> SingleEntityHandler { |
| 1017 | return [this, eventName](const EntityItemID& entityItemID) { | 1030 | return [this, eventName](const EntityItemID& entityItemID) { |
| @@ -1019,6 +1032,12 @@ void ScriptEngine::addEventHandler(const EntityItemID& entityID, const QString& · 1 unmodified line | |||
| 1019 | }; | 1032 | }; |
| 1020 | }; | 1033 | }; |
| 1021 | 1034 | ||
| 1035 | /**jsdoc | ||
| 1036 | * Called when a pointer event occurs on an entity as registered with {@link Script.addEventHandler}. | ||
| 1037 | * @callback Script~pointerEventCallback | ||
| 1038 | * @param {Uuid} entityID - The ID of the entity the event has occurred on. | ||
| 1039 | * @param {PointerEvent} pointerEvent - Details of the event. | ||
| 1040 | */ | ||
| 1022 | using PointerHandler = std::function<void(const EntityItemID&, const PointerEvent&)>; | 1041 | using PointerHandler = std::function<void(const EntityItemID&, const PointerEvent&)>; |
| 1023 | auto makePointerHandler = [this](QString eventName) -> PointerHandler { | 1042 | auto makePointerHandler = [this](QString eventName) -> PointerHandler { |
| 1024 | return [this, eventName](const EntityItemID& entityItemID, const PointerEvent& event) { | 1043 | return [this, eventName](const EntityItemID& entityItemID, const PointerEvent& event) { |
| @@ -1028,6 +1047,13 @@ void ScriptEngine::addEventHandler(const EntityItemID& entityID, const QString& · 3 unmodified lines | |||
| 1028 | }; | 1047 | }; |
| 1029 | }; | 1048 | }; |
| 1030 | 1049 | ||
| 1050 | /**jsdoc | ||
| 1051 | * Called when a collision event occurs on an entity as registered with {@link Script.addEventHandler}. | ||
| 1052 | * @callback Script~collisionEventCallback | ||
| 1053 | * @param {Uuid} entityA - The ID of one entity in the collision. | ||
| 1054 | * @param {Uuid} entityB - The ID of the other entity in the collision. | ||
| 1055 | * @param {Collision} collisionEvent - Details of the collision. | ||
| 1056 | */ | ||
| 1031 | using CollisionHandler = std::function<void(const EntityItemID&, const EntityItemID&, const Collision&)>; | 1057 | using CollisionHandler = std::function<void(const EntityItemID&, const EntityItemID&, const Collision&)>; |
| 1032 | auto makeCollisionHandler = [this](QString eventName) -> CollisionHandler { | 1058 | auto makeCollisionHandler = [this](QString eventName) -> CollisionHandler { |
| 1033 | return [this, eventName](const EntityItemID& idA, const EntityItemID& idB, const Collision& collision) { | 1059 | return [this, eventName](const EntityItemID& idA, const EntityItemID& idB, const Collision& collision) { |
| @@ -1037,28 +1063,39 @@ void ScriptEngine::addEventHandler(const EntityItemID& entityID, const QString& · 3 unmodified lines | |||
| 1037 | }; | 1063 | }; |
| 1038 | 1064 | ||
| 1039 | /**jsdoc | 1065 | /**jsdoc |
| 1040 | * <p>The name of an entity event. When the entity event occurs, any function that has been registered for that event via | 1066 | * <p>The name of an entity event. When the entity event occurs, any function that has been registered for that event |
| 1041 | * {@link Script.addEventHandler} is called with parameters per the entity event.</p> | 1067 | * via {@link Script.addEventHandler} is called with parameters per the entity event.</p> |
| 1042 | * <table> | 1068 | * <table> |
| 1043 | * <thead> | 1069 | * <thead> |
| 1044 | * <tr><th>Event Name</th><th>Entity Event</th></tr> | 1070 | * <tr><th>Event Name</th><th>Callback Type</th><th>Entity Event</th></tr> |
| 1045 | * </thead> | 1071 | * </thead> |
| 1046 | * <tbody> | 1072 | * <tbody> |
| 1047 | * <tr><td><code>"enterEntity"</code></td><td>{@link Entities.enterEntity}</td></tr> | 1073 | * <tr><td><code>"enterEntity"</code></td><td>{@link Script~entityEventCallback|entityEventCallback}</td> |
| 1048 | * <tr><td><code>"leaveEntity"</code></td><td>{@link Entities.leaveEntity}</td></tr> | 1074 | * <td>{@link Entities.enterEntity}</td></tr> |
| 1049 | * <tr><td><code>"mousePressOnEntity"</code></td><td>{@link Entities.mousePressOnEntity}</td></tr> | 1075 | * <tr><td><code>"leaveEntity"</code></td><td>{@link Script~entityEventCallback|entityEventCallback}</td> |
| 1050 | * <tr><td><code>"mouseMoveOnEntity"</code></td><td>{@link Entities.mouseMoveOnEntity}</td></tr> | 1076 | * <td>{@link Entities.leaveEntity}</td></tr> |
| 1051 | * <tr><td><code>"mouseReleaseOnEntity"</code></td><td>{@link Entities.mouseReleaseOnEntity}</td></tr> | 1077 | * <tr><td><code>"mousePressOnEntity"</code></td><td>{@link Script~pointerEventCallback|pointerEventCallback}</td> |
| 1052 | * <tr><td><code>"clickDownOnEntity"</code></td><td>{@link Entities.clickDownOnEntity}</td></tr> | 1078 | * <td>{@link Entities.mousePressOnEntity}</td></tr> |
| 1053 | * <tr><td><code>"holdingClickOnEntity"</code></td><td>{@link Entities.holdingClickOnEntity}</td></tr> | 1079 | * <tr><td><code>"mouseMoveOnEntity"</code></td><td>{@link Script~pointerEventCallback|pointerEventCallback}</td> |
| 1054 | * <tr><td><code>"clickReleaseOnEntity"</code></td><td>{@link Entities.clickReleaseOnEntity}</td></tr> | 1080 | * <td>{@link Entities.mouseMoveOnEntity}</td></tr> |
| 1055 | * <tr><td><code>"hoverEnterEntity"</code></td><td>{@link Entities.hoverEnterEntity}</td></tr> | 1081 | * <tr><td><code>"mouseReleaseOnEntity"</code></td><td>{@link Script~pointerEventCallback|pointerEventCallback}</td> |
| 1056 | * <tr><td><code>"hoverOverEntity"</code></td><td>{@link Entities.hoverOverEntity}</td></tr> | 1082 | * <td>{@link Entities.mouseReleaseOnEntity}</td></tr> |
| 1057 | * <tr><td><code>"hoverLeaveEntity"</code></td><td>{@link Entities.hoverLeaveEntity}</td></tr> | 1083 | * <tr><td><code>"clickDownOnEntity"</code></td><td>{@link Script~pointerEventCallback|pointerEventCallback}</td> |
| 1058 | * <tr><td><code>"collisionWithEntity"</code></td><td>{@link Entities.collisionWithEntity}</td></tr> | 1084 | * <td>{@link Entities.clickDownOnEntity}</td></tr> |
| 1085 | * <tr><td><code>"holdingClickOnEntity"</code></td><td>{@link Script~pointerEventCallback|pointerEventCallback}</td> | ||
| 1086 | * <td>{@link Entities.holdingClickOnEntity}</td></tr> | ||
| 1087 | * <tr><td><code>"clickReleaseOnEntity"</code></td><td>{@link Script~pointerEventCallback|pointerEventCallback}</td> | ||
| 1088 | * <td>{@link Entities.clickReleaseOnEntity}</td></tr> | ||
| 1089 | * <tr><td><code>"hoverEnterEntity"</code></td><td>{@link Script~pointerEventCallback|pointerEventCallback}</td> | ||
| 1090 | * <td>{@link Entities.hoverEnterEntity}</td></tr> | ||
| 1091 | * <tr><td><code>"hoverOverEntity"</code></td><td>{@link Script~pointerEventCallback|pointerEventCallback}</td> | ||
| 1092 | * <td>{@link Entities.hoverOverEntity}</td></tr> | ||
| 1093 | * <tr><td><code>"hoverLeaveEntity"</code></td><td>{@link Script~pointerEventCallback|pointerEventCallback}</td> | ||
| 1094 | * <td>{@link Entities.hoverLeaveEntity}</td></tr> | ||
| 1095 | * <tr><td><code>"collisionWithEntity"</code><td>{@link Script~collisionEventCallback|collisionEventCallback}</td> | ||
| 1096 | * </td><td>{@link Entities.collisionWithEntity}</td></tr> | ||
| 1059 | * </tbody> | 1097 | * </tbody> |
| 1060 | * </table> | 1098 | * </table> |
| 1061 | * | ||
| 1062 | * @typedef {string} Script.EntityEvent | 1099 | * @typedef {string} Script.EntityEvent |
| 1063 | */ | 1100 | */ |
| 1064 | connect(entities.data(), &EntityScriptingInterface::enterEntity, this, makeSingleEntityHandler("enterEntity")); | 1101 | connect(entities.data(), &EntityScriptingInterface::enterEntity, this, makeSingleEntityHandler("enterEntity")); |