Skip to content

Commit

Permalink
Completes additional generic overloads feature mentioned in #20
Browse files Browse the repository at this point in the history
  • Loading branch information
genaray committed Nov 27, 2022
1 parent cbdbce6 commit db51cb9
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 0 deletions.
50 changes: 50 additions & 0 deletions Arch.SourceGenerator/Fundamentals/StructuralChangesExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,56 @@ public static StringBuilder AppendWorldRemove(this StringBuilder sb, int amount)
Move(in entity, oldArchetype, newArchetype);
}}
";

return sb.AppendLine(template);
}

public static StringBuilder AppendEntityAdds(this StringBuilder sb, int amount)
{
for (var index = 1; index < amount; index++)
sb.AppendEntityAdd(index);

return sb;
}

public static StringBuilder AppendEntityAdd(this StringBuilder sb, int amount)
{

var generics = new StringBuilder().GenericWithoutBrackets(amount);
var parameters = new StringBuilder().GenericInDefaultParams(amount);

var template = $@"
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static void Add<{generics}>(this in Entity entity, {parameters})
{{
var world = World.Worlds[entity.WorldId];
world.Add<{generics}>(in entity);
}}
";

return sb.AppendLine(template);
}

public static StringBuilder AppendEntityRemoves(this StringBuilder sb, int amount)
{
for (var index = 1; index < amount; index++)
sb.AppendEntityRemove(index);

return sb;
}

public static StringBuilder AppendEntityRemove(this StringBuilder sb, int amount)
{

var generics = new StringBuilder().GenericWithoutBrackets(amount);
var template = $@"
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static void Remove<{generics}>(this in Entity entity)
{{
var world = World.Worlds[entity.WorldId];
world.Remove<{generics}>(in entity);
}}
";

return sb.AppendLine(template);
Expand Down
2 changes: 2 additions & 0 deletions Arch.SourceGenerator/QueryGenerator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -104,6 +104,8 @@ public static partial class EntityExtensions{{
{new StringBuilder().AppendEntityHases(10)}
{new StringBuilder().AppendEntitySets(10)}
{new StringBuilder().AppendEntityGets(10)}
{new StringBuilder().AppendEntityAdds(10)}
{new StringBuilder().AppendEntityRemoves(10)}
}}
");

Expand Down

0 comments on commit db51cb9

Please sign in to comment.