Particles: use CD_PROP_FLOAT3 instead of CD_LOCATION

`CD_LOCATION` was only used temporarily due to the lack
of a better alternative. This also removes the name from
`CD_LOCATION` again, because at most one layer of this
type should exist.
This commit is contained in:
Jacques Lucke 2020-07-15 16:48:30 +02:00
parent 57ec1f37e9
commit 19d17b217a
4 changed files with 9 additions and 9 deletions

View File

@ -1868,7 +1868,7 @@ static const LayerTypeInfo LAYERTYPEINFO[CD_NUMTYPES] = {
/* 42: CD_SCULPT_FACE_SETS */
{sizeof(int), "", 0, NULL, NULL, NULL, NULL, NULL, NULL},
/* 43: CD_LOCATION */
{sizeof(float[3]), "vec3f", 1, "Location", NULL, NULL, NULL, NULL, NULL},
{sizeof(float[3]), "vec3f", 1, NULL, NULL, NULL, NULL, NULL, NULL},
/* 44: CD_RADIUS */
{sizeof(float), "MFloatProperty", 1, NULL, NULL, NULL, NULL, NULL, NULL},
/* 45: CD_HAIRCURVE */

View File

@ -1900,7 +1900,7 @@ static int ptcache_sim_particle_write(int index, void *state_v, void **data, int
ParticleSimulationState *state = (ParticleSimulationState *)state_v;
const float *positions = (const float *)CustomData_get_layer_named(
&state->attributes, CD_LOCATION, "Position");
&state->attributes, CD_PROP_FLOAT3, "Position");
PTCACHE_DATA_FROM(data, BPHYS_DATA_LOCATION, positions + (index * 3));
@ -1913,7 +1913,7 @@ static void ptcache_sim_particle_read(
BLI_assert(index < state->tot_particles);
float *positions = (float *)CustomData_get_layer_named(
&state->attributes, CD_LOCATION, "Position");
&state->attributes, CD_PROP_FLOAT3, "Position");
PTCACHE_DATA_TO(data, BPHYS_DATA_LOCATION, 0, positions + (index * 3));
}

View File

@ -168,13 +168,13 @@ namespace blender::bke {
static void ensure_attributes_exist(ParticleSimulationState *state)
{
if (CustomData_get_layer_named(&state->attributes, CD_LOCATION, "Position") == nullptr) {
if (CustomData_get_layer_named(&state->attributes, CD_PROP_FLOAT3, "Position") == nullptr) {
CustomData_add_layer_named(
&state->attributes, CD_LOCATION, CD_CALLOC, nullptr, state->tot_particles, "Position");
&state->attributes, CD_PROP_FLOAT3, CD_CALLOC, nullptr, state->tot_particles, "Position");
}
if (CustomData_get_layer_named(&state->attributes, CD_LOCATION, "Velocity") == nullptr) {
if (CustomData_get_layer_named(&state->attributes, CD_PROP_FLOAT3, "Velocity") == nullptr) {
CustomData_add_layer_named(
&state->attributes, CD_LOCATION, CD_CALLOC, nullptr, state->tot_particles, "Velocity");
&state->attributes, CD_PROP_FLOAT3, CD_CALLOC, nullptr, state->tot_particles, "Velocity");
}
if (CustomData_get_layer_named(&state->attributes, CD_PROP_INT32, "ID") == nullptr) {
CustomData_add_layer_named(
@ -288,7 +288,7 @@ class CustomDataAttributesRef {
builder.add<int32_t>(layer.name, 0);
break;
}
case CD_LOCATION: {
case CD_PROP_FLOAT3: {
builder.add<float3>(layer.name, {0, 0, 0});
break;
}

View File

@ -125,7 +125,7 @@ static PointCloud *modifyPointCloud(ModifierData *md,
}
const float3 *positions = (const float3 *)CustomData_get_layer_named(
&state->attributes, CD_LOCATION, "Position");
&state->attributes, CD_PROP_FLOAT3, "Position");
memcpy(pointcloud->co, positions, sizeof(float3) * state->tot_particles);
for (int i = 0; i < state->tot_particles; i++) {