public void CreateThirdPersonController()
        {
            const float startTimeWalk = 34f / 30f;
            const float endTimeWalk   = 63f / 30f;
            const float durationWalk  = endTimeWalk - startTimeWalk;
            const float startTimeIdle = 0;
            const float endTimeIdle   = 0;
            const float durationIdle  = endTimeIdle;
            const float blendDuration = 0.25f;

            const float startTimeRun = 15f / 30f;
            const float endRunTime   = 80f / 30f;
            const float durationRun  = endRunTime - startTimeRun;

            SceneTests.InitializeScene();
            SceneManager.Scene.Physics.Enable  = true;
            SceneManager.Scene.Physics.Visible = false;

            CharacterControllerTagProcessor.ControllerCreated += CharacterControllerTagProcessor_ControllerCreated;

            ContentImporter.Import(SceneManager.Scene, @"C:\Users\ansel\Documents\3dsmax\export\game_level0\game_level0.DAE");
            ContentImporter.ImportAnimation(SceneManager.Scene, @"C:\Users\ansel\Documents\3dsmax\export\Lighting\walk.DAE");
            ContentImporter.ImportAnimation(SceneManager.Scene, @"C:\Users\ansel\Documents\3dsmax\export\Lighting\run.DAE");

            CharacterController controller = CharacterControllerManager.Instance.Controllers[0];
            var animationWalk = SceneManager.Scene.AnimManager.Animations[1];
            var animationRun  = SceneManager.Scene.AnimManager.Animations[2];

            var character = (((Frame)controller.Affectable)).FindNode((Frame x) => x.Type == FrameType.Bone);

            SceneManager.Scene.FindNode("camera1").BindTo(character);

            ThirdPersonControllerDesc desc = new ThirdPersonControllerDesc
            {
                CollitionController = controller,
                Character           = character,
                CameraMaxDistance   = 100,
                CameraMinDistance   = 20,
                CameraMaxPich       = Numerics.ToRadians(45),
                CameraMinPich       = Numerics.ToRadians(25),
                TransitionTime      = blendDuration,
                Camera = SceneManager.Scene.FindNode("camera1"),
                Idle   = new KeyFrameAnimationPlayback(animationWalk, startTimeIdle, durationIdle, AnimationLooping.Loop),
                Walk   = new KeyFrameAnimationPlayback(animationWalk, startTimeWalk, durationWalk, AnimationLooping.Loop, velocity: 1),
                //Walk = new AnimationPlayback(animationRun, startTimeRun, durationRun, AnimationLooping.Secuential),
            };
            ThirdPersonController characterController = new ThirdPersonController(desc);

            SceneManager.Scene.Dynamics.Add(characterController);

            //EngineState.Shadow.ShadowMapping.Bias = 0.9e-2f;
            FrameLight.CreateShadowMapForAllLights(SceneManager.Scene);
        }
        public void CreateControllerFromFile()
        {
            SceneTests.InitializeScene();

            SceneManager.Scene.Physics.Enable  = true;
            SceneManager.Scene.Physics.Visible = true;

            CharacterControllerTagProcessor.ControllerCreated += CharacterControllerTagProcessor_ControllerCreated;
            ContentImporter.Import(SceneManager.Scene, @"C:\Users\ansel\Documents\3dsmax\export\controller.DAE");
            CharacterController controller = CharacterControllerManager.Instance.Controllers[0];

            SceneManager.Scene.Dynamics.Add(new Dynamic(deltaT =>
            {
                var camera        = SceneManager.Scene.ActiveCamera;
                Vector3 direction = new Vector3();
                if (Engine.KeyBoard.IsKeyPressed(Keys.O))
                {
                    direction = camera.Front;
                }
                if (Engine.KeyBoard.IsKeyPressed(Keys.L))
                {
                    direction = -camera.Front;
                }
                if (Engine.KeyBoard.IsKeyPressed(Keys.K))
                {
                    direction = -camera.Right;
                }
                if (Engine.KeyBoard.IsKeyPressed(Keys.Semicolon))
                {
                    direction = camera.Right;
                }
                if (Engine.KeyBoard.IsKeyPressed(Keys.P))
                {
                    direction = camera.Up;
                }
                if (Engine.KeyBoard.IsKeyPressed(Keys.I))
                {
                    direction = -camera.Up;
                }

                CollitionResult result = controller.Move(direction * 100 * deltaT, (1 << (int)CollisionGroup.GroupNonCollidable) |
                                                         (1 << (int)CollisionGroup.GroupCollidableNonPushable), 0.000001f, 1.0f);
            }));
        }