/[gr2lib]/trunk/gr2lib/core/coretypes/implementation/grnfileinfo.cs
ViewVC logotype

Diff of /trunk/gr2lib/core/coretypes/implementation/grnfileinfo.cs

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 86 by william, Fri Jul 16 23:35:21 2010 UTC revision 87 by william, Fri Jul 16 23:37:52 2010 UTC
# Line 6  using gr2lib.core.interfaces; Line 6  using gr2lib.core.interfaces;
6    
7  namespace gr2lib.core.coretypes.implementation  namespace gr2lib.core.coretypes.implementation
8  {  {
9      
10      public class grnfileinfo : Igrnfileinfo      public class grnfileinfo : Igrnfileinfo
11      {      {
12          private string fromFileName;          private string fromFileName;
# Line 30  namespace gr2lib.core.coretypes.implemen Line 30  namespace gr2lib.core.coretypes.implemen
30          private string filePath;          private string filePath;
31          private string fileName;          private string fileName;
32    
33          public grnfileinfo(string path)          public grnfileinfo(string path)
34           {          {
35               this.filePath = path;              this.filePath = path;
36               this.fileName = FileNameFromPath(path);              this.fileName = FileNameFromPath(path);
37           }          }
38    
39          private static string FileNameFromPath(string path)          private static string FileNameFromPath(string path)
40          {          {
# Line 47  namespace gr2lib.core.coretypes.implemen Line 47  namespace gr2lib.core.coretypes.implemen
47    
48          internal static grnfileinfo ReadFromMemory(IntPtr pointer, string path)          internal static grnfileinfo ReadFromMemory(IntPtr pointer, string path)
49          {          {
50              if (pointer == IntPtr.Zero) return null;              try
             native.grnfileinfo native = Helpers.ReadFromMemory<native.grnfileinfo>(pointer);  
             grnfileinfo managed = new grnfileinfo(path);  
             managed.NativePointer = pointer;  
   
             if (native.ArtToolInfo != IntPtr.Zero)  
             {  
                 managed.ArtToolInfo = ArtToolInfo.ReadFromMemory(native.ArtToolInfo);  
             }  
             else  
             {  
                 managed.ArtToolInfo = new ArtToolInfo();  
             }  
             if (native.ExporterInfo != IntPtr.Zero)  
             {  
                 managed.ExporterInfo = ExporterInfo.ReadFromMemory(native.ExporterInfo);  
             }  
             else  
51              {              {
52                  managed.ExporterInfo = new ExporterInfo();                  if (pointer == IntPtr.Zero) return null;
53              }                  native.grnfileinfo native = Helpers.ReadFromMemory<native.grnfileinfo>(pointer);
54                    grnfileinfo managed = new grnfileinfo(path);
55                    managed.NativePointer = pointer;
56    
57              managed.fromFileName = string.IsNullOrEmpty(native.FromFileName) ? "{null}" : native.FromFileName;                  if (native.ArtToolInfo != IntPtr.Zero)
58              managed.ExtendedData = native.ExtendedData;                  {
59                        managed.ArtToolInfo = ArtToolInfo.ReadFromMemory(native.ArtToolInfo);
60                    }
61                    else
62                    {
63                        managed.ArtToolInfo = new ArtToolInfo();
64                    }
65                    if (native.ExporterInfo != IntPtr.Zero)
66                    {
67                        managed.ExporterInfo = ExporterInfo.ReadFromMemory(native.ExporterInfo);
68                    }
69                    else
70                    {
71                        managed.ExporterInfo = new ExporterInfo();
72                    }
73    
74              int length = 0;                  managed.fromFileName = string.IsNullOrEmpty(native.FromFileName) ? "{null}" : native.FromFileName;
75              if (native.Textures.Pointer != IntPtr.Zero)                  managed.ExtendedData = native.ExtendedData;
76              {  
77                  try                  int length = 0;
78                    if (native.Textures.Pointer != IntPtr.Zero)
79                  {                  {
80    
81                      IntPtr[] textures = Helpers.ReadArrayFromMemory(native.Textures);                      IntPtr[] textures = Helpers.ReadArrayFromMemory(native.Textures);
82                      length = textures.Length;                      length = textures.Length;
83                      managed.Textures = new List<Texture>(length);                      managed.Textures = new List<Texture>(length);
# Line 91  namespace gr2lib.core.coretypes.implemen Line 92  namespace gr2lib.core.coretypes.implemen
92                          managed.Textures[i] = Texture.ReadFromMemory(textures[i]);                          managed.Textures[i] = Texture.ReadFromMemory(textures[i]);
93                      }                      }
94                  }                  }
95                  catch (Exception ex)                  else
96                  {                  {
97                      Console.WriteLine(ex.ToString());                      managed.Textures = new List<Texture>();
98                  }                  }
             }  
             else  
             {  
                 managed.Textures = new List<Texture>();  
             }  
99    
100              if (native.Materials.Pointer != IntPtr.Zero)                  if (native.Materials.Pointer != IntPtr.Zero)
             {  
                 IntPtr[] materials = Helpers.ReadArrayFromMemory(native.Materials);  
                 length = materials.Length;  
                 managed.Materials = new List<Material>(length);  
                 foreach (IntPtr ptr in materials)  
101                  {                  {
102                      managed.Materials.Add(new Material());                      IntPtr[] materials = Helpers.ReadArrayFromMemory(native.Materials);
103                        length = materials.Length;
104                        managed.Materials = new List<Material>(length);
105                        foreach (IntPtr ptr in materials)
106                        {
107                            managed.Materials.Add(new Material());
108                        }
109                        for (int i = 0; i < length; i++)
110                        {
111                            managed.Materials[i] = Material.ReadFromMemory(materials[i]);
112                        }
113                  }                  }
114                  for (int i = 0; i < length; i++)                  else
115                  {                  {
116                      managed.Materials[i] = Material.ReadFromMemory(materials[i]);                      managed.Materials = new List<Material>();
117                  }                  }
             }  
             else  
             {  
                 managed.Materials = new List<Material>();  
             }  
118    
119              if (native.Skeletons.Pointer != IntPtr.Zero)                  if (native.Skeletons.Pointer != IntPtr.Zero)
             {  
                 IntPtr[] skeletons = Helpers.ReadArrayFromMemory(native.Skeletons);  
                 length = skeletons.Length;  
                 managed.Skeletons = new List<Skeleton>(length);  
                 foreach (IntPtr ptr in skeletons)  
120                  {                  {
121                      managed.Skeletons.Add(new Skeleton());                      IntPtr[] skeletons = Helpers.ReadArrayFromMemory(native.Skeletons);
122                        length = skeletons.Length;
123                        managed.Skeletons = new List<Skeleton>(length);
124                        foreach (IntPtr ptr in skeletons)
125                        {
126                            managed.Skeletons.Add(new Skeleton());
127                        }
128                        for (int i = 0; i < length; i++)
129                        {
130                            managed.Skeletons[i] = (Skeleton.ReadFromMemory(skeletons[i]));
131                        }
132                  }                  }
133                  for (int i = 0; i < length; i++)                  else
134                  {                  {
135                      managed.Skeletons[i] = (Skeleton.ReadFromMemory(skeletons[i]));                      managed.Skeletons = new List<Skeleton>();
136                  }                  }
137    
138                    return managed;
139              }              }
140              else              catch (Exception ex)
141              {              {
142                  managed.Skeletons = new List<Skeleton>();                  Console.WriteLine(ex.ToString());
143                    return default(grnfileinfo);
144              }              }
             return managed;  
145          }          }
146          public static grnfileinfo ReadFromFile(string fileName)          public static grnfileinfo ReadFromFile(string fileName)
147          {          {
# Line 161  namespace gr2lib.core.coretypes.implemen Line 164  namespace gr2lib.core.coretypes.implemen
164              catch (Exception ex)              catch (Exception ex)
165              {              {
166                  Console.WriteLine(ex.ToString());                  Console.WriteLine(ex.ToString());
167                    return default(grnfileinfo);
168              }              }
169          }          }
170    

Legend:
Removed from v.86  
changed lines
  Added in v.87

  ViewVC Help
Powered by ViewVC 1.1.22