Beispiel #1
0
 public void RecalculateTransformationMatrices()
 {
     ScreenCamera.RecalculateTransformationMatrices();
     LevelCamera.RecalculateTransformationMatrices();
     for (int i = 0; i < OuthersCam.Count; i++)
         OuthersCam[i].RecalculateTransformationMatrices();
 }
Beispiel #2
0
 public void Resize(EventArgs e)
 {
     ScreenCamera.UpdateResize(GameWindow.Width, GameWindow.Height);
     FontDrawing.ProjectionMatrix = ScreenCamera.ScreenProjectionMatrix;
     foreach (Scene scene in SceneList)
     {
         scene.Resize(e);
     }
 }
Beispiel #3
0
        public void Update(double time)
        {
            AddRemoveScenes();

            ScreenCamera.Update(time);
            ScreenCamera.SnapToCenter();
            ScreenCamera.UpdateProjectionMatrix();
            ScreenCamera.UpdateModelViewMatrix();

            var list = SceneList.Where(scene => !scene.Loaded).ToArray();

            foreach (var scene in list)
            {
                scene.Load();
            }
            Scene excl = SceneList.Where(scene => scene.Visible && !scene.Removed).FirstOrDefault(scene => scene.Exclusive);

            if (excl == null)
            {
                for (int i = SceneList.Count - 1; i >= 0; i--)
                {
                    if (SceneList[i].Removed)
                    {
                        continue;
                    }
                    if (!InputSceneFound && SceneList[i].Visible)
                    {
                        if (!SceneList[i].Focused)
                        {
                            SceneList[i].Focused = true;
                            SceneList[i].EnterFocus();
                        }
                        SceneList[i].Update(time, true);
                        InputSceneFound = true;
                    }
                    else
                    {
                        if (SceneList[i].Focused)
                        {
                            SceneList[i].Focused = false;
                            SceneList[i].ExitFocus();
                        }
                        SceneList[i].Update(time);
                    }
                }
            }
            else
            {
                if (!excl.Focused)
                {
                    excl.Focused = true;
                    excl.EnterFocus();
                }
                excl.Update(time, true);
            }
            InputSceneFound = false;
        }
    public void OnControllerUpdate(List <OpenvrControllerFrame> Controllers)
    {
        foreach (var Controller in Controllers)
        {
            if (Controller == null)
            {
                continue;
            }
            if (Controller.AppButtonPressed)
            {
                UpdateCalibration(Controller.Position);
            }
        }

        var mc = ScreenQuad.GetComponent <MeshCollider>();

        //	pass player controls on
        if (CalibrationState == CalibrationStates.Finished)
        {
            var PlayerControllers = new List <PlayerControllerFrame>();

            //	get ray from controller
            foreach (var Controller in Controllers)
            {
                var Player = new PlayerControllerFrame();
                Player.Controller = Controller;

                var ControllerRotation = Player.Controller.Rotation * Quaternion.AngleAxis(ControllerPitchTilt, Vector3.right);
                var Ray = new Ray(Player.Controller.Position, ControllerRotation * Vector3.forward);
                var Hit = new RaycastHit();
                if (mc.Raycast(Ray, out Hit, 1000.0f))
                {
                    if (TargetIsCanvas)
                    {
                        var Viewport3 = new Vector3(Hit.textureCoord.x, Hit.textureCoord.y, -ScreenCamera.transform.position.z);
                        var Screen3   = ScreenCamera.ViewportToWorldPoint(Viewport3);
                        //Debug.Log (Screen3);
                        //Screen3.x /= Screen3.z;
                        //Screen3.y /= Screen3.z;
                        Player.ScreenPosition = new Vector2(Screen3.x, Screen3.y);
                    }
                    else
                    {
                        //	gr: flip for world, not for canvas
                        var Viewport3 = new Vector3(Hit.textureCoord.x, 1 - Hit.textureCoord.y, 0);
                        var Screen3   = ScreenCamera.ViewportToWorldPoint(Viewport3);

                        Player.ScreenPosition = new Vector2(Screen3.x, Screen3.y);
                    }
                }
                PlayerControllers.Add(Player);
            }

            OnPlayerUpdate.Invoke(PlayerControllers);
        }
    }
Beispiel #5
0
 void Awake()
 {
     Instance = this;
 }