private List <ActivationAnimationClipItem> CreateAnimationClips(BitActionSwitchGroup bitActionSwitchGroup, int index) { var result = new List <ActivationAnimationClipItem>(); foreach (var bitActionSwitchItem in bitActionSwitchGroup.bitActionSwitchItems) { var clipItem = new ActivationAnimationClipItem(); if (bitActionSwitchItem.registerType == BitActionSwitchItem.RegisterType.CustomAnim) { clipItem.DefaultClip = bitActionSwitchItem.defaultClip; clipItem.NonDefaultClip = bitActionSwitchItem.nonDefaultClip; clipItem.StaticDefaultClip = bitActionSwitchItem.staticDefaultClip; clipItem.StaticNonDefaultClip = bitActionSwitchItem.staticNonDefaultClip; } else { var activeClip = ActivationClip.CreateObjectsActivateClip($"Group{(index + 1).ToString()}_{bitActionSwitchItem.name}", this.avatarDescriptor.gameObject, bitActionSwitchItem.gameObjects, true, this.workingDirectory); var inactiveClip = ActivationClip.CreateObjectsActivateClip($"Group{(index + 1).ToString()}_{bitActionSwitchItem.name}", this.avatarDescriptor.gameObject, bitActionSwitchItem.gameObjects, false, this.workingDirectory); clipItem.DefaultClip = activeClip; clipItem.NonDefaultClip = inactiveClip; } result.Add(clipItem); } return(result); }
public void Apply() { EditorUtility.DisplayProgressBar("Remove Exiting Items", "", 0f); var bitActionSwitchAnimator = new BitActionSwitchAnimatorCreator(this.animatorController); bitActionSwitchAnimator.RemoveExistBitActionSwitchAnimator(); var expressionParameter = new ExpressionParameter(this.expressionParameters); expressionParameter.RemoveExistExpressionParameters(); GlobalClips.ShortEmptyClip = ActivationClip.CreateEmptyClip(this.workingDirectory, "ShortWait", 0.00f, 0.01f); for (var i = 0; i < this.bitActionSwitch.bitActionSwitchGroups.Count; i++) { var progress = (float)i / this.bitActionSwitch.bitActionSwitchGroups.Count; var info = $"{i + 1} / {this.bitActionSwitch.bitActionSwitchGroups.Count}({progress * 100:F2}%)"; EditorUtility.DisplayProgressBar($"Create Group{i + 1}", info, progress); var bitActionSwitchGroup = this.bitActionSwitch.bitActionSwitchGroups[i]; if (!bitActionSwitchGroup.variableName.StartsWith(ActionSwitchParameters.PREFIX)) { bitActionSwitchGroup.variableName = $"{ActionSwitchParameters.PREFIX}{bitActionSwitchGroup.variableName}"; } var expressionMenu = new ExpressionMenu(bitActionSwitchGroup.expressionsMenu); expressionMenu.RemoveExistExpressionMenuControls(); expressionParameter.AddExpressionParameters(bitActionSwitchGroup.variableName); var animationClips = this.CreateAnimationClips(bitActionSwitchGroup, i); for (var j = 0; j < bitActionSwitchGroup.bitActionSwitchItems.Count; j++) { expressionMenu.AddExpressionMenuControl(bitActionSwitchGroup.bitActionSwitchItems[j], j + 1 + i * 9); } bitActionSwitchAnimator.CreateBitActionSwitchAnimator(animationClips, bitActionSwitchGroup, i); } EditorUtility.ClearProgressBar(); }