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

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

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

revision 83 by william, Fri Jul 16 21:26:08 2010 UTC revision 86 by william, Fri Jul 16 23:35:21 2010 UTC
# Line 6  using gr2lib.core.helpers; Line 6  using gr2lib.core.helpers;
6  using gr2lib.core.interfaces;  using gr2lib.core.interfaces;
7  namespace gr2lib.core.coretypes.implementation  namespace gr2lib.core.coretypes.implementation
8  {  {
9      
10    
11      public class Material : IMaterial      public class Material : IMaterial
12      {      {
# Line 17  namespace gr2lib.core.coretypes.implemen Line 17  namespace gr2lib.core.coretypes.implemen
17              this.Name = "";              this.Name = "";
18              this.Maps = new List<Map>();              this.Maps = new List<Map>();
19              this.Texture = new Texture();              this.Texture = new Texture();
20              
21          }          }
22    
23         internal static Material ReadFromMemory(IntPtr pointer)          internal static Material ReadFromMemory(IntPtr pointer)
24          {          {
25              if (pointer == IntPtr.Zero) return null;              try
26              native.Material native = Helpers.ReadFromMemory<native.Material>(pointer);              {
27              Material managed = ReadFromNative(native);                  if (pointer == IntPtr.Zero) return null;
28              managed.NativePointer = pointer;                  native.Material native = Helpers.ReadFromMemory<native.Material>(pointer);
29              return managed;                  Material managed = ReadFromNative(native);
30                    managed.NativePointer = pointer;
31                    return managed;
32                }
33                catch (Exception ex)
34                {
35                    Console.WriteLine(ex.ToString());
36                    return default(Material);
37                }
38          }          }
39    
40          internal static Material ReadFromNative(native.Material native)          internal static Material ReadFromNative(native.Material native)
41          {          {
42              Material managed = new Material();              try
             managed.Name = native.Name;  
             IntPtr[] maps = Helpers.ReadPtrArrayFromMemory<native.Map>(native.Maps);  
             int length = maps.Length;  
             managed.Maps = new List<Map>(length);  
             foreach (IntPtr ptr in maps)  
43              {              {
44                  managed.Maps.Add(new Map());                  Material managed = new Material();
45                    managed.Name = native.Name;
46                    IntPtr[] maps = Helpers.ReadPtrArrayFromMemory<native.Map>(native.Maps);
47                    int length = maps.Length;
48                    managed.Maps = new List<Map>(length);
49                    foreach (IntPtr ptr in maps)
50                    {
51                        managed.Maps.Add(new Map());
52                    }
53                    for (int i = 0; i < length; i++)
54                    {
55                        managed.Maps[i] = Map.ReadFromMemory(maps[i]);
56                    }
57                    managed.Texture = Texture.ReadFromMemory(native.Texture);
58                    managed.ExtendedData = native.ExtendedData;
59                    return managed;
60              }              }
61              for (int i = 0; i < length; i++)              catch (Exception ex)
62              {              {
63                  managed.Maps[i] = Map.ReadFromMemory(maps[i]);                  Console.WriteLine(ex.ToString());
64                    return default(Material);
65              }              }
             managed.Texture = Texture.ReadFromMemory(native.Texture);  
             managed.ExtendedData = native.ExtendedData;  
             return managed;  
66          }          }
67    
68          #region INativePointer Members          #region INativePointer Members
# Line 60  namespace gr2lib.core.coretypes.implemen Line 76  namespace gr2lib.core.coretypes.implemen
76          private Texture _Texture;          private Texture _Texture;
77          public string Name { get { return _Name; } set { _Name = value; } }          public string Name { get { return _Name; } set { _Name = value; } }
78          public List<Map> Maps { get { return _Maps; } set { _Maps = value; } }          public List<Map> Maps { get { return _Maps; } set { _Maps = value; } }
79          public Texture Texture { get { return _Texture; } set { _Texture = value; } }          public Texture Texture { get { return _Texture; } set { _Texture = value; } }
80          public bool IsTexture { get { if (Texture == null) { return false; } else { return true; } } }          public bool IsTexture { get { if (Texture == null) { return false; } else { return true; } } }
81          #endregion          #endregion
82    

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

  ViewVC Help
Powered by ViewVC 1.1.22