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);
            }
        }
Esempio n. 2
0
 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;
 }