Skip to content

Commit f17fee0

Browse files
SplitEvent: Fixed a crash related to building SA2 cutscenes that use reflection info.
SALVL: Updated Wild Canyon's level effects to include the wind tunnels and light source models, along with adjusting the skybox to more accurately represent what it looks like in-game.
1 parent ec42057 commit f17fee0

File tree

2 files changed

+48
-2
lines changed

2 files changed

+48
-2
lines changed

Libraries/SplitTools/SplitEvent.cs

+2
Original file line numberDiff line numberDiff line change
@@ -3176,6 +3176,8 @@ public class ReflectionInfo
31763176
public int Instances { get; }
31773177
public List<ReflectionMatrixData> ReflectData { get; }
31783178

3179+
public ReflectionInfo() { }
3180+
31793181
public ReflectionInfo(byte[] file, int address, uint imageBase, Dictionary<int, string> labels = null)
31803182
{
31813183
if (labels != null && labels.TryGetValue(address, out var name))

SA2Tools/SA2ObjectDefinitions/Level Effects/WildCanyon.cs

+46-2
Original file line numberDiff line numberDiff line change
@@ -13,30 +13,74 @@ namespace SA2ObjectDefinitions.Level_Effects
1313
class WildCanyon : LevelDefinition
1414
{
1515
NJS_OBJECT model1;
16+
NJS_OBJECT model2;
17+
NJS_OBJECT model3;
18+
NJS_OBJECT model4;
1619
Mesh[] mesh1;
20+
Mesh[] mesh2;
21+
Mesh[] mesh3;
22+
Mesh[] mesh4;
1723
Vector3 Skybox_Scale;
1824
Texture[] texs1;
25+
Texture[] texs2;
26+
Texture[] texs3;
27+
NJS_TEXLIST skyboxtls;
28+
NJS_TEXLIST tunneltls;
29+
NJS_TEXLIST lighttls;
1930

2031
public override void Init(IniLevelData data, byte act, byte timeofday)
2132
{
2233
model1 = ObjectHelper.LoadModel("stg16_WildCanyon/models/Skybox.sa2mdl");
2334
mesh1 = ObjectHelper.GetMeshes(model1);
35+
skyboxtls = NJS_TEXLIST.Load("stg16_WildCanyon/tls/Skybox.satex");
36+
model2 = ObjectHelper.LoadModel("stg16_WildCanyon/models/WindTunnel1.sa2mdl");
37+
mesh2 = ObjectHelper.GetMeshes(model2);
38+
tunneltls = NJS_TEXLIST.Load("stg16_WildCanyon/tls/WindTunnel.satex");
39+
model3 = ObjectHelper.LoadModel("stg16_WildCanyon/models/WindTunnel2.sa2mdl");
40+
mesh3 = ObjectHelper.GetMeshes(model3);
41+
model4 = ObjectHelper.LoadModel("stg16_WildCanyon/models/LightPillar.sa2mdl");
42+
mesh4 = ObjectHelper.GetMeshes(model4);
43+
lighttls = NJS_TEXLIST.Load("stg16_WildCanyon/tls/LightPillar.satex");
2444
Skybox_Scale.X = 1.0f;
2545
Skybox_Scale.Y = 1.0f;
2646
Skybox_Scale.Z = 1.0f;
2747
}
2848

2949
public override void Render(Device dev, EditorCamera cam)
3050
{
31-
texs1 = ObjectHelper.GetTextures("bgtex16");
51+
texs1 = ObjectHelper.GetTextures("landtx16", skyboxtls, dev);
3252
List<RenderInfo> result1 = new List<RenderInfo>();
3353
MatrixStack transform = new MatrixStack();
54+
// Skybox
3455
transform.Push();
35-
transform.NJTranslate(cam.Position.X, cam.Position.Y, cam.Position.Z);
56+
//transform.NJTranslate(cam.Position.X, cam.Position.Y, cam.Position.Z);
3657
transform.NJScale(Skybox_Scale);
3758
result1.AddRange(model1.DrawModelTree(dev.GetRenderState<FillMode>(RenderState.FillMode), transform, texs1, mesh1, EditorOptions.IgnoreMaterialColors, EditorOptions.OverrideLighting));
3859
transform.Pop();
3960
RenderInfo.Draw(result1, dev, cam);
4061
}
62+
public override void RenderLate(Device dev, EditorCamera cam)
63+
{
64+
texs2 = ObjectHelper.GetTextures("stg16_wind", tunneltls, dev);
65+
texs3 = ObjectHelper.GetTextures("bgtex16", lighttls, dev);
66+
List<RenderInfo> result1 = new List<RenderInfo>();
67+
MatrixStack transform = new MatrixStack();
68+
// Wind Tunnel 1
69+
transform.Push();
70+
transform.NJTranslate(200.0f, 250.0f, -4.0f);
71+
result1.AddRange(model2.DrawModelTree(dev.GetRenderState<FillMode>(RenderState.FillMode), transform, texs2, mesh2, EditorOptions.IgnoreMaterialColors, EditorOptions.OverrideLighting));
72+
transform.Pop();
73+
// Wind Tunnel 2
74+
transform.Push();
75+
transform.NJTranslate(200.0f, 902.02002f, -4.0f);
76+
result1.AddRange(model3.DrawModelTree(dev.GetRenderState<FillMode>(RenderState.FillMode), transform, texs2, mesh3, EditorOptions.IgnoreMaterialColors, EditorOptions.OverrideLighting));
77+
transform.Pop();
78+
// Light Pillar
79+
transform.Push();
80+
transform.NJTranslate(220.0f, 320.0f, -30.0f);
81+
result1.AddRange(model4.DrawModelTree(dev.GetRenderState<FillMode>(RenderState.FillMode), transform, texs3, mesh4, EditorOptions.IgnoreMaterialColors, EditorOptions.OverrideLighting));
82+
transform.Pop();
83+
RenderInfo.Draw(result1, dev, cam);
84+
}
4185
}
4286
}

0 commit comments

Comments
 (0)