コード例 #1
0
    // Called when the node enters the scene tree for the first time.
    public override void _Ready()
    {
        if (bulletStartPos == null)
        {
            bulletStartPos = new Vector3();
        }

        if (bulletEndPos == null)
        {
            bulletEndPos = bulletStartPos;
        }

        bulletPos = bulletStartPos;

        stepPoints    = new Dictionary();
        collisionList = new Array <PhysicsBody>();

        decal = ResourceLoader.Load <PackedScene>("res://Scenes/Decals/BulletHole.tscn");

        debugDrawNode                  = Main.instance.GetNode("DebugDraw") as ImmediateGeometry;
        material                       = new SpatialMaterial();
        material.FlagsUnshaded         = true;
        material.FlagsUsePointSize     = true;
        material.FlagsNoDepthTest      = true;
        debugDrawNode.MaterialOverride = material;

        debugDrawNode2                  = Main.instance.GetNode("DebugDrawPen") as ImmediateGeometry;
        material2                       = new SpatialMaterial();
        material2.FlagsUnshaded         = true;
        material2.FlagsUsePointSize     = true;
        material2.FlagsNoDepthTest      = true;
        material2.AlbedoColor           = Colors.Red;
        debugDrawNode2.MaterialOverride = material2;
    }
コード例 #2
0
 public override void _Ready()
 {
     base._Ready();
     geometry = new ImmediateGeometry();
     geometry.MaterialOverride = trailMaterial;
     AddChild(geometry);
 }
コード例 #3
0
    public SpatialDebugger()
    {
        instance   = this;
        lineDrawer = new ImmediateGeometry();

        lines = new List <Line>();
    }
コード例 #4
0
 public void draw(ImmediateGeometry ig)
 {
     if (OS.IsDebugBuild())
     {
         _DebugDraw(ig);
     }
 }
コード例 #5
0
    // Called when the node enters the scene tree for the first time.
    public override void _Ready()
    {
        Spatial spatial = GetTree().Root.GetChild(0) as Spatial;

        if (spatial is null)
        {
            throw new NullReferenceException("Failed to find Spatial node");
        }

        List <CSGSphere>  spheres      = new List <CSGSphere>();
        ImmediateGeometry lineRenderer = null;

        foreach (Node node in spatial.GetChildren())
        {
            Type   type = node.GetType();
            string name = node.Name;

            if (type == typeof(CSGSphere) && name.StartsWith("Sphere"))
            {
                spheres.Add(node as CSGSphere);
            }
            else if (type == typeof(CSGBox) && name.Equals("Cube"))
            {
                cube = node as CSGBox;
            }
            else if (type == typeof(ImmediateGeometry) && name.Equals("LineRenderer"))
            {
                lineRenderer = node as ImmediateGeometry;
            }
        }

        if (spheres.Count < 2)
        {
            throw new NullReferenceException("Failed to find at least two Spheres");
        }

        if (cube is null)
        {
            throw new NullReferenceException("Failed to find Cube");
        }

        if (lineRenderer is null)
        {
            throw new NullReferenceException("Failed to find LineRenderer");
        }

        List <Vector3> sphereOrigins = spheres.Select(sphere => sphere.Transform.origin).ToList();

        if (doLoop)
        {
            sphereOrigins.Add(sphereOrigins[0]);
        }

        points = sphereOrigins.ToArray();

        lineRenderer.Set("globalCoords", false);
        lineRenderer.Set("points", points);
    }
コード例 #6
0
    private void CreateDesiredPositionLine()
    {
        var line = new ImmediateGeometry();

        // line.SetColor(new Color(1,0,0,1)); // This doesn't seem to work
        line.SetName("desiredPositionLine");
        line.SetVisible(false);

        this.AddChild(line);
    }
コード例 #7
0
 public override void _Ready()
 {
     //Need to make a shader specifically for this so we don't need to duplicate the materials each time as it causes compiling lag when playing
     particles = GetChild <Particles>(2);
     UpdateColor();
     if (Engine.EditorHint)
     {
         tragectory = (ImmediateGeometry)GetTree().GetNodesInGroup("Lines")[0];
     }
 }
コード例 #8
0
    // core logic
    public override void _Ready()
    {
        mini_gui         = GetNode <Control>("bot_GUI");
        mini_gui.Visible = false;

        text = GetNode <Label>("bot_GUI/box_text");

        nav   = GetTree().Root.GetNode <Navigation>("Spatial/Navigation");
        debug = GetNode <ImmediateGeometry>("debug_line");
        RemoveChild(debug);
        GetTree().Root.CallDeferred("add_child", debug);

        goals = GetTree().Root.GetNode <Spatial>("Spatial/goals");

        target_point = Translation;
        rng          = new Random();
    }
コード例 #9
0
    public void LoadReference()
    {
        Scene  = GetTree().CurrentScene;
        Camera = (Camera)Scene.GetNode("CameraInGame");

        ChunkManager.Camera = Camera;

        if (m_Debug)
        {
            UI          = (Control)Scene.GetNode("DEBUG_UI/HBoxContainer");
            FPS         = (Label)UI.GetNode("fps");
            LoadedCount = (Label)UI.GetNode("loaded");
            x           = (Label)UI.GetNode("x");
            y           = (Label)UI.GetNode("y");
            z           = (Label)UI.GetNode("z");
        }

        debugCursor = Scene.GetNode("BlockOutline") as ImmediateGeometry;
    }
コード例 #10
0
        private void DrawAxis()
        {
            ImmediateGeometry xAxis = GetNode <ImmediateGeometry>("xAxis");
            ImmediateGeometry yAxis = GetNode <ImmediateGeometry>("yAxis");
            ImmediateGeometry zAxis = GetNode <ImmediateGeometry>("zAxis");

            xAxis.Begin(Mesh.PrimitiveType.LineStrip);
            xAxis.AddVertex(Vector3.Zero);
            xAxis.AddVertex(new Vector3(100, 0, 0));
            xAxis.End();

            yAxis.Begin(Mesh.PrimitiveType.LineStrip);
            yAxis.AddVertex(Vector3.Zero);
            yAxis.AddVertex(new Vector3(0, 100, 0));
            yAxis.End();

            zAxis.Begin(Mesh.PrimitiveType.LineStrip);
            zAxis.AddVertex(Vector3.Zero);
            zAxis.AddVertex(new Vector3(0, 0, 100));
            zAxis.End();
        }
コード例 #11
0
        protected override void _DebugDraw(ImmediateGeometry ig)
        {
            if (Owner != null)
            {
                ig.Clear();
                ig.Begin(Mesh.PrimitiveType.LineStrip);
                ig.SetColor(new Color(1, 0, 0));
                if (!ig.IsSetAsToplevel())
                {
                    ig.SetAsToplevel(true);
                }
                ig.SetTranslation(new Vector3(0, 0, 0));
                ig.AddVertex(Owner.Translation);

                foreach (var p in way_points)
                {
                    ig.AddVertex(p);
                }
                ig.End();
            }
        }
コード例 #12
0
        public LineRenderer1(Node parent, Camera camera, int cornerSmooth, int jointSmooth, Shader shader)
        {
            material = new ShaderMaterial();
            material.SetShader(shader != null ? shader : ResourceLoader.Load("res://src/Common/Utils/Shaders/default.shader") as Shader);

            geometry = new ImmediateGeometry();
            geometry.SetCastShadowsSetting(GeometryInstance.ShadowCastingSetting.DoubleSided);
            geometry.SetMaterialOverride(material);
            parent.AddChild(geometry);

            this.camera       = camera;
            this.cornerSmooth = (cornerSmooth / 2);
            this.jointSmooth  = jointSmooth;

            Last      = new Vector3[2];
            Up        = new Vector3[4];
            Low       = new Vector3[4];
            Variables = new Vector3[6];
            Crossed   = new bool[2];
            Score     = new float[2];
            Segments  = new Vector3[2];

            startThickness = endThickness = 0.1f;
        }
コード例 #13
0
    private void LoadWAD(string WADPath, string LevelName)
    {
        byte[] buffer;
        int    i;

        GD.Print($"Opening {WADPath}...");

        File file = new File();

        file.Open(WADPath, File.ModeFlags.Read);
        if (file.Open(WADPath, File.ModeFlags.Read) != Godot.Error.Ok)
        {
            GD.Print($"Failed to open WAD file {WADPath}");
            return;
        }

        if (printDebugInfo)
        {
            GD.Print("READING HEADER...");
        }

        Header header = new Header();

        header.Type      = Decode32AsString(file);
        header.LumpNum   = file.Get32();
        header.DirOffset = file.Get32();

        GD.Print($"{this.WADPath} is {header.Type}");

        if (printDebugInfo)
        {
            GD.Print("READING LUMPS");
        }

        Lump lumpMapname    = new Lump();
        Lump lumpThings     = new Lump();
        Lump lumpLinedefs   = new Lump();
        Lump lumpSidedefs   = new Lump();
        Lump lumpVertexes   = new Lump();
        Lump lumpSegs       = new Lump();
        Lump lumpSubsectors = new Lump();
        Lump lumpNodes      = new Lump();
        Lump lumpSectors    = new Lump();
        Lump lumpReject     = new Lump();
        Lump lumpBlockmap   = new Lump();

        bool first      = true;
        bool breakAfter = false;

        file.Seek(header.DirOffset);
        for (int j = 0; j < header.LumpNum; j++)
        {
            Lump lump = ReadLump(file);
            if (first)
            {
                lumpMapname = lump;
                first       = false;
            }

            switch (lump.Name)
            {
            case "THINGS":
                lumpThings = lump;
                break;

            case "LINEDEFS":
                lumpLinedefs = lump;
                break;

            case "SIDEDEFS":
                lumpSidedefs = lump;
                break;

            case "VERTEXES":
                lumpVertexes = lump;
                break;

            case "SEGS":
                lumpSegs = lump;
                break;

            case "SSECTORS":
                lumpSubsectors = lump;
                break;

            case "NODES":
                lumpNodes = lump;
                break;

            case "SECTORS":
                lumpSectors = lump;
                break;

            case "REJECT":
                lumpReject = lump;
                break;

            case "BLOCKMAP":
                lumpBlockmap = lump;
                if (breakAfter)
                {
                    break;
                }

                break;

            default:
                if (lump.Name == levelName)
                {
                    breakAfter = true;
                }

                break;
            }
        }

        if (printDebugInfo)
        {
            GD.Print($"Internal map name: {lumpMapname.Name}");
        }

        if (printDebugInfo)
        {
            GD.Print($"READING THINGS...");
        }

        file.Seek(lumpThings.Offset);

        buffer = file.GetBuffer((int)lumpThings.Size);
        Thing[] things = new Thing[lumpThings.Size];
        i = 0;
        while (i < buffer.Length)
        {
            Thing thing = new Thing();
            thing.X       = ToShort(buffer[i], buffer[i + 1]);
            thing.Y       = ToShort(buffer[i + 2], buffer[i + 3]);
            thing.Angle   = ToShort(buffer[i + 4], buffer[i + 5]);
            thing.Type    = ToShort(buffer[i + 6], buffer[i + 7]);
            thing.Options = ToShort(buffer[i + 8], buffer[i + 9]);
            things.Append(thing);
            i += 10;
        }

        if (printDebugInfo)
        {
            GD.Print("READING LINEDEFS...");
        }

        file.Seek(lumpLinedefs.Offset);
        buffer = file.GetBuffer((int)lumpLinedefs.Size);
        Linedef[] linedefs = new Linedef[lumpLinedefs.Size];
        i = 0;
        int k = 0;

        while (i < buffer.Length)
        {
            Linedef linedef = new Linedef();
            linedef.StartVertex  = ToShort(buffer[i], buffer[i + 1]);
            linedef.EndVertex    = ToShort(buffer[i + 2], buffer[i + 3]);
            linedef.Flags        = ToShort(buffer[i + 4], buffer[i + 5]);
            linedef.Type         = ToShort(buffer[i + 6], buffer[i + 7]);
            linedef.Trigger      = ToShort(buffer[i + 8], buffer[i + 9]);
            linedef.RightSidedef = ToShort(buffer[i + 10], buffer[i + 11]);
            linedef.LeftSidedef  = ToShort(buffer[i + 12], buffer[i + 13]);
            //linedefs.Append(linedef);
            linedefs[k++] = linedef;
            i            += 14;
        }

        if (printDebugInfo)
        {
            GD.Print("READING SIDEDEFS...");
        }

        file.Seek(lumpSidedefs.Offset);
        buffer = file.GetBuffer((int)lumpSidedefs.Size);
        Sidedef[] sieddefs = new Sidedef[lumpSidedefs.Size];
        i = 0;
        while (i < buffer.Length)
        {
            Sidedef sidedef = new Sidedef();
            sidedef.XOffset      = ToShort(buffer[i], buffer[i + 1]);
            sidedef.YOffset      = ToShort(buffer[i + 2], buffer[i + 3]);
            sidedef.UpperTexture = Combine8BytesToString(buffer[i + 4], buffer[i + 5], buffer[i + 6], buffer[i + 7],
                                                         buffer[i + 8], buffer[i + 9], buffer[i + 10], buffer[i + 11]);
            sidedef.LowerTexture = Combine8BytesToString(buffer[i + 12], buffer[i + 13], buffer[i + 14], buffer[i + 15],
                                                         buffer[i + 16], buffer[i + 17], buffer[i + 18], buffer[i + 19]);
            sidedef.MiddleTexture = Combine8BytesToString(buffer[i + 20], buffer[i + 21], buffer[i + 22],
                                                          buffer[i + 23], buffer[i + 24], buffer[i + 25], buffer[i + 26], buffer[i + 27]);
            sidedef.Sector = ToShort(buffer[i + 28], buffer[i + 29]);
            sieddefs.Append(sidedef);
            i += 30;
        }

        if (printDebugInfo)
        {
            GD.Print("READING VERTEXES...");
        }

        file.Seek(lumpVertexes.Offset);
        buffer = buffer = file.GetBuffer((int)lumpVertexes.Size);
        Vertex[] vertexes = new Vertex[lumpVertexes.Size];
        i = 0;
        k = 0;
        while (i < buffer.Length)
        {
            float  x      = ToShort(buffer[i], buffer[i + 1]) * scale;
            float  y      = ToShort(buffer[i + 2], buffer[i + 3]) * scale;
            Vertex vertex = new Vertex();
            vertex.X    = x;
            vertex.Y    = y;
            vertexes[k] = vertex;
            k          += 1;
            i          += 4;
        }

        if (printDebugInfo)
        {
            GD.Print("READING SUB-SECTORS...");
        }

        file.Seek(lumpSubsectors.Offset);
        buffer = buffer = file.GetBuffer((int)lumpSubsectors.Size);
        SubSector[] subSectors = new SubSector[lumpSubsectors.Size];
        i = 0;
        while (i < buffer.Length)
        {
            SubSector subSector = new SubSector();
            subSector.SegCount = ToShort(buffer[i], buffer[i + 1]);
            subSector.SegNum   = ToShort(buffer[i + 2], buffer[i + 3]);
            subSectors.Append(subSector);
            i += 4;
        }

        if (printDebugInfo)
        {
            GD.Print("READING NODES...");
        }

        file.Seek(lumpNodes.Offset);
        buffer = buffer = file.GetBuffer((int)lumpNodes.Size);
        Node[] nodes = new Node[lumpNodes.Size];
        i = 0;
        while (i < buffer.Length)
        {
            Node node = new Node();
            node.X           = ToShort(buffer[i], buffer[i + 1]);
            node.Y           = ToShort(buffer[i + 2], buffer[i + 3]);
            node.DX          = ToShort(buffer[i + 4], buffer[i + 5]);
            node.DY          = ToShort(buffer[i + 6], buffer[i + 7]);
            node.YUpperRight = ToShort(buffer[i + 8], buffer[i + 9]);
            node.YLowerRight = ToShort(buffer[i + 10], buffer[i + 11]);
            node.XLowerRight = ToShort(buffer[i + 12], buffer[i + 13]);
            node.XUpperRight = ToShort(buffer[i + 14], buffer[i + 15]);
            node.YUpperLeft  = ToShort(buffer[i + 16], buffer[i + 17]);
            node.YLowerLeft  = ToShort(buffer[i + 18], buffer[i + 19]);
            node.XLowerLeft  = ToShort(buffer[i + 20], buffer[i + 20]);
            node.XUpperLeft  = ToShort(buffer[i + 22], buffer[i + 23]);
            node.NodeRight   = ToShort(buffer[i + 24], buffer[i + 25]);
            node.NodeLeft    = ToShort(buffer[i + 26], buffer[i + 27]);
            i += 28;
        }

        if (printDebugInfo)
        {
            GD.Print("READING SECTORS...");
        }

        file.Seek(lumpSectors.Offset);
        buffer = buffer = file.GetBuffer((int)lumpSectors.Size);
        Sector[] sectors = new Sector[lumpSectors.Size];
        i = 0;
        while (i < buffer.Length)
        {
            Sector sector = new Sector();
            sector.FloorHeight  = ToShort(buffer[i], buffer[i + 1]);
            sector.FloorHeight  = ToShort(buffer[i + 1], buffer[i + 3]);
            sector.FloorTexture = Combine8BytesToString(buffer[i + 4], buffer[i + 5], buffer[i + 6], buffer[i + 7],
                                                        buffer[i + 8], buffer[i + 9], buffer[i + 10], buffer[i + 11]);
            sector.CeilTexture = Combine8BytesToString(buffer[i + 12], buffer[i + 13], buffer[i + 14], buffer[i + 15],
                                                       buffer[i + 16], buffer[i + 17], buffer[i + 18], buffer[i + 19]);
            sector.LightLevel = ToShort(buffer[i + 20], buffer[i + 21]);
            sector.Special    = ToShort(buffer[i + 22], buffer[i + 23]);
            sector.Tag        = ToShort(buffer[i + 24], buffer[i + 25]);
            sectors.Append(sector);
            i += 26;
        }

        file.Close();

        if (printDebugInfo)
        {
            GD.Print("BUILDING GEOMETRY");
        }

        foreach (var ld in linedefs)
        {
            if (ld == null)
            {
                continue;
            }

            Vertex            vertex1  = vertexes[ld.StartVertex];
            Vertex            vertex2  = vertexes[ld.EndVertex];
            ImmediateGeometry geometry = new ImmediateGeometry();
            geometry.MaterialOverride = _surfaceMaterial;
            geometry.Begin(Mesh.PrimitiveType.Lines);
            if (ld.Type != 0)
            {
                geometry.SetColor(new Color(1, 1, 0));
            }
            else
            {
                geometry.SetColor(new Color(1, 0, 0));
            }

            geometry.AddVertex(new Vector3(vertex1.X, 0, vertex1.Y));
            geometry.AddVertex(new Vector3(vertex2.X, 0, vertex2.Y));
            geometry.End();
            AddChild(geometry);
        }
    }
コード例 #14
0
 protected override void _DebugDraw(ImmediateGeometry ig)
 {
 }
コード例 #15
0
 // Called when the node enters the scene tree for the first time.
 public override void _Ready()
 {
     geom = GetNode <ImmediateGeometry>("ImmediateGeometry");
     geom.AddVertex(StartPosition);
     geom.AddVertex(EndPosition);
 }
コード例 #16
0
 protected abstract void _DebugDraw(ImmediateGeometry ig);
コード例 #17
0
    public override void _Ready()
    {
        GD.Print("This is the same as overriding _Ready()... 2");

        Account account = new Account
        {
            Email       = "*****@*****.**",
            Active      = true,
            CreatedDate = new DateTime(2013, 1, 20, 0, 0, 0, DateTimeKind.Utc),
            Roles       = new List <string>
            {
                "User",
                "Admin"
            }
        };

        string json = JsonConvert.SerializeObject(account, Formatting.Indented);

        // {
        //   "Email": "*****@*****.**",
        //   "Active": true,
        //   "CreatedDate": "2013-01-20T00:00:00Z",
        //   "Roles": [
        //     "User",
        //     "Admin"
        //   ]
        // }

        GD.Print(json);

        /*var foo = new Triangle3(
         *  new SharpNav.Vector3(0, 0, 0),
         *  new SharpNav.Vector3(0, 1f, 0),
         *  new SharpNav.Vector3(0, 1f, 1f)
         * );*/

        this.mainCamera        = (PlayerCamera)GetNode("Navigation/PlayerCharacter/Camera");
        this.playerCharacter   = (KinematicBody)GetNode("Navigation/PlayerCharacter");
        this.navigation        = new App.Navigation();
        this.immediateGeometry = (ImmediateGeometry)GetNode("ImmediateGeometry");
        this.inventory         = (Control)GetNode("Inventory");
        this.characterScreen   = (Control)GetNode("CharacterScreen");

        var map = (Spatial)GetNode("Navigation/map");

        if (map != null && this.navigation != null)
        {
            //this.generateNavigationMeshInstances(this.navigation, map.GetChildren());
            if (this.playerCharacter != null)
            {
                var closestPoint = this.navigation.GetClosestPoint(this.playerCharacter.Translation);
                closestPoint.y = (float)Math.Round(closestPoint.y);
                closestPoint.y = 0;
                // this.playerCharacter.Translation = closestPoint;
            }
        }

        if (map != null)
        {
            var dummyItemOnTheGround = new App.Inventory.InventoryItem((Texture)GD.Load("res://static/dummy-sword-inventory-1x2.png"), new Vector2(1, 2));
            var groundNode           = dummyItemOnTheGround.getGroundNode();
            groundNode.Translation = new Vector3(12f, -1f, -12f);
            map.AddChild(groundNode);
        }
    }
コード例 #18
0
 public override void _Ready()
 {
     LeftController  = GetNode <Controller>("LeftController");
     RightController = GetNode <Controller>("RightController");
     RibbonMesh      = GetNode <ImmediateGeometry>("RibbonMesh");
 }