feat: add generic render segment model
Some checks failed
validate-scripts / validate-scripts (push) Has been cancelled
Some checks failed
validate-scripts / validate-scripts (push) Has been cancelled
This commit is contained in:
@@ -70,6 +70,12 @@ class WeatherRuntimeBridgeModule(private val context: ReactApplicationContext) :
|
||||
@ReactMethod override fun setContinuousLayerRange(reactTag: Double, startLayerId: String, endLayerId: String, promise: Promise) = withMap(reactTag, promise) { map ->
|
||||
promise.resolve(if (map.setContinuousLayerRange(startLayerId, endLayerId)) "ACCEPTED" else "REJECTED")
|
||||
}
|
||||
@ReactMethod override fun setRenderSegmentPlanJson(reactTag: Double, planJson: String, promise: Promise) = withMap(reactTag, promise) { map ->
|
||||
promise.resolve(if (map.setRenderSegmentPlan(planJson)) "ACCEPTED" else "REJECTED")
|
||||
}
|
||||
@ReactMethod override fun getRenderSegmentDiagnosticsJson(reactTag: Double, promise: Promise) = withMap(reactTag, promise) { map ->
|
||||
promise.resolve(map.renderSegmentDiagnostics)
|
||||
}
|
||||
@ReactMethod override fun getRetainedUnderlayDiagnostics(reactTag: Double, promise: Promise) = withMap(reactTag, promise) { map ->
|
||||
val value = map.retainedUnderlayDiagnostics
|
||||
promise.resolve(Arguments.createMap().apply {
|
||||
|
||||
@@ -169,6 +169,16 @@ RCT_EXPORT_MODULE(WeatherRuntimeBridge)
|
||||
resolve([map setContinuousLayerRangeFromLayerIdentifier:startLayerId toLayerIdentifier:endLayerId] ? @"ACCEPTED" : @"REJECTED");
|
||||
}];
|
||||
}
|
||||
- (void)setRenderSegmentPlanJson:(double)reactTag planJson:(NSString *)planJson resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject {
|
||||
[self withMapForTag:reactTag requireRuntime:NO resolve:resolve reject:reject action:^(MLNMapView *map, MLNParticleFieldRuntime *runtime) {
|
||||
resolve([map setRenderSegmentPlanJSON:planJson] ? @"ACCEPTED" : @"REJECTED");
|
||||
}];
|
||||
}
|
||||
- (void)getRenderSegmentDiagnosticsJson:(double)reactTag resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject {
|
||||
[self withMapForTag:reactTag requireRuntime:NO resolve:resolve reject:reject action:^(MLNMapView *map, MLNParticleFieldRuntime *runtime) {
|
||||
resolve(map.renderSegmentDiagnosticsJSON);
|
||||
}];
|
||||
}
|
||||
- (void)getRetainedUnderlayDiagnostics:(double)reactTag resolve:(RCTPromiseResolveBlock)resolve reject:(RCTPromiseRejectBlock)reject {
|
||||
[self withMapForTag:reactTag requireRuntime:NO resolve:resolve reject:reject action:^(MLNMapView *map, MLNParticleFieldRuntime *runtime) {
|
||||
MLNRetainedUnderlayDiagnostics *value = map.retainedUnderlayDiagnostics;
|
||||
|
||||
@@ -27,6 +27,8 @@ export interface Spec extends TurboModule {
|
||||
getState(reactTag: number): Promise<RuntimeSnapshot>;
|
||||
setRetainedUnderlayEnabled(reactTag: number, enabled: boolean): Promise<CommandResult>;
|
||||
setContinuousLayerRange(reactTag: number, startLayerId: string, endLayerId: string): Promise<CommandResult>;
|
||||
setRenderSegmentPlanJson(reactTag: number, planJson: string): Promise<CommandResult>;
|
||||
getRenderSegmentDiagnosticsJson(reactTag: number): Promise<string>;
|
||||
getRetainedUnderlayDiagnostics(reactTag: number): Promise<RetainedUnderlaySnapshot>;
|
||||
clearWindFields(reactTag: number): Promise<CommandResult>;
|
||||
submitWindField(reactTag: number, metadataJson: string, payloadFileUri: string): Promise<FieldSubmitResult>;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import { getNativeFieldRuntimeBridge } from "./NativeWeatherRuntimeBridge";
|
||||
import type { CommandResult, RetainedUnderlayDiagnostics } from "./types";
|
||||
import type { CommandResult, RenderSegmentDiagnostics, RenderSegmentPlan, RetainedUnderlayDiagnostics } from "./types";
|
||||
|
||||
function nativeBridge() {
|
||||
const bridge = getNativeFieldRuntimeBridge();
|
||||
@@ -19,4 +19,9 @@ export const RendererRuntime = {
|
||||
},
|
||||
getRetainedUnderlayDiagnostics: (reactTag: number): Promise<RetainedUnderlayDiagnostics> =>
|
||||
nativeBridge().getRetainedUnderlayDiagnostics(reactTag),
|
||||
setRenderSegmentPlan: (reactTag: number, plan: RenderSegmentPlan): Promise<CommandResult> => {
|
||||
return nativeBridge().setRenderSegmentPlanJson(reactTag, JSON.stringify(plan));
|
||||
},
|
||||
getRenderSegmentDiagnostics: async (reactTag: number): Promise<RenderSegmentDiagnostics> =>
|
||||
JSON.parse(await nativeBridge().getRenderSegmentDiagnosticsJson(reactTag)) as RenderSegmentDiagnostics,
|
||||
} as const;
|
||||
|
||||
@@ -16,6 +16,13 @@ export type {
|
||||
ResolvedFieldProfileContractInput,
|
||||
RuntimeSnapshot,
|
||||
RetainedUnderlayDiagnostics,
|
||||
RenderSegmentDefinition,
|
||||
RenderSegmentDiagnostics,
|
||||
RenderSegmentLayerDiagnostics,
|
||||
RenderSegmentPlan,
|
||||
RenderSegmentStrategy,
|
||||
RetainedRenderSegmentDiagnostics,
|
||||
ContinuousRenderSegmentDiagnostics,
|
||||
RuntimeState,
|
||||
TargetFps,
|
||||
} from "./types";
|
||||
|
||||
@@ -62,3 +62,78 @@ export type RetainedUnderlayDiagnostics = Readonly<{
|
||||
fastPathMiss: number;
|
||||
fullCpuFrame: number;
|
||||
}>;
|
||||
export type RenderSegmentStrategy = "RETAINED" | "CONTINUOUS";
|
||||
export type RenderSegmentDefinition = Readonly<{
|
||||
strategy: RenderSegmentStrategy;
|
||||
startLayerId?: string;
|
||||
}>;
|
||||
export type RenderSegmentPlan = Readonly<{
|
||||
schemaVersion: 1;
|
||||
segments: readonly RenderSegmentDefinition[];
|
||||
}>;
|
||||
export type RenderSegmentLayerDiagnostics = Readonly<{
|
||||
layerIndex: number;
|
||||
layerId: string;
|
||||
layerType: string;
|
||||
visible: boolean;
|
||||
sourceId: string | null;
|
||||
sourceLayer: string | null;
|
||||
}>;
|
||||
export type RetainedRenderSegmentDiagnostics = Readonly<{
|
||||
segmentIndex: number;
|
||||
strategy: "RETAINED";
|
||||
configuredStartLayerId: string | null;
|
||||
beginIndex: number;
|
||||
endExclusive: number;
|
||||
resolvedStartLayerId: string | null;
|
||||
resolvedEndLayerId: string | null;
|
||||
layerCount: number;
|
||||
layers: readonly RenderSegmentLayerDiagnostics[];
|
||||
cache: Readonly<{
|
||||
cacheState: string;
|
||||
contentRevision: number;
|
||||
build: number;
|
||||
reuse: number;
|
||||
invalidation: number;
|
||||
lastInvalidationReason: string;
|
||||
textureCreate: number;
|
||||
compositeCreate: number;
|
||||
resourceRelease: number;
|
||||
}>;
|
||||
}>;
|
||||
export type ContinuousRenderSegmentDiagnostics = Readonly<{
|
||||
segmentIndex: number;
|
||||
strategy: "CONTINUOUS";
|
||||
configuredStartLayerId: string | null;
|
||||
beginIndex: number;
|
||||
endExclusive: number;
|
||||
resolvedStartLayerId: string | null;
|
||||
resolvedEndLayerId: string | null;
|
||||
layerCount: number;
|
||||
layers: readonly RenderSegmentLayerDiagnostics[];
|
||||
cache: null;
|
||||
}>;
|
||||
export type RenderSegmentDiagnostics = Readonly<{
|
||||
schemaVersion: 1;
|
||||
enabled: boolean;
|
||||
configured: boolean;
|
||||
valid: boolean;
|
||||
configSource: "explicit-render-segment-plan" | "continuous-range-compat" | "unconfigured/legacy";
|
||||
configRevision: number;
|
||||
topologyRevision: number;
|
||||
styleLayerCount: number;
|
||||
segmentCount: number;
|
||||
retainedSegmentCount: number;
|
||||
continuousSegmentCount: number;
|
||||
coverageComplete: boolean;
|
||||
fallback: boolean;
|
||||
lastReason: string;
|
||||
fastPathEligible: boolean;
|
||||
fastPathActive: boolean;
|
||||
fastPathFallbackReason: string;
|
||||
fastPathHit: number;
|
||||
fastPathMiss: number;
|
||||
fullCpuFrame: number;
|
||||
styleLayers: readonly RenderSegmentLayerDiagnostics[];
|
||||
segments: readonly (RetainedRenderSegmentDiagnostics | ContinuousRenderSegmentDiagnostics)[];
|
||||
}>;
|
||||
|
||||
Reference in New Issue
Block a user