Seems the emitter is made up of an Object with a number of vertexes equal to the particle number. On creation this Object has it's set coordinates (seems to be world position 0,0,0). Then the vertexes are projected on the position of hidden physics spheres that are made in the engine and the facing is updated to the camera alignment.
What happens when the emitter position is outside the screen coordinates is that the DBP engine automatically culls the emitter Object, effectively excluding all vertexes in the process and the particles disappear.
This means that the emitters
Parent Object position must be in the visible screen to to work.
I made this function to use instead of "Phy Set Emitter Position"
Function PositionPhyEmitterNonCull(EmitterID as integer, x as float, y as float, z as float)
// Duke E, 100601
// Position DP emitters so the parented object is within the screen.
// Due to the vertex projection used the emitters Parent object has to be in screen or else
// the DBPro engine culls the Parent object excluding all vertexes projected.
// In the Emitter creation code add (after Phy Make Particle Emitter):
// Set Object radius EmitterNumber,-1
// Note: If you reuse the same emitter and repositions it outside the screen when it is unused instead of deleting it,
// do NOT use this function, Instead position it with the normal Phy Set Emitter Position command.
if Not Object In Screen( EmitterID )
Position Object EmitterID, x, y, z
endif
Phy Set Emitter Position EmitterID, x-Object Position X(EmitterID), y-Object Position Y(EmitterID), z-Object Position Z(EmitterID)
EndFunction
Edit:
The "Set Object Radius" was added as the particles will disappear if the emitter object is on the very edge of the screen. Actually it should work by just adding that command on creation
. Well one can use suspenders with a belt
Regards