Compare commits

..

972 commits

Author SHA1 Message Date
ad546c998f Create Windows release builds. 2024-06-27 14:59:08 +02:00
Dale Glass
6f3a1741ff
Merge pull request #1039 from JulianGro/remove-RELEASE_NAME
Remove RELEASE_NAME
2024-06-22 21:40:14 +02:00
Dale Glass
a1e7f7a03e
Merge pull request #1029 from overte-org/fix/entity_server_log
Fix long messages in Entity script log
2024-06-22 21:38:22 +02:00
6d20b5a887
Merge pull request #1032 from JulianGro/qt5.15.14
Update Ubuntu 20.04 amd64 Qt package
2024-06-21 08:04:39 +02:00
fa514bc52d
Merge pull request #1037 from overte-org/fix/bad_weak_ptr
Fix unhandled std::bad_weak_ptr
2024-06-20 23:31:13 +02:00
81f1da9f48
Merge pull request #1040 from overte-org/JulianGro-patch-1
Remove note about secure WebSockets not being supported.
2024-06-20 23:21:48 +02:00
24c7b6729a
Remove note about secure WebSockets not being supported.
It just works, even though nobody touched the code in years. Maybe it was broken in older Qt versions?
2024-06-18 22:24:32 +02:00
c68d966131 Remove RELEASE_NAME from build documentation. 2024-06-18 15:09:13 +02:00
Kalila L
c2382e2e91 Revert "Add releaseName property to About namespace."
This reverts commit 8abfe2ead0.
2024-06-18 15:09:03 +02:00
2617711cf9 Revert "Add "RELEASE_NAME" env variable."
This reverts commit a0747b2912.

Conflicts:
	cmake/templates/BuildInfo.h.in
	interface/src/Application.cpp
2024-06-18 15:08:48 +02:00
9d8b801a77 Fix unhandled std::bad_weak_ptr 2024-06-18 00:40:04 +02:00
f928307412 Update Ubuntu 20.04 amd64 Qt package to 5.15.14 with QtWebEngine 5.15.17. 2024-06-17 20:34:18 +02:00
d0a752082c Fix long messages in Entity script log 2024-06-15 22:01:31 +02:00
c8eb453358
Merge pull request #1022 from overte-org/0000.00.GitHub_Actions_Release_builds
GitHub Actions server release builds
2024-06-15 22:00:22 +02:00
3006699488
Merge branch 'master' into 0000.00.GitHub_Actions_Release_builds 2024-06-15 22:00:02 +02:00
893e1f98fa
Merge pull request #1023 from JulianGro/Update-deprecated-gha
Update from deprecated actions/checkout and actions/upload-artifact
2024-06-15 21:26:48 +02:00
df365271f6
Merge pull request #1026 from JulianGro/external_refrences
Remove some external refrences
2024-06-15 21:26:17 +02:00
d09be20e7f Create Debian and RPM server release builds. 2024-06-15 21:25:08 +02:00
8f7c684c36 Upload every build to the GitHub artifact storage, instead of just PR builds. 2024-06-15 21:25:08 +02:00
9170fcb74e Add Fedora 40 artifact pattern. 2024-06-15 21:25:08 +02:00
686781255b
Merge pull request #1021 from overte-org/hetzner-scaling
GitHub Action Runner auto-scaling
2024-06-15 21:23:32 +02:00
b3eadb5b1e
Merge pull request #1024 from overte-org/fix/entity_script_messages
Temporary fix for some script messages not being transmitted
2024-06-15 21:23:25 +02:00
Dale Glass
93549fb636
Merge pull request #1025 from JulianGro/fix-rpm
Fix RPM packaging
2024-06-15 21:22:58 +02:00
0ad492c48f Remove broken external reference from tools/nitpick/AppDataHighFidelity/Interface.json 2024-06-15 15:40:56 +02:00
245da8eb19 Remove external reference to FloofChat.js. 2024-06-15 15:39:58 +02:00
0a0521428c Remove Qt packages for EOL systems. 2024-06-15 15:39:30 +02:00
68987b8690 Fix RPM packaging. 2024-06-14 20:39:24 +02:00
5507ac3632
Merge pull request #1018 from JulianGro/remove_broken_ccache
Remove broken ccache macro
2024-06-14 08:25:31 +02:00
e490716845 Temporary fix for some script messages not being transmitted 2024-06-13 23:11:52 +02:00
c65d84446b Update from deprecated actions/checkout and actions/upload-artifact versions to v4. 2024-06-13 21:34:06 +02:00
8edc480890 Disable VCPKG binary caching to save on build time. 2024-06-13 19:30:01 +02:00
df5fcf8ad0 Use Hetzner auto-scaler for GitHub Actiosn builds. 2024-06-13 19:29:38 +02:00
dfd397ebfc Remove broken ccache makro.
This threw a whole bunch of errors when being used, and made use of questionable settings, some of which I couldn't find documentation for.
It has also become really easy to use ccache with cmake through the following environment variables; CMAKE_CXX_COMPILER_LAUNCHER=ccache CMAKE_C_COMPILER_LAUNCHER=ccache
2024-06-12 20:29:53 +02:00
38d399e535 Update build_server_package.bash to include RELEASE_NUMBER. 2024-06-12 20:25:38 +02:00
HifiExperiments
9a2f0f7704
Merge pull request #937 from HifiExperiments/text
Text Entity Improvements
2024-06-10 22:59:44 -07:00
Dale Glass
d7d84c661f
Merge pull request #1013 from HifiExperiments/warnings_master2
Fix new debug build warning
2024-06-08 23:15:33 +02:00
HifiExperiments
bc45c17a19 debug warning fix 2024-06-08 14:12:45 -07:00
Dale Glass
9047d6a190
Merge pull request #1007 from HifiExperiments/warnings_master2
Fix more warnings
2024-06-08 21:31:21 +02:00
32944d48ba
Merge pull request #1010 from JulianGro/fedora-40
Add Fedora 40 servers
2024-06-08 13:05:36 +02:00
435fc0f9f1
Merge pull request #1011 from JulianGro/server_packaging
Add a script to more easily build Debian and RPM server packages.
2024-06-08 13:01:50 +02:00
3a8241aa91 Add a script to more easily build Debian and RPM server packages. 2024-06-08 12:48:02 +02:00
0c600d349f Remove Fedora 38 since it's End Of Life. 2024-06-08 12:01:39 +02:00
a882e247c1 Enable Fedora-40 linux_server_build workflow. 2024-06-08 12:00:34 +02:00
04e0a5f4fd Enable Fedora-39 linux_server_build workflow. 2024-06-08 11:59:56 +02:00
4777166659 Add Dockerfile for building servers on Fedora 40. 2024-06-08 11:56:59 +02:00
6bbc7b40d6 Fix egrep deprecation warning. 2024-06-08 11:56:43 +02:00
61caff7bab Fix newer versions of rpmbuild not finding the LICENSE file. 2024-06-08 11:56:28 +02:00
HifiExperiments
93276a901d one more warning 2024-06-07 14:22:02 -07:00
HifiExperiments
5933627aa7 a few more windows warnings 2024-06-06 18:00:11 -07:00
HifiExperiments
f0da309a4f fix more warnings 2024-06-06 18:00:11 -07:00
HifiExperiments
c857228763
Merge pull request #1006 from HifiExperiments/warnings_master
Fix Locker issue in RecordingScriptingInterface
2024-06-06 17:27:04 -07:00
HifiExperiments
e351a92310
Merge pull request #1 from overte-org/fix/recording_deadlock
Fix recording deadlocks
2024-06-06 17:02:15 -07:00
5ba1fcecb5 Fix recording deadlocks 2024-06-07 01:24:34 +02:00
HifiExperiments
444d52070a fix locker issue 2024-06-06 11:31:50 -07:00
Dale Glass
a79b714c95
Merge pull request #1003 from HifiExperiments/warnings_master
Fix some warnings
2024-06-06 16:43:48 +02:00
Dale Glass
64e9be10ad
Merge pull request #998 from daleglass-overte/opengl-error-logging
Send OpenGL errors to log on debug builds
2024-06-05 23:36:15 +02:00
HifiExperiments
2ae2f29b29 Apply suggestions from code review
Co-authored-by: Dale Glass <51060919+daleglass@users.noreply.github.com>
2024-06-05 13:35:28 -07:00
HifiExperiments
e6f462e04a fix some warnings 2024-06-05 13:35:16 -07:00
HifiExperiments
62bfab962d fix _spaceWidth, update docs to note only png supported, possible fix for text scrambling 2024-06-04 20:30:38 -07:00
Dale Glass
af2bafe04a Found a better constant to test 2024-06-05 00:18:45 +02:00
Dale Glass
77b3e83795 Send OpenGL errors to log on debug builds 2024-06-05 00:13:08 +02:00
Dale Glass
53de22fd00
Merge pull request #993 from daleglass-overte/skip-capacity-test-in-debug
Skip packet capacity test when built in debug mode, as it triggers an assertion
2024-06-03 23:56:16 +02:00
Dale Glass
6c754c1ef2
Merge pull request #995 from daleglass-overte/improve-network-debugging
Improve network debugging messages to help with Conan PR
2024-06-03 23:56:03 +02:00
Dale Glass
cd8459ffa5
Merge pull request #996 from daleglass-overte/add-qt-network-tests
Add very basic HTTP and HTTPS network tests.
2024-06-03 23:43:20 +02:00
Dale Glass
524863e9da
Merge pull request #994 from daleglass-overte/fix-resource-request-test
Add missing dependencymanager call, fixes test crash
2024-06-03 23:27:21 +02:00
Dale Glass
338256f234 Further explanatory comments 2024-06-03 23:14:11 +02:00
Dale Glass
aaf08cf523 Add another SSL test.
One gets the SSL version string. That initializes something in the guts of Qt,
and gets things unstuck. Another doesn't and gets stuck if called as the only test.
2024-06-03 23:10:17 +02:00
Dale Glass
57fcc378bf Expand the test 2024-06-03 20:55:38 +02:00
Dale Glass
62cd9c64c1 Fix indentation 2024-06-03 01:13:47 +02:00
Dale Glass
7076669635 Add very basic HTTP and HTTPS network tests.
This seems to reproduce the problem I'm having with the Conan PR
2024-06-03 01:11:48 +02:00
Dale Glass
5f93345d1f Improve network debugging messages to help with Conan PR 2024-06-03 00:24:29 +02:00
Dale Glass
70662da564 Add missing dependencymanager call, fixes text crash 2024-06-02 20:53:41 +02:00
Dale Glass
b1aa801714 Skip packet capacity test when built in debug mode, as it triggers an assertion 2024-06-02 10:49:17 +02:00
Dale Glass
44d61e44e2
Merge pull request #991 from daleglass-overte/fix-tests
Fix tests
2024-06-01 21:31:08 +02:00
Dale Glass
30d5d6456c Log free space and an explanatory message. Fixes #971 2024-06-01 21:28:08 +02:00
Dale Glass
1e3ef06c35 Fill with zeroes instead of sizeof 2024-06-01 21:21:30 +02:00
Dale Glass
1f4116d283 Fix memory leak and memory overwrite. Closes #969 2024-06-01 20:08:55 +02:00
Dale Glass
bbc7c0a146 Replace randomization code, fixes #973 2024-06-01 19:46:34 +02:00
09e5a60c8b
Merge pull request #959 from overte-org/fix/avatar_recording
Fixed deadlocks in Recording API
2024-05-24 02:04:29 +02:00
8badda8128 Restored some blocking invoke calls in Recording API 2024-05-24 00:32:13 +02:00
ec5aa9ff1d
Merge pull request #966 from JulianGro/ubuntu_2404
Add Ubuntu 24.04 to server packaging
2024-05-23 21:58:46 +02:00
7bd436dd0d
Merge pull request #964 from overte-org/fix/script_window_crash
Fixed script signal proxy crashes
2024-05-23 21:26:43 +02:00
13a7ea356a
Merge pull request #978 from overte-org/fix/gltf_locale
Fixed locale problems with cgltf.h
2024-05-23 20:53:37 +02:00
bb8bac43ea
Merge pull request #960 from Armored-Dragon/SimplifiedUI-Fixes
SimplifiedUI adjustemnts
2024-05-23 02:14:59 +02:00
1ba6026a85 Added error message to float parser 2024-05-22 22:16:22 +02:00
4b9ddbc260 Fixed locale problems with cgltf.h 2024-05-22 02:50:28 +02:00
32fe7777e6 Disable broken Fedora 39 building 2024-05-20 13:08:04 +02:00
57864178c0 Remove blocking invoke calls from Recording API 2024-05-20 00:00:32 +02:00
9ec0842dab Add Ubuntu 24.04 to server package build workflow. 2024-05-19 14:47:13 +02:00
7080067afc Update nodejs to support Python3.12 2024-05-19 14:34:49 +02:00
a18aee1c60 Add Dockerfile_build_ubuntu-24.04 2024-05-19 14:12:12 +02:00
4e81908156 Fixed script signal proxy crashes 2024-05-19 01:48:18 +02:00
Armored Dragon
c541b64f66
I know the date...
Signed-off-by: Armored Dragon <publicmail@armoreddragon.com>
2024-05-16 16:35:55 -05:00
Armored Dragon
dd01944bbf
Fixed Settings UI in simplifiedUi.
Keepmenus by default.
Update HiFi links to Overte.

Signed-off-by: Armored Dragon <publicmail@armoreddragon.com>
2024-05-16 16:31:59 -05:00
8661e8a858
Merge pull request #955 from overte-org/fix/script_avatar_url_getter
Fix access check in getSkeletonModelURLFromScript
2024-05-16 01:40:15 +02:00
fe6d76b935 Fixed deadlocks in Recording API 2024-05-16 01:09:57 +02:00
9bdfc8344a Fix AvatarData::getSkeletonModelURLFromScript 2024-05-10 22:14:38 +02:00
Dale Glass
f9ffccfe00
Merge pull request #950 from daleglass-overte/fix-warnings
Fix C++20 warnings
2024-05-04 19:40:21 +02:00
Dale Glass
84b16f44aa Fix ignored return value warning
warning: ignoring return value of ‘std::lock_guard<_Mutex>::lock_guard(mutex_type&) [with _Mutex = std::mutex; mutex_type = std::mutex]’, declared with attribute ‘nodiscard’ [-Wunused-result]

This may mean the lock wasn't actually being taken.
2024-05-04 16:15:09 +02:00
Dale Glass
9cb35541d3 Fix -Wtemplate-id-cdtor
warning: template-id not allowed for constructor in C++20 [-Wtemplate-id-cdtor]
2024-05-04 15:56:06 +02:00
Dale Glass
fe550aa69f Whitespace changes 2024-05-04 15:56:06 +02:00
HifiExperiments
19144e492c
Merge pull request #152 from HifiExperiments/urls
add canViewAssetURLs domain permissions
2024-05-01 16:49:38 -07:00
HifiExperiments
46787eebf0
Merge pull request #853 from overte-org/fix/script_deadlocks
Move helper script engines to their own threads
2024-04-30 13:30:27 -07:00
HifiExperiments
268de192f7
Merge branch 'master' into fix/script_deadlocks 2024-04-30 13:29:17 -07:00
2010bb44e8
Simplify ScriptableAvatar.cpp helper script engine lambda
Co-authored-by: HifiExperiments <53453710+HifiExperiments@users.noreply.github.com>
2024-04-30 16:27:57 +02:00
9f80c9de58 Added HelperScriptEngine class 2024-04-30 00:27:19 +02:00
HifiExperiments
ed88ab5ecb
Merge pull request #936 from HifiExperiments/mtoon2
support VRMC_materials_mtoon and KHR_materials_unlit
2024-04-19 23:01:41 -07:00
HifiExperiments
74002b4738 simplify constructors 2024-04-19 16:05:59 -07:00
HifiExperiments
58e84acd5f whoops now it's working 2024-04-18 18:10:48 -07:00
HifiExperiments
a58e188b5c always allow getting my own avatar entities, also whoops I missed some group props 2024-04-18 17:19:06 -07:00
HifiExperiments
8a770094bb cleanup 2024-04-18 15:50:10 -07:00
HifiExperiments
f3cb4e2ca9 handle canViewAssetURLs better in create 2024-04-18 15:44:19 -07:00
HifiExperiments
bf03847549 apply madder's patch 2024-04-18 15:44:19 -07:00
HifiExperiments
8bdc5bb4cf add canViewAssetURLs domain permissions 2024-04-18 15:44:15 -07:00
HifiExperiments
edb8cc55b4
Merge pull request #887 from overte-org/feature/script_security
Added simple protection for avatar URL
2024-04-18 15:16:27 -07:00
HifiExperiments
022f1497c5
Merge pull request #927 from HifiExperiments/groupProps
Fix getEntityProperties for group properties + keylight direction
2024-04-18 13:14:30 -07:00
HifiExperiments
376cd078e5
Merge pull request #935 from HifiExperiments/jointName
conversionPenaltyScore should accumulate
2024-04-18 12:56:34 -07:00
HifiExperiments
b22f5fe4fe
Merge pull request #899 from HifiExperiments/refresh-rate
Custom refresh rate profile
2024-04-17 14:46:36 -07:00
5aac93352c Fixed check for if script permission is enabled 2024-04-17 00:45:57 +02:00
HifiExperiments
9c3b0b8e4f fix effects, patch checksum issue 2024-04-16 13:47:11 -07:00
HifiExperiments
36fafe8432 wip msdf fonts 2024-04-16 13:47:05 -07:00
HifiExperiments
48b1493410 text clips to edges instead of disappearing 2024-04-16 13:46:57 -07:00
46a80fcfdb
Merge pull request #868 from overte-org/feature/script_byte_array
Add qByteArray to script value conversion
2024-04-16 22:34:44 +02:00
HifiExperiments
8f27a4bf2b support VRMC_materials_mtoon and KHR_materials_unlit 2024-04-14 16:23:45 -07:00
95406c44c6 Simplified ScriptSecurity.qml 2024-04-14 21:56:41 +02:00
1887a82b4b Script security fixes and cleanups 2024-04-14 20:22:22 +02:00
e57874a2bd
Simplify ScriptAvatarData::getSkeletonModelURLFromScript
Co-authored-by: HifiExperiments <53453710+HifiExperiments@users.noreply.github.com>
2024-04-14 18:12:30 +02:00
379db8b17c
Simplify AvatarData::getSkeletonModelURLFromScript()
Co-authored-by: HifiExperiments <53453710+HifiExperiments@users.noreply.github.com>
2024-04-14 18:11:27 +02:00
HifiExperiments
426df9dc94 conversionPenaltyScore should accumulate 2024-04-13 14:13:44 -07:00
HifiExperiments
b8a9881d41 fix getting only group properties + keylight.direction typo 2024-04-11 15:07:03 -07:00
HifiExperiments
750c5f20f6 cleanup, fixes, update QML 2024-03-29 21:37:57 -07:00
latex
a6646d8dff Custom refresh rate profile WIP
This adds a Custom refresh rate profile with configurable refresh rate regimes.

Unfortunately this commit does not work yet. The SpinBoxes inside GraphicsSettings are on top of each other, and changing the values for the Custom profile through e.g. the JS API does not actually affect the refresh rate cap at all for some reason.
2024-03-29 21:37:50 -07:00
f1475e49ee
Merge pull request #865 from AleziaKurdis/CreateAppCopyID
Create app: Entity List: "Copy ID" on menu and contextual menu.
2024-03-29 22:30:28 +01:00
HifiExperiments
c41c2deb77
Merge pull request #863 from AleziaKurdis/CreateAppDimensionsCopyPaste
Create App.: "Copy Dimensions" and "Paste Dimensions"
2024-03-29 13:02:55 -07:00
HifiExperiments
cc8133bf08
Merge branch 'master' into CreateAppDimensionsCopyPaste 2024-03-29 13:01:04 -07:00
HifiExperiments
7500a74e2b
Merge pull request #882 from overte-org/fix/oculus_full_body
Add Oculus to fullbody-enabled headsets list
2024-03-27 23:14:23 -07:00
36b6010c08
Merge pull request #893 from overte-org/fix/agent_textures
Fix previous commit for not loading textures on agent
2024-03-27 00:25:14 +01:00
edb3580520 Fixed emtpy texture issue 2024-03-26 21:24:02 +01:00
65387adee8 Reapply "Disabled texture loading for agent"
This reverts commit bf601dfa6e.
2024-03-26 21:06:11 +01:00
d44ae7a961
Merge pull request #892 from overte-org/fix/avatar_textures
Revert "Disabled texture loading for agent"
2024-03-26 18:08:31 +01:00
bf601dfa6e Revert "Disabled texture loading for agent"
This reverts commit a0aae43386.
2024-03-26 17:40:03 +01:00
5f0f03af0a Fixed private settings bug 2024-03-26 00:27:58 +01:00
7fdd4aef11
Merge pull request #854 from overte-org/fix/anim_reference
Fix invalid animation reference in assignment client
2024-03-25 22:34:32 +01:00
a0aae43386 Disabled texture loading for agent 2024-03-25 22:31:53 +01:00
076bd2dbee Added permissions to avatar bookmarks 2024-03-24 22:36:26 +01:00
16530b2334 Moved avatar URL to fully private settings 2024-03-23 20:41:22 +01:00
225578febe Added simple protection for avatar URL 2024-03-23 01:19:05 +01:00
922ae918e9
Merge pull request #877 from AleziaKurdis/CreateAppAdvancedImport
Create Application: Advanced Import functionality
2024-03-21 00:18:03 +01:00
aff59e5469
Merge pull request #880 from AleziaKurdis/CreateAppToolTabUiAdjustments
Create App: Tools tab: CSS&HTML adjustments
2024-03-20 21:02:31 +01:00
Alezia Kurdis
ef6f2737b6
adjustment
adjustment
2024-03-19 20:26:27 -04:00
Alezia Kurdis
74b9561afe
adjustment
adjustment
2024-03-19 20:26:01 -04:00
9106746bc9 Add Oculus to fullbody-enabled headsets list 2024-03-19 22:13:39 +01:00
Alezia Kurdis
7734357398
Tools Tab html/css adjustments
Tools Tab html/css adjustments
2024-03-18 22:52:05 -04:00
Alezia Kurdis
3bc04c9c06
Delete scripts/system/html/edit-style.css
Comitted at the wrong level.
2024-03-18 22:50:56 -04:00
Alezia Kurdis
ca4dde4bb1
Fix css of Tools tab
Fix css of Tools tab
2024-03-17 23:24:49 -04:00
Dale Glass
ff91b93ed8
Merge pull request #870 from daleglass-overte/change-vircadia-launcher-dir
Change vircadia launcher dir
2024-03-16 22:32:04 +01:00
Dale Glass
9c823a8534
Merge pull request #869 from daleglass-overte/change-vircadia-fingerprint
Change the hash salt from Vircadia to Overte
2024-03-16 22:31:33 +01:00
Alezia Kurdis
a509f84a42
Add "Import" Tab
Add "Import" Tab
2024-03-16 14:05:14 -04:00
Alezia Kurdis
f50101db8a
Add "Import" Tab
Add "Import" Tab
2024-03-16 14:04:24 -04:00
854d80aace
Merge pull request #873 from daleglass-overte/warnings-as-errors-msvc
Fix warnings as errors for MSVC
2024-03-16 12:09:45 +01:00
Dale Glass
40761fb545 Fix warnings as errors for MSVC 2024-03-16 00:40:33 +01:00
3d5afbdd31
Merge pull request #845 from HifiExperiments/colorBleed
Clean up GeometryCache and remove _glColor4f
2024-03-15 03:07:08 +01:00
c50a4f9cb8 Added Base64 conversion functions 2024-03-15 00:17:41 +01:00
Dale Glass
65f55dd5fb Change Vircadia launcher directory to Overte 2024-03-14 22:36:38 +01:00
Dale Glass
2e7b19ea40 Change the hash salt from Vircadia to Overte 2024-03-14 22:35:40 +01:00
38caf617a2
Merge pull request #867 from overte-org/fix/gltf_collisions
Fix collisions on glTF avatars
2024-03-14 22:22:19 +01:00
ef4c99b027 Add qByteArray to script value conversion 2024-03-14 01:49:55 +01:00
58a7819fef
Merge pull request #864 from AnotherFoxGuy/no-screeshare
🔧 Disable building electron screenshare app on windows
2024-03-14 00:17:45 +01:00
03dbbb94c8
Merge pull request #866 from AnotherFoxGuy/fix-avatarcolision
🐛 Fixed avatar bounding box being inverted
2024-03-14 00:00:03 +01:00
6f8f32d802 Fix collisions on glTF avatars.
Co-authored-by: Edgar <Edgar@AnotherFoxGuy.com>
2024-03-13 22:40:17 +01:00
HifiExperiments
be95d324cc fix auto casts, offset 2024-03-12 21:36:59 -07:00
Alezia Kurdis
7c8044d27b
Copy ID(s) on multiple selection
Copy ID(s) on multiple selection
2024-03-12 21:36:45 -04:00
Alezia Kurdis
e29549e711
Copy ID(s) on multiple selection
Copy ID(s) on multiple selection
2024-03-12 21:36:03 -04:00
Alezia Kurdis
ad3236ba37
Copy ID(s) on multiple selection
Copy ID(s) on multiple selection
2024-03-12 21:35:25 -04:00
Alezia Kurdis
0c868bd416
Copy ID(s) on multiple selection
Copy ID(s) on multiple selection
2024-03-12 21:34:40 -04:00
Edgar
e27696802b
🐛 Fixed avatar bounding box being inverted 2024-03-12 22:12:03 +01:00
Alezia Kurdis
8b35693701
Adjust CSS for contextual menu of EntityList
Adjust CSS for contextual menu of EntityList
2024-03-11 23:01:35 -04:00
Alezia Kurdis
94a229b9e7
Add "Copy ID" 2024-03-11 22:37:24 -04:00
Alezia Kurdis
6bee693d0c
Add "Copy ID" 2024-03-11 22:36:38 -04:00
Alezia Kurdis
2f3aefc926
Add "Copy ID" 2024-03-11 22:36:01 -04:00
Alezia Kurdis
e802d0ec12
Add "Copy ID"
Add "Copy ID" on entity list menu and contextual menu.
2024-03-11 22:35:03 -04:00
Edgar
dac3006d8b
🔧 Disable building electron screenshare app on windows 2024-03-11 20:55:56 +01:00
Alezia Kurdis
4595d94bfe
Add Dimensions Copy Paste
Add Dimensions Copy Paste
2024-03-10 22:24:54 -04:00
Alezia Kurdis
9acd1a93c1
Add Dimensions Copy Paste
Add Dimensions Copy Paste
2024-03-10 22:23:49 -04:00
634dc64f8f
Merge pull request #844 from HifiExperiments/opaqueParticles
Support opaque (and black) particles
2024-03-10 21:16:29 +01:00
78978c7097 Initial fix for animations 2024-03-09 18:33:07 +01:00
bd14f39f66
Merge pull request #860 from overte-org/feature/gltf_webp
Added WebP support for binary glTF
2024-03-09 17:33:11 +01:00
347987591f Added WebP support for binary glTF 2024-03-09 00:54:40 +01:00
HifiExperiments
7b4c26be84 fix custom shape key shadows + render layers 2024-03-05 20:05:02 -08:00
805cd78728 Switched to animation frames reference 2024-03-06 00:35:19 +01:00
e9e63efb2c
Merge pull request #855 from overte-org/fix/script_require_bg
Fix require behavior for modules
2024-03-06 00:13:49 +01:00
HifiExperiments
903984f427 try to fix amd deferred bug 2024-03-05 14:34:54 -08:00
HifiExperiments
3daa40087e support opaque (and black) particles 2024-03-05 14:34:54 -08:00
931b222098 Fix require behavior for modules 2024-03-05 23:24:34 +01:00
cd8ad23dd1 Fix invalid reference 2024-03-05 01:15:32 +01:00
93a243d095 Move helper script engines to their own threads 2024-03-04 23:06:26 +01:00
22faf211bf
Merge pull request #851 from overte-org/remove-ambiguously-licensed
Remove legally problematic texture
2024-03-04 08:48:35 +01:00
408cd11ee7 Remove legally problematic texture. 2024-03-03 16:59:01 +01:00
Dale Glass
9bbd04c928
Merge pull request #840 from overte-org/fix/cgltf_blendshapes
Fixed blendshapes in gltf importer
2024-03-03 00:25:40 +01:00
7780095590 Added check for nullptr in GLTFSerializer 2024-03-02 23:54:37 +01:00
HifiExperiments
f27263cc6a clean up geometrycache and remove _glColor4f 2024-03-01 13:47:36 -08:00
9b89b3ffd9
Merge pull request #823 from HifiExperiments/snap
Fix Developer > UI > Show Overlays + Snap UI not hiding
2024-03-01 22:19:44 +01:00
9284797fe6
Merge pull request #820 from HifiExperiments/shadowCull
Respect cull face during shadow pass
2024-03-01 21:21:27 +01:00
d58940369c
Merge pull request #841 from overte-org/fix/avatar_volume_adjustment
Fixed avatar volume adjustment
2024-03-01 02:46:09 +01:00
6be71a7140 Code cleanup for avatar volmue fix 2024-03-01 02:12:28 +01:00
04e85d53e6 Fixed avatar volume adjustment 2024-03-01 01:32:43 +01:00
HifiExperiments
214c9c4ef7 fix Developer > UI > Show Overlays + snap UI not hiding 2024-02-28 15:24:18 -08:00
HifiExperiments
5c5480bfc0 respect cull face during shadow pass 2024-02-28 15:23:39 -08:00
8e51664b69 Fixed blendshapes from gltf 2024-02-28 22:44:16 +01:00
a1089b5b50
Merge pull request #837 from overte-org/fix/gltf_url
Remove debug print with URL from ModelLoader
2024-02-26 23:25:43 +01:00
b5911d145c Remove debug print with URL from ModelLoader 2024-02-26 23:18:23 +01:00
eb13a75123
Merge pull request #836 from daleglass-overte/prebuild-fixes
Fix prebuild.py code ordering to make --get-vcpkg-id and --get-vcpkg-path correctly in the repo root
2024-02-26 22:34:28 +01:00
c6e39bdd08
Merge pull request #835 from overte-org/feature/cgltf
glTF importer using cgltf library
2024-02-26 21:47:39 +01:00
6631128c52
Merge pull request #806 from AleziaKurdis/CreateApp_renderWithZoneManager
Create app: RenderWithZones Manager
2024-02-26 21:46:43 +01:00
Dale Glass
e6ed4f4ebc Fix prebuild.py code ordering to make --get-vcpkg-id and --get-vcpkg-path correctly in the repo root 2024-02-26 20:07:00 +01:00
351530055f Check for out-of-bounds in GLTFSerializer 2024-02-25 22:19:05 +01:00
081ae901d2 glTF importer using cgltf library 2024-02-25 19:57:00 +01:00
Dale Glass
c19142c844
Merge pull request #831 from AleziaKurdis/fixNotificationsHMD
Fix the display of Notifications
2024-02-25 17:36:45 +01:00
Dale Glass
1fe2fc5fba
Merge pull request #829 from overte-org/JulianGro-patch-1
Fix recording API documentation not being built
2024-02-24 20:27:35 +01:00
Dale Glass
5f455303f2
Merge pull request #827 from AnotherFoxGuy/fix-win
🐛 Fixed build on Windows
2024-02-24 20:26:53 +01:00
Dale Glass
2560f2aa2c
Merge pull request #815 from HifiExperiments/keyboardModifiers
Add keyboard modifiers to entity pointer events
2024-02-24 20:21:05 +01:00
Alezia Kurdis
af4589d42a
Small adjustments 2024-02-24 13:49:44 -05:00
Alezia Kurdis
c28048be47
Fix notification display
This address the following things:
- In HMD, the notification are now synch with the helmet, you can't miss any notification now. the rendering is more stable this way. (Addressing Issue #826)
- in Desktop, it is using Window API instead of Controller API to obtain the window size to know where to display should be. (Controller is not always on synch with desktop size.  Window is always accurate for Desktop.
- In Desktop, now the windows width is recomputed so it support now window resizing. (Maybe addressing Issue #470 (assuming that "Announcements" are the "Notificatons", ))
2024-02-23 22:19:57 -05:00
22a783b702
Fix recording API documentation not being built 2024-02-23 20:29:05 +01:00
Edgar
7cf079546a
🐛 Fixed build on Windows
SEVERITY_ERROR is defined as a macro in winerror.h
2024-02-22 13:53:40 +01:00
68fffe00ab
Merge pull request #819 from overte-org/fix/entity_density
Fix entity density not setting and not updating for motion states
2024-02-17 21:02:50 +01:00
9a00edd371 Fix entity density not setting and not updating for motion states 2024-02-17 20:55:02 +01:00
1fd3f80210
Merge pull request #673 from overte-org/feature/entity_script_logging
Entity script logging for script editor
2024-02-17 16:32:05 +01:00
5c5c529fa9 Fix buffer size 2024-02-17 16:19:22 +01:00
63e14e0644
Merge pull request #812 from overte-org/linux-server-gha-update
Linux server gha update
2024-02-16 23:49:06 +01:00
HifiExperiments
0773e38afb add keyboard modifiers to entity pointer events 2024-02-16 12:23:15 -08:00
1221b46a59
Merge pull request #813 from daleglass-overte/get-vcpkg-path
Add a way to get VCPKG path and hash ID
2024-02-14 17:09:46 +01:00
1b77f5435e
Add warning to Android build instructions mentioning that building is currently not possible. 2024-02-14 17:05:09 +01:00
Dale Glass
dbe04a945e Fix printing argv 2024-02-14 00:31:46 +01:00
cb05ae8f72
Merge pull request #805 from HifiExperiments/mtoon
MToon materials
2024-02-13 01:03:06 +01:00
Dale Glass
2d2e07b693 Review fixes 2024-02-13 00:28:07 +01:00
HifiExperiments
5f0cbe9799 comment about bit mapping in GraphicsScriptingInterface 2024-02-12 13:40:36 -08:00
Dale Glass
0e2131e80c Add a way to get VCPKG path and hash ID 2024-02-12 18:24:35 +01:00
4f2c829766 Add Fedora 39 support 2024-02-12 17:04:58 +01:00
8cc8be12b6 Downgrade to VCPKG version 2023.11.20 because of upstream regression https://github.com/microsoft/vcpkg/issues/36094 2024-02-12 17:01:37 +01:00
fbfabb3096 Remove End Of Life systems 2024-02-12 15:20:55 +01:00
f9b5c786fb
Merge pull request #807 from overte-org/JulianGro-vcpkg_aarch64_update
Update VCPKG for Linux aarch64
2024-02-04 23:20:49 +01:00
15c9408b9f Fix OpenVR related build error on aarch64 introduced in a79cd1e6ce 2024-02-04 15:47:00 +01:00
HifiExperiments
9cb29bb3a3 fix some warnings, disable outlines for now 2024-02-03 22:31:27 -08:00
0ad3464e45 Update VCPKG for Linux aarch64 2024-02-03 19:04:04 +01:00
Alezia Kurdis
e367e2c620
Add Warning and fix Undo
Add a Warning when there are Zone not found 
and fix the Undo if the entity list selection has changed, then reset the undo 
stack cause it won't be applicable on the selection anymore.
2024-02-03 12:37:20 -05:00
Alezia Kurdis
c43bb11965
Add "RenderWithZones Manager" 2024-02-02 22:27:40 -05:00
HifiExperiments
c04c037588 native MToon materials 2024-02-02 17:59:32 -08:00
c311d3cbfc Script API for subscribing to entity server messages 2024-01-29 00:19:14 +01:00
Alezia Kurdis
e1efa7fe63
Add "RenderWithZones Manager" 2024-01-28 15:16:43 -05:00
Alezia Kurdis
89f7d70c59
Add "RenderWithZones Manager" 2024-01-28 15:16:00 -05:00
Alezia Kurdis
c843e63572
Add "RenderWithZones Manager" 2024-01-28 15:15:20 -05:00
Alezia Kurdis
4e0f85fb92
Add files via upload 2024-01-28 15:14:04 -05:00
d75efdb4ca Script messaging fix 2024-01-10 00:35:56 +01:00
Dale Glass
ce11eb3920
Merge pull request #781 from AleziaKurdis/TutorialDoppleGangerFix
Fix the doppleganger position in the tutorial
2024-01-06 20:30:50 +01:00
Alezia Kurdis
360e43e006
fix the doppleganger position in the tutorial
This try to fix the doppleganger position in the Avatar Viewer in the tutorial.
2023-12-30 21:42:31 -05:00
Dale Glass
d882843b01
Merge pull request #576 from AnotherFoxGuy/unity-exporter-improvements
 "Update Existing Avatar" now properly updates the fst file
2023-12-30 21:21:37 +01:00
dfbc1d8865 Server side entity script messages 2023-12-29 20:28:54 +01:00
274867bc47 Work on better subscribtion to script messages 2023-12-23 20:16:39 +01:00
f3dbfc468e Added ScriptMessage class 2023-12-23 20:16:39 +01:00
ee980cbc5b Initial script logging functions 2023-12-23 20:16:39 +01:00
Dale Glass
00bcf0d41f
Merge pull request #773 from gameboycjp/patch-1
Add VS22 cmake jumpstart script
2023-12-16 20:58:54 +01:00
gameboycjp
c07595abc3
Add VS22 cmake jumpstart script 2023-12-16 10:34:31 -08:00
ca74b2cda9
Merge pull request #770 from overte-org/fix/entity_properties3
Fixed returnNothingOnEmptyPropertyFlags
2023-12-15 19:58:45 +01:00
28e5466659 Fixed returnNothingOnEmptyPropertyFlags 2023-12-14 00:00:45 +01:00
1bc76cbbb9
Merge pull request #768 from overte-org/fix/script_properties2
Fix a bug in Entities.getEntityProperties
2023-12-12 23:13:28 +01:00
b677cab143 Rename variable in entity scripting API and document it 2023-12-12 19:05:00 +01:00
0729d6e601
Merge pull request #769 from OfficialR3ido101/fix/remove_floofchat_markdown
Removing markdown from floof chat
2023-12-12 17:55:55 +01:00
OfficialR3ido101
d7226b76a4 Removed commented out code since we do not need it 2023-12-12 16:54:22 +00:00
OfficialR3ido101
b451571e10 Removed markdown to make everyone happy 2023-12-12 16:53:07 +00:00
OfficialR3ido101
819ddeff0b Removed markdown to make everyone happy 2023-12-12 16:35:22 +00:00
9451a1261e Fix a bug with grabbable entities 2023-12-10 12:51:08 +01:00
7010f242b3 Fix a bug in Entities.getEntityProperties 2023-12-10 11:23:06 +01:00
af1932e2cc
Merge pull request #766 from overte-org/controller_scripts_performance_4
Improvement in controller scripts performance
2023-12-10 11:21:13 +01:00
Dale Glass
a027cc6b34
Merge pull request #765 from daleglass-overte/fix-ninja-crashpad
Fix Ninja builds with Crashpad enabled on Windows
2023-12-08 23:58:09 +01:00
Dale Glass
ae877370de Fix Ninja builds with Crashpad enabled on Windows 2023-12-08 14:55:31 -08:00
6265949688
Merge pull request #764 from daleglass-overte/cmake-allow-long-paths-windows
Use response files on Ninja for long paths
2023-12-08 23:17:57 +01:00
Dale Glass
f84cfec62e Use response files on Ninja for long paths 2023-12-08 14:15:19 -08:00
5b9fb821de Improvement in controller scripts performance 2023-12-08 23:01:01 +01:00
7f85b1f9f2
Merge pull request #763 from OfficialR3ido101/fix/add_more_GPU_mem_options
Add more ram Options
2023-12-08 22:28:10 +01:00
OfficialR3ido101
cb1dccbe50 Fixed a typo 2023-12-08 21:17:46 +00:00
OfficialR3ido101
5a313bac53 Fixed MB issue 2023-12-08 21:04:47 +00:00
OfficialR3ido101
36b8fb7090 Merge remote-tracking branch 'origin/fix/add_more_GPU_mem_options' into fix/add_more_GPU_mem_options 2023-12-08 21:04:07 +00:00
OfficialR3ido101
b53b3d19da Added following GPU ram options
10GB
12GB
16GB
20GB
2023-12-08 21:03:46 +00:00
OfficialR3ido101
be5ec341da Added following GPU ram options
10GB
12GB
16GB
20GB
2023-12-08 20:57:10 +00:00
7123487335
Merge pull request #761 from daleglass-overte/enable-oculus-on-vs2022
Re-enable building Oculus plugin on VS 2022
2023-12-08 19:33:26 +01:00
Dale Glass
a79cd1e6ce Re-enable building Oculus plugin on VS 2022 2023-12-08 06:27:33 -08:00
Dale Glass
e9628a84c8
Merge pull request #758 from daleglass-overte/fix-oculus
Fixes for Oculus VR plugin
2023-12-08 15:19:18 +01:00
Dale Glass
94848d98a2 Pass build type to LibOVR build.
This fixes a debug/release mismatch on Windows, which results in a
linking error.
2023-12-08 06:06:26 -08:00
Dale Glass
4b440c3cf6 Add debug libovr library to list of libovr products 2023-12-08 05:24:30 -08:00
Dale Glass
cfc556e2d1 Add clarifying note 2023-12-08 02:43:57 -08:00
4c7b6bb609
Merge pull request #744 from overte-org/feature/script_perfomance_improvements
Script performance improvements
2023-12-08 11:38:39 +01:00
Dale Glass
36c700d175
Merge pull request #716 from daleglass-overte/reorganize-startup
Reorganize startup to allow more control over plugins
2023-12-08 00:26:05 +01:00
Dale Glass
1b46ec600a Fixes for Oculus VR plugin 2023-12-07 15:20:03 -08:00
Dale Glass
6a00d4baf8
Merge pull request #755 from daleglass-overte/fix-steamworks-for-ninja
Upgrade Steamworks and fix for ninja build
2023-12-06 22:24:37 +01:00
Dale Glass
12da0473ab
Merge pull request #754 from daleglass-overte/disable-oculus-vs2022
Disable Oculus plugin on Visual Studio 2022
2023-12-06 22:18:32 +01:00
Dale Glass
91bdb05450
Merge pull request #753 from daleglass-overte/disable-neuron
Disable Neuron by default
2023-12-06 22:14:25 +01:00
Dale Glass
898964db18
Merge pull request #756 from daleglass-overte/fix-exr-windows
Fix OpenEXR on Windows
2023-12-06 22:10:59 +01:00
Dale Glass
a4d2fb6167 Fix Steamworks .so names on Linux 2023-12-06 19:52:14 +01:00
Dale Glass
5358a888e3 Fix OpenEXR on Windows
Prevents:
LNK2001	unresolved external symbol imath_half_to_float_table
2023-12-06 03:31:56 -08:00
Dale Glass
24e3777caa Fix Steam API plugin for latest SDK 2023-12-05 15:48:57 -08:00
Dale Glass
e23829962f Upgrade steamworks and fix for Ninja build 2023-12-05 15:12:01 -08:00
Dale Glass
deeb1d7505 Disable building Oculus plugin under VS 2022 2023-12-05 08:02:38 -08:00
Dale Glass
3e4a4119dc Disable Neuron by default 2023-12-04 15:38:04 -08:00
Dale Glass
49c3aea199
Merge pull request #752 from daleglass-overte/upgrade-openexr
Upgrade openexr
2023-12-05 00:00:08 +01:00
Dale Glass
4b8ac5945d
Merge pull request #751 from daleglass-overte/update-linux-vcpkg
Update Linux vcpkg to the same as the Windows version
2023-12-04 23:59:55 +01:00
Dale Glass
c655a8573d Upgrade OpenEXR from 2.3.0 to 3.1.8 2023-12-04 23:30:49 +01:00
Dale Glass
adf86d282f Fix package, was missing .vcpkg-root 2023-12-04 22:20:55 +01:00
Dale Glass
09e0413faf Update Linux vcpkg to the same as the Windows version 2023-12-04 22:02:13 +01:00
91abf8fc1b
Merge pull request #747 from HifiExperiments/particleBillboard
particle billboarding is wrong in VR
2023-12-03 18:41:29 +01:00
Dale Glass
649c45f474
Merge pull request #710 from daleglass-overte/script-engine-benchmarks
Add initial benchmarks for the script engine
2023-12-03 17:46:09 +01:00
Dale Glass
aa2892c0f9 Remove unneeded comment per review 2023-12-03 17:45:19 +01:00
Dale Glass
c8b0161985
Merge pull request #746 from overte-org/fix/manual_networking
Fix setting external port and IP address for manual networking modes
2023-12-02 21:20:28 +01:00
HifiExperiments
dfad009805 billboard particles based on their actual positions 2023-12-01 23:05:27 -08:00
d387ea840b Add a warnning about Controller.Standard property 2023-12-01 23:59:05 +01:00
f0a3a33905 Fix setting external port and IP address for manual networking modes 2023-12-01 21:15:11 +01:00
d4a11ce0e6 Initial fix for manual networking, still needs work 2023-12-01 00:14:43 +01:00
5aeca97f83 Cache Controller.Standard in scripts for higher performance 2023-11-30 00:26:01 +01:00
410848ed82 Remove excessive getContext calls 2023-11-29 22:41:20 +01:00
78bc24cb22
Merge pull request #724 from HifiExperiments/luci
Fix luci
2023-11-24 23:24:37 +01:00
39df2c975d
Merge pull request #711 from HifiExperiments/deprecatedRedirect
Fix QNetworkRequest::FollowRedirectsAttribute deprecated warning
2023-11-24 07:40:13 +01:00
476cf0bbf9
Merge pull request #736 from overte-org/fix/controller_performance
Improve game rate by moving squeezeHands.js to a separate thread
2023-11-23 19:05:46 +01:00
fadfdab52a
Merge pull request #737 from keeshii/fix/wizard_refresh_rate
Corrected refresh rate values in wizard.
2023-11-23 19:04:08 +01:00
keeshii
eba935a55f Corrected refresh rate values in wizard. 2023-11-23 15:48:12 +01:00
e8143a8e40
Merge pull request #729 from overte-org/fix/gravity
Changed gravity constant to a more realistic one
2023-11-23 08:18:19 +01:00
4933a2916b
Update some links in README.md
Fixes https://github.com/overte-org/overte/issues/718
2023-11-22 02:25:55 +01:00
e05c79ca96 Improve game rate by moving squeezeHands.js to a separate thread 2023-11-21 23:40:16 +01:00
ec72a79b39
Merge pull request #730 from JulianGro/vcpkg_update_windows
Update VCPKG on Windows to version 2023.10.19
2023-11-20 06:54:38 +01:00
2aab5ba519 Update VCPKG on Windows to version 2023.10.19 2023-11-19 21:28:48 +01:00
825c398e54 Changed gravity constant 2023-11-19 17:39:10 +01:00
HifiExperiments
d9ee3791e6 fix deprecated warning 2023-11-18 23:12:28 -08:00
HifiExperiments
d4112f455b also fix zone stack 2023-11-18 00:29:52 -08:00
HifiExperiments
e5e3c1bc08 fix luci errors + updated config paths 2023-11-15 22:54:26 -08:00
d2e0e2f41b
Merge pull request #723 from JulianGro/drpc2
Discord Rich Presence v2
2023-11-15 20:20:42 +01:00
4cd16437f4 Expand message that shows when Interface exists because another instance is already running. 2023-11-15 13:46:52 +01:00
9e19f9fc58 Display desktop or VR mode in Discord Rich Presence.
Don't show worldName if it is unknown; Fixes the name of the last world being used when switching to Serverless.
2023-11-15 13:45:52 +01:00
54ad2b31d5
Merge pull request #722 from OfficialR3ido101/feature/ice_commandline
[ICE] Added command line arguments
2023-11-15 00:18:05 +01:00
OfficialR3ido101
955f4dbc3e Added logging to ice server and ice testing script. 2023-11-14 20:52:27 +00:00
OfficialR3ido101
6722d31a12 Added command line and setting address and port 2023-11-14 19:50:55 +00:00
Dale Glass
111cea477d Provide plugin load state 2023-11-12 20:08:47 +01:00
Dale Glass
1de6e6d418 Rename arguments for more clarity 2023-11-12 20:08:29 +01:00
Dale Glass
b05dd3443d Refactor display/input disabling 2023-11-12 18:44:31 +01:00
Dale Glass
ec29cfcd51 Treat Oculus and Steam plugins as display plugins, for disabling purposes 2023-11-12 18:44:00 +01:00
Dale Glass
0bd72f3d54 Fix bug in reporting steam/oculus availability 2023-11-12 18:43:36 +01:00
Dale Glass
59f96cada1 Add explanatory comments 2023-11-12 18:12:05 +01:00
Dale Glass
a7132c4ff6 Remove PluginManager::disableDisplayPlugin
This isn't called anywhere, and I believe the implementation is flawed anyway.
While it tries to remove the plugin from the list, the plugin isn't shut down,
or disconnected from events. This is likely to cause problems if it were to
be used.
2023-11-12 13:41:17 +01:00
Dale Glass
e03768ddc5 Document PluginManager 2023-11-12 13:39:37 +01:00
Dale Glass
aba921502d Improve codec JSON info 2023-11-12 11:41:44 +01:00
Dale Glass
b9662e5af8 Separate plugin initialization, allow dumping plugin info 2023-11-11 21:03:16 +01:00
Dale Glass
57e1c99fff Initialize PathUtils and logging in constructor 2023-11-11 19:34:52 +01:00
Dale Glass
a4e79ff806 Make Application destructor work when terminating early 2023-11-11 19:23:57 +01:00
Dale Glass
c748064d0a Make _applicationOverlay a shared_ptr 2023-11-11 17:59:31 +01:00
Dale Glass
812d043587 Call setupEssentials() in initialize() 2023-11-11 17:59:18 +01:00
Dale Glass
a22b06c3e7 Change _graphicsEngine to a shared_ptr 2023-11-11 17:41:22 +01:00
Dale Glass
3dabf23ff4 Change _octreeProcessor and _entityEditSender to shared_ptr 2023-11-11 17:32:12 +01:00
Dale Glass
35b4c44e9a Delay initializing shared pointers 2023-11-11 16:45:28 +01:00
Dale Glass
059600e8d4 Initial effort to reorganize the startup code.
This is intended to make things like plugin initialization more sane,
and make Qt happier. Qt wants QApplication to start as soon as possible,
but our code's attempt to load the entire world in the Application
constructor doesn't quite mesh with this.

This is an effort to first create Application much earlier, and do as
little as possible in the constructor, moving almost all initialization
to a later init function.

A later stage would be to split the giant mess of init code into more
digestible sections that run in some sort of logical order.
2023-11-11 12:32:17 +01:00
fb5b0779a4
Merge pull request #714 from overte-org/fix/oculus_disable_3
Disabled Oculus plugin in additional place
2023-11-10 18:34:19 +01:00
241fe61373 Disabled Oculus plugin in additional place 2023-11-09 20:45:15 +01:00
85a9987af5
Merge pull request #701 from JulianGro/ghaamd64self
Switch to self-hosted Linux amd64 GitHub Actions Runner
2023-11-09 10:23:11 +01:00
b81bc25ea0
Add more missing dependencies 2023-11-08 21:05:04 +01:00
8dfc9a951d
Merge pull request #712 from overte-org/fix/no_vr
Revert Merge pull request #705
2023-11-08 20:19:16 +01:00
438893ad58 Revert "Merge pull request #705 from daleglass-overte/fix-plugin-crash"
This reverts commit d1cbfa8838, reversing
changes made to 665d21210a.
2023-11-08 18:49:34 +01:00
f431bfc468
Add missing libpcre2-16-0 dependency 2023-11-08 14:44:57 +01:00
Dale Glass
95b6e037ba
Merge pull request #709 from daleglass-overte/script-test-infinite-require
Script test infinite require
2023-11-07 18:48:42 +01:00
5ecc176d99
Add missing libdouble-conversion-dev dependency 2023-11-07 18:18:39 +01:00
478a0bbeaa
Merge pull request #708 from HifiExperiments/renderUpdate
Call somethingChangedNotification() from setLocalJointXXXX
2023-11-07 17:51:47 +01:00
d1cbfa8838
Merge pull request #705 from daleglass-overte/fix-plugin-crash
Fix crash when starting with --display, --disable-displays or --disable-inputs
2023-11-06 22:16:30 +01:00
665d21210a
Merge pull request #697 from overte-org/fix/script_require
Fixed incorrect Script.require behavior
2023-11-06 20:18:19 +01:00
Dale Glass
bf7a0c6366 Add initial benchmarks for the script engine 2023-11-06 19:24:47 +01:00
Dale Glass
0c5726ce07 Fix test verification 2023-11-06 18:50:29 +01:00
Dale Glass
91f59a96ab Test a require() loop, for testing whether the engine can deal with it 2023-11-06 18:36:27 +01:00
32ab47a0a3
Add missing libxext-dev dependency 2023-11-06 17:44:34 +01:00
HifiExperiments
0a08f11d7e fix #650: call something somethingChangedNotification() from setLocalJointXXXX 2023-11-06 00:36:34 -08:00
7264585451
Don't try to build servers on Ubuntu 18.04 as we stopped supporting it. 2023-11-06 09:35:46 +01:00
f9710a6fbb
Add missing pkg-config dependency 2023-11-06 09:02:02 +01:00
3abd98b642
Merge pull request #706 from overte-org/fix/graphics_settings
Fix for custom graphics setting
2023-11-06 00:17:11 +01:00
8f416ef505 Fix for custom graphics setting 2023-11-05 23:58:26 +01:00
e08aa2f1a0
Merge pull request #700 from overte-org/fix/oculus_plugin
Disable Oculus plugin by default and add a setting to enable it
2023-11-05 22:41:29 +01:00
9d5da27101 Added logging to Oculus Plugin setting 2023-11-05 21:04:45 +01:00
Dale Glass
8fa46e2be3 Fix crash when starting with --display, --disable-displays or --disable-inputs
This happens because the PluginManager doesn't exist yet at the time when these
options are handled. Fix this by moving PluginManager initialization to an
earlier stage of the code.
2023-11-05 19:34:13 +01:00
Dale Glass
77af9f2c3e
Merge pull request #704 from daleglass-overte/fix-memory-debugging
Fix memory debugging.
2023-11-05 19:15:39 +01:00
Dale Glass
bb1331c0cb Fix memory debugging.
* Disables WebRTC (build fails)
* Recommends disabling optimization
* Recommends enabling debugging
* Remove forced optimization from plugins
2023-11-05 19:05:09 +01:00
2ad99f91ff Add missing include 2023-11-05 17:29:23 +01:00
720c0269e6
Merge pull request #672 from overte-org/fix/chat_bar_vr
Prevent the chat bar from popping up when VR headset is on
2023-11-05 16:36:10 +01:00
Dale Glass
5467396b88
Merge pull request #702 from daleglass-overte/add-script-require-test
Add a test for bug #587
2023-11-05 16:03:02 +01:00
Dale Glass
0cb86caa3a Remove unneeded line 2023-11-05 16:01:21 +01:00
Dale Glass
d23a17daa5 Add a test for bug #587
This will fail against the current master, since the current behavior is not correct.
2023-11-05 14:02:46 +01:00
511fbf6c0d Build on our own GitHub Actions Runners, since we require more space. 2023-11-05 13:49:04 +01:00
ed58d6f34e Disable Oculus plugin by default and add a setting to enable it 2023-11-05 10:49:49 +01:00
209f1d59f0 Fixed incorrect Script.require behavior 2023-11-04 20:45:33 +01:00
1f2a9872c2
Merge pull request #696 from overte-org/fixwin
Fix Windows GitHub Actions workflows
2023-11-04 20:43:39 +01:00
733a1e66f2
Create SECURITY.md 2023-11-04 13:49:51 +01:00
4b3d7c3f17 Specifically allow downgrading NSIS in workflows. 2023-11-04 13:28:24 +01:00
8b1b40273b
Merge pull request #686 from JulianGro/discord-rpc
Discord rich presence support
2023-11-02 08:54:12 +01:00
5f0635ed51
Merge pull request #691 from overte-org/fix/file_api
Remove File API and limit audio recording file location
2023-11-01 20:21:02 +01:00
bf8ad07b60 Moved archive download interface files and converted documetnation to doxygen 2023-11-01 19:51:21 +01:00
8332e41989 Remove File API and limit audio recording file location 2023-11-01 00:29:15 +01:00
894f8cec2b
Merge pull request #690 from overte-org/fix/entity_server_mem_leak
Fix entity server memory leak and improve performance
2023-10-31 19:04:34 +01:00
6645763117 Replaced mutex locking with lock guard 2023-10-31 18:37:05 +01:00
5ba3b2b4ba
Update copyright year in TabletAboutDialog.qml 2023-10-30 21:43:41 +01:00
7481130e61 Add a mutex to entity server script engine 2023-10-30 20:41:08 +01:00
77c24ed7c3 Initial version of Discord rich presence support.
Co-authored-by: Maki <mxmcube@gmail.com>
Co-authored-by: Dale Glass <dale@daleglass.net>
2023-10-30 19:03:49 +01:00
7930bd86cc Place names with underscores are used and should be considered valid. 2023-10-30 19:02:15 +01:00
33bdd841c1 Fix entity server memory leak and improve performance 2023-10-30 18:40:04 +01:00
75784c418d
Merge pull request #683 from overte-org/fix/remove_inactive_region
Remove inactive region from federation.json
2023-10-29 19:26:38 +01:00
deaf51bfcd Remove inactive region from federation.json 2023-10-29 19:25:44 +01:00
2ac5257a1d
Merge pull request #681 from daleglass-overte/fix-build-win-typo
Fix repository URL in windows build documentation
2023-10-28 15:16:32 +02:00
Dale Glass
3d1b0950d8 Fix repository URL in windows build documentation 2023-10-28 12:14:48 +02:00
79cf24d30f
Merge pull request #645 from keeshii/feature/qml_entities
Added support for QML inside web-entities.
2023-10-19 22:46:07 +02:00
fde4e1f26f
Merge pull request #671 from overte-org/fix/vr_local_entity_grab
Fix local entity grab in VR
2023-10-17 19:34:10 +02:00
77e1e174a6 Prevent the chat bar from popping up when VR headset is on 2023-10-17 18:15:30 +02:00
39a0ee960c Fix local entity grab in VR 2023-10-17 17:30:55 +02:00
b6f148576a
Merge pull request #663 from overte-org/feature/new_LOD
Added distance-based LOD
2023-10-16 22:59:10 +02:00
6ea4cdb434
Update interface/src/LODManager.h 2023-10-16 22:02:10 +02:00
254b55c187
Merge pull request #669 from overte-org/fix/mic_log_spam
Fix MicBar to not spam thousands of TypeError messages on Windows
2023-10-16 21:58:49 +02:00
f04c3b5840
Make comment more coherent 2023-10-16 21:24:26 +02:00
61e9ee6ce0 Fix MicBar to not spam thousands of TypeError messages on Windows 2023-10-16 19:53:51 +02:00
68f6e466bf Default to higher LOD framerate target on High graphics setting 2023-10-15 20:38:17 +02:00
f74725042e Better name for LOD options and clearer documentation 2023-10-15 19:29:14 +02:00
c6e9772def
Update comment in interface/src/LODManager.cpp
Co-authored-by: Julian Groß  <julian.g@posteo.de>
2023-10-13 22:12:06 +02:00
8b648408fd Added distance-based LOD 2023-10-13 19:28:05 +02:00
keeshii
10bb866654 Added support for QML inside web-entities.
- removed file protocol from the default QML whitelist
- adjusted dpi of the wizard to more standard value
2023-10-10 18:48:39 +02:00
keeshii
d3f652686e Added support for QML inside web-entities. 2023-10-10 18:48:39 +02:00
a681a16406
Merge pull request #662 from Armored-Dragon/Mouselook-hotfix
Mouselook hotfix
2023-10-10 14:01:43 +02:00
Armored-Dragon
e38d5e6647 Does not allow mouse capture if disabled. 2023-10-10 06:53:22 -05:00
Dale Glass
4ccefd0471
Merge pull request #659 from overte-org/dependabot/npm_and_yarn/screenshare/got-and-electron-packager-11.8.6
Bump got and electron-packager in /screenshare
2023-10-06 21:34:22 +02:00
dependabot[bot]
8e844218a9
Bump got and electron-packager in /screenshare
Bumps [got](https://github.com/sindresorhus/got) to 11.8.6 and updates ancestor dependency [electron-packager](https://github.com/electron/electron-packager). These dependencies need to be updated together.


Updates `got` from 9.6.0 to 11.8.6
- [Release notes](https://github.com/sindresorhus/got/releases)
- [Commits](https://github.com/sindresorhus/got/compare/v9.6.0...v11.8.6)

Updates `electron-packager` from 14.0.6 to 17.1.2
- [Release notes](https://github.com/electron/electron-packager/releases)
- [Changelog](https://github.com/electron/electron-packager/blob/main/NEWS.md)
- [Commits](https://github.com/electron/electron-packager/compare/v14.0.6...v17.1.2)

---
updated-dependencies:
- dependency-name: got
  dependency-type: indirect
- dependency-name: electron-packager
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-06 19:33:55 +00:00
Dale Glass
5429f536db
Merge pull request #658 from overte-org/dependabot/npm_and_yarn/screenshare/plist-3.1.0
Bump plist from 3.0.1 to 3.1.0 in /screenshare
2023-10-06 21:32:49 +02:00
dependabot[bot]
8092cf70f3
Bump plist from 3.0.1 to 3.1.0 in /screenshare
Bumps [plist](https://github.com/TooTallNate/node-plist) from 3.0.1 to 3.1.0.
- [Release notes](https://github.com/TooTallNate/node-plist/releases)
- [Changelog](https://github.com/TooTallNate/plist.js/blob/master/History.md)
- [Commits](https://github.com/TooTallNate/node-plist/commits)

---
updated-dependencies:
- dependency-name: plist
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-06 19:32:22 +00:00
Dale Glass
9df3de1a7c
Merge pull request #657 from overte-org/dependabot/npm_and_yarn/screenshare/minimist-and-mkdirp-1.2.8
Bump minimist and mkdirp in /screenshare
2023-10-06 21:31:14 +02:00
dependabot[bot]
bb862c0f90
Bump minimist and mkdirp in /screenshare
Bumps [minimist](https://github.com/minimistjs/minimist) and [mkdirp](https://github.com/isaacs/node-mkdirp). These dependencies needed to be updated together.

Updates `minimist` from 1.2.0 to 1.2.8
- [Changelog](https://github.com/minimistjs/minimist/blob/main/CHANGELOG.md)
- [Commits](https://github.com/minimistjs/minimist/compare/v1.2.0...v1.2.8)

Updates `mkdirp` from 0.5.1 to 0.5.6
- [Changelog](https://github.com/isaacs/node-mkdirp/blob/main/CHANGELOG.md)
- [Commits](https://github.com/isaacs/node-mkdirp/compare/0.5.1...v0.5.6)

---
updated-dependencies:
- dependency-name: minimist
  dependency-type: indirect
- dependency-name: mkdirp
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-06 19:30:45 +00:00
Dale Glass
d81f340212
Merge pull request #656 from overte-org/dependabot/npm_and_yarn/screenshare/ansi-regex-4.1.1
Bump ansi-regex from 4.1.0 to 4.1.1 in /screenshare
2023-10-06 21:28:37 +02:00
dependabot[bot]
757add1aa7
Bump ansi-regex from 4.1.0 to 4.1.1 in /screenshare
Bumps [ansi-regex](https://github.com/chalk/ansi-regex) from 4.1.0 to 4.1.1.
- [Release notes](https://github.com/chalk/ansi-regex/releases)
- [Commits](https://github.com/chalk/ansi-regex/compare/v4.1.0...v4.1.1)

---
updated-dependencies:
- dependency-name: ansi-regex
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-06 19:27:59 +00:00
Dale Glass
fb3966eb45
Merge pull request #655 from overte-org/dependabot/npm_and_yarn/screenshare/electron-22.3.25
Bump electron from 11.5.0 to 22.3.25 in /screenshare
2023-10-06 21:25:48 +02:00
dependabot[bot]
e976ec16ea
Bump electron from 11.5.0 to 22.3.25 in /screenshare
Bumps [electron](https://github.com/electron/electron) from 11.5.0 to 22.3.25.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/main/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v11.5.0...v22.3.25)

---
updated-dependencies:
- dependency-name: electron
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-06 19:25:11 +00:00
dfe0f8c9c4
Merge pull request #653 from overte-org/fix/libvpx-cve
Update windows Qt package for libvpx CVE
2023-10-02 22:47:28 +02:00
c7a31feee7
Update windows Qt package for libvpx CVE 2023-10-02 22:46:24 +02:00
06b7c99235
Merge pull request #652 from JulianGro/update_qt
Update Qt package for Ubuntu 20.04 to fix CVE-2023-5217
2023-10-02 22:34:43 +02:00
3e4f6c10e3 Don't specifically build Qt Script, as we don't use it anymore. 2023-10-01 21:56:53 +02:00
c49df08dd3 Update Ubuntu 20.04 Qt package and switch to system libvpx to fix CVE-2023-5217 2023-10-01 21:55:22 +02:00
57a2ebb800
Merge pull request #579 from Armored-Dragon/FBT-Smoothing-Fix
Avatar Smoothing
2023-09-22 10:27:16 +02:00
7dc4fad55d
Merge pull request #627 from Armored-Dragon/inspect.js-compatibility
inspect.js and mouselook.js compatibility
2023-09-22 07:47:15 +02:00
bc37dd0d3c
Merge branch 'master' into inspect.js-compatibility 2023-09-21 20:33:36 +02:00
Dale Glass
4969933970
Merge pull request #636 from daleglass-overte/rewrite-dropbox-urls
Rewrite Dropbox URLs to force downloads, even if the user uses a preview URL
2023-09-19 16:48:06 +02:00
Dale Glass
babed47b6d Rewrite Dropbox URLs to force downloads, even if the user uses a preview URL 2023-09-18 23:21:38 +02:00
5526e75f6b
Merge pull request #634 from daleglass-overte/fix-dropbox-avatars
Fix loading avatars from Dropbox due to URLs containing parameters
2023-09-18 20:32:40 +02:00
Dale Glass
0fb11f1dcb Fix loading avatars from Dropbox due to URLs containing parameters 2023-09-18 20:22:58 +02:00
375538140d
Merge pull request #631 from overte-org/fix/qt_win_libwep
Update Windows Qt to address libwebp CVE
2023-09-17 17:03:36 +02:00
042e06a455 Update Windows Qt to address libwebp 2023-09-17 15:01:06 +02:00
1fc8bb635a
Merge pull request #630 from overte-org/qt_update111
Update Qt package to fix CVE-2023-4863
2023-09-16 17:28:41 +02:00
8e8dc649b2 Update Qt package to fix CVE-2023-4863 2023-09-16 17:24:40 +02:00
Armored-Dragon
391052d9c1 Fixed conflict. 2023-09-16 07:23:58 -05:00
a3a9ee5cdc
Merge pull request #624 from Armored-Dragon/mouselook-keybind-adjustment
mouseLook.js CapsLock adjustment
2023-09-16 12:25:19 +02:00
a75361833b
Merge pull request #629 from overte-org/fix/default_cursor
Fix invisible cursor when no config is present
2023-09-16 12:24:41 +02:00
99e91be35c Fix invisible cursor when no config is present 2023-09-16 12:21:53 +02:00
Armored-Dragon
1d1305a668 Fix away-enabled causing unsynchronised behavior 2023-09-15 14:40:50 -05:00
Armored-Dragon
e7277af238 inspect.js and mouselook.js compatibility 2023-09-14 15:27:55 -05:00
Armored-Dragon
5ee97c8ceb Commit 2023-09-13 16:41:41 -05:00
9d6f08b908
Merge pull request #607 from rampa3/feature/mouse_look
Add mouse look script - continuation
2023-09-10 15:15:13 +02:00
rampa3
f8aec05332 Converted indentations from tabs to spaces 2023-09-10 11:43:07 +02:00
Edgar
696a727ba2
🎨 Cleaned up some leftover code 2023-09-08 12:51:41 +02:00
79a58da068
Merge pull request #611 from overte-org/feature/hdr_lightmaps
Initial support for HDR lightmaps
2023-09-04 23:19:08 +02:00
87cb04d79e Added debug message for uncomressed texture on GLES 2023-09-04 23:16:11 +02:00
0f59059490 Initial support for HDR lightmaps 2023-09-03 17:03:20 +02:00
c49c947984 Fixed llack of precision in mouse look mode 2023-09-01 23:43:22 +02:00
51a26522b9 Fixed reticle setting 2023-09-01 20:52:07 +02:00
1c71825953
Merge pull request #604 from overte-org/fix/flow
Fix issues with flow bones
2023-08-30 22:21:23 +02:00
6dc9c1a3f2
Merge pull request #574 from overte-org/fix/script_reload2
Fix most of the crash causes on script engine reload/shutdown
2023-08-29 23:48:32 +02:00
rampa3
8ed70d5d84 Added missing mouse look enabled check 2023-08-29 15:57:47 +02:00
Edgar
bdcaa3b97e
📦 Updated unity package 2023-08-29 10:52:33 +02:00
Edgar
cdc055f14f
🐛 Fixed Unity 2019.4 compatibility 2023-08-29 10:51:51 +02:00
1ab46f68e3 Fixed entity script reloads 2023-08-28 23:34:19 +02:00
rampa3
831ef9a3bb Updated mouse look script to use added API endpoints for preventing softlocks with overlays. (Needs testing.) 2023-08-28 22:19:54 +02:00
38d44d079c Fixed flow assignment operators 2023-08-27 23:06:53 +02:00
0c2fe4c81f Fixed flow on curved bones 2023-08-27 22:48:39 +02:00
025f530db6 Added an API function to check if an overlay has keyboard focus 2023-08-27 22:06:03 +02:00
19710d283a
Merge pull request #590 from vegaslon/AddAssets
Add Assets and update path to them
2023-08-27 22:02:37 +02:00
8c87d6f835 Fixed flow bone scaling issue 2023-08-27 20:41:48 +02:00
3d4a993476 API changes for detecting active Window 2023-08-25 23:28:15 +02:00
0590c37375
Merge pull request #598 from Zetaphor/master
jsDoc updates/fixes
2023-08-25 21:02:13 +02:00
e88ddc31aa Fix typos in MyAvatar set and get skeleton offset 2023-08-25 14:06:12 -03:00
13242611ea Fix jsDoc references to Vircadia platform/CDN 2023-08-25 13:58:45 -03:00
ef0fb6ce94 Add example animation and sound for API docs 2023-08-25 13:57:39 -03:00
Edgar
1082e05d89
📄 Added license to FST.cs 2023-08-24 13:50:53 +02:00
Edgar
f747c3bdd8
🐛 Fixed shader warnings 2023-08-24 13:43:18 +02:00
Edgar
d7fdc00bfe
🐛 Some small bug fixes 2023-08-24 12:59:41 +02:00
Edgar
13f1cfb4e2
🔧 Skip joints with the same name 2023-08-24 12:58:16 +02:00
Edgar
b537ae779d
🔧 Parse joints and freeJoints 2023-08-24 12:57:07 +02:00
Edgar
9fe14a4396
🐛 Fixed exporter not bailing out when failing to parse fst 2023-08-24 12:54:29 +02:00
Edgar
1e3457cfd4
"Update Existing Avatar" now properly updates the fst file
It will now keep any previous edits instead of creating a brand-new file
2023-08-24 12:42:40 +02:00
ArmoredDragon
e4c453eba2
Recreated exponentialFilter and accelerationFilter.
Moved them to script-archive
2023-08-22 16:03:59 -05:00
89f826fa5c Fix disabling mouse look when switching to VR mode 2023-08-22 20:31:45 +02:00
rampa3
3fe3284258 Fixed missing brackets on setting getter. 2023-08-22 20:31:26 +02:00
rampa3
042e7293b9 Updated mouse look script to get setting value for enable/disable and tydied up some text formatting in the status notifications. 2023-08-22 20:31:06 +02:00
Vegaslon
3f73c7ba6d Add Assets and update path to them 2023-08-22 14:01:52 -04:00
98282d1255 Add mouse look preference setting 2023-08-22 19:05:09 +02:00
rampa3
e6f2ba65fd Updated the script to enable usage of mouselook with other camera modes. 2023-08-22 19:05:09 +02:00
rampa3
5d7c9c1cbb Added check for if user is in VR and made temporary mouse look disable persist over opening tablet. It will stay disabled until re-enabled manually, or will self reset after cycling away state or taking off VR headset. 2023-08-22 19:05:09 +02:00
rampa3
a824fe01e0 Minor rewrite to make script clean up properly on exit, and added conditions to fix misbehavior in situation of going away with open tablet. 2023-08-22 19:05:09 +02:00
rampa3
3daab28245 Added before forgotten condition to check if mouse look is enabled by default before auto-starting it. 2023-08-22 19:05:09 +02:00
rampa3
5f34d04596 Added initial mouse look script
Added initial WIP implementation of mouse look script.
2023-08-22 19:05:05 +02:00
c0dfbc8e4d
Merge pull request #585 from daleglass-overte/global-require
Put require() in the global scope
2023-08-22 18:03:12 +02:00
ArmoredDragon
2572ce5f01
Finalization
Refactored everything
New UI
2023-08-22 04:42:22 -05:00
Dale Glass
1efd8d27b9 Put require() in the global scope 2023-08-21 01:08:37 +02:00
ArmoredDragon
d0226a3b05
beta
Uses valid track points
Relocated to /developer
Better UI
Settings persistance
2023-08-19 13:54:25 -05:00
ArmoredDragon
6ba8d1ef72
Init POC 2023-08-19 00:22:45 -05:00
9c78c8fb3a
Merge pull request #520 from overte-org/fix/script_crash
Added null pointer check for asQuickItem()
2023-08-18 20:50:47 +02:00
c6f9f16ca5
Merge pull request #566 from overte-org/fix/align_functions
Align functions to avoid V8 asserts in debug builds
2023-08-18 20:42:23 +02:00
0cecaa3e54
Merge pull request #577 from AleziaKurdis/PlacesAppHomeFallback
Home button fallbacking to Tutorial
2023-08-18 20:41:19 +02:00
Alezia Kurdis
158de9125a
Home button fallback to Tutorial
Previously, the Home button, in the case where there is no home bookmark defined, was redirecting to localhost. But some peopl emight not have a localhost domain server running. This PR change the fallback to the Tutorial instead of localhost,

In addition, the tutorial place card wasn't work correctly. (it was trying to use the name instead of the address. I added an exception case for this.
2023-08-18 14:30:48 -04:00
ae36233ff9 Fix QQuickItem pointers 2023-08-18 16:49:14 +02:00
70833f6591 Chenged -falign-functions to use architecture-specific value 2023-08-18 13:17:45 +02:00
d42b7fdbf4
Merge pull request #569 from HeadClot/master-1
Update AvatarExporter.cs with updated year with Copyright info for 2023.
2023-08-18 12:58:41 +02:00
fc7d12a61e
Merge pull request #560 from art0007i/master
remove jquery from EmoteApp.html
2023-08-18 12:57:34 +02:00
166f7223d1 Fix most of the crash causes on script engine reload/shutdown 2023-08-18 12:12:17 +02:00
d62a40de63
Merge pull request #573 from darbdarb/fix/leavefloofchat
Fixed leave messages in floofchat
2023-08-17 13:18:05 +02:00
darbdarb
dc23b482f6 Fixed leave messages in floofchat 2023-08-17 21:14:13 +10:00
Benjamin Stanley
67517e67d8
Update AvatarExporter.cs with updated years for Copyright info.
Updated lines 5 and 381 with updated years for copyright.
2023-08-14 15:32:29 -06:00
e8c1e691ad Align functions to avoid V8 asserts in debug builds 2023-08-14 11:08:20 +02:00
484c65f899
Merge pull request #552 from AnotherFoxGuy/unity-avatar-exporter-update
🔧 Updated AvatarExporter to work with newer Unity versions
2023-08-13 18:33:19 +02:00
Dale Glass
e20434aec9
Merge pull request #564 from overte-org/feature/js_profiling
Add JS profiling API
2023-08-12 21:41:29 +02:00
Dale Glass
f5b6b2c874
Merge pull request #561 from AleziaKurdis/PlaceApp-CommentPrint
Places App: Remove noisy print.
2023-08-12 21:41:08 +02:00
Dale Glass
31cf77dc5e
Merge pull request #553 from overte-org/fix/README_world_volume
Update incorrect statement in README.md
2023-08-12 21:37:39 +02:00
db1680c1ca Change profiling output file extension to CSV 2023-08-12 16:48:05 +02:00
a84c68f4ff Add JS profiling API 2023-08-12 16:18:40 +02:00
71bb32032c
Merge pull request #563 from AleziaKurdis/AppreciateAppRemoval
Appreciate app removal
2023-08-12 10:11:14 +02:00
Alezia Kurdis
ae1e2bd643
Delete scripts/system/appreciate directory 2023-08-11 22:43:50 -04:00
Alezia Kurdis
85030cd0f6
Removal of Appreciate from Interface scripts
Removal of Appreciate from Interface scripts
It will be in More App where it should have been.
2023-08-11 22:40:33 -04:00
Alezia Kurdis
e2b6b3fe8c
Remove debugging prints
This removes the 2 noisy print left behind in the code that were logging all the json of the transaction fetched on the directory server.
2023-08-10 21:53:02 -04:00
art0007i
dc3f1fbd48
remove jquery from EmoteApp.html
this script is too trivial to use jquery
2023-08-10 21:14:11 +02:00
Edgar
8d75d88f94
"Update Existing Avatar" now loads last exported fst file 2023-08-10 10:55:58 +02:00
Edgar
fe4e4b70fd
🐛 Fixed exporter creating a mangled materialMap 2023-08-10 10:55:17 +02:00
Edgar
0e3ef6c7ae
📝 Updated readme 2023-08-10 10:55:13 +02:00
Edgar
c1101e1b8b
🔧 Updated AvatarExporter to work with newer Unity versions 2023-08-10 10:55:06 +02:00
Edgar
c28208dfa3
🎨 Reformatted code 2023-08-10 10:51:15 +02:00
817526188b
Update incorrect statement in README.md 2023-08-07 13:10:11 +02:00
Dale Glass
47ec27ff4d
Merge pull request #535 from overte-org/node_update
Build node from source on aarch64
2023-08-05 22:22:02 +02:00
Dale Glass
7a91b74c94
Merge pull request #540 from overte-org/fix/entity_script_deadlock
Fixed deadlock when entity script engines are being reset.
2023-08-05 22:19:24 +02:00
77ec716363
Merge pull request #542 from overte-org/fix/contols_inertia
Lower inertia for more precise controls
2023-08-03 11:47:34 +02:00
53843e8d2b Fixed control delays that were caused by a filter 2023-08-03 09:42:54 +02:00
74c5b6038f Lower inertia for more precise controls 2023-08-02 22:00:12 +02:00
4091557388 Fixed deadlock when entity script engines are being reset.
Co-authored-by: Julian Groß julian.g@posteo.de
2023-08-01 16:33:41 +02:00
772e144296 Update node on Linux to 18.16.1 2023-07-30 22:11:58 +02:00
d30ecc7853 Build node from source on aarch64 instead of trying to use a prebuilt package. 2023-07-30 22:11:19 +02:00
Dale Glass
55c070d731
Merge pull request #526 from overte-org/linux-server-packaging
Update Linux server packaging
2023-07-30 14:12:58 +02:00
e6e214d1e6 Add comment to VCPKG_INSTALL_ROOT path extraction. 2023-07-29 20:21:52 +02:00
246a2a9a54
Merge pull request #525 from overte-org/JulianGro-patch-1
Remove redundant policy from CMakeLists.txt
2023-07-29 20:17:20 +02:00
27e60ca27d Remove EOL Fedora 36 packaging and add Fedora 38 packaging. 2023-07-25 10:06:12 +02:00
c6ba2b0ef2 Update RPM server packaging to include libnode. 2023-07-25 10:04:21 +02:00
1304129fa2 Don't try to build with crashpad on aarch64 Linux.
Google currently doesn't support building crashpad on or for aarch64 Linux.
2023-07-23 19:12:25 +02:00
89f94e567c Remove Qt Script dependency from Docker build environments 2023-07-23 18:03:23 +02:00
185efd9177 Package libnode with Debian server 2023-07-23 18:01:59 +02:00
533d6c1a37 Add Debian 12 server package building 2023-07-23 18:01:25 +02:00
15ef70dc8c
Remove redundant policy from CMakeLists.txt
It is already defined through cmake/init.cmake
2023-07-23 14:56:06 +02:00
012098b7d6
Merge pull request #521 from overte-org/fix/script_shutdown
Fixed interface scripts failing to shutdown
2023-07-22 14:01:08 +02:00
f3732aaa62
Clarified comment on controller endpoint cleanup 2023-07-22 12:47:15 +02:00
17ceda8843
Merge pull request #522 from AleziaKurdis/PlacesApp-fixFor514
Fix the link on the place name to use the right hifiurl
2023-07-22 12:43:33 +02:00
6c1dfc8c15 Update CHANGELOG.md 2023-07-22 11:57:34 +02:00
Alezia Kurdis
6669dc9d86
Fix the link on the place name to use the right hifiurl
On the place list, the link to a place uses the placename for a local place or the address for a federated or external place
the link on the name was still using directly the address while the other parts (cell background and description) were using the variable.
2023-07-19 21:54:10 -04:00
790a55d093 Fixed interface scripts failing to shutdown and removed deprecated API signal 2023-07-20 00:15:00 +02:00
1e8d032ea3 Added null pointer check for asQuickItem() 2023-07-17 20:23:06 +02:00
Dale Glass
72137f52f7
Merge pull request #519 from overte-org/fix/script_debug
Fix script error logging
2023-07-16 23:21:26 +02:00
7b39475ce9
Merge pull request #518 from daleglass-overte/store-annotations-before-crash-init
Store annotations before the crash handler initializes
2023-07-16 23:20:52 +02:00
8dc776a73c Fix script error logging 2023-07-16 23:09:45 +02:00
Dale Glass
273d4a35a9 Store annotations before the crash handler initializes
The crash handler only accepts annotations after it's initializes, but
we may do that late and lose some possibly valuable information, or need
to structure things in an awkward manner.

Add a simple system to store annotations in memory until the crash handler
is running.
2023-07-16 21:51:36 +02:00
Dale Glass
3164e71736
Merge pull request #515 from AleziaKurdis/exploreAppRefReplacement
Replace reference to "Explore" app in connection error messages
2023-07-15 21:55:57 +02:00
Alezia Kurdis
8fd000e705
Replace reference to EXPLORE app
Replace reference to EXPLORE app to PLACES app in Connection error message.
2023-07-10 21:50:03 -04:00
Alezia Kurdis
9aaa05da79
Replace reference to EXPLORE app
Replace reference to EXPLORE app for "PLACES" app in Connection error message.
2023-07-10 21:46:47 -04:00
9d999c56ff Update CHANGELOG.md 2023-07-10 22:41:29 +02:00
Dale Glass
c05fde3db4
Merge pull request #482 from daleglass-overte/crash-handler-on-server
Crash handler on server
2023-07-09 21:50:43 +02:00
2972c8919f
Merge pull request #513 from overte-org/log_trunc
Truncate logs read by FileLogger
2023-07-09 21:14:56 +02:00
2860650859 Truncate logs read by FileLogger 2023-07-09 21:01:23 +02:00
Dale Glass
0de10029f3 Review fix, change pointer to reference 2023-07-09 20:19:36 +02:00
010e14dfc9
Merge pull request #512 from overte-org/thumbsticks
Fix Valve Index Controller trackpad regression
2023-07-09 18:37:24 +02:00
a6c59ad75d Fix Valve Index Controller trackpad regression 2023-07-09 15:06:31 +02:00
3184e9373a
Merge pull request #510 from AleziaKurdis/fixBubbleScript
Restore the original dimensions of the bubble (for the "Shield" app.)
2023-07-09 09:53:52 +02:00
Alezia Kurdis
bd3e2cd725
Restore the original dimensions of the bubble.
There was a "scale" property on the original 3d overlay that was used in this script or scale the dimensions.
But it seems that the "scale" property was not doing anything. 
When I moved this script to Local Entities, I had to multiply the dimensions with their respective scale and the result was badly streched. (clearly, based on the texture deformation, it was not wished. In addition that Hifi release it as functional ignoring that the scale was doing nothing.)
This fix just remove that scaling added assuming that it was working. 
Now it is it was before V8.
2023-07-07 21:42:45 -04:00
0d383c7855 Update CHANGELOG.md 2023-07-06 22:29:51 +02:00
Dale Glass
69f1ddcec0 Add crash reporting to Oven 2023-07-04 01:20:30 +02:00
b931e545fe
Merge pull request #507 from overte-org/fix/create_app_search
Fix Create App search and URLs in entity list
2023-07-03 23:51:39 +02:00
a7245a9dbc Switch APIDocs deployment from Tuxfamily to Hetzner
Also update the workflow for building APIDocs
2023-07-03 23:36:46 +02:00
1917ad030d Enable FTPS for Doxygen uploads 2023-07-03 22:30:45 +02:00
43cb6cad86 Switch GHA FTP-Deploy to new versioning scheme. 2023-07-03 22:27:50 +02:00
2fdb9a14e1 Change Doxygen deployment from Tuxfamily to Hetzner 2023-07-03 22:25:05 +02:00
73d76ca296 Fix Create App search and URLs in entity list 2023-07-03 21:48:51 +02:00
Dale Glass
2babda5263 Review fix 2023-07-03 01:14:56 +02:00
Dale Glass
14e0a8220b Load settings on start, missed during refactoring 2023-07-03 00:27:36 +02:00
Dale Glass
37d5734f28 Undo some weird formatting
It seems I accidentally ran some sort of auto-format, undoing.
2023-07-03 00:23:40 +02:00
Dale Glass
441413020e Move crash handler to networking library.
Turns out dependencies just don't work out well otherwise.
2023-07-02 22:10:27 +02:00
Dale Glass
25755f9c88 Many improvements:
* Get crash settings in assignment clients
* Allow custom crash reporting URL and token
* Fix setting system -- the client's one doesn't belong in the server
* Lots more documentation

Commit just before moving things around.
2023-07-02 21:18:09 +02:00
9ded209afe
Merge pull request #495 from overte-org/fix/laser_blinking
Fixed laser pointer blinking issue
2023-06-30 23:24:30 +02:00
6b8f460423
Merge pull request #498 from overte-org/fix/create_app_perf
Fixed Create App performance when moving objects
2023-06-30 23:21:01 +02:00
f2e0552565 Fixed angle being occluded sometimes when rotating objects in Create App 2023-06-30 22:02:24 +02:00
f33c270bab Fixed performance issues in Create App 2023-06-30 21:48:24 +02:00
d1df896d83 Fixed Create App VR grab 2023-06-29 18:35:13 +02:00
4254c19cf6 Fixed laser pointer blinking issue 2023-06-29 17:30:49 +02:00
acdeb549f8
Merge pull request #490 from overte-org/fix/lasers_overlays
Laser pointers on overlays fix
2023-06-27 23:21:29 +02:00
ebedfa5a5a
Merge pull request #481 from overte-org/fix/thumbsticks
Fix thumbstick press issue
2023-06-27 21:16:20 +02:00
027deef9d5
Merge pull request #487 from overte-org/fix/vr_click_on_triggerable
Fix bug with clicking on triggerable objects in VR
2023-06-27 21:10:27 +02:00
0ffe05a7c5 Laser pointers on overlays fix
Laser pointers were being rendered below the overlays. Now the behavior is correct.
2023-06-27 20:38:49 +02:00
092cb8a572
Merge pull request #478 from overte-org/fix/ui_jumping
VR overlay recenter now triggers on hasDriveInput rising edge
2023-06-27 19:52:13 +02:00
dfef9680f9 Fixed a typo that could have caused a bug 2023-06-27 19:14:30 +02:00
8f000a9df2 Fix bug with clicking on triggerable objects 2023-06-27 17:47:36 +02:00
Dale Glass
f218e54eac Add crash settings to web UI 2023-06-27 00:33:18 +02:00
Dale Glass
e7fb5049ec Add crash reporting to assignment client 2023-06-27 00:08:04 +02:00
Dale Glass
2cfac3a896 Make crash reporting work on domain-server 2023-06-26 23:12:32 +02:00
Dale Glass
4dcc2882fd Crash reporter moved to separate library
UAL moved back to networking
2023-06-26 23:12:32 +02:00
Dale Glass
6ec276c818 Initial reorganization 2023-06-26 23:12:32 +02:00
4e3bba047e
Merge pull request #463 from JulianGro/fbx_279
FBX: Fall back to old Metallic behaviour on files created with Blender 2.79 or older
2023-06-26 20:14:23 +02:00
d60cce0f2e
Merge pull request #484 from daleglass-overte/fix-backtrace-url-in-recovery-handler
Remove unused variable, causes problems if crash reporting is not used.
2023-06-26 19:44:24 +02:00
Dale Glass
b3fba4d0ab Remove unused variable, causes problems if crash reporting is not used. 2023-06-26 19:41:21 +02:00
7cf9fd83a6 Fix rotation thumbstick press issue 2023-06-26 17:09:23 +02:00
284587913a FBX: Fallback to old behaviour on files created with Blender 2.79 or older 2023-06-25 23:35:08 +02:00
387778aeca
Merge pull request #480 from daleglass-overte/improve-crash-handler
Improve crash handler
2023-06-25 22:42:07 +02:00
474f52a4f3 Fix thumbstick press issue for translation (not rotation yet) 2023-06-25 22:23:49 +02:00
Dale Glass
b2960d5a19 Review fixes 2023-06-25 21:46:57 +02:00
Dale Glass
de706ab458 Rework crash reporting UI
* Encourage users running dev code to submit reports
* Change from "Disable" to "Enable"
* Always initialize Crashpad and just prevent uploads if disabled
* Fix menu not being in sync
* Add documentation
* Keep track of whether Crashpad initialized successfully
2023-06-25 20:14:13 +02:00
4d02e2010f VR overlay recenter now triggers on hasDriveInput rising edge 2023-06-25 16:10:02 +02:00
e5ce854d2a Update CHANGELOG.md 2023-06-25 12:45:32 +02:00
Dale Glass
1e4485e6cf
Merge pull request #477 from overte-org/fix/entity_list
Fix not working entity list in Create App
2023-06-25 03:18:57 -07:00
Dale Glass
179fe79168 Better crash handler 2023-06-25 12:12:28 +02:00
8e83436dfb Fix not working entity list in Create App 2023-06-25 11:52:30 +02:00
da03262084
Merge pull request #465 from overte-org/feature/fov_setting
Added FOV setting to graphics menu
2023-06-25 10:12:54 +02:00
Dale Glass
ba5c9a2911
Merge pull request #473 from Armored-Dragon/ForceHtmlAudioOutputDeviceUpdate-fix
ForceHtmlAudioOutputDeviceUpdate fix
2023-06-24 12:37:38 -07:00
Armored-Dragon
de15b30e2d
Update createGlobalEventBridge.js
Other users seem to be experiencing issues with Audio. Removing it may  not be the correct action, instead exposing the API may be the correct action.
2023-06-24 13:27:21 -05:00
ArmoredDragon
57ab4366d4
Fixed copyright formatting issues. 2023-06-24 12:09:44 -05:00
ArmoredDragon
a986871dec
Remove document event listeners:
No longer needed.
2023-06-24 11:30:19 -05:00
ArmoredDragon
4e7335f149
Attempt 1: Do we need it? 2023-06-24 10:52:41 -05:00
d0fe5b7994 Added FOV setting to graphics menu 2023-06-19 19:10:16 +02:00
3433596330
Merge pull request #448 from overte-org/upgrade/openssl
OpenSSL update
2023-06-19 18:04:18 +02:00
0b53dcc673
Merge pull request #452 from overte-org/fix/node_build
Build libnode from source
2023-06-19 16:55:33 +02:00
df4621b162 Get rid of need for NODE_SOURCE_DIRECTORY_NAME 2023-06-19 12:49:14 +02:00
69ab504349 Libnode portfile cleanup 2023-06-18 23:51:18 +02:00
d6e5b5faf7 Fixed formatting and added a comment 2023-06-18 23:47:59 +02:00
141bd20850 Windows installer fix after OpenSSL upgrade 2023-06-17 21:26:22 +02:00
81129e3ec9 Update Qt on Windows., update OpenSSL 2023-06-17 19:33:35 +02:00
bb428edcac Another fix for libnode portfile on Windows 2023-06-16 13:20:51 +02:00
1f7b4ef350 Fix libnode vcpkg failure on Windows 2023-06-15 23:57:27 +02:00
Dale Glass
758d98a397
Merge pull request #446 from daleglass-overte/gha-add-sentry-token
Build with crash reporting against Sentry
2023-06-15 10:36:37 -07:00
7da45e2d64 Fixed number of jobs for libnode build 2023-06-14 22:02:50 +02:00
31fc553efc Build libnode from source 2023-06-13 22:28:36 +02:00
Dale Glass
2780f375ea Hardcode Sentry crash endpoint for PR builds 2023-06-11 01:53:15 +02:00
3657a49352
Merge pull request #450 from JulianGro/fix_jsdoc
Fix wrong syntax for JSDoc comments
2023-06-09 23:35:43 +02:00
e8afc6da08 Update CHANGELOG.md 2023-06-09 23:33:57 +02:00
326b00cc09 Fix wrong syntax for JSDoc comments.
For reference, this is an internal syntax defined in tools/jsdoc/plugins/hifi.js
2023-06-09 13:59:49 +02:00
Dale Glass
258e1de181 Use non-secret environment variable for PR build crash reporting 2023-06-07 23:48:46 +02:00
7d94439299 OpenSSL vcpkg update 2023-06-06 20:23:10 +02:00
Dale Glass
e8fbb98ab6 Build with crash reporting against Sentry 2023-06-06 19:01:15 +02:00
Dale Glass
0f158977fe
Merge pull request #443 from shocktail39/fix/drop-qtscript-from-cmake
remove qtscript from cmake dependencies
2023-06-04 11:42:30 -07:00
Dale Glass
ab7eebae31
Merge pull request #445 from daleglass-overte/fix-settings-reset
Fix resetting the settings
2023-06-04 11:41:22 -07:00
5d08f3483a
Merge pull request #444 from overte-org/fix/private_access_v8
Hide private methods and QObject signals from script engine
2023-06-04 16:34:21 +02:00
Dale Glass
32b9cc123c Fix resetting the settings
Also minor documentation improvements
2023-06-04 14:50:03 +02:00
da9b9f76af Hide QObject signals from script engine and switch off script memory reporting 2023-06-04 01:07:26 +02:00
8c9a88b2d9 Hide private methods from script engine 2023-06-04 00:29:14 +02:00
steve hocktail
e71f3c7990
remove qtscript from cmake dependencies 2023-06-03 15:44:53 -04:00
Dale Glass
dba38acb9f
Merge pull request #381 from JulianGro/pr/drop-wallet
Drop all dependencies on marketplace and wallet
2023-06-03 21:27:13 +02:00
514c63ed90 Fix prtotocol incompatilibility after removing wallet 2023-06-03 12:27:24 +02:00
fe0f074b54
Merge pull request #437 from JulianGro/gha_clear_user_directory
Fix GitHub Actions not cleaning up after itself
2023-06-02 22:45:55 +02:00
Dale Glass
58fbffa9e7
Merge pull request #436 from shocktail39/fix/v8-mic-icon
fixed mic not changing color when not in use
2023-06-02 18:43:10 +02:00
96ca2423b6 Clear user cache directories on self-hosted GitHub Actions 2023-05-30 23:22:33 +02:00
e256599a15
Merge pull request #431 from overte-org/feature/IME
Japanese language support (and other IME probably)
2023-05-30 12:53:24 +02:00
steve hocktail
bb09b1cdfb fixed mic not changing color when not in use 2023-05-29 14:57:01 -04:00
3c1c81e3ac Post merge fix 2023-05-29 19:26:33 +02:00
Heather Anderson
60b8d41c16 stripping wallet/marketplace out 2023-05-28 15:12:21 +02:00
0f3dc71128 Comment on future IME improvements 2023-05-28 12:39:51 +02:00
e578fe2ab8
Merge pull request #185 from overte-org/feature/v8
V8 scripting engine
2023-05-27 22:22:05 +02:00
6192416dce V8 related cleanup 2023-05-27 22:06:57 +02:00
b3997bff54
Merge pull request #409 from JulianGro/aarch64_node
Add Linux aarch64 node package
2023-05-27 18:49:50 +02:00
26fe78f9e7
Merge pull request #410 from JulianGro/clear_directory
Clear directory of aarch64 runner
2023-05-27 16:41:45 +02:00
f783a80f34 Temporary IME position for QML GL widgets 2023-05-27 16:40:48 +02:00
db15ed2f13 Fixed contexts for V8 callbacks 2023-05-27 13:32:02 +02:00
17dc2decf6 Initial IME support 2023-05-27 00:08:24 +02:00
b1678a3786
Merge pull request #425 from overte-org/JulianGro-patch-1
Update BUILD_WIN.md
2023-05-26 23:37:27 +02:00
6be91c6e18
Merge pull request #430 from overte-org/fix/msvc2022_libovr
Disable libOVR on MSVC 2022 for now
2023-05-26 23:11:06 +02:00
34efd75d3a Disable libOVR on MSVC 2022 for now 2023-05-24 23:03:17 +02:00
f6c6548364
Fix wrong version in draco VCPKG CONTROL file 2023-05-24 19:33:25 +02:00
08b8bfeef4
Merge pull request #374 from overte-org/update-nvtt
Fix NVTT compilation on Visual Studio 2022
2023-05-24 19:31:40 +02:00
bb03c7d89b BUILD_WIN.md: Mark Create VCPKG environment variable as optional 2023-05-24 00:31:07 +02:00
bf68a92828
BUILD_WIN.md: mark NodeJS and NPM as optional dependencies 2023-05-23 23:28:26 +02:00
db8e69da9e Clear working directory on self hosted aarch64 runner. 2023-05-22 21:57:13 +02:00
f04af62fd2 Prefer libnode.so.108 to prevent wrong system libnode being used over vcpkg libnode. 2023-05-22 20:43:16 +02:00
eb8aabdc8f Switch to Ubuntu 20.04 aarch64 node package 2023-05-22 20:43:03 +02:00
75f45835b5 Fix typo in Linux CI dependency 2023-05-22 20:42:35 +02:00
cc7b7a768b Add Qt package for Ubuntu 20.04 aarch64 2023-05-22 20:42:08 +02:00
b79d31fd6c Include QQueue in ScriptEngineV8.h 2023-05-22 20:41:54 +02:00
141d3d047c Add Linux aarch64 node package 2023-05-22 20:41:35 +02:00
415aa0cc53 Update node-builder/Dockerfile_Ubuntu_18.04_node and node-builder/README.md 2023-05-22 20:40:54 +02:00
dfac944f9f move Windows node package to S3 2023-05-22 20:40:28 +02:00
ab21945a54 Fixed crashes that happened when clearing cache 2023-05-22 00:15:54 +02:00
f72e8948b0 Fixed entity script whitelist and a bug in makeError 2023-05-19 00:17:41 +02:00
8de1331fa5 V8 related cleanup 2023-05-19 00:17:41 +02:00
fe9babf02d Scripting-related cleanup 2023-05-19 00:17:41 +02:00
ba0e705b5a Fixed Script.resolvePath issue in modules 2023-05-19 00:17:41 +02:00
27b5d838f5 Fixed reset rotaion in Create App 2023-05-19 00:17:41 +02:00
4107f40c7c Fixed XMLHttpRequest crash 2023-05-19 00:17:41 +02:00
48a3368b69 Minor fixes and XMLHTTPRequest debugging 2023-05-19 00:17:41 +02:00
d74089d7d8 Fixed parabola pointers, code cleanup 2023-05-19 00:17:41 +02:00
f79ec0f293 Work on script engine exceptions, cleanup 2023-05-19 00:17:41 +02:00
833bffc285 Added makeError and script value prototype getter 2023-05-19 00:17:41 +02:00
Dale Glass
13e22d4931 Fix override warnings 2023-05-19 00:17:41 +02:00
3c80411bf1 V8-related cleanup 2023-05-19 00:17:41 +02:00
30f4608c25 Removed script engine lambda 2023-05-19 00:17:41 +02:00
5050cc9a4e Code cleanup 2023-05-19 00:17:41 +02:00
d240386a25 Update .gitignore 2023-05-19 00:17:41 +02:00
a7229e9249 Scripting API cleanup and type conversion fixes 2023-05-19 00:17:41 +02:00
82e6cb9391 Added missing metatype registration 2023-05-19 00:17:41 +02:00
782c84b873 V8 memory leak fix and optimizations 2023-05-19 00:17:41 +02:00
eabc727bb7 V8 optimizations 2023-05-19 00:17:41 +02:00
a57c7a5e5b V8 heap object statistics 2023-05-19 00:17:41 +02:00
6466d39c05 V8 memory leak fixes 2023-05-19 00:17:41 +02:00
cd11066aa5 Added script value and script value proxy counters 2023-05-19 00:17:41 +02:00
7858673da4 V8 memory leak test 2023-05-19 00:17:41 +02:00
42704ea4bc Work on fixing V8 memory leaks, memory leak test 2023-05-19 00:17:40 +02:00
f016a19b4d Create app fixes 2023-05-19 00:17:40 +02:00
56c3bad002 V8 memory usage statistics 2023-05-19 00:17:40 +02:00
2faacfaec6 Fixed laser pointers 2023-05-19 00:17:40 +02:00
85262dfe28 Fixed grabbing in VR 2023-05-19 00:17:40 +02:00
6f92cf0330 V8-related JS fixes 2023-05-19 00:17:40 +02:00
022bf6de8c Laser pointer fixes 2023-05-19 00:17:40 +02:00
50879fa813 Laser pointer fixes 2023-05-19 00:17:40 +02:00
fdd8cb290c Optimized getEntityProperties 2023-05-19 00:17:40 +02:00
c18fd9092e Fixed assert on ScriptValueV8Wrapper::construct 2023-05-19 00:17:40 +02:00
28079eb2df Fixed deadlock on start with recent Qt versions 2023-05-19 00:17:40 +02:00
8b9cd84df7 vec3ToScriptValue optimizations 2023-05-19 00:17:40 +02:00
43939290b2 Revert "vec3FromScriptValue replacement attempt"
This reverts commit 584e4be0082c07c62b6ad1f17d4258878ce3223c.
2023-05-19 00:17:40 +02:00
dba0925a1c vec3FromScriptValue replacement attempt 2023-05-19 00:17:40 +02:00
3a207507bf Optimized EntityItemProperties::copyFromScriptValue 2023-05-19 00:17:40 +02:00
ec3e87da5c Added ScriptValue::getPropertyNames 2023-05-19 00:17:40 +02:00
e114d86871 Optimization of conversion of vec3 to/from script value 2023-05-19 00:17:40 +02:00
b0e030ada2 Fixed default render states for laser pointers 2023-05-19 00:17:40 +02:00
4062d80445 Added hash maps for faster property search on V8 callbacks 2023-05-19 00:17:40 +02:00
2a2cf3898b Work on porting laser pointers to local entities, removal of LaserPointer JS API 2023-05-19 00:17:40 +02:00
4d03033c9e Fixed pick and ray pick scripting interface 2023-05-19 00:17:40 +02:00
ab9f2a7198 Fixed grabbing objects with mouse in desktop mode 2023-05-19 00:17:40 +02:00
589ca2a399 Converted overlay getProperty calls to Entities.getEntityProperties 2023-05-19 00:17:40 +02:00
6c1fd88fb1 Fixed crash with asset scripting crash 2023-05-19 00:17:40 +02:00
Alezia Kurdis
ca577f2802 Replace 3dOverlays for Local Entities - part 2
Replace 3dOverlays for Local Entities (developer's script)
2023-05-19 00:17:40 +02:00
Alezia Kurdis
0f663d1a4d Replace 3d Overlays by Local Entities
Replace 3d Overlays by Local Entities
This is for the system files.
Another PR will follow for the developer scripts.
2023-05-19 00:17:40 +02:00
e14ae4a96a Partial fix for asset scripting crash 2023-05-19 00:17:40 +02:00
e75c671a70 Fixed crash with Cameras app 2023-05-19 00:17:39 +02:00
8a2c055adc Removed 3D overlays functionality entirely 2023-05-19 00:17:39 +02:00
26dd0c7d80 Marked places where 3D overlays need to be replaced with local entities 2023-05-19 00:17:39 +02:00
b52fe9a7d5 Fixed crash on starting in VR mode with V8 2023-05-19 00:17:39 +02:00
ceeac40ea8 Re-enabled WebRTC 2023-05-19 00:17:39 +02:00
819ebc9e49 Fixed events on V8 2023-05-19 00:17:39 +02:00
de75aa1794 Uncommented code that got commented out by accident 2023-05-19 00:17:39 +02:00
Dale Glass
64c0364b2e Remove old tests, doesn't build on Windows 2023-05-19 00:17:39 +02:00
f241ede316 Initial fixes for building on Windows 2023-05-19 00:17:39 +02:00
Dale Glass
d8488859e2 Add Quat tests, for debugging a problem 2023-05-19 00:17:39 +02:00
Dale Glass
4d8a20aed7 Use logging categories everywhere in the base scripting engine code 2023-05-19 00:17:39 +02:00
Dale Glass
0fc2ab870a Add V8 logging category
Rename logging category to overte
Make all V8 code use logging categories
2023-05-19 00:17:39 +02:00
633319c111 Reenable vcpkg-clean because GitHub Actions is running out of disk space. 2023-05-19 00:17:39 +02:00
b42a949d03 Find VCPKG libnode 2023-05-19 00:17:39 +02:00
b650da7fc9 Initial VCPKG Node/v8 packaging 2023-05-19 00:17:39 +02:00
3e7bdad500 Fixes in Create App 2023-05-19 00:17:39 +02:00
41760ee3ac Changed variable in ScriptObjectV8Proxy because it has to be stored as aligned pointer 2023-05-19 00:17:39 +02:00
Dale Glass
6ac2596293 Capture exceptions that happen in signals in ScriptEngine, add test 2023-05-19 00:17:39 +02:00
Dale Glass
1e1b96765f Add test for update event 2023-05-19 00:17:39 +02:00
Dale Glass
acd19f7c40 Review fix: add flag to choose whether to abort script on exception 2023-05-19 00:17:39 +02:00
Dale Glass
aec756b0b9 Register metatypes, fixes warnings
Remove executeOnScriptThread from Script JS API -- seems unused, is marked deprecated, and for some reason
registration didn't resolve the warnings.
2023-05-19 00:17:39 +02:00
Dale Glass
8f82750f2a Initial implementation of raiseException and test 2023-05-19 00:17:39 +02:00
Dale Glass
0369949d9b Add tests for object registration and exception raising 2023-05-19 00:17:39 +02:00
Dale Glass
cd02b22bd7 Don't crash in uncaughtException() if there isn't an exception 2023-05-19 00:17:39 +02:00
Dale Glass
4beb5eceeb Tests for runtime exceptions and throw() 2023-05-19 00:17:39 +02:00
Dale Glass
cb0c62024d Throw the right exception class, and add the thrown value to it 2023-05-19 00:17:39 +02:00
Dale Glass
2a5ec7db3d Rework tests, add tests for exceptions 2023-05-19 00:17:39 +02:00
Dale Glass
bb74c2ecc9 Allow accessing engine exceptions from ScriptManager 2023-05-19 00:17:39 +02:00
Dale Glass
de02da5fda Register more metatypes -- more work needed 2023-05-19 00:17:39 +02:00
Dale Glass
b1e2a94d71 Deduplicate QDebug output 2023-05-19 00:17:39 +02:00
Dale Glass
8d6270392d Make ScriptEngine a QObject instead of the derived class
Fix signal -- only needs to be in ScriptEngine
2023-05-19 00:17:39 +02:00
Dale Glass
67e7a7375a Further exception work on V8
* Get rid of maybeEmitUncaughtException
* Mostly get rid of makeError
* Introduce exception hierarchy, change exceptions to shared_ptr
* Simplify exception throwing code
2023-05-19 00:17:39 +02:00
Dale Glass
c0e62c5cc2 Initial exception handling
Make exception handling use the new ScriptException class.
Add exception signal
Throw exceptions in script evaluation
Remove references to ScriptManager from ScriptEngine
2023-05-19 00:17:39 +02:00
2bcd1106d1 Fixed ScriptObjectV8Proxy access after delete 2023-05-19 00:17:39 +02:00
27554da415 Addeed V8 getters/setters to ScriptVariantV8Proxy, fixed animation scripting 2023-05-19 00:17:39 +02:00
4e91765a3f Reverted change that broke AnimationObjec scripting interface 2023-05-19 00:17:38 +02:00
3be4fdc33d Fixed deadlock in updating animation state handlers 2023-05-19 00:17:38 +02:00
cae1e1195d V8 QObject pointer handling changes 2023-05-19 00:17:38 +02:00
5e5003ff03 Fixed crash on standing up from sit script 2023-05-19 00:17:38 +02:00
8e718262bd Fixed object containing UniquePersistent 2023-05-19 00:17:38 +02:00
9fd2f4ed08 Fix broken hifi-deps CONTROL file 2023-05-19 00:17:38 +02:00
acc658ee80 Fixed deadlock in Create App 2023-05-19 00:17:38 +02:00
ae7d229d0e Fix copyright headers 2023-05-19 00:17:38 +02:00
Dale Glass
02a0e33e95 Add NETWORKLESS_TEST_SCRIPT type to NetworkManager.
This is a slightly hacky way to make ScriptManager work without any
networking, and minimize the number of dependencies needed to run
a test.
2023-05-19 00:17:38 +02:00
12f239b18c Fix V8 memory leak and persistend handle problems 2023-05-19 00:17:38 +02:00
Dale Glass
84fd17cb66 Review fixes 2023-05-19 00:17:38 +02:00
Dale Glass
0f46fb9b4d Add a ScriptManagerScriptingInterface.cpp, will be useful later. 2023-05-19 00:17:38 +02:00
Dale Glass
a13723990e More Doxygen for ScriptEngine 2023-05-19 00:17:38 +02:00
Dale Glass
36cba56325 A bit more documentation 2023-05-19 00:17:38 +02:00
Dale Glass
4d70155e59 Create ScriptManagerScriptingInterface to move off the scripting API into its own class
Add a lot of documentation
2023-05-19 00:17:38 +02:00
Dale Glass
9e21792508 Some minor improvements to Doxygen generation
Enable graphs, use SVG
2023-05-19 00:17:38 +02:00
Dale Glass
e35aa8046d Add more Doxygen docs
Doesn't work right in ScriptManager, looks like a conflict with JSDoc
2023-05-19 00:17:38 +02:00
887ebd5365 Removed deadlock in signal proxy disconnect again 2023-05-19 00:17:38 +02:00
d25e5491eb Fixed V8 crash with Create App 2023-05-19 00:17:38 +02:00
b554fc70ea Added script timers performance debugging 2023-05-19 00:17:38 +02:00
faf9b75487 Added signal time and call count debugging 2023-05-19 00:17:38 +02:00
1ad1aee11f Minor scripting-related fixes 2023-05-19 00:17:38 +02:00
5cf32a968c V8 fixes 2023-05-19 00:17:37 +02:00
f65e72c8f2 Listing objects and their properties on API debugger now works 2023-05-19 00:17:37 +02:00
37cc62d082 Fix problem with sit script 2023-05-19 00:17:37 +02:00
5809576577 Fixed Create App 2023-05-19 00:17:37 +02:00
c3417b807c Increased thread safety in V8 2023-05-19 00:17:37 +02:00
57a2dccc6a V8 bugfixes 2023-05-19 00:17:37 +02:00
89f29ce5ca Safer demarshal functions with no void pointers 2023-05-19 00:17:37 +02:00
acbec55b70 Further work on V8 2023-05-19 00:17:37 +02:00
b786ffccd5 Added more debug info to crash with signals 2023-05-19 00:17:37 +02:00
3e692a60b4 V8 fixes 2023-05-19 00:17:37 +02:00
3a5b927979 Functions connected to signals now use context that was active during connecting 2023-05-19 00:17:37 +02:00
044cd506a6 Script engine thread safety improvements 2023-05-19 00:17:37 +02:00
6bd8a8d503 V8 threading safetyu improvements 2023-05-19 00:17:37 +02:00
5099e68b56 V8 fixes, including calls and signals 2023-05-19 00:17:37 +02:00
c8898e8366 Added script include test 2023-05-19 00:17:37 +02:00
a7b1fdcae6 Fixed convertJSObjectToVariant 2023-05-19 00:17:37 +02:00
539c2812c3 Fixed Window.location 2023-05-19 00:17:37 +02:00
66a87def43 Fixed script array to QVariant conversion 2023-05-19 00:17:37 +02:00
cb4dc4c7e8 Fixed location JS API 2023-05-19 00:17:37 +02:00
4f4c8931a9 V8 fixes, incl. enum API objects fix 2023-05-19 00:17:37 +02:00
4cfde4bcc1 Switched off animation handlers for now, because they deadlocked with V8 2023-05-19 00:17:37 +02:00
de91769e2f Fixed some V8 crashes 2023-05-19 00:17:37 +02:00
3f1a7605a5 Fixed build warnings 2023-05-19 00:17:37 +02:00
1550049b0c Fixed script value iterator and connect functionality 2023-05-19 00:17:37 +02:00
e786fd4864 Fixed Script.require 2023-05-19 00:17:37 +02:00
386242d9c7 Fixed adding properties to methods 2023-05-19 00:17:37 +02:00
076349a488 Re-enabled script module cache creation 2023-05-19 00:17:37 +02:00
Dale Glass
e72bf600ce Add missing require test 2023-05-19 00:17:37 +02:00
Dale Glass
2960cc0284 Add missing override 2023-05-19 00:17:36 +02:00
Dale Glass
890f8e0bc2 Add missing dependency on script-engine 2023-05-19 00:17:36 +02:00
Dale Glass
ac7ebe2888 Add hasProperty for checking whether a property exists 2023-05-19 00:17:36 +02:00
5f2c13da52 Added debug function to list object members 2023-05-19 00:17:36 +02:00
ed968e1ebd Further work on evaluateInClosure 2023-05-19 00:17:36 +02:00
70d4a43009 Fixed evaluateInClosure and other V8 stuff 2023-05-19 00:17:36 +02:00
cc20ced1ca Some V8 debuging messages 2023-05-19 00:17:36 +02:00
da458ccef9 Fixed getting current script name 2023-05-19 00:17:36 +02:00
6301d23c48 Fixed object deletion event, temporarily disabled watchdog log commands to make reading logs easier 2023-05-19 00:17:36 +02:00
0d454eb6e8 V8 fixes, including making debug console work 2023-05-19 00:17:36 +02:00
97137c7b13 More fixes for V8 2023-05-19 00:17:36 +02:00
2f9f78fb87 Fixed setting properties of ScriptObjectV8Proxy 2023-05-19 00:17:36 +02:00
0b8958204f Fixed vector math, added simple test for it 2023-05-19 00:17:36 +02:00
e680b5dc72 Fixed method calls 2023-05-19 00:17:36 +02:00
Dale Glass
640cee0360 Reduce V8 stack size to 256K. Otherwise the interface can be crashed with a stack overflow in a script. 2023-05-19 00:17:36 +02:00
Dale Glass
e1c22b5c7c Initial support for a directory with test scripts
This way there's no need to rebuild the test every time.
Script dir is symlinked from the source into the binary dir.
2023-05-19 00:17:36 +02:00
be3d1713a8 Fixed C++ function calls for V8 2023-05-19 00:17:36 +02:00
abfcbb7588 Added V8 Locker for moving script engine to a new thread 2023-05-19 00:17:36 +02:00
827ddf5958 Added simple compile test function 2023-05-19 00:17:36 +02:00
Dale Glass
38064b95c5 Fix animation tests build 2023-05-19 00:17:36 +02:00
Dale Glass
1a4eb3ac62 Keep return script value 2023-05-19 00:17:36 +02:00
Dale Glass
2a394ee290 Add CMakeLists 2023-05-19 00:17:36 +02:00
Dale Glass
e5217c44f0 Build fixes 2023-05-19 00:17:36 +02:00
Dale Glass
c691e8691d Partial changes 2023-05-19 00:17:36 +02:00
Dale Glass
007db5166e Initial scripting engine testing code 2023-05-19 00:17:36 +02:00
Dale Glass
0022038772 Fix tabulation 2023-05-19 00:17:36 +02:00
Dale Glass
f093d8155c Use sampler library if present 2023-05-19 00:17:36 +02:00
Dale Glass
e5e1d9b2a8 Remove requirement for sampler library
Library is not present on some distributions, like Fedora, and not used in the code currently
2023-05-19 00:17:36 +02:00
58a221541f Script engine new function fixes 2023-05-19 00:17:36 +02:00
a4c6930a50 Added context scopes 2023-05-19 00:17:36 +02:00
2b06c09318 Add V8 handle scopes 2023-05-19 00:17:36 +02:00
b4d21c38c3 Updated script isolation files 2023-05-19 00:17:36 +02:00
7e9ad39b32 Initial V8 support, not working yet 2023-05-19 00:17:36 +02:00
df507a741b Initial cmake files for V8 2023-05-19 00:17:36 +02:00
cf98d5939b Added V8 vcpkg files 2023-05-19 00:17:36 +02:00
74a3c514d2 Replaced withReadLock with resultWithReadLock in ScriptSignalQtProxy::findConnection 2023-05-19 00:17:35 +02:00
586bd7ffca Fixes for code review 2023-05-19 00:17:35 +02:00
e9bfdd49e8 Fix build error on Windows 2023-05-19 00:17:35 +02:00
979e9ff113 Added scoring system for determining overloaded function to call 2023-05-19 00:17:35 +02:00
8304a0c500 Fixed clearTimeout behavior when called with expired timer 2023-05-19 00:17:35 +02:00
e9984c72f0 Added QTimer* script data type and some nullptr checks 2023-05-19 00:17:35 +02:00
80e5f2430f Fixed simplifiedNametag 2023-05-19 00:17:35 +02:00
716a02495e Fix build error on MacOS 2023-05-19 00:17:35 +02:00
7a84f7ee4d Fix for crash on deleting caches 2023-05-19 00:17:35 +02:00
b00c1ae91b Fixes to scripting-related warnings (lambdas) 2023-05-19 00:17:35 +02:00
6f32173025 Fixes to most scripting-related warnings 2023-05-19 00:17:35 +02:00
a14c6444f1 Forgot to add ResourceScriptingInterface.cpp before 2023-05-19 00:17:35 +02:00
5a9b0ccfb0 Replaced regular mutex with a read write one to improve performance 2023-05-19 00:17:35 +02:00
ad57a5e6fd Fixed enums in scripting engine 2023-05-19 00:17:35 +02:00
b27e819d59 Fixed callEntityMethod arguments in grab.js 2023-05-19 00:17:35 +02:00
0a3ec92031 Type registeration fixes for scripting engine 2023-05-19 00:17:35 +02:00
50a6a63cc3 Fixes to problems with meta-types 2023-05-19 00:17:35 +02:00
33c8607e15 Proper handling of enum classes for scripting 2023-05-19 00:17:35 +02:00
95434a26a8 Attempt to debug broken enums in scripting 2023-05-19 00:17:35 +02:00
ece2b8096b Fixed list item removal during access bug 2023-05-19 00:17:35 +02:00
4d61d4fe67 Disallowed incorrect Vec3 to float cast in script engine 2023-05-19 00:17:35 +02:00
c78ec80539 Fixed build error after rebase 2023-05-19 00:17:35 +02:00
Heather Anderson
9c6ffc3fc2 fixed missing #include required by new template blockingInvokeMethod functions 2023-05-19 00:17:35 +02:00
Heather Anderson
457728cee1 dropped KALILA global script attributes 2023-05-19 00:17:35 +02:00
Heather Anderson
9b87072a49 dropped unused meta declaration 2023-05-19 00:17:35 +02:00
Heather Anderson
306f3d07c9 remove requirement that ScriptManager::evaluate be meta-invokable 2023-05-19 00:17:35 +02:00
Heather Anderson
67260b92bd fix typo preventing methods from being discovered on scriptable objects when we're ignoring superclasses 2023-05-19 00:17:35 +02:00
Heather Anderson
a822110a62 identify the largest number of parameters any of our method overrides accept and discard script parameters beyond that count 2023-05-19 00:17:35 +02:00
Heather Anderson
4d6889a677 force Qt registration of PerformanceManager::PerformancePreset, as it's used as a return datatype in a script-callable function (and doesn't get auto-registered) 2023-05-19 00:17:35 +02:00
Heather Anderson
0bce0668f7 minor tweaks in response to code review (very belated) and reported issues
- explicitly registering some enums with Qt at runtime (needed if they're function return values)
- replaced references to engine() with local variables if they already existed
2023-05-19 00:17:34 +02:00
Heather Anderson
55b5a2cd03 Continued tightening and testing of the scripting engine "glue" logic
- QObject wrappers will now be reused when asked to wrap the same QObject multiple times
- improved error reporting when we can't form a native call from script
- dropped support for having the existing QtScript logic handle Qt object transformations
- assuming that our code will handle all calls into native objects
- changing timer functions to use CTimer* publicly rather than casted QObject*
2023-05-19 00:17:34 +02:00
Heather Anderson
742fa225f2 not sure what would have broken this but... adding required windows dependencies for MIDI to operate 2023-05-19 00:17:34 +02:00
Heather Anderson
bc6eaf25dc first pass creating Qt <-> QtScript interface 2023-05-19 00:17:34 +02:00
Heather Anderson
bd04554150 changes from code review suggestions 2023-05-19 00:17:34 +02:00
Heather Anderson
70fbe76341 convert script engine variables from QSharedPointer to std::shared_ptr 2023-05-19 00:17:34 +02:00
Heather Anderson
82535cab90 more shifting around of ScriptEngineQtScript declaration 2023-05-19 00:17:34 +02:00
Heather Anderson
c9bf36e57b more simplification of ScriptEngineQtScript declarations 2023-05-19 00:17:34 +02:00
Heather Anderson
bd4a035ffb significant cleanup of ScriptEngineQtScript (which isn't exposed to the scripting engine and shouldn't be @jsdoc'ed) 2023-05-19 00:17:34 +02:00
Heather Anderson
ef16b83362 patch review and removal of unnecessary differences 2023-05-19 00:17:34 +02:00
Heather Anderson
86348b315e finished coding and smoketested ScriptContextQtAgent (required to get Scriptable functional for its users) 2023-05-19 00:17:34 +02:00
Heather Anderson
d868143da0 hopefully resolves the last reported link error on macos 2023-05-19 00:17:34 +02:00
Heather Anderson
fb93e39f66 more code review using github compiler runs (hopefully the macos build will link with this) 2023-05-19 00:17:34 +02:00
Heather Anderson
227e899189 more code review using github compiler runs 2023-05-19 00:17:34 +02:00
Heather Anderson
16c2d76efa more debugging using github compiler runs 2023-05-19 00:17:34 +02:00
Heather Anderson
23edfa3747 more changes in response to build log on other compilers 2023-05-19 00:17:34 +02:00
Heather Anderson
23776abce3 changes in response to build log on other compilers 2023-05-19 00:17:34 +02:00
Heather Anderson
8581022a53 rework ScriptValue to act like a stack variable rather than a pointer 2023-05-19 00:17:34 +02:00
Heather Anderson
f209c5124d early smoketesting 2023-05-19 00:17:34 +02:00
Heather Anderson
5f2b2c90a2 added custom type support 2023-05-19 00:17:34 +02:00
Heather Anderson
45ef458af4 dropping dependencies from networking to script-engine by moving EntityScriptClient and LocationScriptingInterface 2023-05-19 00:17:33 +02:00
Heather Anderson
7964f06990 moving EntityItemID from script-engine to shared 2023-05-19 00:17:33 +02:00
Heather Anderson
665ea521e8 shifting classes around and adding static initializers to resolve dependencies on scripting-engine (and drop dependencies from scripting-engine) 2023-05-19 00:17:33 +02:00
Heather Anderson
1f4f458942 adding basic script-engine documentation 2023-05-19 00:17:33 +02:00
Heather Anderson
2dd9d784a9 working to clean up the QtScript implementation and move towards completion of the proxy interface 2023-05-19 00:17:33 +02:00
Heather Anderson
1e018dbc64 isolate calls to the QtScript libraries to an interface we control 2023-05-19 00:17:33 +02:00
Heather Anderson
713b29ee41 ensure all #include's to QtScript are labeled as such (easier to find) 2023-05-19 00:17:33 +02:00
b1bf855202
Merge pull request #412 from daleglass-overte/update_tbb
Update tbb
2023-05-18 20:47:36 +02:00
Dale Glass
1138c6c720 Remove fix-static-build.patch, doesn't apply.
Fix missing PATCHES directive to make the other patch work.
2023-05-16 19:07:32 +02:00
Dale Glass
7d08df3f82 Fix build on Fedora.
Fix portfile license handling.
Fix tbb choking on Qt's 'emit' macro.
2023-05-16 18:56:33 +02:00
584ac3c15a Update tbb to fix building on Apple M1 2023-05-16 18:21:35 +02:00
ede6a169e0 Revert "Do not clear working directory"
This reverts commit 0f60e35d26.
2023-05-15 20:59:15 +02:00
1ab7d3b119
Merge pull request #399 from overte-org/gha_aarch64
Update GitHub Actions
2023-05-12 20:45:40 +02:00
b097976a3e
Merge pull request #397 from AleziaKurdis/PlaceApp_fileProtocoleSupport
Places app: support for file URI scheme
2023-05-12 20:44:53 +02:00
bad64acecb
Merge pull request #403 from AleziaKurdis/placesApp-tpOnEnter
Places App: Enter to teleport
2023-05-12 20:35:05 +02:00
Alezia Kurdis
cb4a443920
Places App: Enter to teleport
This PR add the possibility to press "Enter" to initiate a teleportation from the value in the search/address bar of the Places App.
(In addition to the current teleport button)
This is a more intuitive behaviour since everyone is used to this in the web browsers.
2023-05-11 21:43:40 -04:00
b411335998 Do not try to package on Linux aarch64 as it currently fails trying to build server-console.
The packaging step on Linux produces an empty archive anyways, so we just disable it.
2023-05-11 13:01:24 +02:00
dc01ba50cc Add Dockerfile for aarch64 CI build containers 2023-05-11 12:38:47 +02:00
0f60e35d26 Do not clear working directory, since we always run in a fresh VM or container. 2023-05-11 12:35:39 +02:00
670841eb6b Change job names 2023-05-11 12:35:08 +02:00
d85d48af45 Switch to using an aarch64 Docker container instead of running directly on the runner. 2023-05-11 12:34:54 +02:00
cc476c75c3 Don't try to run macOS-10.15 jobs as their runners have been shut down. 2023-05-11 12:29:50 +02:00
f3f07869b5 Change license of Dockerfiles. 2023-05-11 12:28:49 +02:00
42565dcdcd Add systemd-logging dependency to server Dockerfiles 2023-05-11 12:27:53 +02:00
2c54cc7ff5 Fix typos in Dockerfiles 2023-05-11 12:25:55 +02:00
Alezia Kurdis
74eefac999
Places app: support for file URI scheme
This PR adds the support of URI starting by "file:/"
in the places app. (to allow to load local serverless json)
2023-05-08 21:43:35 -04:00
0bfdf92647
Merge pull request #392 from daleglass-overte/fix-unique-ptr-delete
Fix unique_ptr new[]/delete mismatch
2023-05-06 00:38:03 +02:00
Dale Glass
0a2d733c39 Fix unique_ptr new[]/delete mismatch
This is likely a crash fix
2023-05-05 23:59:09 +02:00
6313bc5295
Merge pull request #380 from overte-org/qml_remove_deprecated
Remove styles-uit and controls-uit QML modules
2023-05-01 19:00:00 +02:00
Dale Glass
357af2629c
Merge pull request #385 from daleglass-overte/fix-build-on-gcc13
Fix the build on GCC 13.0
2023-04-29 21:34:19 +02:00
Dale Glass
a72a58f11f
Merge pull request #379 from overte-org/qml_import_path
Add QML_IMPORT_PATH for KDevelop and Qt Creator
2023-04-29 21:28:52 +02:00
Dale Glass
03a20b9b94 Fix the build on GCC 13.0
This adds #include <cstdlib> in a couple places. It also fixes a huge
amount of warnings due to "concept" becoming a keyword in C++20
2023-04-27 00:42:25 +02:00
90efffa2fb
Merge pull request #302 from daleglass-overte/allow-fullscreen-display-selection
Allow fullscreen display selection
2023-04-23 21:07:40 +02:00
54de00d02f
Merge pull request #327 from AleziaKurdis/placeAppBeaconsDecommission
Beacons decommission
2023-04-23 20:50:58 +02:00
028f6c2f82 Remove styles-uit and controls-uit QML modules, as they were replaced with stylesUit and controlsUit 5 years ago. 2023-04-23 20:23:11 +02:00
a7749077f9 Add QML_IMPORT_PATH for KDevelop and Qt Creator code completion and navigation. 2023-04-23 18:29:29 +02:00
Dale Glass
f2c51cd459
Merge pull request #375 from gameboycjp/WinCMakeBatFile
Windows Building Tweak
2023-04-22 22:47:38 +02:00
gameboycjp
a4b416eacd
Update winprepareVS19.bat
There should either be no pause, or it should wait for user input. If CMake fails, this gives the user a chance to review logs.
2023-04-21 16:49:20 -07:00
gameboycjp
cd51bd516f
Update BUILD_WIN.md
Overhaul step 7
2023-04-21 14:30:41 -07:00
gameboycjp
649aaf302f
Add Batch File To Run CMake Automatically
Added for ease of use
2023-04-21 21:14:08 +00:00
2ae553a21a Update NVTT from 2.1.3 to 2.1.4
* Fix compilation on Visual Studio 2022
2023-04-21 14:16:37 +02:00
4d782bc28b
Merge pull request #258 from akamicah/update-unity-avatar-exporter
Update unity avatar exporter
2023-04-17 22:57:26 +02:00
dcddf08d24
Merge pull request #342 from JulianGro/increase_log_size
Increase max log size
2023-04-15 00:35:24 +02:00
f5f2134b92
Merge pull request #349 from JulianGro/executable
Remove executable permission from a bunch of files
2023-03-23 02:41:14 +01:00
ad05086a9c
Merge pull request #347 from JulianGro/audio
Throw warning on empty audio device list
2023-03-18 21:13:15 +01:00
8b973bdfa3 Remove executable permission from a bunch of files 2023-03-14 00:02:33 +01:00
09a88a5d0f Add KDevelop to gitignore 2023-03-12 16:38:32 +01:00
40cdeec4d9 Fix "Invalid token at start of a preprocessor expression" 2023-03-12 16:36:14 +01:00
88a0d6217e Throw warning if audio devices list is empty instead of debug message. 2023-03-12 16:35:55 +01:00
cf6c974c5d
Update license year 2023-03-11 19:35:10 +01:00
67a9b82236 Increase max log size from 512 KiB to 10 MiB.
Lower max amount of log files from 100 to 20.
2023-03-11 19:24:23 +01:00
842a78e6bc
Add PayPal to FUNDING.yml 2023-03-09 12:58:43 +01:00
8276e429c8
Merge pull request #338 from JulianGro/master
Add FUNDING.yml
2023-03-06 22:11:04 +01:00
Alezia Kurdis
9f6a7399eb
Beacons decommission
This remove the codes to support the old Beacons system.
2023-02-15 22:09:56 -05:00
Dale Glass
bd1fc19bac
Update libraries/ui/src/ScreenName.h
Co-authored-by: Julian Groß  <julian.g@posteo.de>
2023-01-07 20:49:36 +01:00
Dale Glass
8e7b99811e
Update libraries/ui/src/ScreenName.cpp
Co-authored-by: Julian Groß  <julian.g@posteo.de>
2023-01-07 20:49:30 +01:00
Dale Glass
1cf3756c84 Move screen naming to UI library, and improve naming 2023-01-07 19:35:52 +01:00
Dale Glass
de36c716c8 Try to make screen descriptions include more info 2023-01-06 20:35:57 +01:00
Dale Glass
8884988336 Add an option to choose which screen to use for full screen mode 2023-01-06 17:32:06 +01:00
Dale Glass
4fff634d50 Remove call to non-existing function close() in QML ComboBox
This causes the following error:

ComboBox.qml:53: ReferenceError: close is not defined

And seems to be definitely incorrect.
2023-01-06 17:32:06 +01:00
Mike
b75dd349f7 Var name updates and doc url update 2022-11-20 20:57:54 +00:00
Mike
c4668c585a Fix variable names 2022-11-20 14:48:55 +00:00
Mike
f5a825e606 Fix unity asset exporter for Linux use, update branding to Overte 2022-11-20 14:46:15 +00:00
1235 changed files with 48614 additions and 51328 deletions

View file

@ -1,6 +1,6 @@
# Copyright 2013-2019 High Fidelity, Inc.
# Copyright 2020-2022 Vircadia contributors.
# Copyright 2021-2023 Overte e.V.
# Copyright 2021-2024 Overte e.V.
# SPDX-License-Identifier: Apache-2.0
name: Linux Server CI Build
@ -12,6 +12,10 @@ on:
push:
branches:
- master
tags:
# Release tags. E.g. 2024.06.1
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#filter-pattern-cheat-sheet
- "[0-9][0-9][0-9][0-9].[0-9][0-9].**"
env:
BUILD_TYPE: Release
@ -19,6 +23,8 @@ env:
UPLOAD_BUCKET: overte-public
UPLOAD_REGION: fra1
UPLOAD_ENDPOINT: "https://fra1.digitaloceanspaces.com"
# Disable VCPKG caching to save time.
VCPKG_FEATURE_FLAGS: -binarycaching
jobs:
build:
@ -29,59 +35,79 @@ jobs:
matrix:
include:
- os: debian-11
image: docker.io/overte/overte-server-build:0.1.2-debian-11-amd64
image: docker.io/overte/overte-server-build:0.1.3-debian-11-amd64
arch: amd64
runner: ubuntu-latest
# https://github.com/testflows/TestFlows-GitHub-Hetzner-Runners/wiki/Meta-Labels
# self_hosted makes the Hetzner auto-scaler put up the job.
# type-cx52 is a Hetzner VPS server type. In this case cs52 is a server with 16-cores and 32GB of RAM.
# image-x86-app-docker-ce is a Hetzner image.
# https://github.com/testflows/TestFlows-GitHub-Hetzner-Runners/wiki/Specifying-The-Runner-Image
runner: [self_hosted, type-cx52, image-x86-app-docker-ce]
- os: debian-11
image: docker.io/overte/overte-server-build:0.1.2-debian-11-aarch64
image: docker.io/overte/overte-server-build:0.1.3-debian-11-aarch64
arch: aarch64
runner: linux_aarch64
runner: [self_hosted, type-cax41, image-arm-app-docker-ce]
- os: ubuntu-18.04
image: docker.io/overte/overte-server-build:0.1.1-ubuntu-18.04-amd64
- os: debian-12
image: docker.io/overte/overte-server-build:0.1.3-debian-12-amd64
arch: amd64
runner: ubuntu-latest
runner: [self_hosted, type-cx52, image-x86-app-docker-ce]
- os: debian-12
image: docker.io/overte/overte-server-build:0.1.3-debian-12-aarch64
arch: aarch64
runner: [self_hosted, type-cax41, image-arm-app-docker-ce]
- os: ubuntu-20.04
image: docker.io/overte/overte-server-build:0.1.1-ubuntu-20.04-amd64
image: docker.io/overte/overte-server-build:0.1.3-ubuntu-20.04-amd64
arch: amd64
runner: ubuntu-latest
runner: [self_hosted, type-cx52, image-x86-app-docker-ce]
- os: ubuntu-22.04
image: docker.io/overte/overte-server-build:0.1.1-ubuntu-22.04-amd64
image: docker.io/overte/overte-server-build:0.1.3-ubuntu-22.04-amd64
arch: amd64
runner: ubuntu-latest
runner: [self_hosted, type-cx52, image-x86-app-docker-ce]
- os: ubuntu-22.04
image: docker.io/overte/overte-server-build:0.1.1-ubuntu-22.04-aarch64
image: docker.io/overte/overte-server-build:0.1.3-ubuntu-22.04-aarch64
arch: aarch64
runner: linux_aarch64
runner: [self_hosted, type-cax41, image-arm-app-docker-ce]
- os: fedora-36
image: docker.io/overte/overte-server-build:0.1.2-fedora-36-amd64
- os: ubuntu-24.04
image: docker.io/overte/overte-server-build:0.1.3-ubuntu-24.04-amd64
arch: amd64
runner: ubuntu-latest
runner: [self_hosted, type-cx52, image-x86-app-docker-ce]
- os: fedora-36
image: docker.io/overte/overte-server-build:0.1.2-fedora-36-aarch64
- os: ubuntu-24.04
image: docker.io/overte/overte-server-build:0.1.3-ubuntu-24.04-aarch64
arch: aarch64
runner: linux_aarch64
runner: [self_hosted, type-cax41, image-arm-app-docker-ce]
- os: fedora-37
image: docker.io/overte/overte-server-build:0.1.2-fedora-37-amd64
- os: fedora-39
image: docker.io/overte/overte-server-build:0.1.4-fedora-39-amd64
arch: amd64
runner: ubuntu-latest
runner: [self_hosted, type-cx52, image-x86-app-docker-ce]
- os: fedora-37
image: docker.io/overte/overte-server-build:0.1.2-fedora-37-aarch64
- os: fedora-39
image: docker.io/overte/overte-server-build:0.1.4-fedora-39-aarch64
arch: aarch64
runner: linux_aarch64
runner: [self_hosted, type-cax41, image-arm-app-docker-ce]
- os: fedora-40
image: docker.io/overte/overte-server-build:0.1.4-fedora-39-amd64
arch: amd64
runner: [self_hosted, type-cx52, image-x86-app-docker-ce]
- os: fedora-40
image: docker.io/overte/overte-server-build:0.1.4-fedora-39-aarch64
arch: aarch64
runner: [self_hosted, type-cax41, image-arm-app-docker-ce]
- os: rockylinux-9
image: docker.io/overte/overte-server-build:0.1.2-rockylinux-9-amd64
image: docker.io/overte/overte-server-build:0.1.3-rockylinux-9-amd64
arch: amd64
runner: ubuntu-latest
runner: [self_hosted, type-cx52, image-x86-app-docker-ce]
fail-fast: false
@ -89,6 +115,14 @@ jobs:
container: ${{matrix.image}}
steps:
- name: Clear Working Directories
if: contains(matrix.runner, 'linux_aarch64') || contains(matrix.runner, 'linux_amd64')
shell: bash
run: |
rm -rf ./*
rm -rf ~/overte-files
rm -rf ~/.cache
- name: Configure Build Environment 1
shell: bash
run: |
@ -117,7 +151,7 @@ jobs:
fi
# Tagged builds. E.g. release or release candidate builds.
if [ "${{github.event_name}}" != "pull_request" ]; then
if [ "${{github.ref_type}}" == "tag" ]; then
echo "PRODUCTION_BUILD=true" >> $GITHUB_ENV
fi
@ -151,16 +185,30 @@ jobs:
echo "UPLOAD_PREFIX=build/overte/master" >> $GITHUB_ENV
echo "RELEASE_NUMBER=${{ github.run_number }}" >> $GITHUB_ENV
else # tagged
echo "DEBVERSION=${{ github.run_number }}-${{ github.ref_name }}-$GIT_COMMIT_SHORT-${{ matrix.os }}" >> $GITHUB_ENV
echo "RPMVERSION=${${{ github.ref_name }}//-/.}.${{ github.run_number }}.$GIT_COMMIT_SHORT" >> $GITHUB_ENV
echo "DEBVERSION=${{ github.ref_name }}-$GIT_COMMIT_SHORT-${{ matrix.os }}" >> $GITHUB_ENV
echo "RPMVERSION=${{ github.ref_name }}.$GIT_COMMIT_SHORT" >> $GITHUB_ENV
fi
if [[ "${{ github.ref_name }}" != "master" && "${{ github.ref_name }}" != "pull_request" ]]; then # tagged
echo "RELEASE_NUMBER=/${{ github.ref_name }}" >> $GITHUB_ENV
if [ "${{ github.ref_name }}" == *"rc"* ]; then # release candidate
echo "UPLOAD_PREFIX=build/overte/release-candidate" >> $GITHUB_ENV
if [ "${{ github.ref_type }}" == "tag" ]; then # tagged
echo "RELEASE_NUMBER=${{ github.ref_name }}" >> $GITHUB_ENV
if [[ "${{ github.ref_name }}" == *"rc"* ]]; then # release candidate
# The uploader already creates a subfolder for each RELEASE_NUMBER.
echo "UPLOAD_PREFIX=build/overte/release-candidate/" >> $GITHUB_ENV
else # release
echo "UPLOAD_PREFIX=build/overte/release" >> $GITHUB_ENV
echo "UPLOAD_PREFIX=build/overte/release/" >> $GITHUB_ENV
fi
fi
echo "BUILD_NUMBER=$GIT_COMMIT_SHORT" >> $GITHUB_ENV
if [ -z "$CMAKE_BACKTRACE_URL" ]; then
if [ "${{ github.ref_type }}" == "tag" ]; then
export CMAKE_BACKTRACE_URL="${{ secrets.SENTRY_MINIDUMP_ENDPOINT }}"
export CMAKE_BACKTRACE_TOKEN="${{ github.ref_name }}_${{ matrix.os }}_${{ github.sha }}"
else
# We're building a PR, default to the PR endpoint
export CMAKE_BACKTRACE_URL="https://o4504831972343808.ingest.sentry.io/api/4504832427950080/minidump/?sentry_key=f511de295975461b8f92a36f4a4a4f32"
export CMAKE_BACKTRACE_TOKEN="server_pr_${{ github.event.number }}_${{ github.sha }}"
fi
fi
@ -177,10 +225,12 @@ jobs:
else # RPM
if [ "${{ matrix.os }}" == "rockylinux-9" ]; then
echo "ARTIFACT_PATTERN=overte-server-$RPMVERSION-1.el9.$INSTALLER_EXT" >> $GITHUB_ENV
elif [ "${{ matrix.os }}" == "fedora-36" ]; then
echo "ARTIFACT_PATTERN=overte-server-$RPMVERSION-1.fc36.$INSTALLER_EXT" >> $GITHUB_ENV
elif [ "${{ matrix.os }}" == "fedora-37" ]; then
echo "ARTIFACT_PATTERN=overte-server-$RPMVERSION-1.fc37.$INSTALLER_EXT" >> $GITHUB_ENV
elif [ "${{ matrix.os }}" == "fedora-38" ]; then
echo "ARTIFACT_PATTERN=overte-server-$RPMVERSION-1.fc38.$INSTALLER_EXT" >> $GITHUB_ENV
elif [ "${{ matrix.os }}" == "fedora-39" ]; then
echo "ARTIFACT_PATTERN=overte-server-$RPMVERSION-1.fc39.$INSTALLER_EXT" >> $GITHUB_ENV
elif [ "${{ matrix.os }}" == "fedora-40" ]; then
echo "ARTIFACT_PATTERN=overte-server-$RPMVERSION-1.fc40.$INSTALLER_EXT" >> $GITHUB_ENV
else
echo "Error! ARTIFACT_PATTERN not set!"
exit 1 # Fail
@ -188,7 +238,7 @@ jobs:
fi
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
submodules: false
fetch-depth: 1
@ -200,7 +250,9 @@ jobs:
- name: Configure CMake
working-directory: build
shell: bash
run: cmake .. -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DVCPKG_BUILD_TYPE=release $CMAKE_EXTRA
run: |
cmake .. -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DVCPKG_BUILD_TYPE=release $CMAKE_EXTRA
- name: Compress cmake logs
if: always()
@ -253,8 +305,7 @@ jobs:
df -h
- name: Upload artifact to GitHub
if: github.event_name == 'pull_request'
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: ${{ env.ARTIFACT_PATTERN }}
path: pkg-scripts/${{ env.ARTIFACT_PATTERN }}
@ -267,3 +318,11 @@ jobs:
AWS_ACCESS_KEY_ID: ${{ secrets.s3_access_key_id }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.s3_secret_access_key }}
run: python3 $GITHUB_WORKSPACE/tools/ci-scripts/upload.py
- name: Clear Working Directories
if: contains(matrix.runner, 'linux_aarch64') || contains(matrix.runner, 'linux_amd64')
shell: bash
run: |
rm -rf ./*
rm -rf ~/overte-files
rm -rf ~/.cache

View file

@ -1,6 +1,6 @@
# Copyright 2013-2019 High Fidelity, Inc.
# Copyright 2020-2022 Vircadia contributors
# Copyright 2021-2022 Overte e.V.
# Copyright 2021-2024 Overte e.V.
# SPDX-License-Identifier: Apache-2.0
name: Master CI Build
@ -24,6 +24,10 @@ env:
UPLOAD_BUCKET: overte-public
UPLOAD_REGION: fra1
UPLOAD_ENDPOINT: "https://fra1.digitaloceanspaces.com"
CMAKE_BACKTRACE_URL: ${{ secrets.SENTRY_MINIDUMP_ENDPOINT }}
CMAKE_BACKTRACE_TOKEN: master_${{ github.event.number }}_${{ github.sha }}
# Disable VCPKG caching to save time.
VCPKG_FEATURE_FLAGS: -binarycaching
# OSX-specific variables
DEVELOPER_DIR: /Applications/Xcode_11.2.app/Contents/Developer
@ -41,11 +45,11 @@ jobs:
include:
- os: windows-2019
build_type: full
- os: macOS-10.15
build_type: full
- os: ubuntu-20.04
build_type: full
apt-dependencies: mesa-common-dev libegl1 libglvnd-dev libdouble-conversion3 libpulse0 libsnappy1v5 libwebpdemux2 libwebpmux3 python3-github python3-distro
#- os: macOS-10.15
# build_type: full
#- os: ubuntu-20.04
# build_type: full
# apt-dependencies: mesa-common-dev libegl1 libglvnd-dev libdouble-conversion3 libpulse0 libsnappy1v5 libwebpdemux2 libwebpmux3 python3-github python3-distro
fail-fast: false
runs-on: ${{matrix.os}}
steps:
@ -109,12 +113,16 @@ jobs:
echo "CLIENT_ONLY=TRUE" >> $GITHUB_ENV
echo "INSTALLER=Overte-Interface-master$BUILD_NUMBER-${{ steps.buildenv1.outputs.github_sha_short }}.$INSTALLER_EXT" >> $GITHUB_ENV
fi
- name: Clear working directory
if: startsWith(matrix.os, 'windows')
- name: Clear Working Directories
if: contains(matrix.runner, 'linux_aarch64')
shell: bash
working-directory: ${{runner.workspace}}
run: rm -rf ./*
- uses: actions/checkout@v1
run: |
rm -rf ./*
rm -rf ~/overte-files
rm -rf ~/.cache
- uses: actions/checkout@v4
with:
submodules: false
fetch-depth: 1
@ -153,7 +161,7 @@ jobs:
- name: Override NSIS
shell: pwsh
if: startsWith(matrix.os, 'windows')
run: choco install nsis --version=3.06.1
run: choco install nsis --allow-downgrade --version=3.06.1
- name: Install Python modules
if: startsWith(matrix.os, 'windows') || startsWith(matrix.os, 'macOS')
@ -273,3 +281,11 @@ jobs:
# with:
# name: symbols
# path: ${{runner.workspace}}/${{ steps.buildenv1.outputs.symbols_archive }}
- name: Clear Working Directories
if: contains(matrix.runner, 'linux_aarch64')
shell: bash
run: |
rm -rf ./*
rm -rf ~/overte-files
rm -rf ~/.cache

View file

@ -1,5 +1,5 @@
# Copyright 2022 Overte e.V.
# SPDX-License-Identifier: MIT
# Copyright 2022-2024 Overte e.V.
# SPDX-License-Identifier: Apache-2.0
name: Master API-docs CI Build and Deploy
@ -10,11 +10,11 @@ on:
jobs:
build_site:
runs-on: ubuntu-20.04
runs-on: ubuntu-22.04
name: Build and deploy API-docs
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
- name: Install dependencies
working-directory: tools/jsdoc
@ -31,13 +31,14 @@ jobs:
jsdoc root.js -r api-mainpage.md -c config.json -d output
- name: Deploy API-docs
uses: SamKirkland/FTP-Deploy-Action@4.3.0
uses: SamKirkland/FTP-Deploy-Action@v4.3.4
with:
server: ftp.tuxfamily.org
username: ${{ secrets.GHA_JSDOC_FTP_USER }}
password: ${{ secrets.GHA_JSDOC_FTP_PASS }}
server: www531.your-server.de
protocol: ftps
username: ${{ secrets.GHA_HETZNER_APIDOCS_FTP_USER }}
password: ${{ secrets.GHA_HETZNER_APIDOCS_FTP_PASS }}
local-dir: ./tools/jsdoc/output/
server-dir: overte/apidocs.overte.org-web/htdocs/
server-dir: /
exclude: |
**/staging/**
.htaccess

View file

@ -1,5 +1,5 @@
# Copyright 2022-2023 Overte e.V.
# SPDX-License-Identifier: MIT
# Copyright 2022-2024 Overte e.V.
# SPDX-License-Identifier: Apache-2.0
name: Master Doxygen CI Build and Deploy
@ -14,7 +14,7 @@ jobs:
name: Build and deploy Doxygen documentation
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Install dependencies
run: |
@ -29,13 +29,14 @@ jobs:
doxygen Doxyfile
- name: Deploy Doxygen
uses: SamKirkland/FTP-Deploy-Action@4.3.3
uses: SamKirkland/FTP-Deploy-Action@v4.3.4
with:
server: ftp.tuxfamily.org
username: ${{ secrets.GHA_JSDOC_FTP_USER }}
password: ${{ secrets.GHA_JSDOC_FTP_PASS }}
server: www531.your-server.de
protocol: ftps
username: ${{ secrets.GHA_HETZNER_DOXYGEN_FTP_USER }}
password: ${{ secrets.GHA_HETZNER_DOXYGEN_FTP_PASS }}
local-dir: ./build/docs/html/
server-dir: overte/doxygen.overte.org-web/htdocs/
server-dir: /
exclude: |
**/staging/**
.htaccess

View file

@ -1,6 +1,6 @@
# Copyright 2013-2019 High Fidelity, Inc.
# Copyright 2020-2022 Vircadia contributors.
# Copyright 2021-2022 Overte e.V.
# Copyright 2021-2024 Overte e.V.
# SPDX-License-Identifier: Apache-2.0
name: Pull Request CI Build
@ -21,8 +21,11 @@ env:
RELEASE_NUMBER: ${{ github.event.number }}
VERSION_CODE: ${{ github.event.number }}
# Sentry Crash Reporting
CMAKE_BACKTRACE_URL:
# We can't use secrets or actions here, so the actual value has to be hardcoded.
CMAKE_BACKTRACE_URL: "https://o4504831972343808.ingest.sentry.io/api/4504832427950080/minidump/?sentry_key=f511de295975461b8f92a36f4a4a4f32"
CMAKE_BACKTRACE_TOKEN: PR_${{ github.event.number }}_${{ github.sha }}
# Disable VCPKG caching to save time.
VCPKG_FEATURE_FLAGS: -binarycaching
UPLOAD_BUCKET: overte-public
UPLOAD_REGION: fra1
@ -42,27 +45,40 @@ env:
jobs:
build_pr:
name: "${{matrix.os}}, ${{matrix.build_type}}"
name: "${{matrix.os}}, ${{matrix.arch}}"
strategy:
matrix:
include:
- os: windows-2019
- os: Windows 2019
runner: windows-2019
arch: x86_64
build_type: full
- os: macOS-10.15
#- os: macOS-10.15
# build_type: full
- os: Ubuntu 20.04
# https://github.com/testflows/TestFlows-GitHub-Hetzner-Runners/wiki/Meta-Labels
# self_hosted makes the Hetzner auto-scaler put up the job.
# type-cx52 is a Hetzner VPS server type. In this case cs52 is a server with 16-cores and 32GB of RAM.
# image-x86-app-docker-ce is a Hetzner image.
# https://github.com/testflows/TestFlows-GitHub-Hetzner-Runners/wiki/Specifying-The-Runner-Image
runner: [self_hosted, type-cx52, image-x86-app-docker-ce]
arch: amd64
build_type: full
- os: ubuntu-20.04
build_type: full
apt-dependencies: mesa-common-dev libegl1 libglvnd-dev libdouble-conversion3 libpulse0 libsnappy1v5 libwebpdemux2 libwebpmux3 python3-distro
apt-dependencies: pkg-config libxext-dev libdouble-conversion-dev libpcre2-16-0 libpulse0 libharfbuzz-dev libnss3 libnspr4 libxdamage1 libasound2 # add missing dependencies to docker image when convenient
image: docker.io/overte/overte-full-build:0.1.1-ubuntu-20.04-amd64
# Android builds are currently failing
#- os: ubuntu-18.04
# build_type: android
# apt-dependencies: mesa-common-dev libegl1 libglvnd-dev libdouble-conversion1 libpulse0 python3-github python3-distro
# Do not change the names of self-hosted runners without knowing what you are doing, as they correspond to labels that have to be set on the runner.
- os: self-hosted_debian-11_aarch64
- os: Ubuntu 22.04
runner: [self_hosted, type-cax41, image-arm-app-docker-ce]
arch: aarch64
build_type: full
apt-dependencies: qtbase5-dev qtbase5-private-dev qtwebengine5-dev qtwebengine5-dev-tools qtmultimedia5-dev libqt5opengl5-dev qtscript5-dev libqt5scripttools5 libqt5webchannel5-dev libqt5websockets5-dev qtxmlpatterns5-dev-tools qttools5-dev libqt5xmlpatterns5-dev libqt5svg5-dev qml-module-qtwebchannel build-essential cmake curl freeglut3-dev git libasound2 libasound2-dev libdouble-conversion-dev libdrm-dev libfontconfig1 libgl1-mesa-dev libglvnd-dev libharfbuzz-dev libjack-dev libjack0 libnspr4 libnss3 libpcre2-16-0 libpulse0 libsdl2-dev libssl-dev libudev-dev libxcb-xinerama0-dev libxcb-xinput0 libxcomposite1 libxcursor1 libxi-dev libxmu-dev libxrandr-dev libxslt1.1 libxtst6 make mesa-common-dev mesa-utils nodejs npm patchelf python2 python3 python3-distro xdg-user-dirs zlib1g-dev ninja-build zip python3-distro
image: docker.io/overte/overte-full-build:0.1.1-ubuntu-22.04-aarch64
fail-fast: false
runs-on: ${{matrix.os}}
runs-on: ${{matrix.runner}}
container: ${{matrix.image}}
steps:
- name: Configure Build Environment 1
shell: bash
@ -75,19 +91,18 @@ jobs:
echo "APP_TARGET_NAME=$APP_NAME" >> $GITHUB_ENV
# Linux build variables
if [[ "${{ matrix.os }}" = "ubuntu-"* || "${{ matrix.os }}" = *"debian"* ]]; then
if [[ "${{ matrix.os }}" = "Ubuntu"* ]]; then
echo "PYTHON_EXEC=python3" >> $GITHUB_ENV
echo "INSTALLER_EXT=*" >> $GITHUB_ENV
echo "CMAKE_BUILD_EXTRA=-- -j$(nproc)" >> $GITHUB_ENV
# Don't optimize builds to save build time.
echo "OVERTE_OPTIMIZE=false" >> $GITHUB_ENV
# Variables specific to our aarch64 runner
if [ "${{ matrix.os }}" = "self-hosted_debian-11_aarch64" ]; then
# Starting with Ubuntu 22.04 we can use system Qt
if [[ "${{ matrix.image }}" = *"ubuntu-22.04"* ]]; then
echo "OVERTE_USE_SYSTEM_QT=true" >> $GITHUB_ENV
echo "CI_WORKSPACE=${{runner.workspace}}" >> $GITHUB_ENV
fi
if [[ "${{ matrix.os }}" = *"aarch64" ]]; then
if [[ "${{ matrix.arch }}" = "aarch64" ]]; then
echo "VCPKG_FORCE_SYSTEM_BINARIES=true" >> $GITHUB_ENV
if [ "${{ matrix.build_type }}" = "full" ]; then
echo "CMAKE_EXTRA=-DOVERTE_CPU_ARCHITECTURE= -DBUILD_TOOLS:BOOLEAN=FALSE -DHIFI_PYTHON_EXEC:FILEPATH=$(which python3)" >> $GITHUB_ENV
@ -97,7 +112,7 @@ jobs:
fi
if [[ "${{ matrix.os }}" != *"aarch64" ]]; then
if [[ "${{ matrix.arch }}" = "amd64" ]]; then
if [ "${{ matrix.build_type }}" = "full" ]; then
echo "CMAKE_EXTRA=-DOVERTE_CPU_ARCHITECTURE=-msse3 -DBUILD_TOOLS:BOOLEAN=FALSE -DHIFI_PYTHON_EXEC:FILEPATH=$(which python3)" >> $GITHUB_ENV
else
@ -118,7 +133,7 @@ jobs:
echo "APP_TARGET_NAME=Overte" >> $GITHUB_ENV
fi
# Windows build variables
if [ "${{ matrix.os }}" = "windows-2019" ]; then
if [ "${{ matrix.os }}" = "Windows 2019" ]; then
echo "PYTHON_EXEC=python" >> $GITHUB_ENV
echo "INSTALLER_EXT=exe" >> $GITHUB_ENV
if [ "${{ matrix.build_type }}" = "full" ]; then
@ -149,22 +164,24 @@ jobs:
echo "INSTALLER=Overte-Interface-$RELEASE_NUMBER-${GIT_COMMIT_SHORT}.$INSTALLER_EXT" >> $GITHUB_ENV
fi
- name: Clear Working Directory
if: startsWith(matrix.os, 'windows') || contains(matrix.os, 'self-hosted')
- name: Clear Working Directories
if: contains(matrix.runner, 'linux_aarch64') || contains(matrix.runner, 'linux_amd64')
shell: bash
working-directory: ${{runner.workspace}}
run: rm -rf ./*
run: |
rm -rf ./*
rm -rf ~/overte-files
rm -rf ~/.cache
- uses: actions/checkout@v1
- uses: actions/checkout@v4
with:
submodules: false
fetch-depth: 1
- name: Install dependencies
shell: bash
if: startsWith(matrix.os, 'ubuntu') || contains(matrix.os, 'debian') || startsWith(matrix.os, 'macOS')
if: startsWith(matrix.os, 'Ubuntu') || contains(matrix.os, 'Debian') || startsWith(matrix.os, 'macOS')
run: |
if [[ "${{ matrix.os }}" =~ "ubuntu" || "${{ matrix.os }}" =~ "debian" ]]; then
if [[ "${{ matrix.os }}" =~ "Ubuntu" || "${{ matrix.os }}" =~ "Debian" ]]; then
echo "Updating apt repository index"
sudo apt update || exit 1
@ -187,7 +204,7 @@ jobs:
sudo cp -rp MacOSX10.12.sdk /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/ || exit 0
echo " done"
fi
if [[ "${{ matrix.os }}" =~ "debian-11" ]]; then
if [[ "${{ matrix.os }}" =~ "Debian 11" ]]; then
echo "Installing CMake from Debian Backports"
echo deb http://deb.debian.org/debian bullseye-backports main > /etc/apt/sources.list.d/bullseye-backports.list
sudo apt update
@ -197,20 +214,20 @@ jobs:
- name: Override NSIS
shell: pwsh
if: startsWith(matrix.os, 'windows')
run: choco install nsis --version=3.06.1
if: startsWith(matrix.os, 'Windows')
run: choco install nsis --allow-downgrade --version=3.06.1
- name: Install Python modules
if: startsWith(matrix.os, 'windows') || startsWith(matrix.os, 'macOS')
if: startsWith(matrix.os, 'Windows') || startsWith(matrix.os, 'macOS')
shell: bash
run: $PYTHON_EXEC -m pip install boto3 PyGithub
- name: Create Build Environment
shell: bash
run: cmake -E make_directory "${{runner.workspace}}/build"
run: cmake -E make_directory ./build
- name: Configure CMake
working-directory: ${{runner.workspace}}/build
working-directory: build
shell: bash
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DVCPKG_BUILD_TYPE=release $CMAKE_EXTRA
@ -223,48 +240,44 @@ jobs:
else
TAR=tar
fi
if [ ${{ env.CI_WORKSPACE }} ]; then
find "$CI_WORKSPACE/overte-files/vcpkg" -name '*log' -type f -print0 | $TAR --null --force-local -T - -c --xz -v -f "${{ runner.workspace }}/cmake-logs-${{ matrix.os }}-${{ github.event.number }}.tar.xz"
else
find "$HOME/overte-files/vcpkg" -name '*log' -type f -print0 | $TAR --null --force-local -T - -c --xz -v -f "${{ runner.workspace }}/cmake-logs-${{ matrix.os }}-${{ github.event.number }}.tar.xz"
fi
find "$HOME/overte-files/vcpkg" -name '*log' -type f -print0 | $TAR --null --force-local -T - -c --xz -v -f "./cmake-logs-${{ matrix.os }}-${{ github.event.number }}.tar.xz"
- name: Archive cmake logs
if: always()
uses: actions/upload-artifact@v3
with:
name: cmake-logs-${{ matrix.os }}-${{ github.event.number }}.tar.xz
path: ${{ runner.workspace }}/cmake-logs-${{ matrix.os }}-${{ github.event.number }}.tar.xz
path: ./cmake-logs-${{ matrix.os }}-${{ github.event.number }}.tar.xz
if-no-files-found: error
- name: Build Application
if: matrix.build_type == 'full' || matrix.build_type == 'client'
working-directory: ${{runner.workspace}}/build
working-directory: build
shell: bash
run: cmake --build . --config $BUILD_TYPE --target $APP_TARGET_NAME $CMAKE_BUILD_EXTRA
- name: Build Domain Server
if: matrix.build_type == 'full'
working-directory: ${{runner.workspace}}/build
working-directory: build
shell: bash
run: cmake --build . --config $BUILD_TYPE --target domain-server $CMAKE_BUILD_EXTRA
- name: Build Assignment Client
if: matrix.build_type == 'full'
working-directory: ${{runner.workspace}}/build
working-directory: build
shell: bash
run: cmake --build . --config $BUILD_TYPE --target assignment-client $CMAKE_BUILD_EXTRA
- name: Build Console
if: matrix.build_type == 'full' || startsWith(matrix.os, 'windows')
working-directory: ${{runner.workspace}}/build
if: matrix.build_type == 'full' && matrix.arch != 'aarch64' || startsWith(matrix.os, 'windows')
working-directory: build
shell: bash
run: cmake --build . --config $BUILD_TYPE --target packaged-server-console $CMAKE_BUILD_EXTRA
run: |
cmake --build . --config $BUILD_TYPE --target packaged-server-console $CMAKE_BUILD_EXTRA
- name: Build Installer
if: matrix.build_type != 'android'
working-directory: ${{runner.workspace}}/build
if: matrix.build_type != 'android' && matrix.arch != 'aarch64'
working-directory: build
shell: bash
run: |
echo "Retry code from https://unix.stackexchange.com/a/137639"
@ -315,22 +328,30 @@ jobs:
- name: Output system stats
if: ${{ always() }}
working-directory: ${{runner.workspace}}/build
working-directory: build
shell: bash
run: |
echo "Disk usage:"
df -h
- name: Output Installer Logs
if: failure() && startsWith(matrix.os, 'windows')
if: failure() && startsWith(matrix.os, 'Windows')
shell: bash
working-directory: ${{runner.workspace}}/build
working-directory: build
run: cat ./_CPack_Packages/win64/NSIS/NSISOutput.log
- name: Upload Artifact
if: startsWith(matrix.os, 'windows') || startsWith(matrix.os, 'macOS')
uses: actions/upload-artifact@v3
if: startsWith(matrix.os, 'Windows') || startsWith(matrix.os, 'macOS')
uses: actions/upload-artifact@v4
with:
name: ${{ env.ARTIFACT_PATTERN }}
path: ${{ runner.workspace }}/build/${{ env.ARTIFACT_PATTERN }}
path: ./build/${{ env.ARTIFACT_PATTERN }}
if-no-files-found: error
- name: Clear Working Directories
if: contains(matrix.runner, 'linux_aarch64') || contains(matrix.runner, 'linux_amd64')
shell: bash
run: |
rm -rf ./*
rm -rf ~/overte-files
rm -rf ~/.cache

213
.github/workflows/release_build.yml vendored Normal file
View file

@ -0,0 +1,213 @@
# Copyright 2013-2019 High Fidelity, Inc.
# Copyright 2020-2022 Vircadia contributors
# Copyright 2021-2024 Overte e.V.
# SPDX-License-Identifier: Apache-2.0
name: Windows Release Build
on:
push:
tags:
# Release tags. E.g. 2024.06.1
# https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#filter-pattern-cheat-sheet
- "[0-9][0-9][0-9][0-9].[0-9][0-9].**"
env:
APP_NAME: interface
BUILD_TYPE: Release
CI_BUILD: Github
GIT_COMMIT: ${{ github.sha }}
PRODUCTION_BUILD: true
RELEASE_TYPE: PRODUCTION
RELEASE_NUMBER: ${{ github.ref_name }}
STABLE_BUILD: 1
UPLOAD_BUCKET: overte-public
UPLOAD_REGION: fra1
UPLOAD_ENDPOINT: "https://fra1.digitaloceanspaces.com"
CMAKE_BACKTRACE_URL: ${{ secrets.SENTRY_MINIDUMP_ENDPOINT }}
CMAKE_BACKTRACE_TOKEN: ${{ github.ref_name }}_Windows_${{ github.sha }}
# Disable VCPKG caching to save time.
VCPKG_FEATURE_FLAGS: -binarycaching
# WIN-specific variables
PreferredToolArchitecture: X64
jobs:
build:
strategy:
matrix:
include:
- os: windows-2019
build_type: full
fail-fast: false
runs-on: ${{matrix.os}}
steps:
- name: Configure build environment 1
shell: bash
id: buildenv1
run: |
echo "GIT_COMMIT_SHORT=`echo ${{ github.sha }} | cut -c1-7`" >> $GITHUB_ENV
if [[ "${{ github.ref_name }}" == *"rc"* ]]; then # release candidate
# The uploader already creates a subfolder for each RELEASE_NUMBER.
echo "UPLOAD_PREFIX=build/overte/release-candidate/" >> $GITHUB_ENV
else # release
echo "UPLOAD_PREFIX=build/overte/release/" >> $GITHUB_ENV
fi
echo ::set-output name=github_sha_short::`echo $GIT_COMMIT | cut -c1-7`
echo "JOB_NAME=${{matrix.os}}, ${{matrix.build_type}}" >> $GITHUB_ENV
echo "APP_TARGET_NAME=$APP_NAME" >> $GITHUB_ENV
echo "PYTHON_EXEC=python" >> $GITHUB_ENV
echo "ZIP_COMMAND=7z" >> $GITHUB_ENV
echo "ZIP_ARGS=a" >> $GITHUB_ENV
echo "INSTALLER_EXT=exe" >> $GITHUB_ENV
echo "CMAKE_EXTRA=-A x64" >> $GITHUB_ENV
echo "SYMBOL_REGEX=\(exe\|dll\|pdb\)" >> $GITHUB_ENV
echo "symbols_archive=$RELEASE_NUMBER-${{ github.sha }}-win-symbols.zip" >> $GITHUB_ENV
# echo "HF_PFX_PASSPHRASE=${{secrets.pfx_key}}" >> $GITHUB_ENV
# echo "HF_PFX_FILE=${{runner.workspace}}\build\codesign.pfx" >> $GITHUB_ENV
# Configuration is broken into two steps because you can't set an env var and also reference it in the same step
- name: Configure build environment 2
shell: bash
run: |
echo "BUILD_NUMBER=$GIT_COMMIT_SHORT" >> $GITHUB_ENV
echo "${{ steps.buildenv1.outputs.symbols_archive }}"
echo "ARTIFACT_PATTERN=Overte-$RELEASE_NUMBER.$INSTALLER_EXT" >> $GITHUB_ENV
echo "CLIENT_ONLY=FALSE" >> $GITHUB_ENV
- uses: actions/checkout@v4
with:
submodules: false
fetch-depth: 1
- name: Override NSIS
shell: pwsh
if: startsWith(matrix.os, 'windows')
run: choco install nsis --allow-downgrade --version=3.06.1
- name: Install Python modules
if: startsWith(matrix.os, 'windows') || startsWith(matrix.os, 'macOS')
shell: bash
run: $PYTHON_EXEC -m pip install boto3 PyGithub
- name: Create build environment
shell: bash
run: cmake -E make_directory "${{runner.workspace}}/build"
- name: Configure CMake
working-directory: ${{runner.workspace}}/build
shell: bash
run: cmake $GITHUB_WORKSPACE -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DVCPKG_BUILD_TYPE=release -DCLIENT_ONLY:BOOLEAN=$CLIENT_ONLY -DBYPASS_SIGNING:BOOLEAN=TRUE $CMAKE_EXTRA
- name: Build application
working-directory: ${{runner.workspace}}/build
shell: bash
run: cmake --build . --config $BUILD_TYPE --target $APP_TARGET_NAME $CMAKE_BUILD_EXTRA
- name: Build domain server
working-directory: ${{runner.workspace}}/build
shell: bash
run: cmake --build . --config $BUILD_TYPE --target domain-server $CMAKE_BUILD_EXTRA
- name: Build assignment client
working-directory: ${{runner.workspace}}/build
shell: bash
run: cmake --build . --config $BUILD_TYPE --target assignment-client $CMAKE_BUILD_EXTRA
- name: Build console
working-directory: ${{runner.workspace}}/build
shell: bash
run: cmake --build . --config $BUILD_TYPE --target packaged-server-console $CMAKE_BUILD_EXTRA
- name: Build installer
working-directory: ${{runner.workspace}}/build
shell: bash
run: |
echo "Retry code from https://unix.stackexchange.com/a/137639"
function fail {
echo $1 >&2
exit 1
}
function retry {
local n=1
local max=5
local delay=15
while true; do
"$@" && break || {
if [[ $n -lt $max ]]; then
((n++))
echo "Command failed. Attempt $n/$max:"
sleep $delay;
else
fail "The command has failed after $n attempts."
fi
}
done
}
retry cmake --build . --config $BUILD_TYPE --target package $CMAKE_BUILD_EXTRA
#- name: Sign installer (Windows)
# if: startsWith(matrix.os, 'windows')
# shell: powershell
# working-directory: C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x64
# run: .\signtool.exe sign /fd sha256 /f ${{runner.workspace}}\build\codesign.pfx /p ${{secrets.pfx_key}} /tr http://sha256timestamp.ws.symantec.com/sha256/timestamp /td SHA256 ${{runner.workspace}}\build\${env:ARTIFACT_PATTERN}
- name: Output system stats
if: ${{ always() }}
working-directory: ${{runner.workspace}}/build
shell: bash
run: |
echo "Disk usage:"
df -h
- name: Output installer logs
if: failure() && startsWith(matrix.os, 'windows')
shell: bash
working-directory: ${{runner.workspace}}/build
run: cat ./_CPack_Packages/win64/NSIS/NSISOutput.log
- name: Upload artifact to S3
shell: bash
working-directory: ${{runner.workspace}}/build
env:
AWS_ACCESS_KEY_ID: ${{ secrets.s3_access_key_id }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.s3_secret_access_key }}
run: $PYTHON_EXEC $GITHUB_WORKSPACE/tools/ci-scripts/upload.py
- name: Upload artifact to GitHub
uses: actions/upload-artifact@v4
with:
name: ${{ env.INSTALLER }}
path: ${{runner.workspace}}/build/${{ env.ARTIFACT_PATTERN }}
if-no-files-found: error
- name: Archive symbols
if: startsWith(matrix.os, 'windows') || startsWith(matrix.os, 'macOS')
working-directory: ${{runner.workspace}}
shell: bash
run: |
SYMBOLS_TEMP="symbols-temp"
mkdir $SYMBOLS_TEMP
find "./build" -regex ".*\.$SYMBOL_REGEX" -exec cp -r {} $SYMBOLS_TEMP \;
cd $SYMBOLS_TEMP
$ZIP_COMMAND $ZIP_ARGS ../${{ steps.buildenv1.outputs.symbols_archive }} .
- name: Upload debug symbols to GitHub
uses: actions/upload-artifact@v4
with:
name: ${{ steps.buildenv1.outputs.symbols_archive }}
path: ./${{ steps.buildenv1.outputs.symbols_archive }}
if-no-files-found: error
- name: Clear Working Directories
if: contains(matrix.runner, 'linux_aarch64')
shell: bash
run: |
rm -rf ./*
rm -rf ~/overte-files
rm -rf ~/.cache

62
.gitignore vendored
View file

@ -1,7 +1,7 @@
# https://www.git-scm.com/docs/gitignore
#
# Copyright 2013-2019 High Fidelity, Inc.
# Copyright 2022 Overte e.V.
# Copyright 2022-2023 Overte e.V.
# SPDX-License-Identifier: Apache-2.0
VideoDecodeStats
@ -11,13 +11,17 @@ CMakeCache.txt
CMakeFiles/
CMakeScripts/
cmake_install.cmake
build*/
/build*/
cmake-build-minsizerelease-visual-studio/
cmake-build-release-visual-studio/
cmake-build-relwithdebinfo-visual-studio/
release*/
debug*/
gprof*/
valgrind*/
ext/
cmake-build-debug-visual-studio/
cmake-build-debug/
/release*/
/debug*/
/gprof*/
/valgrind*/
/ext/
Makefile
*.user
@ -25,14 +29,14 @@ Makefile
*.iml
*.class
local.properties
android/gradle*
android/.gradle
android/**/src/main/jniLibs
android/**/libs
android/**/bin
android/**/src/main/res/values/libs.xml
android/**/src/main/assets
android/**/gradle*
/android/gradle*
/android/.gradle
/android/**/src/main/jniLibs
/android/**/libs
/android/**/bin
/android/**/src/main/res/values/libs.xml
/android/**/src/main/assets
/android/**/gradle*
*.class
# Visual Studio
@ -46,6 +50,8 @@ android/**/gradle*
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
# Workspace
*.code-workspace
# Xcode
*.xcodeproj
@ -66,22 +72,23 @@ profile
DerivedData
.idea/
# KDevelop
*~
*.kdev4
*.hmap
# ignore interface optional externals
interface/external/*/*
/interface/external/*/*
!interface/external/*/readme.txt
# Ignore interfaceCache for Linux users
interface/interfaceCache/
/interface/interfaceCache/
# ignore audio-client externals
libraries/audio-client/external/*/*
/libraries/audio-client/external/*/*
!libraries/audio-client/external/*/readme.txt
gvr-interface/assets/oculussig*
gvr-interface/libs/*
# ignore files for various dev environments
TAGS
*.sw[po]
@ -104,21 +111,22 @@ interface/compiledResources
*.rcc
# GPUCache
interface/resources/GPUCache/*
/interface/resources/GPUCache/*
# package lock file for JSDoc tool
tools/jsdoc/package-lock.json
/tools/jsdoc/package-lock.json
# Python compile artifacts
**/__pycache__
# ignore local unity project files for avatar exporter
tools/unity-avatar-exporter
/tools/unity-avatar-exporter
server-console/package-lock.json
vcpkg/
/server-console/package-lock.json
/vcpkg/
/tools/nitpick/compiledResources
qt/
/qt/
# Act local GitHub Actions
.secret

View file

@ -111,10 +111,7 @@ CMAKE_BACKTRACE_TOKEN
// The release version, e.g., 2021.3.2.
RELEASE_NUMBER
// The release name, e.g., Eos.
RELEASE_NAME
// The build commit, e.g., use a Git hash for the most recent commit in the branch - fd6973b.
BUILD_NUMBER
// The type of release.

View file

@ -8,6 +8,8 @@ SPDX-License-Identifier: Apache-2.0
# Build Android
*Last Updated on December 15, 2020*
> [!WARNING]
> Android building is currently broken, due to breaking changes in Qt and Gradle. Help with updating (or rewriting) the Gradle scripts would be great.
Please read the [general build guide](BUILD.md) for information on building other platforms. Only Android specific instructions are found in this file. **Note that these instructions apply to building for the Oculus Quest 1.**

View file

@ -51,9 +51,10 @@ Download and install the latest version of CMake 3.15.
Download the file named win64-x64 Installer from the [CMake Website](https://cmake.org/download/). You can access the installer on this [3.15 Version page](https://cmake.org/files/v3.15/). During installation, make sure to check "Add CMake to system PATH for all users" when prompted.
## Step 4. Node.JS and NPM
## Step 4. (Optional) Node.JS and NPM
Install version 10.15.0 LTS (or greater) of [Node.JS and NPM](<https://nodejs.org/en/download/>).
This is required to build the server-console, hifi-screenshare, jsdoc, and for javascript console autocompletion.
## Step 5. (Optional) Install Qt
@ -74,7 +75,7 @@ To create this variable:
* Set "Variable name" to `QT_CMAKE_PREFIX_PATH`
* Set "Variable value" to `%QT_INSTALL_DIR%\5.15.2\msvc2019_64\lib\cmake`, where `%QT_INSTALL_DIR%` is the directory you specified for Qt's installation. The default is `C:\Qt`.
## Step 6. Create VCPKG environment variable
## Step 6. (Optional) Create VCPKG environment variable
In the next step, you will use CMake to build Overte. By default, the CMake process builds dependency files in Windows' `%TEMP%` directory, which is periodically cleared by the operating system. To prevent you from having to re-build the dependencies in the event that Windows clears that directory, we recommend that you create a `HIFI_VCPKG_BASE` environment variable linked to a directory somewhere on your machine. That directory will contain all dependency files until you manually remove them.
To create this variable:
@ -95,13 +96,24 @@ To create this variable:
## Step 7. Running CMake to Generate Build Files
Run Command Prompt from Start and run the following commands:
`cd "%OVERTE_DIR%"`
`mkdir build`
`cd build`
These instructions only apply to Visual Studio 2019.
### Visual Studio 2019
Run `cmake .. -G "Visual Studio 16 2019" -A x64`.
### Automatic
There is a batch file to automatically run the commands below for ease of use.
`winprepareVS19.bat`
### Manual
Run The Command Prompt from Start and run the following commands:
```Bash
cd "%OVERTE_DIR%"
mkdir build
cd build
cmake .. -G "Visual Studio 16 2019" -A x64
```
Where `%OVERTE_DIR%` is the directory for the Overte repository.
@ -132,7 +144,7 @@ Note: You can also run Interface by launching it from command line or File Explo
For any problems after Step #7, first try this:
* Delete your locally cloned copy of the Overte repository
* Restart your computer
* Redownload the [repository](https://github.com/overte.org/overte)
* Redownload the [repository](https://github.com/overte-org/overte)
* Restart directions from Step #7
## CMake gives you the same error message repeatedly after the build fails

View file

@ -1,6 +1,6 @@
<!--
Copyright 2022 Overte e.V.
SPDX-License-Identifier: MIT
Copyright 2022-2023 Overte e.V.
SPDX-License-Identifier: Apache-2.0
-->
# Changelog
@ -12,7 +12,79 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
This project does **not** adhere to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
<!-- ## [Unreleased] 2022.12.24 -->
<!-- ## [Unreleased] 2023.07.22 -->
<!-- ## [2023.07.1] 2023.07.22 -->
<!--
### Misc
- Updated the Unity Avatar Exporter and added Linux support
- Added Linux support to the Unity Avatar Exporter
-->
### Fixes
- Fixed color conversion for glTF material colors (PR307)
- Fixed a possible crash in Mesh::map (PR392)
- Fixed multiple memory corruption issues that were causing frequent crashes (PR185)
Most notably this gets rid of a frequent Create App related crash.
- Hide private methods and QObject signals from script engine (PR444)
- Fixed a regression that broke resetting the settings (PR445)
- Fixed deadlock on start on Debian Testing (PR185)
- Fixed Windows 11 showing up as Windows 10 in logs (PR448)
- Fixed Metallic values on FBX models created by Blender 2.79 or earlier (PR463)
- Fixed laser pointers being rendered below overlays (PR490)
- Fixed angle text sometimes being occluded when using Create app (PR498)
- Hugely improved Create app performance in Domains with many entities (PR498)
- Fixed an issue that could cause laser pointers to rapidly flash (PR495)
- Fixed the connection failure dialog mentioning "Explore" instead of "Places" (PR515)
### Changes
- Replaced Vircadia Metaverse Server with a testing server as federation default (PR330)
- An empty audio device list now throws a warning instead of just a debug message (PR347)
- Increased the maximum log file size from 512 kiB to 10 MiB (PR342,PR513)
- Decreased the amount of retained log files from 100 to 20 (PR342)
- Pressing the Return key with the the address/search bar in the Places App selected now navigates you to that address (PR403)
- Replaced QT Script with V8 scripting engine (PR185,PR507,PR519)
This is a huge change under the hood, which ended up fixing a lot of issues.
Since the new scripting engine does not behave exactly the same as the old one,
some scripts might need fixing. The new scripting engine is especially picky when it comes to undefined behaviour.
Most notably "use strict" is actually strict now and won't allow you to use variables without defining them first.
- Silenced ForceHtmlAudioOutputDeviceUpdate log message (PR473)
- Improved crash reporting functionality (PR480,PR484,PR518)
Interface will ask if future crashes should be reported automatically when it detects that it crashed on last run.
It will also ask once in case of a non-stable build.
- Changed the VR overlay to only recenter when moving (PR478)
- Added a workaround that prevents most users from needing to press down on the thumbstick to move (PR481,PR512)
### Additions
- Added option to graphics menu for choosing which screen to use for full screen mode (PR302)
- file URLs can now be navigated to using the Places App (PR397)
- Added IME support in Desktop mode (PR431)
This allows typing in languages like Japanese or Chinese that make use of an IME.
- Added vertical Field Of View setting to graphics menu (PR465)
- Added crash reporting to the Domain server, Assignment client, and Oven (PR482)
### Removals
- Removed outdated Inventory and Marketplace options from Wearables UI (PR303)
- Removed outdated Beacon system (PR327)
- Removed long deprecated styles-uit and controls-uit QML modules (PR380)
- Removed outdated Marketplace and Wallet code (PR381,PR477,PR487)
### Build system
- Fixed error in configuration step on some rolling release Linux distributions (PR301)
- Removed executable permissions from files that shouldn't have them (PR349)
- Added QML import path (PR379)
- Fixed building on GCC 13 (PR385)
- Fixed a bunch of warnings on C++20 (PR385)
- Updated TBB dependency from version 2019_U8-1 to 2021.5.0 (PR412)
- Fixed NVTT compilation on Visual Studio 2022 (PR374)
- Disabled libOVR on MSVC 2022 (PR430)
- Added Qt 5.15.9 package for aarch64 Ubuntu 20.04 (PR409)
- Fixed build error on aarch64 (PR409)
- Replaced QT Script with V8/libnode (PR185,PR409,PR443)
- Updated Qt on Windows to 5.15.10 with KDE patches (PR448)
- Updated included OpenSSL to 3.0.5 (PR448)
## [2022.12.1] 2022.12.24
### Fixes
@ -29,7 +101,7 @@ This project does **not** adhere to [Semantic Versioning](https://semver.org/spe
### Changes
- Disable anti-aliasing by default (PR294)
- Made the deadlock watchdog less spammy (PR288)
- Domain Server Metadata exporter by default is now disabled by default (PR247)
- Domain Server Metadata exporter is now disabled by default (PR247)
This avoids port conflicts when running multiple Domain Servers on one machine.
- Improved the notification system (PR190,PR189)
Notifications can be closed by just clicking them now.
@ -37,7 +109,6 @@ This project does **not** adhere to [Semantic Versioning](https://semver.org/spe
VR notifications are now unlit and have been slightly moved.
The notification system is generally more stable.
### Additions
- Added partial Blender FBX metallic support (PR221)
- Added tooltips for PolyVox/Voxel properties to Create App (PR244)

View file

@ -1,6 +1,6 @@
# Copyright 2013-2019 High Fidelity, Inc.
# Copyright 2019-2021 Vircadia contributors.
# Copyright 2020-2022 Overte e.V.
# Copyright 2020-2023 Overte e.V.
# SPDX-License-Identifier: Apache-2.0
# If we're running under the gradle build, HIFI_ANDROID will be set here, but
@ -12,6 +12,11 @@ else()
cmake_minimum_required(VERSION 3.2)
endif()
# 3.14 is the minimum version that supports symlinks on Windows
cmake_minimum_required(VERSION 3.14)
# This should allow using long paths on Windows
SET(CMAKE_NINJA_FORCE_RESPONSE_FILE 1 CACHE INTERNAL "")
# Passing of variables to vcpkg
#
@ -130,11 +135,14 @@ if( NOT WIN32 )
MESSAGE(STATUS "OVERTE_CPU_ARCHITECTURE: ${OVERTE_CPU_ARCHITECTURE}")
endif()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OVERTE_OPTIMIZE_FLAGS}")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OVERTE_OPTIMIZE_FLAGS}")
# Function alignment is necessary for V8.
# SetAlignedPointerInInternalField requires at least 2 byte alignment and -falign-functions will set alignment
# to machine specific value which should be greater than 2.
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OVERTE_OPTIMIZE_FLAGS} -falign-functions")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OVERTE_OPTIMIZE_FLAGS} -falign-functions")
set(ENV{CXXFLAGS} "$ENV{CXXFLAGS} ${OVERTE_OPTIMIZE_FLAGS}")
set(ENV{CFLAGS} "$ENV{CFLAGS} ${OVERTE_OPTIMIZE_FLAGS}")
set(ENV{CXXFLAGS} "$ENV{CXXFLAGS} ${OVERTE_OPTIMIZE_FLAGS} -falign-functions")
set(ENV{CFLAGS} "$ENV{CFLAGS} ${OVERTE_OPTIMIZE_FLAGS} -falign-functions")
message($ENV{CXXFLAGS})
endif()
@ -176,8 +184,13 @@ if(OVERTE_WARNINGS_WHITELIST)
endif()
if(OVERTE_WARNINGS_AS_ERRORS)
set(ENV{CXXFLAGS} "$ENV{CXXFLAGS} -Werror")
set(ENV{CFLAGS} "$ENV{CXXFLAGS} -Werror")
if (CMAKE_CXX_COMPILER_ID MATCHES "MSVC" OR (CMAKE_CXX_COMPILER_ID MATCHES "" AND WIN32))
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /WX")
set(CMAKE_CFLAGS "${CMAKE_CFLAGS} /WX")
else()
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror")
set(CMAKE_CFLAGS "${CMAKE_CFLAGS} -Werror")
endif()
endif()
@ -192,13 +205,9 @@ else()
set(VCPKG_BUILD_TYPE_PARAM --vcpkg-build-type ${VCPKG_BUILD_TYPE})
endif()
execute_process(
COMMAND ${HIFI_PYTHON_EXEC} ${CMAKE_CURRENT_SOURCE_DIR}/prebuild.py --vcpkg-skip-clean --release-type ${RELEASE_TYPE} --build-root ${CMAKE_BINARY_DIR} ${VCPKG_BUILD_TYPE_PARAM}
COMMAND ${HIFI_PYTHON_EXEC} ${CMAKE_CURRENT_SOURCE_DIR}/prebuild.py --release-type ${RELEASE_TYPE} --build-root ${CMAKE_BINARY_DIR} ${VCPKG_BUILD_TYPE_PARAM}
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} RESULTS_VARIABLE PREBUILD_RET
)
# squelch the Policy CMP0074 warning without requiring an update to cmake 3.12.
if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.12)
cmake_policy(SET CMP0074 NEW)
endif()
endif()
if (PREBUILD_RET GREATER 0)
@ -248,9 +257,6 @@ else()
endif()
set(SCREENSHARE 0)
if (WIN32)
set(SCREENSHARE 1)
endif()
if (APPLE AND NOT CLIENT_ONLY)
# Don't include Screenshare in OSX client-only builds.
set(SCREENSHARE 1)
@ -482,6 +488,7 @@ if (BUILD_CLIENT)
endif()
option(USE_SIXENSE "Build Interface with sixense library/plugin" OFF)
option(USE_NEURON "Build Interface with Neuron library/plugin" OFF)
endif()
if (BUILD_CLIENT OR BUILD_SERVER)
@ -512,3 +519,6 @@ if (BUILD_INSTALLER)
endif()
generate_installers()
endif()
# QML import paths for Qt Creator and KDevelop code completion
set(QML_IMPORT_PATH ${CMAKE_SOURCE_DIR}/interface/resources/qml;${CMAKE_SOURCE_DIR}/launchers/qt/resources/qml CACHE PATH "Extra QML import paths for KDevelop and Qt Creator")

View file

@ -106,7 +106,7 @@ For code signing to work, you will need to set the `HF_PFX_FILE` and `HF_PFX_PAS
1. Ensure you have all the prerequisites fulfilled from the [MacOS Build Guide](BUILD_OSX.md).
2. Perform a clean CMake in your build folder. e.g.
```bash
BUILD_GLOBAL_SERVICES=STABLE USE_STABLE_GLOBAL_SERVICES=1 RELEASE_BUILD=PRODUCTION BUILD_NUMBER="Insert Build Identifier here e.g. short hash of your last Git commit" RELEASE_NAME="Insert Release Name Here" STABLE_BUILD=1 PRODUCTION_BUILD=1 RELEASE_NUMBER="Insert Release Version Here e.g. 1.1.0" RELEASE_TYPE=PRODUCTION cmake -DCMAKE_OSX_SYSROOT="/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk" -DCLIENT_ONLY=1 -DCMAKE_OSX_DEPLOYMENT_TARGET=10.12 -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl -DOSX_SDK=10.12 ..
BUILD_GLOBAL_SERVICES=STABLE USE_STABLE_GLOBAL_SERVICES=1 RELEASE_BUILD=PRODUCTION BUILD_NUMBER="Insert Build Identifier here e.g. short hash of your last Git commit" STABLE_BUILD=1 PRODUCTION_BUILD=1 RELEASE_NUMBER="Insert Release Version Here e.g. 1.1.0" RELEASE_TYPE=PRODUCTION cmake -DCMAKE_OSX_SYSROOT="/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk" -DCLIENT_ONLY=1 -DCMAKE_OSX_DEPLOYMENT_TARGET=10.12 -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl -DOSX_SDK=10.12 ..
```
3. Pick a method to build and package your release.

View file

@ -1,6 +1,6 @@
Copyright (c) 2013-2019, High Fidelity, Inc.
Copyright (c) 2019-2021, Vircadia contributors.
Copyright (c) 2022, Overte e.V.
Copyright (c) 2022-2023, Overte e.V.
All rights reserved.
https://overte.org

View file

@ -33,7 +33,7 @@ Overte is a free and open source 3D social virtual worlds software.
* Full-body avatars
* FBX, glTF, and OBJ support
* JavaScript scripting engine
* 16km³ world space in a server
* 256km²/4096km³ world space in a server
* Fully self-hosted
* Apache 2.0
@ -78,9 +78,9 @@ Overte consists of many projects and codebases with its unifying structure's goa
- The Interface - You are here!
- The Server - You are also here!
- [The Directory Server (Codename Iamus)](https://github.com/overte/Iamus/)
- [The Directory Server Dashboard (Codename Iamus)](https://github.com/overte/project-iamus-dashboard/)
- [The Launcher (Codename Pantheon)](https://github.com/overte/pantheon-launcher/) - Currently Windows only.
- [The Directory Server (Codename Iamus)](https://github.com/overte-org/overte-metaverse/)
- [The Directory Server Dashboard (Codename Iamus)](https://github.com/overte-org/metaverse-dashboard/)
- [The Launcher (Codename Pantheon)](https://github.com/overte-org/pantheon-launcher/) - Currently Windows only.
#### Tools
- [Overte Builder for Linux](https://github.com/overte-org/overte-builder/)

3
SECURITY.md Normal file
View file

@ -0,0 +1,3 @@
# Security Policy
## Reporting a Vulnerability
To report a potential vulnerability, please direct message a board member on Matrix or Discord, or open a draft Security Advisory at https://github.com/overte-org/overte/security/advisories.

View file

@ -109,7 +109,7 @@ public class PermissionChecker extends Activity {
JSONObject obj = new JSONObject();
try {
obj.put("firstRun",false);
obj.put("Avatar/fullAvatarURL", avatarPaths[which]);
obj.put(SETTINGS_FULL_PRIVATE_GROUP_NAME + "/Avatar/fullAvatarURL", avatarPaths[which]);
File directory = new File(pathForJson);
if(!directory.exists()) directory.mkdirs();

View file

@ -1,6 +1,10 @@
# Copyright 2013-2019 High Fidelity, Inc.
# Copyright 2021-2022 Overte e.V.
# SPDX-License-Identifier: Apache-2.0
set(TARGET_NAME assignment-client)
setup_hifi_project(Core Gui Network Script Quick WebSockets)
setup_hifi_project(Core Gui Network Quick WebSockets)
# Fix up the rpath so macdeployqt works
if (APPLE)
@ -19,6 +23,9 @@ link_hifi_libraries(
)
include_hifi_library_headers(procedural)
add_crashpad()
target_breakpad()
if (BUILD_TOOLS)
add_dependencies(${TARGET_NAME} oven)

View file

@ -4,9 +4,11 @@
//
// Created by Stephen Birarda on 7/1/13.
// Copyright 2013 High Fidelity, Inc.
// Copyright 2023 Overte e.V.
//
// Distributed under the Apache License, Version 2.0.
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
// SPDX-License-Identifier: Apache-2.0
//
#include "Agent.h"
@ -27,6 +29,7 @@
#include <DebugDraw.h>
#include <EntityScriptingInterface.h>
#include <LocationScriptingInterface.h>
#include <AudioScriptingInterface.h>
#include <MessagesClient.h>
#include <NetworkAccessManager.h>
#include <NodeList.h>
@ -34,7 +37,9 @@
#include <ResourceCache.h>
#include <ResourceScriptingInterface.h>
#include <ScriptCache.h>
#include <ScriptEngine.h>
#include <ScriptEngines.h>
#include <ScriptManager.h>
#include <SoundCacheScriptingInterface.h>
#include <SoundCache.h>
#include <UserActivityLoggerScriptingInterface.h>
@ -56,7 +61,7 @@
#include "entities/AssignmentParentFinder.h"
#include "AssignmentDynamicFactory.h"
#include "RecordingScriptingInterface.h"
#include <recording/RecordingScriptingInterface.h>
#include "AbstractAudioInterface.h"
#include "AgentScriptingInterface.h"
@ -180,7 +185,7 @@ static const QString AGENT_LOGGING_NAME = "agent";
void Agent::run() {
// Create ScriptEngines on threaded-assignment thread then move to main thread.
DependencyManager::set<ScriptEngines>(ScriptEngine::AGENT_SCRIPT)->moveToThread(qApp->thread());
DependencyManager::set<ScriptEngines>(ScriptManager::AGENT_SCRIPT)->moveToThread(qApp->thread());
DependencyManager::set<ScriptCache>();
@ -372,7 +377,7 @@ void Agent::executeScript() {
// the following block is scoped so that any shared pointers we take here
// are cleared before we call setFinished at the end of the function
{
_scriptEngine = scriptEngineFactory(ScriptEngine::AGENT_SCRIPT, _scriptContents, _payload);
_scriptManager = scriptManagerFactory(ScriptManager::AGENT_SCRIPT, _scriptContents, _payload);
// setup an Avatar for the script to use
auto scriptedAvatar = DependencyManager::get<ScriptableAvatar>();
@ -386,10 +391,11 @@ void Agent::executeScript() {
scriptedAvatar->getHeadOrientation();
// give this AvatarData object to the script engine
_scriptEngine->registerGlobalObject("Avatar", scriptedAvatar.data());
auto scriptEngine = _scriptManager->engine();
scriptEngine->registerGlobalObject("Avatar", scriptedAvatar.data());
// give scripts access to the Users object
_scriptEngine->registerGlobalObject("Users", DependencyManager::get<UsersScriptingInterface>().data());
scriptEngine->registerGlobalObject("Users", DependencyManager::get<UsersScriptingInterface>().data());
auto player = DependencyManager::get<recording::Deck>();
connect(player.data(), &recording::Deck::playbackStateChanged, [&player, &scriptedAvatar] {
@ -493,26 +499,26 @@ void Agent::executeScript() {
});
auto avatarHashMap = DependencyManager::set<AvatarHashMap>();
_scriptEngine->registerGlobalObject("AvatarList", avatarHashMap.data());
scriptEngine->registerGlobalObject("AvatarList", avatarHashMap.data());
// register ourselves to the script engine
_scriptEngine->registerGlobalObject("Agent", new AgentScriptingInterface(this));
scriptEngine->registerGlobalObject("Agent", new AgentScriptingInterface(this));
_scriptEngine->registerGlobalObject("AnimationCache", DependencyManager::get<AnimationCacheScriptingInterface>().data());
_scriptEngine->registerGlobalObject("SoundCache", DependencyManager::get<SoundCacheScriptingInterface>().data());
scriptEngine->registerGlobalObject("AnimationCache", DependencyManager::get<AnimationCacheScriptingInterface>().data());
scriptEngine->registerGlobalObject("SoundCache", DependencyManager::get<SoundCacheScriptingInterface>().data());
QScriptValue webSocketServerConstructorValue = _scriptEngine->newFunction(WebSocketServerClass::constructor);
_scriptEngine->globalObject().setProperty("WebSocketServer", webSocketServerConstructorValue);
ScriptValue webSocketServerConstructorValue = scriptEngine->newFunction(WebSocketServerClass::constructor);
scriptEngine->globalObject().setProperty("WebSocketServer", webSocketServerConstructorValue);
auto entityScriptingInterface = DependencyManager::get<EntityScriptingInterface>();
_scriptEngine->registerGlobalObject("EntityViewer", &_entityViewer);
scriptEngine->registerGlobalObject("EntityViewer", &_entityViewer);
_scriptEngine->registerGetterSetter("location", LocationScriptingInterface::locationGetter,
scriptEngine->registerGetterSetter("location", LocationScriptingInterface::locationGetter,
LocationScriptingInterface::locationSetter);
auto recordingInterface = DependencyManager::get<RecordingScriptingInterface>();
_scriptEngine->registerGlobalObject("Recording", recordingInterface.data());
scriptEngine->registerGlobalObject("Recording", recordingInterface.data());
entityScriptingInterface->init();
@ -522,8 +528,8 @@ void Agent::executeScript() {
DependencyManager::set<AssignmentParentFinder>(_entityViewer.getTree());
DependencyManager::get<ScriptEngines>()->runScriptInitializers(_scriptEngine);
_scriptEngine->run();
DependencyManager::get<ScriptEngines>()->runScriptInitializers(_scriptManager);
_scriptManager->run();
Frame::clearFrameHandler(AUDIO_FRAME_TYPE);
Frame::clearFrameHandler(AVATAR_FRAME_TYPE);
@ -602,7 +608,7 @@ void Agent::setIsAvatar(bool isAvatar) {
// start the timer
_avatarQueryTimer->start(AVATAR_VIEW_PACKET_SEND_INTERVAL_MSECS);
connect(_scriptEngine.data(), &ScriptEngine::update,
connect(_scriptManager.get(), &ScriptManager::update,
scriptableAvatar.data(), &ScriptableAvatar::update, Qt::QueuedConnection);
// tell the avatarAudioTimer to start ticking
@ -638,7 +644,7 @@ void Agent::setIsAvatar(bool isAvatar) {
nodeList->sendPacket(std::move(packet), *node);
});
disconnect(_scriptEngine.data(), &ScriptEngine::update,
disconnect(_scriptManager.get(), &ScriptManager::update,
scriptableAvatar.data(), &ScriptableAvatar::update);
QMetaObject::invokeMethod(&_avatarAudioTimer, "stop");
@ -875,7 +881,7 @@ void Agent::aboutToFinish() {
// drop our shared pointer to the script engine, then ask ScriptEngines to shutdown scripting
// this ensures that the ScriptEngine goes down before ScriptEngines
_scriptEngine.clear();
_scriptManager.reset();
{
DependencyManager::get<ScriptEngines>()->shutdownScripting();
@ -895,8 +901,8 @@ void Agent::aboutToFinish() {
}
void Agent::stop() {
if (_scriptEngine) {
_scriptEngine->stop();
if (_scriptManager) {
_scriptManager->stop();
} else {
setFinished(true);
}

View file

@ -4,9 +4,11 @@
//
// Created by Stephen Birarda on 7/1/13.
// Copyright 2013 High Fidelity, Inc.
// Copyright 2023 Overte e.V.
//
// Distributed under the Apache License, Version 2.0.
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
// SPDX-License-Identifier: Apache-2.0
//
#ifndef hifi_Agent_h
@ -15,12 +17,12 @@
#include <memory>
#include <vector>
#include <QtScript/QScriptEngine>
#include <QtCore/QObject>
#include <QtCore/QSharedPointer>
#include <QtCore/QUrl>
#include <QtCore/QTimer>
#include <QUuid>
#include <QtCore/QSharedPointer>
#include <EntityEditPacketSender.h>
#include <EntityTree.h>
@ -29,11 +31,17 @@
#include <plugins/CodecPlugin.h>
#include <Sound.h>
#include "AudioGate.h"
#include "MixedAudioStream.h"
#include "entities/EntityTreeHeadlessViewer.h"
#include "avatars/ScriptableAvatar.h"
class ScriptEngine;
class ScriptManager;
using ScriptEnginePointer = std::shared_ptr<ScriptEngine>;
using ScriptManagerPointer = std::shared_ptr<ScriptManager>;
class Agent : public ThreadedAssignment {
Q_OBJECT
@ -90,7 +98,7 @@ private:
void encodeFrameOfZeros(QByteArray& encodedZeros);
void computeLoudness(const QByteArray* decodedBuffer, QSharedPointer<ScriptableAvatar>);
ScriptEnginePointer _scriptEngine;
ScriptManagerPointer _scriptManager;
EntityEditPacketSender _entityEditSender;
EntityTreeHeadlessViewer _entityViewer;

View file

@ -40,7 +40,7 @@
*/
class AgentScriptingInterface : public QObject {
Q_OBJECT
Q_PROPERTY(bool isAvatar READ isAvatar WRITE setIsAvatar)
Q_PROPERTY(bool isAvatar READ getIsAvatar WRITE setIsAvatar)
Q_PROPERTY(bool isPlayingAvatarSound READ isPlayingAvatarSound)
Q_PROPERTY(bool isListeningToAudioStream READ isListeningToAudioStream WRITE setIsListeningToAudioStream)
Q_PROPERTY(bool isNoiseGateEnabled READ isNoiseGateEnabled WRITE setIsNoiseGateEnabled)
@ -77,15 +77,15 @@ public slots:
/*@jsdoc
* Checks whether the script is emulating an avatar.
* @function Agent.isAvatar
* @function Agent.getIsAvatar
* @returns {boolean} <code>true</code> if the script is emulating an avatar, otherwise <code>false</code>.
* @example <caption>Check whether the agent is emulating an avatar.</caption>
* (function () {
* print("Agent is avatar: " + Agent.isAvatar());
* print("Agent is avatar: " + Agent.getIsAvatar());
* print("Agent is avatar: " + Agent.isAvatar); // Same result.
* }());
*/
bool isAvatar() const { return _agent->isAvatar(); }
bool getIsAvatar() const { return _agent->isAvatar(); }
/*@jsdoc
* Plays a sound from the position and with the orientation of the emulated avatar's head. No sound is played unless

View file

@ -45,7 +45,7 @@ const QString ASSIGNMENT_CLIENT_TARGET_NAME = "assignment-client";
const long long ASSIGNMENT_REQUEST_INTERVAL_MSECS = 1 * 1000;
AssignmentClient::AssignmentClient(Assignment::Type requestAssignmentType, QString assignmentPool,
quint16 listenPort, QUuid walletUUID, QString assignmentServerHostname,
quint16 listenPort, QString assignmentServerHostname,
quint16 assignmentServerPort, quint16 assignmentMonitorPort,
bool disableDomainPortAutoDiscovery) :
_assignmentServerHostname(DEFAULT_ASSIGNMENT_SERVER_HOSTNAME)
@ -72,13 +72,6 @@ AssignmentClient::AssignmentClient(Assignment::Type requestAssignmentType, QStri
// setup our _requestAssignment member variable from the passed arguments
_requestAssignment = Assignment(Assignment::RequestCommand, requestAssignmentType, assignmentPool);
// check for a wallet UUID on the command line or in the config
// this would represent where the user running AC wants funds sent to
if (!walletUUID.isNull()) {
qCDebug(assignment_client) << "The destination wallet UUID for credits is" << uuidStringWithoutCurlyBraces(walletUUID);
_requestAssignment.setWalletUUID(walletUUID);
}
// check for an overriden assignment server hostname
if (assignmentServerHostname != "") {
// change the hostname for our assignment server

View file

@ -27,7 +27,7 @@ class AssignmentClient : public QObject {
Q_OBJECT
public:
AssignmentClient(Assignment::Type requestAssignmentType, QString assignmentPool,
quint16 listenPort, QUuid walletUUID, QString assignmentServerHostname,
quint16 listenPort, QString assignmentServerHostname,
quint16 assignmentServerPort, quint16 assignmentMonitorPort,
bool disableDomainPortAutoDiscovery);
~AssignmentClient();

View file

@ -24,6 +24,8 @@
#include <SharedUtil.h>
#include <ShutdownEventListener.h>
#include <shared/ScriptInitializerMixin.h>
#include <crash-handler/CrashHandler.h>
#include "Assignment.h"
#include "AssignmentClient.h"
@ -70,10 +72,6 @@ AssignmentClientApp::AssignmentClientApp(int argc, char* argv[]) :
"Minimum UDP listen port", "port");
parser.addOption(minChildListenPort);
const QCommandLineOption walletDestinationOption(ASSIGNMENT_WALLET_DESTINATION_ID_OPTION,
"set wallet destination", "wallet-uuid");
parser.addOption(walletDestinationOption);
const QCommandLineOption assignmentServerHostnameOption(CUSTOM_ASSIGNMENT_SERVER_HOSTNAME_OPTION,
"set assignment-server hostname", "hostname");
parser.addOption(assignmentServerHostnameOption);
@ -110,6 +108,9 @@ AssignmentClientApp::AssignmentClientApp(int argc, char* argv[]) :
const QCommandLineOption logOption("logOptions", "Logging options, comma separated: color,nocolor,process_id,thread_id,milliseconds,keep_repeats,journald,nojournald", "options");
parser.addOption(logOption);
const QCommandLineOption forceCrashReportingOption("forceCrashReporting", "Force crash reporting to initialize.");
parser.addOption(forceCrashReportingOption);
if (!parser.parse(QCoreApplication::arguments())) {
std::cout << parser.errorText().toStdString() << std::endl; // Avoid Qt log spam
parser.showHelp();
@ -178,6 +179,7 @@ AssignmentClientApp::AssignmentClientApp(int argc, char* argv[]) :
disableDomainPortAutoDiscovery = true;
}
Assignment::Type requestAssignmentType = Assignment::AllTypes;
if (argumentVariantMap.contains(ASSIGNMENT_TYPE_OVERRIDE_OPTION)) {
requestAssignmentType = (Assignment::Type) argumentVariantMap.value(ASSIGNMENT_TYPE_OVERRIDE_OPTION).toInt();
@ -186,6 +188,9 @@ AssignmentClientApp::AssignmentClientApp(int argc, char* argv[]) :
requestAssignmentType = (Assignment::Type) parser.value(clientTypeOption).toInt();
}
auto &ch = CrashHandler::getInstance();
ch.setAnnotation("type", QString::number(requestAssignmentType));
QString assignmentPool;
// check for an assignment pool passed on the command line or in the config
if (argumentVariantMap.contains(ASSIGNMENT_POOL_OPTION)) {
@ -195,14 +200,6 @@ AssignmentClientApp::AssignmentClientApp(int argc, char* argv[]) :
assignmentPool = parser.value(poolOption);
}
QUuid walletUUID;
if (argumentVariantMap.contains(ASSIGNMENT_WALLET_DESTINATION_ID_OPTION)) {
walletUUID = argumentVariantMap.value(ASSIGNMENT_WALLET_DESTINATION_ID_OPTION).toString();
}
if (parser.isSet(walletDestinationOption)) {
walletUUID = parser.value(walletDestinationOption);
}
QString assignmentServerHostname;
if (argumentVariantMap.contains(CUSTOM_ASSIGNMENT_SERVER_HOSTNAME_OPTION)) {
assignmentServerHostname = argumentVariantMap.value(CUSTOM_ASSIGNMENT_SERVER_HOSTNAME_OPTION).toString();
@ -259,6 +256,10 @@ AssignmentClientApp::AssignmentClientApp(int argc, char* argv[]) :
}
}
if (parser.isSet(forceCrashReportingOption)) {
ch.setEnabled(true);
}
QThread::currentThread()->setObjectName("main thread");
LogHandler::getInstance().moveToThread(thread());
@ -270,14 +271,14 @@ AssignmentClientApp::AssignmentClientApp(int argc, char* argv[]) :
if (numForks || minForks || maxForks) {
AssignmentClientMonitor* monitor = new AssignmentClientMonitor(numForks, minForks, maxForks,
requestAssignmentType, assignmentPool, listenPort,
childMinListenPort, walletUUID, assignmentServerHostname,
childMinListenPort, assignmentServerHostname,
assignmentServerPort, httpStatusPort, logDirectory,
disableDomainPortAutoDiscovery);
monitor->setParent(this);
connect(this, &QCoreApplication::aboutToQuit, monitor, &AssignmentClientMonitor::aboutToQuit);
} else {
AssignmentClient* client = new AssignmentClient(requestAssignmentType, assignmentPool, listenPort,
walletUUID, assignmentServerHostname,
assignmentServerHostname,
assignmentServerPort, monitorPort,
disableDomainPortAutoDiscovery);
client->setParent(this);

View file

@ -19,7 +19,6 @@
const QString ASSIGNMENT_TYPE_OVERRIDE_OPTION = "t";
const QString ASSIGNMENT_POOL_OPTION = "pool";
const QString ASSIGNMENT_CLIENT_LISTEN_PORT_OPTION = "p";
const QString ASSIGNMENT_WALLET_DESTINATION_ID_OPTION = "wallet";
const QString CUSTOM_ASSIGNMENT_SERVER_HOSTNAME_OPTION = "a";
const QString ASSIGNMENT_MONITOR_MIN_CHILDREN_LISTEN_PORT_OPTION = "min-listen-port";
const QString CUSTOM_ASSIGNMENT_SERVER_PORT_OPTION = "server-port";

View file

@ -41,7 +41,7 @@ AssignmentClientMonitor::AssignmentClientMonitor(const unsigned int numAssignmen
const unsigned int minAssignmentClientForks,
const unsigned int maxAssignmentClientForks,
Assignment::Type requestAssignmentType, QString assignmentPool,
quint16 listenPort, quint16 childMinListenPort, QUuid walletUUID, QString assignmentServerHostname,
quint16 listenPort, quint16 childMinListenPort, QString assignmentServerHostname,
quint16 assignmentServerPort, quint16 httpStatusServerPort, QString logDirectory,
bool disableDomainPortAutoDiscovery) :
_httpManager(QHostAddress::LocalHost, httpStatusServerPort, "", this),
@ -50,7 +50,6 @@ AssignmentClientMonitor::AssignmentClientMonitor(const unsigned int numAssignmen
_maxAssignmentClientForks(maxAssignmentClientForks),
_requestAssignmentType(requestAssignmentType),
_assignmentPool(assignmentPool),
_walletUUID(walletUUID),
_assignmentServerHostname(assignmentServerHostname),
_assignmentServerPort(assignmentServerPort),
_childMinListenPort(childMinListenPort),
@ -185,10 +184,6 @@ void AssignmentClientMonitor::spawnChildClient() {
_childArguments.append("--" + ASSIGNMENT_POOL_OPTION);
_childArguments.append(_assignmentPool);
}
if (!_walletUUID.isNull()) {
_childArguments.append("--" + ASSIGNMENT_WALLET_DESTINATION_ID_OPTION);
_childArguments.append(_walletUUID.toString());
}
if (_assignmentServerHostname != "") {
_childArguments.append("--" + CUSTOM_ASSIGNMENT_SERVER_HOSTNAME_OPTION);
_childArguments.append(_assignmentServerHostname);

View file

@ -39,7 +39,7 @@ class AssignmentClientMonitor : public QObject, public HTTPRequestHandler {
public:
AssignmentClientMonitor(const unsigned int numAssignmentClientForks, const unsigned int minAssignmentClientForks,
const unsigned int maxAssignmentClientForks, Assignment::Type requestAssignmentType,
QString assignmentPool, quint16 listenPort, quint16 childMinListenPort, QUuid walletUUID,
QString assignmentPool, quint16 listenPort, quint16 childMinListenPort,
QString assignmentServerHostname, quint16 assignmentServerPort, quint16 httpStatusServerPort,
QString logDirectory, bool disableDomainPortAutoDiscovery);
~AssignmentClientMonitor();
@ -72,7 +72,6 @@ private:
Assignment::Type _requestAssignmentType;
QString _assignmentPool;
QUuid _walletUUID;
QString _assignmentServerHostname;
quint16 _assignmentServerPort;

View file

@ -371,6 +371,8 @@ void AssetServer::completeSetup() {
auto& domainHandler = nodeList->getDomainHandler();
const QJsonObject& settingsObject = domainHandler.getSettingsObject();
commonParseSettingsObject(settingsObject);
static const QString ASSET_SERVER_SETTINGS_KEY = "asset_server";
if (!settingsObject.contains(ASSET_SERVER_SETTINGS_KEY)) {

View file

@ -38,6 +38,7 @@
#include "AudioMixerClientData.h"
#include "AvatarAudioStream.h"
#include "InjectedAudioStream.h"
#include "crash-handler/CrashHandler.h"
using namespace std;
@ -49,6 +50,7 @@ static const QString AUDIO_ENV_GROUP_KEY = "audio_env";
static const QString AUDIO_BUFFER_GROUP_KEY = "audio_buffer";
static const QString AUDIO_THREADING_GROUP_KEY = "audio_threading";
int AudioMixer::_numStaticJitterFrames{ DISABLE_STATIC_JITTER_FRAMES };
float AudioMixer::_noiseMutingThreshold{ DEFAULT_NOISE_MUTING_THRESHOLD };
float AudioMixer::_attenuationPerDoublingInDistance{ DEFAULT_ATTENUATION_PER_DOUBLING_IN_DISTANCE };
@ -560,6 +562,8 @@ void AudioMixer::clearDomainSettings() {
void AudioMixer::parseSettingsObject(const QJsonObject& settingsObject) {
qCDebug(audio) << "AVX2 Support:" << (cpuSupportsAVX2() ? "enabled" : "disabled");
commonParseSettingsObject(settingsObject);
if (settingsObject.contains(AUDIO_THREADING_GROUP_KEY)) {
QJsonObject audioThreadingGroupObject = settingsObject[AUDIO_THREADING_GROUP_KEY].toObject();
const QString AUTO_THREADS = "auto_threads";

View file

@ -222,13 +222,23 @@ void AudioMixerClientData::parseInjectorGainSet(ReceivedMessage& message, const
qCDebug(audio) << "Setting MASTER injector gain for" << uuid << "to" << gain;
}
void AudioMixerClientData::setGainForAvatar(QUuid nodeID, float gain) {
auto it = std::find_if(_streams.active.cbegin(), _streams.active.cend(), [nodeID](const MixableStream& mixableStream){
bool setGainInStreams(const QUuid &nodeID, float gain, std::vector<AudioMixerClientData::MixableStream> &streamVector) {
auto itActive = std::find_if(streamVector.cbegin(), streamVector.cend(),
[nodeID](const AudioMixerClientData::MixableStream& mixableStream){
return mixableStream.nodeStreamID.nodeID == nodeID && mixableStream.nodeStreamID.streamID.isNull();
});
if (it != _streams.active.cend()) {
it->hrtf->setGainAdjustment(gain);
if (itActive != streamVector.cend()) {
itActive->hrtf->setGainAdjustment(gain);
return true;
} else {
return false;
}
}
void AudioMixerClientData::setGainForAvatar(QUuid nodeID, float gain) {
if (!setGainInStreams(nodeID, gain, _streams.active)) {
setGainInStreams(nodeID, gain, _streams.inactive);
}
}

View file

@ -94,8 +94,6 @@ AvatarMixer::AvatarMixer(ReceivedMessage& message) :
PacketReceiver::makeSourcedListenerReference<AvatarMixer>(this, &AvatarMixer::queueIncomingPacket));
packetReceiver.registerListenerForTypes({ PacketType::OctreeStats, PacketType::EntityData, PacketType::EntityErase },
PacketReceiver::makeSourcedListenerReference<AvatarMixer>(this, &AvatarMixer::handleOctreePacket));
packetReceiver.registerListener(PacketType::ChallengeOwnership,
PacketReceiver::makeSourcedListenerReference<AvatarMixer>(this, &AvatarMixer::queueIncomingPacket));
packetReceiver.registerListenerForTypes({
PacketType::ReplicatedAvatarIdentity,
@ -512,8 +510,6 @@ void AvatarMixer::handleAvatarKilled(SharedNodePointer avatarNode) {
} else {
_sessionDisplayNames.erase(displayNameIter);
}
nodeData->getAvatar().stopChallengeTimer();
}
std::unique_ptr<NLPacket> killPacket;
@ -992,6 +988,8 @@ void AvatarMixer::handlePacketVersionMismatch(PacketType type, const SockAddr& s
}
void AvatarMixer::parseDomainServerSettings(const QJsonObject& domainSettings) {
commonParseSettingsObject(domainSettings);
const QString AVATAR_MIXER_SETTINGS_KEY = "avatar_mixer";
QJsonObject avatarMixerGroupObject = domainSettings[AVATAR_MIXER_SETTINGS_KEY].toObject();

View file

@ -73,9 +73,6 @@ int AvatarMixerClientData::processPackets(const SlaveSharedData& slaveSharedData
case PacketType::BulkAvatarTraitsAck:
processBulkAvatarTraitsAckMessage(*packet);
break;
case PacketType::ChallengeOwnership:
_avatar->processChallengeResponse(*packet);
break;
default:
Q_UNREACHABLE();
}
@ -83,10 +80,6 @@ int AvatarMixerClientData::processPackets(const SlaveSharedData& slaveSharedData
}
assert(_packetQueue.empty());
if (_avatar) {
_avatar->processCertifyEvents();
}
return packetsProcessed;
}
@ -230,8 +223,6 @@ void AvatarMixerClientData::processSetTraitsMessage(ReceivedMessage& message,
if (traitType == AvatarTraits::SkeletonModelURL) {
// special handling for skeleton model URL, since we need to make sure it is in the whitelist
checkSkeletonURLAgainstWhitelist(slaveSharedData, sendingNode, packetTraitVersion);
// Deferred for UX work. With no PoP check, no need to get the .fst.
_avatar->fetchAvatarFST();
}
anyTraitsChanged = true;

View file

@ -1,418 +0,0 @@
//
// MixerAvatar.cpp
// assignment-client/src/avatars
//
// Created by Simon Walton April 2019
// Copyright 2019 High Fidelity, Inc.
//
// Distributed under the Apache License, Version 2.0.
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
//
#include "MixerAvatar.h"
#include <QRegularExpression>
#include <QJsonObject>
#include <QJsonArray>
#include <QJsonDocument>
#include <QNetworkReply>
#include <QCryptographicHash>
#include <QApplication>
#include <ResourceManager.h>
#include <NetworkAccessManager.h>
#include <NetworkingConstants.h>
#include <MetaverseAPI.h>
#include <EntityItem.h>
#include <EntityItemProperties.h>
#include "ClientTraitsHandler.h"
#include "AvatarLogging.h"
MixerAvatar::MixerAvatar() {
static constexpr int CHALLENGE_TIMEOUT_MS = 10 * 1000; // 10 s
_challengeTimer.setSingleShot(true);
_challengeTimer.setInterval(CHALLENGE_TIMEOUT_MS);
_challengeTimer.callOnTimeout(this, &MixerAvatar::challengeTimeout);
// QTimer::start is a set of overloaded functions.
connect(this, &MixerAvatar::startChallengeTimer, &_challengeTimer, static_cast<void(QTimer::*)()>(&QTimer::start));
}
const char* MixerAvatar::stateToName(VerifyState state) {
return QMetaEnum::fromType<VerifyState>().valueToKey(state);
}
void MixerAvatar::challengeTimeout() {
switch (_verifyState) {
case challengeClient:
_verifyState = staticValidation;
_pendingEvent = true;
if (++_numberChallenges < NUM_CHALLENGES_BEFORE_FAIL) {
qCDebug(avatars) << "Retrying (" << _numberChallenges << ") timed-out challenge for" << getDisplayName()
<< getSessionUUID();
} else {
_certifyFailed = true;
_needsIdentityUpdate = true;
qCWarning(avatars) << "ALERT: Dynamic verification TIMED-OUT for" << getDisplayName() << getSessionUUID();
}
break;
case verificationFailed:
qCDebug(avatars) << "Retrying failed challenge for" << getDisplayName() << getSessionUUID();
_verifyState = staticValidation;
_pendingEvent = true;
break;
default:
qCDebug(avatars) << "Ignoring timeout of avatar challenge";
break;
}
}
void MixerAvatar::fetchAvatarFST() {
if (_verifyState >= requestingFST && _verifyState <= challengeClient) {
qCDebug(avatars) << "WARNING: Avatar verification restarted; old state:" << stateToName(_verifyState);
}
_verifyState = nonCertified;
_pendingEvent = false;
QUrl avatarURL = _skeletonModelURL;
if (avatarURL.isEmpty() || avatarURL.isLocalFile() || avatarURL.scheme() == "qrc") {
// Not network FST.
return;
}
_certificateIdFromURL.clear();
_certificateIdFromFST.clear();
_marketplaceIdFromURL.clear();
_marketplaceIdFromFST.clear();
auto resourceManager = DependencyManager::get<ResourceManager>();
// Match UUID + (optionally) URL cert
static const QRegularExpression marketIdRegex{
"^https://.*?highfidelity\\.com/api/.*?/commerce/entity_edition/([-0-9a-z]{36})(.*?certificate_id=([\\w/+%]+)|.*).*$"
};
auto marketIdMatch = marketIdRegex.match(avatarURL.toDisplayString());
if (marketIdMatch.hasMatch()) {
QMutexLocker certifyLocker(&_avatarCertifyLock);
_marketplaceIdFromURL = marketIdMatch.captured(1);
if (marketIdMatch.lastCapturedIndex() == 3) {
_certificateIdFromURL = QUrl::fromPercentEncoding(marketIdMatch.captured(3).toUtf8());
}
}
ResourceRequest* fstRequest = resourceManager->createResourceRequest(this, avatarURL);
if (fstRequest) {
QMutexLocker certifyLocker(&_avatarCertifyLock);
_avatarRequest = fstRequest;
_verifyState = requestingFST;
connect(fstRequest, &ResourceRequest::finished, this, &MixerAvatar::fstRequestComplete);
fstRequest->send();
} else {
qCDebug(avatars) << "Couldn't create FST request for" << avatarURL << getSessionUUID();
_verifyState = error;
}
_needsIdentityUpdate = true;
}
void MixerAvatar::fstRequestComplete() {
ResourceRequest* fstRequest = static_cast<ResourceRequest*>(QObject::sender());
QMutexLocker certifyLocker(&_avatarCertifyLock);
if (_verifyState == requestingFST && fstRequest == _avatarRequest) {
auto result = fstRequest->getResult();
if (result != ResourceRequest::Success) {
_verifyState = error;
qCDebug(avatars) << "FST request for" << fstRequest->getUrl() << "(user " << getSessionUUID() << ") failed:" << result;
} else {
_avatarFSTContents = fstRequest->getData();
_verifyState = receivedFST;
_pendingEvent = true;
}
_avatarRequest = nullptr;
} else {
qCDebug(avatars) << "Incorrect or outdated FST request for" << getDisplayName();
}
fstRequest->deleteLater();
}
bool MixerAvatar::generateFSTHash() {
if (_avatarFSTContents.length() == 0) {
return false;
}
QByteArray hashJson = canonicalJson(_avatarFSTContents);
QCryptographicHash fstHash(QCryptographicHash::Sha256);
fstHash.addData(hashJson);
_certificateHash = fstHash.result();
return true;
}
bool MixerAvatar::validateFSTHash(const QString& publicKey) const {
// Guess we should refactor this stuff into a Authorization namespace ...
return EntityItemProperties::verifySignature(publicKey, _certificateHash,
QByteArray::fromBase64(_certificateIdFromFST.toUtf8()));
}
QByteArray MixerAvatar::canonicalJson(const QString fstFile) {
QStringList fstLines = fstFile.split("\n", Qt::SkipEmptyParts);
static const QString fstKeywordsReg {
"(marketplaceID|itemDescription|itemCategories|itemArtist|itemLicenseUrl|limitedRun|itemName|"
"filename|texdir|script|editionNumber|certificateID)"
};
QRegularExpression fstLineRegExp { QString("^\\s*") + fstKeywordsReg + "\\s*=\\s*(\\S.*)$" };
QStringListIterator fstLineIter(fstLines);
QJsonObject certifiedItems;
QStringList scripts;
while (fstLineIter.hasNext()) {
auto line = fstLineIter.next();
auto lineMatch = fstLineRegExp.match(line);
if (lineMatch.hasMatch()) {
QString key = lineMatch.captured(1);
if (key == "certificateID") {
_certificateIdFromFST = lineMatch.captured(2);
} else if (key == "itemDescription") {
// Item description can be multiline - intermediate lines end in <CR>
QString itemDesc = lineMatch.captured(2);
while (itemDesc.endsWith('\r') && fstLineIter.hasNext()) {
itemDesc += '\n' + fstLineIter.next();
}
certifiedItems[key] = QJsonValue(itemDesc);
} else if (key == "limitedRun" || key == "editionNumber") {
double value = lineMatch.captured(2).toDouble();
if (value != 0.0) {
certifiedItems[key] = QJsonValue(value);
}
} else if (key == "script") {
scripts.append(lineMatch.captured(2).trimmed());
} else {
certifiedItems[key] = QJsonValue(lineMatch.captured(2));
if (key == "marketplaceID") {
_marketplaceIdFromFST = lineMatch.captured(2);
}
}
}
}
if (!scripts.empty()) {
scripts.sort();
certifiedItems["script"] = QJsonArray::fromStringList(scripts);
}
QJsonDocument jsonDocCertifiedItems(certifiedItems);
//Example working form:
//return R"({"editionNumber":34,"filename":"http://mpassets.highfidelity.com/7f142fde-541a-4902-b33a-25fa89dfba21-v1/Bridger/Hifi_Toon_Male_3.fbx","itemArtist":"EgyMax",
//"itemCategories":"Avatars","itemDescription":"This is my first avatar. I hope you like it. More will come","itemName":"Bridger","limitedRun":-1,
//"marketplaceID":"7f142fde-541a-4902-b33a-25fa89dfba21","texdir":"http://mpassets.highfidelity.com/7f142fde-541a-4902-b33a-25fa89dfba21-v1/Bridger/textures"})";
return jsonDocCertifiedItems.toJson(QJsonDocument::Compact);
}
void MixerAvatar::ownerRequestComplete() {
QMutexLocker certifyLocker(&_avatarCertifyLock);
QNetworkReply* networkReply = static_cast<QNetworkReply*>(QObject::sender());
if (_verifyState != requestingOwner) {
qCDebug(avatars) << "WARNING: outdated avatar-owner information received in state" << stateToName(_verifyState);
} else if (networkReply->error() == QNetworkReply::NoError) {
_dynamicMarketResponse = networkReply->readAll();
_verifyState = ownerResponse;
_pendingEvent = true;
} else {
auto jsonData = QJsonDocument::fromJson(networkReply->readAll())["data"];
if (!jsonData.isUndefined() && !jsonData.toObject()["message"].isUndefined()) {
qCDebug(avatars) << "Owner lookup failed for" << getDisplayName() << "("
<< getSessionUUID() << ") :"
<< jsonData.toObject()["message"].toString();
_verifyState = error;
_pendingEvent = false;
}
}
networkReply->deleteLater();
}
void MixerAvatar::requestCurrentOwnership() {
// Get registered owner's public key from directory server.
static const QString POP_MARKETPLACE_API { "/api/v1/commerce/proof_of_purchase_status/transfer" };
auto& networkAccessManager = NetworkAccessManager::getInstance();
QNetworkRequest networkRequest;
networkRequest.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true);
networkRequest.setHeader(QNetworkRequest::ContentTypeHeader, "application/json");
QUrl requestURL = MetaverseAPI::getCurrentMetaverseServerURL();
requestURL.setPath(POP_MARKETPLACE_API);
networkRequest.setUrl(requestURL);
QJsonObject request;
request["certificate_id"] = _certificateIdFromFST;
QNetworkReply* networkReply = networkAccessManager.put(networkRequest, QJsonDocument(request).toJson());
connect(networkReply, &QNetworkReply::finished, this, &MixerAvatar::ownerRequestComplete);
}
void MixerAvatar::processCertifyEvents() {
if (!_pendingEvent) {
return;
}
QMutexLocker certifyLocker(&_avatarCertifyLock);
switch (_verifyState) {
case receivedFST:
{
generateFSTHash();
_numberChallenges = 0;
if (_certificateIdFromFST.length() != 0) {
QString& marketplacePublicKey = EntityItem::_marketplacePublicKey;
bool staticVerification = validateFSTHash(marketplacePublicKey);
_verifyState = staticVerification ? staticValidation : verificationFailed;
if (_verifyState == staticValidation) {
requestCurrentOwnership();
_verifyState = requestingOwner;
} else {
_needsIdentityUpdate = true;
_pendingEvent = false;
qCDebug(avatars) << "Avatar" << getDisplayName() << "(" << getSessionUUID() << ") FAILED static certification";
}
} else { // FST doesn't have a certificate, so noncertified rather than failed:
_pendingEvent = false;
_certifyFailed = false;
_needsIdentityUpdate = true;
_verifyState = nonCertified;
qCDebug(avatars) << "Avatar " << getDisplayName() << "(" << getSessionUUID() << ") isn't certified";
}
break;
}
case staticValidation:
{
requestCurrentOwnership();
_verifyState = requestingOwner;
break;
}
case ownerResponse:
{
QJsonDocument responseJson = QJsonDocument::fromJson(_dynamicMarketResponse.toUtf8());
QString ownerPublicKey;
bool ownerValid = false;
_pendingEvent = false;
if (responseJson["status"].toString() == "success") {
QJsonValue jsonData = responseJson["data"];
if (jsonData.isObject()) {
auto ownerJson = jsonData["transfer_recipient_key"];
if (ownerJson.isString()) {
ownerPublicKey = ownerJson.toString();
}
auto transferStatusJson = jsonData["transfer_status"];
if (transferStatusJson.isArray() && transferStatusJson.toArray()[0].toString() == "confirmed") {
ownerValid = true;
}
}
if (ownerValid && !ownerPublicKey.isEmpty()) {
if (ownerPublicKey.startsWith("-----BEGIN ")){
_ownerPublicKey = ownerPublicKey;
} else {
_ownerPublicKey = "-----BEGIN PUBLIC KEY-----\n"
+ ownerPublicKey
+ "\n-----END PUBLIC KEY-----\n";
}
sendOwnerChallenge();
_verifyState = challengeClient;
} else {
_verifyState = error;
qCDebug(avatars) << "Get owner status - couldn't parse response for" << getSessionUUID()
<< ":" << _dynamicMarketResponse;
}
} else {
qCDebug(avatars) << "Get owner status failed for" << getDisplayName() << _marketplaceIdFromURL <<
"message:" << responseJson["message"].toString();
_verifyState = error;
}
break;
}
case requestingOwner:
{ // Qt networking done on this thread:
QCoreApplication::processEvents();
break;
}
default:
qCDebug(avatars) << "Unexpected verify state" << stateToName(_verifyState);
break;
} // close switch
}
void MixerAvatar::sendOwnerChallenge() {
auto nodeList = DependencyManager::get<NodeList>();
QByteArray avatarID = ("{" + _marketplaceIdFromFST + "}").toUtf8();
if (_challengeNonce.isEmpty()) {
_challengeNonce = QUuid::createUuid().toByteArray();
QCryptographicHash nonceHash(QCryptographicHash::Sha256);
nonceHash.addData(_challengeNonce);
_challengeNonceHash = nonceHash.result();
}
auto challengeOwnershipPacket = NLPacket::create(PacketType::ChallengeOwnership,
2 * sizeof(int) + _challengeNonce.length() + avatarID.length(), true);
challengeOwnershipPacket->writePrimitive(avatarID.length());
challengeOwnershipPacket->writePrimitive(_challengeNonce.length());
challengeOwnershipPacket->write(avatarID);
challengeOwnershipPacket->write(_challengeNonce);
nodeList->sendPacket(std::move(challengeOwnershipPacket), *(nodeList->nodeWithUUID(getSessionUUID())) );
QCryptographicHash nonceHash(QCryptographicHash::Sha256);
nonceHash.addData(_challengeNonce);
_challengeNonceHash = nonceHash.result();
_pendingEvent = false;
emit startChallengeTimer();
}
void MixerAvatar::processChallengeResponse(ReceivedMessage& response) {
QByteArray avatarID;
QMutexLocker certifyLocker(&_avatarCertifyLock);
stopChallengeTimer();
if (_verifyState == challengeClient) {
QByteArray responseData = response.readAll();
if (responseData.length() < 8) {
_verifyState = error;
qCWarning(avatars) << "ALERT: Avatar challenge response packet too small, length:" << responseData.length();
return;
}
int avatarIDLength;
int signedNonceLength;
{
QDataStream responseStream(responseData);
responseStream.setByteOrder(QDataStream::LittleEndian);
responseStream >> avatarIDLength >> signedNonceLength;
}
QByteArray avatarID(responseData.data() + 2 * sizeof(int), avatarIDLength);
QByteArray signedNonce(responseData.data() + 2 * sizeof(int) + avatarIDLength, signedNonceLength);
bool challengeResult = EntityItemProperties::verifySignature(_ownerPublicKey, _challengeNonceHash,
QByteArray::fromBase64(signedNonce));
_verifyState = challengeResult ? verificationSucceeded : verificationFailed;
_certifyFailed = !challengeResult;
_needsIdentityUpdate = true;
if (_certifyFailed) {
qCDebug(avatars) << "Dynamic verification FAILED for" << getDisplayName() << getSessionUUID();
emit startChallengeTimer();
} else {
qCDebug(avatars) << "Dynamic verification SUCCEEDED for" << getDisplayName() << getSessionUUID();
_challengeNonce.clear();
}
} else {
qCDebug(avatars) << "WARNING: Unexpected avatar challenge-response in state" << stateToName(_verifyState);
}
}
void MixerAvatar::stopChallengeTimer() {
if (QThread::currentThread() == thread()) {
_challengeTimer.stop();
} else {
QMetaObject::invokeMethod(&_challengeTimer, &QTimer::stop);
}
}

View file

@ -21,28 +21,14 @@ class ResourceRequest;
class MixerAvatar : public AvatarData {
Q_OBJECT
public:
MixerAvatar();
inline MixerAvatar() {}
bool getNeedsHeroCheck() const { return _needsHeroCheck; }
void setNeedsHeroCheck(bool needsHeroCheck = true) { _needsHeroCheck = needsHeroCheck; }
void fetchAvatarFST();
virtual bool isCertifyFailed() const override { return _certifyFailed; }
bool needsIdentityUpdate() const { return _needsIdentityUpdate; }
void setNeedsIdentityUpdate(bool value = true) { _needsIdentityUpdate = value; }
void processCertifyEvents();
void processChallengeResponse(ReceivedMessage& response);
void stopChallengeTimer();
// Avatar certification/verification:
enum VerifyState {
nonCertified, requestingFST, receivedFST, staticValidation, requestingOwner, ownerResponse,
challengeClient, verified, verificationFailed, verificationSucceeded, error
};
Q_ENUM(VerifyState)
bool isInScreenshareZone() const { return _inScreenshareZone; }
void setInScreenshareZone(bool value = true) { _inScreenshareZone = value; }
const QUuid& getScreenshareZone() const { return _screenshareZone; }
@ -50,44 +36,9 @@ public:
private:
bool _needsHeroCheck { false };
static const char* stateToName(VerifyState state);
VerifyState _verifyState { nonCertified };
std::atomic<bool> _pendingEvent { false };
QMutex _avatarCertifyLock;
ResourceRequest* _avatarRequest { nullptr };
QString _marketplaceIdFromURL;
QString _marketplaceIdFromFST;
QByteArray _avatarFSTContents;
QByteArray _certificateHash;
QString _certificateIdFromURL;
QString _certificateIdFromFST;
QString _dynamicMarketResponse;
QString _ownerPublicKey;
QByteArray _challengeNonce;
QByteArray _challengeNonceHash;
QTimer _challengeTimer;
static constexpr int NUM_CHALLENGES_BEFORE_FAIL = 1;
int _numberChallenges { 0 };
bool _certifyFailed { false };
bool _needsIdentityUpdate { false };
bool _inScreenshareZone { false };
QUuid _screenshareZone;
bool generateFSTHash();
bool validateFSTHash(const QString& publicKey) const;
QByteArray canonicalJson(const QString fstFile);
void requestCurrentOwnership();
void sendOwnerChallenge();
static const QString VERIFY_FAIL_MODEL;
private slots:
void fstRequestComplete();
void ownerRequestComplete();
void challengeTimeout();
signals:
void startChallengeTimer();
};
using MixerAvatarSharedPointer = std::shared_ptr<MixerAvatar>;

View file

@ -4,9 +4,11 @@
//
// Created by Clement on 7/22/14.
// Copyright 2014 High Fidelity, Inc.
// Copyright 2023 Overte e.V.
//
// Distributed under the Apache License, Version 2.0.
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
// SPDX-License-Identifier: Apache-2.0
//
#include "ScriptableAvatar.h"
@ -17,17 +19,23 @@
#include <shared/QtHelpers.h>
#include <AnimUtil.h>
#include <AvatarHashMap.h>
#include <ClientTraitsHandler.h>
#include <GLMHelpers.h>
#include <ResourceRequestObserver.h>
#include <AvatarLogging.h>
#include <EntityItem.h>
#include <EntityItemProperties.h>
#include <NetworkAccessManager.h>
#include <NetworkingConstants.h>
ScriptableAvatar::ScriptableAvatar() {
_clientTraitsHandler.reset(new ClientTraitsHandler(this));
static std::once_flag once;
std::call_once(once, [] {
qRegisterMetaType<HFMModel::Pointer>("HFMModel::Pointer");
});
}
QByteArray ScriptableAvatar::toByteArrayStateful(AvatarDataDetail dataDetail, bool dropFaceTracking) {
@ -48,6 +56,7 @@ void ScriptableAvatar::startAnimation(const QString& url, float fps, float prior
_animation = DependencyManager::get<AnimationCache>()->getAnimation(url);
_animationDetails = AnimationDetails("", QUrl(url), fps, 0, loop, hold, false, firstFrame, lastFrame, true, firstFrame, false);
_maskedJoints = maskedJoints;
_isAnimationRigValid = false;
}
void ScriptableAvatar::stopAnimation() {
@ -85,11 +94,12 @@ QStringList ScriptableAvatar::getJointNames() const {
}
void ScriptableAvatar::setSkeletonModelURL(const QUrl& skeletonModelURL) {
_bind.reset();
_animSkeleton.reset();
_avatarAnimSkeleton.reset();
_geometryResource.reset();
AvatarData::setSkeletonModelURL(skeletonModelURL);
updateJointMappings();
_isRigValid = false;
}
int ScriptableAvatar::sendAvatarDataPacket(bool sendAll) {
@ -133,65 +143,87 @@ static AnimPose composeAnimPose(const HFMJoint& joint, const glm::quat rotation,
}
void ScriptableAvatar::update(float deltatime) {
if (!_geometryResource && !_skeletonModelFilenameURL.isEmpty()) { // AvatarData will parse the .fst, but not get the .fbx skeleton.
_geometryResource = DependencyManager::get<ModelCache>()->getGeometryResource(_skeletonModelFilenameURL);
}
// Run animation
if (_animation && _animation->isLoaded() && _animation->getFrames().size() > 0 && !_bind.isNull() && _bind->isLoaded()) {
if (!_animSkeleton) {
_animSkeleton = std::make_shared<AnimSkeleton>(_bind->getHFMModel());
}
float currentFrame = _animationDetails.currentFrame + deltatime * _animationDetails.fps;
if (_animationDetails.loop || currentFrame < _animationDetails.lastFrame) {
while (currentFrame >= _animationDetails.lastFrame) {
currentFrame -= (_animationDetails.lastFrame - _animationDetails.firstFrame);
Q_ASSERT(QThread::currentThread() == thread());
if (_animation && _animation->isLoaded()) {
Q_ASSERT(thread() == _animation->thread());
auto frames = _animation->getFramesReference();
if (frames.size() > 0 && _geometryResource && _geometryResource->isHFMModelLoaded()) {
if (!_isRigValid) {
_rig.reset(_geometryResource->getHFMModel());
_isRigValid = true;
}
_animationDetails.currentFrame = currentFrame;
const QVector<HFMJoint>& modelJoints = _bind->getHFMModel().joints;
QStringList animationJointNames = _animation->getJointNames();
const int nJoints = modelJoints.size();
if (_jointData.size() != nJoints) {
_jointData.resize(nJoints);
if (!_isAnimationRigValid) {
_animationRig.reset(_animation->getHFMModel());
_isAnimationRigValid = true;
}
const int frameCount = _animation->getFrames().size();
const HFMAnimationFrame& floorFrame = _animation->getFrames().at((int)glm::floor(currentFrame) % frameCount);
const HFMAnimationFrame& ceilFrame = _animation->getFrames().at((int)glm::ceil(currentFrame) % frameCount);
const float frameFraction = glm::fract(currentFrame);
std::vector<AnimPose> poses = _animSkeleton->getRelativeDefaultPoses();
const float UNIT_SCALE = 0.01f;
for (int i = 0; i < animationJointNames.size(); i++) {
const QString& name = animationJointNames[i];
// As long as we need the model preRotations anyway, let's get the jointIndex from the bind skeleton rather than
// trusting the .fst (which is sometimes not updated to match changes to .fbx).
int mapping = _bind->getHFMModel().getJointIndex(name);
if (mapping != -1 && !_maskedJoints.contains(name)) {
AnimPose floorPose = composeAnimPose(modelJoints[mapping], floorFrame.rotations[i], floorFrame.translations[i] * UNIT_SCALE);
AnimPose ceilPose = composeAnimPose(modelJoints[mapping], ceilFrame.rotations[i], floorFrame.translations[i] * UNIT_SCALE);
blend(1, &floorPose, &ceilPose, frameFraction, &poses[mapping]);
}
if (!_avatarAnimSkeleton) {
_avatarAnimSkeleton = std::make_shared<AnimSkeleton>(_geometryResource->getHFMModel());
}
std::vector<AnimPose> absPoses = poses;
_animSkeleton->convertRelativePosesToAbsolute(absPoses);
for (int i = 0; i < nJoints; i++) {
JointData& data = _jointData[i];
AnimPose& absPose = absPoses[i];
if (data.rotation != absPose.rot()) {
data.rotation = absPose.rot();
data.rotationIsDefaultPose = false;
float currentFrame = _animationDetails.currentFrame + deltatime * _animationDetails.fps;
if (_animationDetails.loop || currentFrame < _animationDetails.lastFrame) {
while (currentFrame >= _animationDetails.lastFrame) {
currentFrame -= (_animationDetails.lastFrame - _animationDetails.firstFrame);
}
AnimPose& relPose = poses[i];
if (data.translation != relPose.trans()) {
data.translation = relPose.trans();
data.translationIsDefaultPose = false;
}
}
_animationDetails.currentFrame = currentFrame;
} else {
_animation.clear();
const QVector<HFMJoint>& modelJoints = _geometryResource->getHFMModel().joints;
QStringList animationJointNames = _animation->getJointNames();
const int nJoints = modelJoints.size();
if (_jointData.size() != nJoints) {
_jointData.resize(nJoints);
}
const int frameCount = frames.size();
const HFMAnimationFrame& floorFrame = frames.at((int)glm::floor(currentFrame) % frameCount);
const HFMAnimationFrame& ceilFrame = frames.at((int)glm::ceil(currentFrame) % frameCount);
const float frameFraction = glm::fract(currentFrame);
std::vector<AnimPose> poses = _avatarAnimSkeleton->getRelativeDefaultPoses();
// TODO: this needs more testing, it's possible that we need not only scale but also rotation and translation
// According to tests with unmatching avatar and animation armatures, sometimes bones are not rotated correctly.
// Matching armatures already work very well now.
const float UNIT_SCALE = _animationRig.GetScaleFactorGeometryToUnscaledRig() / _rig.GetScaleFactorGeometryToUnscaledRig();
for (int i = 0; i < animationJointNames.size(); i++) {
const QString& name = animationJointNames[i];
// As long as we need the model preRotations anyway, let's get the jointIndex from the bind skeleton rather than
// trusting the .fst (which is sometimes not updated to match changes to .fbx).
int mapping = _geometryResource->getHFMModel().getJointIndex(name);
if (mapping != -1 && !_maskedJoints.contains(name)) {
AnimPose floorPose = composeAnimPose(modelJoints[mapping], floorFrame.rotations[i],
floorFrame.translations[i] * UNIT_SCALE);
AnimPose ceilPose = composeAnimPose(modelJoints[mapping], ceilFrame.rotations[i],
ceilFrame.translations[i] * UNIT_SCALE);
blend(1, &floorPose, &ceilPose, frameFraction, &poses[mapping]);
}
}
std::vector<AnimPose> absPoses = poses;
Q_ASSERT(_avatarAnimSkeleton != nullptr);
_avatarAnimSkeleton->convertRelativePosesToAbsolute(absPoses);
for (int i = 0; i < nJoints; i++) {
JointData& data = _jointData[i];
AnimPose& absPose = absPoses[i];
if (data.rotation != absPose.rot()) {
data.rotation = absPose.rot();
data.rotationIsDefaultPose = false;
}
AnimPose& relPose = poses[i];
if (data.translation != relPose.trans()) {
data.translation = relPose.trans();
data.translationIsDefaultPose = false;
}
}
} else {
_animation.clear();
}
}
}
@ -221,7 +253,7 @@ void ScriptableAvatar::updateJointMappings() {
// connects.
QNetworkAccessManager& networkAccessManager = NetworkAccessManager::getInstance();
QNetworkRequest networkRequest = QNetworkRequest(_skeletonModelURL);
networkRequest.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true);
networkRequest.setAttribute(QNetworkRequest::RedirectPolicyAttribute, QNetworkRequest::NoLessSafeRedirectPolicy);
networkRequest.setHeader(QNetworkRequest::UserAgentHeader, NetworkingConstants::OVERTE_USER_AGENT);
DependencyManager::get<ResourceRequestObserver>()->update(
_skeletonModelURL, -1, "AvatarData::updateJointMappings");
@ -241,6 +273,7 @@ void ScriptableAvatar::setJointMappingsFromNetworkReply() {
networkReply->deleteLater();
return;
}
// TODO: this works only with .fst files currently, not directly with FBX and GLB models
{
QWriteLocker writeLock(&_jointDataLock);
QByteArray line;
@ -249,7 +282,7 @@ void ScriptableAvatar::setJointMappingsFromNetworkReply() {
if (line.startsWith("filename")) {
int filenameIndex = line.indexOf('=') + 1;
if (filenameIndex > 0) {
_skeletonFBXURL = _skeletonModelURL.resolved(QString(line.mid(filenameIndex).trimmed()));
_skeletonModelFilenameURL = _skeletonModelURL.resolved(QString(line.mid(filenameIndex).trimmed()));
}
}
if (!line.startsWith("jointIndex")) {
@ -311,7 +344,9 @@ AvatarEntityMap ScriptableAvatar::getAvatarEntityDataInternal(bool allProperties
EntityItemProperties properties = entity->getProperties(desiredProperties);
QByteArray blob;
EntityItemProperties::propertiesToBlob(_scriptEngine, sessionID, properties, blob, allProperties);
_helperScriptEngine.run( [&] {
EntityItemProperties::propertiesToBlob(*_helperScriptEngine.get(), sessionID, properties, blob, allProperties);
});
data[id] = blob;
}
});
@ -335,8 +370,12 @@ void ScriptableAvatar::setAvatarEntityData(const AvatarEntityMap& avatarEntityDa
while (dataItr != avatarEntityData.end()) {
EntityItemProperties properties;
const QByteArray& blob = dataItr.value();
if (!blob.isNull() && EntityItemProperties::blobToProperties(_scriptEngine, blob, properties)) {
newProperties[dataItr.key()] = properties;
if (!blob.isNull()) {
_helperScriptEngine.run([&] {
if (EntityItemProperties::blobToProperties(*_helperScriptEngine.get(), blob, properties)) {
newProperties[dataItr.key()] = properties;
}
});
}
++dataItr;
}
@ -415,9 +454,16 @@ void ScriptableAvatar::updateAvatarEntity(const QUuid& entityID, const QByteArra
EntityItemPointer entity;
EntityItemProperties properties;
if (!EntityItemProperties::blobToProperties(_scriptEngine, entityData, properties)) {
// entityData is corrupt
return;
{
// TODO: checking how often this happens and what is the performance impact of having the script engine on separate thread
// If it's happening often, a method to move HelperScriptEngine into the current thread would be a good idea
bool result = _helperScriptEngine.runWithResult<bool> ( [&]() {
return EntityItemProperties::blobToProperties(*_helperScriptEngine.get(), entityData, properties);
});
if (!result) {
// entityData is corrupt
return;
}
}
std::map<QUuid, EntityItemPointer>::iterator itr = _entities.find(entityID);

View file

@ -4,9 +4,11 @@
//
// Created by Clement on 7/22/14.
// Copyright 2014 High Fidelity, Inc.
// Copyright 2023 Overte e.V.
//
// Distributed under the Apache License, Version 2.0.
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
// SPDX-License-Identifier: Apache-2.0
//
#ifndef hifi_ScriptableAvatar_h
@ -17,6 +19,9 @@
#include <AvatarData.h>
#include <ScriptEngine.h>
#include <EntityItem.h>
#include "model-networking/ModelCache.h"
#include "Rig.h"
#include <HelperScriptEngine.h>
/*@jsdoc
* The <code>Avatar</code> API is used to manipulate scriptable avatars on the domain. This API is a subset of the
@ -215,12 +220,16 @@ private:
AnimationPointer _animation;
AnimationDetails _animationDetails;
QStringList _maskedJoints;
AnimationPointer _bind; // a sleazy way to get the skeleton, given the various library/cmake dependencies
std::shared_ptr<AnimSkeleton> _animSkeleton;
GeometryResource::Pointer _geometryResource;
Rig _rig;
bool _isRigValid{false};
Rig _animationRig;
bool _isAnimationRigValid{false};
std::shared_ptr<AnimSkeleton> _avatarAnimSkeleton;
QHash<QString, int> _fstJointIndices; ///< 1-based, since zero is returned for missing keys
QStringList _fstJointNames; ///< in order of depth-first traversal
QUrl _skeletonFBXURL;
mutable QScriptEngine _scriptEngine;
QUrl _skeletonModelFilenameURL; // This contains URL from filename field in fst file
mutable HelperScriptEngine _helperScriptEngine;
std::map<QUuid, EntityItemPointer> _entities;
/// Loads the joint indices, names from the FST file (if any)

View file

@ -15,7 +15,6 @@
#include <QTimer>
#include <QJsonArray>
#include <QJsonDocument>
#include <QRandomGenerator>
#include <EntityTree.h>
#include <ResourceCache.h>
@ -38,8 +37,7 @@ const char* LOCAL_MODELS_PERSIST_FILE = "resources/models.svo";
EntityServer::EntityServer(ReceivedMessage& message) :
OctreeServer(message),
_entitySimulation(nullptr),
_dynamicDomainVerificationTimer(this)
_entitySimulation(nullptr)
{
DependencyManager::set<ResourceManager>();
DependencyManager::set<ResourceCacheSharedItems>();
@ -56,14 +54,8 @@ EntityServer::EntityServer(ReceivedMessage& message) :
PacketType::EntityClone,
PacketType::EntityEdit,
PacketType::EntityErase,
PacketType::EntityPhysics,
PacketType::ChallengeOwnership,
PacketType::ChallengeOwnershipRequest,
PacketType::ChallengeOwnershipReply },
PacketType::EntityPhysics },
PacketReceiver::makeSourcedListenerReference<EntityServer>(this, &EntityServer::handleEntityPacket));
connect(&_dynamicDomainVerificationTimer, &QTimer::timeout, this, &EntityServer::startDynamicDomainVerification);
_dynamicDomainVerificationTimer.setSingleShot(true);
}
EntityServer::~EntityServer() {
@ -280,7 +272,7 @@ int EntityServer::sendSpecialPackets(const SharedNodePointer& node, OctreeQueryN
#ifdef EXTRA_ERASE_DEBUGGING
if (packetsSent > 0) {
qDebug() << "EntityServer::sendSpecialPackets() sent " << packetsSent << "special packets of "
qDebug() << "EntityServer::sendSpecialPackets() sent " << packetsSent << "special packets of "
<< totalBytes << " total bytes to node:" << node->getUUID();
}
#endif
@ -325,18 +317,6 @@ void EntityServer::readAdditionalConfiguration(const QJsonObject& settingsSectio
tree->setEntityMaxTmpLifetime(EntityTree::DEFAULT_MAX_TMP_ENTITY_LIFETIME);
}
int minTime;
if (readOptionInt("dynamicDomainVerificationTimeMin", settingsSectionObject, minTime)) {
_MINIMUM_DYNAMIC_DOMAIN_VERIFICATION_TIMER_MS = minTime * 1000;
}
int maxTime;
if (readOptionInt("dynamicDomainVerificationTimeMax", settingsSectionObject, maxTime)) {
_MAXIMUM_DYNAMIC_DOMAIN_VERIFICATION_TIMER_MS = maxTime * 1000;
}
startDynamicDomainVerification();
tree->setWantEditLogging(wantEditLogging);
tree->setWantTerseEditLogging(wantTerseEditLogging);
@ -346,14 +326,14 @@ void EntityServer::readAdditionalConfiguration(const QJsonObject& settingsSectio
} else {
tree->setEntityScriptSourceWhitelist("");
}
auto entityEditFilters = DependencyManager::get<EntityEditFilters>();
QString filterURL;
if (readOptionString("entityEditFilter", settingsSectionObject, filterURL) && !filterURL.isEmpty()) {
// connect the filterAdded signal, and block edits until you hear back
connect(entityEditFilters.data(), &EntityEditFilters::filterAdded, this, &EntityServer::entityFilterAdded);
entityEditFilters->addFilter(EntityItemID(), filterURL);
}
}
@ -387,7 +367,7 @@ void EntityServer::nodeKilled(SharedNodePointer node) {
// FIXME - this stats tracking is somewhat temporary to debug the Whiteboard issues. It's not a bad
// set of stats to have, but we'd probably want a different data structure if we keep it very long.
// Since this version uses a single shared QMap for all senders, there could be some lock contention
// Since this version uses a single shared QMap for all senders, there could be some lock contention
// on this QWriteLocker
void EntityServer::trackSend(const QUuid& dataID, quint64 dataLastEdited, const QUuid& sessionID) {
QWriteLocker locker(&_viewerSendingStatsLock);
@ -463,20 +443,5 @@ QString EntityServer::serverSubclassStats() {
void EntityServer::domainSettingsRequestFailed() {
auto nodeList = DependencyManager::get<NodeList>();
qCDebug(entities) << "The EntityServer couldn't get the Domain Settings. Starting dynamic domain verification with default values...";
_MINIMUM_DYNAMIC_DOMAIN_VERIFICATION_TIMER_MS = DEFAULT_MINIMUM_DYNAMIC_DOMAIN_VERIFICATION_TIMER_MS;
_MAXIMUM_DYNAMIC_DOMAIN_VERIFICATION_TIMER_MS = DEFAULT_MAXIMUM_DYNAMIC_DOMAIN_VERIFICATION_TIMER_MS;
startDynamicDomainVerification();
}
void EntityServer::startDynamicDomainVerification() {
qCDebug(entities) << "Starting Dynamic Domain Verification...";
EntityTreePointer tree = std::static_pointer_cast<EntityTree>(_tree);
tree->startDynamicDomainVerificationOnServer((float) _MAXIMUM_DYNAMIC_DOMAIN_VERIFICATION_TIMER_MS / MSECS_PER_SECOND);
int nextInterval = QRandomGenerator::global()->bounded(((_MAXIMUM_DYNAMIC_DOMAIN_VERIFICATION_TIMER_MS + 1) - _MINIMUM_DYNAMIC_DOMAIN_VERIFICATION_TIMER_MS) + _MINIMUM_DYNAMIC_DOMAIN_VERIFICATION_TIMER_MS);
qCDebug(entities) << "Restarting Dynamic Domain Verification timer for" << nextInterval / 1000 << "seconds";
_dynamicDomainVerificationTimer.start(nextInterval);
qCDebug(entities) << "The EntityServer couldn't get the Domain Settings.";
}

View file

@ -81,13 +81,6 @@ private:
QReadWriteLock _viewerSendingStatsLock;
QMap<QUuid, QMap<QUuid, ViewerSendingStats>> _viewerSendingStats;
static const int DEFAULT_MINIMUM_DYNAMIC_DOMAIN_VERIFICATION_TIMER_MS = 45 * 60 * 1000; // 45m
static const int DEFAULT_MAXIMUM_DYNAMIC_DOMAIN_VERIFICATION_TIMER_MS = 60 * 60 * 1000; // 1h
int _MINIMUM_DYNAMIC_DOMAIN_VERIFICATION_TIMER_MS = DEFAULT_MINIMUM_DYNAMIC_DOMAIN_VERIFICATION_TIMER_MS; // 45m
int _MAXIMUM_DYNAMIC_DOMAIN_VERIFICATION_TIMER_MS = DEFAULT_MAXIMUM_DYNAMIC_DOMAIN_VERIFICATION_TIMER_MS; // 1h
QTimer _dynamicDomainVerificationTimer;
void startDynamicDomainVerification();
};
#endif // hifi_EntityServer_h

View file

@ -13,12 +13,17 @@
#include <SharedUtil.h>
#include "AssignmentClientApp.h"
#include <crash-handler/CrashHandler.h>
int main(int argc, char* argv[]) {
setupHifiApplication(BuildInfo::ASSIGNMENT_CLIENT_NAME);
AssignmentClientApp app(argc, argv);
auto &ch = CrashHandler::getInstance();
ch.startMonitor(&app);
int acReturn = app.exec();
qDebug() << "assignment-client process" << app.applicationPid() << "exiting with status code" << acReturn;

View file

@ -121,6 +121,8 @@ void MessagesMixer::domainSettingsRequestComplete() {
}
void MessagesMixer::parseDomainServerSettings(const QJsonObject& domainSettings) {
commonParseSettingsObject(domainSettings);
const QString MESSAGES_MIXER_SETTINGS_KEY = "messages_mixer";
QJsonObject messagesMixerGroupObject = domainSettings[MESSAGES_MIXER_SETTINGS_KEY].toObject();

View file

@ -93,19 +93,7 @@ void OctreeInboundPacketProcessor::processPacket(QSharedPointer<ReceivedMessage>
// Ask our tree subclass if it can handle the incoming packet...
PacketType packetType = message->getType();
if (packetType == PacketType::ChallengeOwnership) {
_myServer->getOctree()->withWriteLock([&] {
_myServer->getOctree()->processChallengeOwnershipPacket(*message, sendingNode);
});
} else if (packetType == PacketType::ChallengeOwnershipRequest) {
_myServer->getOctree()->withWriteLock([&] {
_myServer->getOctree()->processChallengeOwnershipRequestPacket(*message, sendingNode);
});
} else if (packetType == PacketType::ChallengeOwnershipReply) {
_myServer->getOctree()->withWriteLock([&] {
_myServer->getOctree()->processChallengeOwnershipReplyPacket(*message, sendingNode);
});
} else if (_myServer->getOctree()->handlesEditPacketType(packetType)) {
if (_myServer->getOctree()->handlesEditPacketType(packetType)) {
PerformanceWarning warn(debugProcessPacket, "processPacket KNOWN TYPE", debugProcessPacket);
_receivedPacketCount++;

View file

@ -1023,6 +1023,8 @@ void OctreeServer::readConfiguration() {
const QJsonObject& settingsObject = DependencyManager::get<NodeList>()->getDomainHandler().getSettingsObject();
commonParseSettingsObject(settingsObject);
QString settingsKey = getMyDomainSettingsKey();
QJsonObject settingsSectionObject = settingsObject[settingsKey].toObject();
_settings = settingsSectionObject; // keep this for later

View file

@ -4,9 +4,11 @@
//
// Created by Clément Brisset on 1/5/17.
// Copyright 2013 High Fidelity, Inc.
// Copyright 2023 Overte e.V.
//
// Distributed under the Apache License, Version 2.0.
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
// SPDX-License-Identifier: Apache-2.0
//
#include "EntityScriptServer.h"
@ -14,7 +16,9 @@
#include <mutex>
#include <AudioConstants.h>
#include <AudioScriptingInterface.h>
#include <AudioInjectorManager.h>
#include <AvatarHashMap.h>
#include <ClientServerUtils.h>
#include <DebugDraw.h>
#include <EntityNodeData.h>
@ -40,16 +44,8 @@
using Mutex = std::mutex;
using Lock = std::lock_guard<Mutex>;
static std::mutex logBufferMutex;
static std::string logBuffer;
void messageHandler(QtMsgType type, const QMessageLogContext& context, const QString& message) {
auto logMessage = LogHandler::getInstance().printMessage((LogMsgType) type, context, message);
if (!logMessage.isEmpty()) {
Lock lock(logBufferMutex);
logBuffer.append(logMessage.toStdString() + '\n');
}
}
int EntityScriptServer::_entitiesScriptEngineCount = 0;
@ -110,7 +106,7 @@ EntityScriptServer::~EntityScriptServer() {
static const QString ENTITY_SCRIPT_SERVER_LOGGING_NAME = "entity-script-server";
void EntityScriptServer::handleReloadEntityServerScriptPacket(QSharedPointer<ReceivedMessage> message, SharedNodePointer senderNode) {
if (senderNode->getCanRez() || senderNode->getCanRezTmp() || senderNode->getCanRezCertified() || senderNode->getCanRezTmpCertified()) {
if (senderNode->getCanRez() || senderNode->getCanRezTmp()) {
auto entityID = QUuid::fromRfc4122(message->read(NUM_BYTES_RFC4122_UUID));
if (_entityViewer.getTree() && !_shuttingDown) {
@ -121,7 +117,7 @@ void EntityScriptServer::handleReloadEntityServerScriptPacket(QSharedPointer<Rec
}
void EntityScriptServer::handleEntityScriptGetStatusPacket(QSharedPointer<ReceivedMessage> message, SharedNodePointer senderNode) {
if (senderNode->getCanRez() || senderNode->getCanRezTmp() || senderNode->getCanRezCertified() || senderNode->getCanRezTmpCertified()) {
if (senderNode->getCanRez() || senderNode->getCanRezTmp()) {
MessageID messageID;
message->readPrimitive(&messageID);
auto entityID = QUuid::fromRfc4122(message->read(NUM_BYTES_RFC4122_UUID));
@ -130,7 +126,7 @@ void EntityScriptServer::handleEntityScriptGetStatusPacket(QSharedPointer<Receiv
replyPacketList->writePrimitive(messageID);
EntityScriptDetails details;
if (_entitiesScriptEngine->getEntityScriptDetails(entityID, details)) {
if (_entitiesScriptManager->getEntityScriptDetails(entityID, details)) {
replyPacketList->writePrimitive(true);
replyPacketList->writePrimitive(details.status);
replyPacketList->writeString(details.errorInfo);
@ -145,11 +141,14 @@ void EntityScriptServer::handleEntityScriptGetStatusPacket(QSharedPointer<Receiv
void EntityScriptServer::handleSettings() {
auto nodeList = DependencyManager::get<NodeList>();
auto& domainHandler = nodeList->getDomainHandler();
const QJsonObject& settingsObject = domainHandler.getSettingsObject();
commonParseSettingsObject(settingsObject);
static const QString ENTITY_SCRIPT_SERVER_SETTINGS_KEY = "entity_script_server";
if (!settingsObject.contains(ENTITY_SCRIPT_SERVER_SETTINGS_KEY)) {
@ -175,7 +174,7 @@ void EntityScriptServer::handleSettings() {
}
void EntityScriptServer::updateEntityPPS() {
int numRunningScripts = _entitiesScriptEngine->getNumRunningEntityScripts();
int numRunningScripts = _entitiesScriptManager->getNumRunningEntityScripts();
int pps;
if (std::numeric_limits<int>::max() / _entityPPSPerScript < numRunningScripts) {
qWarning() << QString("Integer multiplication would overflow, clamping to maxint: %1 * %2").arg(numRunningScripts).arg(_entityPPSPerScript);
@ -189,7 +188,7 @@ void EntityScriptServer::updateEntityPPS() {
}
void EntityScriptServer::handleEntityServerScriptLogPacket(QSharedPointer<ReceivedMessage> message, SharedNodePointer senderNode) {
bool canRezAny = senderNode->getCanRez() || senderNode->getCanRezTmp() || senderNode->getCanRezCertified() || senderNode->getCanRezTmpCertified();
bool canRezAny = senderNode->getCanRez() || senderNode->getCanRezTmp();
bool enable = false;
message->readPrimitive(&enable);
@ -210,10 +209,10 @@ void EntityScriptServer::handleEntityServerScriptLogPacket(QSharedPointer<Receiv
}
void EntityScriptServer::pushLogs() {
std::string buffer;
QJsonArray buffer;
{
Lock lock(logBufferMutex);
std::swap(logBuffer, buffer);
Lock lock(_logBufferMutex);
std::swap(_logBuffer, buffer);
}
if (buffer.empty()) {
@ -224,19 +223,30 @@ void EntityScriptServer::pushLogs() {
}
auto nodeList = DependencyManager::get<NodeList>();
QJsonDocument document;
document.setArray(buffer);
QString data(document.toJson());
std::string string = data.toStdString();
auto cstring = string.c_str();
for (auto uuid : _logListeners) {
auto node = nodeList->nodeWithUUID(uuid);
if (node && node->getActiveSocket()) {
auto packet = NLPacketList::create(PacketType::EntityServerScriptLog, QByteArray(), true, true);
packet->write(buffer.data(), buffer.size());
packet->write(cstring, strlen(cstring));
nodeList->sendPacketList(std::move(packet), *node);
}
}
}
void EntityScriptServer::addLogEntry(const QString& message, const QString& fileName, int lineNumber, const EntityItemID& entityID, ScriptMessage::Severity severity) {
ScriptMessage entry(message, fileName, lineNumber, entityID, ScriptMessage::ScriptType::TYPE_ENTITY_SCRIPT, severity);
Lock lock(_logBufferMutex);
_logBuffer.append(entry.toJson());
}
void EntityScriptServer::handleEntityScriptCallMethodPacket(QSharedPointer<ReceivedMessage> receivedMessage, SharedNodePointer senderNode) {
if (_entitiesScriptEngine && _entityViewer.getTree() && !_shuttingDown) {
if (_entitiesScriptManager && _entityViewer.getTree() && !_shuttingDown) {
auto entityID = QUuid::fromRfc4122(receivedMessage->read(NUM_BYTES_RFC4122_UUID));
auto method = receivedMessage->readString();
@ -250,13 +260,13 @@ void EntityScriptServer::handleEntityScriptCallMethodPacket(QSharedPointer<Recei
params << paramString;
}
_entitiesScriptEngine->callEntityScriptMethod(entityID, method, params, senderNode->getUUID());
_entitiesScriptManager->callEntityScriptMethod(entityID, method, params, senderNode->getUUID());
}
}
void EntityScriptServer::run() {
DependencyManager::set<ScriptEngines>(ScriptEngine::ENTITY_SERVER_SCRIPT);
DependencyManager::set<ScriptEngines>(ScriptManager::ENTITY_SERVER_SCRIPT);
DependencyManager::set<EntityScriptServerServices>();
DependencyManager::set<AvatarHashMap>();
@ -288,7 +298,7 @@ void EntityScriptServer::run() {
entityScriptingInterface->init();
_entityViewer.init();
// setup the JSON filter that asks for entities with a non-default serverScripts property
QJsonObject queryJSONParameters;
queryJSONParameters[EntityJSONQueryProperties::SERVER_SCRIPTS_PROPERTY] = EntityQueryFilterSymbol::NonDefault;
@ -299,7 +309,7 @@ void EntityScriptServer::run() {
queryFlags[EntityJSONQueryProperties::INCLUDE_DESCENDANTS_PROPERTY] = true;
queryJSONParameters[EntityJSONQueryProperties::FLAGS_PROPERTY] = queryFlags;
// setup the JSON parameters so that OctreeQuery does not use a frustum and uses our JSON filter
_entityViewer.getOctreeQuery().setJSONParameters(queryJSONParameters);
@ -376,7 +386,7 @@ void EntityScriptServer::nodeKilled(SharedNodePointer killedNode) {
if (!hasAnotherEntityServer) {
clear();
}
break;
}
case NodeType::Agent: {
@ -446,7 +456,8 @@ void EntityScriptServer::selectAudioFormat(const QString& selectedCodecName) {
void EntityScriptServer::resetEntitiesScriptEngine() {
auto engineName = QString("about:Entities %1").arg(++_entitiesScriptEngineCount);
auto newEngine = scriptEngineFactory(ScriptEngine::ENTITY_SERVER_SCRIPT, NO_SCRIPT, engineName);
auto newManager = scriptManagerFactory(ScriptManager::ENTITY_SERVER_SCRIPT, NO_SCRIPT, engineName);
auto newEngine = newManager->engine();
auto webSocketServerConstructorValue = newEngine->newFunction(WebSocketServerClass::constructor);
newEngine->globalObject().setProperty("WebSocketServer", webSocketServerConstructorValue);
@ -456,42 +467,65 @@ void EntityScriptServer::resetEntitiesScriptEngine() {
// connect this script engines printedMessage signal to the global ScriptEngines these various messages
auto scriptEngines = DependencyManager::get<ScriptEngines>().data();
connect(newEngine.data(), &ScriptEngine::printedMessage, scriptEngines, &ScriptEngines::onPrintedMessage);
connect(newEngine.data(), &ScriptEngine::errorMessage, scriptEngines, &ScriptEngines::onErrorMessage);
connect(newEngine.data(), &ScriptEngine::warningMessage, scriptEngines, &ScriptEngines::onWarningMessage);
connect(newEngine.data(), &ScriptEngine::infoMessage, scriptEngines, &ScriptEngines::onInfoMessage);
connect(newManager.get(), &ScriptManager::printedMessage, scriptEngines, &ScriptEngines::onPrintedMessage);
connect(newManager.get(), &ScriptManager::errorMessage, scriptEngines, &ScriptEngines::onErrorMessage);
connect(newManager.get(), &ScriptManager::warningMessage, scriptEngines, &ScriptEngines::onWarningMessage);
connect(newManager.get(), &ScriptManager::infoMessage, scriptEngines, &ScriptEngines::onInfoMessage);
connect(newEngine.data(), &ScriptEngine::update, this, [this] {
// Make script engine messages available through ScriptDiscoveryService
connect(newManager.get(), &ScriptManager::infoEntityMessage, scriptEngines, &ScriptEngines::infoEntityMessage);
connect(newManager.get(), &ScriptManager::printedEntityMessage, scriptEngines, &ScriptEngines::printedEntityMessage);
connect(newManager.get(), &ScriptManager::errorEntityMessage, scriptEngines, &ScriptEngines::errorEntityMessage);
connect(newManager.get(), &ScriptManager::warningEntityMessage, scriptEngines, &ScriptEngines::warningEntityMessage);
connect(newManager.get(), &ScriptManager::infoEntityMessage,
[this](const QString& message, const QString& fileName, int lineNumber, const EntityItemID& entityID) {
addLogEntry(message, fileName, lineNumber, entityID, ScriptMessage::Severity::SEVERITY_INFO);
});
connect(newManager.get(), &ScriptManager::printedEntityMessage,
[this](const QString& message, const QString& fileName, int lineNumber, const EntityItemID& entityID) {
addLogEntry(message, fileName, lineNumber, entityID, ScriptMessage::Severity::SEVERITY_PRINT);
});
connect(newManager.get(), &ScriptManager::errorEntityMessage,
[this](const QString& message, const QString& fileName, int lineNumber, const EntityItemID& entityID) {
addLogEntry(message, fileName, lineNumber, entityID, ScriptMessage::Severity::SEVERITY_ERROR);
});
connect(newManager.get(), &ScriptManager::warningEntityMessage,
[this](const QString& message, const QString& fileName, int lineNumber, const EntityItemID& entityID) {
addLogEntry(message, fileName, lineNumber, entityID, ScriptMessage::Severity::SEVERITY_WARNING);
});
connect(newManager.get(), &ScriptManager::update, this, [this] {
_entityViewer.queryOctree();
_entityViewer.getTree()->preUpdate();
_entityViewer.getTree()->update();
});
scriptEngines->runScriptInitializers(newEngine);
newEngine->runInThread();
auto newEngineSP = qSharedPointerCast<EntitiesScriptEngineProvider>(newEngine);
scriptEngines->runScriptInitializers(newManager);
newManager->runInThread();
std::shared_ptr<EntitiesScriptEngineProvider> newEngineSP = newManager;
// On the entity script server, these are the same
DependencyManager::get<EntityScriptingInterface>()->setPersistentEntitiesScriptEngine(newEngineSP);
DependencyManager::get<EntityScriptingInterface>()->setNonPersistentEntitiesScriptEngine(newEngineSP);
if (_entitiesScriptEngine) {
disconnect(_entitiesScriptEngine.data(), &ScriptEngine::entityScriptDetailsUpdated,
if (_entitiesScriptManager) {
disconnect(_entitiesScriptManager.get(), &ScriptManager::entityScriptDetailsUpdated,
this, &EntityScriptServer::updateEntityPPS);
}
_entitiesScriptEngine.swap(newEngine);
connect(_entitiesScriptEngine.data(), &ScriptEngine::entityScriptDetailsUpdated,
_entitiesScriptManager.swap(newManager);
connect(_entitiesScriptManager.get(), &ScriptManager::entityScriptDetailsUpdated,
this, &EntityScriptServer::updateEntityPPS);
}
void EntityScriptServer::clear() {
// unload and stop the engine
if (_entitiesScriptEngine) {
if (_entitiesScriptManager) {
// do this here (instead of in deleter) to avoid marshalling unload signals back to this thread
_entitiesScriptEngine->unloadAllEntityScripts();
_entitiesScriptEngine->stop();
_entitiesScriptEngine->waitTillDoneRunning();
_entitiesScriptManager->unloadAllEntityScripts();
_entitiesScriptManager->stop();
_entitiesScriptManager->waitTillDoneRunning();
}
_entityViewer.clear();
@ -503,8 +537,8 @@ void EntityScriptServer::clear() {
}
void EntityScriptServer::shutdownScriptEngine() {
if (_entitiesScriptEngine) {
_entitiesScriptEngine->disconnectNonEssentialSignals(); // disconnect all slots/signals from the script engine, except essential
if (_entitiesScriptManager) {
_entitiesScriptManager->disconnectNonEssentialSignals(); // disconnect all slots/signals from the script engine, except essential
}
_shuttingDown = true;
@ -513,7 +547,7 @@ void EntityScriptServer::shutdownScriptEngine() {
auto scriptEngines = DependencyManager::get<ScriptEngines>();
scriptEngines->shutdownScripting();
_entitiesScriptEngine.clear();
_entitiesScriptManager.reset();
auto entityScriptingInterface = DependencyManager::get<EntityScriptingInterface>();
// our entity tree is going to go away so tell that to the EntityScriptingInterface
@ -531,8 +565,8 @@ void EntityScriptServer::addingEntity(const EntityItemID& entityID) {
}
void EntityScriptServer::deletingEntity(const EntityItemID& entityID) {
if (_entityViewer.getTree() && !_shuttingDown && _entitiesScriptEngine) {
_entitiesScriptEngine->unloadEntityScript(entityID, true);
if (_entityViewer.getTree() && !_shuttingDown && _entitiesScriptManager) {
_entitiesScriptManager->unloadEntityScript(entityID, true);
}
}
@ -543,20 +577,20 @@ void EntityScriptServer::entityServerScriptChanging(const EntityItemID& entityID
}
void EntityScriptServer::checkAndCallPreload(const EntityItemID& entityID, bool forceRedownload) {
if (_entityViewer.getTree() && !_shuttingDown && _entitiesScriptEngine) {
if (_entityViewer.getTree() && !_shuttingDown && _entitiesScriptManager) {
EntityItemPointer entity = _entityViewer.getTree()->findEntityByEntityItemID(entityID);
EntityScriptDetails details;
bool isRunning = _entitiesScriptEngine->getEntityScriptDetails(entityID, details);
bool isRunning = _entitiesScriptManager->getEntityScriptDetails(entityID, details);
if (entity && (forceRedownload || !isRunning || details.scriptText != entity->getServerScripts())) {
if (isRunning) {
_entitiesScriptEngine->unloadEntityScript(entityID, true);
_entitiesScriptManager->unloadEntityScript(entityID, true);
}
QString scriptUrl = entity->getServerScripts();
if (!scriptUrl.isEmpty()) {
scriptUrl = DependencyManager::get<ResourceManager>()->normalizeURL(scriptUrl);
_entitiesScriptEngine->loadEntityScript(entityID, scriptUrl, forceRedownload);
_entitiesScriptManager->loadEntityScript(entityID, scriptUrl, forceRedownload);
}
}
}
@ -573,13 +607,13 @@ void EntityScriptServer::sendStatsPacket() {
QJsonObject scriptEngineStats;
int numberRunningScripts = 0;
const auto scriptEngine = _entitiesScriptEngine;
if (scriptEngine) {
numberRunningScripts = scriptEngine->getNumRunningEntityScripts();
const auto scriptManager = _entitiesScriptManager;
if (scriptManager) {
numberRunningScripts = scriptManager->getNumRunningEntityScripts();
}
scriptEngineStats["number_running_scripts"] = numberRunningScripts;
statsObject["script_engine_stats"] = scriptEngineStats;
auto nodeList = DependencyManager::get<NodeList>();
QJsonObject nodesObject;

View file

@ -4,9 +4,11 @@
//
// Created by Clément Brisset on 1/5/17.
// Copyright 2013 High Fidelity, Inc.
// Copyright 2023 Overte e.V.
//
// Distributed under the Apache License, Version 2.0.
// See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
// SPDX-License-Identifier: Apache-2.0
//
#ifndef hifi_EntityScriptServer_h
@ -18,12 +20,16 @@
#include <QtCore/QObject>
#include <QtCore/QSharedPointer>
#include <QtCore/QUuid>
#include <QtCore/QSharedPointer>
#include <EntityEditPacketSender.h>
#include <plugins/CodecPlugin.h>
#include <ScriptEngine.h>
#include <SimpleEntitySimulation.h>
#include <ThreadedAssignment.h>
#include <ScriptManager.h>
#include <ScriptMessage.h>
#include <QJsonArray>
#include "../entities/EntityTreeHeadlessViewer.h"
class EntityScriptServer : public ThreadedAssignment {
@ -51,10 +57,32 @@ private slots:
void handleSettings();
void updateEntityPPS();
/**
* @brief Handles log subscribe/unsubscribe requests
*
* Clients can subscribe to logs by sending a script log packet. Entity Script Server keeps list of subscribers
* and sends them logs in JSON format.
*/
void handleEntityServerScriptLogPacket(QSharedPointer<ReceivedMessage> message, SharedNodePointer senderNode);
/**
* @brief Transmit logs
*
* This is called periodically through a timer to transmit logs from scripts.
*/
void pushLogs();
/**
* @brief Adds log entry to the transmit buffer
*
* This is connected to entity script log events in the script manager and adds script log message to the buffer
* containing messages that will be sent to subscribed clients.
*/
void addLogEntry(const QString& message, const QString& fileName, int lineNumber, const EntityItemID& entityID, ScriptMessage::Severity severity);
void handleEntityScriptCallMethodPacket(QSharedPointer<ReceivedMessage> message, SharedNodePointer senderNode);
@ -76,11 +104,14 @@ private:
bool _shuttingDown { false };
static int _entitiesScriptEngineCount;
ScriptEnginePointer _entitiesScriptEngine;
ScriptManagerPointer _entitiesScriptManager;
SimpleEntitySimulationPointer _entitySimulation;
EntityEditPacketSender _entityEditSender;
EntityTreeHeadlessViewer _entityViewer;
QJsonArray _logBuffer;
std::mutex _logBufferMutex;
int _maxEntityPPS { DEFAULT_MAX_ENTITY_PPS };
int _entityPPSPerScript { DEFAULT_ENTITY_PPS_PER_SCRIPT };

View file

@ -6,10 +6,6 @@ if (NOT "${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
message( FATAL_ERROR "Only 64 bit builds supported." )
endif()
if (USE_CCACHE OR "$ENV{USE_CCACHE}")
configure_ccache()
endif()
if (WIN32)
add_definitions(-DNOMINMAX -D_CRT_SECURE_NO_WARNINGS)

View file

@ -15,14 +15,22 @@ string(TOUPPER ${EXTERNAL_NAME} EXTERNAL_NAME_UPPER)
if (WIN32)
# Note the -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
# It's important that we pass our build type down to other builds we make, especially on Windows.
# On Windows, debug libraries get a 'd' suffix, eg, LibOVRd.lib. This means that a mismatch of build
# types means we'll generate a LibOVRd.lib and the rest of the system will look for LibOVR.lib, or
# viceversa.
ExternalProject_Add(
${EXTERNAL_NAME}
URL "${EXTERNAL_BUILD_ASSETS}/dependencies/ovr_sdk_win_1.35.0.zip"
URL_MD5 1e3e8b2101387af07ff9c841d0ea285e
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR>
CMAKE_ARGS -DCMAKE_INSTALL_PREFIX:PATH=<INSTALL_DIR> -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
PATCH_COMMAND ${CMAKE_COMMAND} -E copy "${CMAKE_CURRENT_SOURCE_DIR}/LibOVRCMakeLists.txt" <SOURCE_DIR>/CMakeLists.txt
LOG_DOWNLOAD 1
DOWNLOAD_EXTRACT_TIMESTAMP 1
BUILD_BYPRODUCTS
"project/Lib/LibOVR.lib"
"project/Lib/LibOVRd.lib"
)
ExternalProject_Get_Property(${EXTERNAL_NAME} SOURCE_DIR)

View file

@ -1,6 +1,8 @@
cmake_minimum_required(VERSION 3.2)
cmake_minimum_required(VERSION 3.20)
project(LibOVR)
message(STATUS "Building LibOVR for ${CMAKE_BUILD_TYPE} configuration")
include_directories(LibOVR/Include LibOVR/Src)
file(GLOB HEADER_FILES LibOVR/Include/*.h)
file(GLOB EXTRA_HEADER_FILES LibOVR/Include/Extras/*.h)

View file

@ -16,6 +16,8 @@ if (WIN32)
INSTALL_COMMAND ""
LOG_DOWNLOAD 1
DOWNLOAD_EXTRACT_TIMESTAMP 1
BUILD_BYPRODUCTS
"project/src/LibOVRPlatform/Windows/LibOVRPlatform64_1.lib"
)
ExternalProject_Get_Property(${EXTERNAL_NAME} SOURCE_DIR)

View file

@ -13,6 +13,13 @@ if (WIN32)
INSTALL_COMMAND ""
LOG_DOWNLOAD 1
DOWNLOAD_EXTRACT_TIMESTAMP 1
BUILD_BYPRODUCTS
"project/src/crashpad/out/Release_x64/lib_MD/crashpad_client.lib"
"project/src/crashpad/out/Release_x64/lib_MD/crashpad_util.lib"
"project/src/crashpad/out/Release_x64/lib_MD/base.lib"
"project/src/crashpad/out/Debug_x64/lib_MD/crashpad_client.lib"
"project/src/crashpad/out/Debug_x64/lib_MD/crashpad_util.lib"
"project/src/crashpad/out/Debug_x64/lib_MD/base.lib"
)
ExternalProject_Get_Property(${EXTERNAL_NAME} SOURCE_DIR)

View file

@ -4,18 +4,82 @@ set(EXTERNAL_NAME steamworks)
string(TOUPPER ${EXTERNAL_NAME} EXTERNAL_NAME_UPPER)
set(STEAMWORKS_URL "${EXTERNAL_BUILD_ASSETS}/dependencies/steamworks_sdk_137.zip")
set(STEAMWORKS_URL_MD5 "95ba9d0e3ddc04f8a8be17d2da806cbb")
set(STEAMWORKS_URL "${EXTERNAL_BUILD_ASSETS}/dependencies/steamworks_sdk_158a.zip")
set(STEAMWORKS_URL_SHA512 "fe906a7510a2125ab1441ad349e8bc31fafc9ab8130ec3843287e615a850305a8ed303e8d9e5bae4fee06024987834fb9f64c6c10d3da3784267a4906e59c831")
# Ninja needs to know all the files that result from this upfront, so we need to tell it what files this is going
# to generate with BUILD_BYPRODUCTS. We need to include all the files that are going to be referenced from elsewhere
# in the build.
#
# This should include both libraries and headers, since from the point of view of the build, those are the outputs
# of the project, even though we're not actually building anything here, and just unzipping an existing binary.
#
# I believe this list can't be obtained automatically from the compressed file, and needs to be generated by hand.
# Steam SDK .zip has a sdk/ subdirectory, but for ExternalProject, this gets turned into project/src/steamworks.
# So inside the SDK, sdk/redistributable_bin/steam_api.dll becomes project/src/steamworks/redistributable_bin/steam_api.dll
# This can be seen under $BUILD_DIR/ext.
ExternalProject_Add(
${EXTERNAL_NAME}
URL ${STEAMWORKS_URL}
URL_MD5 ${STEAMWORKS_URL_MD5}
URL_HASH SHA512=${STEAMWORKS_URL_SHA512}
CONFIGURE_COMMAND ""
BUILD_COMMAND ""
INSTALL_COMMAND ""
LOG_DOWNLOAD 1
DOWNLOAD_EXTRACT_TIMESTAMP 1
BUILD_BYPRODUCTS
"project/src/steamworks/redistributable_bin/win64/steam_api64.lib"
"project/src/steamworks/redistributable_bin/win64/steam_api64.dll"
"project/src/steamworks/redistributable_bin/osx/steam_api.dylib"
"project/src/steamworks/redistributable_bin/linux64/libsteam_api.so"
"project/src/steamworks/redistributable_bin/linux32/libsteam_api.so"
"project/src/steamworks/redistributable_bin/steam_api.lib"
"project/src/steamworks/redistributable_bin/steam_api.dll"
"project/src/steamworks/public/steam/isteamapplist.h"
"project/src/steamworks/public/steam/isteamapps.h"
"project/src/steamworks/public/steam/isteamappticket.h"
"project/src/steamworks/public/steam/isteamclient.h"
"project/src/steamworks/public/steam/isteamcontroller.h"
"project/src/steamworks/public/steam/isteamdualsense.h"
"project/src/steamworks/public/steam/isteamfriends.h"
"project/src/steamworks/public/steam/isteamgamecoordinator.h"
"project/src/steamworks/public/steam/isteamgameserver.h"
"project/src/steamworks/public/steam/isteamgameserverstats.h"
"project/src/steamworks/public/steam/isteamhtmlsurface.h"
"project/src/steamworks/public/steam/isteamhttp.h"
"project/src/steamworks/public/steam/isteaminput.h"
"project/src/steamworks/public/steam/isteaminventory.h"
"project/src/steamworks/public/steam/isteammatchmaking.h"
"project/src/steamworks/public/steam/isteammusic.h"
"project/src/steamworks/public/steam/isteammusicremote.h"
"project/src/steamworks/public/steam/isteamnetworking.h"
"project/src/steamworks/public/steam/isteamnetworkingmessages.h"
"project/src/steamworks/public/steam/isteamnetworkingsockets.h"
"project/src/steamworks/public/steam/isteamnetworkingutils.h"
"project/src/steamworks/public/steam/isteamparentalsettings.h"
"project/src/steamworks/public/steam/isteamps3overlayrenderer.h"
"project/src/steamworks/public/steam/isteamremoteplay.h"
"project/src/steamworks/public/steam/isteamremotestorage.h"
"project/src/steamworks/public/steam/isteamscreenshots.h"
"project/src/steamworks/public/steam/isteamugc.h"
"project/src/steamworks/public/steam/isteamuser.h"
"project/src/steamworks/public/steam/isteamuserstats.h"
"project/src/steamworks/public/steam/isteamutils.h"
"project/src/steamworks/public/steam/isteamvideo.h"
"project/src/steamworks/public/steam/matchmakingtypes.h"
"project/src/steamworks/public/steam/steam_api_common.h"
"project/src/steamworks/public/steam/steam_api_flat.h"
"project/src/steamworks/public/steam/steam_api.h"
"project/src/steamworks/public/steam/steam_api_internal.h"
"project/src/steamworks/public/steam/steamclientpublic.h"
"project/src/steamworks/public/steam/steamencryptedappticket.h"
"project/src/steamworks/public/steam/steam_gameserver.h"
"project/src/steamworks/public/steam/steamhttpenums.h"
"project/src/steamworks/public/steam/steamnetworkingfakeip.h"
"project/src/steamworks/public/steam/steamnetworkingtypes.h"
"project/src/steamworks/public/steam/steamps3params.h"
"project/src/steamworks/public/steam/steamtypes.h"
"project/src/steamworks/public/steam/steamuniverse.h"
)
set_target_properties(${EXTERNAL_NAME} PROPERTIES FOLDER "hidden/externals")

View file

@ -27,6 +27,11 @@ macro(add_crashpad)
set(CMAKE_BACKTRACE_TOKEN $ENV{CMAKE_BACKTRACE_TOKEN})
endif()
if (CMAKE_SYSTEM_NAME STREQUAL "Linux" AND CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
message(STATUS "Checking crashpad config - Linux aarch64 is not supported by crashpad, disabled.")
set(USE_CRASHPAD FALSE)
endif()
if (USE_CRASHPAD)
message(STATUS "Checking crashpad config - enabled.")
get_property(CRASHPAD_CHECKED GLOBAL PROPERTY CHECKED_FOR_CRASHPAD_ONCE)

0
cmake/macros/AutoScribeShader.cmake Executable file → Normal file
View file

View file

@ -1,45 +0,0 @@
#
# ConfigureCCache.cmake
# cmake/macros
#
# Created by Clement Brisset on 10/10/18.
# Copyright 2018 High Fidelity, Inc.
#
# Distributed under the Apache License, Version 2.0.
# See the accompanying file LICENSE or http:#www.apache.org/licenses/LICENSE-2.0.html
#
macro(configure_ccache)
find_program(CCACHE_PROGRAM ccache)
if(CCACHE_PROGRAM)
message(STATUS "Configuring ccache")
# Set up wrapper scripts
set(C_LAUNCHER "${CCACHE_PROGRAM}")
set(CXX_LAUNCHER "${CCACHE_PROGRAM}")
set(LAUNCH_C_IN "${CMAKE_CURRENT_SOURCE_DIR}/cmake/templates/launch-c.in")
set(LAUNCH_CXX_IN "${CMAKE_CURRENT_SOURCE_DIR}/cmake/templates/launch-cxx.in")
set(LAUNCH_C "${CMAKE_BINARY_DIR}/CMakeFiles/launch-c")
set(LAUNCH_CXX "${CMAKE_BINARY_DIR}/CMakeFiles/launch-cxx")
configure_file(${LAUNCH_C_IN} ${LAUNCH_C})
configure_file(${LAUNCH_CXX_IN} ${LAUNCH_CXX})
execute_process(COMMAND chmod a+rx ${LAUNCH_C} ${LAUNCH_CXX})
if(CMAKE_GENERATOR STREQUAL "Xcode")
# Set Xcode project attributes to route compilation and linking
# through our scripts
set(CMAKE_XCODE_ATTRIBUTE_CC ${LAUNCH_C})
set(CMAKE_XCODE_ATTRIBUTE_CXX ${LAUNCH_CXX})
set(CMAKE_XCODE_ATTRIBUTE_LD ${LAUNCH_C})
set(CMAKE_XCODE_ATTRIBUTE_LDPLUSPLUS ${LAUNCH_CXX})
else()
# Support Unix Makefiles and Ninja
set(CMAKE_C_COMPILER_LAUNCHER ${LAUNCH_C})
set(CMAKE_CXX_COMPILER_LAUNCHER ${LAUNCH_CXX})
endif()
else()
message(WARNING "Could not find ccache")
endif()
endmacro()

View file

@ -20,13 +20,13 @@ macro(manually_install_openssl_for_qt)
find_package(OpenSSL REQUIRED)
install(
FILES "${VCPKG_INSTALL_ROOT}/bin/libcrypto-1_1-x64.dll"
FILES "${VCPKG_INSTALL_ROOT}/bin/libcrypto-3-x64.dll"
DESTINATION ${TARGET_INSTALL_DIR}
COMPONENT ${TARGET_INSTALL_COMPONENT}
)
install(
FILES "${VCPKG_INSTALL_ROOT}/bin/libssl-1_1-x64.dll"
FILES "${VCPKG_INSTALL_ROOT}/bin/libssl-3-x64.dll"
DESTINATION ${TARGET_INSTALL_DIR}
COMPONENT ${TARGET_INSTALL_COMPONENT}
)

View file

@ -2,9 +2,11 @@
# MemoryDebugger.cmake
#
# Copyright 2015 High Fidelity, Inc.
# Copyright 2023 Overte e.V.
#
# Distributed under the Apache License, Version 2.0.
# See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
# SPDX-License-Identifier: Apache-2.0
#
macro(SETUP_MEMORY_DEBUGGER)
@ -13,10 +15,25 @@ if ("$ENV{OVERTE_MEMORY_DEBUGGING}")
message(FATAL_ERROR "Thread debugging and memory debugging can't be enabled at the same time." )
endif()
if (OVERTE_OPTIMIZE)
message(WARNING "You should consider building without optimization by passing -DOVERTE_OPTIMIZE=false to CMake")
endif()
if (NOT CMAKE_BUILD_TYPE MATCHES "Debug")
message(WARNING "You should consider building with debugging enabled by passing -DCMAKE_BUILD_TYPE=Debug to CMake. Current type is ${CMAKE_BUILD_TYPE}")
endif()
SET( OVERTE_MEMORY_DEBUGGING true )
SET ( DISABLE_WEBRTC true )
endif ()
if (OVERTE_MEMORY_DEBUGGING)
if ( OVERTE_MEMORY_DEBUGGING)
# WebRTC doesn't work with memory debugging enabled, it fails to link:
# /usr/bin/ld: ../../libraries/networking/libnetworking.so: undefined reference to `typeinfo for rtc::Thread'
# /usr/bin/ld: ../../libraries/networking/libnetworking.so: undefined reference to `typeinfo for webrtc::SessionDescriptionInterface'
# /usr/bin/ld: ../../libraries/networking/libnetworking.so: undefined reference to `typeinfo for webrtc::IceCandidateInterface'
add_compile_definitions(DISABLE_WEBRTC)
if (CMAKE_CXX_COMPILER_ID MATCHES "Clang")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-omit-frame-pointer -fsanitize=undefined -fsanitize=address -fsanitize-recover=address")
SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -fsanitize=undefined -fsanitize=address -fsanitize-recover=address")

View file

@ -23,7 +23,6 @@ macro(SET_PACKAGING_PARAMETERS)
set_from_env(RELEASE_TYPE RELEASE_TYPE "DEV")
set_from_env(RELEASE_NUMBER RELEASE_NUMBER "")
set_from_env(RELEASE_NAME RELEASE_NAME "")
set_from_env(STABLE_BUILD STABLE_BUILD 0)
set_from_env(PRELOADED_STARTUP_LOCATION PRELOADED_STARTUP_LOCATION "")

View file

@ -0,0 +1,6 @@
macro(TARGET_DISCORD_RPC)
find_library(DISCORD_RPC_LIBRARY_RELEASE discord-rpc PATHS ${VCPKG_INSTALL_ROOT}/lib)
find_library(DISCORD_RPC_LIBRARY_DEBUG discord-rpc PATHS ${VCPKG_INSTALL_ROOT}/debug/lib)
select_library_configurations(DISCORD_RPC)
target_link_libraries(${TARGET_NAME} ${DISCORD_RPC_LIBRARY})
endmacro()

0
cmake/macros/TargetDraco.cmake Executable file → Normal file
View file

View file

@ -14,36 +14,38 @@ macro(TARGET_OPENEXR)
TMP
REGEX "#define OPENEXR_VERSION_STRING.*$")
string(REGEX MATCHALL "[0-9.]+" OPENEXR_VERSION ${TMP})
file(STRINGS
${openexr_config_file}
TMP
REGEX "#define OPENEXR_VERSION_MAJOR.*$")
string(REGEX MATCHALL "[0-9]" OPENEXR_MAJOR_VERSION ${TMP})
file(STRINGS
${openexr_config_file}
TMP
REGEX "#define OPENEXR_VERSION_MINOR.*$")
string(REGEX MATCHALL "[0-9]" OPENEXR_MINOR_VERSION ${TMP})
else()
message(WARNING "Failed to find ${openexr_config_file}")
endif()
set(OPENEXR_LIBRARY_RELEASE "")
set(OPENEXR_LIBRARY_DEBUG "")
foreach(OPENEXR_LIB
IlmImf
IlmImfUtil
Half
OpenEXRCore
OpenEXR
OpenEXRUtil
Iex
IexMath
IlmThread
Imath
IlmThread)
)
# OpenEXR libraries may be suffixed with the version number, so we search
# using both versioned and unversioned names.
find_library(OPENEXR_${OPENEXR_LIB}_LIBRARY_RELEASE
NAMES
${OPENEXR_LIB}-${OPENEXR_MAJOR_VERSION}_${OPENEXR_MINOR_VERSION}_s
${OPENEXR_LIB}-${OPENEXR_MAJOR_VERSION}_${OPENEXR_MINOR_VERSION}
${OPENEXR_LIB}_s
PATHS ${VCPKG_INSTALL_ROOT}/lib NO_DEFAULT_PATH
@ -52,13 +54,15 @@ macro(TARGET_OPENEXR)
if(OPENEXR_${OPENEXR_LIB}_LIBRARY_RELEASE)
list(APPEND OPENEXR_LIBRARY_RELEASE ${OPENEXR_${OPENEXR_LIB}_LIBRARY_RELEASE})
else()
message(WARNING "Failed to find ${OPENEXR_LIB} (release); ${OPENEXR_LIB}-${OPENEXR_MAJOR_VERSION}_${OPENEXR_MINOR_VERSION}")
endif()
# OpenEXR libraries may be suffixed with the version number, so we search
# using both versioned and unversioned names.
find_library(OPENEXR_${OPENEXR_LIB}_LIBRARY_DEBUG
NAMES
${OPENEXR_LIB}-${OPENEXR_MAJOR_VERSION}_${OPENEXR_MINOR_VERSION}_s_d
${OPENEXR_LIB}-${OPENEXR_MAJOR_VERSION}_${OPENEXR_MINOR_VERSION}_d
${OPENEXR_LIB}_s_d
PATHS ${VCPKG_INSTALL_ROOT}/debug/lib NO_DEFAULT_PATH
@ -67,10 +71,19 @@ macro(TARGET_OPENEXR)
if(OPENEXR_${OPENEXR_LIB}_LIBRARY_DEBUG)
list(APPEND OPENEXR_LIBRARY_DEBUG ${OPENEXR_${OPENEXR_LIB}_LIBRARY_DEBUG})
else()
message(WARNING "Failed to find ${OPENEXR_LIB} (debug); ${OPENEXR_LIB}-${OPENEXR_MAJOR_VERSION}_${OPENEXR_MINOR_VERSION}_d")
endif()
endforeach(OPENEXR_LIB)
select_library_configurations(OPENEXR)
target_link_libraries(${TARGET_NAME} ${OPENEXR_LIBRARY})
target_include_directories(${TARGET_NAME} PUBLIC "${VCPKG_INSTALL_ROOT}/include/Imath")
# This prevents:
# LNK2001 unresolved external symbol imath_half_to_float_table
#
# Apparently something changed in newer versions.
target_compile_definitions(${TARGET_NAME} PUBLIC IMATH_HALF_NO_LOOKUP_TABLE)
endif()
endmacro()

View file

@ -0,0 +1,15 @@
#
# Copyright 2022-2023 Overte e.V.
# Created by dr Karol Suprynowicz on 2022/09/03
#
# Distributed under the Apache License, Version 2.0.
# See the accompanying file LICENSE or http://www.apache.org/licenses/LICENSE-2.0.html
# SPDX-License-Identifier: Apache-2.0
#
macro(TARGET_V8)
find_package(V8 REQUIRED)
target_include_directories(${TARGET_NAME} PUBLIC ${V8_INCLUDE_DIRS})
target_link_libraries(${TARGET_NAME} ${V8_LIBRARIES})
endmacro()

481
cmake/modules/FindV8.cmake Normal file
View file

@ -0,0 +1,481 @@
#
# CMake Find V8 Google JavaScript Engine by Parra Studios
# CMake script to find V8 JavaScript Engine.
#
# Copyright (C) 2016 - 2022 Vicente Eduardo Ferrer Garcia <vic798@gmail.com>
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Modified by dr Karol Suprynowicz on 2022/09/03
# Copyright 2022-2023 Overte e.V.
# SPDX-License-Identifier: Apache-2.0
# Find V8 library and include paths
#
# V8_FOUND - True if V8 was found
# V8_INCLUDE_DIR - V8 headers path
# V8_LIBRARIES - List of V8 libraries
# V8_VERSION - V8 version
# V8_VERSION_MAJOR - V8 major version
# V8_VERSION_MINOR - V8 minor version
# V8_VERSION_PATCH - V8 patch version
# V8_VERSION_TWEAK - V8 patch version
# V8_VERSION_HEX - V8 version in hexadecimal format
# V8_EXECUTABLE - V8 shell
# Prevent vervosity if already included
if(V8_INCLUDE_DIR)
set(V8_FIND_QUIETLY TRUE)
endif()
# Debug flag
set(_V8_CMAKE_DEBUG TRUE)
# Include package manager
include(FindPackageHandleStandardArgs)
# V8 search paths
set(V8_PATHS
${VCPKG_INSTALL_ROOT}
${V8_HOME}
${V8_ROOT}
$ENV{ProgramFiles}/v8
$ENV{SystemDrive}/v8
$ENV{V8_HOME}
$ENV{EXTERNLIBS}/v8
${V8_DIR}
$ENV{V8_DIR}
~/Library/Frameworks
/Library/Frameworks
/usr/local
/usr
/sw # Fink
/opt/local # DarwinPorts
/opt/csw # Blastwave
/opt
/usr/freeware
)
# V8 platform dependant paths
if(NOT UNIX)
set(V8_PATHS_DEBUG
${V8_DIR}/build/Debug
)
set(V8_PATHS_RELEASE
${V8_DIR}/build/Release
)
else()
set(V8_PATHS_DEBUG
${V8_DIR}/out/ia32.debug
${V8_DIR}/out/x64.debug
${V8_DIR}/out/native
)
set(V8_PATHS_RELEASE
${V8_DIR}/out/ia32.release
${V8_DIR}/out/x64.release
${V8_DIR}/out/native
)
endif()
# V8 library paths
#set(V8_LIBRARY_PATH_SUFFIXES lib lib64 lib/x86_64-linux-gnu lib.target)
# Find include path
if(MSVC OR CMAKE_BUILD_TYPE EQUAL "Debug")
set(V8_HEADERS v8.h v8-debug.h v8-profiler.h v8stdint.h)
else()
set(V8_HEADERS v8.h v8stdint.h)
endif()
find_path(V8_INCLUDE_DIR ${V8_HEADERS}
PATHS ${V8_PATHS}
PATH_SUFFIXES include include/node
DOC "Google V8 JavaScript Engine Headers"
)
MESSAGE("V8 include dir: ${V8_INCLUDE_DIR}")
# Define library names
set(V8_NAMES_DEBUG libnode.so.108 libnode libnode.so libnode.lib v8D v8_baseD v8_base.ia32D v8_base.x64D libv8_baseD v8_baseD.lib v8_libbaseD v8_libbase.ia32D v8_libbase.x64D libv8_libbaseD v8_libbaseD.lib)
set(V8_NAMES_RELEASE libnode.so.108 libnode libnode.so libnode.lib v8 v8_base v8_base.ia32 v8_base.x64 libv8_base v8_base.lib v8_libbase v8_libbase.ia32 v8_libbase.x64 libv8_libbase v8_libbase.lib)
set(V8_PLATFORM_NAMES_DEBUG libnode.so.108 v8_libplatform.lib libnode libnode.so libnode.lib v8_libplatformD v8_libplatformD.a v8_libplatformD.lib)
set(V8_PLATFORM_NAMES_RELEASE libnode.so.108 v8_libplatform.lib libnode libnode.so libnode.lib v8_libplatform v8_libplatform.a)
set(V8_SAMPLER_NAMES_DEBUG libnode.so.108 libnode libnode.so libnode.lib v8_libsamplerD v8_libsamplerD.a v8_libsamplerD.lib)
set(V8_SAMPLER_NAMES_RELEASE libnode.so.108 libnode libnode.so libnode.lib v8_libsampler v8_libsampler.a v8_libsampler.lib)
set(V8_SNAPSHOT_NAMES_DEBUG libnode.so.108 libnode libnode.so libnode.lib v8_snapshotD libv8_snapshotD v8_snapshotD.lib)
set(V8_SNAPSHOT_NAMES_RELEASE libnode.so.108 libnode libnode.so libnode.lib v8_snapshot libv8_snapshot v8_snapshot.lib)
set(V8_ICU_NAMES_DEBUG libnode.so.108 libnode libnode.so libnode.lib icudataD icudataD.a icudataD.lib)
set(V8_ICU_NAMES_RELEASE libnode.so.108 libnode libnode.so libnode.lib icudata icudata.a icudata.lib)
set(V8_ICUUC_NAMES_DEBUG libnode.so.108 libnode libnode.so libnode.lib icuucD libicuucD)
set(V8_ICUUC_NAMES_RELEASE libnode.so.108 libnode libnode.so libnode.lib icuuc libicuuc)
set(V8_ICUI18N_NAMES_DEBUG libnode.so.108 libnode libnode.so libnode.lib icui18nD libicui18nD)
set(V8_ICUI18N_NAMES_RELEASE libnode.so.108 libnode libnode.so libnode.lib icui18n libicui18n)
# Find V8 base library debug
find_library(V8_LIBRARY_DEBUG
NAMES ${V8_NAMES_DEBUG}
PATHS ${V8_PATHS} ${V8_PATHS_DEBUG}
PATH_SUFFIXES ${V8_LIBRARY_PATH_SUFFIXES}
DOC "Google V8 JavaScript Engine Library (Debug)"
)
MESSAGE("V8_LIBRARY_DEBUG: ${V8_LIBRARY_DEBUG}")
# Find V8 base library release
find_library(V8_LIBRARY_RELEASE
NAMES ${V8_NAMES_RELEASE}
PATHS ${V8_PATHS} ${V8_PATHS_RELEASE}
PATH_SUFFIXES ${V8_LIBRARY_PATH_SUFFIXES}
DOC "Google V8 JavaScript Engine Library (Release)"
)
MESSAGE("V8_LIBRARY_RELEASE: ${V8_LIBRARY_RELEASE}")
# Find V8 platform library debug
find_library(V8_PLATFORM_LIBRARY_DEBUG
NAMES ${V8_PLATFORM_NAMES_DEBUG}
PATHS ${V8_PATHS} ${V8_PATHS_DEBUG}
PATH_SUFFIXES ${V8_LIBRARY_PATH_SUFFIXES}
DOC "Google V8 JavaScript Engine Library Platform (Debug)"
)
MESSAGE("V8_PLATFORM_LIBRARY_DEBUG: ${V8_PLATFORM_LIBRARY_DEBUG}")
# Find V8 platform library release
find_library(V8_PLATFORM_LIBRARY_RELEASE
NAMES ${V8_PLATFORM_NAMES_RELEASE}
PATHS ${V8_PATHS} ${V8_PATHS_RELEASE}
PATH_SUFFIXES ${V8_LIBRARY_PATH_SUFFIXES}
DOC "Google V8 JavaScript Engine Library Platform (Release)"
)
MESSAGE("V8_PLATFORM_LIBRARY_RELEASE: ${V8_PLATFORM_LIBRARY_RELEASE}")
# Find V8 platform library debug
find_library(V8_SAMPLER_LIBRARY_DEBUG
NAMES ${V8_SAMPLER_NAMES_DEBUG}
PATHS ${V8_PATHS} ${V8_PATHS_DEBUG}
PATH_SUFFIXES ${V8_LIBRARY_PATH_SUFFIXES}
DOC "Google V8 JavaScript Engine Library Sampler (Debug)"
)
MESSAGE("V8_SAMPLER_LIBRARY_DEBUG: ${V8_SAMPLER_LIBRARY_DEBUG}")
# Find V8 platform library release
find_library(V8_SAMPLER_LIBRARY_RELEASE
NAMES ${V8_SAMPLER_NAMES_RELEASE}
PATHS ${V8_PATHS} ${V8_PATHS_RELEASE}
PATH_SUFFIXES ${V8_LIBRARY_PATH_SUFFIXES}
DOC "Google V8 JavaScript Engine Library Sampler (Release)"
)
MESSAGE("V8_SAMPLER_LIBRARY_RELEASE: ${V8_SAMPLER_LIBRARY_RELEASE}")
# Find V8 snapshot library debug
find_library(V8_SNAPSHOT_LIBRARY_DEBUG
NAMES ${V8_SNAPSHOT_NAMES_DEBUG}
PATHS ${V8_PATHS} ${V8_PATHS_DEBUG}
PATH_SUFFIXES ${V8_LIBRARY_PATH_SUFFIXES}
DOC "Google V8 JavaScript Engine Library Snapshot (Debug)"
)
MESSAGE("V8_SNAPSHOT_LIBRARY_DEBUG: ${V8_SNAPSHOT_LIBRARY_DEBUG}")
# Find V8 snapshot library release
find_library(V8_SNAPSHOT_LIBRARY_RELEASE
NAMES ${V8_SNAPSHOT_NAMES_RELEASE}
PATHS ${V8_PATHS} ${V8_PATHS_RELEASE}
PATH_SUFFIXES ${V8_LIBRARY_PATH_SUFFIXES}
DOC "Google V8 JavaScript Engine Library Snapshot (Release)"
)
MESSAGE("V8_SNAPSHOT_LIBRARY_RELEASE: ${V8_SNAPSHOT_LIBRARY_RELEASE}")
# Find V8 icu library debug
find_library(V8_ICU_LIBRARY_DEBUG
NAMES ${V8_ICU_NAMES_DEBUG}
PATHS ${V8_PATHS} ${V8_PATHS_DEBUG}
PATH_SUFFIXES ${V8_LIBRARY_PATH_SUFFIXES}
DOC "Google V8 JavaScript Engine Library ICU (Debug)"
)
MESSAGE("V8_ICU_LIBRARY_DEBUG: ${V8_ICU_LIBRARY_DEBUG}")
# Find V8 icu library release
find_library(V8_ICU_LIBRARY_RELEASE
NAMES ${V8_ICU_NAMES_RELEASE}
PATHS ${V8_PATHS} ${V8_PATHS_RELEASE}
PATH_SUFFIXES ${V8_LIBRARY_PATH_SUFFIXES}
DOC "Google V8 JavaScript Engine Library ICU (Release)"
)
MESSAGE("V8_ICU_LIBRARY_RELEASE: ${V8_ICU_LIBRARY_RELEASE}")
# Find V8 icuuc library debug
find_library(V8_ICUUC_LIBRARY_DEBUG
NAMES ${V8_ICUUC_NAMES_DEBUG}
PATHS ${V8_PATHS} ${V8_PATHS_DEBUG}
PATH_SUFFIXES ${V8_LIBRARY_PATH_SUFFIXES}
DOC "Google V8 JavaScript Engine Library ICUUC (Debug)"
)
MESSAGE("V8_ICUUC_LIBRARY_DEBUG: ${V8_ICUUC_LIBRARY_DEBUG}")
# Find V8 icuuc library release
find_library(V8_ICUUC_LIBRARY_RELEASE
NAMES ${V8_ICUUC_NAMES_RELEASE}
PATHS ${V8_PATHS} ${V8_PATHS_RELEASE}
PATH_SUFFIXES ${V8_LIBRARY_PATH_SUFFIXES}
DOC "Google V8 JavaScript Engine Library ICUUC (Release)"
)
MESSAGE("V8_ICUUC_LIBRARY_RELEASE: ${V8_ICUUC_LIBRARY_RELEASE}")
# Find V8 icui18n library debug
find_library(V8_ICUI18N_LIBRARY_DEBUG
NAMES ${V8_ICUI18N_NAMES_DEBUG}
PATHS ${V8_PATHS} ${V8_PATHS_DEBUG}
PATH_SUFFIXES ${V8_LIBRARY_PATH_SUFFIXES}
DOC "Google V8 JavaScript Engine Library ICUI18N (Debug)"
)
MESSAGE("V8_ICUI18N_LIBRARY_DEBUG: ${V8_ICUI18N_LIBRARY_DEBUG}")
# Find V8 icui18n library release
find_library(V8_ICUI18N_LIBRARY_RELEASE
NAMES ${V8_ICUI18N_NAMES_RELEASE}
PATHS ${V8_PATHS} ${V8_PATHS_RELEASE}
PATH_SUFFIXES ${V8_LIBRARY_PATH_SUFFIXES}
DOC "Google V8 JavaScript Engine Library ICUI18N (Release)"
)
MESSAGE("V8_ICUI18N_LIBRARY_RELEASE: ${V8_ICUI18N_LIBRARY_RELEASE}")
# Base build with snapshot
MESSAGE("1")
if(MSVC)
if(V8_LIBRARY_DEBUG AND V8_LIBRARY_RELEASE AND V8_SNAPSHOT_LIBRARY_DEBUG AND V8_SNAPSHOT_LIBRARY_RELEASE)
set(V8_LIBRARY
${V8_LIBRARY_DEBUG} ${V8_PLATFORM_LIBRARY_DEBUG} ${V8_SNAPSHOT_LIBRARY_DEBUG} # ${V8_ICU_LIBRARY_DEBUG}
${V8_LIBRARY_RELEASE} ${V8_PLATFORM_LIBRARY_RELEASE} ${V8_SNAPSHOT_LIBRARY_RELEASE} # ${V8_ICU_LIBRARY_RELEASE}
)
set(V8_LIBRARIES
optimized ${V8_LIBRARY_RELEASE} debug ${V8_LIBRARY_DEBUG}
optimized ${V8_PLATFORM_LIBRARY_RELEASE} debug ${V8_PLATFORM_LIBRARY_DEBUG}
# optimized ${V8_ICU_LIBRARY_RELEASE} debug ${V8_ICU_LIBRARY_DEBUG}
optimized ${V8_SNAPSHOT_LIBRARY_RELEASE} debug ${V8_SNAPSHOT_LIBRARY_DEBUG}
optimized Winmm.lib debug Winmm.lib
)
endif()
else()
MESSAGE("2")
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
MESSAGE("3")
if(V8_LIBRARY_DEBUG AND V8_PLATFORM_LIBRARY_DEBUG AND V8_SAMPLER_LIBRARY_DEBUG)
set(V8_LIBRARY ${V8_LIBRARY_DEBUG} ${V8_PLATFORM_LIBRARY_DEBUG} ${V8_SAMPLER_LIBRARY_DEBUG}) # ${V8_ICU_LIBRARY_DEBUG})
elseif(V8_LIBRARY_DEBUG AND V8_PLATFORM_LIBRARY_DEBUG)
MESSAGE("4")
set(V8_LIBRARY ${V8_LIBRARY_DEBUG} ${V8_PLATFORM_LIBRARY_DEBUG}) # ${V8_SAMPLER_LIBRARY_DEBUG}) # ${V8_ICU_LIBRARY_DEBUG})
else()
if(V8_LIBRARY_RELEASE AND V8_PLATFORM_LIBRARY_RELEASE AND V8_SAMPLER_LIBRARY_RELEASE)
set(V8_LIBRARY ${V8_LIBRARY_RELEASE} ${V8_PLATFORM_LIBRARY_RELEASE} ${V8_SAMPLER_LIBRARY_RELEASE}) # ${V8_ICU_LIBRARY_DEBUG})
elseif(V8_LIBRARY_RELEASE AND V8_PLATFORM_LIBRARY_RELEASE)
set(V8_LIBRARY ${V8_LIBRARY_RELEASE} ${V8_PLATFORM_LIBRARY_RELEASE}) # ${V8_SAMPLER_LIBRARY_RELEASE}) # ${V8_ICU_LIBRARY_DEBUG})
endif()
endif()
else()
if(V8_LIBRARY_RELEASE AND V8_PLATFORM_LIBRARY_RELEASE AND V8_SAMPLER_LIBRARY_RELEASE)
set(V8_LIBRARY ${V8_LIBRARY_RELEASE} ${V8_PLATFORM_LIBRARY_RELEASE} ${V8_SAMPLER_LIBRARY_RELEASE}) # ${V8_ICU_LIBRARY_RELEASE})
elseif(V8_LIBRARY_RELEASE AND V8_PLATFORM_LIBRARY_RELEASE )
set(V8_LIBRARY ${V8_LIBRARY_RELEASE} ${V8_PLATFORM_LIBRARY_RELEASE} ) # ${V8_SAMPLER_LIBRARY_RELEASE} ${V8_ICU_LIBRARY_RELEASE})
endif()
endif()
set(V8_LIBRARIES ${V8_LIBRARY})
endif()
# Set version libraries
set(V8_LIBRARIES_DEPENDS)
if (V8_LIBRARY_DEBUG)
set(V8_LIBRARIES_DEPENDS
${V8_LIBRARIES_DEPENDS}
${V8_LIBRARY_DEBUG}.${V8_FIND_VERSION}
)
endif()
if (V8_LIBRARY_RELEASE)
set(V8_LIBRARIES_DEPENDS
${V8_LIBRARIES_DEPENDS}
${V8_LIBRARY_RELEASE}.${V8_FIND_VERSION}
)
endif()
if(V8_ICU_LIBRARY_DEBUG)
set(V8_LIBRARIES_DEPENDS
${V8_LIBRARIES_DEPENDS}
${V8_ICU_LIBRARY_DEBUG}.${ICU_FIND_VERSION}
)
endif()
if(V8_ICU_LIBRARY_RELEASE)
set(V8_LIBRARIES_DEPENDS
${V8_LIBRARIES_DEPENDS}
${V8_ICU_LIBRARY_RELEASE}.${ICU_FIND_VERSION}
)
endif()
if(V8_ICUUC_LIBRARY_DEBUG)
set(V8_LIBRARIES_DEPENDS
${V8_LIBRARIES_DEPENDS}
${V8_ICUUC_LIBRARY_DEBUG}.${ICU_FIND_VERSION}
)
endif()
if(V8_ICUUC_LIBRARY_RELEASE)
set(V8_LIBRARIES_DEPENDS
${V8_LIBRARIES_DEPENDS}
${V8_ICUUC_LIBRARY_RELEASE}.${ICU_FIND_VERSION}
)
endif()
if(V8_ICUI18N_LIBRARY_DEBUG)
set(V8_LIBRARIES_DEPENDS
${V8_LIBRARIES_DEPENDS}
${V8_ICUI18N_LIBRARY_DEBUG}.${ICU_FIND_VERSION}
)
endif()
if(V8_ICUI18N_LIBRARY_RELEASE)
set(V8_LIBRARIES_DEPENDS
${V8_LIBRARIES_DEPENDS}
${V8_ICUI18N_LIBRARY_RELEASE}.${ICU_FIND_VERSION}
)
endif()
MESSAGE("V8_LIBRARY: ${V8_LIBRARY}")
find_package_handle_standard_args(V8 DEFAULT_MSG V8_LIBRARY V8_INCLUDE_DIR)
# Base build
if(NOT V8_FOUND)
if(MSVC)
if(V8_LIBRARY_DEBUG AND V8_LIBRARY_RELEASE)
set(V8_LIBRARY
${V8_LIBRARY_DEBUG} ${V8_LIBRARY_RELEASE}
${V8_PLATFORM_LIBRARY_DEBUG} ${V8_PLATFORM_LIBRARY_RELEASE}
# ${V8_ICU_LIBRARY_DEBUG} ${V8_ICU_LIBRARY_RELEASE}
)
set(V8_LIBRARIES
optimized ${V8_LIBRARY_RELEASE} debug ${V8_LIBRARY_DEBUG}
optimized ${V8_PLATFORM_LIBRARY_RELEASE} debug ${V8_PLATFORM_LIBRARY_DEBUG}
# optimized ${V8_ICU_LIBRARY_RELEASE} debug ${V8_ICU_LIBRARY_DEBUG}
optimized Winmm.lib debug Winmm.lib
)
endif()
else()
if(CMAKE_BUILD_TYPE EQUAL "Debug")
if(V8_LIBRARY_DEBUG)
set(V8_LIBRARY ${V8_LIBRARY_DEBUG} ${V8_PLATFORM_LIBRARY_DEBUG}) # ${V8_ICU_LIBRARY_DEBUG})
endif()
else()
if(V8_LIBRARY_RELEASE)
set(V8_LIBRARY ${V8_LIBRARY_RELEASE} ${V8_PLATFORM_LIBRARY_RELEASE}) # ${V8_ICU_LIBRARY_RELEASE})
endif()
endif()
set(V8_LIBRARIES ${V8_LIBRARY})
endif()
find_package_handle_standard_args(V8 DEFAULT_MSG V8_LIBRARY V8_INCLUDE_DIR)
endif()
# Minimal build
if(NOT V8_FOUND)
if(MSVC)
if(V8_LIBRARY_RELEASE)
set(V8_LIBRARY ${V8_LIBRARY_RELEASE} ${V8_PLATFORM_LIBRARY_RELEASE}) # ${V8_ICU_LIBRARY_RELEASE})
set(V8_LIBRARIES
optimized ${V8_LIBRARY_RELEASE} debug ${V8_LIBRARY_RELEASE}
optimized ${V8_PLATFORM_LIBRARY_RELEASE} debug ${V8_PLATFORM_LIBRARY_RELEASE}
# optimized ${V8_ICU_LIBRARY_RELEASE} debug ${V8_ICU_LIBRARY_RELEASE}
optimized Winmm.lib debug Winmm.lib
)
endif()
else()
if(V8_LIBRARY_RELEASE)
set(V8_LIBRARY ${V8_LIBRARY_RELEASE} ${V8_PLATFORM_LIBRARY_RELEASE}) # ${V8_ICU_LIBRARY_RELEASE})
endif()
set(V8_LIBRARIES ${V8_LIBRARY})
endif()
find_package_handle_standard_args(V8 DEFAULT_MSG V8_LIBRARY V8_INCLUDE_DIR)
endif()
# Detect V8 version
if(V8_FOUND AND V8_INCLUDE_DIR)
file(READ ${V8_INCLUDE_DIR}/v8-version.h V8_VERSION_FILE)
string(REGEX MATCH "#define V8_MAJOR_VERSION ([0-9]+)" V8_VERSION_MAJOR_DEF ${V8_VERSION_FILE})
string(REGEX MATCH "([0-9]+)$" V8_VERSION_MAJOR ${V8_VERSION_MAJOR_DEF})
string(REGEX MATCH "#define V8_MINOR_VERSION ([0-9]+)" V8_VERSION_MINOR_DEF ${V8_VERSION_FILE})
string(REGEX MATCH "([0-9]+)$" V8_VERSION_MINOR ${V8_VERSION_MINOR_DEF})
string(REGEX MATCH "#define V8_BUILD_NUMBER ([0-9]+)" V8_VERSION_PATCH_DEF ${V8_VERSION_FILE})
string(REGEX MATCH "([0-9]+)$" V8_VERSION_PATCH ${V8_VERSION_PATCH_DEF})
string(REGEX MATCH "#define V8_PATCH_LEVEL ([0-9]+)" V8_VERSION_TWEAK_DEF ${V8_VERSION_FILE})
string(REGEX MATCH "([0-9]+)$" V8_VERSION_TWEAK ${V8_VERSION_TWEAK_DEF})
set(V8_VERSION "${V8_VERSION_MAJOR}.${V8_VERSION_MINOR}.${V8_VERSION_PATCH}.${V8_VERSION_TWEAK}")
set(V8_VERSION_HEX 0x0${V8_VERSION_MAJOR}${V8_VERSION_MINOR}${V8_VERSION_PATCH}${V8_VERSION_TWEAK})
string(LENGTH "${V8_VERSION_HEX}" V8_VERSION_HEX_LENGTH)
while(V8_VERSION_HEX_LENGTH LESS 8)
set(V8_VERSION_HEX "${V8_VERSION_HEX}0")
string(LENGTH "${V8_VERSION_HEX}" V8_VERSION_HEX_LENGTH)
endwhile()
endif()
# Detect V8 shell
set(V8_EXECUTABLE_NAMES d8)
find_program(V8_EXECUTABLE
NAMES ${V8_EXECUTABLE_NAMES}
)
mark_as_advanced(V8_LIBRARY V8_INCLUDE_DIR)
if(V8_FOUND)
set(V8_INCLUDE_DIRS ${V8_INCLUDE_DIR})
endif()
if(_V8_CMAKE_DEBUG)
message(STATUS "V8_INCLUDE_DIR: ${V8_INCLUDE_DIR}")
message(STATUS "V8_LIBRARIES: ${V8_LIBRARIES}")
message(STATUS "V8_LIBRARIES_DEPENDS: ${V8_LIBRARIES_DEPENDS}")
message(STATUS "V8_VERSION: ${V8_VERSION}")
message(STATUS "V8_VERSION_HEX: ${V8_VERSION_HEX}")
message(STATUS "V8_EXECUTABLE: ${V8_EXECUTABLE}")
endif()

View file

@ -0,0 +1,38 @@
diff --git a/artery-font/serialization.hpp b/artery-font/serialization.hpp
index 69263a8..6075eda 100644
--- a/artery-font/serialization.hpp
+++ b/artery-font/serialization.hpp
@@ -109,15 +109,16 @@ template <ReadFunction READ, typename REAL, template <typename> class LIST, clas
bool decode(ArteryFont<REAL, LIST, BYTE_ARRAY, STRING> &font, void *userData) {
uint32 totalLength = 0;
uint32 prevLength = 0;
- uint32 checksum = crc32Init();
+ //uint32 checksum = crc32Init();
byte dump[4];
#define ARTERY_FONT_DECODE_READ(target, len) { \
if (READ((target), (len), userData) != int(len)) \
return false; \
totalLength += (len); \
- for (int _i = 0; _i < int(len); ++_i) \
- checksum = crc32Update(checksum, reinterpret_cast<const byte *>(target)[_i]); \
}
+ // for (int _i = 0; _i < int(len); ++_i) \
+ // checksum = crc32update(checksum, reinterpret_cast<const byte *>(target)[_i]); \
+ //}
#define ARTERY_FONT_DECODE_REALIGN() { \
if (totalLength&0x03u) { \
uint32 len = 0x04u-(totalLength&0x03u); \
@@ -228,10 +229,10 @@ bool decode(ArteryFont<REAL, LIST, BYTE_ARRAY, STRING> &font, void *userData) {
ARTERY_FONT_DECODE_READ(&footer, sizeof(footer)-sizeof(footer.checksum));
if (footer.magicNo != ARTERY_FONT_FOOTER_MAGIC_NO)
return false;
- uint32 finalChecksum = checksum;
+ //uint32 finalChecksum = checksum;
ARTERY_FONT_DECODE_READ(&footer.checksum, sizeof(footer.checksum));
- if (footer.checksum != finalChecksum)
- return false;
+ //if (footer.checksum != finalChecksum)
+ // return false;
if (totalLength != footer.totalLength)
return false;
}

View file

@ -0,0 +1,15 @@
# header-only library
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO Chlumsky/artery-font-format
REF 34134bde3cea35a93c2ae5703fa8d3d463793400
SHA512 6b2fc0de9ca7b367c9b98f829ce6cee858f1252b12a49b6f1e89a5a2fdb109e20ef812f0b30495195ca0b177adae32d5e238fdc305724857ced098be2d29a6af
HEAD_REF master
PATCHES "disable-checksum.patch"
)
file(COPY "${SOURCE_PATH}/artery-font" DESTINATION "${CURRENT_PACKAGES_DIR}/include")
# Handle copyright
configure_file("${SOURCE_PATH}/LICENSE.txt" "${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright" COPYONLY)

View file

@ -0,0 +1,7 @@
{
"name": "artery-font-format",
"version": "1.0.1",
"description": "Header-only C++ library that facilitates encoding and decoding of the Artery Atlas Font format",
"homepage": "https://github.com/Chlumsky/artery-font-format",
"license": "MIT"
}

View file

@ -0,0 +1,15 @@
# header-only library
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO jkuhlmann/cgltf
REF de399881c65c438a635627c749440eeea7e05599
SHA512 753923116b92642848ff2bda70695ddd0e7be6db43ed3cfc37aff4cba90a29a92e3dbda139a5f2c80cad1d2cdaf81e1383e4ea7a12195f61fe8cfeb105e53ea2
HEAD_REF master
)
file(COPY "${SOURCE_PATH}/cgltf.h" DESTINATION "${CURRENT_PACKAGES_DIR}/include")
file(COPY "${SOURCE_PATH}/cgltf_write.h" DESTINATION "${CURRENT_PACKAGES_DIR}/include")
# Handle copyright
configure_file("${SOURCE_PATH}/LICENSE" "${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright" COPYONLY)

View file

@ -0,0 +1,7 @@
{
"name": "cgltf",
"version": "1.13",
"description": "Single-file glTF 2.0 loader and writer written in C99",
"homepage": "https://github.com/jkuhlmann/cgltf",
"license": "MIT"
}

View file

@ -0,0 +1,21 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5dad9e9..961f02d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -12,6 +12,7 @@ file(GLOB_RECURSE ALL_SOURCE_FILES
src/*.cpp src/*.h src/*.c
)
+if(0)
# Set CLANG_FORMAT_SUFFIX if you are using custom clang-format, e.g. clang-format-5.0
find_program(CLANG_FORMAT_CMD clang-format${CLANG_FORMAT_SUFFIX})
@@ -43,7 +44,7 @@ if (NOT RAPIDJSONTEST)
)
file(REMOVE ${RJ_TAR_FILE})
endif(NOT RAPIDJSONTEST)
-
+endif()
find_file(RAPIDJSON NAMES rapidjson rapidjson-1.1.0 PATHS ${CMAKE_CURRENT_SOURCE_DIR}/thirdparty CMAKE_FIND_ROOT_PATH_BOTH)
add_library(rapidjson STATIC IMPORTED ${RAPIDJSON})

View file

@ -0,0 +1,33 @@
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO discordapp/discord-rpc
REF v3.4.0
SHA512 ca981b833aff5f21fd629a704deadd8e3fb5423d959ddb75e381313f6462d984c567671b10c8f031905c08d85792ddbe2dddc402ba2613c42de9e80fc68d0d51
HEAD_REF master
PATCHES disable-downloading.patch
)
string(COMPARE EQUAL "${VCPKG_CRT_LINKAGE}" "static" STATIC_CRT)
file(REMOVE_RECURSE "${SOURCE_PATH}/thirdparty")
vcpkg_cmake_configure(
SOURCE_PATH "${SOURCE_PATH}"
OPTIONS
-DUSE_STATIC_CRT=${STATIC_CRT}
-DBUILD_EXAMPLES=OFF
-DRAPIDJSONTEST=TRUE
"-DRAPIDJSON=${CURRENT_INSTALLED_DIR}"
)
if(EXISTS ${SOURCE_PATH}/thirdparty)
message(FATAL_ERROR "The source directory should not be modified during the build.")
endif()
vcpkg_cmake_install()
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
# Copy copright information
file(INSTALL "${SOURCE_PATH}/LICENSE" DESTINATION "${CURRENT_PACKAGES_DIR}/share/discord-rpc" RENAME "copyright")
vcpkg_copy_pdbs()

View file

@ -0,0 +1,18 @@
{
"name": "discord-rpc",
"version": "3.4.0",
"port-version": 3,
"description": "Rich Presence allows you to leverage the totally overhauled \"Now Playing\" section in a Discord user's profile to help people play your game together.",
"homepage": "https://github.com/discordapp/discord-rpc",
"dependencies": [
"rapidjson",
{
"name": "vcpkg-cmake",
"host": true
},
{
"name": "vcpkg-cmake-config",
"host": true
}
]
}

View file

@ -1,4 +1,4 @@
Source: draco
Version: 1.3.3
Version: 1.3.5-fixed
Description: A library for compressing and decompressing 3D geometric meshes and point clouds. It is intended to improve the storage and transmission of 3D graphics.
Build-Depends:

View file

@ -1,4 +1,4 @@
Source: hifi-client-deps
Version: 0.1
Description: Collected dependencies for High Fidelity applications
Build-Depends: hifi-deps, aristo (windows), glslang, liblo (windows), nlohmann-json, openvr ((linux&!arm)|windows), quazip (!android), sdl2 (!android), spirv-cross (!android), spirv-tools (!android), sranipal (windows), vulkanmemoryallocator
Build-Depends: hifi-deps, aristo (windows), glslang, liblo (windows), nlohmann-json, openvr ((linux&!arm)|windows), quazip (!android), sdl2 (!android), spirv-cross (!android), spirv-tools (!android), sranipal (windows), vulkanmemoryallocator, discord-rpc (!android)

View file

@ -1,4 +1,8 @@
# Copyright 2018-2019 High Fidelity, Inc.
# Copyright 2020 Vircadia contributors
# Copyright 2021-2023 Overte e.V.
# SPDX-License-Identifier: Apache-2.0
Source: hifi-deps
Version: 0.1.5-github-actions
Description: Collected dependencies for High Fidelity applications
Build-Depends: bullet3, draco, etc2comp, glad, glm, nvtt, openexr (!android), openssl (windows), opus, polyvox, tbb (!android), vhacd, webrtc (!android|!(linux&arm)), zlib
Build-Depends: artery-font-format, bullet3, cgltf, draco, etc2comp, glad, glm, node, nvtt, openexr (!android), openssl (windows), opus, polyvox, tbb (!android), vhacd, webrtc (!android|!(linux&arm)), zlib

View file

@ -0,0 +1,25 @@
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO AcademySoftwareFoundation/Imath
REF v3.1.9
SHA512 ad96b2ac306fc13c01e8ea3256f885499c3f545be327feaba0f5e093b70b544bcca6f8b353fa7e35107aae515c19caced44331a95d0414f367ead4691ec73564
HEAD_REF master
)
vcpkg_cmake_configure(
SOURCE_PATH "${SOURCE_PATH}"
OPTIONS
-DIMATH_INSTALL_SYM_LINK=OFF
-DBUILD_TESTING=OFF
-DIMATH_INSTALL_PKG_CONFIG=ON
)
vcpkg_cmake_install()
vcpkg_copy_pdbs()
vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/Imath)
vcpkg_fixup_pkgconfig()
file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
file(INSTALL "${SOURCE_PATH}/LICENSE.md" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright)

View file

@ -0,0 +1,18 @@
{
"name": "imath",
"version": "3.1.9",
"port-version": 1,
"description": "Imath is a C++ and Python library of 2D and 3D vector, matrix, and math operations for computer graphics.",
"homepage": "https://github.com/AcademySoftwareFoundation/Imath",
"license": "BSD-3-Clause",
"dependencies": [
{
"name": "vcpkg-cmake",
"host": true
},
{
"name": "vcpkg-cmake-config",
"host": true
}
]
}

6
cmake/ports/node/CONTROL Normal file
View file

@ -0,0 +1,6 @@
# Copyright 2023 Overte e.V.
# SPDX-License-Identifier: MIT
Source: node
Version: 18.14.2-1
Homepage: https://nodejs.org/
Description: Node.js JavaScript runtime.

View file

@ -0,0 +1,107 @@
# Copyright 2023-2024 Overte e.V.
# SPDX-License-Identifier: Apache-2.0
set(NODE_VERSION 18.14.2)
set(MASTER_COPY_SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src)
file(READ "${VCPKG_ROOT_DIR}/_env/EXTERNAL_BUILD_ASSETS.txt" EXTERNAL_BUILD_ASSETS)
if (ANDROID)
# TODO
elseif (WIN32)
vcpkg_download_distfile(
NODE_SOURCE_ARCHIVE
URLS "${EXTERNAL_BUILD_ASSETS}/dependencies/node/node-install-18.15.1-win-x64-release.tar.xz"
SHA512 892608a43ae32b0a82a0e3c7994934d0ce85639ea372c8e7feb7de44220211fa91878bd0744e1488054777807dd5b0c0677b59b44ab5e9fd35ecf222b38d8046
FILENAME node-install-18.15.1-win-x64-release.tar.xz
)
elseif (APPLE)
# TODO
vcpkg_download_distfile(
NODE_SOURCE_ARCHIVE
URLS "${EXTERNAL_BUILD_ASSETS}/dependencies/node/node-install-18.14.2-macOSXSDK10.14-macos-amd64-release.tar.xz"
SHA512 TODO
FILENAME node-install-18.14.2-macOSXSDK10.14-macos-amd64-release.tar.xz
)
else ()
# else Linux desktop
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO nodejs/node
REF v18.20.2
SHA512 10d3637c26274677d137f76bbb648d0e7851c994634a16c89858c3a13094a0692ea2cb9a787c6463c3001abd71dab0d83123127bc305171d097c48d21d691678
HEAD_REF v18.20.2
)
# node cannot configure out of source, which VCPKG expects. So we copy the source to the configure directory.
file(COPY ${SOURCE_PATH}/ DESTINATION "${CURRENT_BUILDTREES_DIR}")
if (VCPKG_TARGET_ARCHITECTURE STREQUAL "arm64")
# --gdb fails on aarch64
vcpkg_execute_build_process(
COMMAND ./configure --shared --v8-enable-object-print --shared-openssl --prefix=${CURRENT_BUILDTREES_DIR}/node-install/
WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}
LOGNAME "configure-node"
)
else () # amd64
vcpkg_execute_build_process(
COMMAND ./configure --gdb --shared --v8-enable-object-print --shared-openssl --prefix=${CURRENT_BUILDTREES_DIR}/node-install/
WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}
LOGNAME "configure-node"
)
endif ()
if(VCPKG_MAX_CONCURRENCY GREATER 0)
vcpkg_execute_build_process(
COMMAND make -j${VCPKG_MAX_CONCURRENCY}
WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}
LOGNAME "make-node"
)
vcpkg_execute_build_process(
COMMAND make -j${VCPKG_MAX_CONCURRENCY} install
WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}
LOGNAME "install-node"
)
elseif (VCPKG_CONCURRENCY GREATER 0)
vcpkg_execute_build_process(
COMMAND make -j${VCPKG_CONCURRENCY}
WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}
LOGNAME "make-node"
)
vcpkg_execute_build_process(
COMMAND make -j${VCPKG_CONCURRENCY} install
WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}
LOGNAME "install-node"
)
else ()
vcpkg_execute_build_process(
COMMAND make -j$(nproc)
WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}
LOGNAME "make-node"
)
vcpkg_execute_build_process(
COMMAND make -j$(nproc) install
WORKING_DIRECTORY ${CURRENT_BUILDTREES_DIR}
LOGNAME "install-node"
)
endif ()
set(NODE_INSTALL_PATH ${CURRENT_BUILDTREES_DIR})
endif ()
if (NODE_INSTALL_PATH)
else()
vcpkg_extract_source_archive(MASTER_COPY_SOURCE_PATH ARCHIVE ${NODE_SOURCE_ARCHIVE} NO_REMOVE_ONE_LEVEL)
set(NODE_INSTALL_PATH ${MASTER_COPY_SOURCE_PATH})
endif()
# move WIN dll to /bin and WIN .lib to /lib
if (WIN32)
file(COPY ${NODE_INSTALL_PATH}/node-install/include DESTINATION ${CURRENT_PACKAGES_DIR})
file(COPY ${NODE_INSTALL_PATH}/node-install/libnode.lib DESTINATION ${CURRENT_PACKAGES_DIR}/lib)
file(COPY ${NODE_INSTALL_PATH}/node-install/v8_libplatform.lib DESTINATION ${CURRENT_PACKAGES_DIR}/lib)
file(COPY ${NODE_INSTALL_PATH}/node-install/libnode.dll DESTINATION ${CURRENT_PACKAGES_DIR}/bin)
else ()
file(COPY ${NODE_INSTALL_PATH}/node-install/include DESTINATION ${CURRENT_PACKAGES_DIR})
file(COPY ${NODE_INSTALL_PATH}/node-install/lib DESTINATION ${CURRENT_PACKAGES_DIR})
file(COPY ${NODE_INSTALL_PATH}/node-install/share DESTINATION ${CURRENT_PACKAGES_DIR})
file(COPY ${NODE_INSTALL_PATH}/node-install/bin DESTINATION ${CURRENT_PACKAGES_DIR})
endif ()

View file

@ -1,3 +1,3 @@
Source: nvtt
Version: 2.1.3
Version: 2.1.4
Description: Texture processing tools with support for Direct3D 10 and 11 formats.

View file

@ -9,8 +9,8 @@
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO JulianGro/nvidia-texture-tools
REF 4c022091ad5dae8964052cadcc506c10e6956442
SHA512 dcae327f40e25408fdca73f01bc0555f38b0e9d6bf19adc87532e03365e3b4f6f12a6bcdd7dd27c7af3a5579b9ddd086a5f9c7ee7abd0d0f55c707db8666a780
REF 2a56c2321e5923b00c59a19f1b1528a72b2e0f6e
SHA512 b41cc44dfe0c389b184271ad8d385dcb96c78591e9017bdb6a2325b1cbc3100bb23294e9478d12dbd8490ca44dac6363810a87650a2cdc63445dad339658cbd2
HEAD_REF master
)

View file

@ -1,4 +0,0 @@
Source: openexr
Version: 2.3.0-2
Description: OpenEXR is a high dynamic-range (HDR) image file format developed by Industrial Light & Magic for use in computer imaging applications
Build-Depends: zlib

View file

@ -1,87 +0,0 @@
include(FindPackageHandleStandardArgs)
find_path(OpenEXR_INCLUDE_DIRS OpenEXR/OpenEXRConfig.h)
find_path(OPENEXR_INCLUDE_PATHS NAMES ImfRgbaFile.h PATH_SUFFIXES OpenEXR)
file(STRINGS "${OpenEXR_INCLUDE_DIRS}/OpenEXR/OpenEXRConfig.h" OPENEXR_CONFIG_H)
string(REGEX REPLACE "^.*define OPENEXR_VERSION_MAJOR ([0-9]+).*$" "\\1" OpenEXR_VERSION_MAJOR "${OPENEXR_CONFIG_H}")
string(REGEX REPLACE "^.*define OPENEXR_VERSION_MINOR ([0-9]+).*$" "\\1" OpenEXR_VERSION_MINOR "${OPENEXR_CONFIG_H}")
set(OpenEXR_LIB_SUFFIX "${OpenEXR_VERSION_MAJOR}_${OpenEXR_VERSION_MINOR}")
include(SelectLibraryConfigurations)
if(NOT OpenEXR_BASE_LIBRARY)
find_library(OpenEXR_BASE_LIBRARY_RELEASE NAMES IlmImf-${OpenEXR_LIB_SUFFIX})
find_library(OpenEXR_BASE_LIBRARY_DEBUG NAMES IlmImf-${OpenEXR_LIB_SUFFIX}_d)
select_library_configurations(OpenEXR_BASE)
endif()
if(NOT OpenEXR_UTIL_LIBRARY)
find_library(OpenEXR_UTIL_LIBRARY_RELEASE NAMES IlmImfUtil-${OpenEXR_LIB_SUFFIX})
find_library(OpenEXR_UTIL_LIBRARY_DEBUG NAMES IlmImfUtil-${OpenEXR_LIB_SUFFIX}_d)
select_library_configurations(OpenEXR_UTIL)
endif()
if(NOT OpenEXR_HALF_LIBRARY)
find_library(OpenEXR_HALF_LIBRARY_RELEASE NAMES Half-${OpenEXR_LIB_SUFFIX})
find_library(OpenEXR_HALF_LIBRARY_DEBUG NAMES Half-${OpenEXR_LIB_SUFFIX}_d)
select_library_configurations(OpenEXR_HALF)
endif()
if(NOT OpenEXR_IEX_LIBRARY)
find_library(OpenEXR_IEX_LIBRARY_RELEASE NAMES Iex-${OpenEXR_LIB_SUFFIX})
find_library(OpenEXR_IEX_LIBRARY_DEBUG NAMES Iex-${OpenEXR_LIB_SUFFIX}_d)
select_library_configurations(OpenEXR_IEX)
endif()
if(NOT OpenEXR_MATH_LIBRARY)
find_library(OpenEXR_MATH_LIBRARY_RELEASE NAMES Imath-${OpenEXR_LIB_SUFFIX})
find_library(OpenEXR_MATH_LIBRARY_DEBUG NAMES Imath-${OpenEXR_LIB_SUFFIX}_d)
select_library_configurations(OpenEXR_MATH)
endif()
if(NOT OpenEXR_THREAD_LIBRARY)
find_library(OpenEXR_THREAD_LIBRARY_RELEASE NAMES IlmThread-${OpenEXR_LIB_SUFFIX})
find_library(OpenEXR_THREAD_LIBRARY_DEBUG NAMES IlmThread-${OpenEXR_LIB_SUFFIX}_d)
select_library_configurations(OpenEXR_THREAD)
endif()
if(NOT OpenEXR_IEXMATH_LIBRARY)
find_library(OpenEXR_IEXMATH_LIBRARY_RELEASE NAMES IexMath-${OpenEXR_LIB_SUFFIX})
find_library(OpenEXR_IEXMATH_LIBRARY_DEBUG NAMES IexMath-${OpenEXR_LIB_SUFFIX}d)
select_library_configurations(OpenEXR_IEXMATH)
endif()
set(OPENEXR_HALF_LIBRARY "${OpenEXR_HALF_LIBRARY}")
set(OPENEXR_IEX_LIBRARY "${OpenEXR_IEX_LIBRARY}")
set(OPENEXR_IMATH_LIBRARY "${OpenEXR_MATH_LIBRARY}")
set(OPENEXR_ILMIMF_LIBRARY "${OpenEXR_BASE_LIBRARY}")
set(OPENEXR_ILMIMFUTIL_LIBRARY "${OpenEXR_UTIL_LIBRARY}")
set(OPENEXR_ILMTHREAD_LIBRARY "${OpenEXR_THREAD_LIBRARY}")
set(OpenEXR_LIBRARY "${OpenEXR_BASE_LIBRARY}")
set(OpenEXR_LIBRARIES
${OpenEXR_LIBRARY}
${OpenEXR_MATH_LIBRARY}
${OpenEXR_IEXMATH_LIBRARY}
${OpenEXR_UTIL_LIBRARY}
${OpenEXR_HALF_LIBRARY}
${OpenEXR_IEX_LIBRARY}
${OpenEXR_THREAD_LIBRARY}
)
set(OPENEXR_LIBRARIES
${OPENEXR_HALF_LIBRARY}
${OPENEXR_IEX_LIBRARY}
${OPENEXR_IMATH_LIBRARY}
${OPENEXR_ILMIMF_LIBRARY}
${OPENEXR_ILMTHREAD_LIBRARY}
)
FIND_PACKAGE_HANDLE_STANDARD_ARGS(OpenEXR REQUIRED_VARS OpenEXR_LIBRARIES OpenEXR_INCLUDE_DIRS)
if(OpenEXR_FOUND)
set(OPENEXR_FOUND 1)
endif()

View file

@ -0,0 +1,13 @@
diff --git a/src/lib/OpenEXRCore/internal_dwa_simd.h b/src/lib/OpenEXRCore/internal_dwa_simd.h
index 7b53501ac..ca69c9848 100644
--- a/src/lib/OpenEXRCore/internal_dwa_simd.h
+++ b/src/lib/OpenEXRCore/internal_dwa_simd.h
@@ -18,7 +18,7 @@
// aligned. Unaligned pointers may risk seg-faulting.
//
-#if defined __SSE2__ || (_MSC_VER >= 1300 && !_M_CEE_PURE)
+#if defined __SSE2__ || (_MSC_VER >= 1300 && (_M_IX86 || _M_X64) && !_M_CEE_PURE)
# define IMF_HAVE_SSE2 1
# include <emmintrin.h>
# include <mmintrin.h>

View file

@ -1,19 +0,0 @@
diff --git a/OpenEXR/IlmImf/CMakeLists.txt b/OpenEXR/IlmImf/CMakeLists.txt
index e1a8740..d31cf68 100644
--- a/OpenEXR/IlmImf/CMakeLists.txt
+++ b/OpenEXR/IlmImf/CMakeLists.txt
@@ -2,14 +2,6 @@
SET(CMAKE_INCLUDE_CURRENT_DIR 1)
-IF (WIN32)
- SET(RUNTIME_DIR ${OPENEXR_PACKAGE_PREFIX}/bin)
- SET(WORKING_DIR ${RUNTIME_DIR})
-ELSE ()
- SET(RUNTIME_DIR ${OPENEXR_PACKAGE_PREFIX}/lib)
- SET(WORKING_DIR .)
-ENDIF ()
-
SET(BUILD_B44EXPLOGTABLE OFF)
IF (NOT EXISTS "${CMAKE_CURRENT_BINARY_DIR}/b44ExpLogTable.h")
SET(BUILD_B44EXPLOGTABLE ON)

View file

@ -1,71 +1,46 @@
set(OPENEXR_VERSION 2.3.0)
set(OPENEXR_HASH 268ae64b40d21d662f405fba97c307dad1456b7d996a447aadafd41b640ca736d4851d9544b4741a94e7b7c335fe6e9d3b16180e710671abfc0c8b2740b147b2)
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO openexr/openexr
REF v${OPENEXR_VERSION}
SHA512 ${OPENEXR_HASH}
HEAD_REF master
PATCHES "fix_install_ilmimf.patch"
OUT_SOURCE_PATH SOURCE_PATH
REPO AcademySoftwareFoundation/openexr
REF "v${VERSION}"
SHA512 ec60e79341695452e05f50bbcc0d55e0ce00fbb64cdec01a83911189c8643eb28a8046b14ee4230e5f438f018f2f1d0714f691983474d7979befd199f3f34758
HEAD_REF master
PATCHES
fix-arm64-windows-build.patch # https://github.com/AcademySoftwareFoundation/openexr/pull/1447
)
set(OPENEXR_STATIC ON)
set(OPENEXR_SHARED OFF)
vcpkg_configure_cmake(SOURCE_PATH ${SOURCE_PATH}
PREFER_NINJA
OPTIONS
-DOPENEXR_BUILD_PYTHON_LIBS=OFF
-DOPENEXR_BUILD_VIEWERS=OFF
-DOPENEXR_RUN_FUZZ_TESTS=OFF
-DOPENEXR_BUILD_SHARED=${OPENEXR_SHARED}
-DOPENEXR_BUILD_STATIC=${OPENEXR_STATIC}
OPTIONS_DEBUG
-DILMBASE_PACKAGE_PREFIX=${CURRENT_INSTALLED_DIR}/debug
OPTIONS_RELEASE
-DILMBASE_PACKAGE_PREFIX=${CURRENT_INSTALLED_DIR})
vcpkg_install_cmake()
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/share)
# NOTE: Only use ".exe" extension on Windows executables.
# Is there a cleaner way to do this?
if(WIN32)
set(EXECUTABLE_SUFFIX ".exe")
else()
set(EXECUTABLE_SUFFIX "")
endif()
file(REMOVE ${CURRENT_PACKAGES_DIR}/debug/bin/exrenvmap${EXECUTABLE_SUFFIX})
file(REMOVE ${CURRENT_PACKAGES_DIR}/debug/bin/exrheader${EXECUTABLE_SUFFIX})
file(REMOVE ${CURRENT_PACKAGES_DIR}/debug/bin/exrmakepreview${EXECUTABLE_SUFFIX})
file(REMOVE ${CURRENT_PACKAGES_DIR}/debug/bin/exrmaketiled${EXECUTABLE_SUFFIX})
file(REMOVE ${CURRENT_PACKAGES_DIR}/debug/bin/exrmultipart${EXECUTABLE_SUFFIX})
file(REMOVE ${CURRENT_PACKAGES_DIR}/debug/bin/exrmultiview${EXECUTABLE_SUFFIX})
file(REMOVE ${CURRENT_PACKAGES_DIR}/debug/bin/exrstdattr${EXECUTABLE_SUFFIX})
file(REMOVE ${CURRENT_PACKAGES_DIR}/bin/exrenvmap${EXECUTABLE_SUFFIX})
file(REMOVE ${CURRENT_PACKAGES_DIR}/bin/exrheader${EXECUTABLE_SUFFIX})
file(REMOVE ${CURRENT_PACKAGES_DIR}/bin/exrmakepreview${EXECUTABLE_SUFFIX})
file(REMOVE ${CURRENT_PACKAGES_DIR}/bin/exrmaketiled${EXECUTABLE_SUFFIX})
file(REMOVE ${CURRENT_PACKAGES_DIR}/bin/exrmultipart${EXECUTABLE_SUFFIX})
file(REMOVE ${CURRENT_PACKAGES_DIR}/bin/exrmultiview${EXECUTABLE_SUFFIX})
file(REMOVE ${CURRENT_PACKAGES_DIR}/bin/exrstdattr${EXECUTABLE_SUFFIX})
vcpkg_check_features(OUT_FEATURE_OPTIONS OPTIONS
FEATURES
tools OPENEXR_BUILD_TOOLS
tools OPENEXR_INSTALL_TOOLS
)
vcpkg_cmake_configure(
SOURCE_PATH "${SOURCE_PATH}"
OPTIONS
${OPTIONS}
-DBUILD_TESTING=OFF
-DOPENEXR_INSTALL_EXAMPLES=OFF
-DBUILD_DOCS=OFF
OPTIONS_DEBUG
-DOPENEXR_BUILD_TOOLS=OFF
-DOPENEXR_INSTALL_TOOLS=OFF
)
vcpkg_cmake_install()
vcpkg_copy_pdbs()
if (OPENEXR_STATIC)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/bin ${CURRENT_PACKAGES_DIR}/debug/bin)
vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/OpenEXR)
vcpkg_fixup_pkgconfig()
if(OPENEXR_INSTALL_TOOLS)
vcpkg_copy_tools(
TOOL_NAMES exrenvmap exrheader exrinfo exrmakepreview exrmaketiled exrmultipart exrmultiview exrstdattr exr2aces
AUTO_CLEAN
)
endif()
if (VCPKG_CMAKE_SYSTEM_NAME STREQUAL "Linux")
set(OPENEXR_PORT_DIR "openexr")
else()
set(OPENEXR_PORT_DIR "OpenEXR")
endif()
file(REMOVE_RECURSE
"${CURRENT_PACKAGES_DIR}/debug/include"
"${CURRENT_PACKAGES_DIR}/debug/share"
)
file(COPY ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${OPENEXR_PORT_DIR})
file(RENAME ${CURRENT_PACKAGES_DIR}/share/${OPENEXR_PORT_DIR}/LICENSE ${CURRENT_PACKAGES_DIR}/share/${OPENEXR_PORT_DIR}/copyright)
file(COPY ${CMAKE_CURRENT_LIST_DIR}/FindOpenEXR.cmake DESTINATION ${CURRENT_PACKAGES_DIR}/share/${OPENEXR_PORT_DIR})
file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
file(INSTALL "${SOURCE_PATH}/LICENSE.md" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright)

View file

@ -0,0 +1,4 @@
openexr provides CMake targets:
find_package(OpenEXR CONFIG REQUIRED)
target_link_libraries(main PRIVATE OpenEXR::OpenEXR)

View file

@ -0,0 +1,25 @@
{
"name": "openexr",
"version": "3.1.8",
"description": "OpenEXR is a high dynamic-range (HDR) image file format developed by Industrial Light & Magic for use in computer imaging applications",
"homepage": "https://www.openexr.com/",
"license": "BSD-3-Clause",
"supports": "!uwp",
"dependencies": [
"imath",
{
"name": "vcpkg-cmake",
"host": true
},
{
"name": "vcpkg-cmake-config",
"host": true
},
"zlib"
],
"features": {
"tools": {
"description": "Build tools"
}
}
}

View file

@ -1,157 +0,0 @@
cmake_minimum_required(VERSION 3.9)
project(openssl C)
if(NOT SOURCE_PATH)
message(FATAL_ERROR "Requires SOURCE_PATH")
endif()
if(CMAKE_SYSTEM_NAME STREQUAL "Android")
set(PLATFORM android)
elseif(CMAKE_SYSTEM_NAME STREQUAL "Linux")
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "AMD64")
set(PLATFORM linux-generic64)
else()
set(PLATFORM linux-generic32)
endif()
elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
set(PLATFORM darwin64-x86_64-cc)
elseif(CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
set(PLATFORM BSD-generic64)
else()
message(FATAL_ERROR "Unknown platform")
endif()
get_filename_component(COMPILER_ROOT "${CMAKE_C_COMPILER}" DIRECTORY)
message("CMAKE_C_COMPILER=${CMAKE_C_COMPILER}")
message("COMPILER_ROOT=${COMPILER_ROOT}")
message("CMAKE_SYSROOT=${CMAKE_SYSROOT}")
message("CMAKE_OSX_SYSROOT=${CMAKE_OSX_SYSROOT}")
message("CMAKE_C_FLAGS=${CMAKE_C_FLAGS}")
message("CMAKE_C_FLAGS_RELEASE=${CMAKE_C_FLAGS_RELEASE}")
message("CMAKE_C_FLAGS_DEBUG=${CMAKE_C_FLAGS_DEBUG}")
message("CMAKE_INCLUDE_SYSTEM_FLAG_C=${CMAKE_INCLUDE_SYSTEM_FLAG_C}")
set(CFLAGS "${CMAKE_C_FLAGS}")
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
set(CFLAGS "-Wno-error=unused-command-line-argument ${CMAKE_C_FLAGS}")
endif()
if(CMAKE_C_COMPILER_TARGET)
set(CFLAGS "${CFLAGS} ${CMAKE_C_COMPILE_OPTIONS_TARGET}${CMAKE_C_COMPILER_TARGET}")
endif()
if(CMAKE_C_COMPILER_EXTERNAL_TOOLCHAIN)
set(CFLAGS "${CFLAGS} ${CMAKE_C_COMPILE_OPTIONS_EXTERNAL_TOOLCHAIN}${CMAKE_C_COMPILER_EXTERNAL_TOOLCHAIN}")
endif()
if(CMAKE_SYSROOT AND CMAKE_C_COMPILE_OPTIONS_SYSROOT)
set(CFLAGS "${CFLAGS} ${CMAKE_C_COMPILE_OPTIONS_SYSROOT}${CMAKE_SYSROOT}")
elseif(CMAKE_OSX_SYSROOT AND CMAKE_C_COMPILE_OPTIONS_SYSROOT)
set(CFLAGS "${CFLAGS} ${CMAKE_C_COMPILE_OPTIONS_SYSROOT}${CMAKE_OSX_SYSROOT}")
endif()
string(REGEX REPLACE "^ " "" CFLAGS "${CFLAGS}")
if(CMAKE_HOST_WIN32)
file(TO_NATIVE_PATH ENV_PATH "${COMPILER_ROOT};$ENV{PATH}")
else()
file(TO_NATIVE_PATH ENV_PATH "${COMPILER_ROOT}:$ENV{PATH}")
endif()
set(ENV{ANDROID_DEV} "${CMAKE_SYSROOT}/usr")
set(ENV{CC} "${CMAKE_C_COMPILER}")
message("ENV{ANDROID_DEV}=$ENV{ANDROID_DEV}")
get_filename_component(SOURCE_PATH_NAME "${SOURCE_PATH}" NAME)
set(BUILDDIR "${CMAKE_CURRENT_BINARY_DIR}/${SOURCE_PATH_NAME}")
if(NOT EXISTS "${BUILDDIR}")
file(COPY ${SOURCE_PATH} DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
endif()
get_filename_component(MSYS_BIN_DIR "${MAKE}" DIRECTORY)
file(READ "${BUILDDIR}/Configure" _contents)
string(REPLACE "-mandroid" "" _contents "${_contents}")
file(WRITE "${BUILDDIR}/Configure" "${_contents}")
if(BUILD_SHARED_LIBS)
set(SHARED shared)
file(STRINGS "${BUILDDIR}/crypto/opensslv.h" SHLIB_VERSION
REGEX "^#[\t ]*define[\t ]+SHLIB_VERSION_NUMBER[\t ]+\".*\".*")
string(REGEX REPLACE "^.*SHLIB_VERSION_NUMBER[\t ]+\"([^\"]*)\".*$" "\\1"
SHLIB_VERSION "${SHLIB_VERSION}")
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
set(LIB_EXT dylib)
set(LIB_EXTS ${SHLIB_VERSION}.${LIB_EXT})
else()
set(LIB_EXT so)
set(LIB_EXTS ${LIB_EXT}.${SHLIB_VERSION})
endif()
list(APPEND LIB_EXTS ${LIB_EXT})
else()
set(SHARED no-shared)
set(LIB_EXTS a)
endif()
foreach(lib ssl crypto)
foreach(ext ${LIB_EXTS})
list(APPEND INSTALL_LIBS "${BUILDDIR}/lib${lib}.${ext}")
endforeach()
endforeach()
if(CMAKE_HOST_WIN32)
set(ENV_COMMAND set)
set(PATH_VAR ";%PATH%")
else()
set(ENV_COMMAND export)
set(PATH_VAR ":$ENV{PATH}")
endif()
add_custom_command(
OUTPUT "${BUILDDIR}/Makefile"
COMMAND ${ENV_COMMAND} CC=${CMAKE_C_COMPILER}
COMMAND ${ENV_COMMAND} AR=${CMAKE_AR}
COMMAND ${ENV_COMMAND} LD=${CMAKE_LINKER}
COMMAND ${ENV_COMMAND} RANLIB=${CMAKE_RANLIB}
COMMAND ${ENV_COMMAND} MAKE=${MAKE}
COMMAND ${ENV_COMMAND} MAKEDEPPROG=${CMAKE_C_COMPILER}
COMMAND ${ENV_COMMAND} "PATH=${MSYS_BIN_DIR}${PATH_VAR}"
COMMAND "${PERL}" Configure
${SHARED}
enable-static-engine
no-ssl2
no-krb5
no-idea
no-bf
no-cast
no-seed
no-md2
${PLATFORM}
"--prefix=${CMAKE_INSTALL_PREFIX}"
"--openssldir=/etc/ssl"
${CFLAGS}
COMMAND "${CMAKE_COMMAND}" "-DDIR=${BUILDDIR}" -P "${CMAKE_CURRENT_LIST_DIR}/remove-deps.cmake"
VERBATIM
WORKING_DIRECTORY "${BUILDDIR}"
)
add_custom_target(depend
COMMAND ${ENV_COMMAND} "PATH=${MSYS_BIN_DIR}${PATH_VAR}"
COMMAND "${MAKE}" links # depend MAKEDEPPROG=${CMAKE_C_COMPILER}
VERBATIM
WORKING_DIRECTORY "${BUILDDIR}"
DEPENDS "${BUILDDIR}/Makefile"
)
add_custom_target(build_libs ALL
COMMAND ${ENV_COMMAND} "PATH=${MSYS_BIN_DIR}${PATH_VAR}"
COMMAND "${CMAKE_COMMAND}" -E touch "${BUILDDIR}/krb5.h"
COMMAND "${MAKE}" build_libs
VERBATIM
WORKING_DIRECTORY "${BUILDDIR}"
DEPENDS depend
BYPRODUCTS ${INSTALL_LIBS}
)
install(
FILES ${INSTALL_LIBS}
DESTINATION lib
)

View file

@ -1,3 +0,0 @@
Source: openssl-unix
Version: 1.0.2s-1
Description: OpenSSL is an open source project that provides a robust, commercial-grade, and full-featured toolkit for the Transport Layer Security (TLS) and Secure Sockets Layer (SSL) protocols. It is also a general-purpose cryptography library.

View file

@ -1,13 +0,0 @@
diff --git a/Configure b/Configure
index c98107a..77ad9d3 100644
--- a/Configure
+++ b/Configure
@@ -972,7 +972,7 @@ PROCESS_ARGS:
}
elsif (/^--with-zlib-include=(.*)$/)
{
- $withargs{"zlib-include"}="-I$1";
+ $withargs{"zlib-include"}="-I\"$1\"";
}
elsif (/^--with-fipsdir=(.*)$/)
{

View file

@ -1,25 +0,0 @@
diff --git a/util/pl/VC-32.pl b/util/pl/VC-32.pl
index dba96cb..5722f6e 100644
--- a/util/pl/VC-32.pl
+++ b/util/pl/VC-32.pl
@@ -154,9 +154,17 @@ else
$cflags=$opt_cflags.$base_cflags;
}
-# generate symbols.pdb unconditionally
-$app_cflag.=" /Zi /Fd\$(TMP_D)/app";
-$lib_cflag.=" /Zi /Fd\$(TMP_D)/lib";
+# generate symbols.pdb when building dlls and embed symbols when building static libs
+if ($shlib)
+ {
+ $app_cflag.=" /Zi /Fd\$(TMP_D)/app.pdb";
+ $lib_cflag.=" /Zi /Fd\$(TMP_D)/lib.pdb";
+ }
+else
+ {
+ $app_cflag.=" /Z7";
+ $lib_cflag.=" /Z7";
+ }
$lflags.=" /debug";
$obj='.obj';

View file

@ -1,23 +0,0 @@
diff --git a/crypto/cversion.c b/crypto/cversion.c
index bfff699..17b7912 100644
--- a/crypto/cversion.c
+++ b/crypto/cversion.c
@@ -56,6 +56,9 @@
* [including the GNU Public Licence.]
*/
+#define STRINGIFY2(x) #x
+#define STRINGIFY(x) STRINGIFY2(x)
+
#include "cryptlib.h"
#ifndef NO_WINDOWS_BRAINDEATH
@@ -79,7 +82,7 @@ const char *SSLeay_version(int t)
}
if (t == SSLEAY_CFLAGS) {
#ifdef CFLAGS
- return (CFLAGS);
+ return STRINGIFY(CFLAGS);
#else
return ("compiler: information not available");
#endif

View file

@ -1,73 +0,0 @@
if(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore" OR NOT VCPKG_CMAKE_SYSTEM_NAME)
message(FATAL_ERROR "This port is only for openssl on Unix-like systems")
endif()
if(EXISTS "${CURRENT_INSTALLED_DIR}/include/openssl/ssl.h")
message(WARNING "Can't build openssl if libressl is installed. Please remove libressl, and try install openssl again if you need it. Build will continue but there might be problems since libressl is only a subset of openssl")
set(VCPKG_POLICY_EMPTY_PACKAGE enabled)
return()
endif()
if (VCPKG_LIBRARY_LINKAGE STREQUAL static)
set(VCPKG_LIBRARY_LINKAGE dynamic)
endif()
vcpkg_find_acquire_program(PERL)
set(OPENSSL_VERSION 1.0.2s)
vcpkg_download_distfile(OPENSSL_SOURCE_ARCHIVE
URLS "https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz" "https://www.openssl.org/source/old/1.0.2/openssl-${OPENSSL_VERSION}.tar.gz"
FILENAME "openssl-${OPENSSL_VERSION}.tar.gz"
SHA512 9f745452c4f777df694158e95003cde78a2cf8199bc481a563ec36644664c3c1415a774779b9791dd18f2aeb57fa1721cb52b3db12d025955e970071d5b66d2a
)
vcpkg_extract_source_archive_ex(
OUT_SOURCE_PATH MASTER_COPY_SOURCE_PATH
ARCHIVE ${OPENSSL_SOURCE_ARCHIVE}
REF ${OPENSSL_VERSION}
PATCHES
ConfigureIncludeQuotesFix.patch
STRINGIFYPatch.patch
EmbedSymbolsInStaticLibsZ7.patch
)
if(CMAKE_HOST_WIN32)
vcpkg_acquire_msys(MSYS_ROOT PACKAGES make)
set(BASH ${MSYS_ROOT}/usr/bin/bash.exe)
set(MAKE ${MSYS_ROOT}/usr/bin/make.exe)
else()
find_program(MAKE make)
if(NOT MAKE)
message(FATAL_ERROR "Could not find make. Please install it through your package manager.")
endif()
endif()
vcpkg_configure_cmake(
SOURCE_PATH ${CMAKE_CURRENT_LIST_DIR}
PREFER_NINJA
OPTIONS
-DSOURCE_PATH=${MASTER_COPY_SOURCE_PATH}
-DPERL=${PERL}
-DMAKE=${MAKE}
OPTIONS_RELEASE
-DINSTALL_HEADERS=ON
)
vcpkg_install_cmake()
file(GLOB HEADERS ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/*/include/openssl/*.h)
set(RESOLVED_HEADERS)
foreach(HEADER ${HEADERS})
get_filename_component(X "${HEADER}" REALPATH)
list(APPEND RESOLVED_HEADERS "${X}")
endforeach()
file(INSTALL ${RESOLVED_HEADERS} DESTINATION ${CURRENT_PACKAGES_DIR}/include/openssl)
file(INSTALL ${MASTER_COPY_SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/openssl-unix RENAME copyright)
if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
file(COPY ${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake DESTINATION ${CURRENT_PACKAGES_DIR}/share/openssl)
endif()
vcpkg_test_cmake(PACKAGE_NAME OpenSSL MODULE)

View file

@ -1,4 +0,0 @@
The package openssl is compatible with built-in CMake targets:
find_package(OpenSSL REQUIRED)
target_link_libraries(main PRIVATE OpenSSL::SSL OpenSSL::Crypto)

View file

@ -1,10 +0,0 @@
_find_package(${ARGS})
if(OPENSSL_FOUND)
find_library(OPENSSL_DL_LIBRARY NAMES dl)
if(OPENSSL_DL_LIBRARY)
list(APPEND OPENSSL_LIBRARIES "dl")
if(TARGET OpenSSL::Crypto)
set_property(TARGET OpenSSL::Crypto APPEND PROPERTY INTERFACE_LINK_LIBRARIES "dl")
endif()
endif()
endif()

View file

@ -1,3 +0,0 @@
Source: openssl-windows
Version: 1.1.1h
Description: OpenSSL is an open source project that provides a robust, commercial-grade, and full-featured toolkit for the Transport Layer Security (TLS) and Secure Sockets Layer (SSL) protocols. It is also a general-purpose cryptography library.

View file

@ -1,142 +0,0 @@
if(VCPKG_CMAKE_SYSTEM_NAME)
message(FATAL_ERROR "This port is only for building openssl on Windows Desktop")
endif()
set(OPENSSL_VERSION 1.1.1h)
set(MASTER_COPY_SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/openssl-${OPENSSL_VERSION})
vcpkg_find_acquire_program(PERL)
get_filename_component(PERL_EXE_PATH ${PERL} DIRECTORY)
set(ENV{PATH} "$ENV{PATH};${PERL_EXE_PATH}")
vcpkg_download_distfile(OPENSSL_SOURCE_ARCHIVE
URLS "https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz" "https://www.openssl.org/source/old/1.1.1/openssl-${OPENSSL_VERSION}.tar.gz"
FILENAME "openssl-${OPENSSL_VERSION}.tar.gz"
SHA512 da50fd99325841ed7a4367d9251c771ce505a443a73b327d8a46b2c6a7d2ea99e43551a164efc86f8743b22c2bdb0020bf24a9cbd445e9d68868b2dc1d34033a
)
vcpkg_extract_source_archive(${OPENSSL_SOURCE_ARCHIVE})
vcpkg_find_acquire_program(NASM)
get_filename_component(NASM_EXE_PATH ${NASM} DIRECTORY)
set(ENV{PATH} "${NASM_EXE_PATH};$ENV{PATH}")
vcpkg_find_acquire_program(JOM)
set(CONFIGURE_COMMAND ${PERL} Configure
enable-static-engine
enable-capieng
no-ssl2
-utf-8
)
if(VCPKG_TARGET_ARCHITECTURE STREQUAL "x86")
set(OPENSSL_ARCH VC-WIN32)
elseif(VCPKG_TARGET_ARCHITECTURE STREQUAL "x64")
set(OPENSSL_ARCH VC-WIN64A)
else()
message(FATAL_ERROR "Unsupported target architecture: ${VCPKG_TARGET_ARCHITECTURE}")
endif()
file(REMOVE_RECURSE ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg)
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
message(STATUS "Configure ${TARGET_TRIPLET}-rel")
file(COPY ${MASTER_COPY_SOURCE_PATH} DESTINATION ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel)
set(SOURCE_PATH_RELEASE ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-rel/openssl-${OPENSSL_VERSION})
set(OPENSSLDIR_RELEASE ${CURRENT_PACKAGES_DIR})
vcpkg_execute_required_process(
COMMAND ${CONFIGURE_COMMAND} ${OPENSSL_ARCH} "--prefix=${OPENSSLDIR_RELEASE}" "--openssldir=${OPENSSLDIR_RELEASE}" -FS
WORKING_DIRECTORY ${SOURCE_PATH_RELEASE}
LOGNAME configure-perl-${TARGET_TRIPLET}-${CMAKE_BUILD_TYPE}-rel
)
message(STATUS "Configure ${TARGET_TRIPLET}-rel done")
message(STATUS "Build ${TARGET_TRIPLET}-rel")
# Openssl's buildsystem has a race condition which will cause JOM to fail at some point.
# This is ok; we just do as much work as we can in parallel first, then follow up with a single-threaded build.
make_directory(${SOURCE_PATH_RELEASE}/inc32/openssl)
execute_process(
COMMAND ${JOM} -k -j $ENV{NUMBER_OF_PROCESSORS}
WORKING_DIRECTORY ${SOURCE_PATH_RELEASE}
OUTPUT_FILE ${CURRENT_BUILDTREES_DIR}/build-${TARGET_TRIPLET}-rel-0-out.log
ERROR_FILE ${CURRENT_BUILDTREES_DIR}/build-${TARGET_TRIPLET}-rel-0-err.log
)
vcpkg_execute_required_process(
COMMAND nmake install
WORKING_DIRECTORY ${SOURCE_PATH_RELEASE}
LOGNAME build-${TARGET_TRIPLET}-rel-1
)
message(STATUS "Build ${TARGET_TRIPLET}-rel done")
endif()
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
message(STATUS "Configure ${TARGET_TRIPLET}-dbg")
file(COPY ${MASTER_COPY_SOURCE_PATH} DESTINATION ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg)
set(SOURCE_PATH_DEBUG ${CURRENT_BUILDTREES_DIR}/${TARGET_TRIPLET}-dbg/openssl-${OPENSSL_VERSION})
set(OPENSSLDIR_DEBUG ${CURRENT_PACKAGES_DIR}/debug)
vcpkg_execute_required_process(
COMMAND ${CONFIGURE_COMMAND} ${OPENSSL_ARCH} --debug "--prefix=${OPENSSLDIR_DEBUG}" "--openssldir=${OPENSSLDIR_DEBUG}" -FS
WORKING_DIRECTORY ${SOURCE_PATH_DEBUG}
LOGNAME configure-perl-${TARGET_TRIPLET}-${CMAKE_BUILD_TYPE}-dbg
)
message(STATUS "Configure ${TARGET_TRIPLET}-dbg done")
message(STATUS "Build ${TARGET_TRIPLET}-dbg")
make_directory(${SOURCE_PATH_DEBUG}/inc32/openssl)
execute_process(
COMMAND ${JOM} -k -j $ENV{NUMBER_OF_PROCESSORS}
WORKING_DIRECTORY ${SOURCE_PATH_DEBUG}
OUTPUT_FILE ${CURRENT_BUILDTREES_DIR}/build-${TARGET_TRIPLET}-dbg-0-out.log
ERROR_FILE ${CURRENT_BUILDTREES_DIR}/build-${TARGET_TRIPLET}-dbg-0-err.log
)
vcpkg_execute_required_process(
COMMAND nmake install
WORKING_DIRECTORY ${SOURCE_PATH_DEBUG}
LOGNAME build-${TARGET_TRIPLET}-dbg-1
)
message(STATUS "Build ${TARGET_TRIPLET}-dbg done")
endif()
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/certs)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/lib/engines-1_1)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/private)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/certs)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/lib/engines-1_1)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/private)
file(REMOVE
${CURRENT_PACKAGES_DIR}/openssl.cnf
${CURRENT_PACKAGES_DIR}/openssl.cnf.dist
${CURRENT_PACKAGES_DIR}/ct_log_list.cnf
${CURRENT_PACKAGES_DIR}/ct_log_list.cnf.dist
${CURRENT_PACKAGES_DIR}/debug/openssl.cnf
${CURRENT_PACKAGES_DIR}/debug/openssl.cnf.dist
${CURRENT_PACKAGES_DIR}/debug/ct_log_list.cnf
${CURRENT_PACKAGES_DIR}/debug/ct_log_list.cnf.dist
${CURRENT_PACKAGES_DIR}/debug/bin/openssl.exe
)
file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/tools/openssl/)
file(RENAME ${CURRENT_PACKAGES_DIR}/bin/openssl.exe ${CURRENT_PACKAGES_DIR}/tools/openssl/openssl.exe)
vcpkg_copy_tool_dependencies(${CURRENT_PACKAGES_DIR}/tools/openssl)
if(VCPKG_LIBRARY_LINKAGE STREQUAL static)
# They should be empty, only the exes deleted above were in these directories
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/bin/)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/bin/)
endif()
vcpkg_copy_pdbs()
file(COPY ${CMAKE_CURRENT_LIST_DIR}/usage DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT})
file(INSTALL ${MASTER_COPY_SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)
vcpkg_test_cmake(PACKAGE_NAME OpenSSL MODULE)

View file

@ -1,4 +0,0 @@
The package openssl is compatible with built-in CMake targets:
find_package(OpenSSL REQUIRED)
target_link_libraries(main PRIVATE OpenSSL::SSL OpenSSL::Crypto)

View file

@ -1,4 +0,0 @@
Source: openssl
Version: 0
Description: OpenSSL is an open source project that provides a robust, commercial-grade, and full-featured toolkit for the Transport Layer Security (TLS) and Secure Sockets Layer (SSL) protocols. It is also a general-purpose cryptography library.
Build-Depends: openssl-windows (windows), openssl-android (android), openssl-unix (!android&!windows)

View file

@ -0,0 +1,32 @@
function(install_pc_file name pc_data)
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "release")
configure_file("${CMAKE_CURRENT_LIST_DIR}/openssl.pc.in" "${CURRENT_PACKAGES_DIR}/lib/pkgconfig/${name}.pc" @ONLY)
endif()
if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug")
configure_file("${CMAKE_CURRENT_LIST_DIR}/openssl.pc.in" "${CURRENT_PACKAGES_DIR}/debug/lib/pkgconfig/${name}.pc" @ONLY)
endif()
endfunction()
install_pc_file(openssl [[
Name: OpenSSL
Description: Secure Sockets Layer and cryptography libraries and tools
Requires: libssl libcrypto
]])
install_pc_file(libssl [[
Name: OpenSSL-libssl
Description: Secure Sockets Layer and cryptography libraries
Libs: -L"${libdir}" -llibssl
Requires: libcrypto
Cflags: -I"${includedir}"
]])
install_pc_file(libcrypto [[
Name: OpenSSL-libcrypto
Description: OpenSSL cryptography library
Libs: -L"${libdir}" -llibcrypto
Libs.private: -lcrypt32 -lws2_32
Cflags: -I"${includedir}"
]])
vcpkg_fixup_pkgconfig()

View file

@ -0,0 +1,6 @@
prefix=${pcfiledir}/../..
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include
Version: @OPENSSL_VERSION@
@pc_data@

View file

@ -1,2 +1,43 @@
set(VCPKG_POLICY_EMPTY_PACKAGE enabled)
file(INSTALL ${CMAKE_CURRENT_LIST_DIR}/usage DESTINATION ${CURRENT_PACKAGES_DIR}/share/openssl/)
if(EXISTS "${CURRENT_INSTALLED_DIR}/share/libressl/copyright"
OR EXISTS "${CURRENT_INSTALLED_DIR}/share/boringssl/copyright")
message(FATAL_ERROR "Can't build openssl if libressl/boringssl is installed. Please remove libressl/boringssl, and try install openssl again if you need it.")
endif()
if (VCPKG_TARGET_IS_LINUX)
message(WARNING
[[openssl currently requires the following library from the system package manager:
linux-headers
It can be installed on alpine systems via apk add linux-headers.]]
)
endif()
set(OPENSSL_VERSION 3.0.5)
if (VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_UWP)
set(OPENSSL_PATCHES "${CMAKE_CURRENT_LIST_DIR}/windows/flags.patch")
endif()
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO openssl/openssl
REF openssl-${OPENSSL_VERSION}
SHA512 e426f2d48dcd87ad938b246cea69988710198c3ed2f5bb9065aa9e74492161b056336f5b1f29be64e70dfd86a77808fe727ebb46eae10331c76f1ff08e341133
PATCHES ${OPENSSL_PATCHES}
)
vcpkg_find_acquire_program(PERL)
get_filename_component(PERL_EXE_PATH ${PERL} DIRECTORY)
vcpkg_add_to_path("${PERL_EXE_PATH}")
if(VCPKG_TARGET_IS_UWP)
include("${CMAKE_CURRENT_LIST_DIR}/uwp/portfile.cmake")
include("${CMAKE_CURRENT_LIST_DIR}/install-pc-files.cmake")
elseif(VCPKG_TARGET_IS_WINDOWS AND NOT VCPKG_TARGET_IS_MINGW)
include("${CMAKE_CURRENT_LIST_DIR}/windows/portfile.cmake")
include("${CMAKE_CURRENT_LIST_DIR}/install-pc-files.cmake")
else()
include("${CMAKE_CURRENT_LIST_DIR}/unix/portfile.cmake")
endif()
configure_file("${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake.in" "${CURRENT_PACKAGES_DIR}/share/${PORT}/vcpkg-cmake-wrapper.cmake" @ONLY)
file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")

Some files were not shown because too many files have changed in this diff Show more