Beispiel #1
0
    // public void ScannablesInSight(Scannables scan)
    // {
    //     if (scan.WasScanned())
    //         return;
    //     scannables.Add(scan);
    //     EmitSignal(nameof(FoundScannable), scan);
    // }

    // public void ScannablesOutOfSight(Scannables scan)
    // {
    //     scannables.Remove(scan);
    //     if (scannables.Count == 0)
    //     {
    //         EmitSignal("LostScannables");
    //     }
    // }

    public bool Scan()
    {
        if (current != null)
        {
            current.Scanned();
            current = null;
            EmitSignal("LostScannables");
            return(true);
        }
        return(false);
    }
Beispiel #2
0
 public override void _PhysicsProcess(float delta)
 {
     if (!GameManager.Instance.playing)
     {
         return;
     }
     if (scanPulseCharge < 10)
     {
         scanPulseCharge++;
     }
     else
     {
         scanPulseCharge = 0;
         ray_origin      = camera.ProjectRayOrigin(GetViewport().Size / 2);
         ray_end         = ray_origin + camera.ProjectRayNormal(GetViewport().Size / 2) * rayLength;
         do_raycast      = true;
     }
     if (do_raycast)
     {
         do_raycast = false;
         PhysicsDirectSpaceState      spaceState = GetWorld().DirectSpaceState;
         Godot.Collections.Dictionary results    = spaceState.IntersectRay(ray_origin, ray_end, null, 256u);
         if (results.Count > 0)
         {
             if (results["collider"] is Spatial spatial)
             {
                 if (spatial.GetParent() is Scannables scan)
                 {
                     if (current != scan)
                     {
                         if (!scan.WasScanned())
                         {
                             current = scan;
                             EmitSignal("FoundScannable", current);
                             return;
                         }
                     }
                     return;
                 }
             }
         }
         if (current != null)
         {
             current = null;
             EmitSignal("LostScannables");
         }
     }
 }
Beispiel #3
0
 public void FoundScans(Scannables scans)
 {
     SetCrossHairColor("00bfff");
 }