Thank you for your interest in contributing to MechatronicsVR! This is a VR-based educational application for teaching mechatronics concepts through hands-on virtual assembly experiences.
- Code of Conduct
- Project Overview
- Getting Started
- Development Workflow
- Coding Standards
- Submitting Changes
- Reporting Issues
- Project Structure
This project is part of Open Source with SLU (OSS-SLU). All contributors are expected to:
- Be respectful, inclusive, and professional
- Provide constructive and helpful feedback
- Focus on collaboration and community benefit
- Show empathy and patience with other contributors
- Follow academic integrity standards
MechatronicsVR is an educational VR application that allows users to:
- Learn mechatronics concepts through interactive lessons
- Assemble virtual mechanical and electrical components
- Understand how parts work together in real-world systems
- Practice assembly procedures in a safe virtual environment
- Primary: Meta Quest (Android)
- Secondary: Windows PC (for development and desktop VR)
- Unreal Engine 5.6
- Meta XR SDK
- Assembly Framework Plugin (custom snap-based assembly system)
Please refer to ONBOARDING.md for instructions on how to get started
We use a feature branch workflow:
main # Stable, production-ready code
├── feature/xyz # New features
├── fix/issue-123 # Bug fixes
├── docs/readme-update # Documentation
└── refactor/xyz # Code refactoringgit checkout main
git pull origin main
git checkout -b feature/your-feature-nameWrite clear, descriptive commit messages:
Add power supply assembly step
- Create PowerSupplyActor with snap points
- Add lesson step for power supply connection
- Update UI to show power supply instructions
Closes #45
Format:
- First line: Brief summary (50 chars or less)
- Blank line
- Body: Detailed explanation if needed
- Reference related issues
Before submitting:
- Build in Development configuration - Ensure no compile errors
- Test in Editor - Verify basic functionality
- Test in VR - If you have a headset, test VR interactions
- Test on Quest - For major features, test on actual hardware
Follow Unreal Engine conventions:
// Class naming
UCLASS()
class MECHATRONICSVR_API AMyActor : public AActor
{
GENERATED_BODY()
public:
// Properties with UPROPERTY for Blueprint access
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "My Category")
float MyValue;
// Functions with documentation
/**
* Performs an important action
* @param Parameter Description of parameter
* @return Description of return value
*/
UFUNCTION(BlueprintCallable, Category = "My Category")
bool DoSomething(int32 Parameter);
private:
// Private members with b prefix for booleans
bool bIsActive;
};| Type | Convention | Example |
|---|---|---|
| Classes | Prefix by type | AMyActor, UMyComponent |
| Interfaces | I prefix | IMyInterface |
| Enums | E prefix | EMyState |
| Structs | F prefix | FMyStruct |
| Booleans | b prefix | bIsEnabled |
| Functions | PascalCase | GetCurrentState() |
- Use clear, descriptive node names
- Comment complex logic with Comment nodes
- Organize with Reroute nodes for clarity
- Keep functions focused and modular
When creating new lessons:
- Create a
ULessonDataAssetfor the lesson - Define steps using appropriate step types:
UAssembleStep- For assembly tasksUFocusStep- For focusing on specific partsUInteractionStep- For interactions
- Configure validation and feedback
- Test the complete lesson flow
-
Update your branch
git fetch origin git rebase origin/main
-
Push to your fork/branch
git push origin feature/your-feature-name
-
Create a Pull Request on GitHub
-
Fill out the PR template:
## Description What does this PR do? ## Type of Change - [ ] Bug fix - [ ] New feature - [ ] Breaking change - [ ] Documentation ## Testing How was this tested? - [ ] Tested in Editor - [ ] Tested in VR Preview - [ ] Tested on Quest device ## Screenshots/Videos If applicable, add visual documentation. ## Checklist - [ ] Code follows project style - [ ] Self-review completed - [ ] Documentation updated - [ ] No new warnings
- PRs require at least one review
- Address all feedback before merging
- Squash commits if requested
- Delete branch after merge
Include:
-
Environment
- UE version, OS, VR hardware
- Steps to reproduce
-
Expected vs Actual Behavior
-
Logs/Screenshots
- Check
Saved/Logs/for crash logs - Include screenshots of visual bugs
- Check
Describe:
- The educational value of the feature
- How students would benefit
- Any technical considerations
MechatronicsVR/
├── Config/ # Engine and project configuration
├── Content/ # All content assets
│ ├── Lessons/ # Lesson data assets
│ ├── Parts/ # Part meshes and blueprints
│ └── UI/ # UI widgets
├── Plugins/
│ ├── AssemblyFramework/ # Snap assembly system
│ └── MetaXR/ # Meta Quest support
├── Source/
│ └── MechatronicsVR/
│ ├── Lesson/ # Lesson system
│ ├── Private/ # Implementation files
│ └── Public/ # Header files
└── MechatronicsVR.uproject
| File | Purpose |
|---|---|
PartActor.h/cpp |
VR-grabbable assembly parts |
GrabComponent.h/cpp |
VR grab interaction |
LessonManagerComponent.h/cpp |
Lesson flow control |
AssembleStep.h/cpp |
Assembly lesson steps |
LessonDataAsset.h |
Lesson configuration |
- Open an issue with the "question" label
- Contact project maintainers
- Check existing issues and documentation
Thank you for contributing to MechatronicsVR and helping students learn mechatronics!