protected override bool Trigger(Frame frame, int subFrameId, float timeshift = 0)
        {
            /// TEST
            if (GetComponent <SyncContact>() && !photonView.IsMine)
            {
                hitscanDefinition.VisualizeHitscan(origin);
                return(true);
            }

            int nearest = -1;

            RaycastHit[] rayhits;
            Collider[]   colhits;
            int          count = hitscanDefinition.GenericHitscanNonAlloc(origin, out rayhits, out colhits, ref nearest, visualizeHitscan);

            if (count <= 0)
            {
                return(true);
            }

            //var contactTrigger = this.contactTrigger;// this.GetComponentInParent<ContactTrigger>();
            for (int h = 0; h < count; ++h)
            {
                var col = colhits[h];

                var otherCT = col.transform.GetNestedComponentInParents <IContactTrigger, NetObject>();

                if (ReferenceEquals(otherCT, null))
                {
                    continue;
                }

                if (otherCT.NetObj == contactTrigger.NetObj)
                {
                    continue;
                }

                if (poke)
                {
                    contactTrigger.OnContact(otherCT, ContactType.Hitscan);
                }

                if (grab)
                {
                    otherCT.OnContact(contactTrigger, ContactType.Hitscan);
                }
            }

            return(true);
        }
        public virtual void OnPreSimulate(int frameId, int subFrameId)
        {
            if (!triggerQueued)
            {
                return;
            }

            int nearest = -1;

            Collider[]   hits;
            RaycastHit[] rayhits;

            int hitcount = hitscanDefinition.GenericHitscanNonAlloc(transform, out rayhits, out hits, ref nearest);

            //#if UNITY_EDITOR || DEVELOPMENT_BUILD
            if (visualize)
            {
                hitscanDefinition.VisualizeHitscan(transform);
            }
            //#endif
            triggerQueued = false;

            ProcessHits(hits, hitcount);
        }