// 
// Decompiled by Procyon v0.6.0
// 

package com.hypixel.hytale.component.spatial;

import java.util.function.Supplier;
import it.unimi.dsi.fastutil.objects.ObjectArrayList;
import javax.annotation.Nonnull;
import com.hypixel.hytale.component.Ref;
import it.unimi.dsi.fastutil.objects.ObjectList;
import com.hypixel.hytale.component.Resource;

public class SpatialResource<T, ECS_TYPE> implements Resource<ECS_TYPE>
{
    @Nonnull
    private static final ThreadLocal<ObjectList<Ref<?>>> THREAD_LOCAL_REFERENCE_LIST;
    @Nonnull
    private final SpatialData<Ref<ECS_TYPE>> spatialData;
    @Nonnull
    private final SpatialStructure<T> spatialStructure;
    
    @Nonnull
    public static <ECS_TYPE> ObjectList<Ref<ECS_TYPE>> getThreadLocalReferenceList() {
        final ObjectList list = SpatialResource.THREAD_LOCAL_REFERENCE_LIST.get();
        list.clear();
        return list;
    }
    
    public SpatialResource(@Nonnull final SpatialStructure<T> spatialStructure) {
        this.spatialData = new SpatialData<Ref<ECS_TYPE>>();
        this.spatialStructure = spatialStructure;
    }
    
    @Nonnull
    public SpatialData<Ref<ECS_TYPE>> getSpatialData() {
        return this.spatialData;
    }
    
    @Nonnull
    public SpatialStructure<T> getSpatialStructure() {
        return this.spatialStructure;
    }
    
    @Override
    public Resource<ECS_TYPE> clone() {
        throw new UnsupportedOperationException("Not supported yet.");
    }
    
    static {
        THREAD_LOCAL_REFERENCE_LIST = ThreadLocal.withInitial((Supplier<? extends ObjectList<Ref<?>>>)ObjectArrayList::new);
    }
}
