15-04-2024, 01:19 PM
(15-04-2024, 12:38 PM)bozdo Wrote:Code:public void Spawn(JellyObject prefab, Vector3 position, Quaternion rotation, Action<JellyObject> OnSpawn = null)
{
instances++;
int id = instances;
//solver.OnEndStep += SpawnJelly;
solver.OnPrepareFrame += SpawnJelly;
void SpawnJelly(ObiSolver solver)
{
solver.OnPrepareFrame -= SpawnJelly;
JellyObject jelly = Instantiate(prefab, position, rotation);
jelly.transform.SetParent(jellyParent);
spawnedObjects.Add(jelly);
SetRandomColor(jelly);
jelly.spawnID = id;
if (jelly.Softbody)
{
//solver.AddActor(jelly.actor);
}
OnSpawn?.Invoke(jelly);
}
}
No need to to do this in solver.OnPrepareFrame.
To add an actor to a solver, you just parent it under the solver transform (at any nesting level). Never call solver.AddActor manually unless you're 100% sure what you're doing, as it assumes all other conditions for the simulation to take place are met (both actor and solver have been initialized, the actor has a reference to the solver and it is below it in the scene hierarchy, etc).
kind regards