Browse Source

Add MonoPInvokeCallback guard for iOS, reintroduce Matrix3x4 identity

Josh Engebretson 9 years ago
parent
commit
ef805e885e

+ 11 - 8
Script/AtomicNET/AtomicNET/Core/NativeCore.cs

@@ -105,7 +105,7 @@ namespace AtomicEngine
             AObject obj;
             AObject obj;
 
 
             foreach (var subList in eventReceiverLookup.Values)
             foreach (var subList in eventReceiverLookup.Values)
-            {                
+            {
                 subList.RemoveAll(item => item.Receiver.TryGetTarget(out obj) && obj == receiver);
                 subList.RemoveAll(item => item.Receiver.TryGetTarget(out obj) && obj == receiver);
             }
             }
 
 
@@ -116,8 +116,8 @@ namespace AtomicEngine
             //TODO: OPTIMIZE
             //TODO: OPTIMIZE
 
 
             if (sender == IntPtr.Zero)
             if (sender == IntPtr.Zero)
-                return;         
-            
+                return;
+
             foreach (var subList in eventReceiverLookup.Values)
             foreach (var subList in eventReceiverLookup.Values)
             {
             {
                 var len = subList.Count;
                 var len = subList.Count;
@@ -144,18 +144,18 @@ namespace AtomicEngine
         static float expireDelta = 0.0f;
         static float expireDelta = 0.0f;
 
 
         // called ahead of E_UPDATE event
         // called ahead of E_UPDATE event
-#if ATOMIC_IOS
+        #if ATOMIC_IOS
         [MonoPInvokeCallback(typeof(UpdateDispatchDelegate))]
         [MonoPInvokeCallback(typeof(UpdateDispatchDelegate))]
-#endif
+        #endif
         public static void UpdateDispatch(float timeStep)
         public static void UpdateDispatch(float timeStep)
         {
         {
             expireDelta += timeStep;
             expireDelta += timeStep;
             if (expireDelta > 2.0f)
             if (expireDelta > 2.0f)
             {
             {
                 expireDelta = 0.0f;
                 expireDelta = 0.0f;
-    
-                
-                // TODO: tune GC    
+
+
+                // TODO: tune GC
                 GC.Collect();
                 GC.Collect();
                 GC.WaitForPendingFinalizers();
                 GC.WaitForPendingFinalizers();
                 GC.Collect();
                 GC.Collect();
@@ -279,6 +279,9 @@ namespace AtomicEngine
         }
         }
 
 
         // Called from RefCounted native destructor, refCounted is not valid for any operations here
         // Called from RefCounted native destructor, refCounted is not valid for any operations here
+        #if ATOMIC_IOS
+        [MonoPInvokeCallback(typeof(RefCountedDeletedDelegate))]
+        #endif
         public static void RefCountedDeleted(IntPtr refCounted)
         public static void RefCountedDeleted(IntPtr refCounted)
         {
         {
             nativeLookup.Remove(refCounted);
             nativeLookup.Remove(refCounted);

+ 21 - 1
Script/AtomicNET/AtomicNET/Math/Matrix3x4.cs

@@ -20,6 +20,26 @@ namespace AtomicEngine
         public float m22;
         public float m22;
         public float m23;
         public float m23;
 
 
+        static public readonly Matrix3x4 IDENTITY = CreateIdentity();
+
+        static Matrix3x4 CreateIdentity()
+        {
+            var m = new Matrix3x4();
+            m.m00 = 1.0f;
+            m.m01 = 0.0f;
+            m.m02 = 0.0f;
+            m.m03 = 0.0f;
+            m.m10 = 0.0f;
+            m.m11 = 1.0f;
+            m.m12 = 0.0f;
+            m.m13 = 0.0f;
+            m.m20 = 0.0f;
+            m.m21 = 0.0f;
+            m.m22 = 1.0f;
+            m.m23 = 0.0f;
+            return m;
+        }
+
         public Matrix3x4 Inverse()
         public Matrix3x4 Inverse()
         {
         {
             float det = m00 * m11 * m22 +
             float det = m00 * m11 * m22 +
@@ -72,4 +92,4 @@ namespace AtomicEngine
     }
     }
 
 
 
 
-}
+}