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); } } }
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); }
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); }
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); }
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); }
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); }
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); }
/// <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); }
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; }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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); }
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(); }
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(); }
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)); } }
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); }
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); } }