void OnDrawGizmos()
    {
        VolatileWorld world = VolatileWorld.Instance;

        if ((world != null) && (Application.isPlaying == true))
        {
            VoltRayResult result = new VoltRayResult();
            VoltRayCast   cast   =
                new VoltRayCast(
                    ((Vector2)transform.position).ToTSVector2(),
                    ((Vector2)(transform.position + (transform.up * 100.0f))).ToTSVector2());

            if (this.radius > 0.0f)
            {
                world.World.CircleCast(ref cast, this.radius, ref result, this.Filter, -this.frameOffset);
            }
            else
            {
                world.World.RayCast(ref cast, ref result, this.Filter, -this.frameOffset);
            }

            float drawRadius = (this.radius == 0.0f) ? 0.2f : this.radius;
            Gizmos.color = this.color;
            if (result.IsValid == true)
            {
                Vector2 point = transform.position + (transform.up * (float)result.Distance);
                Gizmos.DrawLine(transform.position, point);
                Gizmos.DrawWireSphere(point, drawRadius);
            }
            else
            {
                Gizmos.DrawLine(transform.position, transform.position + (transform.up * 100.0f));
            }
        }
    }
    private void ExplosionCallback(
        VoltRayCast rayCast,
        VoltRayResult rayResult,
        FP rayWeight)
    {
        TSVector2 point = rayResult.ComputePoint(ref rayCast);

        this.hits.Add(point);
    }