private void UpdateSmartTerrain(VuforiaManagerImpl.FrameState frameState, StateManagerImpl stateManager) { SmartTerrainTracker tracker = TrackerManager.Instance.GetTracker <SmartTerrainTracker>(); if (tracker != null && tracker.SmartTerrainBuilder.GetReconstructions().Any <ReconstructionAbstractBehaviour>()) { VuforiaManagerImpl.SmartTerrainRevisionData[] array = new VuforiaManagerImpl.SmartTerrainRevisionData[frameState.numSmartTerrainRevisions]; VuforiaManagerImpl.SurfaceData[] array2 = new VuforiaManagerImpl.SurfaceData[frameState.numUpdatedSurfaces]; VuforiaManagerImpl.PropData[] array3 = new VuforiaManagerImpl.PropData[frameState.numUpdatedProps]; for (int i = 0; i < frameState.numSmartTerrainRevisions; i++) { VuforiaManagerImpl.SmartTerrainRevisionData smartTerrainRevisionData = (VuforiaManagerImpl.SmartTerrainRevisionData)Marshal.PtrToStructure(new IntPtr(frameState.smartTerrainRevisionsArray.ToInt64() + (long)(i * Marshal.SizeOf(typeof(VuforiaManagerImpl.SmartTerrainRevisionData)))), typeof(VuforiaManagerImpl.SmartTerrainRevisionData)); array[i] = smartTerrainRevisionData; } for (int j = 0; j < frameState.numUpdatedSurfaces; j++) { VuforiaManagerImpl.SurfaceData surfaceData = (VuforiaManagerImpl.SurfaceData)Marshal.PtrToStructure(new IntPtr(frameState.updatedSurfacesArray.ToInt64() + (long)(j * Marshal.SizeOf(typeof(VuforiaManagerImpl.SurfaceData)))), typeof(VuforiaManagerImpl.SurfaceData)); array2[j] = surfaceData; } for (int k = 0; k < frameState.numUpdatedProps; k++) { VuforiaManagerImpl.PropData propData = (VuforiaManagerImpl.PropData)Marshal.PtrToStructure(new IntPtr(frameState.updatedPropsArray.ToInt64() + (long)(k * Marshal.SizeOf(typeof(VuforiaManagerImpl.PropData)))), typeof(VuforiaManagerImpl.PropData)); array3[k] = propData; } ((SmartTerrainBuilderImpl)tracker.SmartTerrainBuilder).UpdateSmartTerrainData(array, array2, array3); } }
internal void ClearOnReset() { VuforiaManagerImpl.SmartTerrainRevisionData[] smartTerrainRevisions = new VuforiaManagerImpl.SmartTerrainRevisionData[0]; VuforiaManagerImpl.SurfaceData[] updatedSurfaceData = new VuforiaManagerImpl.SurfaceData[0]; VuforiaManagerImpl.PropData[] updatedPropData = new VuforiaManagerImpl.PropData[0]; this.UpdateSurfaces(smartTerrainRevisions, updatedSurfaceData); this.UpdateProps(smartTerrainRevisions, updatedPropData); this.mIgnoreNextUpdate = true; }