mirror of
https://github.com/sampletext32/ParkanPlayground.git
synced 2026-08-15 02:57:49 +04:00
cleanup
This commit is contained in:
@@ -1,11 +1,5 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Common\Common.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
@@ -4,7 +4,7 @@ public record CpDatEntry(
|
||||
string ArchiveFile,
|
||||
string ArchiveEntryName,
|
||||
int Magic1,
|
||||
int Magic2,
|
||||
int AttachIndex,
|
||||
string Description,
|
||||
DatEntryType Type,
|
||||
int ChildCount, // игра не хранит это число в объекте, но оно есть в файле
|
||||
|
||||
@@ -51,7 +51,7 @@ public class CpDatParser
|
||||
|
||||
fs.Seek(32 - str2.Length - 1, SeekOrigin.Current); // -1 ignore null terminator
|
||||
var magic1 = fs.ReadInt32LittleEndian();
|
||||
var magic2 = fs.ReadInt32LittleEndian();
|
||||
var attachIndex = fs.ReadInt32LittleEndian();
|
||||
|
||||
var descriptionString = fs.ReadNullTerminated1251String();
|
||||
|
||||
@@ -69,6 +69,6 @@ public class CpDatParser
|
||||
children.Add(child);
|
||||
}
|
||||
|
||||
return new CpDatEntry(str1, str2, magic1, magic2, descriptionString, type, childCount, Children: children);
|
||||
return new CpDatEntry(str1, str2, magic1, attachIndex, descriptionString, type, childCount, Children: children);
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,5 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Common\Common.csproj" />
|
||||
<ProjectReference Include="..\NResLib\NResLib.csproj" />
|
||||
|
||||
@@ -54,8 +54,6 @@ public static class Msh0x01
|
||||
var baseOffset = i * entry.ElementSize;
|
||||
var elementSpan = dataSpan.Slice(baseOffset, entry.ElementSize);
|
||||
|
||||
var rawBytes = elementSpan.ToArray();
|
||||
|
||||
var slotIndices = new ushort[SlotCount];
|
||||
Array.Fill(slotIndices, ushort.MaxValue);
|
||||
|
||||
@@ -70,7 +68,6 @@ public static class Msh0x01
|
||||
}
|
||||
|
||||
nodes.Add(new Node(
|
||||
RawBytes: rawBytes,
|
||||
Flags: (NodeFlags)BinaryPrimitives.ReadUInt16LittleEndian(elementSpan.Slice(0x00, 2)),
|
||||
ParentIndexOrLink: BinaryPrimitives.ReadUInt16LittleEndian(elementSpan.Slice(0x02, 2)),
|
||||
AnimMapStart0x13: BinaryPrimitives.ReadUInt16LittleEndian(elementSpan.Slice(0x04, 2)),
|
||||
@@ -92,7 +89,6 @@ public static class Msh0x01
|
||||
}
|
||||
|
||||
/// <summary>Узел MSH 0x01.</summary>
|
||||
/// <param name="RawBytes">Сырые байты узла. Нужны для copy-through нестандартных вариантов.</param>
|
||||
/// <param name="Flags">[0x00..0x02] Флаги узла.</param>
|
||||
/// <param name="ParentIndexOrLink">[0x02..0x04] Parent node index. 0xFFFF обычно значит root/no parent.</param>
|
||||
/// <param name="AnimMapStart0x13">[0x04..0x06] Начало блока в MSH 0x13 animation map или 0xFFFF.</param>
|
||||
@@ -102,7 +98,6 @@ public static class Msh0x01
|
||||
/// Формула: slot = lod * 5 + group. 0xFFFF значит отсутствует.
|
||||
/// </param>
|
||||
public sealed record Node(
|
||||
byte[] RawBytes,
|
||||
NodeFlags Flags,
|
||||
ushort ParentIndexOrLink,
|
||||
ushort AnimMapStart0x13,
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using System.Text;
|
||||
using System.Text.Json;
|
||||
using Common;
|
||||
using NResLib;
|
||||
|
||||
@@ -104,6 +105,18 @@ public sealed class MshConverter
|
||||
var vertices = Msh0x03.ReadComponent(fs, archive);
|
||||
var indices = Msh0x06.ReadComponent(fs, archive);
|
||||
var batches = Msh0x0D.ReadComponent(fs, archive);
|
||||
var names = Msh0x0A.ReadComponent(fs, archive);
|
||||
|
||||
Console.WriteLine("0x01 component");
|
||||
Console.WriteLine(JsonSerializer.Serialize(nodes));
|
||||
|
||||
Console.WriteLine("0x02 component");
|
||||
Console.WriteLine(JsonSerializer.Serialize(geometry));
|
||||
|
||||
Console.WriteLine("0x0A component");
|
||||
Console.WriteLine(JsonSerializer.Serialize(names));
|
||||
|
||||
return;
|
||||
|
||||
using var writer = CreateObjWriter(outputPath);
|
||||
|
||||
|
||||
@@ -1,11 +1,5 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Common\Common.csproj" />
|
||||
<ProjectReference Include="..\NResLib\NResLib.csproj" />
|
||||
|
||||
@@ -41,7 +41,7 @@ public class CpDatSchemeExplorer : IImGuiPanel
|
||||
ImGui.TableSetupColumn("Архив");
|
||||
ImGui.TableSetupColumn("Элемент");
|
||||
ImGui.TableSetupColumn("Magic1");
|
||||
ImGui.TableSetupColumn("Magic2");
|
||||
ImGui.TableSetupColumn("AttachIndex");
|
||||
ImGui.TableSetupColumn("Описание");
|
||||
ImGui.TableSetupColumn("Тип");
|
||||
|
||||
@@ -70,7 +70,7 @@ public class CpDatSchemeExplorer : IImGuiPanel
|
||||
case 2: result = string.Compare(a.Entry.ArchiveFile, b.Entry.ArchiveFile, StringComparison.Ordinal); break;
|
||||
case 3: result = string.Compare(a.Entry.ArchiveEntryName, b.Entry.ArchiveEntryName, StringComparison.Ordinal); break;
|
||||
case 4: result = a.Entry.Magic1.CompareTo(b.Entry.Magic1); break;
|
||||
case 5: result = a.Entry.Magic2.CompareTo(b.Entry.Magic2); break;
|
||||
case 5: result = a.Entry.AttachIndex.CompareTo(b.Entry.AttachIndex); break;
|
||||
case 6: result = string.Compare(a.Entry.Description, b.Entry.Description, StringComparison.Ordinal); break;
|
||||
case 7: result = a.Entry.Type.CompareTo(b.Entry.Type); break;
|
||||
}
|
||||
@@ -96,7 +96,7 @@ public class CpDatSchemeExplorer : IImGuiPanel
|
||||
ImGui.TableNextColumn();
|
||||
ImGui.Text(_viewModel.FlatList[i].Entry.Magic1.ToString());
|
||||
ImGui.TableNextColumn();
|
||||
ImGui.Text(_viewModel.FlatList[i].Entry.Magic2.ToString());
|
||||
ImGui.Text(_viewModel.FlatList[i].Entry.AttachIndex.ToString());
|
||||
ImGui.TableNextColumn();
|
||||
ImGui.Text(_viewModel.FlatList[i].Entry.Description);
|
||||
ImGui.TableNextColumn();
|
||||
@@ -114,9 +114,9 @@ public class CpDatSchemeExplorer : IImGuiPanel
|
||||
ImGui.SameLine();
|
||||
ImGui.Text(entry.Magic1.ToString());
|
||||
|
||||
ImGui.Text("Magic2: ");
|
||||
ImGui.Text("AttachIndex: ");
|
||||
ImGui.SameLine();
|
||||
ImGui.Text(entry.Magic2.ToString());
|
||||
ImGui.Text(entry.AttachIndex.ToString());
|
||||
|
||||
ImGui.Text("Тип: ");
|
||||
ImGui.SameLine();
|
||||
|
||||
@@ -44,6 +44,7 @@ namespace NResUI.ImGuiUI
|
||||
|
||||
nResExplorerViewModel.SetParseResult(parseResult, path);
|
||||
Console.WriteLine("Read NRES");
|
||||
Console.WriteLine(JsonSerializer.Serialize(parseResult.Archive));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\ControlLib\ControlLib.csproj" />
|
||||
<ProjectReference Include="..\MissionTmaLib\MissionTmaLib.csproj" />
|
||||
<ProjectReference Include="..\MshLib\MshLib.csproj" />
|
||||
<ProjectReference Include="..\NResLib\NResLib.csproj" />
|
||||
|
||||
@@ -1,11 +1,5 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\Common\Common.csproj" />
|
||||
<ProjectReference Include="..\NResLib\NResLib.csproj" />
|
||||
|
||||
Reference in New Issue
Block a user