change pin API
parent
40b3a6596d
commit
11b0a53f40
|
@ -283,14 +283,16 @@ void Silkworm_NodeSetDestroyable(double nodeId)
|
||||||
LookupNode(nodeId)->destroyable = true;
|
LookupNode(nodeId)->destroyable = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Silkworm_NodePin(double nodeId)
|
void Silkworm_ClothNodePin(double clothId, double i, double j)
|
||||||
{
|
{
|
||||||
LookupNode(nodeId)->pinned = true;
|
Silkworm_Cloth* cloth = LookupCloth(clothId);
|
||||||
|
context->nodes[cloth->nodeIndices[(uint64_t)i][(uint64_t)j]]->pinned = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Silkworm_NodeUnpin(double nodeId)
|
void Silkworm_ClothNodeUnpin(double clothId, double i, double j)
|
||||||
{
|
{
|
||||||
LookupNode(nodeId)->pinned = false;
|
Silkworm_Cloth* cloth = LookupCloth(clothId);
|
||||||
|
context->nodes[cloth->nodeIndices[(uint64_t)i][(uint64_t)j]]->pinned = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
double Silkworm_CreateLink(double aId, double bId, double distance, double tearThreshold)
|
double Silkworm_CreateLink(double aId, double bId, double distance, double tearThreshold)
|
||||||
|
@ -339,22 +341,27 @@ double Silkworm_CreateCloth(double xPosition, double yPosition, double horizonta
|
||||||
cloth->verticalNodeCount = (uint32_t) verticalNodeCount;
|
cloth->verticalNodeCount = (uint32_t) verticalNodeCount;
|
||||||
cloth->nodeIndices = malloc(sizeof(uint64_t*) * cloth->horizontalNodeCount);
|
cloth->nodeIndices = malloc(sizeof(uint64_t*) * cloth->horizontalNodeCount);
|
||||||
|
|
||||||
|
cloth->id = context->clothCount;
|
||||||
|
context->cloths = realloc(context->cloths, sizeof(Silkworm_Cloth*) * (context->clothCount + 1));
|
||||||
|
context->cloths[context->clothCount] = cloth;
|
||||||
|
context->clothCount += 1;
|
||||||
|
|
||||||
for (i = 0; i < horizontalNodeCount; i += 1)
|
for (i = 0; i < horizontalNodeCount; i += 1)
|
||||||
{
|
{
|
||||||
cloth->nodeIndices[i] = malloc(sizeof(uint64_t) * cloth->verticalNodeCount);
|
cloth->nodeIndices[i] = malloc(sizeof(uint64_t) * cloth->verticalNodeCount);
|
||||||
|
|
||||||
for (j = 0; j < verticalNodeCount; j += 1)
|
for (j = 0; j < verticalNodeCount; j += 1)
|
||||||
{
|
{
|
||||||
uint64_t id = (uint64_t) Silkworm_CreateNode(xPosition + i * context->clothDensity, yPosition + j * context->clothDensity, mass, friction, 1, 0.5);
|
uint64_t nodeId = (uint64_t) Silkworm_CreateNode(xPosition + i * context->clothDensity, yPosition + j * context->clothDensity, mass, friction, 1, 0.5);
|
||||||
|
|
||||||
|
cloth->nodeIndices[i][j] = nodeId;
|
||||||
|
|
||||||
if (j == 0)
|
if (j == 0)
|
||||||
{
|
{
|
||||||
Silkworm_NodePin((double)id);
|
Silkworm_ClothNodePin((double)cloth->id, (double)i, (double)j);
|
||||||
}
|
}
|
||||||
|
|
||||||
Silkworm_NodeSetDestroyable((double)id);
|
Silkworm_NodeSetDestroyable((double)nodeId);
|
||||||
|
|
||||||
cloth->nodeIndices[i][j] = id;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -427,14 +434,6 @@ double Silkworm_CreateCloth(double xPosition, double yPosition, double horizonta
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uint64_t id;
|
|
||||||
id = context->clothCount;
|
|
||||||
|
|
||||||
cloth->id = id;
|
|
||||||
context->cloths = realloc(context->cloths, sizeof(Silkworm_Cloth*) * (context->clothCount + 1));
|
|
||||||
context->cloths[context->clothCount] = cloth;
|
|
||||||
context->clothCount += 1;
|
|
||||||
|
|
||||||
return (double)cloth->id;
|
return (double)cloth->id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -137,8 +137,8 @@ SILKWORMAPI void Silkworm_Update(double delta);
|
||||||
SILKWORMAPI double Silkworm_CreateNode(double xPosition, double yPosition, double mass, double friction, double radius, double pushFactor);
|
SILKWORMAPI double Silkworm_CreateNode(double xPosition, double yPosition, double mass, double friction, double radius, double pushFactor);
|
||||||
|
|
||||||
SILKWORMAPI void Silkworm_NodeSetDestroyable(double nodeId);
|
SILKWORMAPI void Silkworm_NodeSetDestroyable(double nodeId);
|
||||||
SILKWORMAPI void Silkworm_NodePin(double nodeId);
|
SILKWORMAPI void Silkworm_ClothNodePin(double clothId, double i, double j);
|
||||||
SILKWORMAPI void Silkworm_NodeUnpin(double nodeId);
|
SILKWORMAPI void Silkworm_ClothNodeUnpin(double clothId, double i, double j);
|
||||||
|
|
||||||
SILKWORMAPI double Silkworm_CreateLink(double aId, double bId, double distance, double tearThreshold);
|
SILKWORMAPI double Silkworm_CreateLink(double aId, double bId, double distance, double tearThreshold);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue