Esempio n. 1
0
        void Update()
        {
            Fix64Vec2 center = (Fix64Vec2)transform.position;
            Fix64     radius = (Fix64)circleRadius;

            Parallel2D.OverlapCircle(center, radius, layerMask, result);
        }
Esempio n. 2
0
        // Update is called once per frame
        void Update()
        {
            transform.Rotate(Vector3.forward * rotateSpeed * Time.deltaTime);

            bool hit = false;

            Fix64Vec3 start    = (Fix64Vec3)transform.position;
            Fix64Vec3 movement = (Fix64)castRange * (Fix64Vec3)transform.right;
            Fix64     radius   = (Fix64)circleRadius;
            Fix64Vec3 end      = start + movement;

            hit = Parallel2D.CircleCast((Fix64Vec2)start, radius, (Fix64Vec2)movement, layerMask, ref hitInfo);

            if (hit)
            {
                castPoint         = hitInfo.point;
                castNormal        = hitInfo.normal;
                circleHitPosition = (Fix64Vec2)(start + hitInfo.fraction * movement);
            }
            else
            {
                castPoint         = (Fix64Vec2)end;
                castNormal        = Fix64Vec2.zero;
                circleHitPosition = castPoint;
            }
        }
        public static void ParForGPU(ushort[] output, ushort[] input, int width, int height)
        {
            Parallel2D.For(window, width - window, window, height - window, (i, j) =>
            {
                var buffer = new StackArray <ushort>(windowCount * windowCount);
                for (int k = -window; k <= window; ++k)
                {
                    for (int p = -window; p <= window; ++p)
                    {
                        int bufferIndex     = (k + window) * windowCount + p + window;
                        int pixelIndex      = (j + k) * width + (i + p);
                        buffer[bufferIndex] = input[pixelIndex];
                    }
                }

                // sort buffer using StaticSort
                <...>
                output[j * width + i] = buffer[(windowCount * windowCount) / 2];
            });
Esempio n. 4
0
        // Update is called once per frame
        void Update()
        {
            transform.Rotate(Vector3.forward * rotateSpeed * Time.deltaTime);

            PRaycastHit2D raycastHit2D;

            bool hit = false;


            Fix64Vec2 start = (Fix64Vec2)transform.position;
            Fix64Vec2 end   = start + (Fix64)raycastLength * (Fix64Vec2)transform.right;

            hit = Parallel2D.RayCast(start, end, layerMask, out raycastHit2D);

            if (hit)
            {
                raycastPoint  = raycastHit2D.point;
                raycastNormal = raycastHit2D.normal;
            }
            else
            {
                raycastPoint = end;
            }
        }