aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Framework/AssetLoader
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Framework/AssetLoader')
-rw-r--r--OpenSim/Framework/AssetLoader/Filesystem/AssetLoaderFileSystem.cs78
1 files changed, 59 insertions, 19 deletions
diff --git a/OpenSim/Framework/AssetLoader/Filesystem/AssetLoaderFileSystem.cs b/OpenSim/Framework/AssetLoader/Filesystem/AssetLoaderFileSystem.cs
index bffced8..46e6ae1 100644
--- a/OpenSim/Framework/AssetLoader/Filesystem/AssetLoaderFileSystem.cs
+++ b/OpenSim/Framework/AssetLoader/Filesystem/AssetLoaderFileSystem.cs
@@ -44,18 +44,18 @@ namespace OpenSim.Framework.AssetLoader.Filesystem
44{ 44{
45 public class AssetLoaderFileSystem : IAssetLoader 45 public class AssetLoaderFileSystem : IAssetLoader
46 { 46 {
47 protected AssetBase CreateAsset(string assetIdStr, string name, string filename, bool isImage) 47 protected AssetBase CreateAsset(string assetIdStr, string name, string path, bool isImage)
48 { 48 {
49 AssetBase asset = new AssetBase( 49 AssetBase asset = new AssetBase(
50 new LLUUID(assetIdStr), 50 new LLUUID(assetIdStr),
51 name 51 name
52 ); 52 );
53 53
54 if (!String.IsNullOrEmpty(filename)) 54 if (!String.IsNullOrEmpty(path))
55 { 55 {
56 MainLog.Instance.Verbose("ASSETS", "Loading: [{0}][{1}]", name, filename); 56 MainLog.Instance.Verbose("ASSETS", "Loading: [{0}][{1}]", name, path);
57 57
58 LoadAsset(asset, isImage, filename); 58 LoadAsset(asset, isImage, path);
59 } 59 }
60 else 60 else
61 { 61 {
@@ -65,13 +65,11 @@ namespace OpenSim.Framework.AssetLoader.Filesystem
65 return asset; 65 return asset;
66 } 66 }
67 67
68 protected void LoadAsset(AssetBase info, bool image, string filename) 68 protected void LoadAsset(AssetBase info, bool image, string path)
69 { 69 {
70 string dataPath = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "assets/OpenSimAssetSet"); //+ folder; 70 FileInfo fInfo = new FileInfo(path);
71 string fileName = Path.Combine(dataPath, filename);
72 FileInfo fInfo = new FileInfo(fileName);
73 long numBytes = fInfo.Length; 71 long numBytes = fInfo.Length;
74 FileStream fStream = new FileStream(fileName, FileMode.Open, FileAccess.Read); 72 FileStream fStream = new FileStream(path, FileMode.Open, FileAccess.Read);
75 byte[] idata = new byte[numBytes]; 73 byte[] idata = new byte[numBytes];
76 BinaryReader br = new BinaryReader(fStream); 74 BinaryReader br = new BinaryReader(fStream);
77 idata = br.ReadBytes((int) numBytes); 75 idata = br.ReadBytes((int) numBytes);
@@ -83,25 +81,64 @@ namespace OpenSim.Framework.AssetLoader.Filesystem
83 81
84 public void ForEachXmlAsset(Action<AssetBase> action) 82 public void ForEachXmlAsset(Action<AssetBase> action)
85 { 83 {
86 List<AssetBase> assets = new List<AssetBase>(); 84 List<AssetBase> assets = new List<AssetBase>();
87 // System.Console.WriteLine("trying loading asset into database"); 85 string assetSetsPath = Path.Combine(Util.assetsDir(), "AssetSets.xml");
88 string filePath = Path.Combine(Util.configDir(), "assets/OpenSimAssetSet/OpenSimAssetSet.xml"); 86
89 if (File.Exists(filePath)) 87 if (File.Exists(assetSetsPath))
90 { 88 {
89 string assetSetPath = "ERROR";
90
91 try 91 try
92 { 92 {
93 XmlConfigSource source = new XmlConfigSource(filePath); 93 XmlConfigSource source = new XmlConfigSource(assetSetsPath);
94
95 for (int i = 0; i < source.Configs.Count; i++)
96 {
97 assetSetPath = source.Configs[i].GetString("file", "");
98
99 LoadXmlAssetSet(Path.Combine(Util.assetsDir(), assetSetPath), assets);
100 }
101 }
102 catch (XmlException e)
103 {
104 MainLog.Instance.Error("ASSETS", "Error loading {0} : {1}", assetSetPath, e);
105 }
106 }
107 else
108 {
109 MainLog.Instance.Error(
110 "ASSETS",
111 "Asset set control file assets/AssetSets.xml does not exist! No assets loaded.");
112 }
113
114 assets.ForEach(action);
115 }
116
117 /// <summary>
118 /// Use the asset set information at path to load assets
119 /// </summary>
120 /// <param name="path"></param>
121 /// <param name="assets"></param>
122 protected void LoadXmlAssetSet(string assetSetPath, List<AssetBase> assets)
123 {
124 MainLog.Instance.Verbose("ASSETS", "Loading asset set {0}", assetSetPath);
125
126 if (File.Exists(assetSetPath))
127 {
128 try
129 {
130 XmlConfigSource source = new XmlConfigSource(assetSetPath);
131 String dir = Path.GetDirectoryName(assetSetPath);
94 132
95 for (int i = 0; i < source.Configs.Count; i++) 133 for (int i = 0; i < source.Configs.Count; i++)
96 { 134 {
97 // System.Console.WriteLine("loading asset into database");
98 string assetIdStr = source.Configs[i].GetString("assetID", LLUUID.Random().ToString()); 135 string assetIdStr = source.Configs[i].GetString("assetID", LLUUID.Random().ToString());
99 string name = source.Configs[i].GetString("name", ""); 136 string name = source.Configs[i].GetString("name", "");
100 sbyte type = (sbyte) source.Configs[i].GetInt("assetType", 0); 137 sbyte type = (sbyte) source.Configs[i].GetInt("assetType", 0);
101 sbyte invType = (sbyte) source.Configs[i].GetInt("inventoryType", 0); 138 sbyte invType = (sbyte) source.Configs[i].GetInt("inventoryType", 0);
102 string fileName = source.Configs[i].GetString("fileName", ""); 139 string assetPath = Path.Combine(dir, source.Configs[i].GetString("fileName", ""));
103 140
104 AssetBase newAsset = CreateAsset(assetIdStr, name, fileName, false); 141 AssetBase newAsset = CreateAsset(assetIdStr, name, assetPath, false);
105 142
106 newAsset.Type = type; 143 newAsset.Type = type;
107 newAsset.InvType = invType; 144 newAsset.InvType = invType;
@@ -110,10 +147,13 @@ namespace OpenSim.Framework.AssetLoader.Filesystem
110 } 147 }
111 catch (XmlException e) 148 catch (XmlException e)
112 { 149 {
113 MainLog.Instance.Error("ASSETS", "Error loading " + filePath + ": " + e.ToString()); 150 MainLog.Instance.Error("ASSETS", "Error loading {0} : {1}", assetSetPath, e);
114 } 151 }
115 } 152 }
116 assets.ForEach(action); 153 else
154 {
155 MainLog.Instance.Error("ASSETS", "Asset set file {0} does not exist!", assetSetPath);
156 }
117 } 157 }
118 } 158 }
119} 159}