XPool
XPool copied to clipboard
[FEATURE] `RentWithState`
Before
public struct ProjectileRequest {
public int power;
public float speed;
}
public void Shoot (ProjectileRequest request) {
var projectile = m_ProjectilePool.Rent(position,rotation);
projectile.Power = request.power;
projectile.Speed = request.speed;
}
After
public class ProjectilePool : PoolWithStateBase<Projectile,ProjectileRequest> {
protected override void OnRent (Projectile instance,ProjectileRequest state) {
instance.Power = state.power;
instance.Speed = state.speed;
}
}
public void Shoot (ProjectileRequest request) {
var projectile = m_ProjectilePool.Rent(request,position,rotation);
}
- Basically, pool is not public and is used internally.
- Methods such as
ShootuseRentinternally. - Methods such as
Shootmay have multiple arguments.