Basically a rewrite of most logic to be more efficient and less costly per frame.
valheim-vehicles WaterVehicle, Rudders and sentry-unity-bepinx plugin.
ChangeLog (this will be updated as each large feature is merged into this branch).
ValheimRaft (v2.0.0)
Noting that ValheimVehicles is (unreleased but the entire refactor of ValheimRAFT is within this namespace)
The ValheimRaft mod will utilize all of ValheimVehicles for now. Likely this will continue until Raft is no longer needed and ValheimVehicles can replace all the logic in a v3.x.x release (long way out).
Features
[x] Adds rudder prefab without connecting it. Has snappoints for the connection part of the rudder.
[x] Adds hull prefab without much logic attached to boat floation. Hulls are basically 3x6 planks but in a half cylinder. Has snappoints for all edges that match a 2x2 wood plank size.
[x] Adds support for rendering V2.x.x ValheimVehicle WaterVehicle which is a raft replacement.
[x] Adds snappoints to rope anchor.
[x] Adds snappoints for masts. Yes, they can now snap to the ship floor if auto is deselected.
[x] Adds snappoints to Raft Wheel aka. (MBRudder)
[x] Adds PrefabRegistryController which makes the prefab registry call for all prefabs. Each prefab will eventually have it's own file for organization to make it easier to find specific prefabs and fix their logic.
Flying
[x] Flying logic has many new fixes
[x] Flying Automatic ascend/descend toggle option for flight. Still no increase to speed (increasing speed causes massive friction, likely needs to be solved in it's own feature set)
[x] Flying unrealistically uses the direction it is going instead of the wind push.
[x] Flying can use the rudder instead of the sails. But sails will still unfurl. (not fixing that in this update)
Rudder
[x] Adds support for rudder speeds based on the Back, Slow, Half, Full speeds of base game
[x] Rudder speeds are configurable
[x] Rudder turn rates are increased significantly at lower speeds. (QOL fix)
New Prefabs and Tweaks
[x] Many new prefabs added though they may not be available / ready for release 2.0.0. Prefabs relate to hull, hull ribs, hull keel, and slabs to create the topmost hull sections.
[x] Updates unity to latest compatible with valheim.
[x] Adds blender file for vehicle meshes and designs
[x] Tweaks a bunch of textures to better render
[x] Makes black marble texture compatible with moving vehicles (no world position)
Collisions
[x] Collision logic works well
[x] Adds Collider debuggers for the ship
[x] Add logic to only set colliders for the ship hull to prevent topheavy ships from smashing obstacles due to their box collider invisibly hitting the rock in the sea.
Fixes
[x] Fixes ActivatePendingPieces. Likely resolve detached states of masts and steering wheels. Optimizes much of the raft re-renders. Whenever a raft instance currently exists it will active the pending
TODOs/Issues
[x] Fix SteeringWheel rudder references in older rafts. The new system breaks older raft attachments
[x] Fix SteeringWheel animations on new and old rafts.
Compatibility / Ashlands fixes
[x] sails fixes for fading with Ashlands.
[x] sails fade smoothly in Mistlands now. At 60 unit distant they will disappear if within the mist or the player is within the mist. They should only disappear to the individual, not the server (hopefully...needs validation).
[x] IsValid and Zdo issues fixed for Ships and MBRaft and VehicleShip. Using a compatibility class.
[x] Swapped out Sail for a prefab in unity. Most of the logic is there now instead of within component.
Sail Loading Optimizations
[x] Sails now have a GetIsInitialized check to confirm they are initialized instead of using a static method which could in theory cause issues if the SailComponent was somehow accessed or shared. Sails now initialize with a ZDO so without this initializer it's harder to see if the sail was initialized and load the new data.
[x] Sails will now save their initialization state after SaveZDO so any older sails will now contain this property after SaveZDO has been fired.
[x] Sails no longer support rotation. Rotation never worked well. It needs to be moved to the mast...and that can be a different feature or skipped entirely.
Sentry Unity
Makes the logging service extensible by making all Unity BepInEx packages considered a scoped package when registering with the framework. Incompatible with unity packages that directly call Sentry.Init. Sentry must be managed from this package otherwise the scope and delegation will not work unless Sentry.Init from this package is called last.
Features
[x] Adds Sentry package for Unity projects error logging. The framework should allow for multiple projects to register error logging separately and not conflict. This needs more testing, but will be released for all valheim projects and potentially all UnityBepInEx projects... The Sentry package is builts as an opt-in logging service. ValheimRAFT and ValheimVehicles will not require it. If the user install it, it will be used, if they do not, it will not be used.
Feature/Epic Overview
New rendering patterns
ChangeLog (this will be updated as each large feature is merged into this branch).
ValheimRaft (v2.0.0)
Noting that ValheimVehicles is (unreleased but the entire refactor of ValheimRAFT is within this namespace)
The ValheimRaft mod will utilize all of ValheimVehicles for now. Likely this will continue until Raft is no longer needed and ValheimVehicles can replace all the logic in a v3.x.x release (long way out).
Features
Flying
Rudder
New Prefabs and Tweaks
Collisions
Fixes
TODOs/Issues
Compatibility / Ashlands fixes
Sail Loading Optimizations
GetIsInitialized
check to confirm they are initialized instead of using a static method which could in theory cause issues if the SailComponent was somehow accessed or shared. Sails now initialize with a ZDO so without this initializer it's harder to see if the sail was initialized and load the new data.Sentry Unity
Makes the logging service extensible by making all Unity BepInEx packages considered a scoped package when registering with the framework. Incompatible with unity packages that directly call Sentry.Init. Sentry must be managed from this package otherwise the scope and delegation will not work unless Sentry.Init from this package is called last.
Features