-
Notifications
You must be signed in to change notification settings - Fork 358
Camera Overhaul Core #1905
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
DragonMoffon
wants to merge
69
commits into
pythonarcade:development
from
DragonMoffon:Camera-Overhaul-Core
Closed
Camera Overhaul Core #1905
DragonMoffon
wants to merge
69
commits into
pythonarcade:development
from
DragonMoffon:Camera-Overhaul-Core
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…nds, and Scenes. See the #Possible Scene Improvements #Cameras topics in the arcade-dev forum on the Python Arcade discord server.
…s, and started the Camera2DController, and SimpleCamera classes. See the #Possible Scene Improvements #Cameras topics in the arcade-dev forum on the Python Arcade discord server for more info.
…. Created basic Perspective and Orthographic Cameras. See the #Possible Scene Improvements #Cameras topics in the arcade-dev forum on the Python Arcade discord server for more info.
…This has been fixed and applied to both of the base cameras. Added a new get map coordinates function (open to change). Placed framework for backwards compatible simple camera. See the #Possible Scene Improvements #Cameras topics in the arcade-dev forum on the Python Arcade discord server for more info.
Finished Simple Camera. Is backwards compatible with current Simple Camera implementation.
Cleaning up PR to only include camera refactor
Moved experimental code into new "cinematic" folder within arcade. Also made the default camera in arcade the "DefaultCamera" class. and made it's type be "Projector"
Created files for unit tests, and wrote a few. Started work on Camera2D (replacement for simple camera)
The basics for Camera2D have been provided with full doc strings. Other helper methods may be added in the future.
…Moffon/arcade into scene-refactor-experiment
Fixed `mypy`, `pyright`, `ruff` errors. Also added __all__ property to every file for a better importing experience. NOTE arcade/camera.py is still there, and it does not match the current system so the code-inspection still complains. Will resolve later.
This included deleting `arcade/camera.py`, and fixing the ui and sections to use either the Default Ortho Projector. NOTE I removed a quick index to the `camera.rst`. That will need to be fixed. Hey look I linted before pushing for once!
Made a few function controllers which are mega simple. Also changed name from arcade.cinematic to arcade.camera. Also moved the controllers to arcade.camera.controllers.
when I changed the file name it didn't update any imports tsk tsk.
Have not setup camera documentation so removing old ref. DO NOT PULL PR UNTIL FIXED.
grrrrr pycharm
NOTE this is a quick fix. It removed shaking from two examples. CANNOT BE PULLED IN WHILE THIS IS UNRESOLVED. Weirdly the linters didn't pick up on these errors
Created a camera shake controller to replace the one removed.
Did not get to all examples
pvcraven
requested changes
Nov 3, 2023
resolved pvcraven´s review. Also created a perspective camera demo. setup unit tests.
…n/arcade into Camera-Overhaul-Core
MiCurry
reviewed
Dec 10, 2023
MiCurry
reviewed
Dec 10, 2023
MiCurry
reviewed
Dec 10, 2023
thanks MiCurry for the editing on that! Also did linting. Currently fails on the camera_perspective_demo.py because of how I threw it together. Will fix in next commit
Changed the screen shake to store the shake dir but not vector so it should work with rotating the camera now. Added a `readjust_camera` method to the SceenShakeController. Also finished it´s unit tests.
Currently only picks between 'orthographic' and 'disabled'
MiCurry
reviewed
Dec 24, 2023
MiCurry
reviewed
Dec 24, 2023
Merged
Collaborator
Author
|
Closed as a new PR was made to replace it. Third times a charm :) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR includes the core functionality in a stable (without unit tests or docs) state. This includes a stripping out of all references to the old system.
Removed:
Removed but coming in the future:
There are a few issues with the current camera system in arcade. Mainly it only supports a 2D orthographic camera with limited zoom and rotation functionality. This refactor aims to create a new system that allows users to easily make fully 3D orthographic or perspective cameras which are easy to use and create custom functionality for.
The refactor aims to be mostly backwards-compatible with the previously implemented SImpleCamera and Camera.
The refactor includes:
A ViewData PoD that holds all of the information needed to make a view matrix and set the viewport.
Two ProjectionData PoDs hold the data for making either an orthographic or projection matrix.
The Projection Protocol to link the ProjectionData PoDs together (may be removed as it is unnecessary)
The Projector Protocol defines any object that provides the Use, Activate, and get_map_coordinates (may be renamed) methods.
The Camera Protocol defines an object which holds both a ViewData PoD and a ProjectionProtocol Object.
The OrthographicCamera class uses the ViewData and OrthographicProjectionData PoDs to provide an easy way to create and use an orthographic projection matrix, but it alone does not provide ways of controlling the camera.
The PersepctiveCamera class is the same as the OrthographicCamera class, except it uses the PerspectiveProjectionData PoD.
It provides a backwards-compatible SimpleCamera class implementation with the same methods.
The Camera2D class provides a simple interface to control nearly every camera aspect and will be what 99% of arcade users will need. It does not provide animations or any other similar logic but provides easy properties and methods for setting the different variables that are used by the camera. The only clamps on control are lack of access to the forward vector and only accepting 2D vectors.
The DefaultProjector class is provided to have a base camera only to be used internally by Arcade. This class is designed to be used as the default "current_camera". This is because of a significant bug currently plaguing Arcade. If the user has never used a Camera and they try to use a camera as a context manager, the current camera will be equal to None and cause a crash.
See Issue #1853 for more details