45 lines
1.3 KiB
C#
45 lines
1.3 KiB
C#
|
using System;
|
||
|
using Unity.Collections;
|
||
|
using Unity.Jobs;
|
||
|
using UnityEngine.Jobs;
|
||
|
using UnityEngine.Rendering;
|
||
|
|
||
|
namespace UnityEngine.Rendering.Universal
|
||
|
{
|
||
|
internal abstract class DecalChunk : IDisposable
|
||
|
{
|
||
|
public int count { get; protected set; }
|
||
|
public int capacity { get; protected set; }
|
||
|
|
||
|
public JobHandle currentJobHandle { get; set; }
|
||
|
|
||
|
public virtual void Push() { count++; }
|
||
|
public abstract void RemoveAtSwapBack(int index);
|
||
|
public abstract void SetCapacity(int capacity);
|
||
|
|
||
|
public virtual void Dispose() { }
|
||
|
|
||
|
protected void ResizeNativeArray(ref TransformAccessArray array, DecalProjector[] decalProjectors, int capacity)
|
||
|
{
|
||
|
var newArray = new TransformAccessArray(capacity);
|
||
|
if (array.isCreated)
|
||
|
{
|
||
|
for (int i = 0; i < array.length; ++i)
|
||
|
newArray.Add(decalProjectors[i].transform);
|
||
|
array.Dispose();
|
||
|
}
|
||
|
array = newArray;
|
||
|
}
|
||
|
|
||
|
protected void RemoveAtSwapBack<T>(ref NativeArray<T> array, int index, int count) where T : struct
|
||
|
{
|
||
|
array[index] = array[count - 1];
|
||
|
}
|
||
|
|
||
|
protected void RemoveAtSwapBack<T>(ref T[] array, int index, int count)
|
||
|
{
|
||
|
array[index] = array[count - 1];
|
||
|
}
|
||
|
}
|
||
|
}
|