/////////////////////////////////////////////////////////////////////////////// // // ## ###### // ###### ### // ## ############### Shark 3D Engine (www.shark3d.com) // ########## # # # // ######## Copyright (c) 1996-2006 Spinor GmbH. // ######### # # # All rights reserved. // ## ########## // ## // /////////////////////////////////////////////////////////////////////////////// // Define a local namespace for the level. // All actors within the capsule can access each other without restrictions. // All foreign actors outside the capsule cannot access actors // within the capsule. Instead, foreign can only send commands // to the capsule itself. The capsule delegates the commands // in a controlled way, see below. actor_ident "kit_base.capsule" actor_param { // Delegate the action calls to all children: active 1 // Scope string used for reporting errors: scope "level" // 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" // Delegate commands from outside the capsule to this dispatcher. // The dispatcher handles the commands from outside in a controlled way. deleg_target "dispatch_export" // Define a group of actors contained in the capsule actor. // Formally, a capsule can only have a single member, // but by using a group actor, it can contain any number of members. child_ident "kit_base.group" child_param { active 1 child_array { // Dispatcher for commands from outside the level. // Commands coming from outside the capsule are delegated // to this dispatcher. This dispatcher then decides // which commands are understood, and which are the target actors. ident "kit_base.dispatch" param { // Name of the actor. name "dispatch_export" entry_array { // Utility, to get a simple access to the level admin. cmds "get_level" targets "capsule" newcmd "get_admin" } { cmds "produce_player" targets "playerproducer" newcmd "produce" } { cmds "fetch_player" targets "player_set" newcmd "search_noinform" } { cmds "net_traverse" targets "player_appear" newcmd "traverse" } { cmds "net_traverse" targets "dispatch_content" } } } { ident "kit_base.deleg" param { name "" deleg_name "env" deleg_target "^env" allow_no_target 0 enabled 1 } } { ident "kit_base.deleg" param { name "" deleg_name "perchmgr" deleg_target "^perchmgr" allow_no_target 0 enabled 1 } } { ident "kit_engbase.gfxmgr" param { name "gfxmgr" ident "eng_base.gfxmgr" } } { ident "kit_base.obj" param { name "gfxsuppl" obj_suppl "^envcompsuppl" obj_ident "eng_base.gfxsuppl" obj_param { env "env" child_suppl "^basesuppl" } } } { ident "kit_engbase.gfxassign" param { obj "gfxsuppl" gfxmgr "gfxmgr" } } { ident "kit_engbase.sndmgr" param { name "sndmgr" ident "eng_base.sndmgr" } } { ident "kit_base.obj" param { name "stdsuppl" obj_suppl "^envcompsuppl" obj_ident "eng_base.sndsuppl" obj_param { env "env" child_suppl "gfxsuppl" } } } { ident "kit_engbase.sndassign" param { obj "stdsuppl" sndmgr "sndmgr" } } { ident "kit_engbase.clock" param { active 1 name "clock" clock_suppl "stdsuppl" clock_ident "clock:" } } { ident "kit_engbase.state" param { name "state_world" obj_suppl "stdsuppl" obj_ident "state:" } } { ident "kit_engbase.state" param { name "state_sky" obj_suppl "stdsuppl" obj_ident "state:" } } { ident "kit_base.obj" param { name "sensorstate_world" obj_suppl "stdsuppl" obj_ident "stdsensorstate:" obj_param { env "env" insp_geo_ident "insp_sensor_geo" insp_bound_ident "insp_sensor_bound" insp_geo_color 0.0 0.0 1.0 insp_bound_color 0.0 0.0 1.0 } } } { ident "kit_engobj.sim" param { name "sim_world" sim_suppl "stdsuppl" sim_ident "sim:" sim_param { env "env" // When changing the step, you should change the erp // by the same factor: step 0.02 subiter 0 gravity 0.0 0.0 -10.0 erp 0.5 cfm 1e-4 max_correcting_vel 1000.0 overlap 0.001 damp 0.05 max_vel 10.0 max_spin 10.0 settled_pos_eps 0.01 settled_rot_eps 0.01 settled_period 1.0 settled_dist 1e3 insp_geo_ident "insp_sim_geo" insp_bound_ident "insp_sim_bound" insp_contact_ident "insp_sim_contact" insp_pas_geo_color 0.0 0.0 1.0 insp_pas_bound_color 0.0 0.0 1.0 insp_deact_geo_color 0.0 1.0 0.0 insp_deact_bound_color 0.0 1.0 0.0 insp_act_geo_color 1.0 0.0 0.0 insp_act_bound_color 1.0 0.0 0.0 insp_slave_geo_color 1.0 0.0 1.0 insp_slave_bound_color 1.0 0.0 1.0 insp_contact_extralen 0.2 insp_contact_pre_color 1.0 0.0 1.0 insp_contact_mid_color 0.0 0.0 1.0 insp_contact_post_color 0.0 1.0 1.0 } clock "clock" } } { // Event queue. // This actor manages delayed commands. // Define this actor after the 3d state // to avoid unnecessary delays. ident "kit_base.evtmgr" param { // Name of the event queue actor: name "evtmgr" active 1 extcfg_actor "^cfg" extcfg_entry_log "log.evtmgr" } } { ident "kit_base.extern" param { name "content_extern" res "level/actor/content.s3d_actor_run" watch_target "content_extern" watch_cmd "load_current" active 1 } } { // Actor containing all active players. ident "kit_base.producer" param { name "playerproducer" deleg_name "player_set" active 1 ident "kit_base.capsule" param { scope "levelplayer" local_name "capsule" local_deleg_name "capsule_deleg" deleg_target "dispatch_rawexport" active 1 child_ident "kit_base.group" child_param { active 1 child_array { ident "kit_base.dispatch" param { name "dispatch_rawexport" allow_other 1 other_target "dispatch_export" entry_array } } { // Include the character actors for this level. // It is defined after the character bag // since this dsc file refers the bag actor. ident "kit_base.extern" param { // Delegate action calls to the child: name "levelplayerbasis_extern" res "level/actor/" & "levelplayerbasis.s3d_actor_run" watch_target "levelplayerbasis_extern" watch_cmd "load_current" active 1 } } } } } } { ident "kit_engbase.netappear" param { name "player_appear" appear_target "player_set" appear_cmd "net_appear" } } { // Ignore level load time. ident "kit_base.oninit" param { target "^outside" cmd "ignore_frmtime" } } } }