Neos VR - Frooxius
Sorry for small build! Pushing this now so the 2020 badge doesn't get delayed by other stuff. A few other fixes and tweaks as well.

Compatible with previous build.



New Features:
- Added bonfire badge for users registered in 2020 (badge created by @Coffee | Programmer)
- When the user is away from the headset, EyeManager will now close their eyes

Tweaks:
- Merged Czech locale additions by @rampa_3 (UTC +1, DST UTC +2)
- Merged Japanese, Esperanto and Chinese locale additions by @Melnus
- Merged Korean locale additions and tweaks by @MirPASEC
- Merged French locale additions and fixes by @brodokk
- Merged Japanese locale fixes by kazu0617

Bugfixes:
- Added component type validity checks at multiple levels, to prevent cases of attaching invalid genric types from causing a session crash (based on report by @badhaloninja)
- Fixed UIX Mask getting stuck in visible state after ShowMaskGraphic is checked and then unchecked (reported by @ProbablePrime)
- Fixed tool lasers not working when lasers are disabled (reported by @Electronus)
- Fixed exceptions from cast nodes when casting values to types that won't fit the incoming value
-- When casting value from a wider type, make sure you know that the value will fit in the target value, otherwise you'll get invalid value
-- When casting decimal values to integers, the integer value will be clamped

Neos VR - Frooxius
Hello everyone! I hope everyone had a great holidays. I've accumulated a bunch of new additions, tweaks, optimizations and important bugfixes, so here's a new build!

You can now rightclick on the virtual desktop in the dash! There's new "legacy input" mode as well, which will make the virtual keyboard work with some apps like Blender.

Neos now also uses the proximity sensor in your headset to tell if you're wearing it or not, which is exposed through LogiX as well so you can make lots of cool effects for your avatar.

There are some optimizations in this build as well, particularly for duplicating objects, which is now significantly faster (especially with really complex objects). This doesn't help only when you manually duplicate things, but also for any interactive items that duplicate templates for their function.

There are some other tweaks and bugfixes too. Lasers should behave a bit better now in some scenarios and I dug down into one elusive bug that caused the UI to freeze, particularly when using Japanese locale.

New Features:
- You can now right click in the virtual desktop on the dash using the secondary action (Joystick/Touchpad click)
- Neos now tracks if the user is present in the headset (using proximity sensor if available) and uses this status for user presence (requested by @3x1t_5tyl3, @Shifty | Quality Control Lead, @Hayden and @H3BO3)
-- IsPresent status/node now indicates if they're both present in the world and in the headset (existing node instances are autoconverted to IsPresentInWorld)
-- Added IsPresentInWorld and IsPresentInHeadset nodes to allow querying individual states
-- If not supported by hardware or heuristics (by detecting movement) it IsPresentInHeadset will always be True
-- Currently AFK Kick still uses only the IsPresentInWorld status, but this can be changed (let me know what you'd prefer for default, will be a setting later)
-- Your Online status is now automatically set to Away if you take your headset off without having to wait for the inactivity timer (only if set to Online though, Busy/Invisible won't be affected)
- Added ExcludeActiveUser to AutoLookAtUser, which will never target the user under whose hierarchy it is placed when enabled (requested by @LeDrascol)
- Neos will now periodically refresh connected audio devices whenever the audio input device dialog is selected, hiding devices that were disconnected and adding any new devices that were connected in the meanwhile (requested by @LeDrascol)
- Added "Legacy Input" mode to the virtual desktop, which will send keyboard scan-codes rather than Unicode codes when typing to a desktop application (based on report by eduprimowl and @Enverex)
-- This will make typing work with certain applications that don't support modern Unicode text input on Windows (e.g. Blender)
-- I strongly discourage enabling this unless the app you're using at the moment really needs it, as you'll get odd behavior (the virtual keyboard keys performing a different action than they show and some keys not working), particularly when using different keyboard layouts in Windows
-- Using standard US keyboard layout in Windows is highly recommended when this is on

Optimizations
- Heavily optimized Slot/Component duplication process, both in speed (CPU usage) and memory use (using pooling to avoid large new allocations with every duplication)
-- Duplicating particularly complex hierarchies (e.g. with complex LogiX setups) should now take fraction of the time and reduce performance degradation when done frequently
-- Note that this doesn't affect just manual duplication, but also any items that use duplication as part of their functionality (e.g. spawning projectiles)
- Optimized dependency and hierarchy lookups during the saving process, significantly reducing CPU usage (and some memory)
- Optimized DictionaryList<K,T> (used internally) for single item storage, to prevent extra allocations when storing a single item
- Small optimizations when querying components of particular type

Tweaks:
- Added extra rate limiting for certain queries on the cloud API to prevent performance degradation due to improper use of the API by 3rd parties
- Improved internal error handling for the Cloud API
- Removed deprecated baked-in support for Oculus without Touch controllers
- Removed deprecated support for Daydream, Cardboard, GearVR and Oculus Go headsets
- Contact list items now require lock in to press, preventing selection from happening when scrolling (requested by @Alex from Alaska)
- In world laser will no longer activate when it's disabled and there's an userspace item behind it (based on feedback by @AshtonSparx and @Shifty | Quality Control Lead)
- Laser length shown to other users won't be updated to a longer one, if the laser is fading out, eliminating cases where the laser briefly flashes in the world (based on feedback by @AshtonSparx and @Shifty | Quality Control Lead)
- Name badge now becomes semi-transparent when the user is away from their headset (based on feedback by @H3BO3, @Cyro, @Dante, @Turk, @ProbablePrime, @Ryuvi | Technical Artist, @ohzee, @Lewis Snow | Lead Audio Engineer in #testing)

- Merged Japanese, Esperanto and Chinese locale additions by @Melnus
- Merged Czech locale additions by @rampa_3 (UTC +1, DST UTC +2)
- Merged Korean locale additions by @LUA#6690
- Merged Spanish locale additions by @Ruzert
- Merged Japanese locale tweaks by @Aesc
- Fixed invalid Inventory tutorial string in the Polish locale

Bugfixes:
- Fixed font glyph pinning getting stuck in some cases, when glyph atlas is invalidated while there are still glyphs scheduled to be rendered, causing text renderer or UI to become frozen (reported by @Aegis_Wolf | Art Director, with replication case found by @Shifty | Quality Control Lead)
-- This should also fix UI randomly freezing and crashing for users using the Japanese locale (or any others with a high glyph count) reported by @あむ(Rabbuttz) and @かず (please let me know if the issue still persists, I'm not 100% certain that this will resolve the crashes)
- Fixed ValueGraphRecorder having off by one error when assigning values, causing the the LineMesh graph to have visual artefact, showing the last value at the beginning (reported by @ProbablePrime)
- Fixed Undo system getting spammed with repeated undo steps for all users when trying to set a driven field (e.g. a color, as reported by @Hayden, @chemicalcrux, @Shifty | Quality Control Lead and @Cyro)
- Loged errors when formatting localized messages now include which locale code does the invalid message belong to
- Added logging for any errors in the save tasks when exiting Neos (e.g. saving settings)

Neos VR - Frooxius
Another small build, I was travelling today to visit family, but here are some small additions and improvements that I didn't want to put on hold.

You can now adjust Brightness and Opacity of the virtual desktop! It'll now also work on hybrid GPU systems using a fallback capture method. It has worse performance, but it should work. I made tweaks so the capture only happens when the virtual desktop is actually active in the dash.

Also Oculus has released hotfix for their SDK which seems to fix Neos running through SteamVR with Oculus Link, resulting in performance penalty.

Hope that everyone's having great Holidays!

New features:
- Added Brightness and Opacity sliders for virtual desktop in the dash
- Added fallback desktop capture method using uWindowCapture library, which uses BitBlt method that works on hybrid GPU systems (e.g. with integrated and dedicated GPU)
-- Note that this capture method is significantly less efficient and framerate of Neos and/or the capture might be poor when in use
- Added "Desktop Renders" to debug dialog, which tracks how many desktop clone textures were rendered in the last frame
- Added templates for GitHub issues to provide more structure and make it clear what information is needed for the quickest resolution of reach type of issue

Tweaks:
- Brightness, Opacity and Follow Cursor settings for virtual desktop are now persistent
- Set default brightness to 95%, to help compensate overblown whites in the VR headset (based on report by @Shifty | Quality Control Lead)
- Rendering desktop texture is now skipped when all the components are disabled/inactive in hierarchy to conserve performance
- Security improvements for virtual desktop (based on feedback from @Faolan (Rad))
- Sanitized session ID from user profile data when the session is hidden or private (based on report by @Faolan (Rad))
-- This prevents users from joining hidden session easily in some cases, but please note that hidden sessions not designed to secure access, they're only hidden from the listing in most places. If you need to prevent people from joining use Private/Invite only which verifies each join
- Upgraded to Unity 2019.4.17f1 (from 2019.4.16f1)
- Upgraded to Oculus SDK v19.1 (from v19.0) which includes OVRPlugin 1.55.1 (previously 1.55.0)
-- This should fix Neos running through SteamVR when in use with Oculus Link (reported by @Enverex and others)

- Merged Japanese locale fix by @Melnus

Neos VR - Frooxius
Sorry for just a small build, things are a bit hectic as I'm getting ready for visiting home for Holidays. Here are some more bugfixes to fix crashes and also a bunch of security improvements and other fixes.

Compatible with current build.

New Features:
- Added new statistics to the Neos Discord Bot as well as the backend - number of users in public sessions, total number of public sessions and how many are active (have any users in them) and list of active Neos versions

Tweaks:
- Merged Japanese locale updates by @Melnus
- Merged Polish locale additions by @art0007i
- Merged Spanish locale additions by @Ruzert
- Merged Russian locale additions by @Shadow Panther [RU/EN, UTC+3]

Bugfixes:
- Improved security of virtual keyboards, so in-world keyboards cannot inject inputs to Userspace (based on report by @Rue Shejn | Artist 3D)
-- Once the same keyboard is favorited and loaded into userspace it will be able to work fully
- Improved cloud sercurity (based on report from @Veer | Chief Moderation Officer)
- Added extra validations for connecting user's data to improve security
- Neos now won't check for changes in monitor setup after initial initialization, as Steam aggresively injects itself into those checks and crashes the system on some machines
-- If your screen configuration changes (e.g. adding/removing a monitor) you'll need to restart Neos
- Fixed Create (or Write) Dynamic Variable node creating variables as persistent in some cases, even when "CreateNonPersistent" is set to true (reported by @orange and @chemicalcrux)
- Added extra diagnostics for establishing network connections and cloud relay/UDP punchthrough to help diagnose problems reported by @Readu

Neos VR - Frooxius
Hello and welcome to another weekly update!

With the Holidays around the corner we hope that everyone is getting into a festive mood. The Winter holiday party hosted by Creator Jam is taking place today at 2PM EST (UTC 19:00), don’t miss it if you have the chance to visit!

We have also brought you some new features, notably virtual desktop in the Neos dash! Now you can view and interact with your desktop without even leaving Neos and we’ve already seen users build extra functionality on top!

As part of our goal to support a wide variety of hardware and integrate them with a fully functional metaverse engine, we’ve introduced support for the OWO Game haptic vest which is currently in development.



Christmas themed livestream
On our regular Friday livestream we have adopted the festive mood and decorated our avatars and the environment with Christmas themed objects and went out and rode sleds in the world, in the classic Neos fashion with lots of shenanigans. If you missed the stream, you can watch the recording here:



Virtual Desktop Access in Neos Dash
One of the major features added this week is ability to access your desktop directly from the Neos dash. You might’ve noticed the new “Desktop” button at the bottom bar of your Neos dash, accessing your desktop is as simple as clicking this button and then using your lasers to interact with the screen.



If you’re using multi-monitor setup, you can invoke a screen selection menu by pressing the App/Menu button (the one that normally opens your context menu) on your controller while pointing at the screen and selecting a different screen.

This menu also lets you invoke the virtual keyboard for typing and triggering shortcuts. The system automatically works with all custom keyboards as well and Unicode input, giving you a lot of power and flexibility to customize the access.

While the default Neos keyboard doesn’t expose functional keys like the Win key, or the functional keys (F1, F2, F3, F4…), they are fully supported by the underlying system, allowing anyone to add them to their customized keyboards.

For those who use their desktop with the physical keyboard and mouse inside of VR, we have added “Follow Cursor” mode, which will switch the active screen to whichever one the cursor is at. This can improve workflow with multi-monitor setups, as you don’t have to pick your VR controller up to switch screens.



This feature is also a first step towards screen share functionality, which will allow you to share your screen to other users. This is not supported at the moment and we don’t have timeline on when it’s going to be prioritized yet, but we hope that the desktop access itself makes it easier to bring content to Neos and make your stay on the platform more comfortable.

OWO Game haptic vest integration
Following the recently added haptic framework, we have integrated another haptic vest directly with Neos, bringing your more choice in hardware that you can use with Neos. This vest is still in development, if you’d like to see more check out their official website.

Since the vest is based on a different principle, we had to make some adaptations and extensions to our haptic system. Haptic Volumes now support a list of “hints”, which allow the driver to map a specific sensation provided by the suit maker. For example instead of generic “pain” sensation with certain intensity, you can specify sensations like “insect bites” or “dagger wound”.

This way you can customize the in-game haptics for specific hardware, while other hardware still uses the more general sensation type with intensity. For example you could create a haptic volume with pain sensation and 25 % intensity and add an “OWO.InsectBites” hint to it. If no hints are present, the driver for the OWO Game vest will use the closest matching sensation.



Community highlights
Hey everyone! Hope your Holiday Festivities are all going well! If not here’s some weekly goodies to cheer ya up!

Playing DOOM in Neos by GhostZ
Recently, we pushed out a really nice feature “Desktop Mirroring!”, that’ll let you view your desktop within Neos! This is really handy if your working on projects, want to quickly look at your desktop, or even check things like twitter or discord. Or even in GhostZ’s Case, can it play Doom? Why yes, it can.


https://twitter.com/i/status/1340223411394637824

Cyberpunk Cathedral by Zanibar
With the holidays fast approaching and everyone locked in doors due to COVID, and everyone playing Cyberpunk2077. I know sometimes we all need a nice gathering spot for those of the more pious nature. Made by Zanibar it’s the Cyberpunk Cathedral! Maybe you can speak to the ghost in a machine in here!



Neos Pong by Rabbuttz & kinoko_b
With all the Neos Festa 2 Festivities going on this week, I didn’t expect to see this! From the minds of Kinoko and RabbutZ we have Neos Pong! A Nice 1v1 Match for those of you with a more competitive nature, will you be the last to ping? Or the first to pong.


https://twitter.com/Rabbuttz/status/1338386184246968321

First peer reviewed study using Neos published by SHFR
One of our most prominent users in the education/research sector, the Sydney Human Factor Research (SHFR) have been using Neos ever since we released public beta back in May 2018 and have used it as a tool to conduct a variety of studies.

The first of those was now published in a scientific journal, with more to come. The study is named “Law and (rec)order: Updating memory for criminal events with body-worn cameras” and studies how criminal reports can change with the presence of a body-worn camera.

A simulated theft scenario was created in Neos VR which was then experienced by a group of participants (n = 97) with a virtual chest mounted camera tracked by a motion controller in Neos. They were then asked to recall the events, with some of them viewing the recorded footage from their chest camera and others using control footage.

If you’d like to read the study in detail, you can find it here: https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0243226

We are very proud that Neos can serve to improve science and research and we hope to see more of such use cases.

------------------------------

But that’s all for this week! We hope everyone has been enjoying their week and hope to see you sometime in Neos VR Soon! Don’t forget there’s also a Creator Holiday Party going on today. Don’t forget to stop by and bring a gift! It’s an Trade Santa Party! :)



Neos VR - Frooxius
Just a small patch with a bugfix for some crashes occurding on some systems as well as few other fixes and tweaks. Compatible with last build, don't need to update right away if you're not affected.

New features:
- You can now pass -Invisible argument to Neos to force your online status to be invisible on login (requested by @3x1t_5tyl3)

Tweaks:
- Steam and Discord rich presence is now cleared when the Online status is set to Invisible (requested by @Psychpsyo, @Shifty | Quality Control Lead and others)

- Merged Japanese locale updates by kazu0617
- Merged Dutch locale additions by @AnotherFoxGuy

Bugfixes:
- Added extra diagnostics for establishing network connections to help diagnose problem reported by @Readun
- Made modifications to uDesktopDuplication library to prevent Steam Overlay from aggressively injecting itself and causing crashes on some machines
-- Please let me know if this helps on your machine if you were affected, I can't replicate this bug on any of my machines
- Fixed being able to equip tooltips in some cases without having the permission to do so (reported by @seif1)
- Fixed procedural meshes using segmented builder throwing exceptions and failing to update in some cases with SmoothNormals mode on

Neos VR - Frooxius
Just a small build with some polish for the virtual desktop and few other things. Portrait mode displays now work, switching active display works when Follow Cursor is on and hopefully some crashes due to Steam overlay injecting itself should be gone now.

New Features:
- Added AssetOptimizationBlock component, which will block most automatic optimizations on any assets under its hierarchy
- Added DisplayInfo component (under Input/Desktop) which provides basic information about a display with given index (Resolution, Offset, DPI, Orientation, RefreshRate (if known) and if the display is primary)
-- Note that like other components, this only works in userspace at the moment
- Added ChildrenSaveBlocker component (under Utility), which will prevent children of the Slot from being saved, regardless of their persistent status (based on request by @Furf)
- Added Orientation property to RawImage and RawGraphic, which allows rotating the UV coordinates of the displayed image

Tweaks:
- Portrait (both clockwise and counter-clockwise) and Upside down displays are now properly supported by the virtual desktop on Dash
- Any non-persistent parts of items are now excluded from generated thumbnail when saving the item
- When Follow Cursor mode is enabled and another screen is switched through the in-game UI, the mouse cursor is positioned to this screen
-- This fixes the active screen from being stuck even if it's switched ingame (issue discovered by @Tatsu Kimiero and @Shifty | Quality Control Lead)
- Updated featured icon in the world list (updated by @Coffee | Programmer)

- Merged Korean locale additions by @MirPASEC
- Merged Esperanto, Japanese and Chinese locale additions by @Melnus
- Merged Czech locale additions by @rampa_3 (UTC +1, DST UTC +2)

Bugfixes:
- Fixed screenshots not saving properly into Steam Screenshots library or documents if the screenshot is deleted too quickly (based on report by @Tatsu Kimiero)
- Fixed avatar near clip set to 0 causing smooth POV camera to break (reported by @Shifty | Quality Control Lead)
- Changed initialization order of desktop duplication API library, so it happens before SteamAPI is initialized, to potentially prevent Steam overlay from agressively injecting itself into the functions and causing crashes on some systems (based on report by @pek#5602, @Jiink, @Zanibar, @thotgamma)
-- I'm not sure if this actually helps as this issue doesn't occur on any of my systems, please let me know if you're still experiencing this problem
- When importing models, any asseet optimizations (including material deduplication) are blocked to avoid the automatic optimization from corrupting the import process (based on report by @Enverex, @Shifty | Quality Control Lead and @chemicalcrux)
- Fixed display layout positioning displays incorrectly with vertical offsets (based on report by @Veer | Chief Moderation Officer)
- Fixed Android builds failing to compile (reported by @Azora Husky)

Neos VR - Frooxius
Hello! Sorry for the lack of builds recently, I haven't been feeling well lately so work was slow (plus I played some Cyberpunk), but here's a build with a new feature I wanted to add in a while - you can now use your desktop from within Neos dash! Interactions work, virtual keyboard works (including custom ones) and there's even mode where it auto-switches screen based on where your mouse cursor is (it's always annoyed me picking up a controller to switch screens in SteamVR dash). It's still rough around the edges a bit, but should be a good basis.

Neos now also has native support for the OWO Game electro-haptic vest (https://owogame.com/) thanks to a devkit provided by the team, with some extensions to Neos' haptic volume system to better map to different sensations the suit provides.

A bunch of other additions as well, new UIX layout component, and some smaller useful things and diagnostics for the voice streams. This build has a few important bugfixes as well that should fix some session crashes and other problems as well.

New Features:
- Added in-game desktop access, allowing your to view and interact with your desktop from within VR on the Neos dash
-- You can view and switch between any of your screens and use your lasers and in-game keyboard to interact with them
-- To switch to another screen or show the virtual keyboard, point at the screen and press the Menu button (one that normally opens context menu)
-- Custom virtual keyboards (including Unicode input) are supported as well. Modifier and function keys (e.g. Win key, F1, F2, F3, F4...) will be passed correctly as well if you add them to your custom keyboard
-- You can enable "Follow Cursor" mode, which will automatically switch active screen to the one where the mouse cursor currently is (this is to allow easy use when using physical keyboard and mouse with multi-monitor setup)
-- This is initial support, more behaviors and tweaks will come (e.g. scrolling with touchpad/joystick, right clicking, better cursor behavior and so on)
-- You cannot share your desktop to other users yet, that is a separate feature that will come at some later point in the future

Desktop support is provided by several building block components, which can be used to create your custom setup as well. Note that most of these only work in Userspace for security reasons.
- Added DesktopTextureProvider, which provides desktop texture of display with given index
- Added DesktopInteractionRelay, which relays in VR inputs (laser clicks and virtual keyboard) to the system
-- In order to relay the inputs, this component needs to have an active focus
- Added DesktopDisplayLayout, which generates UI rects from a template based on your physical display layout
- Added DesktopControlDialog which provides controls for switching active display and other options
- Added DesktopController which combines above components into full interaction system
- Added initial support for OWO Game haptic vest
-- To enable the support, pass -Enable_OWO <IP> argument at startup with the IP of the server for interfacing with the suit
-- When no sensation hints are present, the driver will map one of the sensations based on its type and intensity
-- To use specific sensation type, use a sensation name prefixed with "OWO.", e.g. "OWO.MachineGunshots"
- Added list of haptic sensation hints to HapticVolume
-- This allows triggering specific predefined sensations with certain haptic devices. If the device doesn't understand any of the hints, they'll be simply ignored and generic mapping used
-- Currently it hints are only used for the OWO haptic vest, bHaptics uses generic continuous mapping

- Added FixedRectFitterLayout UIX layout component
-- This component will take all the child RectTransforms with fixed size and position (using OffsetMin and OffsetMax) and fit them within the parent rect without changing their relative positions and sizes
-- You can also selectively disable Shrinking and Growing of the fixed size
-- Additionally you can determine how will the child rects fit into the parent one:
--- FitLongerSide (will ensure that the child rects are fully contained)
--- FitWidth
--- FitHeight
--- Stretch (will not preserve aspect ratio and make sure the children rects fully fill the rect on parent axes)
- Added HorizontalStart and HorizontalEnd to SphereAligner, which allows adjusting the mapping range to a horizontal slice of the sphere (requested by @AlienInArea51 (MR-Alex))
- Added "IsBatteryCharging" property to the controller nodes, which indicates of the controller is currently being charged
-- Note that with Oculus runtime this is not supported at all, as they don't provide API to check the status. Currently it'll only work with SteamVR for controllers that report this state
- Added HPReverbController node, for accessing the raw values of the HP Reverb G2 controller (based on request from @Rue Shejn | Artist 3D)
- Added hideFromListing <true/false> command to headless to allow setting whether the world is hidden from listing or not (requested by @Raith (CytraX))
- Added mechanism for touchables (including UI canvas) to intercept the context menu action and open a custom one
-- Currently this is just internal and no way to use this directly
- Added packet loss detection mechanism for voice streams to help diagnose choppy voice issues (based on report by @Shifty | Quality Control Lead, @Zephyr.С, @Zane and @Hayden (PolyLogiX Studio))
-- This information is now accessible through AudioStreamMetadata, which now reports total number of packets, total lost number, last lost and loss ratio
-- The inspector displays this information as well. The graph now has a new cyan line indicating packet loss

Tweaks:
- ModalOverlay now has CloseOnContextMenuAction, which will allow it to be closed using the context menu action
- Locale postprocessor now generates missing keys file for each locale individually, rather than one large file for better organization ()

- Merged Japanese, Esperanto and Chinese locale additions by @Melnus
- Merged Czech locale additions by @rampa_3 (UTC +1, DST UTC +2)
- Merged Korean locale tweaks and additions, including Steam store translation by @MirPASEC
- Merged Spanish locale tweaks and additions by @Ruzert
- Merged German locale additions by @Bluigi
- Merged Polish locale additions by @art0007i
- Merged Russian locale tweaks and additions by @Shadow Panther [RU/EN, UTC+3]

Bugfixes:
- Fixed deleted world/item recovery process breaking and producing corrupted archive containing only some of the items (based on report by Kazu)
- Fixed issue where database repair process would fail due to the corrupted database containing duplicate entries with the same unique key (based on report by @sirkitree)
- Fixed invalid access to already disposed resources when marking changes on objects that were simultaneously deleted by another user, resulting in a world crash (encountered/reported by @Medra, @Cid and others)
- Fixed invalid material property assignment in the Assimp.NET wrapper, resulting in any non-texture properties getting lost during model export process
-- This fixes material color being lost on export (reported by @tutinoco#6130)
- Fixed the tilt of italics glyphs being calculated incorrectly, making the glyphs tilt less the more they extend below baseline and resulting in inconsistently tilted glyphs (reported by @Alex from Alaska)
- Fixed incorrect check if point is inside an IntRect when the rect has a horizontal offset
- Fixed rendering camera to texture not reseponding the UseTranformScale property (reported by @Coffee | Programmer)
- Fixed grabbing slot reference randomly breaking if the Slot has been just destroyed (reported by @chemicalcrux)
- Added a guard against exceptions in touch grabbing system causing the player to be respawned (reported by @chemicalcrux)
- Fixed interactive camera breaking, corrupting the data model and causing random crashes when locally deactivated (e.g. using a world culling system) (reported by @Earthmark, @Rukio, @Shifty | Quality Control Lead, @Tatsu Kimiero, @Snooper and @Princess)

Known Issues:
- Portrait mode screens currently won't work correctly

Neos VR - Frooxius
Hello everyone and welcome to another weekly update!

This week we have some major community highlights and announcements for you. The Creator Jam is putting together a Winter Holiday party with gift exchange on December 20, details are below if you’d like to participate.

This Saturday also saw two notable events. The content creator festival “Neos Festa” by the Japanese community has officially opened with many amazing exhibits and we saw the first opera concert held in Neos, featuring the Amadeus Artists from Vienna. If you missed the live streams you can check it out below!



Creator Jam Winter Holiday party
The weekly community-held Creator Jam is planning a holiday party later this December with a gift exchange. If you’d like to join in, check out the official announcement:

#Discussions_QuoteBlock_Author
Hello everyone!
The holidays are almost upon us ...so it's time for:
Creator Jam's Winter Holiday Party #2

Sunday, December 20
Starts at 2PM EST(UTC 19:00).

Come hang out at our yearly Winter party exchanging gifts, dressing up, and enjoying each other's company.

There will be a gift exchange held at 2:30PM EST(UTC 19:30).
Anyone that brings a gift can participate in the gift exchange.

Have a gift but don't want to participate, feel free to give gifts to specific people or everyone :)

Everyone is welcome.

I look forward to seeing all!
Here are some photos from the last year's event!



(also this doesn't lag as much anymore thanks to the audio system optimizations!)

Amadepolis VR Opera Concert
Saturday also saw another notable event, an unprecedented concert with opera singers, presented digitally through Neos VR to a live remote audience. This event combined mixed reality capture of the opera singers with thematic virtual environments.

The event was viewed by a live audience in Neos VR as well as streamed live on YouTube. If you missed it, you can watch the recording below, it’s definitely worth a watch, including some of the afterparty.



This is an amazing achievement by everyone involved and not only a way to bring art to the audience safely during the pandemic, but to also expand it with virtual elements that wouldn’t be possible in real life.

Here are the official credits for the artists and the production team that put this whole experience together:

Live Moderation:
Neivi Martinez

The Artists:
Penelope Kendros - Soprano
Laura Olivia Spengel - Mezzosoprano
Cornelia Sonnleithner . Contralto
Neivi Martinez - Soprano
Timothy Jon Sarris - Tenor

The Accompanists:
Elisa Mazorati
Alice Chang
Byron Zuang Yue
Evgeni Ganev

Production Team:
Sid R. Sittner - Art Director and VR Expert
Konrad Gill - Co-Production und VR Expert
Neivi Martinez - Executive Producer & Artist Management

Special Thanks:
Niederösterreich 3D - Monuments of Amadeus & Beethoven
Marcin Lubecki - 3D Anfitheater
Outallectuals -Intro/Outro Theme - Afterparty Music
Rite of Community by Potzman - Rites of Calling- Download under: https://outtallectuals.bandcamp.com/album/rites-of-calling-ep-outta055
The event was realized in cooperation with Amadeus Artists Vienna, ViARsys and Neos The Metaverse.

Neos Festa 2
This Saturday the Japanese community has opened the second Content Creator Festival dubbed “Neos Festa”. You can now visit the world in Neos and check out all the amazing submissions both by the Japanese and international community, with each submission taking the form of a booth.

In the world you can find a stylish UI both in Japanese and English, which allows you to open individual booths as well as filter them by category, provide descriptions and links to authors' websites or Tip Jar and of course opening the booth itself.



You can have multiple booths open at once, but the system will automatically close them as you go, keeping the system resource usage low and the world running smoothly. The world’s architecture was designed by GONT_3 and komashiba, with LogiX and UIX by orange and rhenium and logo by coreless. The project is also utilizing the 3rd party Neos .js API client by Bitman.



We recommend visiting the world and checking out all the submissions yourself, ranging from cool worlds, item exhibitions, gadgets, utilities and even playable games. If you missed the opening event, you can watch the recording here:


You can also follow the event on Twitter under the #NeosFesta hashtag.

We’re very happy to see more events like this, celebrating the creativity and freedom of expression in Neos VR across the international communities.



---------------------------

This his all for this weekly update. Thank you everyone for reading and big thanks to everyone for your creativity and hard work making all of these amazing events happen in Neos! See you the next week with more Neos news.

Neos VR - Frooxius
Sorry for another small build, just a few additions. Mainly ability to ban users on headless without them having to be present and some new diagnostics for audio streams to help gather data for voices being choppy. Made some tweaks to the PatreonSkyController as well, so it displays better now!

New Features:
- Added banByName and unbanByName commands to headless, which allow (un)banning user by their Neos username without them having to be present in the session (based on request by @Shadow Panther [RU/EN, UTC+3])
-- Make sure you have the correct name before using this, using their UserID is preferable (you can get it from logs)
- Added banById and unbanById commands to headless with same functionality as above, but using UserID instead (starting with U-)
- Added NormalizedStart and NormalizedEnd to SphereAligner, which allows aligning the items to a section of sphere
-- Default is 0 to 1, but for example 0.5 to 1 will map to the upper hemisphere
- Added AudioStreamMetadata (under Assets/Utility) which provides diagnostic information for an audio stream
-- All the information is local and will likely be different for each user
-- It provides buffer state (unread samples, missed (underrun) samples and so on)
-- It provides encode state for user owning the stream (samples vailable for encode, frame size and more)
- Inspector for AudioStreams now shows diagnostic information as well as diagnostic graph to help diagnose issues (based on report by @Zephyr.С and @Shifty | Quality Control Lead)
-- The graph shows number of unread samples (white) and number of last missed samples (red)
- AudioStreams now support adjusting the buffer size, rather than using a fixed one

Tweaks:
- PatreonSkyController will now use SphereAligner instead of random positioning to ensure better spacing of Patreon names and pictures
-- By default it uses a the upper hemisphere, but the range is configurable in case you want to set it up in your world (based on feedback by @Veer | Chief Moderation Officer)
- PatreonSkyController now shows all eligible Patreons, rather than just a fixed random subset, the order is randomized on every load / enable/disable

- Merged Dutch locale additions (including MTC 2.0) by AnotherFoxGuy
- Merged Spanish locale tweaks and additions by @Ruzert

...