示例#1
0
        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);
        }
示例#2
0
 public void SetValue(CacheIndex index, int offset, float value)
 {
     if (index.idx + offset < m_Data.Count)
     {
         m_Data[index.idx + offset] = value;
     }
 }
示例#3
0
        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);
            }
        }
示例#4
0
        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);
        }
示例#5
0
        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);
        }
示例#6
0
 public void SetRaw(float val, CacheIndex index, int offset = 0)
 {
     m_Data[index.idx + offset] = val;
 }
示例#7
0
 public float GetRaw(CacheIndex index, int offset = 0)
 {
     return(m_Data[index.idx + offset]);
 }