This repository has been archived by the owner on Jan 9, 2023. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 126
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #20 from Unity-Technologies/feature/streams-refactor
v6.0.0 merge/release
- Loading branch information
Showing
36 changed files
with
7,370 additions
and
1,869 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,9 @@ | ||
cache/ | ||
cache5.0/ | ||
coverage/ | ||
node_modules/ | ||
.coveralls.yml | ||
.coveralls.yml | ||
!lib/cache | ||
.cache_ram*/ | ||
.cache_fs*/ | ||
.nyc_output/ | ||
coverage/ | ||
local-production.yml |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
v8.10.0 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,5 @@ | ||
language: node_js | ||
node_js: | ||
- "6" | ||
- "8" | ||
after_success: | ||
- npm run coveralls |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,139 @@ | ||
using UnityEngine; | ||
using UnityEditor; | ||
using System; | ||
using System.IO; | ||
using System.Linq; | ||
using System.Collections.Generic; | ||
|
||
public class CacheServerTransactionExporter : MonoBehaviour | ||
{ | ||
private const string TYPE_ASSET = "a"; | ||
private const string TYPE_INFO = "i"; | ||
private const string TYPE_RESOURCE = "r"; | ||
|
||
[Serializable] | ||
public class CacheServerTransactionData : ISerializationCallbackReceiver | ||
{ | ||
public string projectRoot; | ||
public Transaction[] transactions; | ||
|
||
private readonly List<Transaction> m_transactionList; | ||
|
||
public CacheServerTransactionData(int size) | ||
{ | ||
projectRoot = Directory.GetParent(Application.dataPath).FullName; | ||
m_transactionList = new List<Transaction>(size); | ||
} | ||
|
||
public void AddItem(string assetPath) | ||
{ | ||
if (Directory.Exists(assetPath)) return; | ||
if (!File.Exists(assetPath)) return; | ||
|
||
var guid = AssetDatabase.AssetPathToGUID(assetPath); | ||
var hash = AssetDatabase.GetAssetDependencyHash(assetPath); | ||
|
||
var libPath = | ||
new[] { projectRoot, "Library", "metadata", guid.Substring(0, 2), guid } | ||
.Aggregate(string.Empty, Path.Combine); | ||
|
||
if (!File.Exists(libPath)) | ||
{ | ||
Debug.Log("Cannot find Library representation for GUID " + guid); | ||
return; | ||
} | ||
|
||
var files = new List<Transaction.FileInfo> | ||
{ | ||
new Transaction.FileInfo(TYPE_ASSET, libPath, ToUnixTime(File.GetLastWriteTime(libPath))) | ||
}; | ||
|
||
var infoLibPath = libPath + ".info"; | ||
if (File.Exists(infoLibPath)) | ||
{ | ||
files.Add(new Transaction.FileInfo(TYPE_INFO, infoLibPath, ToUnixTime(File.GetLastWriteTime(infoLibPath)))); | ||
} | ||
|
||
var resLibPath = libPath + ".resource"; | ||
if (File.Exists(resLibPath)) | ||
{ | ||
files.Add(new Transaction.FileInfo(TYPE_RESOURCE, resLibPath, ToUnixTime(File.GetLastWriteTime(resLibPath)))); | ||
} | ||
|
||
m_transactionList.Add(new Transaction(assetPath, guid, hash, files.ToArray())); | ||
} | ||
|
||
public void OnBeforeSerialize() | ||
{ | ||
transactions = m_transactionList.ToArray(); | ||
} | ||
|
||
public void OnAfterDeserialize() | ||
{ | ||
// No op | ||
} | ||
} | ||
|
||
[Serializable] | ||
public struct Transaction | ||
{ | ||
|
||
[Serializable] | ||
public struct FileInfo | ||
{ | ||
public string type; | ||
public string path; | ||
public long ts; | ||
|
||
public FileInfo(string type, string path, long ts) | ||
{ | ||
this.type = type; | ||
this.path = path; | ||
this.ts = ts; | ||
} | ||
} | ||
|
||
public string assetPath; | ||
public string guid; | ||
public string hash; | ||
public FileInfo[] files; | ||
|
||
public Transaction(string assetPath, string guid, Hash128 hash, FileInfo[] files) | ||
{ | ||
this.assetPath = assetPath; | ||
this.guid = guid; | ||
this.hash = hash.ToString(); | ||
this.files = files; | ||
} | ||
} | ||
|
||
public static void ExportTransactions(string exportPath) | ||
{ | ||
var assetPaths = AssetDatabase.GetAllAssetPaths(); | ||
var data = new CacheServerTransactionData(assetPaths.Length); | ||
|
||
foreach (var path in assetPaths) | ||
data.AddItem(path); | ||
|
||
using (var stream = File.CreateText(exportPath)) | ||
stream.Write(EditorJsonUtility.ToJson(data, true)); | ||
} | ||
|
||
[MenuItem("Cache Server Utilities/Export Transactions")] | ||
public static void ExportTransactionsMenuItem() | ||
{ | ||
var path = EditorUtility.SaveFilePanel( | ||
"Save Import Data", | ||
Directory.GetCurrentDirectory(), | ||
"CacheServerTransactions_" + EditorUserBuildSettings.activeBuildTarget, "json"); | ||
|
||
if (path.Length != 0) | ||
ExportTransactions(path); | ||
} | ||
|
||
public static long ToUnixTime(DateTime date) | ||
{ | ||
var epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); | ||
return Convert.ToInt64((date.ToUniversalTime() - epoch).TotalSeconds); | ||
} | ||
} |
Oops, something went wrong.