Example #1
0
        private void LoadDriverModel()
        {
            if (_driver != null)
            {
                return;
            }

            var driverDescription = _carData.GetDriverDescription();

            if (driverDescription == null || !File.Exists(_driverModelFilename))
            {
                return;
            }

            var driver = new Kn5RenderableDriver(Kn5.FromFile(_driverModelFilename), Matrix.Translation(driverDescription.Offset),
                                                 _currentSkin == null ? null : Path.Combine(_skinsDirectory, _currentSkin),
                                                 AsyncTexturesLoading, _asyncOverrideTexturesLoading, _converter)
            {
                LiveReload     = LiveReload,
                MagickOverride = MagickOverride
            };

            _driver = driver;

            if (File.Exists(_driverHierarchyFilename))
            {
                driver.AlignNodes(Knh.FromFile(_driverHierarchyFilename));
            }

            _driverSteerAnimator = Lazier.Create(() => {
                var animator = CreateAnimator(RootDirectory, driverDescription.SteerAnimation,
                                              clampEnabled: false, skipFixed: false);
                if (animator == null)
                {
                    return(null);
                }

                animator.Reset += OnSteerAnimatorReset;
                return(animator);
            });
            _driverSteerLock = driverDescription.SteerAnimationLock;

            driver.LocalMatrix = RootObject.LocalMatrix;
            Add(driver);
            ObjectsChanged?.Invoke(this, EventArgs.Empty);

            if (_steerDeg != 0 || OptionFixKnh)
            {
                UpdateDriverSteerAnimation(GetSteerOffset());
            }

            if (DebugMode)
            {
                driver.DebugMode = true;
            }
        }
Example #2
0
            internal Arm(Kn5RenderableDriver _driver, bool isLeft)
            {
                var s = isLeft ? "L" : "R";

                _side = isLeft ? 1f : -1f;

                _clave      = _driver.GetDummyByName($"DRIVER:RIG_Clave_{s}");
                _arm        = _driver.GetDummyByName($"DRIVER:RIG_Arm_{s}");
                _forearm    = _driver.GetDummyByName($"DRIVER:RIG_ForeArm_{s}");
                _forearmEnd = _driver.GetDummyByName($"DRIVER:RIG_ForeArm_END_{s}");
                _hand       = _driver.GetDummyByName($"DRIVER:RIG_HAND_{s}");

                _index = _hand?.GetDummyByName(isLeft ? "DRIVER:HAND_Index1" : "DRIVER:HAND_Index4");
                _thumb = _hand?.GetDummyByName($"DRIVER:HAND_{s}_Thumb3");

                _indexf = new Finger(new[] {
                    new FingerBit(_hand, isLeft ? "DRIVER:HAND_Index1" : "DRIVER:HAND_Index4",
                                  new Vector3(-3f, -5f, _side * -20.5f), new Vector3(-3f, -5f, _side * -67.5f)),
                    new FingerBit(_hand, isLeft ? "DRIVER:HAND_Index2" : "DRIVER:HAND_Index5",
                                  new Vector3(-2.7f, 0.2f, _side * -10.5f), new Vector3(-2.7f, 0.2f, _side * -34f)),
                    new FingerBit(_hand, isLeft ? "DRIVER:HAND_Index3" : "DRIVER:HAND_Index6",
                                  new Vector3(0.5f, -2.2f, _side * -4.5f), new Vector3(0.5f, -2.2f, _side * -32.5f))
                });

                _middle = new Finger(new[] {
                    new FingerBit(_hand, isLeft ? "DRIVER:HAND_Middle1" : "DRIVER:HAND_Middle4",
                                  new Vector3(10f, -1f, _side * -20.5f), new Vector3(10f, -1f, _side * -72.5f)),
                    new FingerBit(_hand, isLeft ? "DRIVER:HAND_Middle2" : "DRIVER:HAND_Middle5",
                                  new Vector3(-2f, 1f, _side * -10.5f), new Vector3(-2f, 1f, _side * -39f)),
                    new FingerBit(_hand, isLeft ? "DRIVER:HAND_Middle3" : "DRIVER:HAND_Middle6",
                                  new Vector3(3.6f, -3.9f, _side * -4.5f), new Vector3(3.6f, -3.9f, _side * -32.5f))
                });

                _ring = new Finger(new[] {
                    new FingerBit(_hand, isLeft ? "DRIVER:HAND_Ring1" : "DRIVER:HAND_Ring4",
                                  new Vector3(11.5f, 5f, _side * -20.5f), new Vector3(11.5f, 5f, _side * -83.5f)),
                    new FingerBit(_hand, isLeft ? "DRIVER:HAND_Ring2" : "DRIVER:HAND_Ring5",
                                  new Vector3(0, 0, _side * -10.5f), new Vector3(0, 0, _side * -41f)),
                    new FingerBit(_hand, isLeft ? "DRIVER:HAND_Ring3" : "DRIVER:HAND_Ring6",
                                  new Vector3(0, 0, _side * -4.5f), new Vector3(0, 0, _side * -32.5f))
                });

                _pinkie = new Finger(new[] {
                    new FingerBit(_hand, isLeft ? "DRIVER:HAND_Pinkie1" : "DRIVER:HAND_Pinkie4",
                                  new Vector3(12.16f, 3.4f, _side * -20.5f), new Vector3(12.16f, 3.4f, _side * -87.5f)),
                    new FingerBit(_hand, isLeft ? "DRIVER:HAND_Pinkie2" : "DRIVER:HAND_Pinkie5",
                                  new Vector3(-2f, 3f, _side * -10.5f), new Vector3(-2f, 3f, _side * -45f)),
                    new FingerBit(_hand, isLeft ? "DRIVER:HAND_Pinkie3" : "DRIVER:HAND_Pinkie6",
                                  new Vector3(-1.1f, -1.9f, _side * -4.5f), new Vector3(-1.1f, -1.9f, _side * -32.5f))
                });

                Init();
            }
Example #3
0
 public Up(Kn5RenderableDriver driver, Kn5RenderableList steer)
 {
     _driver = driver;
     _steer  = steer;
 }