コード例 #1
0
        /// <summary>
        /// Step 5: Ensure that all of the required SSMs have been created on the animator controller
        /// </summary>
        /// <param name="rMotionController"></param>
        /// <param name="rFolderPath"></param>
        /// <param name="rCharacterName"></param>
        protected virtual void VerifyAnimatorConfiguration(MotionController rMotionController, string rFolderPath, string rCharacterName)
        {
            string lProgressTitle  = "Configuring Animator (Step 5 of 6)";
            float  lProgressAmount = 4f / 6f;

            EditorUtility.DisplayProgressBar(lProgressTitle, "Basic animator states", lProgressAmount);

            AnimatorController lController = null;

            if (CreateNewAnimator)
            {
                if (!rFolderPath.EndsWith("/"))
                {
                    rFolderPath += "/";
                }
                string lAnimatorPath;

                if (AnimatorUsesCharacterName)
                {
                    lAnimatorPath = rFolderPath + rCharacterName;
                }
                else if (AnimatorUsesProfileName)
                {
                    lAnimatorPath = rFolderPath + this.name;
                }
                else
                {
                    lAnimatorPath = rFolderPath + AnimatorName;
                }

                if (!lAnimatorPath.EndsWith(".controller"))
                {
                    lAnimatorPath += ".controller";
                }


                lController        = AnimatorSetupHelper.EnsureAnimatorController(rMotionController, lAnimatorPath, mLastLayerIndex);
                AnimatorController = lController;
            }

            if (!ConfigureAnimator)
            {
                return;
            }

            // Verify the base Animator Controller configuration
            lController = AnimatorSetupHelper.EnsureAnimatorController(rMotionController, mLastLayerIndex);

            // Verify the SSMs for all Basic motions
            BasicMotionPackDefinition.EnsureBaseLayerStartState(lController);
            BasicMotionPackDefinition.EnsureBasicIdleSSM(lController, 0);
            BasicMotionPackDefinition.EnsureBasicWalkRunPivotSSM(lController, 0);
            BasicMotionPackDefinition.EnsureBasicWalkRunStrafeSSM(lController, 0);
            BasicMotionPackDefinition.EnsureBasicDamagedSSM(lController, 0);
            BasicMotionPackDefinition.EnsureBasicDeathSSM(lController, 0);
            BasicMotionPackDefinition.EnsureBasicInteractionSSM(lController, 0);
            BasicMotionPackDefinition.EnsureBasicJumpSSM(lController, 0);
            BasicMotionPackDefinition.EnsureBasicDodgeSSM(lController, 0);

            // Verify the SSMs for the "standard" motion set
            if (AddJumpMotions)
            {
                BasicMotionPackDefinition.EnsureStandardJump(rMotionController, 0);
            }

            if (AddClimbMotions)
            {
                BasicMotionPackDefinition.EnsureStandardClimb_0_5m(rMotionController, 0);
                BasicMotionPackDefinition.EnsureStandardClimb_1m(rMotionController, 0);
                BasicMotionPackDefinition.EnsureStandardClimb_1_8m(rMotionController, 0);
                BasicMotionPackDefinition.EnsureStandardClimb_2_5m(rMotionController, 0);
                BasicMotionPackDefinition.EnsureStandardClimbLadder(rMotionController, 0);
                BasicMotionPackDefinition.EnsureStandardClimbWall(rMotionController, 0);
                BasicMotionPackDefinition.EnsureStandardClimbLedge(rMotionController, 0);
                BasicMotionPackDefinition.EnsureStandardVault_1m(rMotionController, 0);
            }
            if (AddUtilityMotions)
            {
                BasicMotionPackDefinition.EnsureStandardBalanceWalk(rMotionController, 0);
                BasicMotionPackDefinition.EnsureStandardUtilities(rMotionController, 0);
            }

            if (Modules == null)
            {
                return;
            }

            int lModuleCount = Modules.Count(x => x is IConfigureAnimator);
            // fill additional 20% of progress bar across all modules
            float lModuleAmount = lModuleCount > 0 ? 0.2f / lModuleCount : 0;

            foreach (var lModule in Modules)
            {
                if (lModule.IsValid && lModule is IConfigureAnimator)
                {
                    lProgressAmount += lModuleAmount;
                    EditorUtility.DisplayProgressBar(lProgressTitle, lModule.Name, lProgressAmount);
                    ((IConfigureAnimator)lModule).ConfigureAnimator();
                }
            }
        }
コード例 #2
0
        /// <summary>
        /// Step 3: Create and configure the selected motions on the character
        /// </summary>
        /// <param name="rMotionController"></param>
        /// <param name="rIsPlayer"></param>
        protected virtual void CreateMotions(MotionController rMotionController, bool rIsPlayer)
        {
            string lProgressTitle  = "Configuring Motions (Step 3 of 6)";
            float  lProgressAmount = 3f / 6f;

            EditorUtility.DisplayProgressBar(lProgressTitle, "Basic motions", lProgressAmount);

            if (AddBasicMotions)
            {
                MotionSetupHelper.EnsureMotionLayers(rMotionController, mLastLayerIndex);

                if (rIsPlayer)
                {
                    BasicMotionPackDefinition.CreateBasicLocomotion(rMotionController, false, MovementStyle);
                }
                else
                {
                    BasicMotionPackDefinition.CreateBasicNPCLocomotion(rMotionController, true);
                }


                if (AddInteraction)
                {
                    BasicMotionPackDefinition.CreateInteractions(rMotionController);
                }
                if (AddFullBodyReactions)
                {
                    BasicMotionPackDefinition.CreateBasicDamagedMotion(rMotionController, true);
                    BasicMotionPackDefinition.CreateBasicDeathMotion(rMotionController, true);
                }
                if (AddUtilityMotions)
                {
                    BasicMotionPackDefinition.CreateUtilityMotions(rMotionController, true);
                }
            }

            if (AddJumpMotions)
            {
                BasicMotionPackDefinition.CreateJumpMotions(rMotionController);
            }
            if (AddClimbMotions)
            {
                BasicMotionPackDefinition.CreateClimbMotions(rMotionController, ClimbLayers);
                if (rIsPlayer)
                {
                    BasicMotionPackDefinition.CreateClimbLadderMotion(rMotionController, ClimbLadderLayers);
                    BasicMotionPackDefinition.CreateVaultMotion(rMotionController, VaultLayers, true);
                }
            }

            //if (UseHandPoses)
            //{
            //    BasicMotionPackDefinition.CreateBasicHandPoseMotions(rMotionController);
            //}

            if (Modules == null)
            {
                return;
            }
            foreach (var lModule in Modules)
            {
                if (lModule.IsValid && lModule is IConfigureMotions)
                {
                    EditorUtility.DisplayProgressBar(lProgressTitle, lModule.Name, lProgressAmount);
                    ((IConfigureMotions)lModule).ConfigureMotions();
                }
            }
        }