Well, now I've included the spark.dba and tried this just to be sure its not a null pointer or whatever it will be if I pass null from DBPro to a DLL..
if sp system exists(expolsionPrototype) = False
end
ENDIF
sp scale system expolsionPrototype, 500
Gives the same crash..
Edit:
Here is the whole 'create system'-snippet
// System init
#include "spark.dba"
sp init
textureExplosion = 2
textureFlash = 3
textureSpark1 = 4
textureSpark1 = 5
textureSpark2 = 6
textureWave = 7
load image "media\explosion.bmp", textureExplosion
load image "media\flash.bmp", textureFlash
load image "media\spark1.bmp", textureSpark1
load image "media\point.bmp", textureSpark2
load image "media\wave.bmp", textureWave
expolsionPrototype = sp create system ( 1, 0, 0, 0 )
sp set system autodelete expolsionPrototype , 1
smokeGroup = sp add group (expolsionPrototype ,15 ,0,0,0)
flameGroup = sp add group (expolsionPrototype ,15 ,0,0,0)
flashGroup = sp add group (expolsionPrototype ,3 ,0,0,0)
spark1Group = sp add group (expolsionPrototype ,20 , 0,0,0)
spark2Group = sp add group (expolsionPrototype ,400 , 0,0,0)
waveGroup = sp add group (expolsionPrototype ,1 , 0,0,0)
// Flame
sp set group lifetime flameGroup , 1.5 , 2
flameRenderer = sp set quad renderer (flameGroup,textureExplosion,91,91,2,2,2)
sp set shared flameRenderer ,1
sizeInterpolator = sp add param graph(flameGroup , PARAM_SCALE)
sp add param graph entry sizeInterpolator , 0 , 0.25
sp add param graph entry sizeInterpolator , 0.02 , 0.6 , 0.8
sp add param graph entry sizeInterpolator , 1 , 1, 1.4
FTextureInterpolator= sp add interpolator (flameGroup , PARAM_ATLAS_DIMENSIONS , 0,4 , 1)
FangleInterpolator = sp add interpolator (flameGroup , PARAM_ANGLE , 0 , 1.57 , 0 , 1.57)
sp set shared FTextureInterpolator,1
sp set shared FangleInterpolator,1
sp set shared sizeInterpolator,1
rgbaGraph = sp add rgba graph(flameGroup)
sp add rgba graph entry rgbaGraph , 0.5 , 0xFF8033FF
sp add rgba graph entry rgbaGraph , 1 , 0x33333300
sp set shared rgbaGraph,1
flameEmitter = sp add normal emitter (flameGroup,-1 , 0.06 ,0.1 ,15 , sp sphere zone(0,0,0,0.4) , sp point zone(0,0,0))
// Flash
sp set group lifetime flashGroup , 0.5 , 0.5
flashRenderer = sp set quad renderer (flashGroup,textureFlash,91,91,1,1,2)
sp set shared flashRenderer ,1
flahGraph1 = sp add param graph (flashGroup , PARAM_SCALE)
sp add param graph entry flahGraph1 , 0 ,0.25
sp add param graph entry flahGraph1 , 0.1 ,1,2
sp set shared flahGraph1,1
flahGraph2 = sp add rgba graph (flashGroup)
sp add rgba graph entry flahGraph2 , 0 , sp rgba (128,128,128,255)
sp add rgba graph entry flahGraph2 , 0.4 , sp rgba (128,128,128,0)
sp set shared flahGraph2,1
flashEmitter = sp add static emitter (flashGroup , -1 , 3 , sp sphere zone (0,0,0,0.4))
// Spark 1
sp set group lifetime spark1Group , 0.1 , 1.0
spark1Renderer = sp set quad renderer (spark1Group,textureSpark1,5.55,91,1,1,2)
sp set quad orientation spark1Renderer , DIRECTION_ALIGNED , 1,0,0 , 0,1,0
sp set shared spark1Renderer ,1
spark1size = sp add interpolator (spark1Group ,PARAM_SCALE, 0.2 , 0.4 , 0)
sp set shared spark1size,1
spark1Rgba = sp add rgba interpolator (spark1Group , sp rgba(128,128,128,255), sp rgba(128,128,128,0) ,0)
sp set shared spark1Rgba,1
spark1Emitter = sp add normal emitter (spark1Group ,-1, 2,3 , 20 , sp point zone(0,0,0) , sp point zone(0,0,0))
spark1Grav = sp add gravity modifier (spark1Group , 0,-1.5,0)
sp set shared spark1Grav,1
// Spark 2
sp set group lifetime spark2Group , 1 , 3
spark2Renderer = sp set quad renderer (spark2Group,textureSpark2,2.42,2.42,1,1,2)
sp set shared spark2Renderer ,1
color1 = sp rgba (255, 255 , 178 , 255)
color2 =sp rgba(255 , 255 , 178 ,255)
color3 =sp rgba (255 , 76 , 76 , 0)
color4 = sp rgba (255 , 255 , 76 , 0)
spark2Rgba = sp add rgba interpolator (spark2Group , color1 , color2 ,color3 ,color4)
sp set shared spark2Rgba,1
spark2Emitter = sp add normal emitter (spark2Group ,-1, 0.4 ,0.8 , 400 , sp point zone(0,0,0) , sp point zone(0,0,0))
spark2Grav = sp add gravity modifier (spark2Group , 0,-0.3,0)
sp set shared spark2Grav,1
// Wave
sp set group lifetime waveGroup , 0.8 , 0.8
waveRenderer = sp set quad renderer (waveGroup,textureWave,91,91,1,1,2)
sp set quad orientation waveRenderer , FIXED_ORIENTATION , 1,0,0 , 0,1,0
sp set shared waveRenderer ,1
waveSize = sp add interpolator (waveGroup ,PARAM_SCALE, 0,4,0)
waveColor = sp add rgba interpolator (waveGroup , sp rgba(128,128,128, 211) , sp rgba (128,128,128,0) , 0)
waveEmitter = sp add static emitter (waveGroup , -1 , 1 , sp point zone (0,0,0))
sp set shared waveSize,1
sp set shared waveColor,1
if sp system exists(expolsionPrototype) = False
end
ENDIF
sp scale system expolsionPrototype, 500
Here is how I display it
if KeyState(2) = True
newExplosion = sp copy system( expolsionPrototype, gpickedPositionX, gpickedPositionY, gPickedPositionZ )
ENDIF
If I don't scale it & remove the smoke it works.. but then it's to small..
Keep it simple.
Questions? Mail me