Code Monkey home page Code Monkey logo

velaptor's Introduction

logo

Velaptor

Build PR Status Check Unit Test PR Status Check

Technical Debt Maintainability Rating Vulnerabilities

Bugs Code Smells Duplicated Lines (%)

Codecov

Latest Nuget Release Nuget Downloads

Good First GitHub Issues Discord

!! NOTICE !!

This library is still under development and is not at v1.0.0 yet!! However, all major features are available, so we encourage you to use Velaptor and provide feedback. That is what open source is all about. 🥳


📖 About Velaptor 📖

⭐ Don't forget to give us a star! ⭐

Velaptor is a 2D game development framework written in modern C# that strives to be simple and easy to use. Game development can be difficult, which is one reason why Velaptor was developed. It takes care of all of the lower-level, more complicated things for creating a game, like playing sound, loading graphics, managing content, multi-platform, and dealing with input, just to name a few. This way, you can concentrate on developing your game or multi-media application.

✨ Features ✨

Cross-Platform

We strive for Velaptor to be cross-platform. We do this by using as many cross-platform dependencies as possible. If a cross-platform dependency cannot be found, then the appropriate platform-specific implementations will be used.

Easy To Use

One of the goals of this library is to make it easy to use. We aim to ensure consistent naming conventions, documentation, and first-class API usability.

Flexible Content Loading System

Velaptor can load texture atlas data for its rendering, as well as single images and sound content. The content loading system is flexible and has an API that can be extended to load custom content for your games.

Content Caching

Loaded content, such as images and sounds, is cached for better performance. Suppose the same content is attempting to be loaded from its source after it has already been loaded. In that case, it will be used from memory instead of reloading from disk. You can also load content by building your content loader.

📽️ Feature Demo 📽️

FeatureDemoVideo


📃 Documentation and Resources 📃

Complete API documentation and tutorials can be found at docs.velaptor.io.Velaptoris powered by CASL and Silk.NET.


🙏🏼 Contributing 🙏🏼

Are you interested in contributing? If so, click here to learn how to contribute your time or here if you are interested in contributing your funds via a one-time or recurring donation.

🔧 Maintainers 🔧

x-logo-dark-mode x-logo-light-mode Calvin Wilkinson (KinsonDigital GitHub Organization - Owner)


🚔 Licensing And Governance 🚔

Contributor Covenant GitHub

This software is distributed under the very permissive MIT license, and all dependencies are distributed under MIT-compatible licenses. This project has adopted the code of conduct defined by the Contributor Covenant to clarify the expected behavior in our community.

velaptor's People

Contributors

amanr-dev avatar andrebonda avatar calvinwilkinson avatar deepsource-io[bot] avatar dependabot[bot] avatar fkamau1 avatar kinsondigitaladmin avatar kselena avatar kshitiz-mhto avatar ljdarj avatar map-b avatar quinnrdavis avatar renovate[bot] avatar syedmsawaid avatar thestbar avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

velaptor's Issues

🐛Fix preview release workflow bug

I have done the items below . . .

  • I have updated the title by replacing the '<title>' section.

Is there an existing issue for this?

  • I have searched the existing issues

Current Behavior

Currently, when running the Determine Tweet Broadcast job in the preview release workflow, it uses incorrect logic to determine if a tweet should be broadcasted about the release.

This needs to be done for the following workflows below:

  • preview-release.yml
  • qa-prod-release.yml

Workflow Run: https://github.com/KinsonDigital/Velaptor/runs/3647672676?check_suite_focus=true
image

You can see that the branch used in the StartsWith() check can never start with 'release/v' and will never be true. Fix this logic by using a Contains() powershell function instead

Expected Behavior

When the branch being used for the release is a release branch, a tweet about the release will be broadcasted.
In the Determine Tweet Broadcast step, make sure to add an echo expression to print out the current branch

Steps To Reproduce

  1. Disable any jobs that is not intended to be ran during the test
  2. Checkout the release branch
  3. Run the preview release workflow
  4. Observe that the Send Tweet About Release step never executed because of the preview step output value

Operating System

  • Windows
  • Linux
  • Android
  • Mac OS
  • iOS

If you know OS bug occurred on, enter OS version here

No response

Anything else?

No response

🚧Remove release notes solution item

I have done the items below . . .

  • I have updated the title by replacing the '<title>' section.

Description

In the SolutionItems folder, remove the RELEASENOTES.md file.

image

Acceptance Criteria

This issue is finished when:

  • Solution item removed

ToDo Items

  • Draft pull request created and linked to this issue
  • Priority label added to issue (low priority, medium priority, or high priority)
  • Issue linked to the proper project
  • Issue linked to proper milestone
  • Unit tests have been written and/or adjusted for code additions or changes
  • All unit tests pass

Issue Dependencies

No response

Related Work

No response

🚧Remove SDL2 binary being packaged with nuget and publish

Title Updated

  • I have updated the title by replacing the '<title>' section.

---

Description

When building a nuget package or with the dotnet publish command, the SDL2.dll library is being included. This library is not needed and needs to be removed.

Acceptance Criteria

This issue is finished when:

  1. SDL2.dll library removed
  2. Unit tests added
  3. All unit tests pass

ToDo Items

  • Draft pull request created and linked to this issue
  • Priority label added to issue (prio-low, prio-medium, or prio-high)
  • Issue linked to the proper project
  • Issue linked to proper milestone
  • Unit tests have been written and/or adjusted for code additions or changes
  • All unit tests pass

Issue Dependencies

No response

Related Work

No response

🚧Fix issues and improve PR template

I have done the items below . . .

  • I have updated the title by replacing the '<title>' section.

Description

Fix the issues highlighted in the screen shot below for the preview to release PR template.

image

Acceptance Criteria

This issue is finished when:

  • PR template issues fixed

ToDo Items

  • Draft pull request created and linked to this issue
  • Priority label added to issue (low priority, medium priority, or high priority)
  • Issue linked to the proper project
  • Issue linked to proper milestone
  • Unit tests have been written and/or adjusted for code additions or changes
  • All unit tests pass

Issue Dependencies

No response

Related Work

No response

🚧Update version of vget actions

Title Updated

  • I have updated the title by replacing the '<title>' section.

---

Description

Update the version of the vget actions in the various workflows of the project and take advantage of the new does-not-contain input.

Acceptance Criteria

This issue is finished when:

  1. Build_And_Release_Testing_App job for qa-release workflow updated to new action version and new input used
  2. Library_Build_And_Test job for preview-release workflow updated to new action version and new input used
  3. Build_And_Release_Testing_App job for preview-release workflow updated to new action version and new input used
  4. Library_Build_And_Test job for production-release workflow updated to new action version and new input used
  5. Build_And_Release_Testing_App job for production-release workflow updated to new action version and new input used

ToDo Items

  • Draft pull request created and linked to this issue
  • Priority label added to issue (prio-low, prio-medium, or prio-high)
  • Issue linked to the proper project
  • Issue linked to proper milestone
  • Unit tests have been written and/or adjusted for code additions or changes
  • All unit tests pass

Issue Dependencies

KinsonDigital/VersionMiner#11

Related Work

No response

Create workflow for preview releases

Description:
This workflow is for building and testing for release branches which manages pre-releases of the nuget package


Acceptance Criteria:

  1. Workflow runs with no issues
  2. Make sure that the nuget package being created and published is KinsonDigital.Raptor.v1.2.3 type syntax

🚧Update branch validation workflows to work with double digits

I have done the items below . . .

  • I have updated the title by replacing the '<title>' section.

Description

Currently, the preview and production release branch validation status check workflows do not work with major, minor, patch, or preview numbers that are 2 digits in size or larger.

Refer to the CASL project to see the fix that has been put into place.

Acceptance Criteria

This issue is finished when:

  • The validate-preview-release-branches-status-check.yml workflow has been updated
  • The validate-prod-release-branches-status-check.yml workflow has been updated

ToDo Items

  • Draft pull request created and linked to this issue
  • Priority label added to issue (low priority, medium priority, or high priority)
  • Issue linked to the proper project
  • Issue linked to proper milestone
  • Unit tests have been written and/or adjusted for code additions or changes
  • All unit tests pass

Issue Dependencies

No response

Related Work

🚧Improve testing application

I have done the items below . . .

  • I have updated the title by replacing the '<title>' section.

Description

Improve the testing application in the following ways:

  • Simple scene management system to allow for each scene being able to manage an area of the library
    • Example: One scene could be to test rendering, another for sound, and another for font rendering only
  • As development of the testing application moves forward and issues or improvements are discovered, created more issues to get these into the library at a later time.

Acceptance Criteria

This issue is finished when:

Scene Manager:

  • Scene manager has the features below
    • Update scene
    • Render scene
    • Move to next scene
      • Will use a UI control
    • Move to previous scene
      • Will use a UI control
    • Only one scene is active at a time and the active scene is what gets update and render events
    • The title of the window will be the name of the scene
    • Scenes will have a name that is unique
    • More then one scene cannot have the same name
    • A scene class will have a separate controls container/array to hold controls of a particular type to render to screen

UI Controls:
NOTE: Do this first!! That way other tests have some controls to use to help with testing

  • All controls will inherit from base control to contain shared properties and behavior that all controls can have

    • Visible
    • Enabled
    • Width
    • Height
    • Position
    • Left
    • Top
    • Right
    • Bottom
  • Create simple UI controls

    • Create Button Control
      • Add following events
        • Click
        • Mouse Down
        • Mouse Up
        • Mouse Move
    • Create Checkbox Control
      • Add the following props

      • Add the following events

        • Value Up
        • Value Down
    • Create Label Control
      • Add the following props
        • Text
        • Add click, mouse up and mouse down events
    • Create TextBox Control
      • Add the following props
        • Text
    • Create UpDown Control
    • This will be a combination of the text box control and the button control
      • Add the following props
        • Value (current value of control)
        • Increment Amount
        • Decrement Amount
        • Min
        • Max

Graphics:

  • Add a scene to test mouse functionality
    • This will show the location of the mouse, if the buttons are down or up and the scroll wheel value
  • Add a scene to test keyboard input
    • This will print the keyboard input to the window title bar
  • Add a scene to test rendering of a simple square circle
  • Add a scene to test animation of a square circle
    • This is done using a texture atlas
  • Add a scene to test rendering of text
    • Add this scene to the order of scenes right before the keyboard scene
    • Add controls to change font size on the fly. NOTE: This would require rebuilding and reload the font. This might not be feasible and will have to be a feature request to allow this

ToDo Items

  • Draft pull request created and linked to this issue
  • Priority label added to issue (low priority, medium priority, or high priority)
  • Issue linked to the proper project
  • Issue linked to proper milestone
  • Unit tests have been written and/or adjusted for code additions or changes
  • All unit tests pass

Issue Dependencies

No response

Related Work

No response

🚧Make preview releases manual

I have done the items below . . .

  • I have updated the title by replacing the '<title>' section.

Description

Currently, when changes are pushed to a release/v*.*.* branch, it is deployed as a preview release.
Refactor the release.yml workflow file to make these type of releases manual.

The reason for this is because most of the time, preview releases will not be occurring. A preview release is a decision made based on the changes to be released and is usually only done when there are a large amount of things to release. Such as a major release going from v1.2.3 to v2.0.0.

Since preview releases are done inside the same workflow as the other type of releases, this might prove to be difficult. Research how to have workflow inputs that can be chosen during a manual run. This way the project maintainer can manually invoke the workflow and CHOOSE if they want it to be a preview release.

If this cannot be done, simply make preview releases a separate workflow.

Acceptance Criteria

This issue is finished when:

  • Preview releases are done manually
  • Change release.yml workflow to not enforce version types on release branches.
    • This is because release branches do not have to entail a preview release, which means the project file version does not have to be a preview version such as 1.2.3-preview.4. Currently it forces the version to be a preview version. This means probably removing the Validate Version Type step.

ToDo Items

  • Draft pull request created and linked to this issue
  • Priority label added to issue (low priority, medium priority, or high priority)
  • Issue linked to the proper project
  • Issue linked to proper milestone
  • Unit tests have been written and/or adjusted for code additions or changes
  • All unit tests pass

Issue Dependencies

No response

Related Work

No response

🚧 Project Item - Add description to the readme file

Title Updated

  • I have updated the title by replacing the '<title>' section.

Description:
Add a dscription to the README.md file description what the project is.
For example, "This is a 2D game development framework".

Acceptance Criteria

This issue is finished when:

  • Code documentation added if required
  • All unit tests pass

ToDo Items

  • Draft pull request created and linked to this issue
    • THIS IS ALL BEING DONE IN A SINGLE BRANCH NAMED feature/move-to-github
  • Priority label added to issue (prio-low, prio-medium, or prio-high)
  • Issue linked to the proper project
  • Issue linked to proper milestone

Issue Dependencies

No response

Related Work

No response

🚧Get the same nuget package to work on both windows and linux

Title Updated

  • I have updated the title by replacing the '<title>' section.

---

Description

Look into making sure that the current nuget package in nuget.org can be consumed and used properly on both windows and linux when developing with it. The goal is to have one nuget package for all platforms.

Acceptance Criteria

This issue is finished when:

  1. Nuget package consumed by a project on both windows and linux works

ToDo Items

  • Draft pull request created and linked to this issue
  • Priority label added to issue (prio-low, prio-medium, or prio-high)
  • Issue linked to the proper project
  • Issue linked to proper milestone
  • Unit tests have been written and/or adjusted for code additions or changes
  • All unit tests pass

Issue Dependencies

No response

Related Work

No response

🚧Add feature to velaptor to automatically setup native libraries

Title Updated

  • I have updated the title by replacing the '<title>' section.

Description

NOTE: First check to see if this is even required. Do this check by running the testing application outside of Visual Studio to see if it can even be ran.

Add the ability on library startup to check for native libraries that might be in the runtimes folder and copy them to the execution path.

This might not work though due to when and how the libraries are loaded to memory. It might be ok to copy them in during runtime and then it will be available once code execution continues and needs the libraries in place.

Acceptance Criteria

This issue is finished when:

  1. Before implementing anything, verify that this can be done by simply manually copying the libraries during runtime to the execution path in the Program.cs file just to prove that this will work.
  2. Create class that takes care of this
  3. The class should check and verify one library at a time and check that they all exist first before copying them. If they all exist, then copy and continue. If not, an custom exception should be thrown
  4. Throw a meaningful custom exception with message to describe the issue
  5. Create unit tests for the class
  6. Unit tests added
  7. All unit tests pass

ToDo Items

  • Draft pull request created and linked to this issue
    • THIS IS ALL BEING DONE IN A SINGLE BRANCH NAMED feature/move-to-github
  • Priority label added to issue (low-priority, medium-priority, or high-priority)
  • Issue linked to the proper project
  • Issue linked to proper milestone
  • Unit tests have been written and/or adjusted for code additions or changes

Issue Dependencies

No response

Related Work

No response

🚧 Project Item - Update all pull request templates

I have done the items below . . .

  • I have updated the title by replacing the '<title>' section.

---

Description

Update all pull request templates to match that of the CASL library

Acceptance Criteria

This issue is finished when:

  • Feature To Develop PR template updated
  • Preview Release To Release PR template updated
  • Release To Master PR template updated

ToDo Items

  • Draft pull request created and linked to this issue
    • THIS IS ALL BEING DONE IN A SINGLE BRANCH NAMED feature/move-to-github
  • Priority label added to issue (prio-low, prio-medium, or prio-high)
  • Issue linked to the proper project
  • Issue linked to proper milestone

Issue Dependencies

No response

Related Work

No response

🚧 Add tweet action to prod and prev releases

I have done the items below . . .

  • I have updated the title by replacing the '<title>' section.

Description

Try this out with the first release of v1.0.0-preview.1

This should be the last thing that is done to prepare for v1.0.0

The workflows and applications are still under construction
Add the ability for production and preview releases to automatically send a tweet about the release.
This will use the Send Tween Action GitHub action to do this.

Setup the production and preview releases to not send a tweet. This is for the ability to turn off the tween during workflow testing.

Acceptance Criteria

This issue is finished when:

  • Sends a tweet for production releases
  • Sends a tweet for preview releases
  • Preview releases should have an input with a 'true' or 'false' value that does or does not send a tweet upon release.
  • Create a repository secret that is used to turn on and off the tweeting step for production releases
    • This will be done by check the value using an if expression for the step

ToDo Items

  • Draft pull request created and linked to this issue
  • Priority label added to issue (low priority, medium priority, or high priority)
  • Issue linked to the proper project
  • Issue linked to proper milestone
  • Unit tests have been written and/or adjusted for code additions or changes
  • All unit tests pass

Issue Dependencies

No response

Related Work

No response

Create workflow for development branch

Description:
Create workflow for development branch for CI/CD for of development work. This is the main workflow that will be ran for pull requests.


Acceptance Criteria:

  1. Workflow runs with no issues

🚧Fix logic in 'Check For Release Notes' step

I have done the items below . . .

  • I have updated the title by replacing the '<title>' section.

Description

Update the Check For Release Notes step in the Validate_Release_Notes_Exist job for the qa-prod workflows to only perform the check and fail if the branch is the master branch.

Change To Below:

    - name: Check For Release Notes
      run: |
        [string]$version = "${{ steps.proj-file-version.outputs.version }}";
        [string]$filePath = "${{ github.workspace }}\Documentation\ReleaseNotes\ProductionReleases\Release-Notes-v$version.md";
        
        # If the branch is master (prod) and the release notes don't exist, fail the job
        if ("${{ github.ref }}" -eq "master" -and -not([System.IO.File]::Exists($filePath))) {
          Write-Host "A production release notes file '$filePath' does not exist.";
          Write-Host "You must add release notes for production releases.";
        
          exit 1 # Fail
        }

Refer to the extra check for the master branch in the if logic

Acceptance Criteria

This issue is finished when:

  • Job step updated

ToDo Items

  • Draft pull request created and linked to this issue
  • Priority label added to issue (low priority, medium priority, or high priority)
  • Issue linked to the proper project
  • Issue linked to proper milestone
  • Unit tests have been written and/or adjusted for code additions or changes
  • All unit tests pass

Issue Dependencies

No response

Related Work

🚧Increase code coverage to higher levels

Title Updated

  • I have updated the title by replacing the '<title>' section.

---

Description

Increase the code coverage to higher levels.

Acceptance Criteria

This issue is finished when:

  1. Code documentation added if required
  2. Unit tests added
  3. All unit tests pass

ToDo Items

  • Draft pull request created and linked to this issue
  • Priority label added to issue (prio-low, prio-medium, or prio-high)
  • Issue linked to the proper project
  • Issue linked to proper milestone
  • Unit tests have been written and/or adjusted for code additions or changes
  • All unit tests pass

Issue Dependencies

No response

Related Work

No response

🚧Improve object heap allocations for content loading

I have done the items below . . .

  • I have updated the title by replacing the '<title>' section.

Description

It has been discovered that there is some large heap allocations occurring due to the way fonts and sounds are loaded. This is due to closures that are currently implemented. Improve these large heap allocations.

Allocations Detected In Rider:
image

Refer to this article to help resolve the issue.

Acceptance Criteria

This issue is finished when:

  • Unit tests added
  • All unit tests pass

ToDo Items

  • Draft pull request created and linked to this issue
  • Priority label added to issue (low priority, medium priority, or high priority)
  • Issue linked to the proper project
  • Issue linked to proper milestone
  • Unit tests have been written and/or adjusted for code additions or changes
  • All unit tests pass

Issue Dependencies

No response

Related Work

No response

🚧 Project Item - Setup CodeCov

I have done the items below . . .

  • I have updated the title by replacing the '<title>' section.

Description

Setup CodeCov account to collect code coverage.

Acceptance Criteria

This issue is finished when:

  1. Code coverage setup in codecov

ToDo Items

  • Draft pull request created and linked to this issue
    • THIS IS ALL BEING DONE IN A SINGLE BRANCH NAMED feature/move-to-github
  • Priority label added to issue (prio-low, prio-medium, or prio-high)
  • Issue linked to the proper project
  • Issue linked to proper milestone

Issue Dependencies

No response

Related Work

🚧 Project Item - Add ability to check and automove required binaries from runtimes folder

I have done the items below . . .

  • I have updated the title by replacing the '<title>' section.

Description

Currently, the testing application and anything consuming the Velaptor library, requires that various libraries are either in the executable location of the library, or in the system as a whole.

Change this for each required library so the application can run independent on what is installed in the system, and can automatically pull the required libraries from the nuget package runtimes folder and place them in the same location as the executing Velaptor library location.

Currently, the soft_oal.dll library is in the runtimes folder but is required to be in the same location as the executable. This will also guarantee the exact library needed instead of loading the system wide version of OpenAL

NOTE:
Currently the CASL project is doing this. Reference this project to help implement this ability.

Related Classes:
These should probably all go in the NativeInterop namespace

  • NativeLibPathResolver

  • IFilePathResolver

  • IPlatform

    • Exists in Velaptor but needs to be updated with the CASL version
  • Platform

  • NativeMethods

  • IPath

  • IFile

  • IApplication

  • IDependencyManager

  • NativeDependencyManager

  • OpenALDependencyManager

  • ILibrary (This is a maybe)

    • This actually does not need to move over. This is for loading actual libraries into memory
  • Add all associated tests for new file implementations

Acceptance Criteria

This issue is finished when:

  • Velaptor auto checks and copies file from runtimes folder upon execution every time it is ran
  • Application does not crash and runs properly when library is properly placed

ToDo Items

  • Draft pull request created and linked to this issue
  • Priority label added to issue (low priority, medium priority, or high priority)
  • Issue linked to the proper project
  • Issue linked to proper milestone
  • Unit tests have been written and/or adjusted for code additions or changes
  • All unit tests pass

Issue Dependencies

No response

Related Work

No response

Remove OpenTK finish replacement with SILK.NET

Description:
Finish removal work for OpenTK which is being replaced with SILK.NET.


Acceptance Criteria:

  1. Remove pre-processor condition in IoC class

    • Rename SetupInteropWithSILK() method to SetupOpenGL()
  2. Remove the solution configs below

    • DebugOPENTK
    • DebugSILK
    • ReleaseOPENTK
    • ReleaseSILK
  3. Remove OpenGL folder reference from solutions explorer
    image

  4. Remove OpenTK files/classes below

    • OpenTKGLFWInvoker class
    • OpenTKGLInvoker class
    • VelaptorTests.ExtensionMethods class
  5. Rename SILK types by replacing the word Silk with OpenGL

  6. Replace OpenTK.Mathmatics.Vector2 references with SILK ones

  7. Remove the KeyCodeEnumTests class. Update the KeyCodeEnumTests to test SILK enums instead of OpenTK ones

  8. Update TKMouseButton usage to use SILK button instead of the OpenTK ones

  9. Remove reference to OpenTK namespace in the BatchManagerServiceAssertHelpers class

  10. Remove other references to OpenTK across code base that does not break code

  11. Remove reference to Silk.NET.OpenAL.Extensions.EXT nuget package

  12. Remove nuget reference to OpenTK

  13. Resolve any coding standard warnings

🚧 Project Item - Update all issue templates

I have done the items below . . .

  • I have updated the title by replacing the '<title>' section.

Description

Update all of the issue templates to match the setup of the CASL library

Acceptance Criteria

This issue is finished when:

  • Bug issue template updated
  • Feature request issue template updated
  • Project item issue template updated
    • Remove the string "Project Item -" from the title. Only have the construction emoji
    • Create issue for CASL library to do the same thing

ToDo Items

  • Draft pull request created and linked to this issue
    • THIS IS ALL BEING DONE IN A SINGLE BRANCH NAMED feature/move-to-github
  • Priority label added to issue
  • Issue linked to the proper project
  • Issue linked to proper milestone

Issue Dependencies

No response

Related Work

No response

Remove Azure DevOps build pipeline files

Description:
Remove Azure DevOps related build pipeline files and setup from solution.


Acceptance Criteria:

  1. Azure DevOps related stuff removed from solution.

🚧Remove deploy branches from environments

Title Updated

  • I have updated the title by replacing the '<title>' section.

---

Description

Remove the feature/* deployment branches from the preview and production environments.

Acceptance Criteria

This issue is finished when:

  1. Environment branch protection rules removed.

ToDo Items

  • Draft pull request created and linked to this issue
  • Priority label added to issue (prio-low, prio-medium, or prio-high)
  • Issue linked to the proper project
  • Issue linked to proper milestone
  • Unit tests have been written and/or adjusted for code additions or changes
  • All unit tests pass

Issue Dependencies

No response

Related Work

No response

🚧Refactor preview workflow steps for library job

I have done the items below . . .

  • I have updated the title by replacing the '<title>' section.

Description

Reorder steps and add an additional step to the Build_And_Test_Library job.

This is to display information in the job for trouble shooting purposes and the reorder is to help support this additional step.

Acceptance Criteria

This issue is finished when:

  • Move the Get Version From Project File step directly below the Setup .NET SDK step.
  • Add an additional step named Display Workflow Info to print out workflow information
    • Refer to the YAML below
    - name: Display Workflow Info
      run: |
        echo "Current Branch: ${{ github.ref }}"
        echo "Project File Version: ${{ steps.proj-file-version.outputs.version }}"

ToDo Items

  • Draft pull request created and linked to this issue
  • Priority label added to issue (low priority, medium priority, or high priority)
  • Issue linked to the proper project
  • Issue linked to proper milestone
  • Unit tests have been written and/or adjusted for code additions or changes
  • All unit tests pass

Issue Dependencies

No response

Related Work

🚧 Refactor name of the preview release PR template file

I have done the items below . . .

  • I have updated the title by replacing the '<title>' section.

Description

Refactor the file name of the preview release PR template file. This is to have the file name make more sense. The current name is more indicative of the previous development process.

Acceptance Criteria

This issue is finished when:

  • The PR template file renamed from preview-release-to-release.md to preview-to-release.md

ToDo Items

  • Draft pull request created and linked to this issue
  • Priority label added to issue (low priority, medium priority, or high priority)
  • Issue linked to the proper project
  • Issue linked to proper milestone
  • Unit tests have been written and/or adjusted for code additions or changes
  • All unit tests pass

Issue Dependencies

No response

Related Work

No response

🚧Update README file

I have done the items below . . .

  • I have updated the title by replacing the '<title>' section.

Description

Update the contributing section of the readme file to reflect the screen shot below

image

Acceptance Criteria

This issue is finished when:

  • README file updated

ToDo Items

  • Draft pull request created and linked to this issue
  • Priority label added to issue (low priority, medium priority, or high priority)
  • Issue linked to the proper project
  • Issue linked to proper milestone
  • Unit tests have been written and/or adjusted for code additions or changes
  • All unit tests pass

Issue Dependencies

No response

Related Work

No response

🚧Create custom exceptions for no keyboard and mouse

Title Updated

  • I have updated the title by replacing the '<title>' section.

Description

Create custom exceptions for lack of keyboard and mice detected in the system.

Acceptance Criteria

This issue is finished when:

  1. Create custom exception named NoKeyboardException
  2. Create custom exception named NoMiceException
  3. Exceptions in GLWindowFacade.Init() method replaced with new exception

ToDo Items

  • Draft pull request created and linked to this issue
  • Priority label added to issue (low priority, medium priority, or high priority)
  • Issue linked to the proper project
  • Issue linked to proper milestone
  • Unit tests have been written and/or adjusted for code additions or changes
  • All unit tests pass

Issue Dependencies

No response

Related Work

No response

Reenable sound loader unit test code

Description:

Re-enabled all of the code in the SoundLoaderTests class and adjust/refactor code to make sure unit tests pass.


Acceptance Criteria:

  1. Unit test code enabled
  2. All unit tests must pass

🚧Research how GitHub pages work

Title Updated

  • I have updated the title by replacing the '<title>' section.

Documentation:

Research GitHub pages to see how it is done for a possible holding place for library/project documentation

Acceptance Criteria

This issue is finished when:

  • Look into how GitHub pages works and come up with a plan and decide if it should be setup for a place to hold library documentation.

ToDo Items

  • Draft pull request created and linked to this issue
  • Priority label added to issue (prio-low, prio-medium, or prio-high)
  • Issue linked to the proper project
  • Issue linked to proper milestone
  • Unit tests have been written and/or adjusted for code additions or changes
    • No unit tests required.
  • All unit tests pass
    • No unit tests required.

Issue Dependencies

No response

Related Work

No response

🚧Refactor nuget package names to use env var

I have done the items below . . .

  • I have updated the title by replacing the '<title>' section.

Description

Update the nuget package name strings in the preview and production workflows to use the PROJECT_NAME environment variable.

Acceptance Criteria

This issue is finished when:

  • Preview workflow updated
  • Production workflow updated

ToDo Items

  • Draft pull request created and linked to this issue
  • Priority label added to issue (low priority, medium priority, or high priority)
  • Issue linked to the proper project
  • Issue linked to proper milestone
  • Unit tests have been written and/or adjusted for code additions or changes
  • All unit tests pass

Issue Dependencies

No response

Related Work

🐛Not getting mouse scroll wheel value

I have done the items below . . .

  • I have updated the title by replacing the '<title>' section.

Is there an existing issue for this?

  • I have searched the existing issues

Current Behavior

Currently the scroll wheel value for a mouse is always returning 0. Figure out what is going on here.

Things to consider:

  1. This might be a SILK.NET issue. Research needs to be done to see if this is the case. Possibly creating a prototype application to simply see if we can get a scroll wheel value at all. This will verify if the issue is a SILK.NET issue or code issue.
  2. This might been an issue in SILK v2.6.0 which is the current version being used. The latest version is v2.8.0. If simply updating the SILK.NET nuget package to v2.8.0 might fix the issue.

Once the issue is discovered, you will also need to make sure that the Velaptor mouse scroll wheel value is being updated. Investigation into the GLWindowFacade showed that the mouse scroll wheel value is not being updated.
This means that it will probably have to be updated in the GLWindow_Update() method because there is no event to subscribe to get mouse wheel value changes. So the value will have to be picked up on every single update frame.

Expected Behavior

The mouse scroll wheel value to be updated and have a value that makes sense.

Steps To Reproduce

  1. Create simple application
  2. Consume Velaptor nuget package
  3. Get the scroll wheel value
  4. Observe that it is always set to 0

Operating System

  • Windows
  • Linux
  • Android
  • Mac OS
  • iOS

If you know OS bug occurred on, enter OS version here

Windows 10 21H1 (OS Build 19043.1165)

NOTE: Other systems have not been checked or tested for this bug.

Anything else?

No response

Create workflow to build and release testing app

Description:
Create a workflow that will only run when any files in the VelaptorTesting folder changes.

Reason:
This is to help do releases of the testing app that can be used to do manually testing of the library. This does not to be performed in the other workflows every single time there are changes but no changes to the testing app.


Acceptance Criteria:

  1. Workflow runs with no issues
  2. Workflow only runs when something has changed in the ./Testing/VelaptorTesting folder

🚧Create status check workflow to validate branch names

I have done the items below . . .

  • I have updated the title by replacing the '<title>' section.

Description

Create a status check workflow that utilizes the private KinsonDigital organization BranchValidator GitHub action to validate various branches.

Acceptance Criteria

This issue is finished when:

Workflows

  • Create workflow file named validate-feature-branch-status-check.yml to validate feature branch names.
    • Branch Name Example: feature/123-my-feature
    • The name of the workflow at the top should be ✔️Validate Feature Branch Name Status Check
  • Create workflow file named validate-preview-feature-branch-status-check.yml to validate preview feature branch names
    • Branch Name Example: preview/feature/123-my-feature
    • The name of the workflow at the top should be ✔️Validate Preview Feature Branch Name Status Check
  • Create workflow file named validate-release-branch-status-check.yml to validate release branch names
    • Branch Name Example: release/v1.2.3
    • The name of the workflow at the top should be ✔️Validate Release Branch Name Status Check
  • Create workflow file named validate-preview-branch-status-check.yml to validate preview branch names
    • Branch Name Example: preview/v1.2.3-preview.4
    • The name of the workflow at the top should be ✔️Validate Preview Branch Name Status Check

Branch Protection Rules

  • Status checks added for master branch
  • Status checks added for develop branch
  • Status checks added for release branches
  • Status checks added for preview branches
  • Status checks added for preview feature branches

ToDo Items

  • Draft pull request created and linked to this issue
  • Priority label added to issue (low priority, medium priority, or high priority)
  • Issue linked to the proper project
  • Issue linked to proper milestone

Issue Dependencies

Related Work

No response

🚧Fix grammar issue in bug issue template

I have done the items below . . .

  • I have updated the title by replacing the '<title>' section.

Description

In the Operating System section of the Bug Issue Template, fix the grammar issue for the field title about the OS that the bug occurred on.

It should be the value below:
If you now what OS version the bug occurred on, enter the OS version here

Incorrect Grammar Screenshot:
image

Acceptance Criteria

This issue is finished when:

  • Grammar issue fixed

ToDo Items

  • Draft pull request created and linked to this issue
  • Priority label added to issue (low priority, medium priority, or high priority)
  • Issue linked to the proper project
  • Issue linked to proper milestone
  • Unit tests have been written and/or adjusted for code additions or changes
  • All unit tests pass

Issue Dependencies

No response

Related Work

No response

🚧Update tweet message for preview and prod releases

I have done the items below . . .

  • I have updated the title by replacing the '<title>' section.

Description

Update the message for the tweet broadcast for the preview and production release workflows

Acceptance Criteria

This issue is finished when:

  • preview workflow updated
  • production workflow udpated

ToDo Items

  • Draft pull request created and linked to this issue
  • Priority label added to issue (low priority, medium priority, or high priority)
  • Issue linked to the proper project
  • Issue linked to proper milestone
  • Unit tests have been written and/or adjusted for code additions or changes
  • All unit tests pass

Issue Dependencies

No response

Related Work

🚧Setup badges for README for preview and production releases

Title Updated

  • I have updated the title by replacing the '<title>' section.

---

Description

Add the badges below to the README.md file to show the status of various things.

Refer to CASL project for reference on setup

  • QA Release Badge
  • Preview Release Badge
  • Production Release Badge
  • Code Coverage Badge
  • Contributor Covenant Badge
  • Nuget Badge

Acceptance Criteria

This issue is finished when:

  • QA Release badge works correctly
  • Preview Release badge works correctly
  • Production Release badge works correctly
  • Code Coverage badge works correctly
  • Contributor Covenant badge works correctly
  • Nuget badge works correctly

ToDo Items

  • Priority label added to issue (prio-low, prio-medium, or prio-high)
  • Issue linked to the proper project
  • Issue linked to proper milestone

Issue Dependencies

Related Work

No response

Create PR templates for project

Description:
Create PR templates for project to be able to have consistent PR descriptions and PR tasks. This streamlines the PR process.


Acceptance Criteria:

  1. Feature to develop template created
  2. Release change branch to release version branch template created
  3. Version release branch to master branch template created

🚧Create workflow to check branch naming

Title Updated

  • I have updated the title by replacing the '<title>' section.

Description:
Create a workflow that checks to make sure that the branch names below are correct. Use these workflows for the status checks.

  1. feature/[0--9]-*
  2. release/v[0-9].[0-9].[0-9]
  3. develop

Add workflows as status checks here:
image

Acceptance Criteria

This issue is finished when:

  1. Branch validation has been completed

ToDo Items

  • Draft pull request created and linked to this issue
  • Priority label added to issue (prio-low, prio-medium, or prio-high)
  • Issue linked to the proper project
  • Issue linked to proper milestone

Issue Dependencies

No response

Related Work

No response

🚧Improve PR Templates

I have done the items below . . .

  • I have updated the title by replacing the '<title>' section.

Description

Make improvements to the PR templates to make them more clear and to better align with all of the new changes to the workflow and development process of the project.

Acceptance Criteria

This issue is finished when:
Make the following changes below for the preview-release-to-release.md PR template

  • Update the following section below
  • Rename the preview-release-to-release.md file to preview-to-release.md
    Before:
<!--
    !! NOTE !! - ONLY PROJECT OWNERS AND MAINTAINERS MANAGE PRODUCTION PREVIEW RELEASE PULL REQUESTS
    If you have contributions to make, use the "feature-to-develop" pull request template.
-->

After:

<!--
    !! NOTE !! - ONLY PROJECT OWNERS AND MAINTAINERS MANAGE PULL REQUESTS FOR PRODUCTION AND PREVIEW RELEASES
    If you have contributions to make, use the "feature-to-develop" pull request template.
-->

Update the optional checklist:

Before:

- [ ] My change requires a change to the documentation.
- [ ] I have added tests to cover my changes.
  - [ ] I have updated the documentation accordingly.
  - [ ] If changes to documentation have been made, the PR contains the **documentation** label.

After:

**Kind of Change(s):**
- [ ] Bug Fix (non-breaking change which fixes an issue)
- [ ] Breaking change (fix or feature that would cause existing functionality to change)
- [ ] Workflows (CI/CD)

**Documentation:**
- [ ] My changes require a change to the documentation.
- [ ] If changes to documentation are required, the PR contains the **documentation** label.

**Testing:**
- [ ] My changes require changes to unit tests
  - [ ] I have added tests to cover my changes.

Update items in the Required Checklist section

  • Fix the version syntax for the first item
  • Change the 3rd item
    • Change the word 'exists' to 'exists'
  • Remove item 4
    • This is not needed anymore because the workflows enforce this
  • Change the line below

Before:

- 💡 Every change to a PR will run a status check to confirm that the version has the correct syntax and does not already exist in the repository.

After:

- 💡 Every change to a PR will run a status check to confirm that the version has the correct syntax, a tag does not exist, and that it has not already been published to nuget.org
  • Fix the version example as well as the project file XML example in item 7

ToDo Items

  • Draft pull request created and linked to this issue
  • Priority label added to issue (low priority, medium priority, or high priority)
  • Issue linked to the proper project
  • Issue linked to proper milestone
  • Unit tests have been written and/or adjusted for code additions or changes
  • All unit tests pass

Issue Dependencies

No response

Related Work

No response

Move native interop types to there own folder

Description:
Move the native interop types for GL and GLFW to there own folder and namespaces. This is to keep the codebase clean and organized.


Acceptance Criteria:

  1. Move the GL types to its own folder and namespace in the *NativeInterop folder.
    • Namespace should be called OpenGL
  2. Move the GLFW types to its own folder and namespace in the *NativeInterop folder.
    • Namespace should be called GLFW

🚧Update feature PR status check workflow

I have done the items below . . .

  • I have updated the title by replacing the '<title>' section.

Description

Update the feature-pr-branches-status-check.yml workflow to match changes made in the CASL project.

Acceptance Criteria

This issue is finished when:

  • The feature-pr-branches-status-check.yml workflow updated

ToDo Items

  • Draft pull request created and linked to this issue
  • Priority label added to issue (low priority, medium priority, or high priority)
  • Issue linked to the proper project
  • Issue linked to proper milestone
  • Unit tests have been written and/or adjusted for code additions or changes
  • All unit tests pass

Issue Dependencies

No response

Related Work

Perform final v1.0.0 preperation

Description:

⚠ WARNING!! ⚠

Only do this after the first production release of v1.0.0

For the purpose of testing and having the workflows show up and run, the default branch has to be set to the most recent preview every time a preview release has been done until all of the workflow changes make it to the develop branch.

The reason for this is due to how GitHub works. Workflows will only show up and be ran based on the branch they live in. So if the default branch is develop and it does not have any workflows, then no workflows will be displayed in the Actions tab and will not be executed even though the release/* or preview/* branches contain workflows.


Acceptance Criteria:

  • Change default branch once v1.0.0 has been released to develop
  • Setup the status checks for develop branch.
    • Set build status check for develop branch
    • Set unit testing status check for develop branch
    • Set branch validation status check for feature to develop branch pull requests
    • Set branch validation status check for release to develop branch pull requests
  • Setup the status checks for master branch.
    • Set build status check for master branch
    • Set unit testing status check for master branch
    • Set branch validation status check for release to master branch pull requests
  • Setup the status checks for release branch.
    • Set build status check for release branch
    • Set unit testing status check for release branch
    • Set branch validation status check for preview to release branch pull requests

Create README.md file with project information.

Description:
Create a README.md file with required information for people to know how to get started and links to more information

Acceptance Criteria:

  1. Add description section at the top
  2. Add main Features section
  3. Add a Maintainers section
  4. Add a Build & Dev Environment Setup section
  5. Add a Contributing Section
  6. Add a Practices section
  7. Add a Further Resources section
  8. Add a Licensing & Governance section
  9. Mention that it is powered by OpenGL and SILK.NET

🚧Setup all workflows

I have done the items below . . .

  • I have updated the title by replacing the '<title>' section.

Description

Setup all of the workflows for the project.

Acceptance Criteria

This issue is finished when:

  • Create status check scripts

    • prev-version-status-check.js
    • prod-version-status-check.js
  • Create tag does not exist status check workflow

    • This will use the new VersionValidator github action and will replace the TagVerifier actions
  • Create preview build status check workflow

    • This will use the new VersionValidator github action and will replace the TagVerifier actions
  • Create release version status check workflow

    • This will use the new VersionValidator github action and will replace the TagVerifier actions
  • Create unit testing status check workflow

  • Create preview release workflow

    • Remove the preview/* branch from the preview environment when finished with testing
      image
  • Create build status check workflow

  • Create release workflow

  • Setup status checks that must pass before branches can be merged into the release/v*.*.* branches
    image

ToDo Items

  • Draft pull request created and linked to this issue
  • Priority label added to issue (low priority, medium priority, or high priority)
  • Issue linked to the proper project
  • Issue linked to proper milestone
  • Unit tests have been written and/or adjusted for code additions or changes
  • All unit tests pass

Issue Dependencies

No response

Related Work

No response

Create project based issue template

Description:
Create an issue template that is for the purpose of being part of a project.


Acceptance Criteria:

  1. The name of the file should be project-item-issue-template.md
  2. The template should have a Description: section
  3. The template should have a Acceptance Criteria: section
  4. Both sections should be separated by a line break (horizontal line)
    • This doesn't need a line break because issue forms are being used. Not markdown
  5. The template should have a Card/Issue ToDo section that describes a list of things to do to make sure that the issue has proper labels, is set to a project and/or milestone, have unit tests been written, make sure unit tests all pass before creating a PR.
    • These things will help keep things smooth as issues and pull requests make it through the workflow

Create workflow for testing application

Description:
Create separate workflow file just for building/testing application. This should only run if files in the project directory are changed


Acceptance Criteria:

  1. Workflow created

Workflow runs with no issues
* Only builds with project changes
* This is to prevent a testing project build every single time when it is not needed

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.