generated from max/template-unity-project
Work State Serialization
- Worked on serialization issues (some string data doesn't get correctly formatted, but was also not needed, so removed the data part from ScenePartition) - Moved some files to runtime (wip)
This commit is contained in:
70
Runtime/ScenePartition.cs
Normal file
70
Runtime/ScenePartition.cs
Normal file
@ -0,0 +1,70 @@
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Text.RegularExpressions;
|
||||
|
||||
namespace VertexColor.ScenePartition
|
||||
{
|
||||
public class SceneIdComparer : IComparer<ScenePartition>
|
||||
{
|
||||
public int Compare(ScenePartition x, ScenePartition y)
|
||||
{
|
||||
if (x.id == y.id)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
if (x.id < y.id)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
[System.Serializable]
|
||||
public class ScenePartition
|
||||
{
|
||||
public uint id = 0;
|
||||
public string filePath = null;
|
||||
//public string[] data = null;
|
||||
public UintSortedSet references = new UintSortedSet();
|
||||
|
||||
public ScenePartition(string filePath)
|
||||
{
|
||||
this.filePath = filePath;
|
||||
|
||||
string[] data = File.ReadAllLines(filePath);
|
||||
|
||||
if (data == null || data.Length == 0) return;
|
||||
|
||||
{ // Get id.
|
||||
string pattern = @"&(\d+)";
|
||||
|
||||
// Find all matches using regex
|
||||
Match match = Regex.Match(data[0], pattern);
|
||||
|
||||
if (!match.Success) return;
|
||||
if (!uint.TryParse(match.Groups[1].Value, out id)) return;
|
||||
}
|
||||
|
||||
{ // Get references.
|
||||
string pattern = @"fileID:\s(\d+)";
|
||||
|
||||
for (int i = 0; i < data.Length; i++)
|
||||
{
|
||||
// Find the match using regex
|
||||
Match match = Regex.Match(data[i], pattern);
|
||||
|
||||
if (!match.Success) continue;
|
||||
|
||||
if (uint.TryParse(match.Groups[1].Value, out uint fileNumber))
|
||||
{
|
||||
if (fileNumber == 0) continue; // 0 == nothing.
|
||||
|
||||
references.Add(fileNumber);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user