Detect AAO Merge PhysBone components and reflect in performance calculation#208
Draft
Detect AAO Merge PhysBone components and reflect in performance calculation#208
Conversation
…ation - VRChatAvatar.GetPhysBoneProviders() now includes AAOMergePhysBoneProviders and excludes PhysBones targeted by MergePhysBone - AvatarDynamics.CalculatePerformanceStats() provider overload now counts each provider as 1 PhysBone component (MergePhysBone counts as 1) - VRChatAvatar.EstimatePerformanceStats() provider overload now calls AvatarDynamics provider overload directly for correct counting - AvatarConverterSettingsEditor maps saved PhysBones to providers correctly Co-authored-by: kurotu <[email protected]>
Copilot
AI
changed the title
[WIP] Update performance calculation for AAO Merge PhysBone
Detect AAO Merge PhysBone components and reflect in performance calculation
Mar 4, 2026
Copilot stopped work on behalf of
kurotu due to an error
March 4, 2026 15:41
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Performance calculations ignored AAO MergePhysBone components entirely. PhysBones targeted by MergePhysBone appeared as individual selectable items in the UI, and their merged nature wasn't reflected in component counts.
Changes
VRChatAvatar.GetPhysBoneProviders()— Discovers AAO MergePhysBone components via reflection, wraps them asAAOMergePhysBoneProvider, and excludes their target PhysBones from the regular provider list. Falls back to previous behavior when AAO is not installed (AAOMergePhysBoneReflectionInfo.Default == null).AvatarDynamics.CalculatePerformanceStats()(provider overload) — UsesSelectMany(pb.GetPhysBones())instead ofSelect(pb.Component as VRCPhysBone)to extract all underlying PhysBones for transform/collider/collision calculations. OverridesPhysBonesCountto count providers, not underlying VRCPhysBones (each MergePhysBone = 1 post-build component).VRChatAvatar.EstimatePerformanceStats()(provider overload) — CallsAvatarDynamics.CalculatePerformanceStats()with providers directly instead of flattening toVRCPhysBone[]first, preserving provider-level grouping for correct component counting.AvatarConverterSettingsEditor— Maps serializedVRCPhysBone[]back to current providers when estimating performance and populating the selector window, so saved configs correctly resolve to MergePhysBone providers.No double counting
Merged PhysBones are excluded from individual
VRCPhysBoneProviderentries byGetPhysBoneProviders(), soSelectManyacross all providers produces a disjoint set.Original prompt
💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.