public SettingAutoAdjuster( IVRMLoadable vrmLoadable, IMessageReceiver receiver, IMessageSender sender, IMessageDispatcher dispatcher, VRMBlendShapeStore blendShapeStore, Camera mainCam ) { _mainCam = mainCam.transform; _blendShapeStore = blendShapeStore; _sender = sender; _dispatcher = dispatcher; receiver.AssignCommandHandler( VmmCommands.RequestAutoAdjust, _ => AutoAdjust() ); receiver.AssignCommandHandler( VmmCommands.RequestAutoAdjustEyebrow, _ => AutoAdjustOnlyEyebrow() ); vrmLoadable.PreVrmLoaded += info => _vrmRoot = info.vrmRoot; vrmLoadable.VrmDisposing += () => _vrmRoot = null; }
//NOTE: こっちが最終的に生き残るよ public void RefreshTarget(VRMBlendShapeStore blendShapeStore) { Reset(); var items = blendShapeStore.GetBlendShapeStoreItems(); int goalCount = UseSeparatedTarget ? 4 : 2; int foundCount = 0; for (int i = 0; i < items.Length; i++) { var item = items[i]; if (item.name == LeftUpKey && !_leftUp.isValid) { _leftUp = new BlendShapeTarget(item); foundCount++; } else if (item.name == LeftDownKey && !_leftDown.isValid) { _leftDown = new BlendShapeTarget(item); foundCount++; } else if (UseSeparatedTarget && item.name == RightUpKey && !_rightUp.isValid) { _rightUp = new BlendShapeTarget(item); foundCount++; } else if (UseSeparatedTarget && item.name == RightDownKey && !_rightDown.isValid) { _rightDown = new BlendShapeTarget(item); foundCount++; } if (foundCount >= goalCount) { return; } } }