コード例 #1
0
 public override void OnWagonActivate(Wagon wagon, ActivateInfo info)
 {
     if (info.button == ActivateButton.RightClick)
     {
         Destroy(wagon.gameObject);
     }
 }
コード例 #2
0
    public override void OnTrackActivate(TrackSectionComponent track, ActivateInfo info)
    {
        bool selectStart;

        if (info.button == ActivateButton.LeftClick && HighlightClosestEnd(track.trackSection, true, info.hit.point, out selectStart))
        {
            if (state == State.Idle)
            {
                fromSection = track.trackSection;
                fromEnd     = !selectStart;
                ToState(State.SelectedStart);
            }
            else if (state == State.SelectedStart)
            {
                // Try to place the track
                var toSection = track.trackSection;
                var toEnd     = !selectStart;
                if (!TryPlaceTrack(fromSection, fromEnd, toSection, toEnd))
                {
                    Debug.Log("Unable to place flex section!");
                }

                ToState(State.Idle);
            }
        }
        else if (info.button == ActivateButton.RightClick)
        {
            ToState(State.Idle);
        }
    }
コード例 #3
0
 public override void OnTrackActivate(TrackSectionComponent track, ActivateInfo info)
 {
     if (info.button == ActivateButton.LeftClick && selectedWagon != null)
     {
         // Place the selected wagon on the track
         float distance;
         GetSnappedTrackPosition(track.trackSection, info.hit.point, out distance);
         PlaceSelected(track.trackSection, distance);
     }
 }
コード例 #4
0
 public override void OnTrackHover(TrackSectionComponent track, ActivateInfo info)
 {
     if (HighlightClosestEnd(track.trackSection, true, info.hit.point, out shouldInvertOnReposition))
     {
         lastHighlightedSection = track.trackSection;
     }
     else
     {
         lastHighlightedSection = null;
     }
 }
コード例 #5
0
ファイル: DefaultTool.cs プロジェクト: WouterBrookhuis/Rails
    public override void OnWagonActivate(Wagon wagon, ActivateInfo info)
    {
        var localHit = wagon.transform.InverseTransformPoint(info.hit.point);
        var mag      = wagon.rigidbody.mass * trainImpulseSpeed * (1.0f / Time.deltaTime);

        if (localHit.z < 0)
        {
            mag = -mag;
        }
        // Push wagon
        wagon.ApplyForce(mag);
    }
コード例 #6
0
    public override void OnWagonActivate(Wagon wagon, ActivateInfo info)
    {
        var loco = wagon.GetComponent <LocomotiveController>();

        if (loco != null)
        {
            DeactivateLocomotiveGlow();
            locomotive = loco;
            var glow = locomotive.GetComponent <GlowObject>();
            glow.ActivateGlow();
            speedSlider.value = Mathf.Round(locomotive.targetSpeed) / multiplier;
        }
    }
コード例 #7
0
    public override void OnTrackHover(TrackSectionComponent track, ActivateInfo info)
    {
        if (selectedWagon != null)
        {
            float distance;
            // TODO: Draw ghost instead
            var matrix = Matrix4x4.TRS(GetSnappedTrackPosition(track.trackSection, info.hit.point, out distance),
                                       track.trackSection.GetRotationOnTrack(distance),
                                       Vector3.one);

            Highlighter.DrawHighlighter(matrix);

            Graphics.DrawMesh(selectedWagon.GetComponent <MeshFilter>().sharedMesh, matrix, selectedWagon.GetComponent <MeshRenderer>().sharedMaterial, gameObject.layer);
        }
    }
コード例 #8
0
 public override void OnTrackActivate(TrackSectionComponent track, ActivateInfo info)
 {
     if (lastHighlightedSection == track.trackSection && info.button == ActivateButton.LeftClick)
     {
         // Reposition on track section, or deselect
         trackLayer.Reposition(lastHighlightedSection != trackLayer.CurrentSection ? lastHighlightedSection : null, shouldInvertOnReposition);
     }
     else if (info.button == ActivateButton.RightClick)
     {
         // Delete track
         if (track.trackSection == trackLayer.CurrentSection)
         {
             trackLayer.CurrentSection = null;
         }
         RemoveTrackSection(track);
     }
 }
コード例 #9
0
        private DataTable QueryLogInfo()
        {
            DateTime time  = DateTime.Now;
            DateTime start = time;
            DateTime end   = time;

            if (dpStart.SelectedDate != null)
            {
                start = dpStart.SelectedDate.Value;
            }
            if (dpEnd.SelectedDate != null)
            {
                end = dpEnd.SelectedDate.Value.AddDays(1).AddMilliseconds(-1);
            }
            ActivateInfo act = new ActivateInfo(start, end);

            return(act.QueryLogIn());
        }
コード例 #10
0
        private void MainTimer_Tick(object sender, EventArgs e)
        {
            if (UITag == SysParms.UITag)
            {//单击的为当前窗口
                return;
            }

            if (SysParms.UITag == 8)
            {//退出时 如推焦车推焦杆和平煤杆正在动,即处于生产状态时,禁止;
                //bool yes = false;
                for (int i = 0; i < 2; i++)
                {
                    if (((TjcDataRead)Communication.CarsLst[i].DataRead).PushPoleLength == 0 && ((TjcDataRead)Communication.CarsLst[i].DataRead).PingPoleLength == 0)
                    {
                        ActivateInfo act = new ActivateInfo(DateTime.Now, false);
                        act.RecToDB();

                        Environment.Exit(0);
                    }
                    else
                    {
                        SysParms.UITag = UITag;
                        string mesg = (i + 1) + "#推焦车正在推焦或者平煤,请等待推焦和平煤结束之后再退出!";
                        MessageBox.Show(mesg, "提示");
                        return;
                    }
                }
            }
            // 0630 新增结焦状态 0912增加系统设置
            if (SysParms.UITag != UITag)
            {
                if (SysParms.UITag == 1)
                {
                    planEdit.UpdateDgItemsSource();
                }
                ui[SysParms.UITag].Show();
                ui[UITag].Hide();
                UITag = SysParms.UITag;
            }
        }
コード例 #11
0
ファイル: Coupler.cs プロジェクト: WouterBrookhuis/Rails
 public void Hover(ActivateInfo hit)
 {
     // TODO: Highlight in some way?
 }
コード例 #12
0
ファイル: Coupler.cs プロジェクト: WouterBrookhuis/Rails
 public void Activate(ActivateInfo hit)
 {
     Decouple();
 }
コード例 #13
0
 public virtual void OnTrackActivate(TrackSectionComponent track, ActivateInfo info)
 {
 }
コード例 #14
0
 public virtual void OnWagonActivate(Wagon wagon, ActivateInfo info)
 {
 }
コード例 #15
0
ファイル: Switch.cs プロジェクト: WouterBrookhuis/Rails
 public void Activate(ActivateInfo info)
 {
     junction.Toggle();
     UpdateFromJunction();
 }
コード例 #16
0
        private void RecActivateInfo()
        {
            ActivateInfo act = new ActivateInfo(DateTime.Now, true);

            act.RecToDB();
        }
コード例 #17
0
ファイル: Switch.cs プロジェクト: WouterBrookhuis/Rails
 public void Hover(ActivateInfo info)
 {
 }
コード例 #18
0
    // Update is called once per frame
    void Update()
    {
        // Get input parameters
        var mouseInput = new Vector2(Input.GetAxisRaw("Mouse X"), invertMouseY ? Input.GetAxisRaw("Mouse Y") : -Input.GetAxisRaw("Mouse Y"));
        var walkInput  = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical"));
        var scaleInput = Input.GetAxisRaw("Mouse ScrollWheel");
        var speed      = walkSpeed;

        if (walkInput.sqrMagnitude > 1)
        {
            walkInput.Normalize();
        }
        if (Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift))
        {
            speed = runSpeed;
        }
        else if (Input.GetKey(KeyCode.LeftControl) || Input.GetKey(KeyCode.RightControl))
        {
            speed = stepSpeed;
        }
        // Handle mouse lock
        if (Input.GetKeyDown(KeyCode.LeftAlt) || Input.GetKeyDown(KeyCode.RightAlt))
        {
            SetMouseLock(!lockedMouse);
        }

        // Do scale
        height = Mathf.Clamp(height + scaleInput * scaleSpeed, minHeight, maxHeight);

        if (!disableLookWhenMouseUnlocked || lockedMouse)
        {
            // Do yaw rotation
            transform.Rotate(Vector3.up, mouseInput.x * mouseSensitivity * Time.deltaTime);

            // Do pitch rotation
            var pitchDelta = mouseInput.y * mouseSensitivity * Time.deltaTime;
            if (pitchAngle + pitchDelta < -85)
            {
                pitchDelta = -85 - pitchAngle;
            }
            else if (pitchAngle + pitchDelta > 85)
            {
                pitchDelta = 85 - pitchAngle;
            }
            pitchAngle += pitchDelta;
            pitchTransform.Rotate(Vector3.right, pitchDelta, Space.Self);
        }

        // Do movement
        transform.Translate(walkInput * speed * Time.deltaTime * scale, Space.Self);

        // Update camera height
        var pos = pitchTransform.localPosition;

        pos.y = height * scale;
        pitchTransform.localPosition = pos;

        // Do activation
        RaycastHit hit;
        Ray        ray = lockedMouse ?
                         new Ray(pitchTransform.position, pitchTransform.forward) :
                         Camera.main.ScreenPointToRay(Input.mousePosition);

        if (Physics.Raycast(ray, out hit, 1000.0f, activatableMask))
        {
            var activatable = hit.collider.GetComponent <IActivatable>();
            var info        = new ActivateInfo(hit, ActivateButton.None);
            if (activatable != null)
            {
                activatable.Hover(info);
                if (Clicked())
                {
                    info.button = Input.GetButtonDown("Fire1") ? ActivateButton.LeftClick : ActivateButton.RightClick;
                    activatable.Activate(info);
                }
            }
            else if (Clicked())
            {
                ToolController.Instance.ActiveTool.OnTerrainHit(hit);
            }
        }
        else if (Clicked())
        {
            ToolController.Instance.ActiveTool.OnNothingHit();
        }
    }
コード例 #19
0
ファイル: Wagon.cs プロジェクト: WouterBrookhuis/Rails
 public void Activate(ActivateInfo hit)
 {
     ToolController.Instance.ActiveTool.OnWagonActivate(this, hit);
 }
コード例 #20
0
 public void Hover(ActivateInfo hit)
 {
     ToolController.Instance.ActiveTool.OnTrackHover(this, hit);
 }