forked from Misaki/GhostEngine
147 lines
3.9 KiB
Plaintext
147 lines
3.9 KiB
Plaintext
<#@ import namespace="System.Text" #>
|
|
<#@ import namespace="System.Collections.Generic" #>
|
|
<#+
|
|
|
|
public int Amount = 8;
|
|
public int ExtensionAmount = 3;
|
|
|
|
public string Indent(StringBuilder sb, int spaces)
|
|
{
|
|
var indent = new string(' ', spaces);
|
|
return sb.ToString().Replace("\n", "\n" + indent);
|
|
}
|
|
|
|
string AppendGenerics(int amount, string template)
|
|
{
|
|
var sb = new StringBuilder();
|
|
for (var i = 0; i < amount; i++)
|
|
{
|
|
if (i > 0) sb.Append(", ");
|
|
sb.Append(string.Format(template, i));
|
|
}
|
|
|
|
return sb.ToString();
|
|
}
|
|
|
|
string AppendGenerics(int amount)
|
|
{
|
|
return AppendGenerics(amount, "T{0}");
|
|
}
|
|
|
|
public StringBuilder AppendParameters(int amount, string template)
|
|
{
|
|
var sb = new StringBuilder();
|
|
for (var localIndex = 0; localIndex < amount; localIndex++)
|
|
{
|
|
sb.Append(string.Format(template, localIndex));
|
|
if (localIndex < amount - 1)
|
|
{
|
|
sb.Append(", ");
|
|
}
|
|
}
|
|
|
|
return sb;
|
|
}
|
|
|
|
public StringBuilder AppendGenericRestrictions(int amount, string Ttemplate, string template)
|
|
{
|
|
var sb = new StringBuilder();
|
|
for (var localIndex = 0; localIndex < amount; localIndex++)
|
|
{
|
|
sb.Append($"where {Ttemplate}{localIndex} : {template}");
|
|
if (localIndex < amount - 1)
|
|
{
|
|
sb.Append(' ');
|
|
}
|
|
}
|
|
|
|
return sb;
|
|
}
|
|
|
|
public StringBuilder AppendGenericRestrictions(int amount, string template)
|
|
{
|
|
return AppendGenericRestrictions(amount, "T", template);
|
|
}
|
|
|
|
public StringBuilder AppendGenericRestrictionsMultiline(int amount, string Ttemplate, string template, int indentation)
|
|
{
|
|
var sb = new StringBuilder();
|
|
var spaces = new string(' ', indentation * 4);
|
|
|
|
for (var localIndex = 0; localIndex < amount; localIndex++)
|
|
{
|
|
sb.Append($"{spaces}where {Ttemplate}{localIndex} : {template}");
|
|
if (localIndex < amount - 1)
|
|
{
|
|
sb.AppendLine();
|
|
}
|
|
}
|
|
|
|
return sb;
|
|
}
|
|
|
|
public StringBuilder AppendGenericRestrictionsMultiline(int amount, string template, int indentation)
|
|
{
|
|
return AppendGenericRestrictionsMultiline(amount, "T", template, indentation);
|
|
}
|
|
|
|
public StringBuilder TryGetComponentPools(int amount)
|
|
{
|
|
var sb = new StringBuilder();
|
|
for (var localIndex = 0; localIndex < amount; localIndex++)
|
|
{
|
|
sb.Append($"_componentStorage.TryGetPool<T{localIndex}>(out var pool{localIndex})");
|
|
if (localIndex < amount - 1)
|
|
{
|
|
sb.Append(" && ");
|
|
}
|
|
}
|
|
|
|
return sb;
|
|
}
|
|
|
|
public StringBuilder HasEntity(int amount)
|
|
{
|
|
var sb = new StringBuilder();
|
|
for (var localIndex = 1; localIndex < amount; localIndex++)
|
|
{
|
|
sb.Append($"pool{localIndex}.Has(entity)");
|
|
if (localIndex < amount - 1)
|
|
{
|
|
sb.Append(" && ");
|
|
}
|
|
}
|
|
|
|
return sb;
|
|
}
|
|
|
|
public StringBuilder GetComponent(int amount)
|
|
{
|
|
var sb = new StringBuilder();
|
|
for (var localIndex = 0; localIndex < amount; localIndex++)
|
|
{
|
|
sb.Append($"pool{localIndex}.GetRef(entity)");
|
|
if (localIndex < amount - 1)
|
|
{
|
|
sb.Append(", ");
|
|
}
|
|
}
|
|
|
|
return sb;
|
|
}
|
|
|
|
public StringBuilder GetComponentRef(int amount)
|
|
{
|
|
var sb = new StringBuilder();
|
|
for (var localIndex = 0; localIndex < amount; localIndex++)
|
|
{
|
|
sb.Append($"ref pool{localIndex}.GetRef(entity)");
|
|
if (localIndex < amount - 1)
|
|
{
|
|
sb.Append(", ");
|
|
}
|
|
}
|
|
|
|
return sb;
|
|
}
|
|
#> |