Skins
Modular skin support (no more replacing asset files!)
CHANGELOG
v0.9.3
- fix:
WeaponShellManager.OnLevelCleanupwould throw because we usenullas pool placeholder.- This causes faulty level cleanup if called by some mods, and would cause all subsequent level generations to fail until the game is restarted.
- We now always fill the pool with a valid empty
GameObjectPoolto prevent this issue.
- feat: add option to turn on mipmap generation for skin textures.
- feat: add
HarmonyWrapSafeto all patches to prevent patch failures from breaking the game. - refactor: initialize skins on level gen
Builder.OnFactoryDoneinstead.
v0.9.1
- fix: in some setups, gear might be missed in target setup
- Now we setup all inventory gear on level start, so local player gear is guaranteed to be a target and setup.
v0.9.0
- fix: casing is not recorded if it is not part of the gun model
- fix: hacking Tool etc. can now be targeted because we attach at Item level
- feat: ManagedGroupTarget that attaches to any Item
- Things like Hacking Tool can now be targeted
- feat: mags are now skinned
- refactor: we don't assume
MeshRenderersall haveMeshFilterwith it. - refactor: change
inttypes for persistentID touint.
v0.8.1 / v0.9.2
- v0.9.2 (rollback-hotfix) points to this version
- fix: possible security issues
v0.8.0
- feat: support for installing
skinspkginternal format packages. - feat: change 'Update All Material Targets' button to 'Open Global Skins Folder' button
v0.7.0
- feat: mesh replacement via Mesh Targets
- refactor: adjust schema to use
match_groupsinstead ofmatchGroupsfor consistency.
v0.6.3
- fix: premature texture unload by Unity due to no references
- feat: manage destruction of Vanilla textures with ref count and
HideFlags.DontUnloadUnusedAsset.
Dev Notes
There has been an issue where skins would sometimes stop applying correctly. Reverting to Vanilla skins after dropping in
and out of level would also result in Vanilla textures being destroyed by Unity's resource management. This is because Skins'
management of textures are not considered as part of Unity's reference counting system. This update fixes this issue by
managing the lifecycle of textures with a ref count and HideFlags.DontUnloadUnusedAsset to prevent Unity from unloading
them prematurely.
v0.6.1 / v0.6.2
- fix: gear ID extraction can cause NRE if item has no
PlayfabInstanceId - feat: added an "Update All Material Targets" button to settings
v0.6.0
- fix: incorrect callsite for OnSetActive for selection item
- fix: skin button disappearing when using LegacyLobby
- fix: make OnAllPartsSpawned to be patched at lowest priority (might be related to skins not applying in some modded rundowns)
- feat: skin reload indication and progress display
- feat: French localization (thank you @Ocha!)
- feat: Traditional Chinese localization
- chore: suppress GTFO localization not ready warnings
- docs: update README
v0.5.3
- fix: material keyword restore on revert:
DisableKeyword("*")was a no-op; now iteratesshaderKeywordscorrectly - fix:
_cleanflag being set after the property loop; it is now set before so a partial-apply failure can't leave the target in an inconsistent state - fix: when a configured skin GUID is no longer found in the registry, the target now auto-reverts to vanilla and clears the stale entry
- feat: auto-move from per-profile to global now replaces the existing global copy on collision rather than skipping, so per-profile is always treated as the up-to-date source
v0.5.2
- docs: update README with Hot Reload information
v0.5.1
- feat: initial Release