Ejemplo n.º 1
0
 public void Return(SimplePoolItemType key, object obj)
 {
     if (!_caches.ContainsKey(key))
     {
         _caches[key] = new Queue();
     }
     _caches[key].Enqueue(obj);
 }
Ejemplo n.º 2
0
 private void QuadValueChangeHandler(IEvent e)
 {
     if (_meshType != SimplePoolItemType.None)
     {
         SimplePool.inst.Return(_meshType, _meshFilter.mesh);
     }
     _meshType             = SimplePoolItemType.QuadMesh;
     _meshFilter.mesh      = SimplePool.inst.Get <Mesh>(_meshType);
     data.localEulerAngles = Style.GetAngles(data.value);
     data.uvOffsets        = Style.GetQuadUVOffsets(data.value);
 }
Ejemplo n.º 3
0
    public void Bind <T>(SimplePoolItemType key, Func <object> factory)
    {
        string key1 = factory.Method.ReturnType.Name;
        string key2 = typeof(T).Name;

        if (key1 == key2)
        {
            _factories[key] = factory;
        }
        else
        {
            throw new InvalidOperationException();
        }
    }
Ejemplo n.º 4
0
    public T Get <T>(SimplePoolItemType key)
    {
        T result = default(T);

        if (!_caches.ContainsKey(key))
        {
            _caches[key] = new Queue();
        }
        if (_caches[key].Count > 0)
        {
            result = (T)_caches[key].Dequeue();
        }
        else
        {
            result = (T)_factories[key]();
        }
        return(result);
    }