Example #1
0
        public override void Render(Device dev, EditorCamera cam)
        {
            if (Act == 4 || Act == 5)
            {
                return;
            }
            float skyposY = Act == 6 ? -3000.0f : 0.0f;

            if (TimeOfDay == 0 && Act != 6)
            {
                RenderEggCarrierSkyClear(dev, cam);
            }
            else
            {
                RenderEggCarrierSkyRegular(dev, cam, skyposY);
                if (Act <= 2 || Act == 6)
                {
                    RenderEggCarrierSkyCloud(dev, cam, skyposY);
                }
            }
        }
Example #2
0
        public override List <RenderInfo> Render(SETItem item, Device dev, EditorCamera camera, MatrixStack transform)
        {
            List <RenderInfo> result = new List <RenderInfo>();

            transform.Push();
            transform.NJTranslate(item.Position);
            transform.Push();
            transform.NJRotateY(item.Rotation.Y);
            result.AddRange(model.DrawModelTree(dev.GetRenderState <FillMode>(RenderState.FillMode), transform, ObjectHelper.GetTextures("SUPI_SUPI"), meshes));
            if (item.Selected)
            {
                result.AddRange(model.DrawModelTreeInvert(transform, meshes));
            }
            transform.Pop();
            float sx = (item.Scale.X + 70) * 0.1f;

            transform.NJScale(sx, 0.02f, sx);
            result.AddRange(cylmdl.DrawModelTree(dev.GetRenderState <FillMode>(RenderState.FillMode), transform, null, cylmsh, boundsByMesh: true));
            transform.Pop();
            return(result);
        }
Example #3
0
        public override List <RenderInfo> Render(SETItem item, Device dev, EditorCamera camera, MatrixStack transform)
        {
            List <RenderInfo> result = new List <RenderInfo>();

            transform.Push();
            transform.NJTranslate(item.Position);
            int RotY = item.Rotation.Y + 34;

            if ((RotY + 24) != 0x4000)
            {
                transform.NJRotateY((RotY + 24) - 0x4000);
            }
            transform.NJScale(1.5f, 1.5f, 1.5f);
            result.AddRange(model.DrawModelTree(dev.GetRenderState <FillMode>(RenderState.FillMode), transform, ObjectHelper.GetTextures("OBJ_BEACH"), meshes));
            if (item.Selected)
            {
                result.AddRange(model.DrawModelTreeInvert(transform, meshes));
            }
            transform.Pop();
            return(result);
        }
        public override void Render(Device dev, EditorCamera cam)
        {
            if (texs_sora62 == null)
            {
                texs_sora62 = ObjectHelper.GetTextures("WINDY_BACK3", texlist_sora62, dev);
            }
            if (texs_sora96 == null)
            {
                texs_sora96 = ObjectHelper.GetTextures("WINDY_BACK3", texlist_sora96, dev);
            }
            List <RenderInfo> result    = new List <RenderInfo>();
            MatrixStack       transform = new MatrixStack();

            transform.Push();
            transform.NJTranslate(cam.Position);
            result.AddRange(models[0].DrawModelTree(dev.GetRenderState <FillMode>(RenderState.FillMode), transform, texs_sora96, meshes[0], EditorOptions.IgnoreMaterialColors, EditorOptions.OverrideLighting));
            result.AddRange(models[1].DrawModelTree(dev.GetRenderState <FillMode>(RenderState.FillMode), transform, texs_sora62, meshes[1], EditorOptions.IgnoreMaterialColors, EditorOptions.OverrideLighting));
            result.AddRange(models[2].DrawModelTree(dev.GetRenderState <FillMode>(RenderState.FillMode), transform, texs_sora62, meshes[2], EditorOptions.IgnoreMaterialColors, EditorOptions.OverrideLighting));
            transform.Pop();
            RenderInfo.Draw(result, dev, cam);
        }
        public override void Render(Device dev, EditorCamera cam)
        {
            if (texs_main == null)
            {
                texs_main = ObjectHelper.GetTextures("WINDY_BACK2", texlist_main, dev);
            }
            if (texs_floating == null)
            {
                texs_floating = ObjectHelper.GetTextures("WINDY_BACK2", texlist_floating, dev);
            }
            dev.SetRenderState(RenderState.ZWriteEnable, true);
            List <RenderInfo> result    = new List <RenderInfo>();
            MatrixStack       transform = new MatrixStack();

            transform.Push();
            transform.NJTranslate(650, -360, -200);
            result.AddRange(models[0].DrawModelTree(dev.GetRenderState <FillMode>(RenderState.FillMode), transform, texs_main, meshes[0], EditorOptions.IgnoreMaterialColors, EditorOptions.OverrideLighting));
            result.AddRange(models[1].DrawModelTree(dev.GetRenderState <FillMode>(RenderState.FillMode), transform, texs_floating, meshes[1], EditorOptions.IgnoreMaterialColors, EditorOptions.OverrideLighting));
            result.AddRange(models[2].DrawModelTree(dev.GetRenderState <FillMode>(RenderState.FillMode), transform, texs_floating, meshes[1], EditorOptions.IgnoreMaterialColors, EditorOptions.OverrideLighting));
            RenderInfo.Draw(result, dev, cam);
        }
Example #6
0
        public override List <RenderInfo> Render(SETItem item, Device dev, EditorCamera camera, MatrixStack transform)
        {
            List <RenderInfo> result = new List <RenderInfo>();

            transform.Push();
            transform.NJTranslate(item.Position);
            transform.Push();
            transform.NJScale(4.5f, 4.5f, 4.5f);
            result.AddRange(sphere.DrawModelTree(dev.GetRenderState <FillMode>(RenderState.FillMode), transform, null, spheremsh, boundsByMesh: true));
            if (item.Selected)
            {
                result.AddRange(sphere.DrawModelTreeInvert(transform, spheremsh, boundsByMesh: true));
            }
            transform.Pop();
            switch (type)
            {
            case WhaleDefType.AOSummon:
                transform.NJTranslate(item.Scale);
                transform.NJRotateY(item.Rotation.Y);
                break;

            case WhaleDefType.AOKill:
                transform.NJRotateZ(0x8000);
                break;

            case WhaleDefType.POSummon:
                transform.NJTranslate(item.Scale);
                transform.NJRotateX(0x2000);
                transform.NJRotateY(item.Rotation.Y);
                break;
            }
            transform.NJScale(0.4f, 0.4f, 0.4f);
            result.AddRange(whale.DrawModelTree(dev.GetRenderState <FillMode>(RenderState.FillMode), transform, ObjectHelper.GetTextures("OBJ_BEACH"), whalemsh, EditorOptions.IgnoreMaterialColors, EditorOptions.OverrideLighting));
            if (item.Selected)
            {
                result.AddRange(whale.DrawModelTreeInvert(transform, whalemsh));
            }
            transform.Pop();
            return(result);
        }
Example #7
0
        public override void Render(Device dev, EditorCamera cam)
        {
            if (Act == 1 && cam.Position.Y <= -10400.0f)
            {
                return;
            }
            List <RenderInfo> result    = new List <RenderInfo>();
            MatrixStack       transform = new MatrixStack();

            transform.Push();
            transform.NJTranslate(cam.Position.X, cam.Position.Y, cam.Position.Z);
            transform.NJScale(Skybox_Scale);
            switch (Act)
            {
            case 0:
            default:
                textures[0] = ObjectHelper.GetTextures("BG_HIGHWAY");
                textures[1] = ObjectHelper.GetTextures("BG_HIGHWAY01");
                break;

            case 1:
                textures[0] = ObjectHelper.GetTextures("BG_HIGHWAY");
                textures[1] = ObjectHelper.GetTextures("BG_HIGHWAY02");
                break;

            case 2:
                textures[0] = ObjectHelper.GetTextures("BG_HIGHWAY03");
                textures[1] = null;
                break;
            }
            for (int i = 0; i < 2; i++)
            {
                if (models[i] != null)
                {
                    result.AddRange(models[i].DrawModelTree(dev.GetRenderState <FillMode>(RenderState.FillMode), transform, textures[i], meshes[i], EditorOptions.IgnoreMaterialColors, EditorOptions.OverrideLighting));
                }
            }
            transform.Pop();
            RenderInfo.Draw(result, dev, cam);
        }
Example #8
0
        public override void RenderLate(Device dev, EditorCamera cam)
        {
            dev.SetRenderState(RenderState.ZWriteEnable, true);
            texs_ocean = ObjectHelper.GetTextures("E101R_TIKEI");
            List <RenderInfo> result3   = new List <RenderInfo>();
            MatrixStack       transform = new MatrixStack();

            dev.SetRenderState(RenderState.ZWriteEnable, true);
            for (int o = 0; o < SADXOceanData.WaterSurfaces.Count; o++)
            {
                SADXOceanData.WaterSurfaceData water = SADXOceanData.WaterSurfaces[o];
                transform.Push();
                transform.NJTranslate(cam.Position.X, 0, cam.Position.Z);
                transform.NJScale(2.0f, 1.0f, 2.0f);
                transform.NJTranslate(water.Center);
                transform.NJTranslate(0, -40, 0);
                transform.Push();
                for (int i = 0; i < water.WrapX; i++)
                {
                    for (int z = 0; z < water.WrapZ; z++)
                    {
                        result3.Add(new RenderInfo(water.Meshes[z], 0, transform.Top, SADXOceanData.Material, texs_ocean?[water.TextureWaves], dev.GetRenderState <FillMode>(RenderState.FillMode), water.Bounds));
                    }
                    transform.NJTranslate(water.WrapXZ, 0, 0);
                }
                transform.Pop();
                transform.Push();
                for (int i = 0; i < water.WrapX; i++)
                {
                    for (int z = 0; z < water.WrapZ; z++)
                    {
                        result3.Add(new RenderInfo(water.Meshes[z], 0, transform.Top, SADXOceanData.Material, texs_ocean?[water.TextureSea], dev.GetRenderState <FillMode>(RenderState.FillMode), water.Bounds));
                    }
                    transform.NJTranslate(water.WrapXZ, 0, 0);
                }
                transform.Pop();
                transform.Pop();
            }
            RenderInfo.Draw(result3, dev, cam);
        }
Example #9
0
        public override List <RenderInfo> Render(SETItem item, Device dev, EditorCamera camera, MatrixStack transform)
        {
            List <RenderInfo> result = new List <RenderInfo>();

            transform.Push();
            transform.NJTranslate(item.Position);
            transform.NJRotateY(item.Rotation.Y);

            float X, Y;

            X = (item.Scale.X + 10) * 0.1f;
            Y = (item.Scale.Y + 10) * 0.1f;
            transform.NJScale(X, Y, X);

            result.AddRange(model.DrawModelTree(dev.GetRenderState <FillMode>(RenderState.FillMode), transform, null, meshes, boundsByMesh: true));
            if (item.Selected)
            {
                result.AddRange(model.DrawModelTreeInvert(transform, meshes, boundsByMesh: true));
            }
            transform.Pop();
            return(result);
        }
Example #10
0
        /// <summary>
        /// Gets an adjusted scale value based on mouse input.
        /// </summary>
        /// <param name="input">Mouse Delta.</param>
        /// <param name="sourceScale">Input scale value</param>
        /// <param name="cam">Reference camera. Provides extra context for Mouse Delta.</param>
        /// <param name="clamp">If TRUE, minScale is used as the lowest value that the scale can be. Clamp is applied to all dimensions of the vector.</param>
        /// <param name="minScale">Minimum acceptable scale values.</param>
        /// /// <param name="multiplier">Scale multiplier to make scaling faster or slower.</param>
        /// <returns></returns>
        public Vertex Scale(Vector2 input, Vertex sourceScale, EditorCamera cam, bool clamp, float minScale, float multiplier)
        {
            switch (selectedAxes)
            {
            case GizmoSelectedAxes.X_AXIS:
                return(new Vertex(MathHelper.Clamp(sourceScale.X + input.X * multiplier, (clamp) ? minScale : float.NegativeInfinity, float.PositiveInfinity),
                                  MathHelper.Clamp(sourceScale.Y, (clamp) ? minScale : float.NegativeInfinity, float.PositiveInfinity),
                                  MathHelper.Clamp(sourceScale.Z, (clamp) ? minScale : float.NegativeInfinity, float.PositiveInfinity)));

            case GizmoSelectedAxes.Y_AXIS:
                return(new Vertex(MathHelper.Clamp(sourceScale.X, (clamp) ? minScale : float.NegativeInfinity, float.PositiveInfinity),
                                  MathHelper.Clamp(sourceScale.Y + input.Y * multiplier, (clamp) ? minScale : float.NegativeInfinity, float.PositiveInfinity),
                                  MathHelper.Clamp(sourceScale.Z, (clamp) ? minScale : float.NegativeInfinity, float.PositiveInfinity)));

            case GizmoSelectedAxes.Z_AXIS:
                return(new Vertex(MathHelper.Clamp(sourceScale.X, (clamp) ? minScale : float.NegativeInfinity, float.PositiveInfinity),
                                  MathHelper.Clamp(sourceScale.Y, (clamp) ? minScale : float.NegativeInfinity, float.PositiveInfinity),
                                  MathHelper.Clamp(sourceScale.Z + input.X * multiplier, (clamp) ? minScale : float.NegativeInfinity, float.PositiveInfinity)));
            }

            return(sourceScale);
        }
Example #11
0
    public void GetNodes()
    {
        if (!GetTree().GetRoot().HasNode("Editor"))
        {
            EditorMode = false;
            return;
        }

        // Making sure that this code doesn't get executed more than once.
        EditorMode = true;

        // Getting the viewport first because thats where we are going to palce the loaded level.
        // Also where the camera is located.
        Viewport = GetTree().GetRoot().GetNode("Editor/ViewportContainer/Viewport") as Viewport;
        Camera   = GetTree().GetRoot().GetNode("Editor/ViewportContainer/Viewport/Camera") as EditorCamera;

        LoadLevel("res://editorLevel.tscn"); // Loading the level scene.

        // Getting other refs.
        Entities     = GetTree().GetRoot().GetNode("Editor/ViewportContainer/Viewport/CurrentLevel/Layers/Entities") as YSort;
        CurrentLevel = GetTree().GetRoot().GetNode("Editor/ViewportContainer/Viewport/CurrentLevel") as Level;
    }
Example #12
0
        public override List <RenderInfo> Render(SETItem item, Device dev, EditorCamera camera, MatrixStack transform)
        {
            List <RenderInfo> result = new List <RenderInfo>();

            transform.Push();
            transform.NJTranslate(item.Position);
            transform.NJRotateY(item.Rotation.Y - 0x5772);
            transform.NJScale(item.Scale.X, item.Scale.Y, item.Scale.Z);

            float largestScale = item.Scale.X;

            if (item.Scale.Y > largestScale)
            {
                largestScale = item.Scale.Y;
            }
            if (item.Scale.Z > largestScale)
            {
                largestScale = item.Scale.Z;
            }

            BoundingSphere boxSphere = new BoundingSphere()
            {
                Center = new Vertex(item.Position.X, item.Position.Y, item.Position.Z), Radius = (1.5f * largestScale)
            };

            RenderInfo outputInfo = new RenderInfo(mesh, 0, transform.Top, material, null, FillMode.Solid, boxSphere);

            result.Add(outputInfo);

            if (item.Selected)
            {
                RenderInfo highlightInfo = new RenderInfo(mesh, 0, transform.Top, material, null, FillMode.Wireframe, boxSphere);
                result.Add(highlightInfo);
            }

            transform.Pop();
            return(result);
        }
Example #13
0
        public override List <RenderInfo> Render(Device dev, EditorCamera camera, MatrixStack transform)
        {
            if (!camera.SphereInFrustum(COL.Bounds))
            {
                return(EmptyRenderInfo);
            }

            List <RenderInfo> result = new List <RenderInfo>();

            if (!string.IsNullOrEmpty(LevelData.leveltexs))
            {
                result.AddRange(COL.Model.DrawModel(dev, transform, LevelData.Textures[LevelData.leveltexs], Mesh, Visible));
            }
            else
            {
                result.AddRange(COL.Model.DrawModel(dev, transform, null, Mesh, Visible));
            }
            if (Selected)
            {
                result.AddRange(COL.Model.DrawModelInvert(transform, Mesh, Visible));
            }
            return(result);
        }
Example #14
0
        public override List <RenderInfo> Render(Device dev, EditorCamera camera, MatrixStack transform)
        {
            if (!camera.SphereInFrustum(COL.Bounds))
            {
                return(EmptyRenderInfo);
            }

            List <RenderInfo> result = new List <RenderInfo>();

            if (!string.IsNullOrEmpty(LevelData.leveltexs) && LevelData.Textures.Count > 0)
            {
                result.AddRange(COL.Model.DrawModel(dev.GetRenderState <FillMode>(RenderState.FillMode), transform, LevelData.Textures[LevelData.leveltexs], Mesh, Visible, EditorOptions.IgnoreMaterialColors, EditorOptions.OverrideLighting));
            }
            else
            {
                result.AddRange(COL.Model.DrawModel(dev.GetRenderState <FillMode>(RenderState.FillMode), transform, null, Mesh, Visible, EditorOptions.IgnoreMaterialColors, EditorOptions.OverrideLighting));
            }
            if (Selected)
            {
                result.AddRange(COL.Model.DrawModelInvert(transform, Mesh, Visible));
            }
            return(result);
        }
Example #15
0
        public override List <RenderInfo> Render(Device dev, EditorCamera camera, MatrixStack transform)
        {
            float dist = Direct3D.Extensions.Distance(camera.Position, Position.ToVector3());

            if (dist > camera.DrawDistance)
            {
                return(EmptyRenderInfo);
            }

            List <RenderInfo> result = new List <RenderInfo>();

            transform.Push();
            transform.NJTranslate(0, offset, 0);
            transform.NJTranslate(Position);
            transform.NJRotateY(YRotation);
            result.AddRange(Model.DrawModelTree(dev.GetRenderState <FillMode>(RenderState.FillMode), transform, LevelData.Textures[texture], Meshes));
            if (Selected)
            {
                result.AddRange(Model.DrawModelTreeInvert(transform, Meshes));
            }
            transform.Pop();
            return(result);
        }
Example #16
0
        public override List <RenderInfo> Render(SETItem item, Device dev, EditorCamera camera, MatrixStack transform)
        {
            List <RenderInfo> result = new List <RenderInfo>();

            transform.Push();
            transform.NJTranslate(xpos ?? item.Position.X, ypos ?? item.Position.Y, zpos ?? item.Position.Z);
            transform.NJRotateObject(xrot ?? item.Rotation.X, yrot ?? item.Rotation.Y, zrot ?? item.Rotation.Z);
            if (model == null)
            {
                result.AddRange(ObjectHelper.RenderSprite(dev, transform, null, item.Position.ToVector3(), item.Selected));
            }
            else
            {
                transform.NJScale(xscl ?? item.Scale.X, yscl ?? item.Scale.Y, zscl ?? item.Scale.Z);
                result.AddRange(model.DrawModelTree(dev.GetRenderState <FillMode>(RenderState.FillMode), transform, ObjectHelper.GetTextures(texture), meshes));
                if (item.Selected)
                {
                    result.AddRange(model.DrawModelTreeInvert(transform, meshes));
                }
            }
            transform.Pop();
            return(result);
        }
Example #17
0
        public override List <RenderInfo> Render(SETItem item, Device dev, EditorCamera camera, MatrixStack transform)
        {
            List <RenderInfo> result = new List <RenderInfo>();

            transform.Push();
            transform.NJTranslate(item.Position);
            transform.NJRotateY(item.Rotation.Y);
            float ScaleX = item.Scale.X;
            float ScaleY = item.Scale.Y;

            if (ScaleX < ScaleY)
            {
                ScaleX = ScaleY;
            }
            transform.NJScale(ScaleX, ScaleY, item.Scale.Z);
            result.AddRange(model.DrawModelTree(dev.GetRenderState <FillMode>(RenderState.FillMode), transform, ObjectHelper.GetTextures("OBJ_BEACH"), meshes));
            if (item.Selected)
            {
                result.AddRange(model.DrawModelTreeInvert(transform, meshes));
            }
            transform.Pop();
            return(result);
        }
Example #18
0
        public override List <RenderInfo> Render(SETItem item, Device dev, EditorCamera camera, MatrixStack transform)
        {
            List <RenderInfo> result = new List <RenderInfo>();

            v5 = Math.Min(Math.Max((int)item.Scale.Z, -1), 0);
            if (v5 < 0)
            {
                transform.Push();
                transform.NJTranslate(item.Position);
                transform.NJRotateY(item.Rotation.Y);
                float Scale = item.Scale.X + 1.0f;
                transform.NJScale(Scale, Scale, Scale);
                result.AddRange(modelB.DrawModelTree(dev.GetRenderState <FillMode>(RenderState.FillMode), transform, ObjectHelper.GetTextures("OBJ_WINDY"), meshesB));
                if (item.Selected)
                {
                    result.AddRange(modelB.DrawModelTreeInvert(transform, meshesB));
                }
                transform.Pop();
                return(result);
            }
            if (v5 >= 0)
            {
                transform.Push();
                transform.NJTranslate(item.Position);
                transform.NJRotateY(item.Rotation.Y);
                float Scale = item.Scale.X + 1.0f;
                transform.NJScale(Scale, Scale, Scale);
                result.AddRange(modelA.DrawModelTree(dev.GetRenderState <FillMode>(RenderState.FillMode), transform, ObjectHelper.GetTextures("OBJ_WINDY"), meshesA));
                if (item.Selected)
                {
                    result.AddRange(modelA.DrawModelTreeInvert(transform, meshesA));
                }
                transform.Pop();
                return(result);
            }
            return(result);
        }
Example #19
0
        public override void RenderLate(Device dev, EditorCamera cam)
        {
            List <RenderInfo> result3   = new List <RenderInfo>();
            MatrixStack       transform = new MatrixStack();

            dev.SetRenderState(RenderState.ZWriteEnable, false);
            Texture[] watertex = Act == 3 ? texs_advss03 : texs_advss04;
            for (int o = 0; o < SADXOceanData.WaterSurfaces.Count; o++)
            {
                SADXOceanData.WaterSurfaceData water = SADXOceanData.WaterSurfaces[o];
                transform.Push();
                transform.NJTranslate(water.Center);
                transform.Push();
                transform.NJTranslate(0, -1, 0);
                for (int i = 0; i < water.WrapX; i++)
                {
                    for (int z = 0; z < water.WrapZ; z++)
                    {
                        result3.Add(new RenderInfo(water.Meshes[z], 0, transform.Top, SADXOceanData.Material, watertex?[water.TextureWaves], dev.GetRenderState <FillMode>(RenderState.FillMode), water.Bounds));
                    }
                    transform.NJTranslate(water.WrapXZ, 0, 0);
                }
                transform.Pop();
                transform.Push();
                for (int i = 0; i < water.WrapX; i++)
                {
                    for (int z = 0; z < water.WrapZ; z++)
                    {
                        result3.Add(new RenderInfo(water.Meshes[z], 0, transform.Top, SADXOceanData.Material, watertex?[water.TextureSea], dev.GetRenderState <FillMode>(RenderState.FillMode), water.Bounds));
                    }
                    transform.NJTranslate(water.WrapXZ, 0, 0);
                }
                transform.Pop();
                transform.Pop();
            }
            RenderInfo.Draw(result3, dev, cam);
        }
Example #20
0
        public override void Render(Device dev, EditorCamera cam)
        {
            List <RenderInfo> result    = new List <RenderInfo>();
            MatrixStack       transform = new MatrixStack();

            // Sky
            transform.Push();
            transform.NJTranslate(cam.Position.X, 0, cam.Position.Z);
            transform.NJRotateY(0xE000);
            result.AddRange(model1.DrawModelTree(dev.GetRenderState <FillMode>(RenderState.FillMode), transform, ObjectHelper.GetTextures("CHAOS6_BG"), mesh1, EditorOptions.IgnoreMaterialColors, EditorOptions.OverrideLighting));
            transform.Pop();
            // Moving cloud
            transform.Push();
            dev.SetRenderState(RenderState.ZWriteEnable, true);
            dev.SetRenderState(RenderState.SourceBlend, Blend.SourceAlpha);
            dev.SetRenderState(RenderState.DestinationBlend, Blend.One);
            transform.NJTranslate(cam.Position.X, 2300.0f, cam.Position.Z);             // Absolutely wrong but accurate to SADX!
            transform.NJScale(3.0f, 1.0f, 3.0f);
            result.AddRange(model2.DrawModelTree(dev.GetRenderState <FillMode>(RenderState.FillMode), transform, ObjectHelper.GetTextures("CHAOS6_BG"), mesh2, EditorOptions.IgnoreMaterialColors, EditorOptions.OverrideLighting));
            dev.SetRenderState(RenderState.SourceBlend, Blend.SourceAlpha);
            dev.SetRenderState(RenderState.DestinationBlend, Blend.InverseSourceAlpha);
            transform.Pop();
            RenderInfo.Draw(result, dev, cam);
        }
Example #21
0
        public override List <RenderInfo> Render(SETItem item, Device dev, EditorCamera camera, MatrixStack transform)
        {
            List <RenderInfo> result = new List <RenderInfo>();

            transform.Push();
            transform.NJTranslate(item.Position);
            transform.NJRotateObject(item.Rotation);
            result.AddRange(model.DrawModelTree(dev, transform, ObjectHelper.GetTextures("OBJ_BEACH"), meshes));
            if (item.Selected)
            {
                result.AddRange(model.DrawModelTreeInvert(transform, meshes));
            }
            transform.Pop();
            transform.Push();
            transform.NJTranslate(item.Position);
            transform.NJRotateObject(item.Rotation);
            result.AddRange(model.Sibling.DrawModelTree(dev, transform, ObjectHelper.GetTextures("OBJ_BEACH"), meshes2));
            if (item.Selected)
            {
                result.AddRange(model.Sibling.DrawModelTreeInvert(transform, meshes2));
            }
            transform.Pop();
            return(result);
        }
Example #22
0
        public override List <RenderInfo> Render(SETItem item, Device dev, EditorCamera camera, MatrixStack transform)
        {
            List <RenderInfo> result = new List <RenderInfo>();

            transform.Push();
            transform.NJTranslate(item.Position);
            transform.NJRotateY(item.Rotation.Y);
            result.AddRange(model.DrawModelTree(dev.GetRenderState <FillMode>(RenderState.FillMode), transform, ObjectHelper.GetTextures("OBJ_BEACH"), meshes, EditorOptions.IgnoreMaterialColors, EditorOptions.OverrideLighting));
            if (item.Selected)
            {
                result.AddRange(model.DrawModelTreeInvert(transform, meshes));
            }
            transform.Pop();
            transform.Push();
            transform.NJTranslate(item.Position);
            transform.NJRotateY(item.Rotation.Y);
            result.AddRange(model.Sibling.DrawModelTree(dev.GetRenderState <FillMode>(RenderState.FillMode), transform, ObjectHelper.GetTextures("OBJ_BEACH"), meshes2, EditorOptions.IgnoreMaterialColors, EditorOptions.OverrideLighting));
            if (item.Selected)
            {
                result.AddRange(model.Sibling.DrawModelTreeInvert(transform, meshes2));
            }
            transform.Pop();
            return(result);
        }
Example #23
0
        public override List <RenderInfo> Render(SETItem item, Device dev, EditorCamera camera, MatrixStack transform)
        {
            List <RenderInfo> result = new List <RenderInfo>();

            transform.Push();
            transform.NJTranslate(item.Position);
            transform.NJRotateY(item.Rotation.Y);
            transform.TranslateLocal(0, 110f, 0);
            result.AddRange(arch.DrawModelTree(dev, transform, ObjectHelper.GetTextures("OBJ_BEACH"), archmsh));
            if (item.Selected)
            {
                result.AddRange(arch.DrawModelTreeInvert(transform, archmsh));
            }
            transform.Pop();
            transform.Push();
            transform.NJTranslate(item.Position);
            transform.NJRotateY(item.Rotation.Y);
            transform.TranslateLocal(0, 0, 73f);
            result.AddRange(side1.DrawModelTree(dev, transform, ObjectHelper.GetTextures("OBJ_BEACH"), side1msh));
            if (item.Selected)
            {
                result.AddRange(side1.DrawModelTreeInvert(transform, side1msh));
            }
            transform.Pop();
            transform.Push();
            transform.NJTranslate(item.Position);
            transform.NJRotateY(item.Rotation.Y);
            transform.TranslateLocal(0, 0, -57f);
            result.AddRange(side2.DrawModelTree(dev, transform, ObjectHelper.GetTextures("OBJ_BEACH"), side2msh));
            if (item.Selected)
            {
                result.AddRange(side2.DrawModelTreeInvert(transform, side2msh));
            }
            transform.Pop();
            return(result);
        }
Example #24
0
        public override List <RenderInfo> Render(SETItem item, Device dev, EditorCamera camera, MatrixStack transform)
        {
            List <RenderInfo> result = new List <RenderInfo>();

            transform.Push();
            transform.NJTranslate(item.Position);
            transform.NJRotateY(item.Rotation.Y);
            result.AddRange(ballmodel.DrawModelTree(dev.GetRenderState <FillMode>(RenderState.FillMode), transform, ObjectHelper.GetTextures("OBJ_REGULAR"), ballmeshes));
            if (item.Selected)
            {
                result.AddRange(ballmodel.DrawModelTreeInvert(transform, ballmeshes));
            }
            transform.Pop();
            double v24 = item.Scale.X * 0.05000000074505806;

            transform.Push();
            double v22 = item.Scale.X * 0.5 + item.Position.Y;

            transform.NJTranslate(item.Position.X, (float)v22, item.Position.Z);
            transform.NJScale(1.0f, (float)v24, 1.0f);
            result.AddRange(cylindermodel.DrawModelTree(dev.GetRenderState <FillMode>(RenderState.FillMode), transform, null, cylindermeshes, boundsByMesh: true));
            if (item.Selected)
            {
                result.AddRange(cylindermodel.DrawModelTreeInvert(transform, cylindermeshes, boundsByMesh: true));
            }
            transform.Pop();
            transform.Push();
            transform.NJTranslate(item.Position.X, item.Position.Y + item.Scale.Z, item.Position.Z);
            result.AddRange(spheremodel.DrawModelTree(dev.GetRenderState <FillMode>(RenderState.FillMode), transform, null, spheremeshes, boundsByMesh: true));
            if (item.Selected)
            {
                result.AddRange(spheremodel.DrawModelTreeInvert(transform, spheremeshes, boundsByMesh: true));
            }
            transform.Pop();
            return(result);
        }
Example #25
0
        public EditorOptionsEditor(EditorCamera camera, ActionKeyMapping[] actionKeyMappings_f, ActionKeyMapping[] defaultActionKeyMappings_f, bool setdist_enabled_a, bool leveldist_enabled_a)
        {
            InitializeComponent();
            this.camera                    = camera;
            drawDistSlider.Value           = (int)EditorOptions.RenderDrawDistance;
            levelDrawDistSlider.Value      = (int)EditorOptions.LevelDrawDistance;
            setDrawDistSlider.Value        = (int)EditorOptions.SetItemDrawDistance;
            fillModeDropDown.SelectedIndex = (int)EditorOptions.RenderFillMode - 1;
            cullModeDropdown.SelectedIndex = (int)EditorOptions.RenderCullMode - 1;
            if (setdist_enabled_a)
            {
                setDrawDistLabel.Enabled  = true;
                setDrawDistSlider.Enabled = true;
            }
            if (leveldist_enabled_a)
            {
                levelDrawDistLabel.Enabled  = true;
                levelDrawDistSlider.Enabled = true;
            }
            toolTip.SetToolTip(fullBrightCheck, "If the scene's lighting is making it hard to work, use this to temporarily set the lighting to flat-white.");
            toolTip.SetToolTip(ignoreMaterialColorsCheck, "Treat all material colors as white like Dreamcast and Gamecube versions of SA1/SADX/SA2 do.");
            fullBrightCheck.Checked           = EditorOptions.OverrideLighting;
            ignoreMaterialColorsCheck.Checked = EditorOptions.IgnoreMaterialColors;
            UpdateSliderValues();

            // Keybind editor
            actionKeyMappings        = actionKeyMappings_f;
            defaultActionKeyMappings = defaultActionKeyMappings_f;
            listBoxActions.Items.Clear();
            foreach (ActionKeyMapping keyMapping in actionKeyMappings)
            {
                listBoxActions.Items.Add(keyMapping.Name);
            }
            SelectedKeyChanged();
            ModifierKeyUpdated();
        }
Example #26
0
 private void UpdateTitleBar(EditorCamera camera)
 {
     Text = "Model Library:" + "X=" + camera.Position.X + " Y=" + camera.Position.Y + " Z=" + camera.Position.Z + " Pitch=" + camera.Pitch.ToString("X") + " Yaw=" + camera.Yaw.ToString("X") + " Speed=" + camera.MoveSpeed.ToString();
 }
Example #27
0
        private void RenderModel(int modelToRender, bool renderToTexture = false)
        {
            EditorCamera camera = ((renderToTexture) ? defaultCam : panelCam);

            camera.FOV    = (float)(Math.PI / 4);
            camera.Aspect = splitContainer1.Panel2.Width / (float)splitContainer1.Panel2.Height;
            float cameraDistance = camera.DrawDistance;

            if (renderToTexture && (modelToRender <= 0))             // we're using our default camera, set it to a position that will show the entire model
            {
                camera.MoveToShowBounds(modelList[modelToRender].Value.Bounds);

                cameraDistance = Math.Max(camera.Distance, Vector3.Distance(camera.Position, camera.Position + (camera.Look * modelList[modelToRender].Value.Bounds.Radius * 2)));

                if (cameraDistance < camera.DrawDistance)
                {
                    cameraDistance = camera.DrawDistance;
                }
            }

            d3dDevice.SetTransform(TransformState.Projection, Matrix.PerspectiveFovRH(camera.FOV, camera.Aspect, 1, cameraDistance));
            d3dDevice.SetTransform(TransformState.View, camera.ToMatrix());
            UpdateTitleBar(camera);
            d3dDevice.SetRenderState(RenderState.FillMode, EditorOptions.RenderFillMode);
            d3dDevice.SetRenderState(RenderState.CullMode, EditorOptions.RenderCullMode);
            d3dDevice.Material = new Material {
                Ambient = System.Drawing.Color.White.ToRawColor4()
            };
            d3dDevice.Clear(ClearFlags.Target | ClearFlags.ZBuffer, System.Drawing.Color.Gray.ToRawColorBGRA(), 1, 0);
            d3dDevice.SetRenderState(RenderState.ZEnable, true);
            if (renderToTexture)
            {
                if (screenRenderTexture == null)                 // we can't render onto a null surface
                {
                    screenRenderTexture = new Texture(d3dDevice, 256, 256, 0, Usage.RenderTarget, Format.A8R8G8B8, Pool.Default);
                }

                d3dDevice.SetRenderTarget(0, screenRenderTexture.GetSurfaceLevel(0));
            }
            else
            {
                d3dDevice.SetRenderTarget(0, defaultRenderTarget);
            }
            d3dDevice.BeginScene();
            //all drawings after this line

            if (modelToRender >= 0)
            {
                MatrixStack transform = new MatrixStack();
                njs_object.Attach = modelList[modelToRender].Value;
                RenderInfo.Draw(njs_object.DrawModel(d3dDevice.GetRenderState <FillMode>(RenderState.FillMode), transform, null, meshes[modelToRender], true), d3dDevice, camera);
            }
            else             // invalid selection, show a message telling the user to select something
            {
                // see if we can hide the panel's picture and/or draw an actual label here
                //onscreenFont.DrawText(textSprite, "No model selected.", screenCenter, Color.Black);
            }

            d3dDevice.EndScene();             //all drawings before this line
            d3dDevice.Present();

            if (renderToTexture)
            {
                int renderIndex = -1;
                renderIndex = attachListRenders.FindIndex(item => item.Key == modelList[modelToRender].Key);

                // convert our texture into a bitmap, add it to the rendertextures list
                Surface surface       = screenRenderTexture.GetSurfaceLevel(0);
                Stream  surfaceStream = Surface.ToStream(surface, ImageFileFormat.Bmp);
                attachListRenders[renderIndex] = new KeyValuePair <int, Bitmap>(modelList[modelToRender].Key, new Bitmap(surfaceStream));
            }
        }
Example #28
0
 public void OnRenderEditor(EditorCamera camera)
 {
     RenderPipeline(camera.ViewProjectionMatrix);
 }
        public override List <RenderInfo> Render(SETItem item, Device dev, EditorCamera camera, MatrixStack transform)
        {
            List <RenderInfo> result = new List <RenderInfo>();

            eleType = Math.Min(Math.Max((int)item.Scale.Z, -1), 1);

            if (item.Selected)
            {
                transform.Push();
                transform.NJTranslate(item.Position.X, (item.Position.Y + item.Scale.X), item.Position.Z);
                transform.NJRotateY(item.Rotation.Z);
                result.AddRange(destWele.DrawModelTree(dev.GetRenderState <FillMode>(RenderState.FillMode), transform, null, destWeleMsh));
                if (item.Selected)
                {
                    result.AddRange(destWele.DrawModelTreeInvert(transform, destWeleMsh));
                }
                transform.Pop();
            }


            if (eleType < 0)
            {
                transform.Push();
                transform.NJTranslate(item.Position);
                transform.NJRotateY(item.Rotation.Y);
                result.AddRange(WeleAlt.DrawModelTree(dev.GetRenderState <FillMode>(RenderState.FillMode), transform, ObjectHelper.GetTextures("OBJ_WINDY"), WeleAltMsh));
                if (item.Selected)
                {
                    result.AddRange(WeleAlt.DrawModelTreeInvert(transform, WeleAltMsh));
                }
                transform.Pop();
                return(result);
            }
            else if (eleType > 0)
            {
                transform.Push();
                transform.NJTranslate(item.Position);
                transform.NJRotateY(item.Rotation.Y);
                result.AddRange(WeleWhite.DrawModelTree(dev.GetRenderState <FillMode>(RenderState.FillMode), transform, ObjectHelper.GetTextures("OBJ_WINDY"), WeleWhiteMsh));
                if (item.Selected)
                {
                    result.AddRange(WeleWhite.DrawModelTreeInvert(transform, WeleWhiteMsh));
                }
                transform.Pop();
                return(result);
            }
            else
            {
                transform.Push();
                transform.NJTranslate(item.Position);
                transform.NJRotateY(item.Rotation.Y);
                result.AddRange(Wele1.DrawModelTree(dev.GetRenderState <FillMode>(RenderState.FillMode), transform, ObjectHelper.GetTextures("OBJ_WINDY"), Wele1Msh));
                if (item.Selected)
                {
                    result.AddRange(Wele1.DrawModelTreeInvert(transform, Wele1Msh));
                }
                transform.Pop();

                return(result);
            }


            return(result);
        }
Example #30
0
 public override List <RenderInfo> Render(SETItem item, Device dev, EditorCamera camera, MatrixStack transform)
 {
     if (item.Scale.X == 0 || item.Scale.X == 5 || item.Scale.X == 10 || item.Scale.X == -5)
     {
         List <RenderInfo> result = new List <RenderInfo>();
         transform.Push();
         transform.NJTranslate(item.Position);
         transform.NJRotateObject(item.Rotation);
         result.AddRange(model1.DrawModelTree(dev.GetRenderState <FillMode>(RenderState.FillMode), transform, ObjectHelper.GetTextures("OBJ_BEACH"), meshes1));
         if (item.Selected)
         {
             result.AddRange(model1.DrawModelTreeInvert(transform, meshes1));
         }
         transform.Pop();
         return(result);
     }
     else if (item.Scale.X == 1 || item.Scale.X == 6 || item.Scale.X == 11 || item.Scale.X == -1)
     {
         List <RenderInfo> result = new List <RenderInfo>();
         transform.Push();
         transform.NJTranslate(item.Position);
         transform.NJRotateObject(item.Rotation);
         result.AddRange(model2.DrawModelTree(dev.GetRenderState <FillMode>(RenderState.FillMode), transform, ObjectHelper.GetTextures("OBJ_BEACH"), meshes2));
         if (item.Selected)
         {
             result.AddRange(model2.DrawModelTreeInvert(transform, meshes2));
         }
         transform.Pop();
         return(result);
     }
     else if (item.Scale.X == 2 || item.Scale.X == 7 || item.Scale.X == 12 || item.Scale.X == -2)
     {
         List <RenderInfo> result = new List <RenderInfo>();
         transform.Push();
         transform.NJTranslate(item.Position);
         transform.NJRotateObject(item.Rotation);
         result.AddRange(model3.DrawModelTree(dev.GetRenderState <FillMode>(RenderState.FillMode), transform, ObjectHelper.GetTextures("OBJ_BEACH"), meshes3));
         if (item.Selected)
         {
             result.AddRange(model3.DrawModelTreeInvert(transform, meshes3));
         }
         transform.Pop();
         return(result);
     }
     else if (item.Scale.X == 3 || item.Scale.X == 8 || item.Scale.X == 13 || item.Scale.X == -3)
     {
         List <RenderInfo> result = new List <RenderInfo>();
         transform.Push();
         transform.NJTranslate(item.Position);
         transform.NJRotateObject(item.Rotation);
         result.AddRange(model4.DrawModelTree(dev.GetRenderState <FillMode>(RenderState.FillMode), transform, ObjectHelper.GetTextures("OBJ_BEACH"), meshes4));
         if (item.Selected)
         {
             result.AddRange(model4.DrawModelTreeInvert(transform, meshes4));
         }
         transform.Pop();
         return(result);
     }
     else if (item.Scale.X == 4 || item.Scale.X == 9 || item.Scale.X == 14 || item.Scale.X == -4)
     {
         List <RenderInfo> result = new List <RenderInfo>();
         transform.Push();
         transform.NJTranslate(item.Position);
         transform.NJRotateObject(item.Rotation);
         result.AddRange(model5.DrawModelTree(dev.GetRenderState <FillMode>(RenderState.FillMode), transform, ObjectHelper.GetTextures("OBJ_BEACH"), meshes5));
         if (item.Selected)
         {
             result.AddRange(model5.DrawModelTreeInvert(transform, meshes5));
         }
         transform.Pop();
         return(result);
     }
     else
     {
         List <RenderInfo> result = new List <RenderInfo>();
         transform.Push();
         transform.NJTranslate(item.Position);
         transform.NJRotateObject(item.Rotation);
         result.AddRange(model1.DrawModelTree(dev.GetRenderState <FillMode>(RenderState.FillMode), transform, ObjectHelper.GetTextures("OBJ_BEACH"), meshes1));
         if (item.Selected)
         {
             result.AddRange(model1.DrawModelTreeInvert(transform, meshes1));
         }
         transform.Pop();
         return(result);
     }
 }