Exemplo n.º 1
0
        public static void setPossibleTarget(ModuleDockingStrut Origin, ModuleDockingStrut Target)
        {
            float distance = Vector3.Distance(Target.part.transform.position, Origin.part.transform.position);

            if (distance > Origin.MaxDistance)
            {
                Target.SetErrorMessage("Out of range by " + Math.Round(distance - Origin.MaxDistance, 2) + "m");
                return;
            }

            RaycastHit info  = new RaycastHit();
            Vector3    start = Origin.rayCastOrigin;
            Vector3    dir   = (Target.strutTarget - start).normalized;

            bool hit = Physics.Raycast(new Ray(start, dir), out info, Origin.MaxDistance + 1);

            Part tmpp = PartFromHit(info);

            if (hit && tmpp == Target.part)
            {
                hit = false;
            }

            if (hit)
            {
                Target.SetErrorMessage("Obstructed by " + tmpp.name);
                return;
            }

            Target.mode       = DSMode.TARGET;
            Target.TargeterDS = Origin;
            foreach (BaseEvent e in Target.Events)
            {
                e.active = e.guiActive = false;
            }
        }
Exemplo n.º 2
0
        public static void setPossibleTarget(ModuleDockingStrut Origin, ModuleDockingStrut Target)
        {
            float distance = Vector3.Distance(Target.part.transform.position, Origin.part.transform.position);
            if (distance > Origin.MaxDistance)
            {
                Target.SetErrorMessage("Out of range by " + Math.Round(distance - Origin.MaxDistance, 2) + "m");
                return;
            }

            RaycastHit info = new RaycastHit();
            Vector3 start = Origin.rayCastOrigin;
            Vector3 dir = (Target.strutTarget - start).normalized;

            bool hit = Physics.Raycast(new Ray(start, dir), out info, Origin.MaxDistance + 1);

            Part tmpp = PartFromHit(info);
            if (hit && tmpp == Target.part)
                hit = false;

            if (hit)
            {
                Target.SetErrorMessage("Obstructed by " + tmpp.name);
                return;
            }

            Target.mode = DSMode.TARGET;
            Target.TargeterDS = Origin;
            foreach (BaseEvent e in Target.Events)
            {
                e.active = e.guiActive = false;
            }
        }