1+ import { getBlockService as getBlockServiceBlockManager , createBlockState as createBlockStateBlockManager , getDependentBlockProtocolNameMap as getDependentBlockProtocolNameMapBlockManager , api , state as blockManagerState , blockProtocolName } from "block_manager/src/BlockManagerType"
2+ import { service as directorService } from "director_block_protocol/src/service/ServiceType"
3+ import { service as renderService } from "render_block_protocol/src/service/ServiceType"
4+ import { state as renderState } from "render_block_protocol/src/state/StateType"
5+ import { service as sceneManagerService } from "sceneManager_block_protocol/src/service/ServiceType"
6+ import { dependentBlockProtocolNameMap } from "./DependentMapType"
7+
8+ //假实现
9+ let requestAnimationFrame = ( func ) => {
10+ }
11+
12+ let _loop = ( api : api , blockManagerState : blockManagerState , sceneManagerBlockProtocolName : blockProtocolName , renderBlockProtocolName : blockProtocolName ) => {
13+ //依赖于SceneManager Block Protocol来调用SceneManager Block的服务的update函数
14+ let sceneManagerService = api . getBlockService < sceneManagerService > ( blockManagerState , sceneManagerBlockProtocolName )
15+
16+ blockManagerState = sceneManagerService . update ( blockManagerState )
17+
18+ //依赖于Render Block Protocol来调用Render Block的服务的render函数
19+ let renderService = api . getBlockService < renderService > ( blockManagerState , renderBlockProtocolName )
20+
21+ blockManagerState = renderService . render ( blockManagerState )
22+
23+ requestAnimationFrame (
24+ ( time ) => {
25+ _loop ( api , blockManagerState , sceneManagerBlockProtocolName , renderBlockProtocolName )
26+ }
27+ )
28+ }
29+
30+ export let getBlockService : getBlockServiceBlockManager <
31+ dependentBlockProtocolNameMap ,
32+ directorService
33+ > = ( api , { sceneManagerBlockProtocolName, renderBlockProtocolName } ) => {
34+ return {
35+ init : ( blockManagerState ) => {
36+ //依赖于SceneManager Block Protocol来调用SceneManager Block的服务的init函数
37+ let sceneManagerService = api . getBlockService < sceneManagerService > ( blockManagerState , sceneManagerBlockProtocolName )
38+
39+ blockManagerState = sceneManagerService . init ( blockManagerState )
40+
41+ //依赖于Render Block Protocol来调用Render Block的服务的init函数
42+ let renderService = api . getBlockService < renderService > ( blockManagerState , renderBlockProtocolName )
43+
44+ blockManagerState = renderService . init ( blockManagerState )
45+
46+ return blockManagerState
47+ } ,
48+ loop : ( blockManagerState ) => {
49+ _loop ( api , blockManagerState , sceneManagerBlockProtocolName , renderBlockProtocolName )
50+ } ,
51+ }
52+ }
53+
54+ export let createBlockState : createBlockStateBlockManager <
55+ renderState
56+ > = ( ) => {
57+ return null
58+ }
59+
60+ export let getDependentBlockProtocolNameMap : getDependentBlockProtocolNameMapBlockManager = ( ) => {
61+ return {
62+ "sceneManagerBlockProtocolName" : "sceneManager_block_protocol" ,
63+ "renderBlockProtocolName" : "render_block_protocol"
64+ }
65+ }
0 commit comments