Lightning direction affected by Newtonian gravity
This commit is contained in:
parent
8de602d467
commit
3a946efdfd
@ -127,7 +127,7 @@ int update_LIGH(UPDATE_FUNC_ARGS)
|
|||||||
*
|
*
|
||||||
* life - "thickness" of lighting (but anyway one pixel)
|
* life - "thickness" of lighting (but anyway one pixel)
|
||||||
*
|
*
|
||||||
* tmp - angle of lighting
|
* tmp - angle of lighting, measured in degrees anticlockwise from the positive x direction
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
int r,rx,ry, multipler, powderful;
|
int r,rx,ry, multipler, powderful;
|
||||||
|
39
src/powder.c
39
src/powder.c
@ -947,24 +947,6 @@ inline int create_part(int p, int x, int y, int tv)//the function for creating a
|
|||||||
}*/
|
}*/
|
||||||
switch (t)
|
switch (t)
|
||||||
{
|
{
|
||||||
case PT_LIGH:
|
|
||||||
if (p==-2)
|
|
||||||
{
|
|
||||||
switch (gravityMode)
|
|
||||||
{
|
|
||||||
default:
|
|
||||||
case 0:
|
|
||||||
parts[i].tmp= 270+rand()%40-20;
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
parts[i].tmp = rand()%360;
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
parts[i].tmp = atan2(x-XCNTR, y-YCNTR)*(180.0f/M_PI)+90;
|
|
||||||
}
|
|
||||||
parts[i].tmp2 = 4;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case PT_SOAP:
|
case PT_SOAP:
|
||||||
parts[i].tmp = -1;
|
parts[i].tmp = -1;
|
||||||
parts[i].tmp2 = -1;
|
parts[i].tmp2 = -1;
|
||||||
@ -1175,6 +1157,27 @@ inline int create_part(int p, int x, int y, int tv)//the function for creating a
|
|||||||
parts[i].tmp2 = 4;//tail
|
parts[i].tmp2 = 4;//tail
|
||||||
parts[i].life = 5;
|
parts[i].life = 5;
|
||||||
}
|
}
|
||||||
|
if (t==PT_LIGH)
|
||||||
|
{
|
||||||
|
float gx, gy, gsize;
|
||||||
|
if (p!=-2)
|
||||||
|
{
|
||||||
|
parts[i].life=30;
|
||||||
|
parts[i].temp=parts[i].life*150.0f; // temperature of the lighting shows the power of the lighting
|
||||||
|
}
|
||||||
|
get_gravity_field(x, y, 1.0f, 1.0f, &gx, &gy);
|
||||||
|
gsize = gx*gx+gy*gy;
|
||||||
|
if (gsize<0.0016f)
|
||||||
|
{
|
||||||
|
float angle = (rand()%6284)*0.001f;//(in radians, between 0 and 2*pi)
|
||||||
|
gsize = sqrtf(gsize);
|
||||||
|
// randomness in weak gravity fields (more randomness with weaker fields)
|
||||||
|
gx += cosf(angle)*(0.04f-gsize);
|
||||||
|
gy += sinf(angle)*(0.04f-gsize);
|
||||||
|
}
|
||||||
|
parts[i].tmp = (((int)(atan2f(-gy, gx)*(180.0f/M_PI)))+rand()%40-20+360)%360;
|
||||||
|
parts[i].tmp2 = 4;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
//and finally set the pmap/photon maps to the newly created particle
|
//and finally set the pmap/photon maps to the newly created particle
|
||||||
if (ptypes[t].properties & TYPE_ENERGY)
|
if (ptypes[t].properties & TYPE_ENERGY)
|
||||||
|
Loading…
Reference in New Issue
Block a user