Compte tenu du code fourni pour handle(_:forProperties:handler:)
, le bloc suivant devient rouge particule verte, mais qui ne fonctionne pas:couleurs dans un SCNParticleSystem Modification SCNParticleEventBlock ne fonctionne pas
[system handleEvent:SCNParticleEventBirth
forProperties:@[SCNParticlePropertyColor]
withBlock:^(void **data, size_t *dataStride, uint32_t *indices , NSInteger count) {
for (NSInteger i = 0; i < count; ++i) {
float *color = (float *)((char *)data[0] + dataStride[0] * i);
if (rand() & 0x1) { // Switch the green and red color components.
color[0] = color[1];
color[1] = 0;
}
}
}];
avec ce qui suit, je suis en mesure de voir les particules vertes, mais peu importe ce que je fais, je ne peux pas sembler obtenir divers SCNParticleProperty
pour faire quelque chose.
SCNParticleSystem *system = [SCNParticleSystem particleSystem];
system.particleColor = NSColor.greenColor;
system.birthRate = 1;
Une observation intéressante est que dans le bloc ci-dessus, dataStride
ne semble avoir des valeurs pour certains SCNParticleProperty
s. position, angle, velocity
, et angularVelocity
donnent tous 16
, life
et frame
donnent 4
, et tous les autres montrent nil
. Je peux seulement supposer que l'API permet l'ajustement par particule pour quelques propriétés, ou une configuration supplémentaire doit être faite sur mon instance SCNParticleSystem
afin de "déverrouiller" la modification via un bloc SCNParticleEventBlock
. Ce qui précède produit les mêmes résultats dans Swift, et les deux Xcode 8 et 9. J'ai essayé d'attribuer des valeurs à presque toutes les propriétés de mon SCNParticleSystem
sans aucune chance, et je ne vois pas d'exemple de code fourni par Apple autre que ce qui est dans l'en-tête.
Merci pour toute aide.