AssetInterest: Initial commit, module is disabled from defauld build and not in any default config xml:s.
AssetInterestPlugin: New feature that will unload assets that are no longer referenced in the interest radius. Essentially will unload mesh/texture/material assets when any EC_Mesh or EC_Material (so programmatic ones too) gets destroyed if its not used anywhere else.
AssetInterest: Remove config read/write functionality, this was a bad idea to begin with. Scenes that set asset interest policies would carry their settings to other worlds if the get to the clients config. Client would not even know this kind of behaviour has been set. All scenes that want to leverage these features need to set then on when client connects.
AssetInterest: Only iterate scene if radius inspection is enabled. Do asset unload/load processing always as eg. inspectRemovedEntities might be enabled.
SyncManager: Expose per connection SceneSyncState objects to scripting on the server. Allow script logic to deny addition of entities and components to the sync state for a particular client. Once a entity or component has been added to peding state it will only go to the client if its explicitly added to the sync state via the SceneSyncState object for that client. First phase of the implementation allows to prioritize the 'what and when' but does not allow remove entities from particular sync states during runtime. This can be added later if needed. This enabled worlds to optimize what entities get sent to each client during login and at later stages as well.
SyncStatePriority: This example scene and its script shows two ways to prioritize entities/components for client connections. First mode is 'dump' mode that just releases one entity at a time to the sync state untill all have been released. Other mode requreires you to put avatar application to the scene and enable the mode explicitly from the code (totally optional but makes for a better real world example). This 'smart' logic will release the closest entity to the clients avatar into the sync state untill they are all released. Script is highly modifyable with simple parameter tweaks on top of the file.
Entity: Make a code path for scripts to get component ptr list with 'var comps = ent.component;'
SyncManager/SyncState: Add implementation for denying/accepting individual components from a entity to be added to the sync state. Make the internal book keeping simpler by removing the unneeded list for pending ents.
SynStatePriority example: Add more features to utilize everything from the c++ side: Accept entities per component to the client with prioritizing placeables first. New mode for releasing all entities to the client with only placeable then release rest one component at a time. Made play nice with avatar application in all modes.
SyncState: Fix potential bugs in when releasing all or per entity to the sync state. Iter through all components in these cases so we cannot be missin anything in the client state without us knowing about it.
SyncState: Add function to remove entity from the state and add it to the pending list. Remove per component manipulations to the sync state. Either you send the whole entity or nothing. Per component 'leaking' to client was possible but mostly introduced bugs.
SyncManager: Restore comment line now that making individual components pending is no longer a feature. Restore one if clause to original state.
Update .gitignore
Hacks to build on Mac.
MenuBar: Add "Open config folder" action to Settings menu.
Remove "namespace kNet { typedef unsigned long message_id_t; }" from TundraProtocolModule/TundraProtocolModuleFwd.h. This can be found nowadays from kNet/Types.h. Fix typo and indentations.
Make couple ConsoleWidget settings configurable. As a new feature ConsoleWidget input text field can be disabled, either from config or by using "--noconsoleguiinput".
only attempt apt-get in interactive mode
The "standard" idiom for UNREFERENCED_PARAM.
Make \bug to appear in Doxygen-generated documentation.