cloth wind rippling
parent
311e263390
commit
5f018e76ba
|
@ -351,6 +351,8 @@ typedef struct Silkworm_Context
|
|||
float yBound;
|
||||
uint32_t clothDensity;
|
||||
|
||||
float timeElapsed;
|
||||
|
||||
uint8_t* currentBufferAddress; /* GM doesnt let you pass more than 4 arguments with different types lol */
|
||||
|
||||
/* keep track of these so can do callbacks */
|
||||
|
@ -403,6 +405,7 @@ void Silkworm_Init()
|
|||
context->xBound = 1000;
|
||||
context->yBound = 1000;
|
||||
context->clothDensity = 4;
|
||||
context->timeElapsed = 0;
|
||||
|
||||
context->nodeDestructionDataCapacity = 16;
|
||||
context->nodeDestructionData = malloc(sizeof(Silkworm_Vector2) * context->nodeDestructionDataCapacity);
|
||||
|
@ -731,6 +734,8 @@ void Silkworm_Update(double deltaTime)
|
|||
}
|
||||
|
||||
Silkworm_PerformDestroys();
|
||||
|
||||
context->timeElapsed += delta;
|
||||
}
|
||||
|
||||
double Silkworm_CreateNode(double xPosition, double yPosition, double mass, double friction, double radius, double pushFactor, double windFactor)
|
||||
|
@ -1084,8 +1089,8 @@ void Silkworm_ApplyWind(double xSpeed, double ySpeed)
|
|||
|
||||
if (node != NULL && !node->pinned)
|
||||
{
|
||||
node->position.x += (float)xSpeed * 0.025f * node->windFactor;
|
||||
node->position.y += (float)ySpeed * 0.025f * node->windFactor;
|
||||
node->position.x += (0.5f * sinf(context->timeElapsed / 15 + node->position.y / 2) + 0.5f) * (float)xSpeed * 0.05f * node->windFactor;
|
||||
node->position.y += (0.5f * sinf(context->timeElapsed / 15 + node->position.x / 3) + 0.5f) * (float)ySpeed * 0.05f * node->windFactor;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1977,6 +1982,8 @@ void Silkworm_ClearAll()
|
|||
}
|
||||
|
||||
Silkworm_PerformDestroys();
|
||||
|
||||
context->timeElapsed = 0;
|
||||
}
|
||||
|
||||
void Silkworm_Finish()
|
||||
|
|
Loading…
Reference in New Issue