/////////////////////////////////////////////////////////////////////////////// // // ## ###### // ###### ### // ## ############### Shark 3D Engine (www.shark3d.com) // ########## # # # // ######## Copyright (c) 1996-2007 Spinor GmbH. // ######### # # # All rights reserved. // ## ########## // ## // /////////////////////////////////////////////////////////////////////////////// // Definition of a player on the setting. // // It mainly manages the connection to the client. // A player actor lives as long as the connection to the client exists. // // A player actor does not contain level-specific player information. // Such information is managed by a level-specific level-player actor. // The level-player actor is created each time again entering a new level. // For this, a level must understand a level-player command for producing // the a level-player. // Since each dsc-file formally can only contain a singe actor, // we use the group actor to define more than one actor. actor_ident "kit_base.group" actor_param { // Delegate action calls to the children. active 1 child_array { ident "kit_base.producer" param { name "player_rawproducer" deleg_name "player_set" active 1 ident "kit_base.capsule" param { // Delegate the action calls to all children: active 1 // Name of the scope of the capsule. scope "settingplayer" // Name of the capsule actor within its own namespace. // Actors within the capsule can access the capsule // actor itself by this name. local_name "capsule" // Name of the capsule seen from outside // registered in the local namespace. Commands sent // to this actor are delegate to "delegate_target". local_deleg_name "capsule_deleg" // Delegate commands from outside to the dispatcher. deleg_target "dispatch_export" // The capsule contains a group of child actors. child_ident "kit_base.group" child_param { // Delegate action calls to the children. active 1 child_array { // Dispatcher for events from outside the player // capsule. ident "kit_base.dispatch" param { name "dispatch_export" entry_array { cmds "destroy" targets "levelplayer" "capsule" } { cmds "created_local" targets } { cmds "created_net" targets "reproduce" newcmd "set_blocked" } { cmds "net_traverse" targets "levelplayer_netproduce" "levelplayer_netappear" newcmd "traverse" } { cmds "net_appear" targets "reproduce" newcmd "rework" } { cmds "add_motion" targets "levelplayer" } { // Store the inform-actor in "inform": cmds "assign_inform" "set_inform" targets "inform_deleg" newcmd "set_deleg_target" } { cmds "assign_inform" "set_inform" targets "informanswer" } { // Refresh connection to setting-player. cmds "assign_inform" targets "levelplayer_refresh_charge" newcmd "perform" } { cmds "search_inform" "search_noinform" targets "informanswer" } { cmds "god" "goto_level_next" "goto_level_prev" "special" // Delegate to the level-player: targets "levelplayer" } } } { ident "kit_base.dispatch" param { name "dispatch" entry_array { cmds "levelplayer_pre" targets } { cmds "levelplayer_post" targets } } } { // Dispatcher for commands from the level player: ident "kit_base.dispatch" param { name "dispatch_inform" entry_array { cmds "set_gfxmgr_level" "set_sndmgr_level" "set_state_world" "set_state_sky" "set_sim_world" "set_noise_world" "set_sensorstate_world" "set_camera" "set_playerbody" targets "inform" } { cmds "reproduce" targets "levelplayer_netproduce" } } } { ident "kit_base.deleg" param { name "inform_deleg" deleg_name "inform" deleg_target "" allow_no_target 1 enabled 1 } } { ident "kit_engobj.informanswer" param { name "informanswer" answer_cmd "add_result" answer_actor "capsule_deleg" } } { ident "kit_engobj.informmgr" param { name "levelplayer_informmgr" // deleg_name "levelplayer" // The inform-actor. A level player sends // its commands to this actor: inform "dispatch_inform" ignore_no_charge 1 // Recip about level-player changes. notify_target "dispatch" notify_pre_cmd "levelplayer_pre" notify_post_cmd "levelplayer_post" // If no level player exists, this command is sent // to this actor to get a player in a level. produce_target "^level" produce_cmd "produce_player" } } { ident "kit_base.paramvoid" param { name "levelplayer_refresh_charge" target "levelplayer_informmgr" cmd "refresh_charge" } } { ident "kit_engbase.netproducer" param { name "levelplayer_netproduce" produce_target "levelplayer_informmgr" produce_cmd "produce_charge" net_traverse_cmd "net_traverse" created_local_cmd "created_local" created_net_cmd "created_net" } } { ident "kit_engbase.netappear" param { name "levelplayer_netappear" appear_target "levelplayer" appear_cmd "net_appear" } } { ident "kit_engobj.fetch" param { name "levelplayer_fetch" query_target "levelplayer_informmgr" query_cmd "get_charge" produce_target "levelplayer_netproduce" produce_cmd "produce" produce_report_target "" produce_report_cmd "" enum_target "" enum_cmd "" enum_report_target "" enum_report_cmd "" } } { ident "kit_engbase.netreproduce" param { name "reproduce" producer "inform" charge "capsule_deleg" reproduce_cmd "reproduce" } } { ident "kit_snk.childif" param { extcfg_actor "^setting_cfg" extcfg_entry_switch "server" then_child_ident "kit_base.onaction" then_child_param { // Check if a new player must be created. active 1 name "check_levelplayer_onaction" target "levelplayer_fetch" cmd "check_produce_charge" } } } } } } } }