4 using System.Collections.Generic;
7 using SiliconStudio.Core.Storage;
8 using SiliconStudio.Core.Serialization.Assets;
10 namespace SiliconStudio.BuildEngine
12 internal class BuildTransaction
14 private readonly Dictionary<ObjectUrl, ObjectId> transactionOutputObjects =
new Dictionary<ObjectUrl, ObjectId>();
19 this.outputObjectsGroups = outputObjectsGroups;
24 return transactionOutputObjects;
29 lock (transactionOutputObjects)
31 return transactionOutputObjects.Select(x =>
new KeyValuePair<string, ObjectId>(x.Key.Path, x.Value)).Where(predicate).ToList();
35 public bool TryGetValue(
string url, out
ObjectId objectId)
40 lock (transactionOutputObjects)
42 if (transactionOutputObjects.TryGetValue(objUrl, out objectId))
45 foreach (var outputObjects
in outputObjectsGroups)
50 OutputObject outputObject;
51 if (outputObjects.TryGetValue(objUrl, out outputObject))
53 objectId = outputObject.ObjectId;
60 objectId = ObjectId.Empty;
66 private readonly BuildTransaction buildTransaction;
68 public DatabaseAssetIndexMap(BuildTransaction buildTransaction)
70 this.buildTransaction = buildTransaction;
73 public bool TryGetValue(
string url, out
ObjectId objectId)
75 return buildTransaction.TryGetValue(url, out objectId);
81 return TryGetValue(url, out objectId);
89 if (!TryGetValue(url, out objectId))
90 throw new KeyNotFoundException();
96 lock (buildTransaction.transactionOutputObjects)
98 buildTransaction.transactionOutputObjects[
new ObjectUrl(
UrlType.Internal, url)] = value;
105 return buildTransaction.SearchValues(predicate);
108 public void WaitPendingOperations()
115 throw new NotImplementedException();
118 public void Dispose()
One bounding volume completely contains another.
A hash to uniquely identify data.