public static void PrepareContacts() { for (int i = 0; i < _contactCount; i++) { PContactExport2D export = contactExports[i]; //some if (export.id == 0) { continue; } PContact2D c; if (contactDictionary.ContainsKey(export.id)) { c = contactDictionary[export.id]; } else { c = new PContact2D(export.id); contactDictionary[export.id] = c; } c.Update( contactPtrs[i], export.count, export.relativeVelocity, export.isTrigger ); AddAllContactWrapper(c); } }
public static void AppleEngineInternalState(PInternalState2D internalState) { for (int i = 0; i < internalState.contactCount; i++) { PContactExport2D export = internalState.contactExports[i]; NativeParallel2D.AddExternalContactData(export); } }
public static void ExportContacts() { if (!initialized) { Initialize(); } _contactCount = 0; int index = 0; IntPtr contactPtr = NativeParallel2D.GetContactList(internalWorld.IntPointer); while (contactPtr != IntPtr.Zero) { contactPtrs[index] = contactPtr; PContactExport2D export = contactExports[index]; contactPtr = NativeParallel2D.ExportAndReturnNextContact(contactPtr, ref export); contactExports[index] = export; index++; } _contactCount = index; }
internal static extern void AddExternalContactData(PContactExport2D contactExport);
internal static extern IntPtr ExportAndReturnNextContact(IntPtr contactHandle, ref PContactExport2D export);