| // Copyright 2013 The Flutter Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| part of dart.ui; | |
| Future<developer.ServiceExtensionResponse> _reinitializeScene( | |
| String method, | |
| Map<String, String> parameters, | |
| ) async { | |
| final String? assetKey = parameters['assetKey']; | |
| if (assetKey != null) { | |
| await SceneNode._reinitializeScene(assetKey); | |
| } | |
| // Always succeed. | |
| return developer.ServiceExtensionResponse.result(json.encode(<String, String>{ | |
| 'type': 'Success', | |
| })); | |
| } | |
| // This is a copy of ui/setup_hooks.dart, but with reinitializeScene added for hot reloading 3D scenes. | |
| @pragma('vm:entry-point') | |
| void _setupHooks() { | |
| assert(() { | |
| // In debug mode, register the schedule frame extension. | |
| developer.registerExtension('ext.ui.window.scheduleFrame', _scheduleFrame); | |
| // In debug mode, allow shaders to be reinitialized. | |
| developer.registerExtension( | |
| 'ext.ui.window.reinitializeShader', | |
| _reinitializeShader, | |
| ); | |
| // In debug mode, allow 3D scenes to be reinitialized. | |
| developer.registerExtension( | |
| 'ext.ui.window.reinitializeScene', | |
| _reinitializeScene, | |
| ); | |
| return true; | |
| }()); | |
| // In debug and profile mode, allow tools to display the current rendering backend. | |
| if (!_kReleaseMode) { | |
| developer.registerExtension( | |
| 'ext.ui.window.impellerEnabled', | |
| _getImpellerEnabled, | |
| ); | |
| } | |
| } |