상속: MonoBehaviour
예제 #1
0
        public void PropertyManager_EndCurrentEdit_IEditableObjectCurrentNotSuccess_DoesNotCallEndEdit(bool cancel, int expectedCallCount)
        {
            int callCount  = 0;
            var dataSource = new EditableDataSource
            {
                EndEditHandler = () =>
                {
                    callCount++;
                }
            };

            var manager = new PropertyManager(dataSource);

            using var control = new SubControl { Visible = true };
            control.CreateControl();
            var controlBindings = new ControlBindingsCollection(control);
            var cancelBinding   = new Binding("Value", dataSource, "Property", true);
            BindingCompleteEventHandler bindingCompleteHandler = (sender, e) =>
            {
                e.Cancel = cancel;
            };

            cancelBinding.BindingComplete += bindingCompleteHandler;
            controlBindings.Add(cancelBinding);
            manager.Bindings.Add(cancelBinding);
            manager.EndCurrentEdit();
            Assert.Equal(expectedCallCount, callCount);

            manager.EndCurrentEdit();
            Assert.Equal(expectedCallCount * 2, callCount);
        }
예제 #2
0
        public void Control_CreateParams_GetParentWithHandle_ReturnsExpected()
        {
            using var parent = new Control();
            Assert.NotEqual(IntPtr.Zero, parent.Handle);
            using var control = new SubControl
                  {
                      Parent = parent
                  };

            CreateParams createParams = control.CreateParams;

            Assert.Null(createParams.Caption);
            Assert.Null(createParams.ClassName);
            Assert.Equal(0x8, createParams.ClassStyle);
            Assert.Equal(0, createParams.ExStyle);
            Assert.Equal(0, createParams.Height);
            Assert.Equal(parent.Handle, createParams.Parent);
            Assert.Null(createParams.Param);
            Assert.Equal(0x56010000, createParams.Style);
            Assert.Equal(0, createParams.Width);
            Assert.Equal(0, createParams.X);
            Assert.Equal(0, createParams.Y);
            Assert.Same(createParams, control.CreateParams);
            Assert.True(control.IsHandleCreated);
        }
예제 #3
0
 internal static void SubControlStartPostfix(SubControl __instance)
 {
     if (__instance.gameObject.name.StartsWith("Cyclops-MainPrefab"))
     {
         __instance.gameObject.AddComponent <CySonarComponent>();
     }
 }
        public void Start()
        {
            subroot = gameObject.GetComponentInParent <SubRoot>();

            subcontrol = subroot.GetComponentInParent <SubControl>();

            prev_multiplier = 1;
        }
예제 #5
0
    public void Load_LabelTag_16834_5()
    {
        SubControl uc_label = (SubControl)LoadControl("notice.ascx");

        uc_label.SetDb(this.Db_Context);
        uc_label.SetConfig(this.config);
        LabelTag_16834_5.Controls.Add(uc_label);
    }
예제 #6
0
        public void HelpProvider_BoundControl_ValidEventArgs_Nop()
        {
            using var provider = new HelpProvider();
            using var control  = new SubControl();
            provider.SetShowHelp(control, true);

            control.OnHelpRequested(new HelpEventArgs(new Point(1, 2)));
        }
예제 #7
0
        public void HelpProvider_BoundControl_NullEventEventArgs_Nop()
        {
            using var provider = new HelpProvider();
            using var control  = new SubControl();
            provider.SetShowHelp(control, true);

            control.OnHelpRequested(null);
        }
예제 #8
0
    public void Load_LabelTag_16651_4()
    {
        SubControl uc_label = (SubControl)LoadControl("another.ascx");

        uc_label.SetDb(this.Db_Context);
        uc_label.SetConfig(this.config);
        LabelTag_16651_4.Controls.Add(uc_label);
    }
예제 #9
0
        private static void Postfix(SubControl __instance)
        {
            if (CyclopsStrafeMod.ModErrorOccurred)
            {
                return;
            }

            m_instance?.FixedUpdateCyclopsControls(__instance);
        }
        public void Start()
        {
            subroot = gameObject.GetComponentInParent <SubRoot>();

            subcontrol = subroot.GetComponentInParent <SubControl>();

            Main.Instance.onCyclopsSpeedValueChanged.AddHandler(this, new Event <object> .HandleFunction(OnCyclopsSpeedValueChanged));
            onCyclopsMotorModeChanged.AddHandler(this, new Event <CyclopsMotorMode.CyclopsMotorModes> .HandleFunction(OnCyclopsMotorModeChanged));
        }
예제 #11
0
        public void HelpProvider_BoundControl_NoInformation_Nop()
        {
            using var provider = new HelpProvider();
            using var control  = new SubControl();
            provider.SetShowHelp(control, true);

            var e = new HelpEventArgs(new Point(1, 2));

            control.OnHelpRequested(e);
            Assert.True(e.Handled);
        }
예제 #12
0
        protected override void Awake()
        {
            SubControl subControl = GetComponent <SubControl>();

            WheelYawSetter   = value => subControl.steeringWheelYaw = value;
            WheelPitchSetter = value => subControl.steeringWheelPitch = value;

            subTurnHandlers     = subControl.turnHandlers;
            subThrottleHandlers = subControl.throttleHandlers;
            base.Awake();
        }
예제 #13
0
 static void Postfix(SubControl __instance)
 {
     if (__instance.cyclopsMotorMode.engineOn && !__instance.appliedThrottle)
     {
         float energyCost = DayNightCycle.main.deltaTime * CyclopsSettings.engineIdlingEnergyConsumption;
         if (!__instance.powerRelay.ConsumeEnergy(energyCost, out _))
         {
             __instance.sub.voiceNotificationManager.PlayVoiceNotification(__instance.sub.enginePowerDownNotification, true, false);
             __instance.sub.BroadcastMessage("InvokeChangeEngineState", false, SendMessageOptions.RequireReceiver);
         }
     }
 }
예제 #14
0
        public void ToolTip_SetToolTipToControl_Invokes_SetToolTip_OfControl()
        {
            using ToolTip toolTip = new ToolTip();
            SubControl control = new SubControl();

            control.CreateControl();

            Assert.NotEqual(IntPtr.Zero, toolTip.Handle); // A workaroung to create the toolTip native window Handle

            toolTip.SetToolTip(control, "Some test text");

            Assert.Equal(1, control.InvokeSetCount);
        }
예제 #15
0
        private void FixedUpdateCyclopsControls(SubControl _subControl) //injected at the end of SubControl.FixedUpdate() method
        {
            try
            {
                if (_subControl == null)
                {
                    return;
                }

                if (!_subControl.LOD.IsFull())
                {
                    return;
                }

                if (_subControl.powerRelay.GetPowerStatus() == PowerSystem.Status.Offline)
                {
                    return;
                }

                if (Ocean.main.GetDepthOf(_subControl.gameObject) <= 0f)
                {
                    return;
                }

                var throttle = (Vector3)m_throttleMemberInfo.GetValue(_subControl);

                var rb = _subControl.GetComponent <Rigidbody>();
                rb.freezeRotation = false;

                if ((double)Mathf.Abs(throttle.x) <= 0.0001 || !m_strafing)
                {
                    return;
                }

                rb.freezeRotation = true;

                float num = _subControl.BaseVerticalAccel;
                num += (float)_subControl.gameObject.GetComponentsInChildren <BallastWeight>().Length *_subControl.AccelPerBallast;
                var canAccel = (bool)m_canAccelInfo.GetValue(_subControl);
                if (canAccel)
                {
                    rb.AddForce(-_subControl.transform.right * num * _subControl.accelScale * throttle.x * CyclopsStrafeMod.ModConfig.StrafeSpeed, ForceMode.Acceleration);
                }
            }
            catch (System.Exception _e)
            {
                Util.LogE("Error occurred while updating mod: " + _e.Message);
                Util.LogE("\n" + _e.StackTrace);
                CyclopsStrafeMod.ModErrorOccurred = true;
            }
        }
예제 #16
0
        public IHttpActionResult FindSubOne(Guid id) => Json(SubControlService.TryCatchAction(
                                                                 action: m =>
        {
            id.CheckNotEmpty("id");
            var cacheUser = GetCacheUser;

            SubControl queryable = m.SubControlQueryable.FirstOrDefault(mx => mx.Id == id && ListOrganizeId.Contains(mx.LigthPoleOne.HostOne.Organize_Id));
            if (cacheUser.IsAdministrator)
            {
                queryable = m.SubControlQueryable.FirstOrDefault(mx => mx.Id == id);
            }
            SubControlView subv = queryable.MapTo <SubControlView>();
            return(new OperationResult(OperationResultType.Success, "请求数据成功", subv));
        }));
예제 #17
0
        public void HelpProvider_BoundControl_InvalidNamespace_ThrowsArgumentException(string helpNamespace)
        {
            using var provider = new HelpProvider
                  {
                      HelpNamespace = helpNamespace
                  };
            using var control = new SubControl();
            provider.SetShowHelp(control, true);

            var e = new HelpEventArgs(new Point(1, 2));

            Assert.Throws <ArgumentException>("url", () => control.OnHelpRequested(e));
            Assert.False(e.Handled);
        }
    // Use this for initialization
    void Start()
    {
        FirebaseApp.DefaultInstance.SetEditorDatabaseUrl("https://redseptember-5c74c.firebaseio.com/");
        reference = FirebaseDatabase.DefaultInstance.RootReference;

        reference.Child("Missions/Match1/Sub").Child("Dive").SetValueAsync(0);
        reference.Child("Missions/Match1/Sub").Child("Engine").SetValueAsync(0);
        reference.Child("Missions/Match1/Sub").Child("Pitch").SetValueAsync(0);
        reference.Child("Missions/Match1/Sub").Child("Torpedo").SetValueAsync(0);

        FirebaseDatabase.DefaultInstance.GetReference("Missions/Match1/Sub/Dive").ValueChanged    += HandleDiveChanged;
        FirebaseDatabase.DefaultInstance.GetReference("Missions/Match1/Sub/Engine").ValueChanged  += HandleEngineChanged;
        FirebaseDatabase.DefaultInstance.GetReference("Missions/Match1/Sub/Pitch").ValueChanged   += HandlePitchChanged;
        FirebaseDatabase.DefaultInstance.GetReference("Missions/Match1/Sub/Torpedo").ValueChanged += HandleTorpedoChanged;

        subController = submarine.GetComponent <SubControl>();
    }
예제 #19
0
        protected override void Awake()
        {
            rigidbody = GetComponent <Rigidbody>();
            if (rigidbody != null)
            {
                rigidbody.interpolation = RigidbodyInterpolation.Interpolate;
            }

            subroot    = gameObject.GetComponent <SubRoot>();
            control    = GetComponent <SubControl>();
            stabilizer = GetComponent <Stabilizer>();

            subTurnHandlers     = (ISubTurnHandler[])control.ReflectionGet("turnHandlers");
            subThrottleHandlers = (ISubThrottleHandler[])control.ReflectionGet("throttleHandlers");

            base.Awake();
        }
예제 #20
0
        public void Control_CreateParams_GetDefault_ReturnsExpected()
        {
            using var control = new SubControl();
            CreateParams createParams = control.CreateParams;

            Assert.Null(createParams.Caption);
            Assert.Null(createParams.ClassName);
            Assert.Equal(0x8, createParams.ClassStyle);
            Assert.Equal(0, createParams.ExStyle);
            Assert.Equal(0, createParams.Height);
            Assert.Equal(IntPtr.Zero, createParams.Parent);
            Assert.Null(createParams.Param);
            Assert.Equal(0x56010000, createParams.Style);
            Assert.Equal(0, createParams.Width);
            Assert.Equal(0, createParams.X);
            Assert.Equal(0, createParams.Y);
            Assert.Same(createParams, control.CreateParams);
            Assert.False(control.IsHandleCreated);
        }
예제 #21
0
        public void ToolTip_RemoveAll_Invokes_RemoveToolTip_OfControl()
        {
            using ToolTip toolTip    = new ToolTip();
            using SubControl control = new SubControl();

            // Create a top level control to the toolTip consider
            // the tested control as created when destroying regions
            using Control topLevelControl = new Control();
            topLevelControl.Controls.Add(control);
            topLevelControl.CreateControl();
            control.CreateControl();

            Assert.True(toolTip.Handle != IntPtr.Zero); // A workaroung to create the toolTip native window Handle

            toolTip.SetToolTip(control, "Some test text");
            toolTip.RemoveAll();

            Assert.Equal(1, control.InvokeRemoveCount);
        }
예제 #22
0
        public void Control_CreateParams_GetTopLevel_ReturnsExpected()
        {
            using var control = new SubControl();
            control.SetTopLevel(true);

            CreateParams createParams = control.CreateParams;

            Assert.Null(createParams.Caption);
            Assert.Null(createParams.ClassName);
            Assert.Equal(0x8, createParams.ClassStyle);
            Assert.Equal(0, createParams.ExStyle);
            Assert.True(createParams.Height > 0);
            Assert.Equal(IntPtr.Zero, createParams.Parent);
            Assert.Null(createParams.Param);
            Assert.Equal(0x12010000, createParams.Style);
            Assert.True(createParams.Width > 0);
            Assert.Equal(0, createParams.X);
            Assert.Equal(0, createParams.Y);
            Assert.Same(createParams, control.CreateParams);
            Assert.True(control.IsHandleCreated);
        }
예제 #23
0
        public void Control_CreateParams_GetContainerControl_ReturnsExpected(bool containerControl, int expectedExStyle)
        {
            using var control = new SubControl();
            control.SetStyle(ControlStyles.ContainerControl, containerControl);

            CreateParams createParams = control.CreateParams;

            Assert.Null(createParams.Caption);
            Assert.Null(createParams.ClassName);
            Assert.Equal(0x8, createParams.ClassStyle);
            Assert.Equal(expectedExStyle, createParams.ExStyle);
            Assert.Equal(0, createParams.Height);
            Assert.Equal(IntPtr.Zero, createParams.Parent);
            Assert.Null(createParams.Param);
            Assert.Equal(0x56010000, createParams.Style);
            Assert.Equal(0, createParams.Width);
            Assert.Equal(0, createParams.X);
            Assert.Equal(0, createParams.Y);
            Assert.Same(createParams, control.CreateParams);
            Assert.False(control.IsHandleCreated);
        }
        public void Add_ControlBindings_Success()
        {
            var control = new SubControl();
            ControlBindingsCollection collection = control.DataBindings;
            var binding1 = new Binding(nameof(SubControl.Text), 1, "dataMember");
            var binding2 = new Binding(nameof(SubControl.AccessibleRole), 1, "dataMember");
            var binding3 = new Binding(null, 1, "dataMember");
            var binding4 = new Binding("", 1, "dataMember");
            var binding5 = new Binding(nameof(SubControl.text), 1, "dataMember");

            collection.Add(binding1);
            collection.Add(binding2);
            collection.Add(binding3);
            collection.Add(binding4);
            collection.Add(binding5);
            Assert.Equal(5, collection.Count);
            Assert.Same(binding1, collection[0]);
            Assert.Same(binding2, collection[1]);
            Assert.Same(binding3, collection[2]);
            Assert.Same(binding4, collection[3]);
            Assert.Same(binding5, collection[4]);
        }
예제 #25
0
        public void Control_CreateParams_GetVisible_ReturnsExpected(bool visible, int expectedStyle)
        {
            using var control = new SubControl
                  {
                      Visible = visible
                  };

            CreateParams createParams = control.CreateParams;

            Assert.Null(createParams.Caption);
            Assert.Null(createParams.ClassName);
            Assert.Equal(0x8, createParams.ClassStyle);
            Assert.Equal(0, createParams.ExStyle);
            Assert.Equal(0, createParams.Height);
            Assert.Equal(IntPtr.Zero, createParams.Parent);
            Assert.Null(createParams.Param);
            Assert.Equal(expectedStyle, createParams.Style);
            Assert.Equal(0, createParams.Width);
            Assert.Equal(0, createParams.X);
            Assert.Equal(0, createParams.Y);
            Assert.Same(createParams, control.CreateParams);
            Assert.False(control.IsHandleCreated);
        }
예제 #26
0
    public void Bind_ListTag_67816_5()
    {
        /*orderby=id&desc=true&take=99&item=artiel_by_categ*/
        var list = from a in Db_Context.Category
                   select a;
        int totalsize = list.Count();

        list = list.OrderByDescending(c => c.ID).Take(99);
        /*不分页,显示前 99条数据;*/
        if (totalsize == 0)
        {
            empty_ListTag_67816_5.Text = "<div class='emptydiv'><span class='emptytext'>暂无内容</span></div>";
            return;
        }
        foreach (Category _item in list)
        {
            SubControl uc_item = (SubControl)LoadControl("artiel_by_categ.ascx");
            uc_item.SetItem(_item);
            uc_item.SetDb(this.Db_Context);
            uc_item.SetConfig(this.config);
            ListTag_67816_5.Controls.Add(uc_item);
        }
    }
예제 #27
0
        /// <summary>
        /// 添加分控信息
        /// </summary>
        /// <param name="cache">当前操作用户的缓存</param>
        /// <param name="datas">待添加的数据集合</param>
        /// <returns></returns>
        public OperationResult AddSubControls(CacheUser cache, params SubControlInputDto[] datas)
        {
            int count = 0;

            SubAggregationRepository.UnitOfWork.BeginTransaction();
            foreach (var data in datas)
            {
                SubControl sub = data.MapTo <SubControl>();
                sub.CreatedTime = DateTime.Now;
                var poleone = LightPoleRepository.Entities.FirstOrDefault(m => m.Id == sub.LigthPoleOne_Id);
                if (poleone == null)
                {
                    throw new Exception("id:指定灯杆信息不存在");
                }
                if (SubControlRepository.CheckExists(m => m.SubNum == data.SubNum && m.LigthPoleOne.Host_Id == poleone.Host_Id))
                {
                    throw new Exception($"id:分控编号{data.SubNum}已经存在!不能在同一台主机上添加相同的分控编号");
                }
                if (poleone == null)
                {
                    throw new Exception("id:分控关联的灯杆不存在");
                }
                SubAggregation aggregation = new SubAggregation
                {
                    CreatedTime   = DateTime.Now,
                    SubControlOne = sub,
                    LightPole_Id  = sub.LigthPoleOne_Id,
                    Host_Id       = poleone.Host_Id,
                    Organzie_Id   = poleone.HostOne.Organize_Id
                };
                count += SubAggregationRepository.Insert(aggregation);
            }
            ;
            SubAggregationRepository.UnitOfWork.Commit();
            return(count > 0 ? new OperationResult(OperationResultType.Success, $"成功添加{count/2}条数据") :
                   new OperationResult());
        }
예제 #28
0
 // Use this for initialization
 void Start()
 {
     Laser = FindObjectOfType<ShieldAndLazer> ();
     SubC = FindObjectOfType<SubControl> ();
 }
예제 #29
0
 private void Start()
 {
     sub = GameObject.FindObjectOfType<SubControl>();
     Lights = sub.exteriorLights.GetComponentsInChildren<Light>(true);
 }
예제 #30
0
        public void Control_Ctor_Control_String_Int_Int_Int_Int(Control parent, string text, int left, int top, int width, int height, string expectedText)
        {
            using var control = new SubControl(parent, text, left, top, width, height);
            Assert.Null(control.AccessibleDefaultActionDescription);
            Assert.Null(control.AccessibleDescription);
            Assert.Null(control.AccessibleName);
            Assert.Equal(AccessibleRole.Default, control.AccessibleRole);
            Assert.False(control.AllowDrop);
            Assert.Equal(AnchorStyles.Top | AnchorStyles.Left, control.Anchor);
            Assert.False(control.AutoSize);
            Assert.Equal(Control.DefaultBackColor, control.BackColor);
            Assert.Null(control.BackgroundImage);
            Assert.Equal(ImageLayout.Tile, control.BackgroundImageLayout);
            Assert.Null(control.BindingContext);
            Assert.Equal(top + height, control.Bottom);
            Assert.Equal(new Rectangle(left, top, width, height), control.Bounds);
            Assert.True(control.CanEnableIme);
            Assert.False(control.CanFocus);
            Assert.True(control.CanRaiseEvents);
            Assert.True(control.CanSelect);
            Assert.False(control.Capture);
            Assert.True(control.CausesValidation);
            Assert.Equal(new Rectangle(0, 0, width, height), control.ClientRectangle);
            Assert.Equal(new Size(width, height), control.ClientSize);
            Assert.Null(control.Container);
            Assert.False(control.ContainsFocus);
            Assert.Null(control.ContextMenuStrip);
            Assert.Empty(control.Controls);
            Assert.Same(control.Controls, control.Controls);
            Assert.False(control.Created);
            Assert.Same(Cursors.Default, control.Cursor);
            Assert.Same(Cursors.Default, control.DefaultCursor);
            Assert.Equal(ImeMode.Inherit, control.DefaultImeMode);
            Assert.Equal(new Padding(3), control.DefaultMargin);
            Assert.Equal(Size.Empty, control.DefaultMaximumSize);
            Assert.Equal(Size.Empty, control.DefaultMinimumSize);
            Assert.Equal(Padding.Empty, control.DefaultPadding);
            Assert.Equal(Size.Empty, control.DefaultSize);
            Assert.False(control.DesignMode);
            Assert.Equal(new Rectangle(0, 0, width, height), control.DisplayRectangle);
            Assert.Equal(DockStyle.None, control.Dock);
            Assert.False(control.DoubleBuffered);
            Assert.True(control.Enabled);
            Assert.NotNull(control.Events);
            Assert.Same(control.Events, control.Events);
            Assert.False(control.Focused);
            Assert.Equal(Control.DefaultFont, control.Font);
            Assert.Equal(control.Font.Height, control.FontHeight);
            Assert.Equal(Control.DefaultForeColor, control.ForeColor);
            Assert.False(control.HasChildren);
            Assert.Equal(height, control.Height);
            Assert.Equal(ImeMode.NoControl, control.ImeMode);
            Assert.Equal(ImeMode.NoControl, control.ImeModeBase);
            Assert.False(control.IsAccessible);
            Assert.False(control.IsMirrored);
            Assert.NotNull(control.LayoutEngine);
            Assert.Same(control.LayoutEngine, control.LayoutEngine);
            Assert.Equal(left, control.Left);
            Assert.Equal(new Point(left, top), control.Location);
            Assert.Equal(new Padding(3), control.Margin);
            Assert.Equal(Size.Empty, control.MaximumSize);
            Assert.Equal(Size.Empty, control.MinimumSize);
            Assert.Equal(Padding.Empty, control.Padding);
            Assert.Same(parent, control.Parent);
            Assert.Equal(new Size(width, height), control.PreferredSize);
            Assert.Equal("Microsoft\u00AE .NET", control.ProductName);
            Assert.False(control.RecreatingHandle);
            Assert.Null(control.Region);
            Assert.False(control.ResizeRedraw);
            Assert.Equal(left + width, control.Right);
            Assert.Equal(RightToLeft.No, control.RightToLeft);
            Assert.True(control.ShowFocusCues);
            Assert.True(control.ShowKeyboardCues);
            Assert.Null(control.Site);
            Assert.Equal(new Size(width, height), control.Size);
            Assert.Equal(0, control.TabIndex);
            Assert.True(control.TabStop);
            Assert.Same(expectedText, control.Text);
            Assert.Equal(top, control.Top);
            Assert.Null(control.TopLevelControl);
            Assert.False(control.UseWaitCursor);
            Assert.True(control.Visible);
            Assert.Equal(width, control.Width);

            Assert.False(control.IsHandleCreated);
        }
예제 #31
0
        public void Control_Ctor_String(string text, string expectedText)
        {
            var control = new SubControl(text);

            Assert.False(control.AllowDrop);
            Assert.Equal(AnchorStyles.Top | AnchorStyles.Left, control.Anchor);
            Assert.False(control.AutoSize);
            Assert.Equal(Control.DefaultBackColor, control.BackColor);
            Assert.Null(control.BackgroundImage);
            Assert.Equal(ImageLayout.Tile, control.BackgroundImageLayout);
            Assert.Null(control.BindingContext);
            Assert.Equal(0, control.Bottom);
            Assert.Equal(Rectangle.Empty, control.Bounds);
            Assert.True(control.CanEnableIme);
            Assert.True(control.CanRaiseEvents);
            Assert.True(control.CausesValidation);
            Assert.Equal(Size.Empty, control.ClientSize);
            Assert.Equal(Rectangle.Empty, control.ClientRectangle);
            Assert.Null(control.Container);
            Assert.Null(control.ContextMenuStrip);
            Assert.Empty(control.Controls);
            Assert.Same(control.Controls, control.Controls);
            Assert.False(control.Created);
            Assert.Same(Cursors.Default, control.Cursor);
            Assert.Same(Cursors.Default, control.DefaultCursor);
            Assert.Equal(ImeMode.Inherit, control.DefaultImeMode);
            Assert.Equal(new Padding(3), control.DefaultMargin);
            Assert.Equal(Size.Empty, control.DefaultMaximumSize);
            Assert.Equal(Size.Empty, control.DefaultMinimumSize);
            Assert.Equal(Padding.Empty, control.DefaultPadding);
            Assert.Equal(Size.Empty, control.DefaultSize);
            Assert.False(control.DesignMode);
            Assert.Equal(DpiHelper.DeviceDpi, control._deviceDpi);
            Assert.Equal(Rectangle.Empty, control.DisplayRectangle);
            Assert.Equal(DockStyle.None, control.Dock);
            Assert.False(control.DoubleBuffered);
            Assert.True(control.Enabled);
            Assert.NotNull(control.Events);
            Assert.Same(control.Events, control.Events);
            Assert.Equal(Control.DefaultFont, control.Font);
            Assert.Equal(control.Font.Height, control.FontHeight);
            Assert.Equal(Control.DefaultForeColor, control.ForeColor);
            Assert.False(control.HasChildren);
            Assert.Equal(0, control.Height);
            Assert.Equal(ImeMode.NoControl, control.ImeMode);
            Assert.Equal(ImeMode.NoControl, control.ImeModeBase);
            Assert.NotNull(control.LayoutEngine);
            Assert.Equal(0, control.Left);
            Assert.Equal(Point.Empty, control.Location);
            Assert.Equal(new Padding(3), control.Margin);
            Assert.Equal(Size.Empty, control.MaximumSize);
            Assert.Equal(Size.Empty, control.MinimumSize);
            Assert.Equal(Padding.Empty, control.Padding);
            Assert.Null(control.Parent);
            Assert.Equal(Size.Empty, control.PreferredSize);
            Assert.Equal("Microsoft\u00AE .NET", control.ProductName);
            Assert.False(control.RecreatingHandle);
            Assert.Null(control.Region);
            Assert.False(control.ResizeRedraw);
            Assert.Equal(BoundsSpecified.All, control.RequiredScaling);
            Assert.True(control.RequiredScalingEnabled);
            Assert.Equal(0, control.Right);
            Assert.Equal(RightToLeft.No, control.RightToLeft);
            Assert.Null(control.Site);
            Assert.Equal(Size.Empty, control.Size);
            Assert.Equal(0, control.TabIndex);
            Assert.True(control.TabStop);
            Assert.Equal(expectedText, control.Text);
            Assert.Equal(0, control.Top);
            Assert.Null(control.TopLevelControl);
            Assert.True(control.Visible);
            Assert.Equal(0, control.Width);

            Assert.False(control.IsHandleCreated);
        }
예제 #32
0
        private Optional<VehicleMovementData> GetVehicleMovement()
        {
            Vehicle vehicle = Player.main.GetVehicle();
            SubRoot sub = Player.main.GetCurrentSub();

            NitroxId id;
            Vector3 position;
            Quaternion rotation;
            Vector3 velocity;
            Vector3 angularVelocity;
            TechType techType;
            float steeringWheelYaw = 0f, steeringWheelPitch = 0f;
            bool appliedThrottle = false;
            Vector3 leftArmPosition = new Vector3(0, 0, 0);
            Vector3 rightArmPosition = new Vector3(0, 0, 0);

            if (vehicle != null)
            {
                id = NitroxEntity.GetId(vehicle.gameObject);
                position = vehicle.gameObject.transform.position;
                rotation = vehicle.gameObject.transform.rotation;
                techType = CraftData.GetTechType(vehicle.gameObject);

                Rigidbody rigidbody = vehicle.gameObject.GetComponent<Rigidbody>();

                velocity = rigidbody.velocity;
                angularVelocity = rigidbody.angularVelocity;

                // Required because vehicle is either a SeaMoth or an Exosuit, both types which can't see the fields either.
                steeringWheelYaw = (float)vehicle.ReflectionGet<Vehicle, Vehicle>("steeringWheelYaw");
                steeringWheelPitch = (float)vehicle.ReflectionGet<Vehicle, Vehicle>("steeringWheelPitch");

                // Vehicles (or the SeaMoth at least) do not have special throttle animations. Instead, these animations are always playing because the player can't even see them (unlike the cyclops which has cameras).
                // So, we need to hack in and try to figure out when thrust needs to be applied.
                if (vehicle && AvatarInputHandler.main.IsEnabled())
                {
                    if (techType == TechType.Seamoth)
                    {
                        bool flag = vehicle.transform.position.y < Ocean.main.GetOceanLevel() && vehicle.transform.position.y < vehicle.worldForces.waterDepth && !vehicle.precursorOutOfWater;
                        appliedThrottle = flag && GameInput.GetMoveDirection().sqrMagnitude > .1f;
                    }
                    else if (techType == TechType.Exosuit)
                    {
                        Exosuit exosuit = vehicle as Exosuit;
                        if (exosuit)
                        {
                            appliedThrottle = (bool)exosuit.ReflectionGet("_jetsActive") && (float)exosuit.ReflectionGet("thrustPower") > 0f;

                            Transform leftAim = (Transform)exosuit.ReflectionGet("aimTargetLeft", true);
                            Transform rightAim = (Transform)exosuit.ReflectionGet("aimTargetRight", true);

                            Vector3 eulerAngles = exosuit.transform.eulerAngles;
                            eulerAngles.x = MainCamera.camera.transform.eulerAngles.x;
                            Quaternion quaternion = Quaternion.Euler(eulerAngles.x, eulerAngles.y, eulerAngles.z);

                            leftArmPosition = leftAim.transform.position = MainCamera.camera.transform.position + quaternion * Vector3.forward * 100f;
                            rightArmPosition = rightAim.transform.position = MainCamera.camera.transform.position + quaternion * Vector3.forward * 100f;
                        }
                    }
                }
            }
            else if (sub != null && Player.main.isPiloting)
            {
                id = NitroxEntity.GetId(sub.gameObject);
                position = sub.gameObject.transform.position;
                rotation = sub.gameObject.transform.rotation;
                Rigidbody rigidbody = sub.GetComponent<Rigidbody>();
                velocity = rigidbody.velocity;
                angularVelocity = rigidbody.angularVelocity;
                techType = TechType.Cyclops;

                SubControl subControl = sub.GetComponent<SubControl>();
                steeringWheelYaw = (float)subControl.ReflectionGet("steeringWheelYaw");
                steeringWheelPitch = (float)subControl.ReflectionGet("steeringWheelPitch");
                appliedThrottle = subControl.appliedThrottle && (bool)subControl.ReflectionGet("canAccel");
            }
            else
            {
                return Optional.Empty;
            }

            VehicleMovementData model = VehicleMovementFactory.GetVehicleMovementData(techType,
                                                                                        id,
                                                                                        position,
                                                                                        rotation,
                                                                                        velocity,
                                                                                        angularVelocity,
                                                                                        steeringWheelYaw,
                                                                                        steeringWheelPitch,
                                                                                        appliedThrottle,
                                                                                        leftArmPosition,
                                                                                        rightArmPosition);
            return Optional.Of(model);
        }