/////////////////////////////////////////////////////////////////////////////// // // ## ###### // ###### ### // ## ############### Shark 3D Engine (www.shark3d.com) // ########## # # # // ######## Copyright (c) 1996-2006 Spinor GmbH. // ######### # # # All rights reserved. // ## ########## // ## // /////////////////////////////////////////////////////////////////////////////// // Definition of the player. // // In this case, the player is a player having a walk collision detection // and can be controlled by the human player. // // The player is not defined directly, but only a suppl for the player. // The reason for this is that not only one player must be created, // but a new player for every player which logs into the server. // As long as no client logs into a server, no player is created. // Each time a player logs into the server, the player suppl // is used to create a player. // Since each dsc-file formally can only contain a single 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 { // This dispatcher dispatches commands coming // from outside the capsule. ident "kit_base.dispatch" param { name "dispatch_export" entry_array // notice_destroy the player: { cmds "destroy" targets "capsule" } { cmds "created_local" targets } { cmds "created_net" targets "reproduce" newcmd "set_blocked" } { cmds "net_traverse" targets "group_player" newcmd "traverse" } { cmds "net_appear" targets "reproduce" newcmd "rework" } // Inform management: { // Store the inform-actor in "inform": cmds "assign_inform" "set_inform" targets "inform_deleg" newcmd "set_deleg_target" } { // Delegate the inform command: cmds "assign_inform" "set_inform" targets "informanswer" "oninform_gfxmgr" "oninform_sndmgr" "oninform_world" "oninform_sky" "oninform_sim" "oninform_noise" "oninform_sensorstate" "oninform_maincamera" "maininform_switch" "oninform_playerbody" } { cmds "search_inform" "search_noinform" targets "informanswer" } { // Set the position of the player. cmds "set_transf" targets "scene_root" } { cmds "add_motion" targets "player_deleg" "godplayer_deleg" } { cmds "add_motion_to_gear" targets "gear" newcmd "add_gear_motion" } { cmds "god" targets "god_switch" newcmd "toggle_switch" } } } { ident "kit_base.dispatch" param { name "dispatch" entry_array { // Disable god mode: cmds "disable_god" targets "maininform_switch" newcmd "select_normalmode" } { // Disable godmode. cmds "disable_god" targets "player_deleg_actor" newcmd "enable" } { // Disable godmode. cmds "disable_god" targets "godplayer_deleg_actor" newcmd "disable" } { // Disable godmode. cmds "disable_god" targets "godctrl" newcmd "god_to_player" } { // Disable godmode. cmds "disable_god" targets "scene_root" newcmd "activate_body" } { // Enable godmode. cmds "enable_god" targets "maininform_switch" newcmd "select_godmode" } { // Enable godmode. cmds "enable_god" targets "player_deleg_actor" newcmd "disable" } { // Enable godmode. cmds "enable_god" targets "godplayer_deleg_actor" newcmd "enable" } { // Enable godmode. cmds "enable_god" targets "godctrl" newcmd "player_to_god" } } } { 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_base.switch" param { name "god_switch" target "dispatch" disable_switch_cmd "disable_god" enable_switch_cmd "enable_god" } } { ident "kit_engobj.itemeye" param { name "scene_root" item_actor "group_player" item_name "body:scene_root" } } { ident "kit_engobj.itemeye" param { name "camera" item_actor "group_player" item_name "simplepos:camera" } } { ident "kit_engobj.itemeye" param { name "playerbody" item_actor "group_player" item_name "body:scene_root" } } { ident "kit_engobj.itemeye" param { name "gear" item_actor "group_player" item_name "gear:gear" } } { ident "kit_base.obj" param { // Create the position of the godplayer // (spawn at (0,0,0) for now). name "god_vehicleobj" obj_suppl "^stdsuppl" obj_ident "simplepos:" obj_param { env "^^env" } } } { // Select the position of the godmode-player // (we want the position, not the wrapping actor, // so "unwrap" it). ident "kit_engobj.itemeye" param { name "god_vehicle" item_actor "god_vehicleobj" item_name "" } } { // Create a camera-position for the godmode-player // mounted on the godmode-player's position // (i.e. camera moves relatively to player-position). ident "kit_base.obj" param { name "god_camobj" obj_suppl "^stdsuppl" obj_ident "simplepos:" obj_param { env "^^env" parent "god_vehicle" } } } { // Select the position of the godmode-camera // (we want the position, not the wrapping actor, // so "unwrap" it). ident "kit_engobj.itemeye" param { name "god_cam" //item_actor "^god_spawn" item_actor "god_camobj" item_name "" } } { // The godplayer moves different than the normal player // so pass the movement to this godmode-control actor. ident "kit_engobj.godctrl" param { active 1 name "godctrl" move_dir 0.0 1.0 0.0 move_also 1.0 0.0 0.0 cam_dir 0.0 0.0 1.0 cam_also 1.0 0.0 0.0 god_vehicle "god_vehicle" god_cam "god_cam" player_vehicle "playerbody" player_cam "camera" } } { ident "kit_engobj.motionlook" param { name "motionlook" look_actor "camera" look_target "camera" look_get_cmd "get_transf" look_set_cmd "set_transf" other_target "dispatch_export" other_cmd "add_motion_to_gear" axis 1.0 0.0 0.0 min_angle -170.0 max_angle -10.0 } } { ident "kit_engobj.motionlook" param { name "godmotionlook" look_actor "god_cam" look_target "god_cam" look_get_cmd "get_transf" look_set_cmd "set_transf" other_target "godctrl" other_cmd "add_motion" axis 1.0 0.0 0.0 min_angle -170.0 max_angle -10.0 } } { ident "kit_base.deleg" param { name "player_deleg_actor" deleg_name "player_deleg" deleg_target "motionlook" enabled 1 allow_no_target 1 } } { ident "kit_base.deleg" param { name "godplayer_deleg_actor" deleg_name "godplayer_deleg" deleg_target "godmotionlook" enabled 0 allow_no_target 1 } } { ident "kit_engobj.oninform" param { // Tell the client about performing // the level change. name "oninform_changelevel" cmd "changelevel_perform" } } { ident "kit_engobj.oninformobj" param { name "oninform_gfxmgr" cmd "set_gfxmgr_level" param "^gfxmgr" } } { ident "kit_engobj.oninformobj" param { name "oninform_sndmgr" cmd "set_sndmgr_level" param "^sndmgr" } } { ident "kit_engobj.oninformobj" param { name "oninform_world" cmd "set_state_world" param "^state_world" } } { ident "kit_engobj.oninformobj" param { name "oninform_sky" cmd "set_state_sky" param "^state_sky" } } { ident "kit_engobj.oninformobj" param { name "oninform_sim" cmd "set_sim_world" param "^sim_world" } } { ident "kit_engobj.oninformobj" param { name "oninform_noise" cmd "set_noise_world" param "^noise_world" } } { ident "kit_engobj.oninformobj" param { name "oninform_sensorstate" cmd "set_sensorstate_world" param "^sensorstate_world" } } { ident "kit_engobj.oninformobj" param { name "oninform_maincamera" cmd "set_camera" param "camera" } } { ident "kit_engobj.oninformobj" param { name "oninform_godcamera" cmd "set_camera" param "god_cam" } } { // This actor is used to switch between the main // camera and the test camera. // This actor switches between different actors // which get the "assign_inform" or "set_inform" // command with the current inform-actor, whereas // all other disabled actors get a "assign_inform" or // "set_inform" with 0 as argument. ident "kit_engobj.oninformswitch" param { name "maininform_switch" deleg_name "maininform" target "oninform_maincamera" entry_array { cmd "select_godmode" target "oninform_godcamera" } { cmd "select_normalmode" target "oninform_maincamera" } } } { ident "kit_engobj.oninformobj" param { name "oninform_playerbody" cmd "set_playerbody" param "playerbody" } } { ident "kit_engobj.itemeye" param { name "sensortrig_pos" item_actor "group_player" item_name "simplepos:sensortrig" } } { ident "kit_base.obj" param { name "sensortrig_elem" obj_suppl "^^envcompsuppl" obj_ident "eng_sensor_std.sensortrig" obj_param { env "^^env" sensorstate "^sensorstate_world" pos "sensortrig_pos" } } } { ident "kit_engobj.sensortrig" param { name "sensortrig_world" sensorelem_actor "sensortrig_elem" sensorelem_name "" enter_cmd "player_enter" leave_cmd "player_leave" sender "capsule_deleg" } } { ident "kit_base.onaction" param { active 1 name "update_sensortrig_world_onaction" target "sensortrig_world" cmd "update" } } { ident "kit_engbase.netreproduce" param { name "reproduce" producer "inform" charge "capsule_deleg" reproduce_cmd "reproduce" } } }