Commit graph

35357 commits

Author SHA1 Message Date
56c3bad002 V8 memory usage statistics 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
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
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
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
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
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
f241ede316 Initial fixes for building on Windows 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
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
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
cd02b22bd7 Don't crash in uncaughtException() if there isn't an exception 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
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
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
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
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
2960cc0284 Add missing override 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
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
1a4eb3ac62 Keep return script value 2023-05-19 00:17:36 +02:00
Dale Glass
e5217c44f0 Build fixes 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
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
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
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
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
Dale Glass
0a2d733c39 Fix unique_ptr new[]/delete mismatch
This is likely a crash fix
2023-05-05 23:59:09 +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
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
8b973bdfa3 Remove executable permission from a bunch of files 2023-03-14 00:02:33 +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
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
56de0f8d56 Fix material colors for glTF
Co-authored-by: Julian Groß <julian.g@posteo.de>
2023-01-11 14:43:23 +01: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
f1d7421698 Workaround for Nvidia driver bug 2022-12-23 20:25:10 +01:00
Dale Glass
61fa164791
Merge pull request #221 from JulianGro/fbx_blender
Implement initial Blender FBX metallic support
2022-12-10 21:10:02 +01:00
Dale Glass
26fd8839a6
Merge pull request #269 from daleglass-overte/fix-uninitialized-blendtime
Fix "may be used uninitialized" warning for blendtime
2022-12-10 21:09:47 +01:00
20e673e364 Fixed weight comparison 2022-12-10 19:51:11 +01:00
088da60116 Added epsilon for dimensions of sphere in SphereCollapse 2022-12-10 17:07:31 +01:00
a5d12fc97d Made ExtractionMode::SphereCollapse fail more gracefully in case of incorrect data 2022-12-10 14:33:34 +01:00
Dale Glass
81b2af88ae Clear _meshStates after warning, not before.
Fixes #257
2022-12-03 00:51:06 +01:00
Dale Glass
b5c5c9ad3e Fix "may be used uninitialized" warning for blendtime 2022-12-03 00:33:22 +01:00
Dale Glass
9a80e696ed Fix warnings generated when building tests 2022-11-27 19:51:58 +01:00
Dale Glass
dd0439e40d Make the GLTF serializer count all other errors it detects 2022-11-26 14:49:54 +01:00
Dale Glass
cd132246e6 Fix crash with models from ReadyPlayerMe by adding extra validation.
This also adds test code for the GLTF loader.
2022-11-26 14:36:37 +01:00
Dale Glass
9a828077bd Add Overte e.V. copyright 2022-11-01 20:49:00 +01:00
Dale Glass
7d3b45753c Comment moved to header 2022-11-01 17:16:14 +01:00
Dale Glass
20548b7b24 Fix mysterious UUID issue
Turned out to be a remainant of previous code that stopped working
correctly due to the changes
2022-11-01 17:15:50 +01:00
Dale Glass
24d4f87341 Improve logging system termination. Send a signal and wait until done. 2022-11-01 17:15:16 +01:00
Dale Glass
d722650806 Don't forward a change to QSetting if the setting didn't change
This considerably reduces the number of disk writes
2022-11-01 17:14:10 +01:00
Dale Glass
f7ab2be173 Unimportant changes
Signals were made non-references for debugging, but that shouldn't
actually matter since Qt copies the parameters anyway.
2022-11-01 17:13:30 +01:00
Dale Glass
51e1df5e4c Improve logging, v3 2022-11-01 17:08:08 +01:00
Dale Glass
06d7b89455 Improve logging, forgotten commit 2022-11-01 17:07:02 +01:00
Dale Glass
b540c426c1 Use logging categories 2022-11-01 17:06:33 +01:00
Dale Glass
0e50b51a63 Improve documentation 2022-11-01 17:01:16 +01:00