Advertisement
ecco7777

CC Particle Generator obj Viewer with multiple generators

Feb 19th, 2021 (edited)
940
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. br=10
  2. delay=0.15
  3. rand=true
  4. ptgOffset={}
  5. ptgOffset[0]=1
  6. ptgOffset[1]=2
  7. ptgOffset[2]=3
  8. ptgOffset[3]=4
  9. args={...}
  10.  
  11. function loadFile(filename)
  12.     fp=fs.open(filename,"r")
  13.     lines={}
  14.     i=1
  15.     lines[i]=fp.readLine()
  16.     while lines[i]~=nil do
  17.         i=i+1
  18.         lines[i]=fp.readLine()
  19.     end
  20.     return lines
  21. end
  22.  
  23. function split (inputstr, sep)
  24.         if sep == nil then
  25.                 sep = "%s"
  26.         end
  27.         local t={}
  28.         for str in string.gmatch(inputstr, "([^"..sep.."]+)") do
  29.                 table.insert(t, str)
  30.         end
  31.         return t
  32. end
  33.  
  34. function compileObj(lines)
  35.     v = {}
  36.     vt = {}
  37.     vn = {}
  38.     f = {}
  39.     l = {}
  40.     print(#lines)
  41.     for i=5, #lines do
  42.         if string.sub(lines[i],1,2)=="v " then
  43.             table.insert(v,split(lines[i]))
  44.         end
  45.         if string.sub(lines[i],1,2)=="vt" then
  46.             table.insert(vt,split(lines[i]))
  47.         end
  48.         if string.sub(lines[i],1,2)=="vn" then
  49.             table.insert(vn,split(lines[i]))
  50.         end
  51.         if string.sub(lines[i],1,2)=="f " then
  52.             table.insert(f,split(lines[i]))
  53.         end
  54.         if string.sub(lines[i],1,2)=="l " then
  55.             table.insert(l,split(lines[i]))
  56.         end
  57.     end
  58. end
  59.  
  60. compileObj(loadFile(args[1]))
  61.  
  62. function wrapPs(peripheralName)
  63.     periTab = {}
  64.     sideTab = {}
  65.     if peripheralName == nil then
  66.         print("Fehler")
  67.     end
  68.     local peripherals = peripheral.getNames()
  69.     local i2 = 1
  70.     for i = 1, #peripherals do
  71.         if peripheral.getType(peripherals[i]) == peripheralName then
  72.             periTab[i2] = peripheral.wrap(peripherals[i])
  73.             sideTab[i2] = peripherals[i]
  74.             i2 = i2 + 1
  75.         end
  76.     end
  77.     if periTab ~= {} then
  78.         return periTab, sideTab
  79.     else
  80.         return nil
  81.     end
  82.  
  83.     function getPSide(peripheralName)
  84.         if peripheralName == nil then
  85.             print("Fehler")
  86.         end
  87.         local peripherals = peripheral.getNames()
  88.         local i = 1
  89.         while i < #peripherals and peripheral.getType(peripherals[i]) ~= peripheralName do
  90.             i = i + 1
  91.         end
  92.         if peripheral.getType(peripherals[i]) == peripheralName then
  93.             return peripherals[i]
  94.         else
  95.             return nil
  96.         end
  97.     end
  98. end
  99.  
  100. pgs,pgss=wrapPs("particle_generator")
  101.  
  102. for i=1,#pgs do
  103.     pgs[i].setGeneratorProperty("spawn_y",30)
  104.     pgs[i].setGeneratorProperty("scale",0.5)
  105.     pgs[i].setGeneratorProperty("motion_y",0)
  106.     pgs[i].setGeneratorProperty("life",1000)
  107.     pgs[i].setGeneratorProperty("collide",true)
  108.     pgs[i].setGeneratorProperty("selected_particle",1)
  109.     pgs[i].setGeneratorProperty("red",50)
  110.     pgs[i].setGeneratorProperty("green",255)
  111.     pgs[i].setGeneratorProperty("blue",200)
  112. end
  113.  
  114. y=1
  115. line=1
  116. pgn=1
  117. if rand==false then
  118.     for i=1,#v do
  119.         if pgn>#pgs then
  120.         pgn=1
  121.         end
  122.         pgs[pgn].setGeneratorProperty("spawn_x",tonumber(v[i][2])*br)
  123.         pgs[pgn].setGeneratorProperty("spawn_y",tonumber(v[i][3])*br+ptgOffset[tonumber(string.sub(pgss[pgn],20))])
  124.         pgs[pgn].setGeneratorProperty("spawn_z",tonumber(v[i][4])*br)
  125.         pgn=pgn+1
  126.         sleep(delay)
  127.     end
  128. else
  129.     while true do
  130.     i=math.random(1,#v)
  131.         if pgn>#pgs then
  132.         pgn=1
  133.         end
  134.         pgs[pgn].setGeneratorProperty("spawn_x",tonumber(v[i][2])*br)
  135.         pgs[pgn].setGeneratorProperty("spawn_y",tonumber(v[i][3])*br+ptgOffset[tonumber(string.sub(pgss[pgn],20))])
  136.         pgs[pgn].setGeneratorProperty("spawn_z",tonumber(v[i][4])*br)
  137.         pgn=pgn+1
  138.         sleep(delay)
  139.     end
  140.  
  141. end
  142.        
  143.  
  144. for i=1,#pgs do
  145.     pgs[i].setGeneratorProperty("motion_y",0)
  146.     pgs[i].setGeneratorProperty("life",0)
  147. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement