KinsonDigital / Velaptor

2D game development framework
https://docs.velaptor.io
MIT License
70 stars 16 forks source link

🚧Add resize capture in scenes #954

Closed CalvinWilkinson closed 3 months ago

CalvinWilkinson commented 4 months ago

Complete The Item Below

Description

Add the ability to get updates on when the window size has changed in the scene system.

This will allow users to know when the window size has changed in a scene. This will involve adding a new virtual method to the SceneBase class, which will implement the new method that will be added to the IScene interface.

Also, this will need to be added to the ISceneManager interface.

  1. Add a new method to the IScene interface named Resize(SizeU size)
    • Code Docs
      /// <summary>
      /// Updates the <see cref="WindowSize"/>.
      /// </summary>
      /// <param name="size">The new size.</param>
  2. Add a new virtual method implementation to the SceneBase class
    • This is what will get invoked by the internal SceneManager class
    • This will use /// <inheritdoc/> for the code docs
  3. Add a new method to the ISceneManager interface named Resize(SizeU size)
    • Code docs
      /// <summary>
      /// Updates the size of the window for each scene.
      /// </summary>
      /// <param name="size">The new size.</param>
  4. Add the new method implementation with the name Resize(SizeU size) to the internal SceneManager class.
    • This method will be invoked by the Window class in the protected virtual void OnResize(SizeU size) method
    • This will use /// <inheritdoc/> for the code docs
  5. Update the scene guide on the main docs (This will be done by @CalvinWilkinson once this issue is complete)

[!Note] Coding Standards:

  1. Make sure to use expression bodied methods when there is only a single statement for methods.

Acceptance Criteria

### The items to complete to satisfy the Definition of Done.
- [x] All unit tests executed and passed locally after PR work is complete. _(Why? Refer to 'Additional Information' below.)_
- [x] New method named `Resize()` added to the `IScene` interface
- [x] Method implementation of `IScene.Resize()` added to the `SceneBase` class
- [x] New method named `Resize()` added to the `ISceneManager` interface
- [x] Method implementation of `ISceneManager.Resize()` added to the `SceneManager` class
- [x] Scene guide updated on the main doc website

ToDo Items

### The items to complete to satisfy the Definition of Done.
- [x] Change type labels added to this issue.  Refer to the _**Change Type Labels**_ section below.
- [x] Priority label added to this issue.  Refer to the _**Priority Type Labels**_ section below.
- [x] Issue linked to the correct milestone _(if applicable)_.

Issue Dependencies

No response

Related Work

No response

Additional Information:

Unit Tests

Reasons for local unit test execution:

  • Unit tests might pass locally but not in the CI environment during the status check process or vice-versa.
  • Tests might pass on the developer's machine but not necessarily on the code reviewer's machine.
  • If you notice that the test status check has passed but the test failed locally, please notify a project maintainer!

💡Warning💡 If the unit tests pass remotely and are not executed locally, this means we could be letting a bug slip into production. Though bugs will always exist in some capacity, we should all do our part to help prevent them from happening.

Change Type Labels

Change Type Label
Bug Fixes 🐛bug
Breaking Changes 🧨breaking changes
New Feature ✨new feature
CICD Changes ♻️cicd
Config Changes ⚙️config
Performance Improvements 🏎️performance
Code Doc Changes 🗒️documentation/code
Product Doc Changes 📝documentation/product

Priority Type Labels

Priority Type Label
Low Priority low priority
Medium Priority medium priority
High Priority high priority

Code of Conduct

AndreBonda commented 3 months ago

I can take it.