コード例 #1
0
 public void CameraDown(DigitalEvent digitalEvent)
 {
     if (inFreeRoamMode && cameraTransform != null && digitalEvent.State == DigitalState.Held)
     {
         cameraTransform.Position += UnitVector3D.YAxis.ScaleBy(-FreeRoamCameraMoveDelta);
     }
 }
コード例 #2
0
 public void CameraRight(DigitalEvent digitalEvent)
 {
     if (inFreeRoamMode && cameraTransform != null && digitalEvent.State == DigitalState.Held)
     {
         cameraTransform.Position += cameraTransform.Forward.CrossProduct(UnitVector3D.YAxis).ScaleBy(-FreeRoamCameraMoveDelta);
     }
 }
コード例 #3
0
 public void CameraBackward(DigitalEvent digitalEvent)
 {
     if (inFreeRoamMode && cameraTransform != null && digitalEvent.State == DigitalState.Held)
     {
         var forward = cameraTransform.Forward;
         forward = new Vector3D(forward.X, 0, forward.Z).Normalize();
         cameraTransform.Position += forward.ScaleBy(-FreeRoamCameraMoveDelta);
     }
 }
コード例 #4
0
 protected virtual void onDigitalEvent()
 {
     if (_digital.Checked)
     {
         DigitalEvent?.Invoke(this, new AnalogDigitalEventArgs(AnalogDigital.Digital));
     }
     else
     {
         DigitalEvent?.Invoke(this, new AnalogDigitalEventArgs(AnalogDigital.Analog));
     }
 }
コード例 #5
0
        public void ProcessInput(DigitalEvent mouseDownEvent)
        {
            if (mouseDownEvent.State == DigitalState.Down)
            {
                Ray ray = UnityEngine.Camera.main.ScreenPointToRay(UnityEngine.Input.mousePosition);

                bool isAlwaysOnTop  = instance.Entity?.GetComponent <AlwaysOnTop>() != null;
                bool hitIntercepted = false;
                bool hitMe          = false;
                var  hits           = Physics.RaycastAll(ray, Mathf.Infinity);
                foreach (var hit in hits)
                {
                    if (hit.collider.transform == transform)
                    {
                        hitMe = true;
                    }
                    else if (ApiProviderData.GameObjects.TryGetValue(hit.collider.transform.gameObject, out Entity otherE))
                    {
                        if (otherE.GetComponent <AlwaysOnTop>() != null)
                        {
                            hitIntercepted = true;
                        }
                        else
                        {
                            if (instance.UsingChildren)
                            {
                                Entity parent = otherE;
                                while (parent != 0)
                                {
                                    parent = parent.GetComponent <Parent>().ParentEntity;
                                    if (parent == instance.Entity)
                                    {
                                        hitMe = true;
                                        break;
                                    }
                                }
                            }
                            if (!hitMe)
                            {
                                hitIntercepted = true;
                            }
                        }
                    }
                }
                if (hitMe && (!hitIntercepted || isAlwaysOnTop))
                {
                    Select();
                }
            }
        }
コード例 #6
0
 public void StartMouseDrag(DigitalEvent digitalEvent)
 {
     isMouseDragging = digitalEvent.State == DigitalState.Held;
     if (digitalEvent.State == DigitalState.Down)
     {
         // TODO cursor stuff
         // Cursor.lockState = CursorLockMode.Locked; // Hide and lock cursor so the mouse doesn't leave the screen
         // Cursor.visible = false;
     }
     else if (digitalEvent.State == DigitalState.Up)
     {
         // Cursor.lockState = CursorLockMode.None; // Show and unlock cursor when done
         // Cursor.visible = true;
     }
 }
コード例 #7
0
 public void CameraBoost(DigitalEvent digitalEvent)
 {
     UseSpeedModifier = inFreeRoamMode && digitalEvent.State == DigitalState.Held;
 }