Guest User

Untitled

a guest
Mar 12th, 2019
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var filterTotal = 5;
  2. var varTotal = 5;
  3. var varSharedData = true;
  4. var varDynamicBuffer = true;
  5. var varEntity = true;
  6. var varDelta = true;
  7.  
  8. console.log('using Unity.Entities;');
  9. console.log('using UnityEngine;');
  10. console.log('');
  11.  
  12. console.log('public abstract class QuickSystemBase : ComponentSystem  {');
  13. console.log('    public ComponentGroup m_MainGroup;');
  14. console.log('}');
  15. console.log('');
  16.  
  17. console.log('public abstract class QuickSystemDeltaBase : QuickSystemBase  {');
  18. console.log('    public float delta;');
  19. console.log('}');
  20. console.log('');
  21.  
  22. for (var i = 0; i < 6; i++) {
  23.   for (var e = 0; e < 6; e++) {
  24.     for (var k = 0; k < 3; k++) {
  25.       for (var m = 0; m < 2; m++) {
  26.         for (var l = 0; l < 2; l++) {
  27.           for (var j = 1; j < 6; j++) {
  28.             var generics = [];
  29.             var structs = [];
  30.             var eclusions = [];
  31.             filterTotal = i;
  32.             exclusionTotal = e;
  33.             varTotal = j;
  34.             varSharedData = k === 1;
  35.             varDynamicBuffer = k === 2;
  36.             varEntity = l === 1;
  37.             varDelta = m === 1;
  38.             for (var filter = 0; filter < filterTotal; filter++) {
  39.               generics.push("F"+(filter+1));
  40.             }
  41.             for (var ex = 0; ex < exclusionTotal; ex++) {
  42.               eclusions.push("E"+(ex+1));
  43.               generics.push("E"+(ex+1));
  44.             }
  45.             varSharedData ? generics.push("S"): 0;
  46.             varDynamicBuffer ? generics.push("D"): 0;
  47.             for (var total = 0; total < varTotal; total++) {
  48.               generics.push("T"+(total+1));
  49.               structs.push("T"+(total+1));
  50.             }
  51.             console.log('public abstract class QuickSystem'+
  52.               getName(filterTotal, exclusionTotal, varSharedData, varDynamicBuffer, varEntity, varDelta)+
  53.               '<'+generics.join(', ')+'> : ' +(varDelta ? 'QuickSystemDeltaBase': 'QuickSystemBase') +
  54.               (varSharedData ? ' where S : struct, ISharedComponentData': '')+
  55.               (varDynamicBuffer ? ' where D : struct, IBufferElementData': '')+
  56.               ' where '+ structs.join(' : struct, IComponentData where ') + ': struct, IComponentData {'
  57.             );
  58.             console.log('  protected override void OnCreateManager() {');
  59.             console.log('    m_MainGroup = GetComponentGroup('+getGroupTypes(generics, eclusions)+');');
  60.             if (varDelta) {
  61.               console.log('    delta = Time.deltaTime;');
  62.             }
  63.             console.log('  }');
  64.             console.log('  protected override void OnUpdate() {');
  65.             console.log('      ForEach(('+forEachContent(true, varSharedData, varDynamicBuffer, varEntity, structs)+') => {');
  66.             console.log('          OnUpdate('+forEachContent(false, varSharedData, varDynamicBuffer, varEntity, structs)+');');
  67.             console.log('      }, m_MainGroup);');
  68.             console.log('  }');
  69.             console.log('  protected abstract void OnUpdate('+forEachContent(true, varSharedData, varDynamicBuffer, varEntity, structs)+');');
  70.             console.log('}');
  71.           }
  72.         }
  73.       }
  74.     }}
  75. }
  76. function getName(filterTotal, exclusionTotal, varSharedData, varDynamicBuffer, varEntity, varDelta) {
  77.   return (filterTotal > 0? 'Filter'+filterTotal: '')+(exclusionTotal > 0? 'Exclusion'+exclusionTotal: '')+
  78.   (varEntity?'Entity': '')+(varSharedData?'Shared': '')+(varDynamicBuffer?'Buffer': '')+(varDelta?'Delta': '')
  79. }
  80.  
  81. function getGroupTypes(generics, eclusions) {
  82.   return 'typeof('+ generics.join('), typeof(')+')'+ (eclusions.length>0?', ComponentType.Subtractive<'+eclusions.join('>(), ComponentType.Subtractive<')+'>()':'');
  83. }
  84. function forEachContent(hasType, varSharedData, varDynamicBuffer, varEntity, structs) {
  85.   return (varEntity?(hasType?'Entity': '')+' e, ': '')+(varSharedData?(hasType?'S': '')+' s, ': '')+
  86.   (varDynamicBuffer?(hasType?'DynamicBuffer<D>': '')+' d, ': '') +
  87.   structsAsTypes(hasType, structs);
  88. }
  89. function structsAsTypes(hasType, structs) {
  90.   var ret = '';
  91.   for (var a = 0; a < structs.length; a++) {
  92.     ret += 'ref '+(hasType?structs[a]: '') + ' ' + structs[a].toLowerCase() + (a < structs.length-1?', ': '');
  93.   }
  94.   return ret;
  95. }
Advertisement
Add Comment
Please, Sign In to add comment