unsafe public void Set <T>(T val, CacheIndex index, int offset = 0) where T : unmanaged { int size = UnsafeUtility.SizeOf <T>(); int stride = size / UnsafeUtility.SizeOf <float>(); UnsafeUtility.MemCpy((float *)m_Data.GetUnsafePtr() + index.idx + offset * stride, &val, size); }
public void SetValue(CacheIndex index, int offset, float value) { if (index.idx + offset < m_Data.Count) { m_Data[index.idx + offset] = value; } }
unsafe public void SetArray <T>(T[] v, CacheIndex index, int offset = 0) where T : unmanaged { int size = UnsafeUtility.SizeOf <T>(); int stride = size / UnsafeUtility.SizeOf <float>(); fixed(void *ptr = v) { UnsafeUtility.MemCpy((float *)m_Data.GetUnsafePtr() + index.idx + offset * stride, ptr, size * v.Length); } }
unsafe public T Get <T>(CacheIndex index, int offset = 0) where T : unmanaged { int size = UnsafeUtility.SizeOf <T>(); int stride = size / UnsafeUtility.SizeOf <float>(); T val = default(T); UnsafeUtility.MemCpy(&val, (float *)m_Data.GetUnsafeReadOnlyPtr() + index.idx + offset * stride, size); return(val); }
public static float Sum(AnimationJobCache cache, CacheIndex index, int count) { if (count == 0) { return(0f); } float sum = 0f; for (int i = 0; i < count; ++i) { sum += cache.GetRaw(index, i); } return(sum); }
public void SetRaw(float val, CacheIndex index, int offset = 0) { m_Data[index.idx + offset] = val; }
public float GetRaw(CacheIndex index, int offset = 0) { return(m_Data[index.idx + offset]); }