Пример #1
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();
                }
            }
        }