public void RemoveIndoorMapEntityInformation(IndoorMapEntityInformation indoorMapEntityInformation) { if (!m_indoorMapEntityInformationIdToObject.ContainsKey(indoorMapEntityInformation.Id)) { return; } m_indoorMapEntityInformationIdToObject.Remove(indoorMapEntityInformation.Id); NativeIndoorMapEntityInformationApi_DestroyIndoorMapEntityInformation(NativePluginRunner.API, indoorMapEntityInformation.Id); }
public IndoorMapEntityInformation AddIndoorMapEntityInformation( string indoorMapId, Action <IndoorMapEntityInformation> indoorMapEntityInformationChangedDelegate ) { var indoorMapEntityInformationId = NativeIndoorMapEntityInformationApi_CreateIndoorMapEntityInformation(NativePluginRunner.API, indoorMapId); var indoorMapEntityInformation = new IndoorMapEntityInformation( this, indoorMapEntityInformationId, indoorMapId, indoorMapEntityInformationChangedDelegate ); m_indoorMapEntityInformationIdToObject.Add(indoorMapEntityInformationId, indoorMapEntityInformation); TryUpdateIndoorMapEntityInformation(indoorMapEntityInformation); return(indoorMapEntityInformation); }
/// <summary> /// Remove an IndoorMapEntityInformation object, previously added via AddIndoorMapEntityInformation. /// </summary> /// <param name="indoorMapEntityInformation">The IndoorMapEntityInformation instance to remove.</param> public void RemoveIndoorMapEntityInformation(IndoorMapEntityInformation indoorMapEntityInformation) { m_apiInternal.RemoveIndoorMapEntityInformation(indoorMapEntityInformation); }
private bool TryUpdateIndoorMapEntityInformation(IndoorMapEntityInformation indoorMapEntityInformation) { // fetch from native var indoorMapEntities = new List <IndoorMapEntity>(); var interop = new IndoorMapEntityInformationInterop { indoorMapEntityInformationModelId = indoorMapEntityInformation.Id }; var success = NativeIndoorMapEntityInformationApi_TryGetIndoorMapEntityInformationBufferSizes(NativePluginRunner.API, ref interop); if (!success) { return(false); } var indoorMapEntityIdsBuffer = new int[interop.indoorMapEntityModelIdsBufferSize]; var indoorMapEntityIdsBufferGCHandle = GCHandle.Alloc(indoorMapEntityIdsBuffer, GCHandleType.Pinned); interop.indoorMapEntityModelIds = indoorMapEntityIdsBufferGCHandle.AddrOfPinnedObject(); success = NativeIndoorMapEntityInformationApi_TryGetIndoorMapEntityInformation(NativePluginRunner.API, ref interop); if (success) { foreach (var indoorMapEntityId in indoorMapEntityIdsBuffer) { var indoorMapEntityInterop = new IndoorMapEntityInterop { indoorMapEntityModelId = indoorMapEntityId }; success = NativeIndoorMapEntityInformationApi_TryGetIndoorMapEntityBufferSizes(NativePluginRunner.API, ref indoorMapEntityInterop); if (!success) { break; } var indoorMapEntityIdBuffer = new byte[indoorMapEntityInterop.indoorMapEntityIdBufferSize]; var indoorMapEntityIdBufferGCHandle = GCHandle.Alloc(indoorMapEntityIdBuffer, GCHandleType.Pinned); indoorMapEntityInterop.indoorMapEntityId = indoorMapEntityIdBufferGCHandle.AddrOfPinnedObject(); success = NativeIndoorMapEntityInformationApi_TryGetIndoorMapEntity(NativePluginRunner.API, ref indoorMapEntityInterop); if (!success) { indoorMapEntityIdBufferGCHandle.Free(); break; } var indoorMapEntity = FromInterop(indoorMapEntityInterop); indoorMapEntities.Add(indoorMapEntity); indoorMapEntityIdBufferGCHandle.Free(); } } if (success) { indoorMapEntityInformation.SetEntityInformation(indoorMapEntities, interop.indoorMapEntityLoadState); if (OnIndoorMapEntityInformationUpdated != null) { OnIndoorMapEntityInformationUpdated(indoorMapEntityInformation); } } indoorMapEntityIdsBufferGCHandle.Free(); return(success); }