Used as helper for GT to go from unique idx back to gt particle If GT deletes a particle, this function will return null (that's a good thing when consuming async outputs as GT may have already deleted the particle we care about) Note: if the physics solver has been advanced after the particle was freed on GT, the index may have been freed and reused. In this case instead of getting a nullptr you will get an unrelated (wrong) GT particle Because of this we keep the index alive for as long as the async callback can lag behind. This way as long as you immediately consume the output, you will always be sure the unique index was not released. Practically the flow should always be like this: advance the solver and trigger callbacks. Callbacks write to outputs. Consume the outputs on GT and use this functionbeforeadvancing solver again