Exemplo n.º 1
0
        public static NativeArray <T> CreateMaskedBuffer <T>(NativeArray <T> data, NativeArray <byte> mask, Allocator allocator) where T : struct
        {
            var result = NativeArrayUtility.CreateCopy(data, allocator);

            ApplyMask(result, mask);
            return(result);
        }
 public static NativeView GetReadView <T>(NativeArray <T> data) where T : struct
 {
     unsafe
     {
         return(new NativeView((byte *)data.GetUnsafeReadOnlyPtr(), NativeArrayUtility.LengthInBytes(data)));
     }
 }
Exemplo n.º 3
0
        internal static uint GetMaskedHash(NativeView data, NativeView mask, uint seed)
        {
            var copy = NativeArrayUtility.CreateOwningCopy(data, Allocator.Temp);

            MaskedMemCopy.ApplyMask(NativeViewUtility.GetWriteView(copy), mask);
            var hash = GetDenseHash(copy, seed);

            copy.Dispose();
            return(hash);
        }
        // use the native implementation from dots (not burstable)
        public static Hash128 Hash <T>(NativeArray <T> data) where T : struct
        {
            if (NativeArrayUtility.IsInvalidOrEmpty(data))
            {
                return(new Hash128());
            }

            var sizeOfT     = UnsafeUtility.SizeOf <T>();
            var sizeInBytes = sizeOfT * data.Length;

            var hash = new Hash128();

            unsafe
            {
                var ptr       = data.GetUnsafeReadOnlyPtr();
                var resultPtr = (UnityEngine.Hash128 *)UnsafeUtility.AddressOf(ref hash);
                HashUnsafeUtilities.ComputeHash128(ptr, (ulong)sizeInBytes, resultPtr);
            }

            return(hash);
        }