VE Lua Documentation

Press F to search!

addParticleByNodesRelative

Definition


-- @/=[C]:-1
function addParticleByNodesRelative(...)

Callers

@/lua/vehicle/powertrain/combustionEngine.lua
          local rnd = random()
          obj:addParticleByNodesRelative(device.engineBlockNodes[2], device.engineBlockNodes[1], i * rnd, 43, 0, 1)
          obj:addParticleByNodesRelative(device.engineBlockNodes[2], device.engineBlockNodes[1], i * rnd, 39, 0, 1)
          obj:addParticleByNodesRelative(device.engineBlockNodes[2], device.engineBlockNodes[1], i * rnd, 43, 0, 1)
          obj:addParticleByNodesRelative(device.engineBlockNodes[2], device.engineBlockNodes[1], i * rnd, 39, 0, 1)
          obj:addParticleByNodesRelative(device.engineBlockNodes[2], device.engineBlockNodes[1], -i * rnd, 43, 0, 1)
          obj:addParticleByNodesRelative(device.engineBlockNodes[2], device.engineBlockNodes[1], i * rnd, 39, 0, 1)
          obj:addParticleByNodesRelative(device.engineBlockNodes[2], device.engineBlockNodes[1], -i * rnd, 43, 0, 1)
          obj:addParticleByNodesRelative(device.engineBlockNodes[2], device.engineBlockNodes[1], -i * rnd, 39, 0, 1)
          obj:addParticleByNodesRelative(device.engineBlockNodes[2], device.engineBlockNodes[1], -i * rnd, 43, 0, 1)
          obj:addParticleByNodesRelative(device.engineBlockNodes[2], device.engineBlockNodes[1], -i * rnd, 39, 0, 1)
        end
            local rnd = random()
            obj:addParticleByNodesRelative(device.engineBlockNodes[2], device.engineBlockNodes[1], i * rnd * 3, 43, 0, 9)
            obj:addParticleByNodesRelative(device.engineBlockNodes[2], device.engineBlockNodes[1], i * rnd * 3, 39, 0, 9)
            obj:addParticleByNodesRelative(device.engineBlockNodes[2], device.engineBlockNodes[1], i * rnd * 3, 43, 0, 9)
            obj:addParticleByNodesRelative(device.engineBlockNodes[2], device.engineBlockNodes[1], i * rnd * 3, 39, 0, 9)
            obj:addParticleByNodesRelative(device.engineBlockNodes[2], device.engineBlockNodes[1], -i * rnd * 3, 43, 0, 9)
            obj:addParticleByNodesRelative(device.engineBlockNodes[2], device.engineBlockNodes[1], i * rnd * 3, 39, 0, 9)
            obj:addParticleByNodesRelative(device.engineBlockNodes[2], device.engineBlockNodes[1], -i * rnd * 3, 43, 0, 9)
            obj:addParticleByNodesRelative(device.engineBlockNodes[2], device.engineBlockNodes[1], -i * rnd * 3, 39, 0, 9)
            obj:addParticleByNodesRelative(device.engineBlockNodes[2], device.engineBlockNodes[1], -i * rnd * 3, 43, 0, 9)
            obj:addParticleByNodesRelative(device.engineBlockNodes[2], device.engineBlockNodes[1], -i * rnd * 3, 39, 0, 9)

            obj:addParticleByNodesRelative(device.engineBlockNodes[2], device.engineBlockNodes[1], i * rnd * 3, 56, 0, 1)
            obj:addParticleByNodesRelative(device.engineBlockNodes[2], device.engineBlockNodes[1], i * rnd * 3, 57, 0, 1)
            obj:addParticleByNodesRelative(device.engineBlockNodes[2], device.engineBlockNodes[1], i * rnd * 3, 56, 0, 1)
            obj:addParticleByNodesRelative(device.engineBlockNodes[2], device.engineBlockNodes[1], i * rnd * 3, 57, 0, 1)
            obj:addParticleByNodesRelative(device.engineBlockNodes[2], device.engineBlockNodes[1], i * rnd * 3, 58, 0, 1)
            obj:addParticleByNodesRelative(device.engineBlockNodes[2], device.engineBlockNodes[1], i * rnd * 3, 57, 0, 1)
            obj:addParticleByNodesRelative(device.engineBlockNodes[2], device.engineBlockNodes[1], i * rnd * 3, 58, 0, 1)
          end
@/lua/vehicle/powertrain/nitrousOxideInjection.lua
      for _, v in ipairs(purgeValveNodes) do
        obj:addParticleByNodesRelative(v.cid1, v.cid2, -2, 70, 0, 1)
        obj:addParticleByNodesRelative(v.cid1, v.cid2, -4, 71, 0, 1)
        obj:addParticleByNodesRelative(v.cid1, v.cid2, -2, 70, 0, 1)
        obj:addParticleByNodesRelative(v.cid1, v.cid2, -4, 71, 0, 1)
        obj:addParticleByNodesRelative(v.cid1, v.cid2, -8, 72, 0, 1)
        obj:addParticleByNodesRelative(v.cid1, v.cid2, -4, 71, 0, 1)
        obj:addParticleByNodesRelative(v.cid1, v.cid2, -8, 72, 0, 1)
      end
@/lua/vehicle/fire.lua
  if curTemperature > tSteam and underWater == 1 then
    obj:addParticleByNodesRelative(currentNodeKey, centreNode, rand * -2, 24, 0, 1)
  end
      currentNode.vaporState = 20 + random(80)
      obj:addParticleByNodesRelative(mycid, centreNode, 1, 55, 0.1, 3) -- add fuel splash particles
      obj:addParticleByNodesRelative(mycid, centreNode, 1, 50, 0.1, 3)
      obj:addParticleByNodesRelative(mycid, centreNode, 1, 55, 0.1, 3) -- add fuel splash particles
      obj:addParticleByNodesRelative(mycid, centreNode, 1, 50, 0.1, 3)
      currentNode.containerBeamBroken = true
        fireParticleSmall = airSpeed < 10 and 25 or 26
        obj:addParticleByNodesRelative(hotcid, centreNode, rand * -2 * rootedIntensity, fireParticleSmall, 0, 1)
          fireParticleMedium = airSpeed < 10 and 27 or 28
          obj:addParticleByNodesRelative(hotcid, centreNode, rand * -2 * rootedIntensity, fireParticleMedium, 0, 1)
            fireParticleLarge = airSpeed < 10 and 29 or 30
            obj:addParticleByNodesRelative(hotcid, centreNode, rand * -2 * rootedIntensity, fireParticleLarge, 0, 1)

              obj:addParticleByNodesRelative(hotcid, centreNode, 0, 31, 0.5, 10)
              --huge smoke puff for explosions
              --huge smoke puff for explosions
              obj:addParticleByNodesRelative(hotcid, centreNode, 0, 32, 0, 1)
              --spray of sparks
              --spray of sparks
              obj:addParticleByNodesRelative(hotcid, centreNode, 0, 9, 0.5, 100)
            end
        smokeParticleSmall = airSpeed < 10 and 51 or 43
        obj:addParticleByNodesRelative(hotcid, centreNode, rand * -2 * rootedIntensity * (1 + airSpeed * 0.1), smokeParticleSmall, 0, 1)
          smokeParticleMedium = airSpeed < 10 and 52 or 53
          obj:addParticleByNodesRelative(hotcid, centreNode, rand * -2 * rootedIntensity * (1 + airSpeed * 0.1), smokeParticleMedium, 0, 1)
        end
      --puff of flame on tire burst
      obj:addParticleByNodesRelative(mycid, centreNode, 0, 31, 0.5, 20)

      obj:addParticleByNodesRelative(mycid, centreNode, 0, 29, 0.5, 20)

      --obj:addParticleByNodesRelative(mycid, centreNode, 0, 9, 0.5, 100)
@/lua/vehicle/beamstate.lua
    if v.data.nodes[beam.id1].nodeMaterial == 3 or v.data.nodes[beam.id2].nodeMaterial == 3 then --check for plastic nodes connected to the beam
      obj:addParticleByNodesRelative(breakNode1, breakNode2, math.random(1), particleType, 0, 1)
    end
    if beam.deformGroup and beam.breakGroup then --check if beam is part of a breakgroup and a deformgroup, indicating that it's glass or wood
      obj:addParticleByNodesRelative(breakNode1, breakNode2, math.random(1), particleType_deformGroup1, (math.random(1) / 5), particleCount_deformGroup1) --spawn glass or wood particles
      obj:addParticleByNodesRelative(breakNode1, breakNode2, math.random(1), particleType_deformGroup2, (math.random(1) / 5), particleCount_deformGroup2)
      obj:addParticleByNodesRelative(breakNode1, breakNode2, math.random(1), particleType_deformGroup1, (math.random(1) / 5), particleCount_deformGroup1) --spawn glass or wood particles
      obj:addParticleByNodesRelative(breakNode1, breakNode2, math.random(1), particleType_deformGroup2, (math.random(1) / 5), particleCount_deformGroup2)
    end
@/lua/vehicle/powertrain/combustionEngineThermals.lua
local function emitBigAfterFireParticles(node1, node2, smokeParticleType)
  obj:addParticleByNodesRelative(node1, node2, -15, 61, 0, 1)
  obj:addParticleByNodesRelative(node1, node2, -10, 62, 0, 1)
  obj:addParticleByNodesRelative(node1, node2, -15, 61, 0, 1)
  obj:addParticleByNodesRelative(node1, node2, -10, 62, 0, 1)
  obj:addParticleByNodesRelative(node1, node2, -20, 63, 0, 1)
  obj:addParticleByNodesRelative(node1, node2, -10, 62, 0, 1)
  obj:addParticleByNodesRelative(node1, node2, -20, 63, 0, 1)
  obj:addParticleByNodesRelative(node1, node2, -8, 64, 0, 1)
  obj:addParticleByNodesRelative(node1, node2, -20, 63, 0, 1)
  obj:addParticleByNodesRelative(node1, node2, -8, 64, 0, 1)
  obj:addParticleByNodesRelative(node1, node2, -12, 65, 0, 1)
  obj:addParticleByNodesRelative(node1, node2, -8, 64, 0, 1)
  obj:addParticleByNodesRelative(node1, node2, -12, 65, 0, 1)

  obj:addParticleByNodesRelative(node1, node2, -5, smokeParticleType, 0, 1)
  obj:addParticleByNodesRelative(node1, node2, -3, smokeParticleType, 0, 1)
  obj:addParticleByNodesRelative(node1, node2, -5, smokeParticleType, 0, 1)
  obj:addParticleByNodesRelative(node1, node2, -3, smokeParticleType, 0, 1)
end
    if emitSmallParticulates then
      obj:addParticleByNodesRelative(n.finish, n.start, absEngineRPM * -0.0004 - 3, lightSmokeParticleType, 0, 1)
    end
    if emitLargeParticulates then
      obj:addParticleByNodesRelative(n.finish, n.start, absEngineRPM * -0.0004 - 3, heavySmokeParticleType, 0, 1)
    end
      --also emit steam from all exhaust ends because we are actually vaporizing coolant in the combustion chamber
      obj:addParticleByNodesRelative(n.finish, n.start, absEngineRPM * -0.0004 - 3, steamParticleType, 0, 1)
    end
    if tEnv <= constants.exhaustCondensationThresholdEnvTemp and M.exhaustTemperature <= constants.exhaustCondensationThresholdBlockTemp and particleTicks.exhaustSteamParticleTick > 1 then
      obj:addParticleByNodesRelative(n.finish, n.start, absEngineRPM * -0.0004 - 1.3, condensationParticleType, 0, 1)
    end
      --emit steam as long as there is still coolant left
      obj:addParticleByNodesRelative(nodes.coolantCap[1], nodes.coolantCap[2], 0, coolantHeavyParticleType, 0, 1)
    end
          local rnd = random()
          obj:addParticleByNodesRelative(parentEngine.engineBlockNodes[2], parentEngine.engineBlockNodes[1], i * rnd, 43, 0, 1)
          obj:addParticleByNodesRelative(parentEngine.engineBlockNodes[2], parentEngine.engineBlockNodes[1], i * rnd, 39, 0, 1)
          obj:addParticleByNodesRelative(parentEngine.engineBlockNodes[2], parentEngine.engineBlockNodes[1], i * rnd, 43, 0, 1)
          obj:addParticleByNodesRelative(parentEngine.engineBlockNodes[2], parentEngine.engineBlockNodes[1], i * rnd, 39, 0, 1)
          obj:addParticleByNodesRelative(parentEngine.engineBlockNodes[2], parentEngine.engineBlockNodes[1], -i * rnd, 43, 0, 1)
          obj:addParticleByNodesRelative(parentEngine.engineBlockNodes[2], parentEngine.engineBlockNodes[1], i * rnd, 39, 0, 1)
          obj:addParticleByNodesRelative(parentEngine.engineBlockNodes[2], parentEngine.engineBlockNodes[1], -i * rnd, 43, 0, 1)
          obj:addParticleByNodesRelative(parentEngine.engineBlockNodes[2], parentEngine.engineBlockNodes[1], -i * rnd, 39, 0, 1)
          obj:addParticleByNodesRelative(parentEngine.engineBlockNodes[2], parentEngine.engineBlockNodes[1], -i * rnd, 43, 0, 1)
          obj:addParticleByNodesRelative(parentEngine.engineBlockNodes[2], parentEngine.engineBlockNodes[1], -i * rnd, 39, 0, 1)
        end
      local coolantLeakParticle = M.coolantTemperature > 95 and coolantHeavyParticleType or coolantLightParticleType
      obj:addParticleByNodesRelative(nodes.radiator[1], nodes.radiator[2], 0, coolantLeakParticle, 0, 1)
    end
    if particleTicks.engineSteamParticleTick > 1 and hasCoolantRadiator then
      obj:addParticleByNodesRelative(nodes.engine[2], nodes.engine[1], 0, coolantHeavyParticleType, 0, 1)
    end
        --emit blue smoke from all exhaust ends because we are burning oil
        obj:addParticleByNodesRelative(n.finish, n.start, absEngineRPM * -0.0004 - 2, oilParticleType, 0, 1)
      end
@/lua/vehicle/powertrain/centrifugalClutch.lua
  if device.clutchSmokeTimer >= 1 and device.children[1].transmissionNodeID then
    obj:addParticleByNodesRelative(device.children[1].transmissionNodeID, device.children[1].transmissionNodeID, 1, 35, 0, 1)
  end
@/lua/vehicle/wheels.lua
          local particleType = airSpeed < 10 and 48 or 49
          obj:addParticleByNodesRelative(wd.node1, wd.node2, 1 - random(1), particleType, 0, 1)
        end
          local particleType = airSpeed < 10 and 48 or 49
          obj:addParticleByNodesRelative(wd.node1, wd.node2, 1 - random(1), particleType, 0, 1)
        end
@/lua/vehicle/powertrain/frictionClutch.lua
  if device.clutchSmokeTimer >= 1 and device.children[1].transmissionNodeID then
    obj:addParticleByNodesRelative(device.children[1].transmissionNodeID, device.children[1].transmissionNodeID, 1, 35, 0, 1)
  end