Last Modified: 2023-11-28

Particles

create main.lua file

display.setStatusBar( display.HiddenStatusBar )
local particleDesigner = require( "particleDesigner" )
local kaboom = particleDesigner.newEmitter( "'+jname+'_temp.json" )
kaboom.x = display.contentWidth / 2
kaboom.y = display.contentHeight / 2

Model

{
  configName = '',
  textureFileName = '',
  common = {
    duration = 0,
    sourcePositionVariancex = 0,
    sourcePositionVariancey = 0,
    maxParticles = 0,
  },
  emitter = {
    emittyerType = 0, -- 0=grevity, 1=radial
    angle = 0,
    angleVariance = 0,
    gravity = {
      speed = 0,
      speedVariance = 0,
      gravityx = 0,
      gravityy = 0,
      radialAcceleration = 0,
      radialAccelVariance = 0,
      tangentialAcceleration = 0,
      tangentialAccelVariance = 0,
    },
    radial = {
        maxRadius = 0,
        maxRadiusVariance = 0,
        minRadius = 0,
        minRadiusVariance = 0,
        rotatePerSecond = 0,
        rotatePerSecondVariance = 0,
    }
  },
  particles = {
    particleLifespan = 0,
    particleLifespanVariance = 0,
    startParticleSize = 0,
    startParticleSizeVariance = 0,
    finishParticleSize = 0,
    finishParticleSizeVariance = 0,
    rotationStart = 0,
    rotationStartVariance = 0,
    rotationEnd = 0,
    rotationEndVariance = 0,
  },
  colors = {
    startColorAlpha =   0,
    startColorRed =   0,
    startColorGreen =   0,
    startColorBlue =  0,
    startColorVarianceRed = 0,
    startColorVarianceGreen = 0,
    startColorVarianceBlue = 0,
    startColorVarianceAlpha = 0,
    finishColorAlpha = 0,
    finishColorRed = 0,
    finishColorGreen = 0,
    finishColorBlue = 0,
    blendFuncSource = 0,
    finishColorVarianceRed = 0,
    finishColorVarianceGreen = 0,
    finishColorVarianceBlue = 0,
    finishColorVarianceAlpha = 0,
    blendFuncDestination = 0,
  },
}
var st = String(myParticles.blendFuncSource)
switch (st) {
    case '0':
        st=0;
        break;
    case '1':
        st=1;
        break;
    case '774':
        st=2;
        break;
    case '775':
        st=3;
        break;
     case '770':
        st=4;
        break;
    case '771':
        st=5;
        break;
    case '772':
        st=6;
        break;
    case '773':
        st=7;
        break;
    case '776':
        st=8;
        break;
 }
//
var st2 = String(myParticles.blendFuncDestination)
switch (st2) {
    case '0':
        st2=0;
        break;
    case '1':
        st2=1;
        break;
    case '774':
        st2=2;
        break;
    case '775':
        st2=3;
        break;
     case '770':
        st2=4;
        break;
    case '771':
        st2=5;
        break;
    case '772':
        st2=6;
        break;
    case '773':
        st2=7;
        break;
    case '776':
        st2=8;
        break;
 }

//Default

//image/texture
if (oriParticleFile != true && preview == true) {
    myParticles.textureFileName = '"'+newParticleFile+'"';
}  else if (oriParticleFile != true && preview != true) {
    ico = dlg.partName.e.text+".png";
    ico = ico.replace(/"/gi, "")
    myParticles.textureFileName = '"'+ico+'"';
  }  else if (oriParticleFile == true && preview != true) {
    ico = dlg.partName.e.text+".png";
    ico = ico.replace(/"/gi, "")
    myParticles.textureFileName = '"'+ico+'"';
} else {
    ico = ico.replace(/"/gi, "")
    myParticles.textureFileName = '"'+ico+'"';
}

//particles content

//Color content
switch (st) {
    case 'Zero':
        st=0;
        break;
    case 'One':
        st=1;
        break;
    case 'Dst_Color':
        st=774;
        break;
    case 'One_Minus_Dst_Color':
        st=775;
        break;
      case 'Src_Alpha':
        st=770;
        break;
    case 'One_Minus_Src_Alpha':
        st=771;
        break;
    case 'Dst_Alpha':
        st=772;
        break;
    case 'One_Minus_Dst_Alpha':
        st=773;
        break;
    case 'Source_Alpha_Saturate':
        st=776;
        break;
  }
  myParticles.blendFuncSource = st;

  switch (st1) {
    case 'Zero':
        st1=0;
        break;
    case 'One':
        st1=1;
        break;
    case 'Dst_Color':
        st1=774;
        break;
    case 'One_Minus_Dst_Color':
        st1=775;
        break;
      case 'Src_Alpha':
        st1=770;
        break;
    case 'One_Minus_Src_Alpha':
        st1=771;
        break;
    case 'Dst_Alpha':
        st1=772;
        break;
    case 'One_Minus_Dst_Alpha':
        st1=773;
        break;
    case 'Source_Alpha_Saturate':
        st1=776;
        break;
  }
  myParticles.blendFuncDestination = st1;

function jsonXML(file) {
        if (garb == "{") {
            toxml += garb.replace("{", "<particles>");
        } else if (garb == "}") {
            toxml += garb.replace("}", "</particles>");
        } else if (garb.search("configName") > 0 ) {
            toxml += '<configName>"'+configName+'"</configName>';
        } else if (garb.search("textureFileName") > 0 ) {
            toxml += '<textureFileName>"'+imagefile+'"</textureFileName>';
        } else {
            garb = garb.replace('"', "<")
            var para = garb.substring(1,garb.search('":'))
            garb = garb.replace('":', ">");
            garb = garb.replace(',', "");
            garb = garb+"</"+para+">";
            toxml += garb;
        }
    }

function xmJSON(file) {
    var j = "{ \r\n"
    for (var xn=0;xn<=myParticles.elements().length()-1;xn++) {
        if (xn!=myParticles.elements().length()-1) {
            j += '   "'+myParticles.child(xn).name()+'" : '+myParticles.child(xn)+', \r\n';
        } else {
            j += '   "'+myParticles.child(xn).name()+'" : '+myParticles.child(xn)+' \r\n';
        }
    }
    j += "}"
}