interface IGameObjectInstantiator (Niantic.ARDK.Networking.ARSim.Spawning.GameObjectSpawning.IGameObjectInstantiator)

An interface wrapping Unity’s Instantiate and Destroy methods, to support alternative spawning patterns (Zenject, object pools, etc).

interface IGameObjectInstantiator {
    // methods

    void Destroy(GameObject obj, float timeToDelay = 0.0f);
    GameObject Instantiate(GameObject original);

    GameObject Instantiate(
        GameObject original,
        Transform parent,
        bool instantiateInWorldSpace = false
    );

    GameObject Instantiate(
        GameObject original,
        Vector3 position,
        Quaternion rotation,
        Transform parent = null
    );
};

// direct descendants

class UnityGameObjectInstantiator;