private void CreateAvatarMaskAssetIfNecessary(ComboGestureCompiler compiler) { if (compiler.generatedAvatarMask != null) { return; } var folderToCreateAssetIn = ResolveFolderToCreateNeutralizedAssetsIn(compiler.folderToGenerateNeutralizedAssetsIn, compiler.animatorController); var mask = new AvatarMask(); AssetDatabase.CreateAsset(mask, folderToCreateAssetIn + "/GeneratedCGEMask__" + DateTime.Now.ToString("yyyy'-'MM'-'dd'_'HHmmss") + ".asset"); compiler.generatedAvatarMask = mask; }
public ComboGestureCompilerInternal( ComboGestureCompiler compiler, AssetContainer assetContainer) { _comboLayers = compiler.comboLayers; _parameterGeneration = _comboLayers.Count <= 1 ? ParameterGeneration.Unique : (compiler.parameterMode == ParameterMode.SingleInt ? ParameterGeneration.UserDefinedActivity : ParameterGeneration.VirtualActivity); switch (_parameterGeneration) { case ParameterGeneration.Unique: _activityStageName = null; break; case ParameterGeneration.UserDefinedActivity: _activityStageName = compiler.activityStageName; break; case ParameterGeneration.VirtualActivity: _activityStageName = SharedLayerUtils.HaiVirtualActivity; break; default: throw new ArgumentOutOfRangeException(); } _animatorController = (AnimatorController)compiler.animatorController; _gesturePlayableLayerController = compiler.gesturePlayableLayerController as AnimatorController; _customEmptyClip = compiler.customEmptyClip; _analogBlinkingUpperThreshold = compiler.analogBlinkingUpperThreshold; _featuresToggles = (compiler.doNotGenerateBlinkingOverrideLayer ? FeatureToggles.DoNotGenerateBlinkingOverrideLayer : 0) | (compiler.doNotGenerateLipsyncOverrideLayer ? FeatureToggles.DoNotGenerateLipsyncOverrideLayer : 0) | (compiler.doNotGenerateWeightCorrectionLayer ? FeatureToggles.DoNotGenerateWeightCorrectionLayer : 0) | (compiler.doNotFixSingleKeyframes ? FeatureToggles.DoNotFixSingleKeyframes : 0); _conflictPrevention = ConflictPrevention.OfFxLayer(compiler.writeDefaultsRecommendationMode); _conflictPreventionTempGestureLayer = ConflictPrevention.OfGestureLayer(compiler.writeDefaultsRecommendationModeGesture, compiler.gestureLayerTransformCapture); _compilerConflictFxLayerMode = compiler.conflictFxLayerMode; _compilerIgnoreParamList = compiler.ignoreParamList; _compilerFallbackParamList = compiler.fallbackParamList; _avatarDescriptor = compiler.avatarDescriptor; _expressionsAvatarMask = compiler.expressionsAvatarMask ? compiler.expressionsAvatarMask : AssetDatabase.LoadAssetAtPath <AvatarMask>(SharedLayerUtils.FxPlayableLayerAvatarMaskPath); _logicalAvatarMask = compiler.logicalAvatarMask ? compiler.logicalAvatarMask : AssetDatabase.LoadAssetAtPath <AvatarMask>(SharedLayerUtils.FxPlayableLayerAvatarMaskPath); _weightCorrectionAvatarMask = compiler.weightCorrectionAvatarMask ? compiler.weightCorrectionAvatarMask : AssetDatabase.LoadAssetAtPath <AvatarMask>(SharedLayerUtils.FxPlayableLayerAvatarMaskPath); _gesturePlayableLayerExpressionsAvatarMask = compiler.gesturePlayableLayerExpressionsAvatarMask ? compiler.gesturePlayableLayerExpressionsAvatarMask : AssetDatabase.LoadAssetAtPath <AvatarMask>(GesturePlayableLayerAvatarMaskPath); _gesturePlayableLayerTechnicalAvatarMask = compiler.gesturePlayableLayerTechnicalAvatarMask ? compiler.gesturePlayableLayerTechnicalAvatarMask : AssetDatabase.LoadAssetAtPath <AvatarMask>(GesturePlayableLayerAvatarMaskPath); _integrateLimitedLipsync = false; // For now, Limited Lipsync is disabled regardless of the compiler value _limitedLipsync = compiler.lipsyncForWideOpenMouth; _assetContainer = assetContainer; _useGestureWeightCorrection = compiler.WillUseGestureWeightCorrection(); _useSmoothing = _useGestureWeightCorrection; }
private void MaskRemovalUi(ComboGestureCompiler compiler) { var isMaskUsed = compiler.animatorController != null && ((AnimatorController)compiler.animatorController).layers.Any(layer => layer.avatarMask == compiler.generatedAvatarMask); EditorGUI.BeginDisabledGroup(!isMaskUsed); if (GUILayout.Button(CgeLocale.CGEC_Remove_applied_masks)) { DoRemoveAppliedMasks(compiler); } EditorGUI.EndDisabledGroup(); EditorGUI.BeginDisabledGroup(isMaskUsed); if (GUILayout.Button(CgeLocale.CGEC_Unbind_Asset_container)) { DoRemoveAppliedMasksAndAssetContainer(compiler); } EditorGUI.EndDisabledGroup(); }
private static AssetContainer CreateContainerIfNotExists(ComboGestureCompiler compiler, string folderToCreateAssetIn) { return(compiler.assetContainer == null?AssetContainer.CreateNew(folderToCreateAssetIn) : AssetContainer.FromExisting(compiler.assetContainer)); }
private void DoRemoveAppliedMasksAndAssetContainer(ComboGestureCompiler compiler) { new CgeMaskApplicator(AsCompiler().animatorController, compiler.generatedAvatarMask).RemoveAppliedMask(); generatedAvatarMask.objectReferenceValue = null; }
private void DoRemoveAppliedMasks(ComboGestureCompiler compiler) { new CgeMaskApplicator(AsCompiler().animatorController, compiler.generatedAvatarMask).RemoveAppliedMask(); }
private void AddMissingMasks(ComboGestureCompiler compiler) { CreateAvatarMaskAssetIfNecessary(compiler); new CgeMaskApplicator(compiler.animatorController, compiler.generatedAvatarMask).AddMissingMasks(); new CgeMaskApplicator(compiler.animatorController, compiler.generatedAvatarMask).UpdateMask(); }