protected override void SetCylinders(MomentaryPositionAndTimingFrameDataModel DataFrame)
 {
     MotionHardwareInterface.SetCylinderHeight(1, DataFrame.C1);
     MotionHardwareInterface.SetCylinderHeight(2, DataFrame.C2);
     MotionHardwareInterface.SetCylinderHeight(3, DataFrame.C3);
     //byte test = 0;
     //MotionHardwareInterface.SetCylinderHeight(1, test);
     //MotionHardwareInterface.SetCylinderHeight(2, test);
     //MotionHardwareInterface.SetCylinderHeight(3, test);
 }
示例#2
0
 protected override void AnimateFame(MomentaryPositionAndTimingFrameDataModel Data)
 {
     MotionHardwareInterface.SetCylinderHeight(1, Data.C1);
     MotionHardwareInterface.SetCylinderHeight(2, Data.C2);
 }
        protected override void Tick()
        {
            const byte SensitivtyBase = 127;

            int XAxis       = 32767;
            int YAxis       = 32767;
            int Sensitivity = 65534;

            Vector NormalizedVector;

            MomentaryPositionAndTimingFrameDataModel DataFrame = new MomentaryPositionAndTimingFrameDataModel();

            DataFrame.Time = TimeBetweenTicksMS;

            JoyStick.Poll();
            JoystickUpdate[] Data = JoyStick.GetBufferedData();
            int Num = 0;

            Sensitivity = ClampCast(SensitivtyBase * SensitivtyCalc);

            foreach (DeviceObjectInstance Axis in Owner.AxisInfos)
            {
                if (Data.Any(x => x.RawOffset == Axis.Offset + OtherAxisOffsetOffset || x.RawOffset == Axis.Offset))
                {
                    Axiss[Num] = Data.Last(x => x.RawOffset == Axis.Offset + OtherAxisOffsetOffset || x.RawOffset == Axis.Offset).Value;
                }
                if (Axis == JoyAxisForMechXAxisTilt)
                {
                    XAxis = Axiss[Num];
                }
                if (Axis == JoyAxisForMechYAxisTilt)
                {
                    YAxis = Axiss[Num];
                }
                if (Axis == JoyAxisForMechSensitivity)
                {
                    Sensitivity    = Axiss[Num];
                    SensitivtyCalc = CalculateUnsighedNormal(Sensitivity);
                    Sensitivity    = ClampCast(SensitivtyBase * SensitivtyCalc);
                }
                Num++;
            }

            NormalizedVector = CalculateNormalVector(new Vector()
            {
                X = (float)XAxis, Y = (float)YAxis
            });

            MoveForXY(NormalizedVector.X, NormalizedVector.Y, (byte)Sensitivity);


            DataFrame.C1 = (byte)Cylinder1;
            DataFrame.C2 = (byte)Cylinder2;

            Num = 0;
            foreach (DeviceObjectInstance POV in Owner.POVInfos)
            {
                if (Data.Any(x => x.RawOffset == POV.Offset + POVOffsetOffset))
                {
                    POVs[Num] = Data.Last(x => x.RawOffset == POV.Offset + POVOffsetOffset).Value;
                }
                Num++;
            }

            DoButtons(Data, ref DataFrame);

            //add noise on top of the regualr movement
            if (AddSytheticNoiseEffect)
            {
                DataFrame.C1 = ClampCast(DataFrame.C1 + SytheticNoiseEffectBaseHalfValue - RandomNumber.Next(0, SytheticNoiseEffectBaseValue));
                DataFrame.C2 = ClampCast(DataFrame.C2 + SytheticNoiseEffectBaseHalfValue - RandomNumber.Next(0, SytheticNoiseEffectBaseValue));
            }


            AddedMotion.Add(DataFrame);
            SetCylinders(DataFrame);
        }
 protected override void SetCylinders(MomentaryPositionAndTimingFrameDataModel DataFrame)
 {
     MotionHardwareInterface.SetCylinderHeight(1, DataFrame.C1);
 }
 protected abstract void AnimateFame(MomentaryPositionAndTimingFrameDataModel Data);
        protected virtual void DoButtons(JoystickUpdate[] Data, ref MomentaryPositionAndTimingFrameDataModel DataFrame)
        {
            DataFrame.Back          = AddedMotion.Count() > 0 ? AddedMotion.Last().Back : false;
            DataFrame.Bubbles       = AddedMotion.Count() > 0 ? AddedMotion.Last().Bubbles : false;
            DataFrame.Flame         = AddedMotion.Count() > 0 ? AddedMotion.Last().Flame : false;
            DataFrame.Jet           = AddedMotion.Count() > 0 ? AddedMotion.Last().Jet : false;
            DataFrame.Lightning     = AddedMotion.Count() > 0 ? AddedMotion.Last().Lightning : false;
            DataFrame.Rain          = AddedMotion.Count() > 0 ? AddedMotion.Last().Rain : false;
            DataFrame.Smoke         = AddedMotion.Count() > 0 ? AddedMotion.Last().Smoke : false;
            DataFrame.Snowflakes    = AddedMotion.Count() > 0 ? AddedMotion.Last().Snowflakes : false;
            DataFrame.Spare1        = AddedMotion.Count() > 0 ? AddedMotion.Last().Spare1 : false;
            DataFrame.Spare2        = AddedMotion.Count() > 0 ? AddedMotion.Last().Spare2 : false;
            DataFrame.Spare3        = AddedMotion.Count() > 0 ? AddedMotion.Last().Spare3 : false;
            DataFrame.SweepingLegs1 = AddedMotion.Count() > 0 ? AddedMotion.Last().SweepingLegs1 : false;
            DataFrame.SweepingLegs2 = AddedMotion.Count() > 0 ? AddedMotion.Last().SweepingLegs2 : false;
            DataFrame.Vibration     = AddedMotion.Count() > 0 ? AddedMotion.Last().Vibration : false;
            DataFrame.WaterSpray    = AddedMotion.Count() > 0 ? AddedMotion.Last().WaterSpray : false;
            DataFrame.Wind          = AddedMotion.Count() > 0 ? AddedMotion.Last().Wind : false;

            int Num = 0;

            foreach (DeviceObjectInstance Button in Owner.ButtonInfos)
            {
                if (Data.Any(x => x.RawOffset == Button.Offset + ButtonsOffsetOffset))
                {
                    Buttons[Num] = Data.Last(x => x.RawOffset == Button.Offset + ButtonsOffsetOffset).Value != 0 ? true : false;
                }

                if (Button == JoyButtonForMechBackStateTrigger && Buttons[Num])
                {
                    DataFrame.Back = !DataFrame.Back;
                }

                if (Button == JoyButtonForMechBubblesStateTrigger && Buttons[Num])
                {
                    DataFrame.Bubbles = !DataFrame.Bubbles;
                }

                if (Button == JoyButtonForMechFlameStateTrigger && Buttons[Num])
                {
                    DataFrame.Flame = !DataFrame.Flame;
                }

                if (Button == JoyButtonForMechJetStateTrigger && Buttons[Num])
                {
                    DataFrame.Jet = !DataFrame.Jet;
                }

                if (Button == JoyButtonForMechLightningStateTrigger && Buttons[Num])
                {
                    DataFrame.Lightning = !DataFrame.Lightning;
                }

                if (Button == JoyButtonForMechRainStateTrigger && Buttons[Num])
                {
                    DataFrame.Rain = !DataFrame.Rain;
                }

                if (Button == JoyButtonForMechSmokeStateTrigger && Buttons[Num])
                {
                    DataFrame.Smoke = !DataFrame.Smoke;
                }

                if (Button == JoyButtonForMechSnowflakeStateTrigger && Buttons[Num])
                {
                    DataFrame.Snowflakes = !DataFrame.Snowflakes;
                }

                if (Button == JoyButtonForMechSpare1StateTrigger && Buttons[Num])
                {
                    DataFrame.Spare1 = !DataFrame.Spare1;
                }

                if (Button == JoyButtonForMechSpare2StateTrigger && Buttons[Num])
                {
                    DataFrame.Spare2 = !DataFrame.Spare2;
                }

                if (Button == JoyButtonForMechSpare3StateTrigger && Buttons[Num])
                {
                    DataFrame.Spare3 = !DataFrame.Spare3;
                }

                if (Button == JoyButtonForMechSweepingLegs1StateTrigger && Buttons[Num])
                {
                    DataFrame.SweepingLegs1 = !DataFrame.SweepingLegs1;
                }

                if (Button == JoyButtonForMechSweepingLegs2StateTrigger && Buttons[Num])
                {
                    DataFrame.SweepingLegs2 = !DataFrame.SweepingLegs2;
                }

                if (Button == JoyButtonForMechVibrationStateTrigger && Buttons[Num])
                {
                    DataFrame.Vibration = !DataFrame.Vibration;
                }

                if (Button == JoyButtonForMechWaterSprayStateTrigger && Buttons[Num])
                {
                    DataFrame.WaterSpray = !DataFrame.WaterSpray;
                }

                if (Button == JoyButtonForMechWindStateTrigger && Buttons[Num])
                {
                    DataFrame.Wind = !DataFrame.Wind;
                }

                if (Button == JoyButtonForMechSytheticNoiseEffect && Buttons[Num])
                {
                    AddSytheticNoiseEffect = !AddSytheticNoiseEffect;
                }

                if (Button == JoyButtonForEnd && Buttons[Num])
                {
                    Task.Run(() => Owner.CaptureEnd.Invoke());
                }

                Num++;
            }
        }
 protected abstract void SetCylinders(MomentaryPositionAndTimingFrameDataModel DataFrame);