Broken UI system
This commit is contained in:
@@ -151,9 +151,7 @@ namespace SplashEdit.RuntimeCode
|
||||
for (int ti = 0; ti < trackCount; ti++)
|
||||
{
|
||||
PSXCutsceneTrack track = clip.Tracks[ti];
|
||||
bool isCameraTrack = track.TrackType == PSXTrackType.CameraPosition || track.TrackType == PSXTrackType.CameraRotation;
|
||||
string objName = isCameraTrack ? "" : (track.ObjectName ?? "");
|
||||
if (objName.Length > MAX_NAME_LEN) objName = objName.Substring(0, MAX_NAME_LEN);
|
||||
string objName = GetTrackTargetName(track);
|
||||
|
||||
int kfCount = Mathf.Min(track.Keyframes?.Count ?? 0, MAX_KEYFRAMES);
|
||||
|
||||
@@ -228,6 +226,39 @@ namespace SplashEdit.RuntimeCode
|
||||
writer.Write((short)0);
|
||||
break;
|
||||
}
|
||||
case PSXTrackType.UICanvasVisible:
|
||||
case PSXTrackType.UIElementVisible:
|
||||
{
|
||||
// Step: values[0] = 0 or 1
|
||||
writer.Write((short)(kf.Value.x > 0.5f ? 1 : 0));
|
||||
writer.Write((short)0);
|
||||
writer.Write((short)0);
|
||||
break;
|
||||
}
|
||||
case PSXTrackType.UIProgress:
|
||||
{
|
||||
// values[0] = progress 0-100 as int16
|
||||
writer.Write((short)Mathf.Clamp(Mathf.RoundToInt(kf.Value.x), 0, 100));
|
||||
writer.Write((short)0);
|
||||
writer.Write((short)0);
|
||||
break;
|
||||
}
|
||||
case PSXTrackType.UIPosition:
|
||||
{
|
||||
// values[0] = x, values[1] = y (PSX screen coordinates, raw int16)
|
||||
writer.Write((short)Mathf.RoundToInt(kf.Value.x));
|
||||
writer.Write((short)Mathf.RoundToInt(kf.Value.y));
|
||||
writer.Write((short)0);
|
||||
break;
|
||||
}
|
||||
case PSXTrackType.UIColor:
|
||||
{
|
||||
// values[0] = r, values[1] = g, values[2] = b (0-255)
|
||||
writer.Write((short)Mathf.Clamp(Mathf.RoundToInt(kf.Value.x), 0, 255));
|
||||
writer.Write((short)Mathf.Clamp(Mathf.RoundToInt(kf.Value.y), 0, 255));
|
||||
writer.Write((short)Mathf.Clamp(Mathf.RoundToInt(kf.Value.z), 0, 255));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -240,13 +271,11 @@ namespace SplashEdit.RuntimeCode
|
||||
}
|
||||
}
|
||||
|
||||
// ── Object name strings (per track) ──
|
||||
// ── Object / UI target name strings (per track) ──
|
||||
for (int ti = 0; ti < trackCount; ti++)
|
||||
{
|
||||
PSXCutsceneTrack track = clip.Tracks[ti];
|
||||
bool isCameraTrack = track.TrackType == PSXTrackType.CameraPosition || track.TrackType == PSXTrackType.CameraRotation;
|
||||
string objName = isCameraTrack ? "" : (track.ObjectName ?? "");
|
||||
if (objName.Length > MAX_NAME_LEN) objName = objName.Substring(0, MAX_NAME_LEN);
|
||||
string objName = GetTrackTargetName(track);
|
||||
|
||||
if (objName.Length > 0)
|
||||
{
|
||||
@@ -329,5 +358,29 @@ namespace SplashEdit.RuntimeCode
|
||||
if (padding > 0)
|
||||
writer.Write(new byte[padding]);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get the target name string for a track.
|
||||
/// Camera tracks: empty. Object tracks: ObjectName.
|
||||
/// UICanvasVisible: UICanvasName.
|
||||
/// UI element tracks: "UICanvasName/UIElementName".
|
||||
/// </summary>
|
||||
private static string GetTrackTargetName(PSXCutsceneTrack track)
|
||||
{
|
||||
bool isCameraTrack = track.TrackType == PSXTrackType.CameraPosition || track.TrackType == PSXTrackType.CameraRotation;
|
||||
if (isCameraTrack) return "";
|
||||
|
||||
string name;
|
||||
if (track.IsUIElementTrack)
|
||||
name = (track.UICanvasName ?? "") + "/" + (track.UIElementName ?? "");
|
||||
else if (track.IsUITrack)
|
||||
name = track.UICanvasName ?? "";
|
||||
else
|
||||
name = track.ObjectName ?? "";
|
||||
|
||||
if (name.Length > MAX_NAME_LEN)
|
||||
name = name.Substring(0, MAX_NAME_LEN);
|
||||
return name;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user