Guest User

Untitled

a guest
Mar 16th, 2019
70
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. for (var i = 0; i < 6; i++) {
  18.   for (var k = 0; k < 3; k++) {
  19.     for (var m = 0; m < 2; m++) {
  20.       for (var l = 0; l < 2; l++) {
  21.         for (var j = 1; j < 6; j++) {
  22.           var generics = [];
  23.           var structs = [];
  24.           filterTotal = i;
  25.           varTotal = j;
  26.           varSharedData = k === 1;
  27.           varDynamicBuffer = k === 2;
  28.           varEntity = l === 1;
  29.           varDelta = m === 1;
  30.           for (var filter = 0; filter < filterTotal; filter++) {
  31.             generics.push("F"+(filter+1));
  32.           }
  33.           varSharedData ? generics.push("S"): 0;
  34.           varDynamicBuffer ? generics.push("D"): 0;
  35.           for (var total = 0; total < varTotal; total++) {
  36.             generics.push("T"+(total+1));
  37.             structs.push("T"+(total+1));
  38.           }
  39.           console.log('public abstract class QuickSystem'+
  40.             getName(filterTotal, varSharedData, varDynamicBuffer, varEntity, varDelta)+
  41.             '<'+generics.join(', ')+'> : QuickSystemBase' +
  42.             (varSharedData ? ' where S : struct, ISharedComponentData': '')+
  43.             (varDynamicBuffer ? ' where D : struct, IBufferElementData': '')+
  44.             ' where '+ structs.join(' : struct, IComponentData where ') + ': struct, IComponentData {'
  45.           );
  46.           console.log('  protected override void OnCreateManager() {');
  47.           console.log('    m_MainGroup = GetComponentGroup('+getGroupTypes(generics)+');');
  48.           console.log('  }');
  49.           console.log('  protected override void OnUpdate() {');
  50.           if (varDelta) {
  51.             console.log('    float delta = Time.deltaTime;');
  52.           }
  53.           console.log('      ForEach(('+forEachContent(true, varSharedData, varDynamicBuffer, varEntity, structs)+') => {');
  54.           console.log('          OnUpdate('+forEachContent(false, varSharedData, varDynamicBuffer, varEntity, structs)+
  55.             (varDelta? ', delta': '')+');');
  56.           console.log('      }, m_MainGroup);');
  57.           console.log('  }');
  58.           console.log('  protected abstract void OnUpdate('+forEachContent(true, varSharedData, varDynamicBuffer, varEntity, structs)+
  59.             (varDelta? ', float delta': '')+');');
  60.           console.log('}');
  61.         }
  62.       }
  63.     }
  64.   }
  65. }
  66. function getName(filterTotal, varSharedData, varDynamicBuffer, varEntity, varDelta) {
  67.   return (filterTotal > 0? 'Filter'+filterTotal: '')+
  68.   (varEntity?'Entity': '')+(varSharedData?'Shared': '')+(varDynamicBuffer?'Buffer': '')+(varDelta?'Delta': '')
  69. }
  70.  
  71. function getGroupTypes(generics) {
  72.   return 'typeof('+ generics.join('), typeof(')+')';
  73. }
  74. function forEachContent(hasType, varSharedData, varDynamicBuffer, varEntity, structs) {
  75.   return (varEntity?(hasType?'Entity': '')+' e, ': '')+(varSharedData?(hasType?'S': '')+' s, ': '')+
  76.   (varDynamicBuffer?(hasType?'DynamicBuffer<D>': '')+' d, ': '') +
  77.   structsAsTypes(hasType, structs);
  78. }
  79. function structsAsTypes(hasType, structs) {
  80.   var ret = '';
  81.   for (var a = 0; a < structs.length; a++) {
  82.     ret += 'ref '+(hasType?structs[a]: '') + ' ' + structs[a].toLowerCase() + (a < structs.length-1?', ': '');
  83.   }
  84.   return ret;
  85. }
Advertisement
Add Comment
Please, Sign In to add comment