-
Notifications
You must be signed in to change notification settings - Fork 0
Known Issues
This page documents current known issues, limitations, and workarounds for the Atomic Plugin.
Description: New .atomic files require manual generation (Ctrl+Shift+G) before auto-generation works.
Status: π§ In Progress
Workaround:
- Always press
Ctrl+Shift+Gafter creating a new.atomicfile - Auto-generation will work for subsequent changes
Planned Fix: v0.2.0 - Auto-detect new files and generate automatically
Description: Type resolution may fail in projects with duplicate type names across namespaces.
Status: π Investigating
Workaround:
- Use fully qualified type names:
values:
Player: MyGame.Entities.Player # Instead of just Player
Planned Fix: v0.1.5 - Improved namespace resolution algorithm
Description: Performance degradation with .atomic files > 500 lines.
Status: π§ In Progress
Impact:
- Syntax highlighting delays
- Slow auto-completion
- Generation takes > 5 seconds
Workaround:
- Split large
.atomicfiles into smaller modules - Disable auto-generation for large files
- Use manual generation (
Ctrl+Shift+G)
Description: Renaming types in C# doesn't update .atomic files automatically.
Status: π Planned
Workaround:
- Manually update type names in
.atomicfiles - Use Find & Replace in
.atomicfiles - Regenerate after changes
Planned Fix: v0.2.0 - Full refactoring support
Description: Comments in .atomic files are not preserved during formatting.
Status: π Planned
Current Behavior:
# This comment disappears after formatting
values:
Health: int # This comment also disappears
Workaround:
- Document in separate files
- Use meaningful names instead of comments
Description: Complex generic types require full specification.
Status: π« Won't Fix (by design)
Example:
# Not supported
values:
Items: List # Error - must specify type
# Required
values:
Items: List<Item>
Limitation: Cannot nest configuration sections.
Not Supported:
entities:
Player:
values:
Health: int
Use Instead:
- Create separate
.atomicfiles for each entity type - Use naming conventions:
Player.atomic,Enemy.atomic
Limitation: No support for conditional compilation directives.
Not Supported:
#if UNITY_EDITOR
values:
DebugInfo: string
#endif
Workaround:
- Use separate
.atomicfiles for different configurations - Handle conditionals in generated code usage
Limitation: Cannot use expressions or calculations in values.
Not Supported:
values:
MaxHealth: 100 * 5 # Not supported
Use Instead:
- Define constants in C# code
- Set calculated values at runtime
Limitation: Anonymous types are not supported.
Not Supported:
values:
Data: var # Not supported
Anonymous: new { Name = "Test" } # Not supported
Limitation: dynamic keyword not supported.
Reason: Type safety and performance
Use Instead:
- Use
objecttype with casting - Define specific types
Limitation: Custom attributes on values not supported.
Desired but Not Supported:
values:
[Range(0, 100)]
Health: int # Attributes not supported
Workaround:
- Implement validation in custom wrapper classes
- Add validation in usage code
Limitation: Cannot set breakpoints in .atomic files.
Workaround:
- Debug generated C# code instead
- Use logging in generated methods
Limitation: Auto-completion doesn't show all custom types.
Status: π§ Improvement planned
Workaround:
- Type full type names manually
- Copy from existing code
Limitation: Fewer quick actions compared to C# files.
Available Actions:
- Add import
- Remove unused import
- Generate code
Not Available:
- Extract method
- Inline variable
- Convert to expression
Issue: unsafe code not supported in WebGL builds.
Solution:
# For WebGL projects
unsafe: false # Must be false
Limitation: Requires .NET 6.0 or higher.
Not Supported:
- .NET Framework 4.x
- .NET Core 3.1 or earlier
Minimum Version: 2024.1
Not Supported:
- Rider 2023.x or earlier
- Other JetBrains IDEs
Problem: Manually written extension methods conflict with generated ones.
Solution:
- Rename manual methods temporarily
- Generate new methods
- Migrate usage gradually
- Remove old methods
Problem: Other generators use different naming conventions.
Migration Path:
- Generate with Atomic Plugin
- Use Find & Replace for method names
- Update gradually
Example Mapping:
// Other generator
entity.Health_Get() β entity.GetHealth()
entity.Health_Set(100) β entity.SetHealth(100)
entity.Health_Has() β entity.HasHealth()<!-- Directory.Build.props -->
<Project>
<PropertyGroup>
<!-- Exclude generated files from analysis -->
<NoWarn>$(NoWarn);CS8019;CS0105</NoWarn>
<GenerateDocumentationFile>false</GenerateDocumentationFile>
</PropertyGroup>
</Project># PowerShell script to force regenerate all
Get-ChildItem -Path . -Filter *.atomic -Recurse | ForEach-Object {
# Touch file to trigger generation
(Get-Item $_.FullName).LastWriteTime = Get-Date
}// Create type aliases in a shared file
global using EntityId = System.Int32;
global using PlayerId = System.String;
global using Timestamp = System.Int64;- β Fix namespace resolution issues
- β Improve performance for large files
- β Better error messages
- β Support for more Unity types
- π Auto-generation for new files
- π Full refactoring support
- π Comment preservation
- π Better IntelliSense
- π Multi-file generation
- π Template support
- π Custom code regions
- π Debugging improvements
-
Check Existing Issues
- Visit GitHub Issues
- Search for similar issues
-
Gather Information
- Rider version
- Plugin version
- OS and version
- .atomic file content
- Error messages
- Steps to reproduce
-
Create Issue
**Environment:** - Rider: 2025.1 - Plugin: 0.1.4 - OS: Windows 11 **Description:** [Clear description of the issue] **Steps to Reproduce:** 1. Create new .atomic file 2. Add values section 3. Press Ctrl+Shift+G **Expected:** [What should happen] **Actual:** [What actually happens] **Workaround:** [If you found one]
Windows:
%APPDATA%\JetBrains\Rider2025.1\logs\
macOS:
~/Library/Logs/JetBrains/Rider2025.1/
Linux:
~/.cache/JetBrains/Rider2025.1/log/
// Use when generation fails
public static class ManualExtensions
{
public static int GetHealth(this IEntity entity)
{
return entity.Get<int>("Health");
}
public static void SetHealth(this IEntity entity, int value)
{
entity.Set("Health", value);
}
}#!/bin/bash
# Process all .atomic files
find . -name "*.atomic" -exec touch {} \;
echo "All .atomic files marked for regeneration"- GitHub Issues: Report Bugs
- Discussions: Ask Questions
- Wiki: Documentation
Note: This page is updated with each release. Check back for the latest known issues and fixes.