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